Skip to content

Commit a3de21c

Browse files
authored
[WebAssembly] Ofast pmin/pmax pattern matchers (llvm#100107)
With fast-math, the ordered setcc nodes are converted to setcc nodes which do not care about NaNs, so add patterns that use setlt, setle, setgt and setge.
1 parent ddf5725 commit a3de21c

File tree

3 files changed

+432
-28
lines changed

3 files changed

+432
-28
lines changed

llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1270,7 +1270,11 @@ def pmin : PatFrags<(ops node:$lhs, node:$rhs), [
12701270
(vselect (setolt $rhs, $lhs), $rhs, $lhs),
12711271
(vselect (setole $rhs, $lhs), $rhs, $lhs),
12721272
(vselect (setogt $lhs, $rhs), $rhs, $lhs),
1273-
(vselect (setoge $lhs, $rhs), $rhs, $lhs)
1273+
(vselect (setoge $lhs, $rhs), $rhs, $lhs),
1274+
(vselect (setlt $lhs, $rhs), $lhs, $rhs),
1275+
(vselect (setle $lhs, $rhs), $lhs, $rhs),
1276+
(vselect (setgt $lhs, $rhs), $rhs, $lhs),
1277+
(vselect (setge $lhs, $rhs), $rhs, $lhs)
12741278
]>;
12751279
defm PMIN : SIMDBinaryFP<pmin, "pmin", 234>;
12761280

@@ -1279,7 +1283,11 @@ def pmax : PatFrags<(ops node:$lhs, node:$rhs), [
12791283
(vselect (setogt $rhs, $lhs), $rhs, $lhs),
12801284
(vselect (setoge $rhs, $lhs), $rhs, $lhs),
12811285
(vselect (setolt $lhs, $rhs), $rhs, $lhs),
1282-
(vselect (setole $lhs, $rhs), $rhs, $lhs)
1286+
(vselect (setole $lhs, $rhs), $rhs, $lhs),
1287+
(vselect (setgt $lhs, $rhs), $lhs, $rhs),
1288+
(vselect (setge $lhs, $rhs), $lhs, $rhs),
1289+
(vselect (setlt $lhs, $rhs), $rhs, $lhs),
1290+
(vselect (setle $lhs, $rhs), $rhs, $lhs)
12831291
]>;
12841292
defm PMAX : SIMDBinaryFP<pmax, "pmax", 235>;
12851293

0 commit comments

Comments
 (0)