diff options
author | Stephen Hines <srhines@google.com> | 2015-04-01 18:49:24 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-01 18:49:26 +0000 |
commit | 3fa16bd6062e23bcdb82ed4dd965674792e6b761 (patch) | |
tree | 9348fc507292f7e8715d22d64ce5a32131b4f875 /test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll | |
parent | beed47390a60f6f0c77532b3d3f76bb47ef49423 (diff) | |
parent | ebe69fe11e48d322045d5949c83283927a0d790b (diff) | |
download | external_llvm-3fa16bd6062e23bcdb82ed4dd965674792e6b761.zip external_llvm-3fa16bd6062e23bcdb82ed4dd965674792e6b761.tar.gz external_llvm-3fa16bd6062e23bcdb82ed4dd965674792e6b761.tar.bz2 |
Merge "Update aosp/master LLVM for rebase to r230699."
Diffstat (limited to 'test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll')
-rw-r--r-- | test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll | 454 |
1 files changed, 454 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll b/test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll new file mode 100644 index 0000000..551d0ef --- /dev/null +++ b/test/Transforms/InstCombine/cast-int-fcmp-eq-0.ll @@ -0,0 +1,454 @@ +; RUN: opt -S -instcombine < %s | FileCheck %s + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_0_uitofp( +; CHECK-NEXT: icmp eq i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_n0_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq +define i1 @i32_cast_cmp_oeq_int_n0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_0_sitofp( +; CHECK-NEXT: icmp eq i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_n0_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq +define i1 @i32_cast_cmp_oeq_int_n0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_one_int_0_uitofp( +; CHECK-NEXT: icmp ne i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_one_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp one float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_one_int_n0_uitofp( +; CHECK: uitofp +; CHECK: fcmp one +define i1 @i32_cast_cmp_one_int_n0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp one float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_one_int_0_sitofp( +; CHECK-NEXT: icmp ne i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_one_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp one float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_one_int_n0_sitofp( +; CHECK: sitofp +; CHECK: fcmp one +define i1 @i32_cast_cmp_one_int_n0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp one float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ueq_int_0_uitofp( +; CHECK-NEXT: icmp eq i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_ueq_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp ueq float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ueq_int_n0_uitofp( +; CHECK: uitofp +; CHECK: fcmp ueq +define i1 @i32_cast_cmp_ueq_int_n0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp ueq float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ueq_int_0_sitofp( +; CHECK-NEXT: icmp eq i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_ueq_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp ueq float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ueq_int_n0_sitofp( +; CHECK: sitofp +; CHECK: fcmp ueq +define i1 @i32_cast_cmp_ueq_int_n0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp ueq float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_une_int_0_uitofp( +; CHECK-NEXT: icmp ne i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_une_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp une float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_une_int_n0_uitofp( +; CHECK: uitofp +; CHECK: fcmp une +define i1 @i32_cast_cmp_une_int_n0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp une float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_une_int_0_sitofp( +; CHECK-NEXT: icmp ne i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_une_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp une float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_une_int_n0_sitofp( +; CHECK: sitofp +; CHECK: fcmp une +define i1 @i32_cast_cmp_une_int_n0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp une float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ogt_int_0_uitofp( +; CHECK: icmp ne i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_ogt_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp ogt float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ogt_int_n0_uitofp( +; CHECK: uitofp +; CHECK: fcmp ogt +define i1 @i32_cast_cmp_ogt_int_n0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp ogt float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ogt_int_0_sitofp( +; CHECK: icmp sgt i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_ogt_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp ogt float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ogt_int_n0_sitofp( +; CHECK: sitofp +; CHECK: fcmp ogt +define i1 @i32_cast_cmp_ogt_int_n0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp ogt float %f, -0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ole_int_0_uitofp( +; CHECK: icmp eq i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_ole_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp ole float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ole_int_0_sitofp( +; CHECK: icmp slt i32 %i, 1 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_ole_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp ole float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_olt_int_0_uitofp( +; CHECK: ret i1 false +define i1 @i32_cast_cmp_olt_int_0_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp olt float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_olt_int_0_sitofp( +; CHECK: icmp slt i32 %i, 0 +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_olt_int_0_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp olt float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i64_cast_cmp_oeq_int_0_uitofp( +; CHECK-NEXT: icmp eq i64 %i, 0 +; CHECK-NEXT: ret +define i1 @i64_cast_cmp_oeq_int_0_uitofp(i64 %i) { + %f = uitofp i64 %i to float + %cmp = fcmp oeq float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i64_cast_cmp_oeq_int_0_sitofp( +; CHECK-NEXT: icmp eq i64 %i, 0 +; CHECK-NEXT: ret +define i1 @i64_cast_cmp_oeq_int_0_sitofp(i64 %i) { + %f = sitofp i64 %i to float + %cmp = fcmp oeq float %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i64_cast_cmp_oeq_int_0_uitofp_half( +; CHECK-NEXT: icmp eq i64 %i, 0 +; CHECK-NEXT: ret +define i1 @i64_cast_cmp_oeq_int_0_uitofp_half(i64 %i) { + %f = uitofp i64 %i to half + %cmp = fcmp oeq half %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i64_cast_cmp_oeq_int_0_sitofp_half( +; CHECK-NEXT: icmp eq i64 %i, 0 +; CHECK-NEXT: ret +define i1 @i64_cast_cmp_oeq_int_0_sitofp_half(i64 %i) { + %f = sitofp i64 %i to half + %cmp = fcmp oeq half %f, 0.0 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_0_uitofp_ppcf128( +; CHECK: uitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_0_uitofp_ppcf128(i32 %i) { + %f = uitofp i32 %i to ppc_fp128 + %cmp = fcmp oeq ppc_fp128 %f, 0xM00000000000000000000000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i24max_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq + +; XCHECK: icmp eq i32 %i, 16777215 +; XCHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i24max_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x416FFFFFE0000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i24max_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq + +; XCHECK: icmp eq i32 %i, 16777215 +; XCHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i24max_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x416FFFFFE0000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i24maxp1_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq + +; XCHECK: icmp eq i32 %i, 16777216 +; XCHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i24maxp1_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x4170000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i24maxp1_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq + +; XCHECK: icmp eq i32 %i, 16777216 +; XCHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i24maxp1_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x4170000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i32umax_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i32umax_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x41F0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i32umax_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i32umax_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x41F0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i32imin_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i32imin_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0xC1E0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i32imin_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i32imin_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0xC1E0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i32imax_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i32imax_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x41E0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_i32imax_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_i32imax_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0x41E0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_negi32umax_uitofp( +; CHECK: uitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_negi32umax_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0xC1F0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_int_negi32umax_sitofp( +; CHECK: sitofp +; CHECK: fcmp oeq +; CHECK-NEXT: ret +define i1 @i32_cast_cmp_oeq_int_negi32umax_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0xC1F0000000000000 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_half_uitofp( +; CHECK: ret i1 false +define i1 @i32_cast_cmp_oeq_half_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp oeq float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_oeq_half_sitofp( +; CHECK: ret i1 false +define i1 @i32_cast_cmp_oeq_half_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp oeq float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_one_half_uitofp( +; CHECK: ret i1 true +define i1 @i32_cast_cmp_one_half_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp one float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_one_half_sitofp( +; CHECK: ret i1 true +define i1 @i32_cast_cmp_one_half_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp one float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ueq_half_uitofp( +; CHECK: ret i1 false +define i1 @i32_cast_cmp_ueq_half_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp ueq float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_ueq_half_sitofp( +; CHECK: ret i1 false +define i1 @i32_cast_cmp_ueq_half_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp ueq float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_une_half_uitofp( +; CHECK: ret i1 true +define i1 @i32_cast_cmp_une_half_uitofp(i32 %i) { + %f = uitofp i32 %i to float + %cmp = fcmp une float %f, 0.5 + ret i1 %cmp +} + +; CHECK-LABEL: @i32_cast_cmp_une_half_sitofp( +; CHECK: ret i1 true +define i1 @i32_cast_cmp_une_half_sitofp(i32 %i) { + %f = sitofp i32 %i to float + %cmp = fcmp une float %f, 0.5 + ret i1 %cmp +} |