xref: /aosp_15_r20/external/llvm/test/CodeGen/MIR/X86/global-value-operands.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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