@@ -41,6 +41,7 @@ define i32 @test_frexp_f16_i32_only_use_exp(half %a) {
4141; CHECK-NEXT: bl __gnu_h2f_ieee
4242; CHECK-NEXT: add r1, sp, #4
4343; CHECK-NEXT: bl frexpf
44+ ; CHECK-NEXT: @ fake_use: $r0
4445; CHECK-NEXT: ldr r0, [sp, #4]
4546; CHECK-NEXT: add sp, #8
4647; CHECK-NEXT: pop {r7, pc}
@@ -132,6 +133,8 @@ define <2 x i32> @test_frexp_v2f16_v2i32_only_use_exp(<2 x half> %a) {
132133; CHECK-NEXT: mov r1, r4
133134; CHECK-NEXT: bl frexpf
134135; CHECK-NEXT: vld1.32 {d16[0]}, [r5:32]
136+ ; CHECK-NEXT: @ fake_use: $r0
137+ ; CHECK-NEXT: @ fake_use: $r0
135138; CHECK-NEXT: vld1.32 {d16[1]}, [r4:32]
136139; CHECK-NEXT: vmov r0, r1, d16
137140; CHECK-NEXT: add sp, #8
@@ -190,6 +193,7 @@ define i32 @test_frexp_f32_i32_only_use_exp(float %a) {
190193; CHECK-NEXT: sub sp, #8
191194; CHECK-NEXT: add r1, sp, #4
192195; CHECK-NEXT: bl frexpf
196+ ; CHECK-NEXT: @ fake_use: $r0
193197; CHECK-NEXT: ldr r0, [sp, #4]
194198; CHECK-NEXT: add sp, #8
195199; CHECK-NEXT: pop {r7, pc}
@@ -265,6 +269,8 @@ define <2 x i32> @test_frexp_v2f32_v2i32_only_use_exp(<2 x float> %a) {
265269; CHECK-NEXT: mov r1, r5
266270; CHECK-NEXT: bl frexpf
267271; CHECK-NEXT: vld1.32 {d16[0]}, [r4:32]
272+ ; CHECK-NEXT: @ fake_use: $r0
273+ ; CHECK-NEXT: @ fake_use: $r0
268274; CHECK-NEXT: vld1.32 {d16[1]}, [r5:32]
269275; CHECK-NEXT: vmov r0, r1, d16
270276; CHECK-NEXT: add sp, #8
@@ -376,8 +382,13 @@ define <4 x i32> @test_frexp_v4f32_v4i32_only_use_exp(<4 x float> %a) {
376382; CHECK-NEXT: mov r1, sp
377383; CHECK-NEXT: mov r0, r4
378384; CHECK-NEXT: bl frexpf
379- ; CHECK-NEXT: ldrd r1, r0, [sp, #8]
380- ; CHECK-NEXT: ldrd r3, r2, [sp], #16
385+ ; CHECK-NEXT: @ fake_use: $r0
386+ ; CHECK-NEXT: @ fake_use: $r0
387+ ; CHECK-NEXT: ldr r0, [sp, #12]
388+ ; CHECK-NEXT: @ fake_use: $r0
389+ ; CHECK-NEXT: ldrd r2, r1, [sp, #4]
390+ ; CHECK-NEXT: @ fake_use: $r0
391+ ; CHECK-NEXT: ldr r3, [sp], #16
381392; CHECK-NEXT: pop {r4, r5, r6, pc}
382393 %result = call { <4 x float >, <4 x i32 > } @llvm.frexp.v4f32.v4i32 (<4 x float > %a )
383394 %result.1 = extractvalue { <4 x float >, <4 x i32 > } %result , 1
@@ -419,6 +430,7 @@ define i32 @test_frexp_f64_i32_only_use_exp(double %a) {
419430; CHECK-NEXT: sub sp, #8
420431; CHECK-NEXT: add r2, sp, #4
421432; CHECK-NEXT: bl frexp
433+ ; CHECK-NEXT: @ fake_use: $r0
422434; CHECK-NEXT: ldr r0, [sp, #4]
423435; CHECK-NEXT: add sp, #8
424436; CHECK-NEXT: pop {r7, pc}
@@ -498,6 +510,8 @@ define <2 x i32> @test_frexp_v2f64_v2i32_only_use_exp(<2 x double> %a) {
498510; CHECK-NEXT: mov r2, r7
499511; CHECK-NEXT: bl frexp
500512; CHECK-NEXT: vld1.32 {d16[0]}, [r6:32]
513+ ; CHECK-NEXT: @ fake_use: $r0
514+ ; CHECK-NEXT: @ fake_use: $r0
501515; CHECK-NEXT: vld1.32 {d16[1]}, [r7:32]
502516; CHECK-NEXT: vmov r0, r1, d16
503517; CHECK-NEXT: add sp, #12
0 commit comments