| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 |
| # RUN: llc -mtriple=aarch64 -run-pass=aarch64-srlt-define-superregs -enable-subreg-liveness -o - %s | FileCheck %s |
| --- | |
| target triple = "aarch64" |
| |
| define void @test_implicit_def_w1_to_x1() { entry: unreachable } |
| define void @test_implicit_def_dead_w1_to_dead_x1() { entry: unreachable } |
| define void @test_implicit_def_d0_to_q0_and_d1_to_q1() { entry: unreachable } |
| define void @test_implicit_def_d0_d1_d2_to_q0_q1_q2() { entry: unreachable } |
| define void @test_implicit_def_d0_d1_d2_to_z0_z1_z2_with_sve() "target-features"="+sve" { entry: unreachable } |
| |
| --- |
| name: test_implicit_def_w1_to_x1 |
| isSSA: false |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $x1 |
| |
| ; CHECK-LABEL: name: test_implicit_def_w1_to_x1 |
| ; CHECK: liveins: $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: renamable $x0 = COPY $x1 |
| ; CHECK-NEXT: renamable $w1 = ORRWrr $wzr, renamable $w0, implicit-def renamable $x1 |
| ; CHECK-NEXT: RET_ReallyLR implicit $x1, implicit $x0 |
| renamable $x0 = COPY $x1 |
| renamable $w1 = ORRWrr $wzr, renamable $w0 |
| RET_ReallyLR implicit $x1, implicit $x0 |
| ... |
| --- |
| name: test_implicit_def_dead_w1_to_dead_x1 |
| isSSA: false |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $x1 |
| |
| ; CHECK-LABEL: name: test_implicit_def_dead_w1_to_dead_x1 |
| ; CHECK: liveins: $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: renamable $x0 = COPY $x1 |
| ; CHECK-NEXT: dead renamable $w1 = ORRWrr $wzr, renamable $w0, implicit-def dead renamable $x1 |
| ; CHECK-NEXT: RET_ReallyLR implicit $x0 |
| renamable $x0 = COPY $x1 |
| dead renamable $w1 = ORRWrr $wzr, renamable $w0 |
| RET_ReallyLR implicit $x0 |
| ... |
| --- |
| name: test_implicit_def_d0_to_q0_and_d1_to_q1 |
| isSSA: false |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $d0, $d1, $x1 |
| |
| ; CHECK-LABEL: name: test_implicit_def_d0_to_q0_and_d1_to_q1 |
| ; CHECK: liveins: $d0, $d1, $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: early-clobber $x1, renamable $d0, renamable $d1 = LDPDpre renamable $x1, 16, implicit-def renamable $q0, implicit-def renamable $q1 :: (load (s64)) |
| ; CHECK-NEXT: STPDi renamable $d0, renamable $d1, renamable $x1, 0 :: (store (s64)) |
| ; CHECK-NEXT: RET undef $lr |
| early-clobber $x1, renamable $d0, renamable $d1 = LDPDpre renamable $x1, 16 :: (load (s64)) |
| STPDi renamable $d0, renamable $d1, renamable $x1, 0 :: (store (s64)) |
| RET undef $lr |
| ... |
| --- |
| name: test_implicit_def_d0_d1_d2_to_q0_q1_q2 |
| isSSA: false |
| tracksRegLiveness: true |
| machineFunctionInfo: {} |
| body: | |
| bb.0.entry: |
| liveins: $x0, $x1, $lr, $fp |
| |
| ; CHECK-LABEL: name: test_implicit_def_d0_d1_d2_to_q0_q1_q2 |
| ; CHECK: liveins: $x0, $x1, $lr, $fp |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: renamable $x0, renamable $d0_d1_d2 = LD3Threev8b_POST killed renamable $x0, $xzr, implicit-def renamable $q0_q1_q2 |
| ; CHECK-NEXT: FAKE_USE $x0 |
| ; CHECK-NEXT: FAKE_USE $d0_d1_d2 |
| ; CHECK-NEXT: RET undef $lr |
| renamable $x0, renamable $d0_d1_d2 = LD3Threev8b_POST killed renamable $x0, $xzr |
| FAKE_USE $x0 |
| FAKE_USE $d0_d1_d2 |
| RET undef $lr |
| ... |
| --- |
| name: test_implicit_def_d0_d1_d2_to_z0_z1_z2_with_sve |
| isSSA: false |
| tracksRegLiveness: true |
| machineFunctionInfo: {} |
| body: | |
| bb.0.entry: |
| liveins: $x0, $x1, $lr, $fp |
| |
| ; CHECK-LABEL: name: test_implicit_def_d0_d1_d2_to_z0_z1_z2_with_sve |
| ; CHECK: liveins: $x0, $x1, $lr, $fp |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: renamable $x0, renamable $d0_d1_d2 = LD3Threev8b_POST killed renamable $x0, $xzr, implicit-def renamable $z0_z1_z2 |
| ; CHECK-NEXT: FAKE_USE $x0 |
| ; CHECK-NEXT: FAKE_USE $d0_d1_d2 |
| ; CHECK-NEXT: RET undef $lr |
| renamable $x0, renamable $d0_d1_d2 = LD3Threev8b_POST killed renamable $x0, $xzr |
| FAKE_USE $x0 |
| FAKE_USE $d0_d1_d2 |
| RET undef $lr |
| ... |