Lines Matching +full:4 +full:d

7 define <4 x double> @mull_add(<4 x double> %a, <4 x double> %b, <4 x double> %c) {
10 ; CHECK-NEXT: zip2 v4.2d, v2.2d, v3.2d
11 ; CHECK-NEXT: zip2 v5.2d, v0.2d, v1.2d
12 ; CHECK-NEXT: zip1 v0.2d, v0.2d, v1.2d
13 ; CHECK-NEXT: zip1 v2.2d, v2.2d, v3.2d
14 ; CHECK-NEXT: fmul v1.2d, v5.2d, v4.2d
15 ; CHECK-NEXT: fmul v3.2d, v0.2d, v4.2d
16 ; CHECK-NEXT: fneg v1.2d, v1.2d
17 ; CHECK-NEXT: fmla v3.2d, v2.2d, v5.2d
18 ; CHECK-NEXT: fmla v1.2d, v2.2d, v0.2d
19 ; CHECK-NEXT: fadd v1.2d, v2.2d, v1.2d
20 ; CHECK-NEXT: fadd v2.2d, v3.2d, v4.2d
21 ; CHECK-NEXT: zip1 v0.2d, v1.2d, v2.2d
22 ; CHECK-NEXT: zip2 v1.2d, v1.2d, v2.2d
25 %strided.vec = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 0, i32 2>
26 %strided.vec28 = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 1, i32 3>
27 %strided.vec30 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 0, i32 2>
28 %strided.vec31 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 1, i32 3>
33 %4 = fmul contract <2 x double> %strided.vec28, %strided.vec31
34 %5 = fsub contract <2 x double> %3, %4
35 %strided.vec33 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 0, i32 2>
36 %strided.vec34 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 1, i32 3>
39 …%interleaved.vec = shufflevector <2 x double> %6, <2 x double> %7, <4 x i32> <i32 0, i32 2, i32 1,…
40 ret <4 x double> %interleaved.vec
43 ; a * b + c * d
44 define <4 x double> @mul_add_mull(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x double> %
47 ; CHECK-NEXT: movi v16.2d, #0000000000000000
48 ; CHECK-NEXT: movi v17.2d, #0000000000000000
49 ; CHECK-NEXT: movi v18.2d, #0000000000000000
50 ; CHECK-NEXT: movi v19.2d, #0000000000000000
51 ; CHECK-NEXT: fcmla v16.2d, v2.2d, v0.2d, #0
52 ; CHECK-NEXT: fcmla v18.2d, v3.2d, v1.2d, #0
53 ; CHECK-NEXT: fcmla v17.2d, v7.2d, v5.2d, #0
54 ; CHECK-NEXT: fcmla v19.2d, v6.2d, v4.2d, #0
55 ; CHECK-NEXT: fcmla v16.2d, v2.2d, v0.2d, #90
56 ; CHECK-NEXT: fcmla v18.2d, v3.2d, v1.2d, #90
57 ; CHECK-NEXT: fcmla v17.2d, v7.2d, v5.2d, #90
58 ; CHECK-NEXT: fcmla v19.2d, v6.2d, v4.2d, #90
59 ; CHECK-NEXT: fadd v1.2d, v18.2d, v17.2d
60 ; CHECK-NEXT: fadd v0.2d, v16.2d, v19.2d
63 %strided.vec = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 0, i32 2>
64 %strided.vec51 = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 1, i32 3>
65 %strided.vec53 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 0, i32 2>
66 %strided.vec54 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 1, i32 3>
71 %4 = fmul contract <2 x double> %strided.vec51, %strided.vec54
72 %5 = fsub contract <2 x double> %3, %4
73 %strided.vec56 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 0, i32 2>
74 %strided.vec57 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 1, i32 3>
75 %strided.vec59 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 0, i32 2>
76 %strided.vec60 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 1, i32 3>
85 …%interleaved.vec = shufflevector <2 x double> %12, <2 x double> %13, <4 x i32> <i32 0, i32 2, i32 …
86 ret <4 x double> %interleaved.vec
89 ; a * b - c * d
90 define <4 x double> @mul_sub_mull(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x double> %
93 ; CHECK-NEXT: movi v16.2d, #0000000000000000
94 ; CHECK-NEXT: movi v17.2d, #0000000000000000
95 ; CHECK-NEXT: movi v18.2d, #0000000000000000
96 ; CHECK-NEXT: movi v19.2d, #0000000000000000
97 ; CHECK-NEXT: fcmla v16.2d, v2.2d, v0.2d, #0
98 ; CHECK-NEXT: fcmla v18.2d, v3.2d, v1.2d, #0
99 ; CHECK-NEXT: fcmla v17.2d, v7.2d, v5.2d, #0
100 ; CHECK-NEXT: fcmla v19.2d, v6.2d, v4.2d, #0
101 ; CHECK-NEXT: fcmla v16.2d, v2.2d, v0.2d, #90
102 ; CHECK-NEXT: fcmla v18.2d, v3.2d, v1.2d, #90
103 ; CHECK-NEXT: fcmla v17.2d, v7.2d, v5.2d, #90
104 ; CHECK-NEXT: fcmla v19.2d, v6.2d, v4.2d, #90
105 ; CHECK-NEXT: fsub v1.2d, v18.2d, v17.2d
106 ; CHECK-NEXT: fsub v0.2d, v16.2d, v19.2d
109 %strided.vec = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 0, i32 2>
110 %strided.vec51 = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 1, i32 3>
111 %strided.vec53 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 0, i32 2>
112 %strided.vec54 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 1, i32 3>
117 %4 = fmul contract <2 x double> %strided.vec51, %strided.vec54
118 %5 = fsub contract <2 x double> %3, %4
119 %strided.vec56 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 0, i32 2>
120 %strided.vec57 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 1, i32 3>
121 %strided.vec59 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 0, i32 2>
122 %strided.vec60 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 1, i32 3>
131 …%interleaved.vec = shufflevector <2 x double> %12, <2 x double> %13, <4 x i32> <i32 0, i32 2, i32 …
132 ret <4 x double> %interleaved.vec
135 ; a * b + conj(c) * d
136 define <4 x double> @mul_conj_mull(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x double> …
139 ; CHECK-NEXT: movi v16.2d, #0000000000000000
140 ; CHECK-NEXT: movi v17.2d, #0000000000000000
141 ; CHECK-NEXT: movi v18.2d, #0000000000000000
142 ; CHECK-NEXT: movi v19.2d, #0000000000000000
143 ; CHECK-NEXT: fcmla v16.2d, v2.2d, v0.2d, #0
144 ; CHECK-NEXT: fcmla v18.2d, v3.2d, v1.2d, #0
145 ; CHECK-NEXT: fcmla v17.2d, v5.2d, v7.2d, #0
146 ; CHECK-NEXT: fcmla v19.2d, v4.2d, v6.2d, #0
147 ; CHECK-NEXT: fcmla v16.2d, v2.2d, v0.2d, #90
148 ; CHECK-NEXT: fcmla v18.2d, v3.2d, v1.2d, #90
149 ; CHECK-NEXT: fcmla v17.2d, v5.2d, v7.2d, #270
150 ; CHECK-NEXT: fcmla v19.2d, v4.2d, v6.2d, #270
151 ; CHECK-NEXT: fadd v1.2d, v18.2d, v17.2d
152 ; CHECK-NEXT: fadd v0.2d, v16.2d, v19.2d
155 %strided.vec = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 0, i32 2>
156 %strided.vec59 = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 1, i32 3>
157 %strided.vec61 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 0, i32 2>
158 %strided.vec62 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 1, i32 3>
163 %4 = fmul contract <2 x double> %strided.vec59, %strided.vec62
164 %5 = fsub contract <2 x double> %3, %4
165 %strided.vec64 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 0, i32 2>
166 %strided.vec65 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 1, i32 3>
167 %strided.vec67 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 0, i32 2>
168 %strided.vec68 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 1, i32 3>
177 …%interleaved.vec = shufflevector <2 x double> %12, <2 x double> %13, <4 x i32> <i32 0, i32 2, i32 …
178 ret <4 x double> %interleaved.vec
181 ; a + b + 1i * c * d
182 define <4 x double> @mul_add_rot_mull(<4 x double> %a, <4 x double> %b, <4 x double> %c, <4 x doubl…
185 ; CHECK-NEXT: movi v16.2d, #0xffffffffffffffff
186 ; CHECK-NEXT: zip2 v17.2d, v4.2d, v5.2d
187 ; CHECK-NEXT: movi v18.2d, #0000000000000000
188 ; CHECK-NEXT: zip1 v4.2d, v4.2d, v5.2d
189 ; CHECK-NEXT: zip2 v19.2d, v0.2d, v1.2d
190 ; CHECK-NEXT: zip2 v20.2d, v2.2d, v3.2d
191 ; CHECK-NEXT: zip1 v0.2d, v0.2d, v1.2d
192 ; CHECK-NEXT: zip1 v2.2d, v2.2d, v3.2d
193 ; CHECK-NEXT: fneg v16.2d, v16.2d
194 ; CHECK-NEXT: fmul v1.2d, v19.2d, v20.2d
195 ; CHECK-NEXT: fmul v3.2d, v0.2d, v20.2d
198 ; CHECK-NEXT: fneg v1.2d, v1.2d
199 ; CHECK-NEXT: fmla v3.2d, v2.2d, v19.2d
201 ; CHECK-NEXT: fsub v16.2d, v16.2d, v17.2d
202 ; CHECK-NEXT: fmla v1.2d, v2.2d, v0.2d
203 ; CHECK-NEXT: fadd v4.2d, v4.2d, v5.2d
204 ; CHECK-NEXT: zip2 v5.2d, v6.2d, v7.2d
205 ; CHECK-NEXT: zip1 v6.2d, v6.2d, v7.2d
206 ; CHECK-NEXT: fmul v17.2d, v4.2d, v5.2d
207 ; CHECK-NEXT: fmul v5.2d, v16.2d, v5.2d
208 ; CHECK-NEXT: fneg v7.2d, v17.2d
209 ; CHECK-NEXT: fmla v5.2d, v4.2d, v6.2d
210 ; CHECK-NEXT: fmla v7.2d, v6.2d, v16.2d
211 ; CHECK-NEXT: fadd v2.2d, v3.2d, v5.2d
212 ; CHECK-NEXT: fadd v1.2d, v1.2d, v7.2d
213 ; CHECK-NEXT: zip1 v0.2d, v1.2d, v2.2d
214 ; CHECK-NEXT: zip2 v1.2d, v1.2d, v2.2d
217 %strided.vec = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 0, i32 2>
218 %strided.vec77 = shufflevector <4 x double> %a, <4 x double> poison, <2 x i32> <i32 1, i32 3>
219 %strided.vec79 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 0, i32 2>
220 %strided.vec80 = shufflevector <4 x double> %b, <4 x double> poison, <2 x i32> <i32 1, i32 3>
225 %4 = fmul contract <2 x double> %strided.vec77, %strided.vec80
226 %5 = fsub contract <2 x double> %3, %4
227 %strided.vec82 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 0, i32 2>
228 %strided.vec83 = shufflevector <4 x double> %c, <4 x double> poison, <2 x i32> <i32 1, i32 3>
233 %strided.vec85 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 0, i32 2>
234 %strided.vec86 = shufflevector <4 x double> %d, <4 x double> poison, <2 x i32> <i32 1, i32 3>
243 …%interleaved.vec = shufflevector <2 x double> %16, <2 x double> %17, <4 x i32> <i32 0, i32 2, i32 …
244 ret <4 x double> %interleaved.vec