@@ -8,10 +8,10 @@ declare void @use(float)
88define float @test_select_frexp_basic (float %x , i1 %cond ) {
99; CHECK-LABEL: define float @test_select_frexp_basic(
1010; CHECK-SAME: float [[X:%.*]], i1 [[COND:%.*]]) {
11- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND]], float 1.000000e+00, float [[X]]
12- ; CHECK-NEXT: [[FREXP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[SEL]])
11+ ; CHECK-NEXT: [[FREXP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[X]])
1312; CHECK-NEXT: [[FREXP_0:%.*]] = extractvalue { float, i32 } [[FREXP]], 0
14- ; CHECK-NEXT: ret float [[FREXP_0]]
13+ ; CHECK-NEXT: [[SELECT_FREXP:%.*]] = select i1 [[COND]], float 5.000000e-01, float [[FREXP_0]]
14+ ; CHECK-NEXT: ret float [[SELECT_FREXP]]
1515;
1616 %sel = select i1 %cond , float 1 .000000e+00 , float %x
1717 %frexp = call { float , i32 } @llvm.frexp.f32.i32 (float %sel )
@@ -23,10 +23,10 @@ define float @test_select_frexp_basic(float %x, i1 %cond) {
2323define float @test_select_frexp_const_false (float %x , i1 %cond ) {
2424; CHECK-LABEL: define float @test_select_frexp_const_false(
2525; CHECK-SAME: float [[X:%.*]], i1 [[COND:%.*]]) {
26- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND]], float [[X]], float 1.000000e+00
27- ; CHECK-NEXT: [[FREXP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[SEL]])
26+ ; CHECK-NEXT: [[FREXP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[X]])
2827; CHECK-NEXT: [[FREXP_0:%.*]] = extractvalue { float, i32 } [[FREXP]], 0
29- ; CHECK-NEXT: ret float [[FREXP_0]]
28+ ; CHECK-NEXT: [[SELECT_FREXP:%.*]] = select i1 [[COND]], float [[FREXP_0]], float 5.000000e-01
29+ ; CHECK-NEXT: ret float [[SELECT_FREXP]]
3030;
3131 %sel = select i1 %cond , float %x , float 1 .000000e+00
3232 %frexp = call { float , i32 } @llvm.frexp.f32.i32 (float %sel )
@@ -40,9 +40,10 @@ define float @test_select_frexp_multi_use(float %x, i1 %cond) {
4040; CHECK-SAME: float [[X:%.*]], i1 [[COND:%.*]]) {
4141; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND]], float 1.000000e+00, float [[X]]
4242; CHECK-NEXT: call void @use(float [[SEL]])
43- ; CHECK-NEXT: [[FREXP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[SEL ]])
43+ ; CHECK-NEXT: [[FREXP:%.*]] = call { float, i32 } @llvm.frexp.f32.i32(float [[X ]])
4444; CHECK-NEXT: [[FREXP_0:%.*]] = extractvalue { float, i32 } [[FREXP]], 0
45- ; CHECK-NEXT: ret float [[FREXP_0]]
45+ ; CHECK-NEXT: [[SELECT_FREXP:%.*]] = select i1 [[COND]], float 5.000000e-01, float [[FREXP_0]]
46+ ; CHECK-NEXT: ret float [[SELECT_FREXP]]
4647;
4748 %sel = select i1 %cond , float 1 .000000e+00 , float %x
4849 call void @use (float %sel )
0 commit comments