@@ -8,10 +8,10 @@ declare void @use(float)
8
8
define float @test_select_frexp_basic(float %x, i1 %cond) {
9
9
; CHECK-LABEL: define float @test_select_frexp_basic(
10
10
; 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]])
13
12
; 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]]
15
15
;
16
16
%sel = select i1 %cond, float 1.000000e+00, float %x
17
17
%frexp = call { float, i32 } @llvm.frexp.f32.i32(float %sel)
@@ -23,10 +23,10 @@ define float @test_select_frexp_basic(float %x, i1 %cond) {
23
23
define float @test_select_frexp_const_false(float %x, i1 %cond) {
24
24
; CHECK-LABEL: define float @test_select_frexp_const_false(
25
25
; 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]])
28
27
; 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]]
30
30
;
31
31
%sel = select i1 %cond, float %x, float 1.000000e+00
32
32
%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) {
40
40
; CHECK-SAME: float [[X:%.*]], i1 [[COND:%.*]]) {
41
41
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[COND]], float 1.000000e+00, float [[X]]
42
42
; 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 ]])
44
44
; 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]]
46
47
;
47
48
%sel = select i1 %cond, float 1.000000e+00, float %x
48
49
call void @use(float %sel)
0 commit comments