summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/PowerPC')
-rw-r--r--llvm/test/CodeGen/PowerPC/fast-isel-fcmp-nan.ll187
1 files changed, 187 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/PowerPC/fast-isel-fcmp-nan.ll b/llvm/test/CodeGen/PowerPC/fast-isel-fcmp-nan.ll
new file mode 100644
index 00000000000..4390b938aea
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/fast-isel-fcmp-nan.ll
@@ -0,0 +1,187 @@
+; RUN: llc -mtriple powerpc64le-unknown-linux-gnu -fast-isel -O0 < %s | FileCheck %s
+
+define i1 @TestULT(double %t0) {
+; CHECK-LABEL: TestULT:
+; CHECK: mcrf
+; CHECK: blr
+entry:
+ %t1 = fcmp ult double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestULE(double %t0) {
+; CHECK-LABEL: TestULE:
+; CHECK: fcmpu
+; CHECK-NEXT: ble
+; CHECK: blr
+entry:
+ %t1 = fcmp ule double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestUNE(double %t0) {
+; CHECK-LABEL: TestUNE:
+; CHECK: fcmpu
+; CHECK-NEXT: bne
+; CHECK: blr
+entry:
+ %t1 = fcmp une double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestUEQ(double %t0) {
+; CHECK-LABEL: TestUEQ:
+; CHECK: mcrf
+; CHECK: blr
+entry:
+ %t1 = fcmp ueq double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestUGT(double %t0) {
+; CHECK-LABEL: TestUGT:
+; CHECK: mcrf
+; CHECK: blr
+entry:
+ %t1 = fcmp ugt double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestUGE(double %t0) {
+; CHECK-LABEL: TestUGE:
+; CHECK: fcmpu
+; CHECK-NEXT: bge
+; CHECK: blr
+entry:
+ %t1 = fcmp uge double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestOLT(double %t0) {
+; CHECK-LABEL: TestOLT:
+; CHECK: fcmpu
+; CHECK-NEXT: blt
+; CHECK: blr
+entry:
+ %t1 = fcmp olt double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestOLE(double %t0) {
+; CHECK-LABEL: TestOLE:
+; CHECK: mcrf
+; CHECK: blr
+entry:
+ %t1 = fcmp ole double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestONE(double %t0) {
+; CHECK-LABEL: TestONE:
+; CHECK: mcrf
+; CHECK: blr
+entry:
+ %t1 = fcmp one double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestOEQ(double %t0) {
+; CHECK-LABEL: TestOEQ:
+; CHECK: fcmpu
+; CHECK-NEXT: beq
+; CHECK: blr
+entry:
+ %t1 = fcmp oeq double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestOGT(double %t0) {
+; CHECK-LABEL: TestOGT:
+; CHECK: fcmpu
+; CHECK-NEXT: bgt
+; CHECK: blr
+entry:
+ %t1 = fcmp ogt double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
+
+define i1 @TestOGE(double %t0) {
+; CHECK-LABEL: TestOGE:
+; CHECK: mcrf
+; CHECK: blr
+entry:
+ %t1 = fcmp oge double %t0, 0.000000e+00
+ br i1 %t1, label %good, label %bad
+
+bad:
+ ret i1 false
+
+good:
+ ret i1 true
+}
OpenPOWER on IntegriCloud