1*9880d681SAndroid Build Coastguard Worker# RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker# This test ensures that the MIR parser parses global value operands correctly. 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker--- | 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker @G = external global i32 7*9880d681SAndroid Build Coastguard Worker @0 = external global i32 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker define i32 @inc() { 10*9880d681SAndroid Build Coastguard Worker entry: 11*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @G 12*9880d681SAndroid Build Coastguard Worker %b = add i32 %a, 1 13*9880d681SAndroid Build Coastguard Worker ret i32 %b 14*9880d681SAndroid Build Coastguard Worker } 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker define i32 @inc2() { 17*9880d681SAndroid Build Coastguard Worker entry: 18*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @0 19*9880d681SAndroid Build Coastguard Worker %b = add i32 %a, 1 20*9880d681SAndroid Build Coastguard Worker ret i32 %b 21*9880d681SAndroid Build Coastguard Worker } 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker @.$0 = external global i32 24*9880d681SAndroid Build Coastguard Worker @-_- = external global i32 25*9880d681SAndroid Build Coastguard Worker @_-_a = external global i32 26*9880d681SAndroid Build Coastguard Worker @$.-B = external global i32 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker define i32 @test() { 29*9880d681SAndroid Build Coastguard Worker entry: 30*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @.$0 31*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @-_- 32*9880d681SAndroid Build Coastguard Worker %b = load i32, i32* @_-_a 33*9880d681SAndroid Build Coastguard Worker store i32 %b, i32* @$.-B 34*9880d681SAndroid Build Coastguard Worker ret i32 %b 35*9880d681SAndroid Build Coastguard Worker } 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker @"\01Hello@$%09 \\ World," = external global i32 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker define i32 @test2() { 40*9880d681SAndroid Build Coastguard Worker entry: 41*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @"\01Hello@$%09 \\ World," 42*9880d681SAndroid Build Coastguard Worker ret i32 %a 43*9880d681SAndroid Build Coastguard Worker } 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker define i32 @test3() { 46*9880d681SAndroid Build Coastguard Worker entry: 47*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @.$0 48*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* @-_- 49*9880d681SAndroid Build Coastguard Worker %b = load i32, i32* @_-_a 50*9880d681SAndroid Build Coastguard Worker store i32 %b, i32* @$.-B 51*9880d681SAndroid Build Coastguard Worker ret i32 %b 52*9880d681SAndroid Build Coastguard Worker } 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker define i32 @tf() { 55*9880d681SAndroid Build Coastguard Worker entry: 56*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @G 57*9880d681SAndroid Build Coastguard Worker %b = add i32 %a, 1 58*9880d681SAndroid Build Coastguard Worker ret i32 %b 59*9880d681SAndroid Build Coastguard Worker } 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker... 62*9880d681SAndroid Build Coastguard Worker--- 63*9880d681SAndroid Build Coastguard Worker# CHECK: name: inc 64*9880d681SAndroid Build Coastguard Workername: inc 65*9880d681SAndroid Build Coastguard Workerbody: | 66*9880d681SAndroid Build Coastguard Worker bb.0.entry: 67*9880d681SAndroid Build Coastguard Worker ; CHECK: %rax = MOV64rm %rip, 1, _, @G, _ 68*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @G, _ 69*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm %rax, 1, _, 0, _ 70*9880d681SAndroid Build Coastguard Worker %eax = INC32r %eax, implicit-def %eflags 71*9880d681SAndroid Build Coastguard Worker RETQ %eax 72*9880d681SAndroid Build Coastguard Worker... 73*9880d681SAndroid Build Coastguard Worker--- 74*9880d681SAndroid Build Coastguard Worker# CHECK: name: inc2 75*9880d681SAndroid Build Coastguard Workername: inc2 76*9880d681SAndroid Build Coastguard Workerbody: | 77*9880d681SAndroid Build Coastguard Worker bb.0.entry: 78*9880d681SAndroid Build Coastguard Worker ; CHECK: %rax = MOV64rm %rip, 1, _, @0, _ 79*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @0, _ 80*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm %rax, 1, _, 0, _ 81*9880d681SAndroid Build Coastguard Worker %eax = INC32r %eax, implicit-def %eflags 82*9880d681SAndroid Build Coastguard Worker RETQ %eax 83*9880d681SAndroid Build Coastguard Worker... 84*9880d681SAndroid Build Coastguard Worker--- 85*9880d681SAndroid Build Coastguard Workername: test 86*9880d681SAndroid Build Coastguard Workerbody: | 87*9880d681SAndroid Build Coastguard Worker bb.0.entry: 88*9880d681SAndroid Build Coastguard Worker ; CHECK: , @".$0", 89*9880d681SAndroid Build Coastguard Worker ; CHECK: , @-_-, 90*9880d681SAndroid Build Coastguard Worker ; CHECK: , @_-_a, 91*9880d681SAndroid Build Coastguard Worker ; CHECK: , @"$.-B", 92*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @.$0, _ 93*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm killed %rax, 1, _, 0, _ 94*9880d681SAndroid Build Coastguard Worker %rcx = MOV64rm %rip, 1, _, @-_-, _ 95*9880d681SAndroid Build Coastguard Worker MOV32mr killed %rcx, 1, _, 0, _, killed %eax 96*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @_-_a, _ 97*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm killed %rax, 1, _, 0, _ 98*9880d681SAndroid Build Coastguard Worker %rcx = MOV64rm %rip, 1, _, @$.-B, _ 99*9880d681SAndroid Build Coastguard Worker MOV32mr killed %rcx, 1, _, 0, _, %eax 100*9880d681SAndroid Build Coastguard Worker RETQ %eax 101*9880d681SAndroid Build Coastguard Worker... 102*9880d681SAndroid Build Coastguard Worker--- 103*9880d681SAndroid Build Coastguard Workername: test2 104*9880d681SAndroid Build Coastguard Workerbody: | 105*9880d681SAndroid Build Coastguard Worker bb.0.entry: 106*9880d681SAndroid Build Coastguard Worker ; CHECK: , @"\01Hello@$%09 \5C World,", 107*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @"\01Hello@$%09 \\ World,", _ 108*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm killed %rax, 1, _, 0, _ 109*9880d681SAndroid Build Coastguard Worker RETQ %eax 110*9880d681SAndroid Build Coastguard Worker... 111*9880d681SAndroid Build Coastguard Worker--- 112*9880d681SAndroid Build Coastguard Worker# CHECK: name: test3 113*9880d681SAndroid Build Coastguard Workername: test3 114*9880d681SAndroid Build Coastguard Workerbody: | 115*9880d681SAndroid Build Coastguard Worker bb.0.entry: 116*9880d681SAndroid Build Coastguard Worker ; CHECK: , @".$0", 117*9880d681SAndroid Build Coastguard Worker ; CHECK: , @-_-, 118*9880d681SAndroid Build Coastguard Worker ; CHECK: , @_-_a + 4, 119*9880d681SAndroid Build Coastguard Worker ; CHECK: , @"$.-B" - 8, 120*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @.$0 + 0, _ 121*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm killed %rax, 1, _, 0, _ 122*9880d681SAndroid Build Coastguard Worker %rcx = MOV64rm %rip, 1, _, @-_- - 0, _ 123*9880d681SAndroid Build Coastguard Worker MOV32mr killed %rcx, 1, _, 0, _, killed %eax 124*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, @_-_a + 4, _ 125*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm killed %rax, 1, _, 0, _ 126*9880d681SAndroid Build Coastguard Worker %rcx = MOV64rm %rip, 1, _, @$.-B - 8, _ 127*9880d681SAndroid Build Coastguard Worker MOV32mr killed %rcx, 1, _, 0, _, %eax 128*9880d681SAndroid Build Coastguard Worker RETQ %eax 129*9880d681SAndroid Build Coastguard Worker... 130*9880d681SAndroid Build Coastguard Worker--- 131*9880d681SAndroid Build Coastguard Worker# CHECK: name: tf 132*9880d681SAndroid Build Coastguard Workername: tf 133*9880d681SAndroid Build Coastguard Workerbody: | 134*9880d681SAndroid Build Coastguard Worker bb.0.entry: 135*9880d681SAndroid Build Coastguard Worker ; CHECK: %rax = MOV64rm %rip, 1, _, target-flags(x86-gotpcrel) @G, _ 136*9880d681SAndroid Build Coastguard Worker %rax = MOV64rm %rip, 1, _, target-flags(x86-gotpcrel) @G, _ 137*9880d681SAndroid Build Coastguard Worker %eax = MOV32rm %rax, 1, _, 0, _ 138*9880d681SAndroid Build Coastguard Worker %eax = INC32r %eax, implicit-def %eflags 139*9880d681SAndroid Build Coastguard Worker RETQ %eax 140*9880d681SAndroid Build Coastguard Worker... 141