mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
a21f959530
This is a branch opcode that takes a jump table pointer, jump table index and an index into the table to do an indirect branch. We pass both the table pointer and JTI to allow targets like ARM64 to more easily use the existing jump table compression optimization without having to walk up the block to find a paired G_JUMP_TABLE. Differential Revision: https://reviews.llvm.org/D63159 llvm-svn: 363434
31 lines
780 B
YAML
31 lines
780 B
YAML
# RUN: not llc -march=aarch64 -o /dev/null -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
|
|
# REQUIRES: global-isel, aarch64-registered-target
|
|
|
|
---
|
|
name: test_jump_table
|
|
legalized: true
|
|
tracksRegLiveness: true
|
|
jumpTable:
|
|
kind: block-address
|
|
entries:
|
|
- id: 0
|
|
blocks: [ '%bb.0' ]
|
|
body: |
|
|
bb.0:
|
|
liveins: $x0
|
|
%0:_(s64) = COPY $x0
|
|
%1:_(p0) = COPY $x0
|
|
; CHECK: Bad machine code: Too few operands
|
|
G_BRJT
|
|
|
|
; CHECK: G_BRJT src operand 0 must be a pointer type
|
|
G_BRJT %0, %jump-table.0, %0
|
|
|
|
; CHECK: G_BRJT src operand 1 must be a jump table index
|
|
G_BRJT %1, %0, %0
|
|
|
|
; CHECK: G_BRJT src operand 2 must be a scalar reg type
|
|
G_BRJT %1, %jump-table.0, %1
|
|
|
|
...
|