Home | History | Annotate | Download | only in InstCombine
      1 ; RUN: opt < %s -instcombine -S | FileCheck %s
      2 
      3 define float @test1(i1 %A) {
      4 EntryBlock:
      5   %cf = select i1 %A, float 1.000000e+00, float 0.000000e+00
      6   %op = fsub float 1.000000e+00, %cf
      7   ret float %op
      8 ; CHECK-LABEL: @test1(
      9 ; CHECK: select i1 %A, float 0.000000e+00, float 1.000000e+00
     10 }
     11 
     12 define float @test2(i1 %A, float %B) {
     13 EntryBlock:
     14   %cf = select i1 %A, float 1.000000e+00, float %B
     15   %op = fadd float 2.000000e+00, %cf
     16   ret float %op
     17 ; CHECK-LABEL: @test2(
     18 ; CHECK: [[OP:%.*]] = fadd float %B, 2.000000e+00
     19 ; CHECK: select i1 %A, float 3.000000e+00, float [[OP]]
     20 }
     21 
     22 define float @test3(i1 %A, float %B) {
     23 EntryBlock:
     24   %cf = select i1 %A, float 1.000000e+00, float %B
     25   %op = fsub float 2.000000e+00, %cf
     26   ret float %op
     27 ; CHECK-LABEL: @test3(
     28 ; CHECK: [[OP:%.*]] = fsub float 2.000000e+00, %B
     29 ; CHECK: select i1 %A, float 1.000000e+00, float [[OP]]
     30 }
     31 
     32 define float @test4(i1 %A, float %B) {
     33 EntryBlock:
     34   %cf = select i1 %A, float 1.000000e+00, float %B
     35   %op = fmul float 2.000000e+00, %cf
     36   ret float %op
     37 ; CHECK-LABEL: @test4(
     38 ; CHECK: [[OP:%.*]] = fmul float %B, 2.000000e+00
     39 ; CHECK: select i1 %A, float 2.000000e+00, float [[OP]]
     40 }
     41 
     42 define float @test5(i1 %A, float %B) {
     43 EntryBlock:
     44   %cf = select i1 %A, float 1.000000e+00, float %B
     45   %op = fdiv float 2.000000e+00, %cf
     46   ret float %op
     47 ; CHECK-LABEL: @test5(
     48 ; CHECK: [[OP:%.*]] = fdiv float 2.000000e+00, %B
     49 ; CHECK: select i1 %A, float 2.000000e+00, float [[OP]]
     50 }
     51 
     52 define float @test6(i1 %A, float %B) {
     53 EntryBlock:
     54   %cf = select i1 %A, float 1.000000e+00, float %B
     55   %op = fdiv float %cf, 2.000000e+00
     56   ret float %op
     57 ; CHECK-LABEL: @test6(
     58 ; CHECK: [[OP:%.*]] = fmul float %B, 5.000000e-01
     59 ; CHECK: select i1 %A, float 5.000000e-01, float [[OP]]
     60 }
     61 
     62 define float @test7(i1 %A, float %B) {
     63 EntryBlock:
     64   %cf = select i1 %A, float 1.000000e+00, float %B
     65   %op = fdiv float %cf, 3.000000e+00
     66   ret float %op
     67 ; CHECK-LABEL: @test7(
     68 ; CHECK: [[OP:%.*]] = fdiv float %B, 3.000000e+00
     69 ; CHECK: select i1 %A, float 0x3FD5555560000000, float [[OP]]
     70 }
     71 
     72