@@ -25,22 +25,13 @@ declare i64 @llvm.vector.reduce.mul.v4i64(<4 x i64>)
25
25
declare i128 @llvm.vector.reduce.mul.v2i128 (<2 x i128 >)
26
26
27
27
define i8 @mulv_v2i8 (<2 x i8 > %a ) {
28
- ; CHECK-SD-LABEL: mulv_v2i8:
29
- ; CHECK-SD: // %bb.0: // %entry
30
- ; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
31
- ; CHECK-SD-NEXT: mov w8, v0.s[1]
32
- ; CHECK-SD-NEXT: fmov w9, s0
33
- ; CHECK-SD-NEXT: mul w0, w9, w8
34
- ; CHECK-SD-NEXT: ret
35
- ;
36
- ; CHECK-GI-LABEL: mulv_v2i8:
37
- ; CHECK-GI: // %bb.0: // %entry
38
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
39
- ; CHECK-GI-NEXT: mov s1, v0.s[1]
40
- ; CHECK-GI-NEXT: fmov w8, s0
41
- ; CHECK-GI-NEXT: fmov w9, s1
42
- ; CHECK-GI-NEXT: mul w0, w8, w9
43
- ; CHECK-GI-NEXT: ret
28
+ ; CHECK-LABEL: mulv_v2i8:
29
+ ; CHECK: // %bb.0: // %entry
30
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
31
+ ; CHECK-NEXT: mov w8, v0.s[1]
32
+ ; CHECK-NEXT: fmov w9, s0
33
+ ; CHECK-NEXT: mul w0, w9, w8
34
+ ; CHECK-NEXT: ret
44
35
entry:
45
36
%arg1 = call i8 @llvm.vector.reduce.mul.v2i8 (<2 x i8 > %a )
46
37
ret i8 %arg1
@@ -230,22 +221,13 @@ entry:
230
221
}
231
222
232
223
define i16 @mulv_v2i16 (<2 x i16 > %a ) {
233
- ; CHECK-SD-LABEL: mulv_v2i16:
234
- ; CHECK-SD: // %bb.0: // %entry
235
- ; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
236
- ; CHECK-SD-NEXT: mov w8, v0.s[1]
237
- ; CHECK-SD-NEXT: fmov w9, s0
238
- ; CHECK-SD-NEXT: mul w0, w9, w8
239
- ; CHECK-SD-NEXT: ret
240
- ;
241
- ; CHECK-GI-LABEL: mulv_v2i16:
242
- ; CHECK-GI: // %bb.0: // %entry
243
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
244
- ; CHECK-GI-NEXT: mov s1, v0.s[1]
245
- ; CHECK-GI-NEXT: fmov w8, s0
246
- ; CHECK-GI-NEXT: fmov w9, s1
247
- ; CHECK-GI-NEXT: mul w0, w8, w9
248
- ; CHECK-GI-NEXT: ret
224
+ ; CHECK-LABEL: mulv_v2i16:
225
+ ; CHECK: // %bb.0: // %entry
226
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
227
+ ; CHECK-NEXT: mov w8, v0.s[1]
228
+ ; CHECK-NEXT: fmov w9, s0
229
+ ; CHECK-NEXT: mul w0, w9, w8
230
+ ; CHECK-NEXT: ret
249
231
entry:
250
232
%arg1 = call i16 @llvm.vector.reduce.mul.v2i16 (<2 x i16 > %a )
251
233
ret i16 %arg1
@@ -372,22 +354,13 @@ entry:
372
354
}
373
355
374
356
define i32 @mulv_v2i32 (<2 x i32 > %a ) {
375
- ; CHECK-SD-LABEL: mulv_v2i32:
376
- ; CHECK-SD: // %bb.0: // %entry
377
- ; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
378
- ; CHECK-SD-NEXT: mov w8, v0.s[1]
379
- ; CHECK-SD-NEXT: fmov w9, s0
380
- ; CHECK-SD-NEXT: mul w0, w9, w8
381
- ; CHECK-SD-NEXT: ret
382
- ;
383
- ; CHECK-GI-LABEL: mulv_v2i32:
384
- ; CHECK-GI: // %bb.0: // %entry
385
- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
386
- ; CHECK-GI-NEXT: mov s1, v0.s[1]
387
- ; CHECK-GI-NEXT: fmov w8, s0
388
- ; CHECK-GI-NEXT: fmov w9, s1
389
- ; CHECK-GI-NEXT: mul w0, w8, w9
390
- ; CHECK-GI-NEXT: ret
357
+ ; CHECK-LABEL: mulv_v2i32:
358
+ ; CHECK: // %bb.0: // %entry
359
+ ; CHECK-NEXT: // kill: def $d0 killed $d0 def $q0
360
+ ; CHECK-NEXT: mov w8, v0.s[1]
361
+ ; CHECK-NEXT: fmov w9, s0
362
+ ; CHECK-NEXT: mul w0, w9, w8
363
+ ; CHECK-NEXT: ret
391
364
entry:
392
365
%arg1 = call i32 @llvm.vector.reduce.mul.v2i32 (<2 x i32 > %a )
393
366
ret i32 %arg1
@@ -424,10 +397,9 @@ define i32 @mulv_v4i32(<4 x i32> %a) {
424
397
; CHECK-GI: // %bb.0: // %entry
425
398
; CHECK-GI-NEXT: mov d1, v0.d[1]
426
399
; CHECK-GI-NEXT: mul v0.2s, v0.2s, v1.2s
427
- ; CHECK-GI-NEXT: mov s1, v0.s[1]
428
- ; CHECK-GI-NEXT: fmov w8, s0
429
- ; CHECK-GI-NEXT: fmov w9, s1
430
- ; CHECK-GI-NEXT: mul w0, w8, w9
400
+ ; CHECK-GI-NEXT: mov w8, v0.s[1]
401
+ ; CHECK-GI-NEXT: fmov w9, s0
402
+ ; CHECK-GI-NEXT: mul w0, w9, w8
431
403
; CHECK-GI-NEXT: ret
432
404
entry:
433
405
%arg1 = call i32 @llvm.vector.reduce.mul.v4i32 (<4 x i32 > %a )
@@ -452,31 +424,22 @@ define i32 @mulv_v8i32(<8 x i32> %a) {
452
424
; CHECK-GI-NEXT: mul v0.2s, v0.2s, v2.2s
453
425
; CHECK-GI-NEXT: mul v1.2s, v1.2s, v3.2s
454
426
; CHECK-GI-NEXT: mul v0.2s, v0.2s, v1.2s
455
- ; CHECK-GI-NEXT: mov s1, v0.s[1]
456
- ; CHECK-GI-NEXT: fmov w8, s0
457
- ; CHECK-GI-NEXT: fmov w9, s1
458
- ; CHECK-GI-NEXT: mul w0, w8, w9
427
+ ; CHECK-GI-NEXT: mov w8, v0.s[1]
428
+ ; CHECK-GI-NEXT: fmov w9, s0
429
+ ; CHECK-GI-NEXT: mul w0, w9, w8
459
430
; CHECK-GI-NEXT: ret
460
431
entry:
461
432
%arg1 = call i32 @llvm.vector.reduce.mul.v8i32 (<8 x i32 > %a )
462
433
ret i32 %arg1
463
434
}
464
435
465
436
define i64 @mulv_v2i64 (<2 x i64 > %a ) {
466
- ; CHECK-SD-LABEL: mulv_v2i64:
467
- ; CHECK-SD: // %bb.0: // %entry
468
- ; CHECK-SD-NEXT: mov x8, v0.d[1]
469
- ; CHECK-SD-NEXT: fmov x9, d0
470
- ; CHECK-SD-NEXT: mul x0, x9, x8
471
- ; CHECK-SD-NEXT: ret
472
- ;
473
- ; CHECK-GI-LABEL: mulv_v2i64:
474
- ; CHECK-GI: // %bb.0: // %entry
475
- ; CHECK-GI-NEXT: mov d1, v0.d[1]
476
- ; CHECK-GI-NEXT: fmov x8, d0
477
- ; CHECK-GI-NEXT: fmov x9, d1
478
- ; CHECK-GI-NEXT: mul x0, x8, x9
479
- ; CHECK-GI-NEXT: ret
437
+ ; CHECK-LABEL: mulv_v2i64:
438
+ ; CHECK: // %bb.0: // %entry
439
+ ; CHECK-NEXT: mov x8, v0.d[1]
440
+ ; CHECK-NEXT: fmov x9, d0
441
+ ; CHECK-NEXT: mul x0, x9, x8
442
+ ; CHECK-NEXT: ret
480
443
entry:
481
444
%arg1 = call i64 @llvm.vector.reduce.mul.v2i64 (<2 x i64 > %a )
482
445
ret i64 %arg1
@@ -522,14 +485,12 @@ define i64 @mulv_v4i64(<4 x i64> %a) {
522
485
;
523
486
; CHECK-GI-LABEL: mulv_v4i64:
524
487
; CHECK-GI: // %bb.0: // %entry
525
- ; CHECK-GI-NEXT: mov d2, v0.d[1]
526
- ; CHECK-GI-NEXT: mov d3, v1.d[1]
527
- ; CHECK-GI-NEXT: fmov x8, d0
528
- ; CHECK-GI-NEXT: fmov x9, d2
529
- ; CHECK-GI-NEXT: fmov x10, d3
530
- ; CHECK-GI-NEXT: mul x8, x8, x9
531
- ; CHECK-GI-NEXT: fmov x9, d1
532
- ; CHECK-GI-NEXT: mul x9, x9, x10
488
+ ; CHECK-GI-NEXT: mov x8, v0.d[1]
489
+ ; CHECK-GI-NEXT: fmov x10, d0
490
+ ; CHECK-GI-NEXT: mov x9, v1.d[1]
491
+ ; CHECK-GI-NEXT: mul x8, x10, x8
492
+ ; CHECK-GI-NEXT: fmov x10, d1
493
+ ; CHECK-GI-NEXT: mul x9, x10, x9
533
494
; CHECK-GI-NEXT: mul x0, x8, x9
534
495
; CHECK-GI-NEXT: ret
535
496
entry:
0 commit comments