104 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=aarch64 -run-pass machinelicm -verify-machineinstrs -o - %s | FileCheck %s3# RUN: llc -mtriple=aarch64 -passes machinelicm -o - %s | FileCheck %s4 5---6name: unsafe_to_move7tracksRegLiveness: true8body: |9 ; CHECK-LABEL: name: unsafe_to_move10 ; CHECK: bb.0:11 ; CHECK-NEXT: successors: %bb.1(0x80000000)12 ; CHECK-NEXT: liveins: $x013 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: $x16 = COPY killed $x015 ; CHECK-NEXT: B %bb.116 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: bb.1:18 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)19 ; CHECK-NEXT: liveins: $x1620 ; CHECK-NEXT: {{ $}}21 ; CHECK-NEXT: $x1 = COPY killed $x1622 ; CHECK-NEXT: $x2 = MOVi64imm 1024, implicit-def dead $x1623 ; CHECK-NEXT: $x16 = LDRXroX killed $x1, killed $x2, 0, 024 ; CHECK-NEXT: $xzr = SUBSXri $x16, 0, 0, implicit-def $nzcv25 ; CHECK-NEXT: Bcc 1, %bb.1, implicit $nzcv26 ; CHECK-NEXT: B %bb.227 ; CHECK-NEXT: {{ $}}28 ; CHECK-NEXT: bb.2:29 ; CHECK-NEXT: liveins: $x130 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: $x0 = COPY killed $x132 ; CHECK-NEXT: RET_ReallyLR33 bb.0:34 liveins: $x035 $x16 = COPY killed $x036 B %bb.137 38 bb.1:39 liveins: $x1640 $x1 = COPY killed $x1641 /* MOVi64imm below mimics a pseudo instruction that doesn't have any */42 /* unmodelled side effects, but uses x16 as a scratch register. */43 $x2 = MOVi64imm 1024, implicit-def dead $x1644 $x16 = LDRXroX killed $x1, killed $x2, 0, 045 $xzr = SUBSXri $x16, 0, 0, implicit-def $nzcv46 Bcc 1, %bb.1, implicit $nzcv47 B %bb.248 49 bb.2:50 liveins: $x151 $x0 = COPY killed $x152 RET_ReallyLR53...54 55---56name: dead_implicit_def57tracksRegLiveness: true58body: |59 ; CHECK-LABEL: name: dead_implicit_def60 ; CHECK: bb.0:61 ; CHECK-NEXT: successors: %bb.1(0x80000000)62 ; CHECK-NEXT: liveins: $x063 ; CHECK-NEXT: {{ $}}64 ; CHECK-NEXT: $x12 = COPY killed $x065 ; CHECK-NEXT: $x2 = MOVi64imm 1024, implicit-def dead $x1666 ; CHECK-NEXT: B %bb.167 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: bb.1:69 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)70 ; CHECK-NEXT: liveins: $x12, $x271 ; CHECK-NEXT: {{ $}}72 ; CHECK-NEXT: $x1 = COPY killed $x1273 ; CHECK-NEXT: $x16 = LDRXroX killed $x1, $x2, 0, 074 ; CHECK-NEXT: $xzr = SUBSXri $x16, 0, 0, implicit-def $nzcv75 ; CHECK-NEXT: Bcc 1, %bb.1, implicit $nzcv76 ; CHECK-NEXT: B %bb.277 ; CHECK-NEXT: {{ $}}78 ; CHECK-NEXT: bb.2:79 ; CHECK-NEXT: liveins: $x180 ; CHECK-NEXT: {{ $}}81 ; CHECK-NEXT: $x0 = COPY killed $x182 ; CHECK-NEXT: RET_ReallyLR83 bb.0:84 liveins: $x085 $x12 = COPY killed $x086 B %bb.187 88 bb.1:89 liveins: $x1290 $x1 = COPY killed $x1291 /* MOVi64imm below mimics a pseudo instruction that doesn't have any */92 /* unmodelled side effects, but uses x16 as a scratch register. */93 $x2 = MOVi64imm 1024, implicit-def dead $x1694 $x16 = LDRXroX killed $x1, killed $x2, 0, 095 $xzr = SUBSXri $x16, 0, 0, implicit-def $nzcv96 Bcc 1, %bb.1, implicit $nzcv97 B %bb.298 99 bb.2:100 liveins: $x1101 $x0 = COPY killed $x1102 RET_ReallyLR103...104