@@ -100,9 +100,8 @@ body: |
100
100
; CHECK: liveins: $w0, $w1
101
101
; CHECK-NEXT: {{ $}}
102
102
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
103
- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = nuw G_TRUNC [[COPY]](s64)
104
- ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s32)
105
- ; CHECK-NEXT: $x1 = COPY [[SEXT]](s64)
103
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
104
+ ; CHECK-NEXT: $x1 = COPY [[SEXT_INREG]](s64)
106
105
%0:_(s64) = COPY $x0
107
106
%2:_(s32) = nuw G_TRUNC %0
108
107
%3:_(s64) = G_SEXT %2
@@ -117,9 +116,8 @@ body: |
117
116
; CHECK: liveins: $w0, $w1
118
117
; CHECK-NEXT: {{ $}}
119
118
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
120
- ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)
121
- ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s32)
122
- ; CHECK-NEXT: $x1 = COPY [[SEXT]](s64)
119
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
120
+ ; CHECK-NEXT: $x1 = COPY [[SEXT_INREG]](s64)
123
121
%0:_(s64) = COPY $x0
124
122
%2:_(s32) = G_TRUNC %0
125
123
%3:_(s64) = G_SEXT %2
@@ -372,3 +370,150 @@ body: |
372
370
%3:_(s32) = G_SEXT %2
373
371
$w1 = COPY %3
374
372
...
373
+ ---
374
+ name : trunc_sext_i32_i16
375
+ tracksRegLiveness : true
376
+ body : |
377
+ bb.0:
378
+ liveins: $w0
379
+
380
+ ; CHECK-LABEL: name: trunc_sext_i32_i16
381
+ ; CHECK: liveins: $w0
382
+ ; CHECK-NEXT: {{ $}}
383
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
384
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16
385
+ ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)
386
+ %0:_(s32) = COPY $w0
387
+ %1:_(s16) = G_TRUNC %0
388
+ %2:_(s32) = G_SEXT %1
389
+ $w0 = COPY %2
390
+ ...
391
+ ---
392
+ name : trunc_sext_i32_i1
393
+ tracksRegLiveness : true
394
+ body : |
395
+ bb.0:
396
+ liveins: $w0
397
+
398
+ ; CHECK-LABEL: name: trunc_sext_i32_i1
399
+ ; CHECK: liveins: $w0
400
+ ; CHECK-NEXT: {{ $}}
401
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
402
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
403
+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1)
404
+ ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
405
+ %0:_(s32) = COPY $w0
406
+ %1:_(s1) = G_TRUNC %0
407
+ %2:_(s32) = G_SEXT %1
408
+ $w0 = COPY %2
409
+ ...
410
+ ---
411
+ name : trunc_sext_i32_i2
412
+ tracksRegLiveness : true
413
+ body : |
414
+ bb.0:
415
+ liveins: $w0
416
+
417
+ ; CHECK-LABEL: name: trunc_sext_i32_i2
418
+ ; CHECK: liveins: $w0
419
+ ; CHECK-NEXT: {{ $}}
420
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
421
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s2) = G_TRUNC [[COPY]](s32)
422
+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s2)
423
+ ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
424
+ %0:_(s32) = COPY $w0
425
+ %1:_(s2) = G_TRUNC %0
426
+ %2:_(s32) = G_SEXT %1
427
+ $w0 = COPY %2
428
+ ...
429
+ ---
430
+ name : trunc_sext_i32_i8
431
+ tracksRegLiveness : true
432
+ body : |
433
+ bb.0:
434
+ liveins: $w0
435
+
436
+ ; CHECK-LABEL: name: trunc_sext_i32_i8
437
+ ; CHECK: liveins: $w0
438
+ ; CHECK-NEXT: {{ $}}
439
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
440
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8
441
+ ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)
442
+ %0:_(s32) = COPY $w0
443
+ %1:_(s8) = G_TRUNC %0
444
+ %2:_(s32) = G_SEXT %1
445
+ $w0 = COPY %2
446
+ ...
447
+ ---
448
+ name : trunc_sext_i64_i32
449
+ tracksRegLiveness : true
450
+ body : |
451
+ bb.0:
452
+ liveins: $w0, $w1
453
+
454
+ ; CHECK-LABEL: name: trunc_sext_i64_i32
455
+ ; CHECK: liveins: $w0, $w1
456
+ ; CHECK-NEXT: {{ $}}
457
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
458
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32
459
+ ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](s64)
460
+ %0:_(s64) = COPY $x0
461
+ %1:_(s32) = G_TRUNC %0
462
+ %2:_(s64) = G_SEXT %1
463
+ $x0 = COPY %2
464
+ ...
465
+ ---
466
+ name : trunc_sext_v2i32_v2i16
467
+ tracksRegLiveness : true
468
+ body : |
469
+ bb.0:
470
+ liveins: $w0, $w1
471
+
472
+ ; CHECK-LABEL: name: trunc_sext_v2i32_v2i16
473
+ ; CHECK: liveins: $w0, $w1
474
+ ; CHECK-NEXT: {{ $}}
475
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $x0
476
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<2 x s32>) = G_SEXT_INREG [[COPY]], 16
477
+ ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](<2 x s32>)
478
+ %0:_(<2 x s32>) = COPY $x0
479
+ %1:_(<2 x s16>) = G_TRUNC %0
480
+ %2:_(<2 x s32>) = G_SEXT %1
481
+ $x0 = COPY %2
482
+ ...
483
+ ---
484
+ name : trunc_sext_v4i16_v4i8
485
+ tracksRegLiveness : true
486
+ body : |
487
+ bb.0:
488
+ liveins: $w0, $w1
489
+
490
+ ; CHECK-LABEL: name: trunc_sext_v4i16_v4i8
491
+ ; CHECK: liveins: $w0, $w1
492
+ ; CHECK-NEXT: {{ $}}
493
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $x0
494
+ ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<4 x s16>) = G_SEXT_INREG [[COPY]], 8
495
+ ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](<4 x s16>)
496
+ %0:_(<4 x s16>) = COPY $x0
497
+ %1:_(<4 x s8>) = G_TRUNC %0
498
+ %2:_(<4 x s16>) = G_SEXT %1
499
+ $x0 = COPY %2
500
+ ...
501
+ ---
502
+ name : trunc_sext_mismatching_types
503
+ tracksRegLiveness : true
504
+ body : |
505
+ bb.0:
506
+ liveins: $w0, $w1
507
+
508
+ ; CHECK-LABEL: name: trunc_sext_mismatching_types
509
+ ; CHECK: liveins: $w0, $w1
510
+ ; CHECK-NEXT: {{ $}}
511
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
512
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s64)
513
+ ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)
514
+ ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)
515
+ %0:_(s64) = COPY $x0
516
+ %1:_(s16) = G_TRUNC %0
517
+ %2:_(s32) = G_SEXT %1
518
+ $w0 = COPY %2
519
+ ...
0 commit comments