blob: 32574eb0c25d49754b1623073be7b4f3d614bf23 [file] [edit]
# 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
...