llvm-project/llvm/test/CodeGen/RISCV/machine-copyprop-simplifyinstruction.mir
Philip Reames e723e15db1
[MCP] Handle iterative simplification during forward copy prop (#140267)
This is the follow up I mentioned doing in the review of 52b345d. That
change introduced an API for performing instruction simplifications
following copy propagation (e.g. things like recognizing ORI a0, a1,
zero is just a move). As noted in that review, we should be able to
perform iterative simplification as we move forward through the block,
but weren't because of the code structure.

The majority of this code is just deleting the special casing for
constant source and destination tracking, and merging the copy handling
with the main path. By assumption, the properties of copies (in terms of
register reads and writes), must be a subset of general instructions.

Once we do that, the iterative bit basically falls out from having the
tracking performed for copies which are recognized *after* we forward
prior uses.
2025-06-02 11:21:41 -07:00

829 lines
19 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
# RUN: llc -o - %s -mtriple=riscv64 -run-pass=machine-cp -mcp-use-is-copy-instr | FileCheck %s
# Check that instruction simplifications expected to be performed after
# machine copy propagation are done.
---
name: add1
body: |
bb.0:
; CHECK-LABEL: name: add1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = ADD renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: add2
body: |
bb.0:
; CHECK-LABEL: name: add2
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = ADD $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: or1
body: |
bb.0:
; CHECK-LABEL: name: or1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = OR renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: or2
body: |
bb.0:
; CHECK-LABEL: name: or2
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = OR $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: xor1
body: |
bb.0:
; CHECK-LABEL: name: xor1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = XOR renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: xor2
body: |
bb.0:
; CHECK-LABEL: name: xor2
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = XOR $x0, renamable $x11
PseudoRET implicit $x10
...
---
---
name: xor3
body: |
bb.0:
; CHECK-LABEL: name: xor3
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = XOR renamable $x11, renamable $x11
PseudoRET implicit $x10
...
---
name: addw1
body: |
bb.0:
; CHECK-LABEL: name: addw1
; CHECK: renamable $x10 = ADDIW $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ADDW renamable $x11, $x12
PseudoRET implicit $x10
...
---
name: addw2
body: |
bb.0:
; CHECK-LABEL: name: addw2
; CHECK: renamable $x10 = ADDIW $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ADDW $x12, renamable $x11
PseudoRET implicit $x10
...
---
name: sub
body: |
bb.0:
; CHECK-LABEL: name: sub
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SUB renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: subw
body: |
bb.0:
; CHECK-LABEL: name: subw
; CHECK: renamable $x10 = ADDIW $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SUBW renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sh1add1
body: |
bb.0:
; CHECK-LABEL: name: sh1add1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH1ADD $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sh1add2
body: |
bb.0:
; CHECK-LABEL: name: sh1add2
; CHECK: renamable $x10 = SLLI $x12, 1
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH1ADD renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sh1add.uw1
body: |
bb.0:
; CHECK-LABEL: name: sh1add.uw1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH1ADD_UW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sh1add.uw2
body: |
bb.0:
; CHECK-LABEL: name: sh1add.uw2
; CHECK: renamable $x10 = SLLI_UW $x12, 1
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH1ADD_UW renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sh2add1
body: |
bb.0:
; CHECK-LABEL: name: sh2add1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH2ADD $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sh2add2
body: |
bb.0:
; CHECK-LABEL: name: sh2add2
; CHECK: renamable $x10 = SLLI $x12, 2
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH2ADD renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sh2add.uw1
body: |
bb.0:
; CHECK-LABEL: name: sh2add.uw1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH2ADD_UW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sh2add.uw2
body: |
bb.0:
; CHECK-LABEL: name: sh2add.uw2
; CHECK: renamable $x10 = SLLI_UW $x12, 2
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH2ADD_UW renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sh3add1
body: |
bb.0:
; CHECK-LABEL: name: sh3add1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH3ADD $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sh3add2
body: |
bb.0:
; CHECK-LABEL: name: sh3add2
; CHECK: renamable $x10 = SLLI $x12, 3
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH3ADD renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sh3add.uw1
body: |
bb.0:
; CHECK-LABEL: name: sh3add.uw1
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH3ADD_UW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sh3add.uw2
body: |
bb.0:
; CHECK-LABEL: name: sh3add.uw2
; CHECK: renamable $x10 = SLLI_UW $x12, 3
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SH3ADD_UW renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: andi
body: |
bb.0:
; CHECK-LABEL: name: andi
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ANDI renamable $x11, 13
PseudoRET implicit $x10
...
---
name: and1
body: |
bb.0:
; CHECK-LABEL: name: and1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = AND renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: and2
body: |
bb.0:
; CHECK-LABEL: name: and2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = AND $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: mul1
body: |
bb.0:
; CHECK-LABEL: name: mul1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MUL renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: mul2
body: |
bb.0:
; CHECK-LABEL: name: mul2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MUL $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: mulh1
body: |
bb.0:
; CHECK-LABEL: name: mulh1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULH renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: mulh2
body: |
bb.0:
; CHECK-LABEL: name: mulh2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULH $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: mulhsu1
body: |
bb.0:
; CHECK-LABEL: name: mulhsu1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULHSU renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: mulhsu2
body: |
bb.0:
; CHECK-LABEL: name: mulhsu2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULHSU $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: mulhu1
body: |
bb.0:
; CHECK-LABEL: name: mulhu1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULHU renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: mulhu2
body: |
bb.0:
; CHECK-LABEL: name: mulhu2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULHU $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: mulw1
body: |
bb.0:
; CHECK-LABEL: name: mulw1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULW renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: mulw2
body: |
bb.0:
; CHECK-LABEL: name: mulw2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MULW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: slli
body: |
bb.0:
; CHECK-LABEL: name: slli
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SLLI renamable $x11, 13
PseudoRET implicit $x10
...
---
name: srli
body: |
bb.0:
; CHECK-LABEL: name: srli
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SRLI renamable $x11, 13
PseudoRET implicit $x10
...
---
name: srai
body: |
bb.0:
; CHECK-LABEL: name: srai
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SRAI renamable $x11, 13
PseudoRET implicit $x10
...
---
name: slliw
body: |
bb.0:
; CHECK-LABEL: name: slliw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SLLIW renamable $x11, 13
PseudoRET implicit $x10
...
---
name: srliw
body: |
bb.0:
; CHECK-LABEL: name: srliw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SRLIW renamable $x11, 13
PseudoRET implicit $x10
...
---
name: sraiw
body: |
bb.0:
; CHECK-LABEL: name: sraiw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SRAIW renamable $x11, 13
PseudoRET implicit $x10
...
---
name: slli_uw
body: |
bb.0:
; CHECK-LABEL: name: slli_uw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SLLI_UW renamable $x11, 13
PseudoRET implicit $x10
...
---
name: ori
body: |
bb.0:
; CHECK-LABEL: name: ori
; CHECK: renamable $x10 = ADDI $x0, 13
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ORI renamable $x11, 13
PseudoRET implicit $x10
...
---
name: xori
body: |
bb.0:
; CHECK-LABEL: name: xori
; CHECK: renamable $x10 = ADDI $x0, 13
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = XORI renamable $x11, 13
PseudoRET implicit $x10
...
---
name: sltiu1
body: |
bb.0:
; CHECK-LABEL: name: sltiu1
; CHECK: renamable $x10 = ADDI $x0, 1
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SLTIU renamable $x11, 2
PseudoRET implicit $x10
...
---
name: sltiu2
body: |
bb.0:
; CHECK-LABEL: name: sltiu2
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SLTIU renamable $x11, 0
PseudoRET implicit $x10
...
---
name: sltu
body: |
bb.0:
; CHECK-LABEL: name: sltu
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SLTU renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: add.uw1
body: |
bb.0:
; CHECK-LABEL: name: add.uw1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ADD_UW renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: add.uw2
body: |
bb.0:
; CHECK-LABEL: name: add.uw2
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = ADD_UW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sext.h
body: |
bb.0:
; CHECK-LABEL: name: sext.h
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SEXT_H renamable $x11
PseudoRET implicit $x10
...
---
name: sext.b
body: |
bb.0:
; CHECK-LABEL: name: sext.b
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = SEXT_B renamable $x11
PseudoRET implicit $x10
...
---
name: zext.h.rv32
body: |
bb.0:
; CHECK-LABEL: name: zext.h.rv32
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ZEXT_H_RV32 renamable $x11
PseudoRET implicit $x10
...
---
name: zext.h.rv64
body: |
bb.0:
; CHECK-LABEL: name: zext.h.rv64
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x0
renamable $x10 = ZEXT_H_RV64 renamable $x11
PseudoRET implicit $x10
...
---
name: sll1
body: |
bb.0:
; CHECK-LABEL: name: sll1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SLL $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sll2
body: |
bb.0:
; CHECK-LABEL: name: sll2
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SLL renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sr11
body: |
bb.0:
; CHECK-LABEL: name: sr11
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SRL $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sr12
body: |
bb.0:
; CHECK-LABEL: name: sr12
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SRL renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sra1
body: |
bb.0:
; CHECK-LABEL: name: sra1
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SRA $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sra2
body: |
bb.0:
; CHECK-LABEL: name: sra2
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SRA renamable $x11, $x0
PseudoRET implicit $x10
...
---
name: sllw
body: |
bb.0:
; CHECK-LABEL: name: sllw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SLLW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: srlw
body: |
bb.0:
; CHECK-LABEL: name: srlw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SRLW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: sraw
body: |
bb.0:
; CHECK-LABEL: name: sraw
; CHECK: renamable $x10 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = SRAW $x0, renamable $x11
PseudoRET implicit $x10
...
---
name: min
body: |
bb.0:
; CHECK-LABEL: name: min
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MIN renamable $x11, renamable $x11
PseudoRET implicit $x10
...
---
name: minu
body: |
bb.0:
; CHECK-LABEL: name: minu
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MINU renamable $x11, renamable $x11
PseudoRET implicit $x10
...
---
name: max
body: |
bb.0:
; CHECK-LABEL: name: max
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MAX renamable $x11, renamable $x11
PseudoRET implicit $x10
...
---
name: maxu
body: |
bb.0:
; CHECK-LABEL: name: maxu
; CHECK: renamable $x10 = ADDI $x12, 0
; CHECK-NEXT: PseudoRET implicit $x10
renamable $x11 = COPY $x12
renamable $x10 = MAXU renamable $x11, renamable $x11
PseudoRET implicit $x10
...
---
name: multipass
body: |
bb.0:
; CHECK-LABEL: name: multipass
; CHECK: renamable $x9 = ADDI $x0, 0
; CHECK-NEXT: PseudoRET implicit $x9
renamable $x11 = COPY $x0
renamable $x10 = SLLI renamable $x11, 13
renamable $x9 = SRLI renamable $x10, 13
PseudoRET implicit $x9
...
---
name: beq
body: |
; CHECK-LABEL: name: beq
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: renamable $x11 = COPY $x12
; CHECK-NEXT: BEQ $x12, $x0, %bb.1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: PseudoRET
bb.0:
renamable $x11 = COPY $x12
BEQ $x0, renamable $x11, %bb.1
bb.1:
PseudoRET
...
---
name: bne
body: |
; CHECK-LABEL: name: bne
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: renamable $x11 = COPY $x12
; CHECK-NEXT: BNE $x12, $x0, %bb.1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: PseudoRET
bb.0:
renamable $x11 = COPY $x12
BNE $x0, renamable $x11, %bb.1
bb.1:
PseudoRET
...
---
name: bltu
body: |
; CHECK-LABEL: name: bltu
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: renamable $x11 = COPY $x12
; CHECK-NEXT: BNE $x12, $x0, %bb.1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: PseudoRET
bb.0:
renamable $x11 = COPY $x12
BLTU $x0, renamable $x11, %bb.1
bb.1:
PseudoRET
...
---
name: bgeu
body: |
; CHECK-LABEL: name: bgeu
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: renamable $x11 = COPY $x12
; CHECK-NEXT: BEQ $x12, $x0, %bb.1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: PseudoRET
bb.0:
renamable $x11 = COPY $x12
BGEU $x0, renamable $x11, %bb.1
bb.1:
PseudoRET
...