[llvm] [GlobalIsel] Combine G_SELECT (PR #74116)

Thorsten Schütt via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 1 11:50:21 PST 2023


================
@@ -752,13 +770,25 @@ define i32 @select_noccmp3(i32 %v0, i32 %v1, i32 %v2) {
 ; Test the IR CCs that expand to two cond codes.
 
 define i32 @select_and_olt_one(double %v0, double %v1, double %v2, double %v3, i32 %a, i32 %b) #0 {
-; CHECK-LABEL: select_and_olt_one:
-; CHECK:       ; %bb.0:
-; CHECK-NEXT:    fcmp d0, d1
-; CHECK-NEXT:    fccmp d2, d3, #4, mi
-; CHECK-NEXT:    fccmp d2, d3, #1, ne
-; CHECK-NEXT:    csel w0, w0, w1, vc
-; CHECK-NEXT:    ret
+; SDISEL-LABEL: select_and_olt_one:
+; SDISEL:       ; %bb.0:
+; SDISEL-NEXT:    fcmp d0, d1
+; SDISEL-NEXT:    fccmp d2, d3, #4, mi
+; SDISEL-NEXT:    fccmp d2, d3, #1, ne
+; SDISEL-NEXT:    csel w0, w0, w1, vc
+; SDISEL-NEXT:    ret
+;
+; GISEL-LABEL: select_and_olt_one:
+; GISEL:       ; %bb.0:
+; GISEL-NEXT:    fcmp d2, d3
+; GISEL-NEXT:    cset w8, mi
+; GISEL-NEXT:    cset w9, gt
+; GISEL-NEXT:    orr w8, w8, w9
+; GISEL-NEXT:    fcmp d0, d1
+; GISEL-NEXT:    csel w9, w0, w1, mi
+; GISEL-NEXT:    tst w8, #0x1
+; GISEL-NEXT:    csel w0, w9, w1, ne
+; GISEL-NEXT:    ret
----------------
tschuett wrote:

loss with fcmp

https://github.com/llvm/llvm-project/pull/74116


More information about the llvm-commits mailing list