| # 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 |
| ... |