12
12
; =>
13
13
; recip = 1.0 / D; a * recip; b * recip; c * recip;
14
14
define void @three_fdiv_float (float %D , float %a , float %b , float %c ) #0 {
15
- ; CHECK-SD-LABEL: three_fdiv_float:
16
- ; CHECK-SD: // %bb.0:
17
- ; CHECK-SD-NEXT: fmov s4, #1.00000000
18
- ; CHECK-SD-NEXT: fdiv s4, s4, s0
19
- ; CHECK-SD-NEXT: fmul s0, s1, s4
20
- ; CHECK-SD-NEXT: fmul s1, s2, s4
21
- ; CHECK-SD-NEXT: fmul s2, s3, s4
22
- ; CHECK-SD-NEXT: b foo_3f
23
- ;
24
- ; CHECK-GI-LABEL: three_fdiv_float:
25
- ; CHECK-GI: // %bb.0:
26
- ; CHECK-GI-NEXT: fdiv s4, s1, s0
27
- ; CHECK-GI-NEXT: fdiv s1, s2, s0
28
- ; CHECK-GI-NEXT: fdiv s2, s3, s0
29
- ; CHECK-GI-NEXT: fmov s0, s4
30
- ; CHECK-GI-NEXT: b foo_3f
15
+ ; CHECK-LABEL: three_fdiv_float:
16
+ ; CHECK: // %bb.0:
17
+ ; CHECK-NEXT: fmov s4, #1.00000000
18
+ ; CHECK-NEXT: fdiv s4, s4, s0
19
+ ; CHECK-NEXT: fmul s0, s1, s4
20
+ ; CHECK-NEXT: fmul s1, s2, s4
21
+ ; CHECK-NEXT: fmul s2, s3, s4
22
+ ; CHECK-NEXT: b foo_3f
31
23
%div = fdiv float %a , %D
32
24
%div1 = fdiv float %b , %D
33
25
%div2 = fdiv float %c , %D
@@ -36,22 +28,14 @@ define void @three_fdiv_float(float %D, float %a, float %b, float %c) #0 {
36
28
}
37
29
38
30
define void @three_fdiv_double (double %D , double %a , double %b , double %c ) #0 {
39
- ; CHECK-SD-LABEL: three_fdiv_double:
40
- ; CHECK-SD: // %bb.0:
41
- ; CHECK-SD-NEXT: fmov d4, #1.00000000
42
- ; CHECK-SD-NEXT: fdiv d4, d4, d0
43
- ; CHECK-SD-NEXT: fmul d0, d1, d4
44
- ; CHECK-SD-NEXT: fmul d1, d2, d4
45
- ; CHECK-SD-NEXT: fmul d2, d3, d4
46
- ; CHECK-SD-NEXT: b foo_3d
47
- ;
48
- ; CHECK-GI-LABEL: three_fdiv_double:
49
- ; CHECK-GI: // %bb.0:
50
- ; CHECK-GI-NEXT: fdiv d4, d1, d0
51
- ; CHECK-GI-NEXT: fdiv d1, d2, d0
52
- ; CHECK-GI-NEXT: fdiv d2, d3, d0
53
- ; CHECK-GI-NEXT: fmov d0, d4
54
- ; CHECK-GI-NEXT: b foo_3d
31
+ ; CHECK-LABEL: three_fdiv_double:
32
+ ; CHECK: // %bb.0:
33
+ ; CHECK-NEXT: fmov d4, #1.00000000
34
+ ; CHECK-NEXT: fdiv d4, d4, d0
35
+ ; CHECK-NEXT: fmul d0, d1, d4
36
+ ; CHECK-NEXT: fmul d1, d2, d4
37
+ ; CHECK-NEXT: fmul d2, d3, d4
38
+ ; CHECK-NEXT: b foo_3d
55
39
%div = fdiv double %a , %D
56
40
%div1 = fdiv double %b , %D
57
41
%div2 = fdiv double %c , %D
@@ -60,22 +44,14 @@ define void @three_fdiv_double(double %D, double %a, double %b, double %c) #0 {
60
44
}
61
45
62
46
define void @three_fdiv_4xfloat (<4 x float > %D , <4 x float > %a , <4 x float > %b , <4 x float > %c ) #0 {
63
- ; CHECK-SD-LABEL: three_fdiv_4xfloat:
64
- ; CHECK-SD: // %bb.0:
65
- ; CHECK-SD-NEXT: fmov v4.4s, #1.00000000
66
- ; CHECK-SD-NEXT: fdiv v4.4s, v4.4s, v0.4s
67
- ; CHECK-SD-NEXT: fmul v0.4s, v1.4s, v4.4s
68
- ; CHECK-SD-NEXT: fmul v1.4s, v2.4s, v4.4s
69
- ; CHECK-SD-NEXT: fmul v2.4s, v3.4s, v4.4s
70
- ; CHECK-SD-NEXT: b foo_3_4xf
71
- ;
72
- ; CHECK-GI-LABEL: three_fdiv_4xfloat:
73
- ; CHECK-GI: // %bb.0:
74
- ; CHECK-GI-NEXT: fdiv v4.4s, v1.4s, v0.4s
75
- ; CHECK-GI-NEXT: fdiv v1.4s, v2.4s, v0.4s
76
- ; CHECK-GI-NEXT: fdiv v2.4s, v3.4s, v0.4s
77
- ; CHECK-GI-NEXT: mov v0.16b, v4.16b
78
- ; CHECK-GI-NEXT: b foo_3_4xf
47
+ ; CHECK-LABEL: three_fdiv_4xfloat:
48
+ ; CHECK: // %bb.0:
49
+ ; CHECK-NEXT: fmov v4.4s, #1.00000000
50
+ ; CHECK-NEXT: fdiv v4.4s, v4.4s, v0.4s
51
+ ; CHECK-NEXT: fmul v0.4s, v1.4s, v4.4s
52
+ ; CHECK-NEXT: fmul v1.4s, v2.4s, v4.4s
53
+ ; CHECK-NEXT: fmul v2.4s, v3.4s, v4.4s
54
+ ; CHECK-NEXT: b foo_3_4xf
79
55
%div = fdiv <4 x float > %a , %D
80
56
%div1 = fdiv <4 x float > %b , %D
81
57
%div2 = fdiv <4 x float > %c , %D
@@ -84,22 +60,14 @@ define void @three_fdiv_4xfloat(<4 x float> %D, <4 x float> %a, <4 x float> %b,
84
60
}
85
61
86
62
define void @three_fdiv_2xdouble (<2 x double > %D , <2 x double > %a , <2 x double > %b , <2 x double > %c ) #0 {
87
- ; CHECK-SD-LABEL: three_fdiv_2xdouble:
88
- ; CHECK-SD: // %bb.0:
89
- ; CHECK-SD-NEXT: fmov v4.2d, #1.00000000
90
- ; CHECK-SD-NEXT: fdiv v4.2d, v4.2d, v0.2d
91
- ; CHECK-SD-NEXT: fmul v0.2d, v1.2d, v4.2d
92
- ; CHECK-SD-NEXT: fmul v1.2d, v2.2d, v4.2d
93
- ; CHECK-SD-NEXT: fmul v2.2d, v3.2d, v4.2d
94
- ; CHECK-SD-NEXT: b foo_3_2xd
95
- ;
96
- ; CHECK-GI-LABEL: three_fdiv_2xdouble:
97
- ; CHECK-GI: // %bb.0:
98
- ; CHECK-GI-NEXT: fdiv v4.2d, v1.2d, v0.2d
99
- ; CHECK-GI-NEXT: fdiv v1.2d, v2.2d, v0.2d
100
- ; CHECK-GI-NEXT: fdiv v2.2d, v3.2d, v0.2d
101
- ; CHECK-GI-NEXT: mov v0.16b, v4.16b
102
- ; CHECK-GI-NEXT: b foo_3_2xd
63
+ ; CHECK-LABEL: three_fdiv_2xdouble:
64
+ ; CHECK: // %bb.0:
65
+ ; CHECK-NEXT: fmov v4.2d, #1.00000000
66
+ ; CHECK-NEXT: fdiv v4.2d, v4.2d, v0.2d
67
+ ; CHECK-NEXT: fmul v0.2d, v1.2d, v4.2d
68
+ ; CHECK-NEXT: fmul v1.2d, v2.2d, v4.2d
69
+ ; CHECK-NEXT: fmul v2.2d, v3.2d, v4.2d
70
+ ; CHECK-NEXT: b foo_3_2xd
103
71
%div = fdiv <2 x double > %a , %D
104
72
%div1 = fdiv <2 x double > %b , %D
105
73
%div2 = fdiv <2 x double > %c , %D
@@ -136,25 +104,16 @@ define void @two_fdiv_double(double %D, double %a, double %b) #0 {
136
104
}
137
105
138
106
define void @splat_three_fdiv_4xfloat (float %D , <4 x float > %a , <4 x float > %b , <4 x float > %c ) #0 {
139
- ; CHECK-SD-LABEL: splat_three_fdiv_4xfloat:
140
- ; CHECK-SD: // %bb.0:
141
- ; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
142
- ; CHECK-SD-NEXT: fmov v4.4s, #1.00000000
143
- ; CHECK-SD-NEXT: dup v0.4s, v0.s[0]
144
- ; CHECK-SD-NEXT: fdiv v4.4s, v4.4s, v0.4s
145
- ; CHECK-SD-NEXT: fmul v0.4s, v1.4s, v4.4s
146
- ; CHECK-SD-NEXT: fmul v1.4s, v2.4s, v4.4s
147
- ; CHECK-SD-NEXT: fmul v2.4s, v3.4s, v4.4s
148
- ; CHECK-SD-NEXT: b foo_3_4xf
149
- ;
150
- ; CHECK-GI-LABEL: splat_three_fdiv_4xfloat:
151
- ; CHECK-GI: // %bb.0:
152
- ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
153
- ; CHECK-GI-NEXT: dup v4.4s, v0.s[0]
154
- ; CHECK-GI-NEXT: fdiv v0.4s, v1.4s, v4.4s
155
- ; CHECK-GI-NEXT: fdiv v1.4s, v2.4s, v4.4s
156
- ; CHECK-GI-NEXT: fdiv v2.4s, v3.4s, v4.4s
157
- ; CHECK-GI-NEXT: b foo_3_4xf
107
+ ; CHECK-LABEL: splat_three_fdiv_4xfloat:
108
+ ; CHECK: // %bb.0:
109
+ ; CHECK-NEXT: // kill: def $s0 killed $s0 def $q0
110
+ ; CHECK-NEXT: fmov v4.4s, #1.00000000
111
+ ; CHECK-NEXT: dup v0.4s, v0.s[0]
112
+ ; CHECK-NEXT: fdiv v4.4s, v4.4s, v0.4s
113
+ ; CHECK-NEXT: fmul v0.4s, v1.4s, v4.4s
114
+ ; CHECK-NEXT: fmul v1.4s, v2.4s, v4.4s
115
+ ; CHECK-NEXT: fmul v2.4s, v3.4s, v4.4s
116
+ ; CHECK-NEXT: b foo_3_4xf
158
117
%D.ins = insertelement <4 x float > poison, float %D , i64 0
159
118
%splat = shufflevector <4 x float > %D.ins , <4 x float > poison, <4 x i32 > zeroinitializer
160
119
%div = fdiv <4 x float > %a , %splat
0 commit comments