@@ -18,31 +18,10 @@ define void @fp_add(ptr %dst, ptr %p, ptr %q) {
18
18
; DEFAULT-LABEL: define void @fp_add
19
19
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0:[0-9]+]] {
20
20
; DEFAULT-NEXT: entry:
21
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
22
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
23
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
24
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
25
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
26
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
27
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
28
- ; DEFAULT-NEXT: [[F0:%.*]] = load float, ptr [[Q]], align 4
29
- ; DEFAULT-NEXT: [[PF1:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 1
30
- ; DEFAULT-NEXT: [[F1:%.*]] = load float, ptr [[PF1]], align 4
31
- ; DEFAULT-NEXT: [[PF2:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 2
32
- ; DEFAULT-NEXT: [[F2:%.*]] = load float, ptr [[PF2]], align 4
33
- ; DEFAULT-NEXT: [[PF3:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 3
34
- ; DEFAULT-NEXT: [[F3:%.*]] = load float, ptr [[PF3]], align 4
35
- ; DEFAULT-NEXT: [[A0:%.*]] = fadd float [[E0]], [[F0]]
36
- ; DEFAULT-NEXT: [[A1:%.*]] = fadd float [[E1]], [[F1]]
37
- ; DEFAULT-NEXT: [[A2:%.*]] = fadd float [[E2]], [[F2]]
38
- ; DEFAULT-NEXT: [[A3:%.*]] = fadd float [[E3]], [[F3]]
39
- ; DEFAULT-NEXT: store float [[A0]], ptr [[DST]], align 4
40
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 1
41
- ; DEFAULT-NEXT: store float [[A1]], ptr [[PA1]], align 4
42
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 2
43
- ; DEFAULT-NEXT: store float [[A2]], ptr [[PA2]], align 4
44
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 3
45
- ; DEFAULT-NEXT: store float [[A3]], ptr [[PA3]], align 4
21
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
22
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = load <4 x float>, ptr [[Q]], align 4
23
+ ; DEFAULT-NEXT: [[TMP2:%.*]] = fadd <4 x float> [[TMP0]], [[TMP1]]
24
+ ; DEFAULT-NEXT: store <4 x float> [[TMP2]], ptr [[DST]], align 4
46
25
; DEFAULT-NEXT: ret void
47
26
;
48
27
entry:
@@ -90,24 +69,9 @@ define void @fp_sub(ptr %dst, ptr %p) {
90
69
; DEFAULT-LABEL: define void @fp_sub
91
70
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]]) #[[ATTR0]] {
92
71
; DEFAULT-NEXT: entry:
93
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
94
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
95
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
96
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
97
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
98
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
99
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
100
- ; DEFAULT-NEXT: [[A0:%.*]] = fsub float [[E0]], 3.000000e+00
101
- ; DEFAULT-NEXT: [[A1:%.*]] = fsub float [[E1]], 3.000000e+00
102
- ; DEFAULT-NEXT: [[A2:%.*]] = fsub float [[E2]], 3.000000e+00
103
- ; DEFAULT-NEXT: [[A3:%.*]] = fsub float [[E3]], 3.000000e+00
104
- ; DEFAULT-NEXT: store float [[A0]], ptr [[DST]], align 4
105
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 1
106
- ; DEFAULT-NEXT: store float [[A1]], ptr [[PA1]], align 4
107
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 2
108
- ; DEFAULT-NEXT: store float [[A2]], ptr [[PA2]], align 4
109
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 3
110
- ; DEFAULT-NEXT: store float [[A3]], ptr [[PA3]], align 4
72
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
73
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = fsub <4 x float> [[TMP0]], <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
74
+ ; DEFAULT-NEXT: store <4 x float> [[TMP1]], ptr [[DST]], align 4
111
75
; DEFAULT-NEXT: ret void
112
76
;
113
77
entry:
@@ -148,31 +112,10 @@ define void @fp_mul(ptr %dst, ptr %p, ptr %q) {
148
112
; DEFAULT-LABEL: define void @fp_mul
149
113
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0]] {
150
114
; DEFAULT-NEXT: entry:
151
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
152
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
153
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
154
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
155
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
156
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
157
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
158
- ; DEFAULT-NEXT: [[F0:%.*]] = load float, ptr [[Q]], align 4
159
- ; DEFAULT-NEXT: [[PF1:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 1
160
- ; DEFAULT-NEXT: [[F1:%.*]] = load float, ptr [[PF1]], align 4
161
- ; DEFAULT-NEXT: [[PF2:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 2
162
- ; DEFAULT-NEXT: [[F2:%.*]] = load float, ptr [[PF2]], align 4
163
- ; DEFAULT-NEXT: [[PF3:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 3
164
- ; DEFAULT-NEXT: [[F3:%.*]] = load float, ptr [[PF3]], align 4
165
- ; DEFAULT-NEXT: [[A0:%.*]] = fmul float [[E0]], [[F0]]
166
- ; DEFAULT-NEXT: [[A1:%.*]] = fmul float [[E1]], [[F1]]
167
- ; DEFAULT-NEXT: [[A2:%.*]] = fmul float [[E2]], [[F2]]
168
- ; DEFAULT-NEXT: [[A3:%.*]] = fmul float [[E3]], [[F3]]
169
- ; DEFAULT-NEXT: store float [[A0]], ptr [[DST]], align 4
170
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 1
171
- ; DEFAULT-NEXT: store float [[A1]], ptr [[PA1]], align 4
172
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 2
173
- ; DEFAULT-NEXT: store float [[A2]], ptr [[PA2]], align 4
174
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 3
175
- ; DEFAULT-NEXT: store float [[A3]], ptr [[PA3]], align 4
115
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
116
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = load <4 x float>, ptr [[Q]], align 4
117
+ ; DEFAULT-NEXT: [[TMP2:%.*]] = fmul <4 x float> [[TMP0]], [[TMP1]]
118
+ ; DEFAULT-NEXT: store <4 x float> [[TMP2]], ptr [[DST]], align 4
176
119
; DEFAULT-NEXT: ret void
177
120
;
178
121
entry:
@@ -220,24 +163,9 @@ define void @fp_div(ptr %dst, ptr %p) {
220
163
; DEFAULT-LABEL: define void @fp_div
221
164
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]]) #[[ATTR0]] {
222
165
; DEFAULT-NEXT: entry:
223
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
224
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
225
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
226
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
227
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
228
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
229
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
230
- ; DEFAULT-NEXT: [[A0:%.*]] = fdiv float [[E0]], 1.050000e+01
231
- ; DEFAULT-NEXT: [[A1:%.*]] = fdiv float [[E1]], 1.050000e+01
232
- ; DEFAULT-NEXT: [[A2:%.*]] = fdiv float [[E2]], 1.050000e+01
233
- ; DEFAULT-NEXT: [[A3:%.*]] = fdiv float [[E3]], 1.050000e+01
234
- ; DEFAULT-NEXT: store float [[A0]], ptr [[DST]], align 4
235
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 1
236
- ; DEFAULT-NEXT: store float [[A1]], ptr [[PA1]], align 4
237
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 2
238
- ; DEFAULT-NEXT: store float [[A2]], ptr [[PA2]], align 4
239
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 3
240
- ; DEFAULT-NEXT: store float [[A3]], ptr [[PA3]], align 4
166
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
167
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = fdiv <4 x float> [[TMP0]], <float 1.050000e+01, float 1.050000e+01, float 1.050000e+01, float 1.050000e+01>
168
+ ; DEFAULT-NEXT: store <4 x float> [[TMP1]], ptr [[DST]], align 4
241
169
; DEFAULT-NEXT: ret void
242
170
;
243
171
entry:
@@ -280,31 +208,10 @@ define void @fp_max(ptr %dst, ptr %p, ptr %q) {
280
208
; DEFAULT-LABEL: define void @fp_max
281
209
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0]] {
282
210
; DEFAULT-NEXT: entry:
283
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
284
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
285
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
286
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
287
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
288
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
289
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
290
- ; DEFAULT-NEXT: [[F0:%.*]] = load float, ptr [[Q]], align 4
291
- ; DEFAULT-NEXT: [[PF1:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 1
292
- ; DEFAULT-NEXT: [[F1:%.*]] = load float, ptr [[PF1]], align 4
293
- ; DEFAULT-NEXT: [[PF2:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 2
294
- ; DEFAULT-NEXT: [[F2:%.*]] = load float, ptr [[PF2]], align 4
295
- ; DEFAULT-NEXT: [[PF3:%.*]] = getelementptr inbounds float, ptr [[Q]], i64 3
296
- ; DEFAULT-NEXT: [[F3:%.*]] = load float, ptr [[PF3]], align 4
297
- ; DEFAULT-NEXT: [[A0:%.*]] = tail call float @llvm.maxnum.f32(float [[E0]], float [[F0]])
298
- ; DEFAULT-NEXT: [[A1:%.*]] = tail call float @llvm.maxnum.f32(float [[E1]], float [[F1]])
299
- ; DEFAULT-NEXT: [[A2:%.*]] = tail call float @llvm.maxnum.f32(float [[E2]], float [[F2]])
300
- ; DEFAULT-NEXT: [[A3:%.*]] = tail call float @llvm.maxnum.f32(float [[E3]], float [[F3]])
301
- ; DEFAULT-NEXT: store float [[A0]], ptr [[DST]], align 4
302
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 1
303
- ; DEFAULT-NEXT: store float [[A1]], ptr [[PA1]], align 4
304
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 2
305
- ; DEFAULT-NEXT: store float [[A2]], ptr [[PA2]], align 4
306
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 3
307
- ; DEFAULT-NEXT: store float [[A3]], ptr [[PA3]], align 4
211
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
212
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = load <4 x float>, ptr [[Q]], align 4
213
+ ; DEFAULT-NEXT: [[TMP2:%.*]] = call <4 x float> @llvm.maxnum.v4f32(<4 x float> [[TMP0]], <4 x float> [[TMP1]])
214
+ ; DEFAULT-NEXT: store <4 x float> [[TMP2]], ptr [[DST]], align 4
308
215
; DEFAULT-NEXT: ret void
309
216
;
310
217
entry:
@@ -354,24 +261,9 @@ define void @fp_min(ptr %dst, ptr %p) {
354
261
; DEFAULT-LABEL: define void @fp_min
355
262
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]]) #[[ATTR0]] {
356
263
; DEFAULT-NEXT: entry:
357
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
358
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
359
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
360
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
361
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
362
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
363
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
364
- ; DEFAULT-NEXT: [[A0:%.*]] = tail call float @llvm.minnum.f32(float [[E0]], float 1.250000e+00)
365
- ; DEFAULT-NEXT: [[A1:%.*]] = tail call float @llvm.minnum.f32(float [[E1]], float 1.250000e+00)
366
- ; DEFAULT-NEXT: [[A2:%.*]] = tail call float @llvm.minnum.f32(float [[E2]], float 1.250000e+00)
367
- ; DEFAULT-NEXT: [[A3:%.*]] = tail call float @llvm.minnum.f32(float [[E3]], float 1.250000e+00)
368
- ; DEFAULT-NEXT: store float [[A0]], ptr [[DST]], align 4
369
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 1
370
- ; DEFAULT-NEXT: store float [[A1]], ptr [[PA1]], align 4
371
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 2
372
- ; DEFAULT-NEXT: store float [[A2]], ptr [[PA2]], align 4
373
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds float, ptr [[DST]], i64 3
374
- ; DEFAULT-NEXT: store float [[A3]], ptr [[PA3]], align 4
264
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
265
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = call <4 x float> @llvm.minnum.v4f32(<4 x float> [[TMP0]], <4 x float> <float 1.250000e+00, float 1.250000e+00, float 1.250000e+00, float 1.250000e+00>)
266
+ ; DEFAULT-NEXT: store <4 x float> [[TMP1]], ptr [[DST]], align 4
375
267
; DEFAULT-NEXT: ret void
376
268
;
377
269
entry:
@@ -413,24 +305,9 @@ define void @fp_convert(ptr %dst, ptr %p) {
413
305
; DEFAULT-LABEL: define void @fp_convert
414
306
; DEFAULT-SAME: (ptr [[DST:%.*]], ptr [[P:%.*]]) #[[ATTR0]] {
415
307
; DEFAULT-NEXT: entry:
416
- ; DEFAULT-NEXT: [[E0:%.*]] = load float, ptr [[P]], align 4
417
- ; DEFAULT-NEXT: [[PE1:%.*]] = getelementptr inbounds float, ptr [[P]], i64 1
418
- ; DEFAULT-NEXT: [[E1:%.*]] = load float, ptr [[PE1]], align 4
419
- ; DEFAULT-NEXT: [[PE2:%.*]] = getelementptr inbounds float, ptr [[P]], i64 2
420
- ; DEFAULT-NEXT: [[E2:%.*]] = load float, ptr [[PE2]], align 4
421
- ; DEFAULT-NEXT: [[PE3:%.*]] = getelementptr inbounds float, ptr [[P]], i64 3
422
- ; DEFAULT-NEXT: [[E3:%.*]] = load float, ptr [[PE3]], align 4
423
- ; DEFAULT-NEXT: [[A0:%.*]] = tail call i32 @llvm.fptosi.sat.i32.f32(float [[E0]])
424
- ; DEFAULT-NEXT: [[A1:%.*]] = tail call i32 @llvm.fptosi.sat.i32.f32(float [[E1]])
425
- ; DEFAULT-NEXT: [[A2:%.*]] = tail call i32 @llvm.fptosi.sat.i32.f32(float [[E2]])
426
- ; DEFAULT-NEXT: [[A3:%.*]] = tail call i32 @llvm.fptosi.sat.i32.f32(float [[E3]])
427
- ; DEFAULT-NEXT: store i32 [[A0]], ptr [[DST]], align 4
428
- ; DEFAULT-NEXT: [[PA1:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 1
429
- ; DEFAULT-NEXT: store i32 [[A1]], ptr [[PA1]], align 4
430
- ; DEFAULT-NEXT: [[PA2:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 2
431
- ; DEFAULT-NEXT: store i32 [[A2]], ptr [[PA2]], align 4
432
- ; DEFAULT-NEXT: [[PA3:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 3
433
- ; DEFAULT-NEXT: store i32 [[A3]], ptr [[PA3]], align 4
308
+ ; DEFAULT-NEXT: [[TMP0:%.*]] = load <4 x float>, ptr [[P]], align 4
309
+ ; DEFAULT-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.fptosi.sat.v4i32.v4f32(<4 x float> [[TMP0]])
310
+ ; DEFAULT-NEXT: store <4 x i32> [[TMP1]], ptr [[DST]], align 4
434
311
; DEFAULT-NEXT: ret void
435
312
;
436
313
entry:
0 commit comments