blob: 3d69de99475c163e0bfec8d405a164a3994325aa [file] [edit]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -mtriple=arm64-apple-ios -mattr=+cmpbr -run-pass=aarch64-ccmp -aarch64-stress-ccmp -verify-machineinstrs -simplify-mir -o - %s | FileCheck %s
---
name: cc_eq
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_eq
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 4, 1, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 0, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 0, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 0, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_ne
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_ne
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 0, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 1, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 1, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 1, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_hs
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_hs
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 2, 3, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 2, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 2, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 2, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_lo
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_lo
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 2, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 3, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 3, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 3, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_hi
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_hi
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 2, 9, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 8, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 8, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 8, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_ls
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_ls
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 8, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 9, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 9, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 9, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_ge
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_ge
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 11, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 10, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 10, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 10, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_lt
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_lt
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 8, 10, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 11, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 11, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 11, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_gt
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_gt
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 13, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 12, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 12, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 12, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_le
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_le
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 4, 12, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 13, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 13, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 13, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cc_mixed_lo_gt
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cc_mixed_lo_gt
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 2, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 12, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 3, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 12, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: head_targets_cmpbb
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: head_targets_cmpbb
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 10, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 12, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 10, %0, %1, %bb.1
B %bb.3
bb.1:
successors: %bb.2, %bb.3
CBWPrr 12, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cbb_chain
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cbb_chain
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 4, 1, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 0, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBBAssertExt 0, %0, %1, %bb.3, -1, -1
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBBAssertExt 0, %2, %3, %bb.3, -1, -1
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cbh_chain
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cbh_chain
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: $wzr = SUBSWrr [[COPY]], [[COPY1]], implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 0, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 1, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBHAssertExt 1, %0, %1, %bb.3, -1, -1
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBHAssertExt 1, %2, %3, %bb.3, -1, -1
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cbb_head_zext
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cbb_head_zext
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: [[ANDWri:%[0-9]+]]:gpr32common = ANDWri [[COPY]], 7
; CHECK-NEXT: $wzr = SUBSWrx [[ANDWri]], [[COPY1]], 0, implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 3, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 12, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBBAssertExt 2, %0, %1, %bb.3, 0, 0
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 12, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cbh_head_sext
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cbh_head_sext
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.2(0x20000000)
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: [[SBFMWri:%[0-9]+]]:gpr32common = SBFMWri [[COPY]], 0, 15
; CHECK-NEXT: $wzr = SUBSWrx [[SBFMWri]], [[COPY1]], 40, implicit-def $nzcv
; CHECK-NEXT: CCMPWr [[COPY2]], [[COPY3]], 0, 13, implicit-def $nzcv, implicit $nzcv
; CHECK-NEXT: Bcc 10, %bb.3, implicit $nzcv
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBHAssertExt 12, %0, %1, %bb.3, 5, 5
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBWPrr 10, %2, %3, %bb.3
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cbb_cmpbb_sext_reject
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cbb_cmpbb_sext_reject
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1, %bb.3
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: CBWPrr 0, [[COPY]], [[COPY1]], %bb.3
; CHECK-NEXT: B %bb.1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: successors: %bb.2, %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: CBBAssertExt 1, [[COPY2]], [[COPY3]], %bb.3, 4, 4
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 0, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBBAssertExt 1, %2, %3, %bb.3, 4, 4
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...
---
name: cbh_cmpbb_zext_reject
alignment: 4
tracksRegLiveness: true
isSSA: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32 }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
liveins:
- { reg: '$w0', virtual-reg: '%0' }
- { reg: '$w1', virtual-reg: '%1' }
- { reg: '$w2', virtual-reg: '%2' }
- { reg: '$w3', virtual-reg: '%3' }
body: |
; CHECK-LABEL: name: cbh_cmpbb_zext_reject
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1, %bb.3
; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2
; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32 = COPY $w3
; CHECK-NEXT: CBWPrr 0, [[COPY]], [[COPY1]], %bb.3
; CHECK-NEXT: B %bb.1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: successors: %bb.2, %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: CBHAssertExt 8, [[COPY2]], [[COPY3]], %bb.3, 1, 1
; CHECK-NEXT: B %bb.2
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: B %bb.3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3:
; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 7
; CHECK-NEXT: $w0 = COPY [[MOVi32imm]]
; CHECK-NEXT: RET_ReallyLR implicit $w0
bb.0:
successors: %bb.1, %bb.3
liveins: $w0, $w1, $w2, $w3
%0:gpr32 = COPY $w0
%1:gpr32 = COPY $w1
%2:gpr32 = COPY $w2
%3:gpr32 = COPY $w3
CBWPrr 0, %0, %1, %bb.3
B %bb.1
bb.1:
successors: %bb.2, %bb.3
CBHAssertExt 8, %2, %3, %bb.3, 1, 1
B %bb.2
bb.2:
successors: %bb.3
B %bb.3
bb.3:
%4:gpr32 = MOVi32imm 7
$w0 = COPY %4
RET_ReallyLR implicit $w0
...