Files
clang-p2996/llvm/test/CodeGen/RISCV/machineoutliner-jumptable.mir
Yvan Roux 261cbe98c3 [RISCV] Fix Machine Outliner jump table handling.
Don't outline machine instructions which are using jump table indexes
since they are materialized as local labels (like the already handled
case of constant pools).

Reviewed By: paquette

Differential Revision: https://reviews.llvm.org/D109436
2021-09-09 07:32:30 +02:00

66 lines
1.9 KiB
YAML

# RUN: llc -march=riscv32 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
# RUN: | FileCheck -check-prefix=RV32I-MO %s
# RUN: llc -march=riscv64 -x mir -run-pass=machine-outliner -simplify-mir -verify-machineinstrs < %s \
# RUN: | FileCheck -check-prefix=RV64I-MO %s
--- |
; Cannot outline instructions with jump-table index operands
define i32 @foo(i32 %a, i32 %b) #0 { ret i32 0 }
...
---
name: foo
tracksRegLiveness: true
jumpTable:
kind: block-address
entries:
- id: 0
blocks: [ '%bb.0', '%bb.1', '%bb.2', '%bb.3' ]
body: |
bb.0:
liveins: $x10, $x11
; RV32I-MO-LABEL: name: foo
; RV32I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
; RV32I-MO: $x12 = LUI target-flags(riscv-hi) %jump-table.0
; RV32I-MO: $x12 = ADDI $x12, target-flags(riscv-lo) %jump-table.0
;
; RV64I-MO-LABEL: name: foo
; RV64I-MO: $x5 = PseudoCALLReg {{.*}} @OUTLINED_FUNCTION_0
; RV64I-MO: $x12 = LUI target-flags(riscv-hi) %jump-table.0
; RV64I-MO: $x12 = ADDI $x12, target-flags(riscv-lo) %jump-table.0
$x11 = ORI $x11, 1023
$x12 = ADDI $x10, 17
$x11 = AND $x12, $x11
$x10 = SUB $x10, $x11
$x12 = LUI target-flags(riscv-hi) %jump-table.0
$x12 = ADDI $x12, target-flags(riscv-lo) %jump-table.0
PseudoBR %bb.3
bb.1:
liveins: $x10, $x11
$x11 = ORI $x11, 1023
$x12 = ADDI $x10, 17
$x11 = AND $x12, $x11
$x10 = SUB $x10, $x11
$x12 = LUI target-flags(riscv-hi) %jump-table.0
$x12 = ADDI $x12, target-flags(riscv-lo) %jump-table.0
PseudoBR %bb.3
bb.2:
liveins: $x10, $x11
$x11 = ORI $x11, 1023
$x12 = ADDI $x10, 17
$x11 = AND $x12, $x11
$x10 = SUB $x10, $x11
$x12 = LUI target-flags(riscv-hi) %jump-table.0
$x12 = ADDI $x12, target-flags(riscv-lo) %jump-table.0
PseudoBR %bb.3
bb.3:
PseudoRET
...