1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
2 # This test ensures that the MIR parser parses the block address operands
7 @addr = global i8* null
11 store volatile i8* blockaddress(@test, %block), i8** @addr
12 %val = load volatile i8*, i8** @addr
13 indirectbr i8* %val, [label %block]
19 define void @test2() {
21 store volatile i8* blockaddress(@test2, %"quoted block"), i8** @addr
22 %val = load volatile i8*, i8** @addr
23 indirectbr i8* %val, [label %"quoted block"]
29 define void @test3() {
31 store volatile i8* blockaddress(@test3, %0), i8** @addr
32 %val = load volatile i8*, i8** @addr
33 indirectbr i8* %val, [label %0]
44 successors: [ '%bb.1.block' ]
46 # CHECK: %rax = LEA64r %rip, 1, _, blockaddress(@test, %ir-block.block), _
47 - '%rax = LEA64r %rip, 1, _, blockaddress(@test, %ir-block.block), _'
48 - 'MOV64mr %rip, 1, _, @addr, _, killed %rax'
49 - 'JMP64m %rip, 1, _, @addr, _'
58 tracksRegLiveness: true
62 successors: [ '%bb.1' ]
64 # CHECK: %rax = LEA64r %rip, 1, _, blockaddress(@test2, %ir-block."quoted block"), _
65 - '%rax = LEA64r %rip, 1, _, blockaddress(@test2, %ir-block."quoted block"), _'
66 - 'MOV64mr %rip, 1, _, @addr, _, killed %rax'
67 - 'JMP64m %rip, 1, _, @addr, _'
75 tracksRegLiveness: true
79 successors: [ '%bb.1' ]
81 # CHECK: %rax = LEA64r %rip, 1, _, blockaddress(@test3, %ir-block.0), _
82 - '%rax = LEA64r %rip, 1, _, blockaddress(@test3, %ir-block.0), _'
83 - 'MOV64mr %rip, 1, _, @addr, _, killed %rax'
84 - 'JMP64m %rip, 1, _, @addr, _'