diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td @@ -1173,19 +1173,19 @@ // Pseudo-minimum: pmin def pmin : PatFrags<(ops node:$lhs, node:$rhs), [ - (vselect (setolt $lhs, $rhs), $lhs, $rhs), - (vselect (setole $lhs, $rhs), $lhs, $rhs), - (vselect (setogt $rhs, $lhs), $lhs, $rhs), - (vselect (setoge $rhs, $lhs), $lhs, $rhs) + (vselect (setolt $rhs, $lhs), $rhs, $lhs), + (vselect (setole $rhs, $lhs), $rhs, $lhs), + (vselect (setogt $lhs, $rhs), $rhs, $lhs), + (vselect (setoge $lhs, $rhs), $rhs, $lhs) ]>; defm PMIN : SIMDBinaryFP; // Pseudo-maximum: pmax def pmax : PatFrags<(ops node:$lhs, node:$rhs), [ - (vselect (setogt $lhs, $rhs), $lhs, $rhs), - (vselect (setoge $lhs, $rhs), $lhs, $rhs), - (vselect (setolt $rhs, $lhs), $lhs, $rhs), - (vselect (setole $rhs, $lhs), $lhs, $rhs) + (vselect (setogt $rhs, $lhs), $rhs, $lhs), + (vselect (setoge $rhs, $lhs), $rhs, $lhs), + (vselect (setolt $lhs, $rhs), $rhs, $lhs), + (vselect (setole $lhs, $rhs), $rhs, $lhs) ]>; defm PMAX : SIMDBinaryFP; diff --git a/llvm/test/CodeGen/WebAssembly/simd-arith.ll b/llvm/test/CodeGen/WebAssembly/simd-arith.ll --- a/llvm/test/CodeGen/WebAssembly/simd-arith.ll +++ b/llvm/test/CodeGen/WebAssembly/simd-arith.ll @@ -13143,14 +13143,14 @@ ; SIMD128: .functype min_unordered_v4f32 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f32x4.pmin $push1=, $pop0, $0 +; SIMD128-NEXT: f32x4.pmin $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: min_unordered_v4f32: ; SIMD128-FAST: .functype min_unordered_v4f32 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: min_unordered_v4f32: @@ -13217,14 +13217,14 @@ ; SIMD128: .functype max_unordered_v4f32 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f32x4.pmax $push1=, $pop0, $0 +; SIMD128-NEXT: f32x4.pmax $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: max_unordered_v4f32: ; SIMD128-FAST: .functype max_unordered_v4f32 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: max_unordered_v4f32: @@ -13291,14 +13291,14 @@ ; SIMD128: .functype min_ordered_v4f32 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f32x4.pmin $push1=, $pop0, $0 +; SIMD128-NEXT: f32x4.pmin $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: min_ordered_v4f32: ; SIMD128-FAST: .functype min_ordered_v4f32 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: min_ordered_v4f32: @@ -13365,14 +13365,14 @@ ; SIMD128: .functype max_ordered_v4f32 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f32x4.pmax $push1=, $pop0, $0 +; SIMD128-NEXT: f32x4.pmax $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: max_ordered_v4f32: ; SIMD128-FAST: .functype max_ordered_v4f32 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: max_ordered_v4f32: @@ -14228,13 +14228,13 @@ ; SIMD128-LABEL: pmin_v4f32: ; SIMD128: .functype pmin_v4f32 (v128, v128) -> (v128) ; SIMD128-NEXT: # %bb.0: -; SIMD128-NEXT: f32x4.pmin $push0=, $1, $0 +; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1 ; SIMD128-NEXT: return $pop0 ; ; SIMD128-FAST-LABEL: pmin_v4f32: ; SIMD128-FAST: .functype pmin_v4f32 (v128, v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: -; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $1, $0 +; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: pmin_v4f32: @@ -14356,13 +14356,13 @@ ; SIMD128-LABEL: pmax_v4f32: ; SIMD128: .functype pmax_v4f32 (v128, v128) -> (v128) ; SIMD128-NEXT: # %bb.0: -; SIMD128-NEXT: f32x4.pmax $push0=, $1, $0 +; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1 ; SIMD128-NEXT: return $pop0 ; ; SIMD128-FAST-LABEL: pmax_v4f32: ; SIMD128-FAST: .functype pmax_v4f32 (v128, v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: -; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $1, $0 +; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: pmax_v4f32: @@ -14789,14 +14789,14 @@ ; SIMD128: .functype min_unordered_v2f64 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f64x2.pmin $push1=, $pop0, $0 +; SIMD128-NEXT: f64x2.pmin $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: min_unordered_v2f64: ; SIMD128-FAST: .functype min_unordered_v2f64 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: min_unordered_v2f64: @@ -14839,14 +14839,14 @@ ; SIMD128: .functype max_unordered_v2f64 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f64x2.pmax $push1=, $pop0, $0 +; SIMD128-NEXT: f64x2.pmax $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: max_unordered_v2f64: ; SIMD128-FAST: .functype max_unordered_v2f64 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: max_unordered_v2f64: @@ -14889,14 +14889,14 @@ ; SIMD128: .functype min_ordered_v2f64 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f64x2.pmin $push1=, $pop0, $0 +; SIMD128-NEXT: f64x2.pmin $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: min_ordered_v2f64: ; SIMD128-FAST: .functype min_ordered_v2f64 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: min_ordered_v2f64: @@ -14939,14 +14939,14 @@ ; SIMD128: .functype max_ordered_v2f64 (v128) -> (v128) ; SIMD128-NEXT: # %bb.0: ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2 -; SIMD128-NEXT: f64x2.pmax $push1=, $pop0, $0 +; SIMD128-NEXT: f64x2.pmax $push1=, $0, $pop0 ; SIMD128-NEXT: return $pop1 ; ; SIMD128-FAST-LABEL: max_ordered_v2f64: ; SIMD128-FAST: .functype max_ordered_v2f64 (v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2 -; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $pop1, $0 +; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $pop1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: max_ordered_v2f64: @@ -15132,13 +15132,13 @@ ; SIMD128-LABEL: pmin_v2f64: ; SIMD128: .functype pmin_v2f64 (v128, v128) -> (v128) ; SIMD128-NEXT: # %bb.0: -; SIMD128-NEXT: f64x2.pmin $push0=, $1, $0 +; SIMD128-NEXT: f64x2.pmin $push0=, $0, $1 ; SIMD128-NEXT: return $pop0 ; ; SIMD128-FAST-LABEL: pmin_v2f64: ; SIMD128-FAST: .functype pmin_v2f64 (v128, v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: -; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $1, $0 +; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: pmin_v2f64: @@ -15220,13 +15220,13 @@ ; SIMD128-LABEL: pmax_v2f64: ; SIMD128: .functype pmax_v2f64 (v128, v128) -> (v128) ; SIMD128-NEXT: # %bb.0: -; SIMD128-NEXT: f64x2.pmax $push0=, $1, $0 +; SIMD128-NEXT: f64x2.pmax $push0=, $0, $1 ; SIMD128-NEXT: return $pop0 ; ; SIMD128-FAST-LABEL: pmax_v2f64: ; SIMD128-FAST: .functype pmax_v2f64 (v128, v128) -> (v128) ; SIMD128-FAST-NEXT: # %bb.0: -; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $1, $0 +; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $1 ; SIMD128-FAST-NEXT: return $pop0 ; ; NO-SIMD128-LABEL: pmax_v2f64: