@@ -6,12 +6,9 @@ define float @select_fneg_a_or_8_cmp_olt_a_neg8_f32(float %a, float %b) #0 {
6
6
; CHECK: @ %bb.0:
7
7
; CHECK-NEXT: vmov.f32 s0, #-8.000000e+00
8
8
; CHECK-NEXT: vmov s2, r0
9
- ; CHECK-NEXT: vmov.f32 s4, #8.000000e+00
10
- ; CHECK-NEXT: vneg.f32 s6, s2
11
- ; CHECK-NEXT: vcmp.f32 s0, s2
12
- ; CHECK-NEXT: vmrs APSR_nzcv, fpscr
13
- ; CHECK-NEXT: vselgt.f32 s0, s6, s4
9
+ ; CHECK-NEXT: vminnm.f32 s0, s2, s0
14
10
; CHECK-NEXT: vmov r0, s0
11
+ ; CHECK-NEXT: eor r0, r0, #-2147483648
15
12
; CHECK-NEXT: mov pc, lr
16
13
%fneg.a = fneg nnan nsz float %a
17
14
%cmp.a = fcmp nnan nsz olt float %a , -8 .0
@@ -22,13 +19,10 @@ define float @select_fneg_a_or_8_cmp_olt_a_neg8_f32(float %a, float %b) #0 {
22
19
define half @select_fneg_a_or_8_cmp_olt_a_neg8_f16 (half %a , half %b ) #0 {
23
20
; CHECK-LABEL: select_fneg_a_or_8_cmp_olt_a_neg8_f16:
24
21
; CHECK: @ %bb.0:
25
- ; CHECK-NEXT: vmov.f16 s4, r0
26
22
; CHECK-NEXT: vmov.f16 s0, #-8.000000e+00
27
- ; CHECK-NEXT: vcmp.f16 s0, s4
28
- ; CHECK-NEXT: vmov.f16 s2, #8.000000e+00
29
- ; CHECK-NEXT: vmrs APSR_nzcv, fpscr
30
- ; CHECK-NEXT: vneg.f16 s6, s4
31
- ; CHECK-NEXT: vselgt.f16 s0, s6, s2
23
+ ; CHECK-NEXT: vmov.f16 s2, r0
24
+ ; CHECK-NEXT: vminnm.f16 s0, s2, s0
25
+ ; CHECK-NEXT: vneg.f16 s0, s0
32
26
; CHECK-NEXT: vmov r0, s0
33
27
; CHECK-NEXT: mov pc, lr
34
28
%fneg.a = fneg nnan nsz half %a
@@ -42,12 +36,9 @@ define float @select_fneg_a_or_8_cmp_ogt_a_neg8_f32(float %a, float %b) #0 {
42
36
; CHECK: @ %bb.0:
43
37
; CHECK-NEXT: vmov.f32 s0, #-8.000000e+00
44
38
; CHECK-NEXT: vmov s2, r0
45
- ; CHECK-NEXT: vmov.f32 s4, #8.000000e+00
46
- ; CHECK-NEXT: vneg.f32 s6, s2
47
- ; CHECK-NEXT: vcmp.f32 s2, s0
48
- ; CHECK-NEXT: vmrs APSR_nzcv, fpscr
49
- ; CHECK-NEXT: vselgt.f32 s0, s6, s4
39
+ ; CHECK-NEXT: vmaxnm.f32 s0, s2, s0
50
40
; CHECK-NEXT: vmov r0, s0
41
+ ; CHECK-NEXT: eor r0, r0, #-2147483648
51
42
; CHECK-NEXT: mov pc, lr
52
43
%fneg.a = fneg nnan nsz float %a
53
44
%cmp.a = fcmp nnan nsz ogt float %a , -8 .0
@@ -58,13 +49,10 @@ define float @select_fneg_a_or_8_cmp_ogt_a_neg8_f32(float %a, float %b) #0 {
58
49
define half @select_fneg_a_or_8_cmp_ogt_a_neg8_f16 (half %a , half %b ) #0 {
59
50
; CHECK-LABEL: select_fneg_a_or_8_cmp_ogt_a_neg8_f16:
60
51
; CHECK: @ %bb.0:
61
- ; CHECK-NEXT: vmov.f16 s4, r0
62
52
; CHECK-NEXT: vmov.f16 s0, #-8.000000e+00
63
- ; CHECK-NEXT: vcmp.f16 s4, s0
64
- ; CHECK-NEXT: vmov.f16 s2, #8.000000e+00
65
- ; CHECK-NEXT: vmrs APSR_nzcv, fpscr
66
- ; CHECK-NEXT: vneg.f16 s6, s4
67
- ; CHECK-NEXT: vselgt.f16 s0, s6, s2
53
+ ; CHECK-NEXT: vmov.f16 s2, r0
54
+ ; CHECK-NEXT: vmaxnm.f16 s0, s2, s0
55
+ ; CHECK-NEXT: vneg.f16 s0, s0
68
56
; CHECK-NEXT: vmov r0, s0
69
57
; CHECK-NEXT: mov pc, lr
70
58
%fneg.a = fneg nnan nsz half %a
0 commit comments