llvm.org GIT mirror llvm / 3ff36b7
Switch abi-isel.ll to FileCheck; it's not much faster, but it now tests a lot more and is much nicer to the OS. - Dan, please check. If there are parts of the test you think I should strip out so it doesn't cause random failures let me know (there are still some PIC label numbers in it, for example). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80019 91177308-0d34-0410-b5e6-96231b3b80d8 Daniel Dunbar 11 years ago
1 changed file(s) with 7974 addition(s) and 167 deletion(s). Raw diff Collapse all Expand all
None ; RUN: llvm-as < %s | llc -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small > %t
1 ; RUN: grep leal %t | count 33
2 ; RUN: grep movl %t | count 239
3 ; RUN: grep addl %t | count 20
4 ; RUN: grep subl %t | count 14
5 ; RUN: not grep leaq %t
6 ; RUN: not grep movq %t
7 ; RUN: not grep addq %t
8 ; RUN: not grep subq %t
9 ; RUN: not grep movabs %t
10 ; RUN: not grep largecomm %t
11 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
12 ; RUN: not grep @GOT %t
13 ; RUN: not grep @GOTOFF %t
14 ; RUN: not grep @GOTPCREL %t
15 ; RUN: not grep @GOTPLT %t
16 ; RUN: not grep @PLT %t
17 ; RUN: not grep @PLTOFF %t
18 ; RUN: grep {call \\\*} %t | count 10
19 ; RUN: not grep %rip %t
20 ; RUN: llvm-as < %s | llc -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=pic -code-model=small > %t
21 ; RUN: grep leal %t | count 43
22 ; RUN: grep movl %t | count 377
23 ; RUN: grep addl %t | count 179
24 ; RUN: grep subl %t | count 6
25 ; RUN: not grep leaq %t
26 ; RUN: not grep movq %t
27 ; RUN: not grep addq %t
28 ; RUN: not grep subq %t
29 ; RUN: not grep movabs %t
30 ; RUN: not grep largecomm %t
31 ; RUN: grep _GLOBAL_OFFSET_TABLE_ %t | count 148
32 ; RUN: grep @GOT %t | count 207
33 ; RUN: grep @GOTOFF %t | count 58
34 ; RUN: not grep @GOTPCREL %t
35 ; RUN: not grep @GOTPLT %t
36 ; RUN: grep @PLT %t | count 20
37 ; RUN: not grep @PLTOFF %t
38 ; RUN: grep {call \\\*} %t | count 10
39 ; RUN: not grep {%rip} %t
40
41 ; RUN: llvm-as < %s | llc -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC
42
43 ; RUN: llvm-as < %s | llc -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small > %t
44 ; RUN: not grep leal %t
45 ; RUN: grep movl %t | count 98
46 ; RUN: not grep addl %t
47 ; RUN: not grep subl %t
48 ; RUN: grep leaq %t | count 59
49 ; RUN: grep movq %t | count 195
50 ; RUN: grep addq %t | count 36
51 ; RUN: grep subq %t | count 11
52 ; RUN: not grep movabs %t
53 ; RUN: not grep largecomm %t
54 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
55 ; RUN: grep @GOT %t | count 149
56 ; RUN: not grep @GOTOFF %t
57 ; RUN: grep @GOTPCREL %t | count 149
58 ; RUN: not grep @GOTPLT %t
59 ; RUN: grep @PLT %t | count 20
60 ; RUN: not grep @PLTOFF %t
61 ; RUN: grep {call \\\*} %t | count 10
62 ; RUN: grep {%rip} %t | count 207
63
64
65
66 ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small > %t
67 ; RUN: grep leal %t | count 33
68 ; RUN: grep movl %t | count 239
69 ; RUN: grep addl %t | count 20
70 ; RUN: grep subl %t | count 14
71 ; RUN: not grep leaq %t
72 ; RUN: not grep movq %t
73 ; RUN: not grep addq %t
74 ; RUN: not grep subq %t
75 ; RUN: not grep movabs %t
76 ; RUN: not grep largecomm %t
77 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
78 ; RUN: not grep @GOT %t
79 ; RUN: not grep @GOTOFF %t
80 ; RUN: not grep @GOTPCREL %t
81 ; RUN: not grep @GOTPLT %t
82 ; RUN: not grep @PLT %t
83 ; RUN: not grep @PLTOFF %t
84 ; RUN: grep {call \\\*} %t | count 10
85 ; RUN: not grep %rip %t
86 ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small > %t
87 ; RUN: grep leal %t | count 31
88 ; RUN: grep movl %t | count 312
89 ; RUN: grep addl %t | count 32
90 ; RUN: grep subl %t | count 14
91 ; RUN: not grep leaq %t
92 ; RUN: not grep movq %t
93 ; RUN: not grep addq %t
94 ; RUN: not grep subq %t
95 ; RUN: not grep movabs %t
96 ; RUN: not grep largecomm %t
97 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
98 ; RUN: not grep @GOT %t
99 ; RUN: not grep @GOTOFF %t
100 ; RUN: not grep @GOTPCREL %t
101 ; RUN: not grep @GOTPLT %t
102 ; RUN: not grep @PLT %t
103 ; RUN: not grep @PLTOFF %t
104 ; RUN: grep {call \\\*} %t | count 10
105 ; RUN: not grep {%rip} %t
106 ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small > %t
107 ; RUN: grep leal %t | count 57
108 ; RUN: grep movl %t | count 292
109 ; RUN: grep addl %t | count 32
110 ; RUN: grep subl %t | count 14
111 ; RUN: not grep leaq %t
112 ; RUN: not grep movq %t
113 ; RUN: not grep addq %t
114 ; RUN: not grep subq %t
115 ; RUN: not grep movabs %t
116 ; RUN: not grep largecomm %t
117 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
118 ; RUN: not grep @GOT %t
119 ; RUN: not grep @GOTOFF %t
120 ; RUN: not grep @GOTPCREL %t
121 ; RUN: not grep @GOTPLT %t
122 ; RUN: not grep @PLT %t
123 ; RUN: not grep @PLTOFF %t
124 ; RUN: grep {call \\\*} %t | count 10
125 ; RUN: not grep {%rip} %t
126 ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small > %t
127 ; RUN: not grep leal %t
128 ; RUN: grep movl %t | count 95
129 ; RUN: not grep addl %t
130 ; RUN: not grep subl %t
131 ; RUN: grep leaq %t | count 89
132 ; RUN: grep movq %t | count 142
133 ; RUN: grep addq %t | count 30
134 ; RUN: grep subq %t | count 12
135 ; RUN: not grep movabs %t
136 ; RUN: not grep largecomm %t
137 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
138 ; RUN: grep @GOT %t | count 92
139 ; RUN: not grep @GOTOFF %t
140 ; RUN: grep @GOTPCREL %t | count 92
141 ; RUN: not grep @GOTPLT %t
142 ; RUN: not grep @PLT %t
143 ; RUN: not grep @PLTOFF %t
144 ; RUN: grep {call \\\*} %t | count 10
145 ; RUN: grep {%rip} %t | count 208
146 ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small > %t
147 ; RUN: not grep leal %t
148 ; RUN: grep movl %t | count 95
149 ; RUN: not grep addl %t
150 ; RUN: not grep subl %t
151 ; RUN: grep leaq %t | count 89
152 ; RUN: grep movq %t | count 142
153 ; RUN: grep addq %t | count 30
154 ; RUN: grep subq %t | count 12
155 ; RUN: not grep movabs %t
156 ; RUN: not grep largecomm %t
157 ; RUN: not grep _GLOBAL_OFFSET_TABLE_ %t
158 ; RUN: grep @GOT %t | count 92
159 ; RUN: not grep @GOTOFF %t
160 ; RUN: grep @GOTPCREL %t | count 92
161 ; RUN: not grep @GOTPLT %t
162 ; RUN: not grep @PLT %t
163 ; RUN: not grep @PLTOFF %t
164 ; RUN: grep {call \\\*} %t | count 10
165 ; RUN: grep {%rip} %t | count 208
0 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-STATIC
1 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-PIC
2
3 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC
4 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=LINUX-64-PIC
5
6 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-32-STATIC
7 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
8 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-PIC
9
10 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC
11 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
12 ; RUN: llvm-as < %s | llc -asm-verbose=0 -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC
16613
16714 @src = external global [131072 x i32]
16815 @dst = external global [131072 x i32]
19340 ; LINUX-64-STATIC: movl src(%rip), %eax
19441 ; LINUX-64-STATIC: movl %eax, dst
19542 ; LINUX-64-STATIC: ret
43
44 ; LINUX-32-STATIC: foo00:
45 ; LINUX-32-STATIC: movl src, %eax
46 ; LINUX-32-STATIC-NEXT: movl %eax, dst
47 ; LINUX-32-STATIC-NEXT: ret
48
49 ; LINUX-32-PIC: foo00:
50 ; LINUX-32-PIC: movl src, %eax
51 ; LINUX-32-PIC-NEXT: movl %eax, dst
52 ; LINUX-32-PIC-NEXT: ret
53
54 ; LINUX-64-PIC: foo00:
55 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
56 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
57 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
58 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
59 ; LINUX-64-PIC-NEXT: ret
60
61 ; DARWIN-32-STATIC: _foo00:
62 ; DARWIN-32-STATIC: movl _src, %eax
63 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst
64 ; DARWIN-32-STATIC-NEXT: ret
65
66 ; DARWIN-32-DYNAMIC: _foo00:
67 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
68 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
69 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
70 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
71 ; DARWIN-32-DYNAMIC-NEXT: ret
72
73 ; DARWIN-32-PIC: _foo00:
74 ; DARWIN-32-PIC: call "L1$pb"
75 ; DARWIN-32-PIC-NEXT: "L1$pb":
76 ; DARWIN-32-PIC-NEXT: popl %eax
77 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L1$pb"(%eax), %ecx
78 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
79 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L1$pb"(%eax), %eax
80 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
81 ; DARWIN-32-PIC-NEXT: ret
82
83 ; DARWIN-64-STATIC: _foo00:
84 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
85 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
86 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
87 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
88 ; DARWIN-64-STATIC-NEXT: ret
89
90 ; DARWIN-64-DYNAMIC: _foo00:
91 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
92 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
93 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
94 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
95 ; DARWIN-64-DYNAMIC-NEXT: ret
96
97 ; DARWIN-64-PIC: _foo00:
98 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
99 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
100 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
101 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
102 ; DARWIN-64-PIC-NEXT: ret
196103 }
197104
198105 define void @fxo00() nounwind {
205112 ; LINUX-64-STATIC: movl xsrc(%rip), %eax
206113 ; LINUX-64-STATIC: movl %eax, xdst
207114 ; LINUX-64-STATIC: ret
115
116 ; LINUX-32-STATIC: fxo00:
117 ; LINUX-32-STATIC: movl xsrc, %eax
118 ; LINUX-32-STATIC-NEXT: movl %eax, xdst
119 ; LINUX-32-STATIC-NEXT: ret
120
121 ; LINUX-32-PIC: fxo00:
122 ; LINUX-32-PIC: movl xsrc, %eax
123 ; LINUX-32-PIC-NEXT: movl %eax, xdst
124 ; LINUX-32-PIC-NEXT: ret
125
126 ; LINUX-64-PIC: fxo00:
127 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
128 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
129 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
130 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
131 ; LINUX-64-PIC-NEXT: ret
132
133 ; DARWIN-32-STATIC: _fxo00:
134 ; DARWIN-32-STATIC: movl _xsrc, %eax
135 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst
136 ; DARWIN-32-STATIC-NEXT: ret
137
138 ; DARWIN-32-DYNAMIC: _fxo00:
139 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
140 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
141 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
142 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
143 ; DARWIN-32-DYNAMIC-NEXT: ret
144
145 ; DARWIN-32-PIC: _fxo00:
146 ; DARWIN-32-PIC: call "L2$pb"
147 ; DARWIN-32-PIC-NEXT: "L2$pb":
148 ; DARWIN-32-PIC-NEXT: popl %eax
149 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L2$pb"(%eax), %ecx
150 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
151 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L2$pb"(%eax), %eax
152 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
153 ; DARWIN-32-PIC-NEXT: ret
154
155 ; DARWIN-64-STATIC: _fxo00:
156 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
157 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
158 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
159 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
160 ; DARWIN-64-STATIC-NEXT: ret
161
162 ; DARWIN-64-DYNAMIC: _fxo00:
163 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
164 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
165 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
166 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
167 ; DARWIN-64-DYNAMIC-NEXT: ret
168
169 ; DARWIN-64-PIC: _fxo00:
170 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
171 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
172 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
173 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
174 ; DARWIN-64-PIC-NEXT: ret
208175 }
209176
210177 define void @foo01() nounwind {
214181 ; LINUX-64-STATIC: foo01:
215182 ; LINUX-64-STATIC: movq $dst, ptr
216183 ; LINUX-64-STATIC: ret
184
185 ; LINUX-32-STATIC: foo01:
186 ; LINUX-32-STATIC: movl $dst, ptr
187 ; LINUX-32-STATIC-NEXT: ret
188
189 ; LINUX-32-PIC: foo01:
190 ; LINUX-32-PIC: movl $dst, ptr
191 ; LINUX-32-PIC-NEXT: ret
192
193 ; LINUX-64-PIC: foo01:
194 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
195 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
196 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
197 ; LINUX-64-PIC-NEXT: ret
198
199 ; DARWIN-32-STATIC: _foo01:
200 ; DARWIN-32-STATIC: movl $_dst, _ptr
201 ; DARWIN-32-STATIC-NEXT: ret
202
203 ; DARWIN-32-DYNAMIC: _foo01:
204 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
205 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
206 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
207 ; DARWIN-32-DYNAMIC-NEXT: ret
208
209 ; DARWIN-32-PIC: _foo01:
210 ; DARWIN-32-PIC: call "L3$pb"
211 ; DARWIN-32-PIC-NEXT: "L3$pb":
212 ; DARWIN-32-PIC-NEXT: popl %eax
213 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L3$pb"(%eax), %ecx
214 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L3$pb"(%eax), %eax
215 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
216 ; DARWIN-32-PIC-NEXT: ret
217
218 ; DARWIN-64-STATIC: _foo01:
219 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
220 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
221 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
222 ; DARWIN-64-STATIC-NEXT: ret
223
224 ; DARWIN-64-DYNAMIC: _foo01:
225 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
226 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
227 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
228 ; DARWIN-64-DYNAMIC-NEXT: ret
229
230 ; DARWIN-64-PIC: _foo01:
231 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
232 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
233 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
234 ; DARWIN-64-PIC-NEXT: ret
217235 }
218236
219237 define void @fxo01() nounwind {
223241 ; LINUX-64-STATIC: fxo01:
224242 ; LINUX-64-STATIC: movq $xdst, ptr
225243 ; LINUX-64-STATIC: ret
244
245 ; LINUX-32-STATIC: fxo01:
246 ; LINUX-32-STATIC: movl $xdst, ptr
247 ; LINUX-32-STATIC-NEXT: ret
248
249 ; LINUX-32-PIC: fxo01:
250 ; LINUX-32-PIC: movl $xdst, ptr
251 ; LINUX-32-PIC-NEXT: ret
252
253 ; LINUX-64-PIC: fxo01:
254 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
255 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
256 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
257 ; LINUX-64-PIC-NEXT: ret
258
259 ; DARWIN-32-STATIC: _fxo01:
260 ; DARWIN-32-STATIC: movl $_xdst, _ptr
261 ; DARWIN-32-STATIC-NEXT: ret
262
263 ; DARWIN-32-DYNAMIC: _fxo01:
264 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
265 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
266 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
267 ; DARWIN-32-DYNAMIC-NEXT: ret
268
269 ; DARWIN-32-PIC: _fxo01:
270 ; DARWIN-32-PIC: call "L4$pb"
271 ; DARWIN-32-PIC-NEXT: "L4$pb":
272 ; DARWIN-32-PIC-NEXT: popl %eax
273 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L4$pb"(%eax), %ecx
274 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L4$pb"(%eax), %eax
275 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
276 ; DARWIN-32-PIC-NEXT: ret
277
278 ; DARWIN-64-STATIC: _fxo01:
279 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
280 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
281 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
282 ; DARWIN-64-STATIC-NEXT: ret
283
284 ; DARWIN-64-DYNAMIC: _fxo01:
285 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
286 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
287 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
288 ; DARWIN-64-DYNAMIC-NEXT: ret
289
290 ; DARWIN-64-PIC: _fxo01:
291 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
292 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
293 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
294 ; DARWIN-64-PIC-NEXT: ret
226295 }
227296
228297 define void @foo02() nounwind {
236305 ; LINUX-64-STATIC: movq ptr(%rip), %
237306 ; LINUX-64-STATIC: movl
238307 ; LINUX-64-STATIC: ret
308
309 ; LINUX-32-STATIC: foo02:
310 ; LINUX-32-STATIC: movl src, %eax
311 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
312 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
313 ; LINUX-32-STATIC-NEXT: ret
314
315 ; LINUX-32-PIC: foo02:
316 ; LINUX-32-PIC: movl src, %eax
317 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
318 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
319 ; LINUX-32-PIC-NEXT: ret
320
321 ; LINUX-64-PIC: foo02:
322 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
323 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
324 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
325 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
326 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
327 ; LINUX-64-PIC-NEXT: ret
328
329 ; DARWIN-32-STATIC: _foo02:
330 ; DARWIN-32-STATIC: movl _src, %eax
331 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
332 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
333 ; DARWIN-32-STATIC-NEXT: ret
334
335 ; DARWIN-32-DYNAMIC: _foo02:
336 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
337 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
338 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
339 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
340 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
341 ; DARWIN-32-DYNAMIC-NEXT: ret
342
343 ; DARWIN-32-PIC: _foo02:
344 ; DARWIN-32-PIC: call "L5$pb"
345 ; DARWIN-32-PIC-NEXT: "L5$pb":
346 ; DARWIN-32-PIC-NEXT: popl %eax
347 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L5$pb"(%eax), %ecx
348 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
349 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L5$pb"(%eax), %eax
350 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
351 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
352 ; DARWIN-32-PIC-NEXT: ret
353
354 ; DARWIN-64-STATIC: _foo02:
355 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
356 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
357 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
358 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
359 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
360 ; DARWIN-64-STATIC-NEXT: ret
361
362 ; DARWIN-64-DYNAMIC: _foo02:
363 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
364 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
365 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
366 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
367 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
368 ; DARWIN-64-DYNAMIC-NEXT: ret
369
370 ; DARWIN-64-PIC: _foo02:
371 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
372 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
373 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
374 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
375 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
376 ; DARWIN-64-PIC-NEXT: ret
239377 }
240378
241379 define void @fxo02() nounwind {
248386 ; LINUX-64-STATIC: movq ptr(%rip), %
249387 ; LINUX-64-STATIC: movl
250388 ; LINUX-64-STATIC: ret
389
390 ; LINUX-32-STATIC: fxo02:
391 ; LINUX-32-STATIC: movl xsrc, %eax
392 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
393 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
394 ; LINUX-32-STATIC-NEXT: ret
251395 ret void
396
397 ; LINUX-32-PIC: fxo02:
398 ; LINUX-32-PIC: movl xsrc, %eax
399 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
400 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
401 ; LINUX-32-PIC-NEXT: ret
402
403 ; LINUX-64-PIC: fxo02:
404 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
405 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
406 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
407 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
408 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
409 ; LINUX-64-PIC-NEXT: ret
410
411 ; DARWIN-32-STATIC: _fxo02:
412 ; DARWIN-32-STATIC: movl _xsrc, %eax
413 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
414 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
415 ; DARWIN-32-STATIC-NEXT: ret
416
417 ; DARWIN-32-DYNAMIC: _fxo02:
418 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
419 ; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax
420 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
421 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
422 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
423 ; DARWIN-32-DYNAMIC-NEXT: ret
424
425 ; DARWIN-32-PIC: _fxo02:
426 ; DARWIN-32-PIC: call "L6$pb"
427 ; DARWIN-32-PIC-NEXT: "L6$pb":
428 ; DARWIN-32-PIC-NEXT: popl %eax
429 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L6$pb"(%eax), %ecx
430 ; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx
431 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L6$pb"(%eax), %eax
432 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
433 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
434 ; DARWIN-32-PIC-NEXT: ret
435
436 ; DARWIN-64-STATIC: _fxo02:
437 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
438 ; DARWIN-64-STATIC-NEXT: movl (%rax), %eax
439 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
440 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
441 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
442 ; DARWIN-64-STATIC-NEXT: ret
443
444 ; DARWIN-64-DYNAMIC: _fxo02:
445 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
446 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax
447 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
448 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
449 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
450 ; DARWIN-64-DYNAMIC-NEXT: ret
451
452 ; DARWIN-64-PIC: _fxo02:
453 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
454 ; DARWIN-64-PIC-NEXT: movl (%rax), %eax
455 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
456 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
457 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
458 ; DARWIN-64-PIC-NEXT: ret
252459 }
253460
254461 define void @foo03() nounwind {
260467 ; LINUX-64-STATIC: movl dsrc(%rip), %eax
261468 ; LINUX-64-STATIC: movl %eax, ddst
262469 ; LINUX-64-STATIC: ret
470
471 ; LINUX-32-STATIC: foo03:
472 ; LINUX-32-STATIC: movl dsrc, %eax
473 ; LINUX-32-STATIC-NEXT: movl %eax, ddst
474 ; LINUX-32-STATIC-NEXT: ret
475
476 ; LINUX-32-PIC: foo03:
477 ; LINUX-32-PIC: movl dsrc, %eax
478 ; LINUX-32-PIC-NEXT: movl %eax, ddst
479 ; LINUX-32-PIC-NEXT: ret
480
481 ; LINUX-64-PIC: foo03:
482 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
483 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
484 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
485 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
486 ; LINUX-64-PIC-NEXT: ret
487
488 ; DARWIN-32-STATIC: _foo03:
489 ; DARWIN-32-STATIC: movl _dsrc, %eax
490 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst
491 ; DARWIN-32-STATIC-NEXT: ret
492
493 ; DARWIN-32-DYNAMIC: _foo03:
494 ; DARWIN-32-DYNAMIC: movl _dsrc, %eax
495 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst
496 ; DARWIN-32-DYNAMIC-NEXT: ret
497
498 ; DARWIN-32-PIC: _foo03:
499 ; DARWIN-32-PIC: call "L7$pb"
500 ; DARWIN-32-PIC-NEXT: "L7$pb":
501 ; DARWIN-32-PIC-NEXT: popl %eax
502 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L7$pb"(%eax), %ecx
503 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-"L7$pb"(%eax)
504 ; DARWIN-32-PIC-NEXT: ret
505
506 ; DARWIN-64-STATIC: _foo03:
507 ; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
508 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip)
509 ; DARWIN-64-STATIC-NEXT: ret
510
511 ; DARWIN-64-DYNAMIC: _foo03:
512 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
513 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip)
514 ; DARWIN-64-DYNAMIC-NEXT: ret
515
516 ; DARWIN-64-PIC: _foo03:
517 ; DARWIN-64-PIC: movl _dsrc(%rip), %eax
518 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip)
519 ; DARWIN-64-PIC-NEXT: ret
263520 }
264521
265522 define void @foo04() nounwind {
269526 ; LINUX-64-STATIC: foo04:
270527 ; LINUX-64-STATIC: movq $ddst, dptr
271528 ; LINUX-64-STATIC: ret
529
530 ; LINUX-32-STATIC: foo04:
531 ; LINUX-32-STATIC: movl $ddst, dptr
532 ; LINUX-32-STATIC-NEXT: ret
533
534 ; LINUX-32-PIC: foo04:
535 ; LINUX-32-PIC: movl $ddst, dptr
536 ; LINUX-32-PIC-NEXT: ret
537
538 ; LINUX-64-PIC: foo04:
539 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
540 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
541 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
542 ; LINUX-64-PIC-NEXT: ret
543
544 ; DARWIN-32-STATIC: _foo04:
545 ; DARWIN-32-STATIC: movl $_ddst, _dptr
546 ; DARWIN-32-STATIC-NEXT: ret
547
548 ; DARWIN-32-DYNAMIC: _foo04:
549 ; DARWIN-32-DYNAMIC: movl $_ddst, _dptr
550 ; DARWIN-32-DYNAMIC-NEXT: ret
551
552 ; DARWIN-32-PIC: _foo04:
553 ; DARWIN-32-PIC: call "L8$pb"
554 ; DARWIN-32-PIC-NEXT: "L8$pb":
555 ; DARWIN-32-PIC-NEXT: popl %eax
556 ; DARWIN-32-PIC-NEXT: leal _ddst-"L8$pb"(%eax), %ecx
557 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L8$pb"(%eax)
558 ; DARWIN-32-PIC-NEXT: ret
559
560 ; DARWIN-64-STATIC: _foo04:
561 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
562 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
563 ; DARWIN-64-STATIC-NEXT: ret
564
565 ; DARWIN-64-DYNAMIC: _foo04:
566 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
567 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
568 ; DARWIN-64-DYNAMIC-NEXT: ret
569
570 ; DARWIN-64-PIC: _foo04:
571 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
572 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
573 ; DARWIN-64-PIC-NEXT: ret
272574 }
273575
274576 define void @foo05() nounwind {
282584 ; LINUX-64-STATIC: movq dptr(%rip), %
283585 ; LINUX-64-STATIC: movl
284586 ; LINUX-64-STATIC: ret
587
588 ; LINUX-32-STATIC: foo05:
589 ; LINUX-32-STATIC: movl dsrc, %eax
590 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
591 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
592 ; LINUX-32-STATIC-NEXT: ret
593
594 ; LINUX-32-PIC: foo05:
595 ; LINUX-32-PIC: movl dsrc, %eax
596 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
597 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
598 ; LINUX-32-PIC-NEXT: ret
599
600 ; LINUX-64-PIC: foo05:
601 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
602 ; LINUX-64-PIC-NEXT: movl (%rax), %eax
603 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
604 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
605 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
606 ; LINUX-64-PIC-NEXT: ret
607
608 ; DARWIN-32-STATIC: _foo05:
609 ; DARWIN-32-STATIC: movl _dsrc, %eax
610 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
611 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
612 ; DARWIN-32-STATIC-NEXT: ret
613
614 ; DARWIN-32-DYNAMIC: _foo05:
615 ; DARWIN-32-DYNAMIC: movl _dsrc, %eax
616 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
617 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
618 ; DARWIN-32-DYNAMIC-NEXT: ret
619
620 ; DARWIN-32-PIC: _foo05:
621 ; DARWIN-32-PIC: call "L9$pb"
622 ; DARWIN-32-PIC-NEXT: "L9$pb":
623 ; DARWIN-32-PIC-NEXT: popl %eax
624 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L9$pb"(%eax), %ecx
625 ; DARWIN-32-PIC-NEXT: movl _dptr-"L9$pb"(%eax), %eax
626 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
627 ; DARWIN-32-PIC-NEXT: ret
628
629 ; DARWIN-64-STATIC: _foo05:
630 ; DARWIN-64-STATIC: movl _dsrc(%rip), %eax
631 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
632 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
633 ; DARWIN-64-STATIC-NEXT: ret
634
635 ; DARWIN-64-DYNAMIC: _foo05:
636 ; DARWIN-64-DYNAMIC: movl _dsrc(%rip), %eax
637 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
638 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
639 ; DARWIN-64-DYNAMIC-NEXT: ret
640
641 ; DARWIN-64-PIC: _foo05:
642 ; DARWIN-64-PIC: movl _dsrc(%rip), %eax
643 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
644 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
645 ; DARWIN-64-PIC-NEXT: ret
285646 }
286647
287648 define void @foo06() nounwind {
293654 ; LINUX-64-STATIC: movl lsrc(%rip), %eax
294655 ; LINUX-64-STATIC: movl %eax, ldst(%rip)
295656 ; LINUX-64-STATIC: ret
657
658 ; LINUX-32-STATIC: foo06:
659 ; LINUX-32-STATIC: movl lsrc, %eax
660 ; LINUX-32-STATIC-NEXT: movl %eax, ldst
661 ; LINUX-32-STATIC-NEXT: ret
662
663 ; LINUX-32-PIC: foo06:
664 ; LINUX-32-PIC: movl lsrc, %eax
665 ; LINUX-32-PIC-NEXT: movl %eax, ldst
666 ; LINUX-32-PIC-NEXT: ret
667
668 ; LINUX-64-PIC: foo06:
669 ; LINUX-64-PIC: movl lsrc(%rip), %eax
670 ; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip)
671 ; LINUX-64-PIC-NEXT: ret
672
673 ; DARWIN-32-STATIC: _foo06:
674 ; DARWIN-32-STATIC: movl _lsrc, %eax
675 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst
676 ; DARWIN-32-STATIC-NEXT: ret
677
678 ; DARWIN-32-DYNAMIC: _foo06:
679 ; DARWIN-32-DYNAMIC: movl _lsrc, %eax
680 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst
681 ; DARWIN-32-DYNAMIC-NEXT: ret
682
683 ; DARWIN-32-PIC: _foo06:
684 ; DARWIN-32-PIC: call "L10$pb"
685 ; DARWIN-32-PIC-NEXT: "L10$pb":
686 ; DARWIN-32-PIC-NEXT: popl %eax
687 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L10$pb"(%eax), %ecx
688 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-"L10$pb"(%eax)
689 ; DARWIN-32-PIC-NEXT: ret
690
691 ; DARWIN-64-STATIC: _foo06:
692 ; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
693 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip)
694 ; DARWIN-64-STATIC-NEXT: ret
695
696 ; DARWIN-64-DYNAMIC: _foo06:
697 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
698 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip)
699 ; DARWIN-64-DYNAMIC-NEXT: ret
700
701 ; DARWIN-64-PIC: _foo06:
702 ; DARWIN-64-PIC: movl _lsrc(%rip), %eax
703 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip)
704 ; DARWIN-64-PIC-NEXT: ret
296705 }
297706
298707 define void @foo07() nounwind {
302711 ; LINUX-64-STATIC: foo07:
303712 ; LINUX-64-STATIC: movq $ldst, lptr
304713 ; LINUX-64-STATIC: ret
714
715 ; LINUX-32-STATIC: foo07:
716 ; LINUX-32-STATIC: movl $ldst, lptr
717 ; LINUX-32-STATIC-NEXT: ret
718
719 ; LINUX-32-PIC: foo07:
720 ; LINUX-32-PIC: movl $ldst, lptr
721 ; LINUX-32-PIC-NEXT: ret
722
723 ; LINUX-64-PIC: foo07:
724 ; LINUX-64-PIC: leaq ldst(%rip), %rax
725 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
726 ; LINUX-64-PIC-NEXT: ret
727
728 ; DARWIN-32-STATIC: _foo07:
729 ; DARWIN-32-STATIC: movl $_ldst, _lptr
730 ; DARWIN-32-STATIC-NEXT: ret
731
732 ; DARWIN-32-DYNAMIC: _foo07:
733 ; DARWIN-32-DYNAMIC: movl $_ldst, _lptr
734 ; DARWIN-32-DYNAMIC-NEXT: ret
735
736 ; DARWIN-32-PIC: _foo07:
737 ; DARWIN-32-PIC: call "L11$pb"
738 ; DARWIN-32-PIC-NEXT: "L11$pb":
739 ; DARWIN-32-PIC-NEXT: popl %eax
740 ; DARWIN-32-PIC-NEXT: leal _ldst-"L11$pb"(%eax), %ecx
741 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L11$pb"(%eax)
742 ; DARWIN-32-PIC-NEXT: ret
743
744 ; DARWIN-64-STATIC: _foo07:
745 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
746 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
747 ; DARWIN-64-STATIC-NEXT: ret
748
749 ; DARWIN-64-DYNAMIC: _foo07:
750 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
751 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
752 ; DARWIN-64-DYNAMIC-NEXT: ret
753
754 ; DARWIN-64-PIC: _foo07:
755 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
756 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
757 ; DARWIN-64-PIC-NEXT: ret
305758 }
306759
307760 define void @foo08() nounwind {
315768 ; LINUX-64-STATIC: movq lptr(%rip), %
316769 ; LINUX-64-STATIC: movl
317770 ; LINUX-64-STATIC: ret
771
772 ; LINUX-32-STATIC: foo08:
773 ; LINUX-32-STATIC: movl lsrc, %eax
774 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
775 ; LINUX-32-STATIC-NEXT: movl %eax, (%ecx)
776 ; LINUX-32-STATIC-NEXT: ret
777
778 ; LINUX-32-PIC: foo08:
779 ; LINUX-32-PIC: movl lsrc, %eax
780 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
781 ; LINUX-32-PIC-NEXT: movl %eax, (%ecx)
782 ; LINUX-32-PIC-NEXT: ret
783
784 ; LINUX-64-PIC: foo08:
785 ; LINUX-64-PIC: movl lsrc(%rip), %eax
786 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
787 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx)
788 ; LINUX-64-PIC-NEXT: ret
789
790 ; DARWIN-32-STATIC: _foo08:
791 ; DARWIN-32-STATIC: movl _lsrc, %eax
792 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
793 ; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx)
794 ; DARWIN-32-STATIC-NEXT: ret
795
796 ; DARWIN-32-DYNAMIC: _foo08:
797 ; DARWIN-32-DYNAMIC: movl _lsrc, %eax
798 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
799 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
800 ; DARWIN-32-DYNAMIC-NEXT: ret
801
802 ; DARWIN-32-PIC: _foo08:
803 ; DARWIN-32-PIC: call "L12$pb"
804 ; DARWIN-32-PIC-NEXT: "L12$pb":
805 ; DARWIN-32-PIC-NEXT: popl %eax
806 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L12$pb"(%eax), %ecx
807 ; DARWIN-32-PIC-NEXT: movl _lptr-"L12$pb"(%eax), %eax
808 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
809 ; DARWIN-32-PIC-NEXT: ret
810
811 ; DARWIN-64-STATIC: _foo08:
812 ; DARWIN-64-STATIC: movl _lsrc(%rip), %eax
813 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
814 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx)
815 ; DARWIN-64-STATIC-NEXT: ret
816
817 ; DARWIN-64-DYNAMIC: _foo08:
818 ; DARWIN-64-DYNAMIC: movl _lsrc(%rip), %eax
819 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
820 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx)
821 ; DARWIN-64-DYNAMIC-NEXT: ret
822
823 ; DARWIN-64-PIC: _foo08:
824 ; DARWIN-64-PIC: movl _lsrc(%rip), %eax
825 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
826 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx)
827 ; DARWIN-64-PIC-NEXT: ret
318828 }
319829
320830 define void @qux00() nounwind {
326836 ; LINUX-64-STATIC: movl src+64(%rip), %eax
327837 ; LINUX-64-STATIC: movl %eax, dst+64(%rip)
328838 ; LINUX-64-STATIC: ret
839
840 ; LINUX-32-STATIC: qux00:
841 ; LINUX-32-STATIC: movl src+64, %eax
842 ; LINUX-32-STATIC-NEXT: movl %eax, dst+64
843 ; LINUX-32-STATIC-NEXT: ret
844
845 ; LINUX-32-PIC: qux00:
846 ; LINUX-32-PIC: movl src+64, %eax
847 ; LINUX-32-PIC-NEXT: movl %eax, dst+64
848 ; LINUX-32-PIC-NEXT: ret
849
850 ; LINUX-64-PIC: qux00:
851 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
852 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
853 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
854 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
855 ; LINUX-64-PIC-NEXT: ret
856
857 ; DARWIN-32-STATIC: _qux00:
858 ; DARWIN-32-STATIC: movl _src+64, %eax
859 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64
860 ; DARWIN-32-STATIC-NEXT: ret
861
862 ; DARWIN-32-DYNAMIC: _qux00:
863 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
864 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
865 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
866 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
867 ; DARWIN-32-DYNAMIC-NEXT: ret
868
869 ; DARWIN-32-PIC: _qux00:
870 ; DARWIN-32-PIC: call "L13$pb"
871 ; DARWIN-32-PIC-NEXT: "L13$pb":
872 ; DARWIN-32-PIC-NEXT: popl %eax
873 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L13$pb"(%eax), %ecx
874 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
875 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L13$pb"(%eax), %eax
876 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
877 ; DARWIN-32-PIC-NEXT: ret
878
879 ; DARWIN-64-STATIC: _qux00:
880 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
881 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
882 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
883 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
884 ; DARWIN-64-STATIC-NEXT: ret
885
886 ; DARWIN-64-DYNAMIC: _qux00:
887 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
888 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
889 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
890 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
891 ; DARWIN-64-DYNAMIC-NEXT: ret
892
893 ; DARWIN-64-PIC: _qux00:
894 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
895 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
896 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
897 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
898 ; DARWIN-64-PIC-NEXT: ret
329899 }
330900
331901 define void @qxx00() nounwind {
337907 ; LINUX-64-STATIC: movl xsrc+64(%rip), %eax
338908 ; LINUX-64-STATIC: movl %eax, xdst+64(%rip)
339909 ; LINUX-64-STATIC: ret
910
911 ; LINUX-32-STATIC: qxx00:
912 ; LINUX-32-STATIC: movl xsrc+64, %eax
913 ; LINUX-32-STATIC-NEXT: movl %eax, xdst+64
914 ; LINUX-32-STATIC-NEXT: ret
915
916 ; LINUX-32-PIC: qxx00:
917 ; LINUX-32-PIC: movl xsrc+64, %eax
918 ; LINUX-32-PIC-NEXT: movl %eax, xdst+64
919 ; LINUX-32-PIC-NEXT: ret
920
921 ; LINUX-64-PIC: qxx00:
922 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
923 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
924 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
925 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
926 ; LINUX-64-PIC-NEXT: ret
927
928 ; DARWIN-32-STATIC: _qxx00:
929 ; DARWIN-32-STATIC: movl _xsrc+64, %eax
930 ; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64
931 ; DARWIN-32-STATIC-NEXT: ret
932
933 ; DARWIN-32-DYNAMIC: _qxx00:
934 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
935 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
936 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
937 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
938 ; DARWIN-32-DYNAMIC-NEXT: ret
939
940 ; DARWIN-32-PIC: _qxx00:
941 ; DARWIN-32-PIC: call "L14$pb"
942 ; DARWIN-32-PIC-NEXT: "L14$pb":
943 ; DARWIN-32-PIC-NEXT: popl %eax
944 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L14$pb"(%eax), %ecx
945 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
946 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L14$pb"(%eax), %eax
947 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
948 ; DARWIN-32-PIC-NEXT: ret
949
950 ; DARWIN-64-STATIC: _qxx00:
951 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
952 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
953 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
954 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
955 ; DARWIN-64-STATIC-NEXT: ret
956
957 ; DARWIN-64-DYNAMIC: _qxx00:
958 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
959 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
960 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
961 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
962 ; DARWIN-64-DYNAMIC-NEXT: ret
963
964 ; DARWIN-64-PIC: _qxx00:
965 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
966 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
967 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
968 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
969 ; DARWIN-64-PIC-NEXT: ret
340970 }
341971
342972 define void @qux01() nounwind {
346976 ; LINUX-64-STATIC: qux01:
347977 ; LINUX-64-STATIC: movq $dst+64, ptr
348978 ; LINUX-64-STATIC: ret
979
980 ; LINUX-32-STATIC: qux01:
981 ; LINUX-32-STATIC: movl $dst+64, ptr
982 ; LINUX-32-STATIC-NEXT: ret
983
984 ; LINUX-32-PIC: qux01:
985 ; LINUX-32-PIC: movl $dst+64, ptr
986 ; LINUX-32-PIC-NEXT: ret
987
988 ; LINUX-64-PIC: qux01:
989 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
990 ; LINUX-64-PIC-NEXT: addq $64, %rax
991 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
992 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
993 ; LINUX-64-PIC-NEXT: ret
994
995 ; DARWIN-32-STATIC: _qux01:
996 ; DARWIN-32-STATIC: movl $_dst+64, _ptr
997 ; DARWIN-32-STATIC-NEXT: ret
998
999 ; DARWIN-32-DYNAMIC: _qux01:
1000 ; DARWIN-32-DYNAMIC: movl L_dst$non_lazy_ptr, %eax
1001 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1002 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1003 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1004 ; DARWIN-32-DYNAMIC-NEXT: ret
1005
1006 ; DARWIN-32-PIC: _qux01:
1007 ; DARWIN-32-PIC: call "L15$pb"
1008 ; DARWIN-32-PIC-NEXT: "L15$pb":
1009 ; DARWIN-32-PIC-NEXT: popl %eax
1010 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L15$pb"(%eax), %ecx
1011 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1012 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L15$pb"(%eax), %eax
1013 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1014 ; DARWIN-32-PIC-NEXT: ret
1015
1016 ; DARWIN-64-STATIC: _qux01:
1017 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
1018 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1019 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1020 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1021 ; DARWIN-64-STATIC-NEXT: ret
1022
1023 ; DARWIN-64-DYNAMIC: _qux01:
1024 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
1025 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1026 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1027 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1028 ; DARWIN-64-DYNAMIC-NEXT: ret
1029
1030 ; DARWIN-64-PIC: _qux01:
1031 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
1032 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1033 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1034 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1035 ; DARWIN-64-PIC-NEXT: ret
3491036 }
3501037
3511038 define void @qxx01() nounwind {
3551042 ; LINUX-64-STATIC: qxx01:
3561043 ; LINUX-64-STATIC: movq $xdst+64, ptr
3571044 ; LINUX-64-STATIC: ret
1045
1046 ; LINUX-32-STATIC: qxx01:
1047 ; LINUX-32-STATIC: movl $xdst+64, ptr
1048 ; LINUX-32-STATIC-NEXT: ret
1049
1050 ; LINUX-32-PIC: qxx01:
1051 ; LINUX-32-PIC: movl $xdst+64, ptr
1052 ; LINUX-32-PIC-NEXT: ret
1053
1054 ; LINUX-64-PIC: qxx01:
1055 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
1056 ; LINUX-64-PIC-NEXT: addq $64, %rax
1057 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1058 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1059 ; LINUX-64-PIC-NEXT: ret
1060
1061 ; DARWIN-32-STATIC: _qxx01:
1062 ; DARWIN-32-STATIC: movl $_xdst+64, _ptr
1063 ; DARWIN-32-STATIC-NEXT: ret
1064
1065 ; DARWIN-32-DYNAMIC: _qxx01:
1066 ; DARWIN-32-DYNAMIC: movl L_xdst$non_lazy_ptr, %eax
1067 ; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax
1068 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1069 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1070 ; DARWIN-32-DYNAMIC-NEXT: ret
1071
1072 ; DARWIN-32-PIC: _qxx01:
1073 ; DARWIN-32-PIC: call "L16$pb"
1074 ; DARWIN-32-PIC-NEXT: "L16$pb":
1075 ; DARWIN-32-PIC-NEXT: popl %eax
1076 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L16$pb"(%eax), %ecx
1077 ; DARWIN-32-PIC-NEXT: addl $64, %ecx
1078 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L16$pb"(%eax), %eax
1079 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1080 ; DARWIN-32-PIC-NEXT: ret
1081
1082 ; DARWIN-64-STATIC: _qxx01:
1083 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
1084 ; DARWIN-64-STATIC-NEXT: addq $64, %rax
1085 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1086 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
1087 ; DARWIN-64-STATIC-NEXT: ret
1088
1089 ; DARWIN-64-DYNAMIC: _qxx01:
1090 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
1091 ; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax
1092 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1093 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
1094 ; DARWIN-64-DYNAMIC-NEXT: ret
1095
1096 ; DARWIN-64-PIC: _qxx01:
1097 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
1098 ; DARWIN-64-PIC-NEXT: addq $64, %rax
1099 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1100 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
1101 ; DARWIN-64-PIC-NEXT: ret
3581102 }
3591103
3601104 define void @qux02() nounwind {
3681112 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
3691113 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
3701114 ; LINUX-64-STATIC: ret
1115
1116 ; LINUX-32-STATIC: qux02:
1117 ; LINUX-32-STATIC: movl src+64, %eax
1118 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1119 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1120 ; LINUX-32-STATIC-NEXT: ret
3711121 ret void
1122
1123 ; LINUX-32-PIC: qux02:
1124 ; LINUX-32-PIC: movl src+64, %eax
1125 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
1126 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1127 ; LINUX-32-PIC-NEXT: ret
1128
1129 ; LINUX-64-PIC: qux02:
1130 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1131 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1132 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1133 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1134 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1135 ; LINUX-64-PIC-NEXT: ret
1136
1137 ; DARWIN-32-STATIC: _qux02:
1138 ; DARWIN-32-STATIC: movl _src+64, %eax
1139 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1140 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1141 ; DARWIN-32-STATIC-NEXT: ret
1142
1143 ; DARWIN-32-DYNAMIC: _qux02:
1144 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
1145 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1146 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1147 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1148 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1149 ; DARWIN-32-DYNAMIC-NEXT: ret
1150
1151 ; DARWIN-32-PIC: _qux02:
1152 ; DARWIN-32-PIC: call "L17$pb"
1153 ; DARWIN-32-PIC-NEXT: "L17$pb":
1154 ; DARWIN-32-PIC-NEXT: popl %eax
1155 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L17$pb"(%eax), %ecx
1156 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1157 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L17$pb"(%eax), %eax
1158 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1159 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1160 ; DARWIN-32-PIC-NEXT: ret
1161
1162 ; DARWIN-64-STATIC: _qux02:
1163 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
1164 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1165 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1166 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1167 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1168 ; DARWIN-64-STATIC-NEXT: ret
1169
1170 ; DARWIN-64-DYNAMIC: _qux02:
1171 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
1172 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1173 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1174 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1175 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1176 ; DARWIN-64-DYNAMIC-NEXT: ret
1177
1178 ; DARWIN-64-PIC: _qux02:
1179 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
1180 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1181 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1182 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1183 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1184 ; DARWIN-64-PIC-NEXT: ret
3721185 }
3731186
3741187 define void @qxx02() nounwind {
3821195 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
3831196 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
3841197 ; LINUX-64-STATIC: ret
1198
1199 ; LINUX-32-STATIC: qxx02:
1200 ; LINUX-32-STATIC: movl xsrc+64, %eax
1201 ; LINUX-32-STATIC-NEXT: movl ptr, %ecx
1202 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1203 ; LINUX-32-STATIC-NEXT: ret
3851204 ret void
1205
1206 ; LINUX-32-PIC: qxx02:
1207 ; LINUX-32-PIC: movl xsrc+64, %eax
1208 ; LINUX-32-PIC-NEXT: movl ptr, %ecx
1209 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1210 ; LINUX-32-PIC-NEXT: ret
1211
1212 ; LINUX-64-PIC: qxx02:
1213 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
1214 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1215 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1216 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1217 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1218 ; LINUX-64-PIC-NEXT: ret
1219
1220 ; DARWIN-32-STATIC: _qxx02:
1221 ; DARWIN-32-STATIC: movl _xsrc+64, %eax
1222 ; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx
1223 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1224 ; DARWIN-32-STATIC-NEXT: ret
1225
1226 ; DARWIN-32-DYNAMIC: _qxx02:
1227 ; DARWIN-32-DYNAMIC: movl L_xsrc$non_lazy_ptr, %eax
1228 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax
1229 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1230 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx
1231 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1232 ; DARWIN-32-DYNAMIC-NEXT: ret
1233
1234 ; DARWIN-32-PIC: _qxx02:
1235 ; DARWIN-32-PIC: call "L18$pb"
1236 ; DARWIN-32-PIC-NEXT: "L18$pb":
1237 ; DARWIN-32-PIC-NEXT: popl %eax
1238 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L18$pb"(%eax), %ecx
1239 ; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx
1240 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L18$pb"(%eax), %eax
1241 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
1242 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1243 ; DARWIN-32-PIC-NEXT: ret
1244
1245 ; DARWIN-64-STATIC: _qxx02:
1246 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
1247 ; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax
1248 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1249 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
1250 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1251 ; DARWIN-64-STATIC-NEXT: ret
1252
1253 ; DARWIN-64-DYNAMIC: _qxx02:
1254 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
1255 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax
1256 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1257 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
1258 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1259 ; DARWIN-64-DYNAMIC-NEXT: ret
1260
1261 ; DARWIN-64-PIC: _qxx02:
1262 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
1263 ; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax
1264 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
1265 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
1266 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1267 ; DARWIN-64-PIC-NEXT: ret
3861268 }
3871269
3881270 define void @qux03() nounwind {
3941276 ; LINUX-64-STATIC: movl dsrc+64(%rip), %eax
3951277 ; LINUX-64-STATIC: movl %eax, ddst+64(%rip)
3961278 ; LINUX-64-STATIC: ret
1279
1280 ; LINUX-32-STATIC: qux03:
1281 ; LINUX-32-STATIC: movl dsrc+64, %eax
1282 ; LINUX-32-STATIC-NEXT: movl %eax, ddst+64
1283 ; LINUX-32-STATIC-NEXT: ret
1284
1285 ; LINUX-32-PIC: qux03:
1286 ; LINUX-32-PIC: movl dsrc+64, %eax
1287 ; LINUX-32-PIC-NEXT: movl %eax, ddst+64
1288 ; LINUX-32-PIC-NEXT: ret
1289
1290 ; LINUX-64-PIC: qux03:
1291 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
1292 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1293 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
1294 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1295 ; LINUX-64-PIC-NEXT: ret
1296
1297 ; DARWIN-32-STATIC: _qux03:
1298 ; DARWIN-32-STATIC: movl _dsrc+64, %eax
1299 ; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64
1300 ; DARWIN-32-STATIC-NEXT: ret
1301
1302 ; DARWIN-32-DYNAMIC: _qux03:
1303 ; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
1304 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64
1305 ; DARWIN-32-DYNAMIC-NEXT: ret
1306
1307 ; DARWIN-32-PIC: _qux03:
1308 ; DARWIN-32-PIC: call "L19$pb"
1309 ; DARWIN-32-PIC-NEXT: "L19$pb":
1310 ; DARWIN-32-PIC-NEXT: popl %eax
1311 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L19$pb"(%eax), %ecx
1312 ; DARWIN-32-PIC-NEXT: movl %ecx, _ddst+64-"L19$pb"(%eax)
1313 ; DARWIN-32-PIC-NEXT: ret
1314
1315 ; DARWIN-64-STATIC: _qux03:
1316 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
1317 ; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip)
1318 ; DARWIN-64-STATIC-NEXT: ret
1319
1320 ; DARWIN-64-DYNAMIC: _qux03:
1321 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
1322 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip)
1323 ; DARWIN-64-DYNAMIC-NEXT: ret
1324
1325 ; DARWIN-64-PIC: _qux03:
1326 ; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
1327 ; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip)
1328 ; DARWIN-64-PIC-NEXT: ret
3971329 }
3981330
3991331 define void @qux04() nounwind {
4031335 ; LINUX-64-STATIC: qux04:
4041336 ; LINUX-64-STATIC: movq $ddst+64, dptr(%rip)
4051337 ; LINUX-64-STATIC: ret
1338
1339 ; LINUX-32-STATIC: qux04:
1340 ; LINUX-32-STATIC: movl $ddst+64, dptr
1341 ; LINUX-32-STATIC-NEXT: ret
1342
1343 ; LINUX-32-PIC: qux04:
1344 ; LINUX-32-PIC: movl $ddst+64, dptr
1345 ; LINUX-32-PIC-NEXT: ret
1346
1347 ; LINUX-64-PIC: qux04:
1348 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
1349 ; LINUX-64-PIC-NEXT: addq $64, %rax
1350 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1351 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
1352 ; LINUX-64-PIC-NEXT: ret
1353
1354 ; DARWIN-32-STATIC: _qux04:
1355 ; DARWIN-32-STATIC: movl $_ddst+64, _dptr
1356 ; DARWIN-32-STATIC-NEXT: ret
1357
1358 ; DARWIN-32-DYNAMIC: _qux04:
1359 ; DARWIN-32-DYNAMIC: movl $_ddst+64, _dptr
1360 ; DARWIN-32-DYNAMIC-NEXT: ret
1361
1362 ; DARWIN-32-PIC: _qux04:
1363 ; DARWIN-32-PIC: call "L20$pb"
1364 ; DARWIN-32-PIC-NEXT: "L20$pb":
1365 ; DARWIN-32-PIC-NEXT: popl %eax
1366 ; DARWIN-32-PIC-NEXT: leal _ddst+64-"L20$pb"(%eax), %ecx
1367 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L20$pb"(%eax)
1368 ; DARWIN-32-PIC-NEXT: ret
1369
1370 ; DARWIN-64-STATIC: _qux04:
1371 ; DARWIN-64-STATIC: leaq _ddst+64(%rip), %rax
1372 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
1373 ; DARWIN-64-STATIC-NEXT: ret
1374
1375 ; DARWIN-64-DYNAMIC: _qux04:
1376 ; DARWIN-64-DYNAMIC: leaq _ddst+64(%rip), %rax
1377 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
1378 ; DARWIN-64-DYNAMIC-NEXT: ret
1379
1380 ; DARWIN-64-PIC: _qux04:
1381 ; DARWIN-64-PIC: leaq _ddst+64(%rip), %rax
1382 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
1383 ; DARWIN-64-PIC-NEXT: ret
4061384 }
4071385
4081386 define void @qux05() nounwind {
4161394 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
4171395 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
4181396 ; LINUX-64-STATIC: ret
1397
1398 ; LINUX-32-STATIC: qux05:
1399 ; LINUX-32-STATIC: movl dsrc+64, %eax
1400 ; LINUX-32-STATIC-NEXT: movl dptr, %ecx
1401 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1402 ; LINUX-32-STATIC-NEXT: ret
4191403 ret void
1404
1405 ; LINUX-32-PIC: qux05:
1406 ; LINUX-32-PIC: movl dsrc+64, %eax
1407 ; LINUX-32-PIC-NEXT: movl dptr, %ecx
1408 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1409 ; LINUX-32-PIC-NEXT: ret
1410
1411 ; LINUX-64-PIC: qux05:
1412 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
1413 ; LINUX-64-PIC-NEXT: movl 64(%rax), %eax
1414 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
1415 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1416 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1417 ; LINUX-64-PIC-NEXT: ret
1418
1419 ; DARWIN-32-STATIC: _qux05:
1420 ; DARWIN-32-STATIC: movl _dsrc+64, %eax
1421 ; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx
1422 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1423 ; DARWIN-32-STATIC-NEXT: ret
1424
1425 ; DARWIN-32-DYNAMIC: _qux05:
1426 ; DARWIN-32-DYNAMIC: movl _dsrc+64, %eax
1427 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx
1428 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1429 ; DARWIN-32-DYNAMIC-NEXT: ret
1430
1431 ; DARWIN-32-PIC: _qux05:
1432 ; DARWIN-32-PIC: call "L21$pb"
1433 ; DARWIN-32-PIC-NEXT: "L21$pb":
1434 ; DARWIN-32-PIC-NEXT: popl %eax
1435 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L21$pb"(%eax), %ecx
1436 ; DARWIN-32-PIC-NEXT: movl _dptr-"L21$pb"(%eax), %eax
1437 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1438 ; DARWIN-32-PIC-NEXT: ret
1439
1440 ; DARWIN-64-STATIC: _qux05:
1441 ; DARWIN-64-STATIC: movl _dsrc+64(%rip), %eax
1442 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
1443 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1444 ; DARWIN-64-STATIC-NEXT: ret
1445
1446 ; DARWIN-64-DYNAMIC: _qux05:
1447 ; DARWIN-64-DYNAMIC: movl _dsrc+64(%rip), %eax
1448 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
1449 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1450 ; DARWIN-64-DYNAMIC-NEXT: ret
1451
1452 ; DARWIN-64-PIC: _qux05:
1453 ; DARWIN-64-PIC: movl _dsrc+64(%rip), %eax
1454 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
1455 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1456 ; DARWIN-64-PIC-NEXT: ret
4201457 }
4211458
4221459 define void @qux06() nounwind {
4281465 ; LINUX-64-STATIC: movl lsrc+64(%rip), %eax
4291466 ; LINUX-64-STATIC: movl %eax, ldst+64
4301467 ; LINUX-64-STATIC: ret
1468
1469 ; LINUX-32-STATIC: qux06:
1470 ; LINUX-32-STATIC: movl lsrc+64, %eax
1471 ; LINUX-32-STATIC-NEXT: movl %eax, ldst+64
1472 ; LINUX-32-STATIC-NEXT: ret
1473
1474 ; LINUX-32-PIC: qux06:
1475 ; LINUX-32-PIC: movl lsrc+64, %eax
1476 ; LINUX-32-PIC-NEXT: movl %eax, ldst+64
1477 ; LINUX-32-PIC-NEXT: ret
1478
1479 ; LINUX-64-PIC: qux06:
1480 ; LINUX-64-PIC: movl lsrc+64(%rip), %eax
1481 ; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip)
1482 ; LINUX-64-PIC-NEXT: ret
1483
1484 ; DARWIN-32-STATIC: _qux06:
1485 ; DARWIN-32-STATIC: movl _lsrc+64, %eax
1486 ; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64
1487 ; DARWIN-32-STATIC-NEXT: ret
1488
1489 ; DARWIN-32-DYNAMIC: _qux06:
1490 ; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
1491 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64
1492 ; DARWIN-32-DYNAMIC-NEXT: ret
1493
1494 ; DARWIN-32-PIC: _qux06:
1495 ; DARWIN-32-PIC: call "L22$pb"
1496 ; DARWIN-32-PIC-NEXT: "L22$pb":
1497 ; DARWIN-32-PIC-NEXT: popl %eax
1498 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L22$pb"(%eax), %ecx
1499 ; DARWIN-32-PIC-NEXT: movl %ecx, _ldst+64-"L22$pb"(%eax)
1500 ; DARWIN-32-PIC-NEXT: ret
1501
1502 ; DARWIN-64-STATIC: _qux06:
1503 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
1504 ; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip)
1505 ; DARWIN-64-STATIC-NEXT: ret
1506
1507 ; DARWIN-64-DYNAMIC: _qux06:
1508 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
1509 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip)
1510 ; DARWIN-64-DYNAMIC-NEXT: ret
1511
1512 ; DARWIN-64-PIC: _qux06:
1513 ; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
1514 ; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip)
1515 ; DARWIN-64-PIC-NEXT: ret
4311516 }
4321517
4331518 define void @qux07() nounwind {
4371522 ; LINUX-64-STATIC: qux07:
4381523 ; LINUX-64-STATIC: movq $ldst+64, lptr
4391524 ; LINUX-64-STATIC: ret
1525
1526 ; LINUX-32-STATIC: qux07:
1527 ; LINUX-32-STATIC: movl $ldst+64, lptr
1528 ; LINUX-32-STATIC-NEXT: ret
1529
1530 ; LINUX-32-PIC: qux07:
1531 ; LINUX-32-PIC: movl $ldst+64, lptr
1532 ; LINUX-32-PIC-NEXT: ret
1533
1534 ; LINUX-64-PIC: qux07:
1535 ; LINUX-64-PIC: leaq ldst+64(%rip), %rax
1536 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
1537 ; LINUX-64-PIC-NEXT: ret
1538
1539 ; DARWIN-32-STATIC: _qux07:
1540 ; DARWIN-32-STATIC: movl $_ldst+64, _lptr
1541 ; DARWIN-32-STATIC-NEXT: ret
1542
1543 ; DARWIN-32-DYNAMIC: _qux07:
1544 ; DARWIN-32-DYNAMIC: movl $_ldst+64, _lptr
1545 ; DARWIN-32-DYNAMIC-NEXT: ret
1546
1547 ; DARWIN-32-PIC: _qux07:
1548 ; DARWIN-32-PIC: call "L23$pb"
1549 ; DARWIN-32-PIC-NEXT: "L23$pb":
1550 ; DARWIN-32-PIC-NEXT: popl %eax
1551 ; DARWIN-32-PIC-NEXT: leal _ldst+64-"L23$pb"(%eax), %ecx
1552 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L23$pb"(%eax)
1553 ; DARWIN-32-PIC-NEXT: ret
1554
1555 ; DARWIN-64-STATIC: _qux07:
1556 ; DARWIN-64-STATIC: leaq _ldst+64(%rip), %rax
1557 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
1558 ; DARWIN-64-STATIC-NEXT: ret
1559
1560 ; DARWIN-64-DYNAMIC: _qux07:
1561 ; DARWIN-64-DYNAMIC: leaq _ldst+64(%rip), %rax
1562 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
1563 ; DARWIN-64-DYNAMIC-NEXT: ret
1564
1565 ; DARWIN-64-PIC: _qux07:
1566 ; DARWIN-64-PIC: leaq _ldst+64(%rip), %rax
1567 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
1568 ; DARWIN-64-PIC-NEXT: ret
4401569 }
4411570
4421571 define void @qux08() nounwind {
4501579 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
4511580 ; LINUX-64-STATIC: movl %eax, 64(%rcx)
4521581 ; LINUX-64-STATIC: ret
1582
1583 ; LINUX-32-STATIC: qux08:
1584 ; LINUX-32-STATIC: movl lsrc+64, %eax
1585 ; LINUX-32-STATIC-NEXT: movl lptr, %ecx
1586 ; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx)
1587 ; LINUX-32-STATIC-NEXT: ret
4531588 ret void
1589
1590 ; LINUX-32-PIC: qux08:
1591 ; LINUX-32-PIC: movl lsrc+64, %eax
1592 ; LINUX-32-PIC-NEXT: movl lptr, %ecx
1593 ; LINUX-32-PIC-NEXT: movl %eax, 64(%ecx)
1594 ; LINUX-32-PIC-NEXT: ret
1595
1596 ; LINUX-64-PIC: qux08:
1597 ; LINUX-64-PIC: movl lsrc+64(%rip), %eax
1598 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
1599 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx)
1600 ; LINUX-64-PIC-NEXT: ret
1601
1602 ; DARWIN-32-STATIC: _qux08:
1603 ; DARWIN-32-STATIC: movl _lsrc+64, %eax
1604 ; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx
1605 ; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx)
1606 ; DARWIN-32-STATIC-NEXT: ret
1607
1608 ; DARWIN-32-DYNAMIC: _qux08:
1609 ; DARWIN-32-DYNAMIC: movl _lsrc+64, %eax
1610 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx
1611 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx)
1612 ; DARWIN-32-DYNAMIC-NEXT: ret
1613
1614 ; DARWIN-32-PIC: _qux08:
1615 ; DARWIN-32-PIC: call "L24$pb"
1616 ; DARWIN-32-PIC-NEXT: "L24$pb":
1617 ; DARWIN-32-PIC-NEXT: popl %eax
1618 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L24$pb"(%eax), %ecx
1619 ; DARWIN-32-PIC-NEXT: movl _lptr-"L24$pb"(%eax), %eax
1620 ; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax)
1621 ; DARWIN-32-PIC-NEXT: ret
1622
1623 ; DARWIN-64-STATIC: _qux08:
1624 ; DARWIN-64-STATIC: movl _lsrc+64(%rip), %eax
1625 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
1626 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx)
1627 ; DARWIN-64-STATIC-NEXT: ret
1628
1629 ; DARWIN-64-DYNAMIC: _qux08:
1630 ; DARWIN-64-DYNAMIC: movl _lsrc+64(%rip), %eax
1631 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
1632 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx)
1633 ; DARWIN-64-DYNAMIC-NEXT: ret
1634
1635 ; DARWIN-64-PIC: _qux08:
1636 ; DARWIN-64-PIC: movl _lsrc+64(%rip), %eax
1637 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
1638 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx)
1639 ; DARWIN-64-PIC-NEXT: ret
4541640 }
4551641
4561642 define void @ind00(i64 %i) nounwind {
4641650 ; LINUX-64-STATIC: movl src(,%rdi,4), %eax
4651651 ; LINUX-64-STATIC: movl %eax, dst(,%rdi,4)
4661652 ; LINUX-64-STATIC: ret
1653
1654 ; LINUX-32-STATIC: ind00:
1655 ; LINUX-32-STATIC: movl 4(%esp), %eax
1656 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
1657 ; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4)
1658 ; LINUX-32-STATIC-NEXT: ret
1659
1660 ; LINUX-32-PIC: ind00:
1661 ; LINUX-32-PIC: movl 4(%esp), %eax
1662 ; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
1663 ; LINUX-32-PIC-NEXT: movl %ecx, dst(,%eax,4)
1664 ; LINUX-32-PIC-NEXT: ret
1665
1666 ; LINUX-64-PIC: ind00:
1667 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1668 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1669 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
1670 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1671 ; LINUX-64-PIC-NEXT: ret
1672
1673 ; DARWIN-32-STATIC: _ind00:
1674 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1675 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
1676 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4)
1677 ; DARWIN-32-STATIC-NEXT: ret
1678
1679 ; DARWIN-32-DYNAMIC: _ind00:
1680 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1681 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
1682 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1683 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
1684 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
1685 ; DARWIN-32-DYNAMIC-NEXT: ret
1686
1687 ; DARWIN-32-PIC: _ind00:
1688 ; DARWIN-32-PIC: call "L25$pb"
1689 ; DARWIN-32-PIC-NEXT: "L25$pb":
1690 ; DARWIN-32-PIC-NEXT: popl %eax
1691 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1692 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L25$pb"(%eax), %edx
1693 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
1694 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L25$pb"(%eax), %eax
1695 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
1696 ; DARWIN-32-PIC-NEXT: ret
1697
1698 ; DARWIN-64-STATIC: _ind00:
1699 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
1700 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
1701 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1702 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
1703 ; DARWIN-64-STATIC-NEXT: ret
1704
1705 ; DARWIN-64-DYNAMIC: _ind00:
1706 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
1707 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
1708 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1709 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
1710 ; DARWIN-64-DYNAMIC-NEXT: ret
1711
1712 ; DARWIN-64-PIC: _ind00:
1713 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
1714 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1715 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
1716 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1717 ; DARWIN-64-PIC-NEXT: ret
4671718 }
4681719
4691720 define void @ixd00(i64 %i) nounwind {
4771728 ; LINUX-64-STATIC: movl xsrc(,%rdi,4), %eax
4781729 ; LINUX-64-STATIC: movl %eax, xdst(,%rdi,4)
4791730 ; LINUX-64-STATIC: ret
1731
1732 ; LINUX-32-STATIC: ixd00:
1733 ; LINUX-32-STATIC: movl 4(%esp), %eax
1734 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
1735 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4)
1736 ; LINUX-32-STATIC-NEXT: ret
1737
1738 ; LINUX-32-PIC: ixd00:
1739 ; LINUX-32-PIC: movl 4(%esp), %eax
1740 ; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
1741 ; LINUX-32-PIC-NEXT: movl %ecx, xdst(,%eax,4)
1742 ; LINUX-32-PIC-NEXT: ret
1743
1744 ; LINUX-64-PIC: ixd00:
1745 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
1746 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1747 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
1748 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1749 ; LINUX-64-PIC-NEXT: ret
1750
1751 ; DARWIN-32-STATIC: _ixd00:
1752 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1753 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
1754 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4)
1755 ; DARWIN-32-STATIC-NEXT: ret
1756
1757 ; DARWIN-32-DYNAMIC: _ixd00:
1758 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1759 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
1760 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1761 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
1762 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
1763 ; DARWIN-32-DYNAMIC-NEXT: ret
1764
1765 ; DARWIN-32-PIC: _ixd00:
1766 ; DARWIN-32-PIC: call "L26$pb"
1767 ; DARWIN-32-PIC-NEXT: "L26$pb":
1768 ; DARWIN-32-PIC-NEXT: popl %eax
1769 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1770 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L26$pb"(%eax), %edx
1771 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
1772 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L26$pb"(%eax), %eax
1773 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
1774 ; DARWIN-32-PIC-NEXT: ret
1775
1776 ; DARWIN-64-STATIC: _ixd00:
1777 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
1778 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
1779 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1780 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
1781 ; DARWIN-64-STATIC-NEXT: ret
1782
1783 ; DARWIN-64-DYNAMIC: _ixd00:
1784 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
1785 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
1786 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1787 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
1788 ; DARWIN-64-DYNAMIC-NEXT: ret
1789
1790 ; DARWIN-64-PIC: _ixd00:
1791 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
1792 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1793 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
1794 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1795 ; DARWIN-64-PIC-NEXT: ret
4801796 }
4811797
4821798 define void @ind01(i64 %i) nounwind {
4881804 ; LINUX-64-STATIC: leaq dst(,%rdi,4), %rax
4891805 ; LINUX-64-STATIC: movq %rax, ptr
4901806 ; LINUX-64-STATIC: ret
1807
1808 ; LINUX-32-STATIC: ind01:
1809 ; LINUX-32-STATIC: movl 4(%esp), %eax
1810 ; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax
1811 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
1812 ; LINUX-32-STATIC-NEXT: ret
1813
1814 ; LINUX-32-PIC: ind01:
1815 ; LINUX-32-PIC: movl 4(%esp), %eax
1816 ; LINUX-32-PIC-NEXT: leal dst(,%eax,4), %eax
1817 ; LINUX-32-PIC-NEXT: movl %eax, ptr
1818 ; LINUX-32-PIC-NEXT: ret
1819
1820 ; LINUX-64-PIC: ind01:
1821 ; LINUX-64-PIC: shlq $2, %rdi
1822 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi
1823 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
1824 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
1825 ; LINUX-64-PIC-NEXT: ret
1826
1827 ; DARWIN-32-STATIC: _ind01:
1828 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1829 ; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax
1830 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
1831 ; DARWIN-32-STATIC-NEXT: ret
1832
1833 ; DARWIN-32-DYNAMIC: _ind01:
1834 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1835 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
1836 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
1837 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1838 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1839 ; DARWIN-32-DYNAMIC-NEXT: ret
1840
1841 ; DARWIN-32-PIC: _ind01:
1842 ; DARWIN-32-PIC: call "L27$pb"
1843 ; DARWIN-32-PIC-NEXT: "L27$pb":
1844 ; DARWIN-32-PIC-NEXT: popl %eax
1845 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1846 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
1847 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-"L27$pb"(%eax), %ecx
1848 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L27$pb"(%eax), %eax
1849 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1850 ; DARWIN-32-PIC-NEXT: ret
1851
1852 ; DARWIN-64-STATIC: _ind01:
1853 ; DARWIN-64-STATIC: shlq $2, %rdi
1854 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1855 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1856 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
1857 ; DARWIN-64-STATIC-NEXT: ret
1858
1859 ; DARWIN-64-DYNAMIC: _ind01:
1860 ; DARWIN-64-DYNAMIC: shlq $2, %rdi
1861 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1862 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1863 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
1864 ; DARWIN-64-DYNAMIC-NEXT: ret
1865
1866 ; DARWIN-64-PIC: _ind01:
1867 ; DARWIN-64-PIC: shlq $2, %rdi
1868 ; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi
1869 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1870 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
1871 ; DARWIN-64-PIC-NEXT: ret
4911872 }
4921873
4931874 define void @ixd01(i64 %i) nounwind {
4991880 ; LINUX-64-STATIC: leaq xdst(,%rdi,4), %rax
5001881 ; LINUX-64-STATIC: movq %rax, ptr
5011882 ; LINUX-64-STATIC: ret
1883
1884 ; LINUX-32-STATIC: ixd01:
1885 ; LINUX-32-STATIC: movl 4(%esp), %eax
1886 ; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax
1887 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
1888 ; LINUX-32-STATIC-NEXT: ret
1889
1890 ; LINUX-32-PIC: ixd01:
1891 ; LINUX-32-PIC: movl 4(%esp), %eax
1892 ; LINUX-32-PIC-NEXT: leal xdst(,%eax,4), %eax
1893 ; LINUX-32-PIC-NEXT: movl %eax, ptr
1894 ; LINUX-32-PIC-NEXT: ret
1895
1896 ; LINUX-64-PIC: ixd01:
1897 ; LINUX-64-PIC: shlq $2, %rdi
1898 ; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi
1899 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax
1900 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
1901 ; LINUX-64-PIC-NEXT: ret
1902
1903 ; DARWIN-32-STATIC: _ixd01:
1904 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1905 ; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax
1906 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
1907 ; DARWIN-32-STATIC-NEXT: ret
1908
1909 ; DARWIN-32-DYNAMIC: _ixd01:
1910 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1911 ; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax
1912 ; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax
1913 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
1914 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
1915 ; DARWIN-32-DYNAMIC-NEXT: ret
1916
1917 ; DARWIN-32-PIC: _ixd01:
1918 ; DARWIN-32-PIC: call "L28$pb"
1919 ; DARWIN-32-PIC-NEXT: "L28$pb":
1920 ; DARWIN-32-PIC-NEXT: popl %eax
1921 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
1922 ; DARWIN-32-PIC-NEXT: shll $2, %ecx
1923 ; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-"L28$pb"(%eax), %ecx
1924 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L28$pb"(%eax), %eax
1925 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
1926 ; DARWIN-32-PIC-NEXT: ret
1927
1928 ; DARWIN-64-STATIC: _ixd01:
1929 ; DARWIN-64-STATIC: shlq $2, %rdi
1930 ; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1931 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1932 ; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax)
1933 ; DARWIN-64-STATIC-NEXT: ret
1934
1935 ; DARWIN-64-DYNAMIC: _ixd01:
1936 ; DARWIN-64-DYNAMIC: shlq $2, %rdi
1937 ; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1938 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1939 ; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax)
1940 ; DARWIN-64-DYNAMIC-NEXT: ret
1941
1942 ; DARWIN-64-PIC: _ixd01:
1943 ; DARWIN-64-PIC: shlq $2, %rdi
1944 ; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi
1945 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax
1946 ; DARWIN-64-PIC-NEXT: movq %rdi, (%rax)
1947 ; DARWIN-64-PIC-NEXT: ret
5021948 }
5031949
5041950 define void @ind02(i64 %i) nounwind {
5141960 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
5151961 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
5161962 ; LINUX-64-STATIC: ret
1963
1964 ; LINUX-32-STATIC: ind02:
1965 ; LINUX-32-STATIC: movl 4(%esp), %eax
1966 ; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx
1967 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
1968 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
1969 ; LINUX-32-STATIC-NEXT: ret
1970
1971 ; LINUX-32-PIC: ind02:
1972 ; LINUX-32-PIC: movl 4(%esp), %eax
1973 ; LINUX-32-PIC-NEXT: movl src(,%eax,4), %ecx
1974 ; LINUX-32-PIC-NEXT: movl ptr, %edx
1975 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
1976 ; LINUX-32-PIC-NEXT: ret
1977
1978 ; LINUX-64-PIC: ind02:
1979 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
1980 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
1981 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
1982 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
1983 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
1984 ; LINUX-64-PIC-NEXT: ret
1985
1986 ; DARWIN-32-STATIC: _ind02:
1987 ; DARWIN-32-STATIC: movl 4(%esp), %eax
1988 ; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx
1989 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
1990 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
1991 ; DARWIN-32-STATIC-NEXT: ret
1992
1993 ; DARWIN-32-DYNAMIC: _ind02:
1994 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
1995 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
1996 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
1997 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
1998 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
1999 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2000 ; DARWIN-32-DYNAMIC-NEXT: ret
2001
2002 ; DARWIN-32-PIC: _ind02:
2003 ; DARWIN-32-PIC: call "L29$pb"
2004 ; DARWIN-32-PIC-NEXT: "L29$pb":
2005 ; DARWIN-32-PIC-NEXT: popl %eax
2006 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2007 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L29$pb"(%eax), %edx
2008 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2009 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L29$pb"(%eax), %eax
2010 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2011 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2012 ; DARWIN-32-PIC-NEXT: ret
2013
2014 ; DARWIN-64-STATIC: _ind02:
2015 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2016 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2017 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2018 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2019 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2020 ; DARWIN-64-STATIC-NEXT: ret
2021
2022 ; DARWIN-64-DYNAMIC: _ind02:
2023 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2024 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2025 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2026 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2027 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2028 ; DARWIN-64-DYNAMIC-NEXT: ret
2029
2030 ; DARWIN-64-PIC: _ind02:
2031 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2032 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2033 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2034 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2035 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2036 ; DARWIN-64-PIC-NEXT: ret
5172037 }
5182038
5192039 define void @ixd02(i64 %i) nounwind {
5292049 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
5302050 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
5312051 ; LINUX-64-STATIC: ret
2052
2053 ; LINUX-32-STATIC: ixd02:
2054 ; LINUX-32-STATIC: movl 4(%esp), %eax
2055 ; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx
2056 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2057 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2058 ; LINUX-32-STATIC-NEXT: ret
2059
2060 ; LINUX-32-PIC: ixd02:
2061 ; LINUX-32-PIC: movl 4(%esp), %eax
2062 ; LINUX-32-PIC-NEXT: movl xsrc(,%eax,4), %ecx
2063 ; LINUX-32-PIC-NEXT: movl ptr, %edx
2064 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2065 ; LINUX-32-PIC-NEXT: ret
2066
2067 ; LINUX-64-PIC: ixd02:
2068 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
2069 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2070 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2071 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2072 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2073 ; LINUX-64-PIC-NEXT: ret
2074
2075 ; DARWIN-32-STATIC: _ixd02:
2076 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2077 ; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx
2078 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2079 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2080 ; DARWIN-32-STATIC-NEXT: ret
2081
2082 ; DARWIN-32-DYNAMIC: _ixd02:
2083 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2084 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2085 ; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx
2086 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2087 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2088 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2089 ; DARWIN-32-DYNAMIC-NEXT: ret
2090
2091 ; DARWIN-32-PIC: _ixd02:
2092 ; DARWIN-32-PIC: call "L30$pb"
2093 ; DARWIN-32-PIC-NEXT: "L30$pb":
2094 ; DARWIN-32-PIC-NEXT: popl %eax
2095 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2096 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L30$pb"(%eax), %edx
2097 ; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx
2098 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L30$pb"(%eax), %eax
2099 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2100 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2101 ; DARWIN-32-PIC-NEXT: ret
2102
2103 ; DARWIN-64-STATIC: _ixd02:
2104 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
2105 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2106 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2107 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2108 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2109 ; DARWIN-64-STATIC-NEXT: ret
2110
2111 ; DARWIN-64-DYNAMIC: _ixd02:
2112 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
2113 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2114 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2115 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2116 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2117 ; DARWIN-64-DYNAMIC-NEXT: ret
2118
2119 ; DARWIN-64-PIC: _ixd02:
2120 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
2121 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2122 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2123 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2124 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2125 ; DARWIN-64-PIC-NEXT: ret
5322126 }
5332127
5342128 define void @ind03(i64 %i) nounwind {
5422136 ; LINUX-64-STATIC: movl dsrc(,%rdi,4), %eax
5432137 ; LINUX-64-STATIC: movl %eax, ddst(,%rdi,4)
5442138 ; LINUX-64-STATIC: ret
2139
2140 ; LINUX-32-STATIC: ind03:
2141 ; LINUX-32-STATIC: movl 4(%esp), %eax
2142 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2143 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4)
2144 ; LINUX-32-STATIC-NEXT: ret
2145
2146 ; LINUX-32-PIC: ind03:
2147 ; LINUX-32-PIC: movl 4(%esp), %eax
2148 ; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
2149 ; LINUX-32-PIC-NEXT: movl %ecx, ddst(,%eax,4)
2150 ; LINUX-32-PIC-NEXT: ret
2151
2152 ; LINUX-64-PIC: ind03:
2153 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
2154 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2155 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
2156 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2157 ; LINUX-64-PIC-NEXT: ret
2158
2159 ; DARWIN-32-STATIC: _ind03:
2160 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2161 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2162 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4)
2163 ; DARWIN-32-STATIC-NEXT: ret
2164
2165 ; DARWIN-32-DYNAMIC: _ind03:
2166 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2167 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2168 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4)
2169 ; DARWIN-32-DYNAMIC-NEXT: ret
2170
2171 ; DARWIN-32-PIC: _ind03:
2172 ; DARWIN-32-PIC: call "L31$pb"
2173 ; DARWIN-32-PIC-NEXT: "L31$pb":
2174 ; DARWIN-32-PIC-NEXT: popl %eax
2175 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2176 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L31$pb"(%eax,%ecx,4), %edx
2177 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst-"L31$pb"(%eax,%ecx,4)
2178 ; DARWIN-32-PIC-NEXT: ret
2179
2180 ; DARWIN-64-STATIC: _ind03:
2181 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
2182 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2183 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
2184 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2185 ; DARWIN-64-STATIC-NEXT: ret
2186
2187 ; DARWIN-64-DYNAMIC: _ind03:
2188 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
2189 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2190 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
2191 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2192 ; DARWIN-64-DYNAMIC-NEXT: ret
2193
2194 ; DARWIN-64-PIC: _ind03:
2195 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
2196 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2197 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
2198 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2199 ; DARWIN-64-PIC-NEXT: ret
5452200 }
5462201
5472202 define void @ind04(i64 %i) nounwind {
5532208 ; LINUX-64-STATIC: leaq ddst(,%rdi,4), %rax
5542209 ; LINUX-64-STATIC: movq %rax, dptr
5552210 ; LINUX-64-STATIC: ret
2211
2212 ; LINUX-32-STATIC: ind04:
2213 ; LINUX-32-STATIC: movl 4(%esp), %eax
2214 ; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax
2215 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
2216 ; LINUX-32-STATIC-NEXT: ret
2217
2218 ; LINUX-32-PIC: ind04:
2219 ; LINUX-32-PIC: movl 4(%esp), %eax
2220 ; LINUX-32-PIC-NEXT: leal ddst(,%eax,4), %eax
2221 ; LINUX-32-PIC-NEXT: movl %eax, dptr
2222 ; LINUX-32-PIC-NEXT: ret
2223
2224 ; LINUX-64-PIC: ind04:
2225 ; LINUX-64-PIC: shlq $2, %rdi
2226 ; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rdi
2227 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax
2228 ; LINUX-64-PIC-NEXT: movq %rdi, (%rax)
2229 ; LINUX-64-PIC-NEXT: ret
2230
2231 ; DARWIN-32-STATIC: _ind04:
2232 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2233 ; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax
2234 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
2235 ; DARWIN-32-STATIC-NEXT: ret
2236
2237 ; DARWIN-32-DYNAMIC: _ind04:
2238 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2239 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax
2240 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
2241 ; DARWIN-32-DYNAMIC-NEXT: ret
2242
2243 ; DARWIN-32-PIC: _ind04:
2244 ; DARWIN-32-PIC: call "L32$pb"
2245 ; DARWIN-32-PIC-NEXT: "L32$pb":
2246 ; DARWIN-32-PIC-NEXT: popl %eax
2247 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2248 ; DARWIN-32-PIC-NEXT: leal _ddst-"L32$pb"(%eax,%ecx,4), %ecx
2249 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L32$pb"(%eax)
2250 ; DARWIN-32-PIC-NEXT: ret
2251
2252 ; DARWIN-64-STATIC: _ind04:
2253 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
2254 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
2255 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
2256 ; DARWIN-64-STATIC-NEXT: ret
2257
2258 ; DARWIN-64-DYNAMIC: _ind04:
2259 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
2260 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
2261 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
2262 ; DARWIN-64-DYNAMIC-NEXT: ret
2263
2264 ; DARWIN-64-PIC: _ind04:
2265 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
2266 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2267 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
2268 ; DARWIN-64-PIC-NEXT: ret
5562269 }
5572270
5582271 define void @ind05(i64 %i) nounwind {
5682281 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
5692282 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
5702283 ; LINUX-64-STATIC: ret
2284
2285 ; LINUX-32-STATIC: ind05:
2286 ; LINUX-32-STATIC: movl 4(%esp), %eax
2287 ; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx
2288 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
2289 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2290 ; LINUX-32-STATIC-NEXT: ret
2291
2292 ; LINUX-32-PIC: ind05:
2293 ; LINUX-32-PIC: movl 4(%esp), %eax
2294 ; LINUX-32-PIC-NEXT: movl dsrc(,%eax,4), %ecx
2295 ; LINUX-32-PIC-NEXT: movl dptr, %edx
2296 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2297 ; LINUX-32-PIC-NEXT: ret
2298
2299 ; LINUX-64-PIC: ind05:
2300 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
2301 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2302 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
2303 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2304 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2305 ; LINUX-64-PIC-NEXT: ret
2306
2307 ; DARWIN-32-STATIC: _ind05:
2308 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2309 ; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx
2310 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
2311 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2312 ; DARWIN-32-STATIC-NEXT: ret
2313
2314 ; DARWIN-32-DYNAMIC: _ind05:
2315 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2316 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx
2317 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
2318 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2319 ; DARWIN-32-DYNAMIC-NEXT: ret
2320
2321 ; DARWIN-32-PIC: _ind05:
2322 ; DARWIN-32-PIC: call "L33$pb"
2323 ; DARWIN-32-PIC-NEXT: "L33$pb":
2324 ; DARWIN-32-PIC-NEXT: popl %eax
2325 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2326 ; DARWIN-32-PIC-NEXT: movl _dsrc-"L33$pb"(%eax,%ecx,4), %edx
2327 ; DARWIN-32-PIC-NEXT: movl _dptr-"L33$pb"(%eax), %eax
2328 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2329 ; DARWIN-32-PIC-NEXT: ret
2330
2331 ; DARWIN-64-STATIC: _ind05:
2332 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
2333 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2334 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
2335 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2336 ; DARWIN-64-STATIC-NEXT: ret
2337
2338 ; DARWIN-64-DYNAMIC: _ind05:
2339 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
2340 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2341 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
2342 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2343 ; DARWIN-64-DYNAMIC-NEXT: ret
2344
2345 ; DARWIN-64-PIC: _ind05:
2346 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
2347 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2348 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
2349 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2350 ; DARWIN-64-PIC-NEXT: ret
5712351 }
5722352
5732353 define void @ind06(i64 %i) nounwind {
5812361 ; LINUX-64-STATIC: movl lsrc(,%rdi,4), %eax
5822362 ; LINUX-64-STATIC: movl %eax, ldst(,%rdi,4)
5832363 ; LINUX-64-STATIC: ret
2364
2365 ; LINUX-32-STATIC: ind06:
2366 ; LINUX-32-STATIC: movl 4(%esp), %eax
2367 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
2368 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4)
2369 ; LINUX-32-STATIC-NEXT: ret
2370
2371 ; LINUX-32-PIC: ind06:
2372 ; LINUX-32-PIC: movl 4(%esp), %eax
2373 ; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
2374 ; LINUX-32-PIC-NEXT: movl %ecx, ldst(,%eax,4)
2375 ; LINUX-32-PIC-NEXT: ret
2376
2377 ; LINUX-64-PIC: ind06:
2378 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
2379 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2380 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
2381 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2382 ; LINUX-64-PIC-NEXT: ret
2383
2384 ; DARWIN-32-STATIC: _ind06:
2385 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2386 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
2387 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4)
2388 ; DARWIN-32-STATIC-NEXT: ret
2389
2390 ; DARWIN-32-DYNAMIC: _ind06:
2391 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2392 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
2393 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4)
2394 ; DARWIN-32-DYNAMIC-NEXT: ret
2395
2396 ; DARWIN-32-PIC: _ind06:
2397 ; DARWIN-32-PIC: call "L34$pb"
2398 ; DARWIN-32-PIC-NEXT: "L34$pb":
2399 ; DARWIN-32-PIC-NEXT: popl %eax
2400 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2401 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L34$pb"(%eax,%ecx,4), %edx
2402 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst-"L34$pb"(%eax,%ecx,4)
2403 ; DARWIN-32-PIC-NEXT: ret
2404
2405 ; DARWIN-64-STATIC: _ind06:
2406 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
2407 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2408 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
2409 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2410 ; DARWIN-64-STATIC-NEXT: ret
2411
2412 ; DARWIN-64-DYNAMIC: _ind06:
2413 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
2414 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2415 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
2416 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2417 ; DARWIN-64-DYNAMIC-NEXT: ret
2418
2419 ; DARWIN-64-PIC: _ind06:
2420 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
2421 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2422 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
2423 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2424 ; DARWIN-64-PIC-NEXT: ret
5842425 }
5852426
5862427 define void @ind07(i64 %i) nounwind {
5922433 ; LINUX-64-STATIC: leaq ldst(,%rdi,4), %rax
5932434 ; LINUX-64-STATIC: movq %rax, lptr
5942435 ; LINUX-64-STATIC: ret
2436
2437 ; LINUX-32-STATIC: ind07:
2438 ; LINUX-32-STATIC: movl 4(%esp), %eax
2439 ; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax
2440 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
2441 ; LINUX-32-STATIC-NEXT: ret
2442
2443 ; LINUX-32-PIC: ind07:
2444 ; LINUX-32-PIC: movl 4(%esp), %eax
2445 ; LINUX-32-PIC-NEXT: leal ldst(,%eax,4), %eax
2446 ; LINUX-32-PIC-NEXT: movl %eax, lptr
2447 ; LINUX-32-PIC-NEXT: ret
2448
2449 ; LINUX-64-PIC: ind07:
2450 ; LINUX-64-PIC: leaq ldst(%rip), %rax
2451 ; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2452 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
2453 ; LINUX-64-PIC-NEXT: ret
2454
2455 ; DARWIN-32-STATIC: _ind07:
2456 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2457 ; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax
2458 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
2459 ; DARWIN-32-STATIC-NEXT: ret
2460
2461 ; DARWIN-32-DYNAMIC: _ind07:
2462 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2463 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax
2464 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
2465 ; DARWIN-32-DYNAMIC-NEXT: ret
2466
2467 ; DARWIN-32-PIC: _ind07:
2468 ; DARWIN-32-PIC: call "L35$pb"
2469 ; DARWIN-32-PIC-NEXT: "L35$pb":
2470 ; DARWIN-32-PIC-NEXT: popl %eax
2471 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2472 ; DARWIN-32-PIC-NEXT: leal _ldst-"L35$pb"(%eax,%ecx,4), %ecx
2473 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L35$pb"(%eax)
2474 ; DARWIN-32-PIC-NEXT: ret
2475
2476 ; DARWIN-64-STATIC: _ind07:
2477 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
2478 ; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax
2479 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
2480 ; DARWIN-64-STATIC-NEXT: ret
2481
2482 ; DARWIN-64-DYNAMIC: _ind07:
2483 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
2484 ; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax
2485 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
2486 ; DARWIN-64-DYNAMIC-NEXT: ret
2487
2488 ; DARWIN-64-PIC: _ind07:
2489 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
2490 ; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax
2491 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
2492 ; DARWIN-64-PIC-NEXT: ret
5952493 }
5962494
5972495 define void @ind08(i64 %i) nounwind {
6072505 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
6082506 ; LINUX-64-STATIC: movl %eax, (%rcx,%rdi,4)
6092507 ; LINUX-64-STATIC: ret
2508
2509 ; LINUX-32-STATIC: ind08:
2510 ; LINUX-32-STATIC: movl 4(%esp), %eax
2511 ; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx
2512 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
2513 ; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2514 ; LINUX-32-STATIC-NEXT: ret
2515
2516 ; LINUX-32-PIC: ind08:
2517 ; LINUX-32-PIC: movl 4(%esp), %eax
2518 ; LINUX-32-PIC-NEXT: movl lsrc(,%eax,4), %ecx
2519 ; LINUX-32-PIC-NEXT: movl lptr, %edx
2520 ; LINUX-32-PIC-NEXT: movl %ecx, (%edx,%eax,4)
2521 ; LINUX-32-PIC-NEXT: ret
2522
2523 ; LINUX-64-PIC: ind08:
2524 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
2525 ; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2526 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
2527 ; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2528 ; LINUX-64-PIC-NEXT: ret
2529
2530 ; DARWIN-32-STATIC: _ind08:
2531 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2532 ; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx
2533 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
2534 ; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4)
2535 ; DARWIN-32-STATIC-NEXT: ret
2536
2537 ; DARWIN-32-DYNAMIC: _ind08:
2538 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2539 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx
2540 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
2541 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4)
2542 ; DARWIN-32-DYNAMIC-NEXT: ret
2543
2544 ; DARWIN-32-PIC: _ind08:
2545 ; DARWIN-32-PIC: call "L36$pb"
2546 ; DARWIN-32-PIC-NEXT: "L36$pb":
2547 ; DARWIN-32-PIC-NEXT: popl %eax
2548 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2549 ; DARWIN-32-PIC-NEXT: movl _lsrc-"L36$pb"(%eax,%ecx,4), %edx
2550 ; DARWIN-32-PIC-NEXT: movl _lptr-"L36$pb"(%eax), %eax
2551 ; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4)
2552 ; DARWIN-32-PIC-NEXT: ret
2553
2554 ; DARWIN-64-STATIC: _ind08:
2555 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
2556 ; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax
2557 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
2558 ; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4)
2559 ; DARWIN-64-STATIC-NEXT: ret
2560
2561 ; DARWIN-64-DYNAMIC: _ind08:
2562 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
2563 ; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax
2564 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
2565 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4)
2566 ; DARWIN-64-DYNAMIC-NEXT: ret
2567
2568 ; DARWIN-64-PIC: _ind08:
2569 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
2570 ; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax
2571 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
2572 ; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4)
2573 ; DARWIN-64-PIC-NEXT: ret
6102574 }
6112575
6122576 define void @off00(i64 %i) nounwind {
6212585 ; LINUX-64-STATIC: movl src+64(,%rdi,4), %eax
6222586 ; LINUX-64-STATIC: movl %eax, dst+64(,%rdi,4)
6232587 ; LINUX-64-STATIC: ret
2588
2589 ; LINUX-32-STATIC: off00:
2590 ; LINUX-32-STATIC: movl 4(%esp), %eax
2591 ; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
2592 ; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4)
2593 ; LINUX-32-STATIC-NEXT: ret
2594
2595 ; LINUX-32-PIC: off00:
2596 ; LINUX-32-PIC: movl 4(%esp), %eax
2597 ; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx
2598 ; LINUX-32-PIC-NEXT: movl %ecx, dst+64(,%eax,4)
2599 ; LINUX-32-PIC-NEXT: ret
2600
2601 ; LINUX-64-PIC: off00:
2602 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
2603 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2604 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
2605 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2606 ; LINUX-64-PIC-NEXT: ret
2607
2608 ; DARWIN-32-STATIC: _off00:
2609 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2610 ; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
2611 ; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4)
2612 ; DARWIN-32-STATIC-NEXT: ret
2613
2614 ; DARWIN-32-DYNAMIC: _off00:
2615 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2616 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
2617 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
2618 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx
2619 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2620 ; DARWIN-32-DYNAMIC-NEXT: ret
2621
2622 ; DARWIN-32-PIC: _off00:
2623 ; DARWIN-32-PIC: call "L37$pb"
2624 ; DARWIN-32-PIC-NEXT: "L37$pb":
2625 ; DARWIN-32-PIC-NEXT: popl %eax
2626 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2627 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L37$pb"(%eax), %edx
2628 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
2629 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L37$pb"(%eax), %eax
2630 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
2631 ; DARWIN-32-PIC-NEXT: ret
2632
2633 ; DARWIN-64-STATIC: _off00:
2634 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2635 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
2636 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2637 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2638 ; DARWIN-64-STATIC-NEXT: ret
2639
2640 ; DARWIN-64-DYNAMIC: _off00:
2641 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2642 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
2643 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2644 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2645 ; DARWIN-64-DYNAMIC-NEXT: ret
2646
2647 ; DARWIN-64-PIC: _off00:
2648 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2649 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2650 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
2651 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2652 ; DARWIN-64-PIC-NEXT: ret
6242653 }
6252654
6262655 define void @oxf00(i64 %i) nounwind {
6352664 ; LINUX-64-STATIC: movl xsrc+64(,%rdi,4), %eax
6362665 ; LINUX-64-STATIC: movl %eax, xdst+64(,%rdi,4)
6372666 ; LINUX-64-STATIC: ret
2667
2668 ; LINUX-32-STATIC: oxf00:
2669 ; LINUX-32-STATIC: movl 4(%esp), %eax
2670 ; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
2671 ; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4)
2672 ; LINUX-32-STATIC-NEXT: ret
2673
2674 ; LINUX-32-PIC: oxf00:
2675 ; LINUX-32-PIC: movl 4(%esp), %eax
2676 ; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx
2677 ; LINUX-32-PIC-NEXT: movl %ecx, xdst+64(,%eax,4)
2678 ; LINUX-32-PIC-NEXT: ret
2679
2680 ; LINUX-64-PIC: oxf00:
2681 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
2682 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2683 ; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx
2684 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2685 ; LINUX-64-PIC-NEXT: ret
2686
2687 ; DARWIN-32-STATIC: _oxf00:
2688 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2689 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
2690 ; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4)
2691 ; DARWIN-32-STATIC-NEXT: ret
2692
2693 ; DARWIN-32-DYNAMIC: _oxf00:
2694 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2695 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
2696 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
2697 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx
2698 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2699 ; DARWIN-32-DYNAMIC-NEXT: ret
2700
2701 ; DARWIN-32-PIC: _oxf00:
2702 ; DARWIN-32-PIC: call "L38$pb"
2703 ; DARWIN-32-PIC-NEXT: "L38$pb":
2704 ; DARWIN-32-PIC-NEXT: popl %eax
2705 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2706 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L38$pb"(%eax), %edx
2707 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
2708 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L38$pb"(%eax), %eax
2709 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
2710 ; DARWIN-32-PIC-NEXT: ret
2711
2712 ; DARWIN-64-STATIC: _oxf00:
2713 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
2714 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
2715 ; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2716 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2717 ; DARWIN-64-STATIC-NEXT: ret
2718
2719 ; DARWIN-64-DYNAMIC: _oxf00:
2720 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
2721 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
2722 ; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2723 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2724 ; DARWIN-64-DYNAMIC-NEXT: ret
2725
2726 ; DARWIN-64-PIC: _oxf00:
2727 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
2728 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2729 ; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx
2730 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2731 ; DARWIN-64-PIC-NEXT: ret
6382732 }
6392733
6402734 define void @off01(i64 %i) nounwind {
6472741 ; LINUX-64-STATIC: leaq dst+64(,%rdi,4), %rax
6482742 ; LINUX-64-STATIC: movq %rax, ptr
6492743 ; LINUX-64-STATIC: ret
2744
2745 ; LINUX-32-STATIC: off01:
2746 ; LINUX-32-STATIC: movl 4(%esp), %eax
2747 ; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax
2748 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
2749 ; LINUX-32-STATIC-NEXT: ret
2750
2751 ; LINUX-32-PIC: off01:
2752 ; LINUX-32-PIC: movl 4(%esp), %eax
2753 ; LINUX-32-PIC-NEXT: leal dst+64(,%eax,4), %eax
2754 ; LINUX-32-PIC-NEXT: movl %eax, ptr
2755 ; LINUX-32-PIC-NEXT: ret
2756
2757 ; LINUX-64-PIC: off01:
2758 ; LINUX-64-PIC: movq dst@GOTPCREL(%rip), %rax
2759 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2760 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2761 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
2762 ; LINUX-64-PIC-NEXT: ret
2763
2764 ; DARWIN-32-STATIC: _off01:
2765 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2766 ; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax
2767 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
2768 ; DARWIN-32-STATIC-NEXT: ret
2769
2770 ; DARWIN-32-DYNAMIC: _off01:
2771 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2772 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
2773 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
2774 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
2775 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
2776 ; DARWIN-32-DYNAMIC-NEXT: ret
2777
2778 ; DARWIN-32-PIC: _off01:
2779 ; DARWIN-32-PIC: call "L39$pb"
2780 ; DARWIN-32-PIC-NEXT: "L39$pb":
2781 ; DARWIN-32-PIC-NEXT: popl %eax
2782 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2783 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L39$pb"(%eax), %edx
2784 ; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
2785 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L39$pb"(%eax), %eax
2786 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
2787 ; DARWIN-32-PIC-NEXT: ret
2788
2789 ; DARWIN-64-STATIC: _off01:
2790 ; DARWIN-64-STATIC: movq _dst@GOTPCREL(%rip), %rax
2791 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2792 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2793 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
2794 ; DARWIN-64-STATIC-NEXT: ret
2795
2796 ; DARWIN-64-DYNAMIC: _off01:
2797 ; DARWIN-64-DYNAMIC: movq _dst@GOTPCREL(%rip), %rax
2798 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2799 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2800 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
2801 ; DARWIN-64-DYNAMIC-NEXT: ret
2802
2803 ; DARWIN-64-PIC: _off01:
2804 ; DARWIN-64-PIC: movq _dst@GOTPCREL(%rip), %rax
2805 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2806 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2807 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
2808 ; DARWIN-64-PIC-NEXT: ret
6502809 }
6512810
6522811 define void @oxf01(i64 %i) nounwind {
6592818 ; LINUX-64-STATIC: leaq xdst+64(,%rdi,4), %rax
6602819 ; LINUX-64-STATIC: movq %rax, ptr
6612820 ; LINUX-64-STATIC: ret
2821
2822 ; LINUX-32-STATIC: oxf01:
2823 ; LINUX-32-STATIC: movl 4(%esp), %eax
2824 ; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax
2825 ; LINUX-32-STATIC-NEXT: movl %eax, ptr
2826 ; LINUX-32-STATIC-NEXT: ret
2827
2828 ; LINUX-32-PIC: oxf01:
2829 ; LINUX-32-PIC: movl 4(%esp), %eax
2830 ; LINUX-32-PIC-NEXT: leal xdst+64(,%eax,4), %eax
2831 ; LINUX-32-PIC-NEXT: movl %eax, ptr
2832 ; LINUX-32-PIC-NEXT: ret
2833
2834 ; LINUX-64-PIC: oxf01:
2835 ; LINUX-64-PIC: movq xdst@GOTPCREL(%rip), %rax
2836 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2837 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2838 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
2839 ; LINUX-64-PIC-NEXT: ret
2840
2841 ; DARWIN-32-STATIC: _oxf01:
2842 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2843 ; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax
2844 ; DARWIN-32-STATIC-NEXT: movl %eax, _ptr
2845 ; DARWIN-32-STATIC-NEXT: ret
2846
2847 ; DARWIN-32-DYNAMIC: _oxf01:
2848 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2849 ; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx
2850 ; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax
2851 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
2852 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
2853 ; DARWIN-32-DYNAMIC-NEXT: ret
2854
2855 ; DARWIN-32-PIC: _oxf01:
2856 ; DARWIN-32-PIC: call "L40$pb"
2857 ; DARWIN-32-PIC-NEXT: "L40$pb":
2858 ; DARWIN-32-PIC-NEXT: popl %eax
2859 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2860 ; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-"L40$pb"(%eax), %edx
2861 ; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx
2862 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L40$pb"(%eax), %eax
2863 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
2864 ; DARWIN-32-PIC-NEXT: ret
2865
2866 ; DARWIN-64-STATIC: _oxf01:
2867 ; DARWIN-64-STATIC: movq _xdst@GOTPCREL(%rip), %rax
2868 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2869 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2870 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
2871 ; DARWIN-64-STATIC-NEXT: ret
2872
2873 ; DARWIN-64-DYNAMIC: _oxf01:
2874 ; DARWIN-64-DYNAMIC: movq _xdst@GOTPCREL(%rip), %rax
2875 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2876 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2877 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
2878 ; DARWIN-64-DYNAMIC-NEXT: ret
2879
2880 ; DARWIN-64-PIC: _oxf01:
2881 ; DARWIN-64-PIC: movq _xdst@GOTPCREL(%rip), %rax
2882 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
2883 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2884 ; DARWIN-64-PIC-NEXT: movq %rax, (%rcx)
2885 ; DARWIN-64-PIC-NEXT: ret
6622886 }
6632887
6642888 define void @off02(i64 %i) nounwind {
6752899 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
6762900 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
6772901 ; LINUX-64-STATIC: ret
2902
2903 ; LINUX-32-STATIC: off02:
2904 ; LINUX-32-STATIC: movl 4(%esp), %eax
2905 ; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx
2906 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2907 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2908 ; LINUX-32-STATIC-NEXT: ret
2909
2910 ; LINUX-32-PIC: off02:
2911 ; LINUX-32-PIC: movl 4(%esp), %eax
2912 ; LINUX-32-PIC-NEXT: movl src+64(,%eax,4), %ecx
2913 ; LINUX-32-PIC-NEXT: movl ptr, %edx
2914 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2915 ; LINUX-32-PIC-NEXT: ret
2916
2917 ; LINUX-64-PIC: off02:
2918 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
2919 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2920 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
2921 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
2922 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2923 ; LINUX-64-PIC-NEXT: ret
2924
2925 ; DARWIN-32-STATIC: _off02:
2926 ; DARWIN-32-STATIC: movl 4(%esp), %eax
2927 ; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx
2928 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
2929 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2930 ; DARWIN-32-STATIC-NEXT: ret
2931
2932 ; DARWIN-32-DYNAMIC: _off02:
2933 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
2934 ; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx
2935 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
2936 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
2937 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
2938 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2939 ; DARWIN-32-DYNAMIC-NEXT: ret
2940
2941 ; DARWIN-32-PIC: _off02:
2942 ; DARWIN-32-PIC: call "L41$pb"
2943 ; DARWIN-32-PIC-NEXT: "L41$pb":
2944 ; DARWIN-32-PIC-NEXT: popl %eax
2945 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
2946 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L41$pb"(%eax), %edx
2947 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
2948 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L41$pb"(%eax), %eax
2949 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
2950 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
2951 ; DARWIN-32-PIC-NEXT: ret
2952
2953 ; DARWIN-64-STATIC: _off02:
2954 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
2955 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
2956 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2957 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
2958 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2959 ; DARWIN-64-STATIC-NEXT: ret
2960
2961 ; DARWIN-64-DYNAMIC: _off02:
2962 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
2963 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
2964 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2965 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
2966 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2967 ; DARWIN-64-DYNAMIC-NEXT: ret
2968
2969 ; DARWIN-64-PIC: _off02:
2970 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
2971 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
2972 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
2973 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
2974 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
2975 ; DARWIN-64-PIC-NEXT: ret
6782976 }
6792977
6802978 define void @oxf02(i64 %i) nounwind {
6912989 ; LINUX-64-STATIC: movq ptr(%rip), %rcx
6922990 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
6932991 ; LINUX-64-STATIC: ret
2992
2993 ; LINUX-32-STATIC: oxf02:
2994 ; LINUX-32-STATIC: movl 4(%esp), %eax
2995 ; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx
2996 ; LINUX-32-STATIC-NEXT: movl ptr, %edx
2997 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
2998 ; LINUX-32-STATIC-NEXT: ret
2999
3000 ; LINUX-32-PIC: oxf02:
3001 ; LINUX-32-PIC: movl 4(%esp), %eax
3002 ; LINUX-32-PIC-NEXT: movl xsrc+64(,%eax,4), %ecx
3003 ; LINUX-32-PIC-NEXT: movl ptr, %edx
3004 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3005 ; LINUX-32-PIC-NEXT: ret
3006
3007 ; LINUX-64-PIC: oxf02:
3008 ; LINUX-64-PIC: movq xsrc@GOTPCREL(%rip), %rax
3009 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3010 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3011 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3012 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3013 ; LINUX-64-PIC-NEXT: ret
3014
3015 ; DARWIN-32-STATIC: _oxf02:
3016 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3017 ; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx
3018 ; DARWIN-32-STATIC-NEXT: movl _ptr, %edx
3019 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3020 ; DARWIN-32-STATIC-NEXT: ret
3021
3022 ; DARWIN-32-DYNAMIC: _oxf02:
3023 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3024 ; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx
3025 ; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx
3026 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx
3027 ; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx
3028 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3029 ; DARWIN-32-DYNAMIC-NEXT: ret
3030
3031 ; DARWIN-32-PIC: _oxf02:
3032 ; DARWIN-32-PIC: call "L42$pb"
3033 ; DARWIN-32-PIC-NEXT: "L42$pb":
3034 ; DARWIN-32-PIC-NEXT: popl %eax
3035 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3036 ; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-"L42$pb"(%eax), %edx
3037 ; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx
3038 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L42$pb"(%eax), %eax
3039 ; DARWIN-32-PIC-NEXT: movl (%eax), %eax
3040 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3041 ; DARWIN-32-PIC-NEXT: ret
3042
3043 ; DARWIN-64-STATIC: _oxf02:
3044 ; DARWIN-64-STATIC: movq _xsrc@GOTPCREL(%rip), %rax
3045 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3046 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3047 ; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx
3048 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3049 ; DARWIN-64-STATIC-NEXT: ret
3050
3051 ; DARWIN-64-DYNAMIC: _oxf02:
3052 ; DARWIN-64-DYNAMIC: movq _xsrc@GOTPCREL(%rip), %rax
3053 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3054 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3055 ; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx
3056 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3057 ; DARWIN-64-DYNAMIC-NEXT: ret
3058
3059 ; DARWIN-64-PIC: _oxf02:
3060 ; DARWIN-64-PIC: movq _xsrc@GOTPCREL(%rip), %rax
3061 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3062 ; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3063 ; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx
3064 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3065 ; DARWIN-64-PIC-NEXT: ret
6943066 }
6953067
6963068 define void @off03(i64 %i) nounwind {
7053077 ; LINUX-64-STATIC: movl dsrc+64(,%rdi,4), %eax
7063078 ; LINUX-64-STATIC: movl %eax, ddst+64(,%rdi,4)
7073079 ; LINUX-64-STATIC: ret
3080
3081 ; LINUX-32-STATIC: off03:
3082 ; LINUX-32-STATIC: movl 4(%esp), %eax
3083 ; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3084 ; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4)
3085 ; LINUX-32-STATIC-NEXT: ret
3086
3087 ; LINUX-32-PIC: off03:
3088 ; LINUX-32-PIC: movl 4(%esp), %eax
3089 ; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3090 ; LINUX-32-PIC-NEXT: movl %ecx, ddst+64(,%eax,4)
3091 ; LINUX-32-PIC-NEXT: ret
3092
3093 ; LINUX-64-PIC: off03:
3094 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
3095 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3096 ; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx
3097 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3098 ; LINUX-64-PIC-NEXT: ret
3099
3100 ; DARWIN-32-STATIC: _off03:
3101 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3102 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3103 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
3104 ; DARWIN-32-STATIC-NEXT: ret
3105
3106 ; DARWIN-32-DYNAMIC: _off03:
3107 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3108 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3109 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4)
3110 ; DARWIN-32-DYNAMIC-NEXT: ret
3111
3112 ; DARWIN-32-PIC: _off03:
3113 ; DARWIN-32-PIC: call "L43$pb"
3114 ; DARWIN-32-PIC-NEXT: "L43$pb":
3115 ; DARWIN-32-PIC-NEXT: popl %eax
3116 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3117 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L43$pb"(%eax,%ecx,4), %edx
3118 ; DARWIN-32-PIC-NEXT: movl %edx, _ddst+64-"L43$pb"(%eax,%ecx,4)
3119 ; DARWIN-32-PIC-NEXT: ret
3120
3121 ; DARWIN-64-STATIC: _off03:
3122 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
3123 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3124 ; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx
3125 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3126 ; DARWIN-64-STATIC-NEXT: ret
3127
3128 ; DARWIN-64-DYNAMIC: _off03:
3129 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
3130 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3131 ; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx
3132 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3133 ; DARWIN-64-DYNAMIC-NEXT: ret
3134
3135 ; DARWIN-64-PIC: _off03:
3136 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
3137 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3138 ; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx
3139 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3140 ; DARWIN-64-PIC-NEXT: ret
7083141 }
7093142
7103143 define void @off04(i64 %i) nounwind {
7173150 ; LINUX-64-STATIC: leaq ddst+64(,%rdi,4), %rax
7183151 ; LINUX-64-STATIC: movq %rax, dptr
7193152 ; LINUX-64-STATIC: ret
3153
3154 ; LINUX-32-STATIC: off04:
3155 ; LINUX-32-STATIC: movl 4(%esp), %eax
3156 ; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax
3157 ; LINUX-32-STATIC-NEXT: movl %eax, dptr
3158 ; LINUX-32-STATIC-NEXT: ret
3159
3160 ; LINUX-32-PIC: off04:
3161 ; LINUX-32-PIC: movl 4(%esp), %eax
3162 ; LINUX-32-PIC-NEXT: leal ddst+64(,%eax,4), %eax
3163 ; LINUX-32-PIC-NEXT: movl %eax, dptr
3164 ; LINUX-32-PIC-NEXT: ret
3165
3166 ; LINUX-64-PIC: off04:
3167 ; LINUX-64-PIC: movq ddst@GOTPCREL(%rip), %rax
3168 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3169 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3170 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3171 ; LINUX-64-PIC-NEXT: ret
3172
3173 ; DARWIN-32-STATIC: _off04:
3174 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3175 ; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax
3176 ; DARWIN-32-STATIC-NEXT: movl %eax, _dptr
3177 ; DARWIN-32-STATIC-NEXT: ret
3178
3179 ; DARWIN-32-DYNAMIC: _off04:
3180 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3181 ; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax
3182 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr
3183 ; DARWIN-32-DYNAMIC-NEXT: ret
3184
3185 ; DARWIN-32-PIC: _off04:
3186 ; DARWIN-32-PIC: call "L44$pb"
3187 ; DARWIN-32-PIC-NEXT: "L44$pb":
3188 ; DARWIN-32-PIC-NEXT: popl %eax
3189 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3190 ; DARWIN-32-PIC-NEXT: leal _ddst+64-"L44$pb"(%eax,%ecx,4), %ecx
3191 ; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-"L44$pb"(%eax)
3192 ; DARWIN-32-PIC-NEXT: ret
3193
3194 ; DARWIN-64-STATIC: _off04:
3195 ; DARWIN-64-STATIC: leaq _ddst(%rip), %rax
3196 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3197 ; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip)
3198 ; DARWIN-64-STATIC-NEXT: ret
3199
3200 ; DARWIN-64-DYNAMIC: _off04:
3201 ; DARWIN-64-DYNAMIC: leaq _ddst(%rip), %rax
3202 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3203 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip)
3204 ; DARWIN-64-DYNAMIC-NEXT: ret
3205
3206 ; DARWIN-64-PIC: _off04:
3207 ; DARWIN-64-PIC: leaq _ddst(%rip), %rax
3208 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3209 ; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip)
3210 ; DARWIN-64-PIC-NEXT: ret
7203211 }
7213212
7223213 define void @off05(i64 %i) nounwind {
7333224 ; LINUX-64-STATIC: movq dptr(%rip), %rcx
7343225 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
7353226 ; LINUX-64-STATIC: ret
3227
3228 ; LINUX-32-STATIC: off05:
3229 ; LINUX-32-STATIC: movl 4(%esp), %eax
3230 ; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3231 ; LINUX-32-STATIC-NEXT: movl dptr, %edx
3232 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3233 ; LINUX-32-STATIC-NEXT: ret
3234
3235 ; LINUX-32-PIC: off05:
3236 ; LINUX-32-PIC: movl 4(%esp), %eax
3237 ; LINUX-32-PIC-NEXT: movl dsrc+64(,%eax,4), %ecx
3238 ; LINUX-32-PIC-NEXT: movl dptr, %edx
3239 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3240 ; LINUX-32-PIC-NEXT: ret
3241
3242 ; LINUX-64-PIC: off05:
3243 ; LINUX-64-PIC: movq dsrc@GOTPCREL(%rip), %rax
3244 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3245 ; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx
3246 ; LINUX-64-PIC-NEXT: movq (%rcx), %rcx
3247 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3248 ; LINUX-64-PIC-NEXT: ret
3249
3250 ; DARWIN-32-STATIC: _off05:
3251 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3252 ; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3253 ; DARWIN-32-STATIC-NEXT: movl _dptr, %edx
3254 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3255 ; DARWIN-32-STATIC-NEXT: ret
3256
3257 ; DARWIN-32-DYNAMIC: _off05:
3258 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3259 ; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx
3260 ; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx
3261 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3262 ; DARWIN-32-DYNAMIC-NEXT: ret
3263
3264 ; DARWIN-32-PIC: _off05:
3265 ; DARWIN-32-PIC: call "L45$pb"
3266 ; DARWIN-32-PIC-NEXT: "L45$pb":
3267 ; DARWIN-32-PIC-NEXT: popl %eax
3268 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3269 ; DARWIN-32-PIC-NEXT: movl _dsrc+64-"L45$pb"(%eax,%ecx,4), %edx
3270 ; DARWIN-32-PIC-NEXT: movl _dptr-"L45$pb"(%eax), %eax
3271 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3272 ; DARWIN-32-PIC-NEXT: ret
3273
3274 ; DARWIN-64-STATIC: _off05:
3275 ; DARWIN-64-STATIC: leaq _dsrc(%rip), %rax
3276 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3277 ; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx
3278 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3279 ; DARWIN-64-STATIC-NEXT: ret
3280
3281 ; DARWIN-64-DYNAMIC: _off05:
3282 ; DARWIN-64-DYNAMIC: leaq _dsrc(%rip), %rax
3283 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3284 ; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx
3285 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3286 ; DARWIN-64-DYNAMIC-NEXT: ret
3287
3288 ; DARWIN-64-PIC: _off05:
3289 ; DARWIN-64-PIC: leaq _dsrc(%rip), %rax
3290 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3291 ; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx
3292 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3293 ; DARWIN-64-PIC-NEXT: ret
7363294 }
7373295
7383296 define void @off06(i64 %i) nounwind {
7473305 ; LINUX-64-STATIC: movl lsrc+64(,%rdi,4), %eax
7483306 ; LINUX-64-STATIC: movl %eax, ldst+64(,%rdi,4)
7493307 ; LINUX-64-STATIC: ret
3308
3309 ; LINUX-32-STATIC: off06:
3310 ; LINUX-32-STATIC: movl 4(%esp), %eax
3311 ; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3312 ; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4)
3313 ; LINUX-32-STATIC-NEXT: ret
3314
3315 ; LINUX-32-PIC: off06:
3316 ; LINUX-32-PIC: movl 4(%esp), %eax
3317 ; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3318 ; LINUX-32-PIC-NEXT: movl %ecx, ldst+64(,%eax,4)
3319 ; LINUX-32-PIC-NEXT: ret
3320
3321 ; LINUX-64-PIC: off06:
3322 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
3323 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3324 ; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx
3325 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3326 ; LINUX-64-PIC-NEXT: ret
3327
3328 ; DARWIN-32-STATIC: _off06:
3329 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3330 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3331 ; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
3332 ; DARWIN-32-STATIC-NEXT: ret
3333
3334 ; DARWIN-32-DYNAMIC: _off06:
3335 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3336 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3337 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4)
3338 ; DARWIN-32-DYNAMIC-NEXT: ret
3339
3340 ; DARWIN-32-PIC: _off06:
3341 ; DARWIN-32-PIC: call "L46$pb"
3342 ; DARWIN-32-PIC-NEXT: "L46$pb":
3343 ; DARWIN-32-PIC-NEXT: popl %eax
3344 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3345 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L46$pb"(%eax,%ecx,4), %edx
3346 ; DARWIN-32-PIC-NEXT: movl %edx, _ldst+64-"L46$pb"(%eax,%ecx,4)
3347 ; DARWIN-32-PIC-NEXT: ret
3348
3349 ; DARWIN-64-STATIC: _off06:
3350 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
3351 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3352 ; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx
3353 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3354 ; DARWIN-64-STATIC-NEXT: ret
3355
3356 ; DARWIN-64-DYNAMIC: _off06:
3357 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
3358 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3359 ; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx
3360 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3361 ; DARWIN-64-DYNAMIC-NEXT: ret
3362
3363 ; DARWIN-64-PIC: _off06:
3364 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
3365 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3366 ; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx
3367 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3368 ; DARWIN-64-PIC-NEXT: ret
7503369 }
7513370
7523371 define void @off07(i64 %i) nounwind {
7593378 ; LINUX-64-STATIC: leaq ldst+64(,%rdi,4), %rax
7603379 ; LINUX-64-STATIC: movq %rax, lptr
7613380 ; LINUX-64-STATIC: ret
3381
3382 ; LINUX-32-STATIC: off07:
3383 ; LINUX-32-STATIC: movl 4(%esp), %eax
3384 ; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax
3385 ; LINUX-32-STATIC-NEXT: movl %eax, lptr
3386 ; LINUX-32-STATIC-NEXT: ret
3387
3388 ; LINUX-32-PIC: off07:
3389 ; LINUX-32-PIC: movl 4(%esp), %eax
3390 ; LINUX-32-PIC-NEXT: leal ldst+64(,%eax,4), %eax
3391 ; LINUX-32-PIC-NEXT: movl %eax, lptr
3392 ; LINUX-32-PIC-NEXT: ret
3393
3394 ; LINUX-64-PIC: off07:
3395 ; LINUX-64-PIC: leaq ldst(%rip), %rax
3396 ; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3397 ; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip)
3398 ; LINUX-64-PIC-NEXT: ret
3399
3400 ; DARWIN-32-STATIC: _off07:
3401 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3402 ; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax
3403 ; DARWIN-32-STATIC-NEXT: movl %eax, _lptr
3404 ; DARWIN-32-STATIC-NEXT: ret
3405
3406 ; DARWIN-32-DYNAMIC: _off07:
3407 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3408 ; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax
3409 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr
3410 ; DARWIN-32-DYNAMIC-NEXT: ret
3411
3412 ; DARWIN-32-PIC: _off07:
3413 ; DARWIN-32-PIC: call "L47$pb"
3414 ; DARWIN-32-PIC-NEXT: "L47$pb":
3415 ; DARWIN-32-PIC-NEXT: popl %eax
3416 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3417 ; DARWIN-32-PIC-NEXT: leal _ldst+64-"L47$pb"(%eax,%ecx,4), %ecx
3418 ; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-"L47$pb"(%eax)
3419 ; DARWIN-32-PIC-NEXT: ret
3420
3421 ; DARWIN-64-STATIC: _off07:
3422 ; DARWIN-64-STATIC: leaq _ldst(%rip), %rax
3423 ; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3424 ; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip)
3425 ; DARWIN-64-STATIC-NEXT: ret
3426
3427 ; DARWIN-64-DYNAMIC: _off07:
3428 ; DARWIN-64-DYNAMIC: leaq _ldst(%rip), %rax
3429 ; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3430 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip)
3431 ; DARWIN-64-DYNAMIC-NEXT: ret
3432
3433 ; DARWIN-64-PIC: _off07:
3434 ; DARWIN-64-PIC: leaq _ldst(%rip), %rax
3435 ; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax
3436 ; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip)
3437 ; DARWIN-64-PIC-NEXT: ret
7623438 }
7633439
7643440 define void @off08(i64 %i) nounwind {
7753451 ; LINUX-64-STATIC: movq lptr(%rip), %rcx
7763452 ; LINUX-64-STATIC: movl %eax, 64(%rcx,%rdi,4)
7773453 ; LINUX-64-STATIC: ret
3454
3455 ; LINUX-32-STATIC: off08:
3456 ; LINUX-32-STATIC: movl 4(%esp), %eax
3457 ; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3458 ; LINUX-32-STATIC-NEXT: movl lptr, %edx
3459 ; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3460 ; LINUX-32-STATIC-NEXT: ret
3461
3462 ; LINUX-32-PIC: off08:
3463 ; LINUX-32-PIC: movl 4(%esp), %eax
3464 ; LINUX-32-PIC-NEXT: movl lsrc+64(,%eax,4), %ecx
3465 ; LINUX-32-PIC-NEXT: movl lptr, %edx
3466 ; LINUX-32-PIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3467 ; LINUX-32-PIC-NEXT: ret
3468
3469 ; LINUX-64-PIC: off08:
3470 ; LINUX-64-PIC: leaq lsrc(%rip), %rax
3471 ; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3472 ; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx
3473 ; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3474 ; LINUX-64-PIC-NEXT: ret
3475
3476 ; DARWIN-32-STATIC: _off08:
3477 ; DARWIN-32-STATIC: movl 4(%esp), %eax
3478 ; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3479 ; DARWIN-32-STATIC-NEXT: movl _lptr, %edx
3480 ; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3481 ; DARWIN-32-STATIC-NEXT: ret
3482
3483 ; DARWIN-32-DYNAMIC: _off08:
3484 ; DARWIN-32-DYNAMIC: movl 4(%esp), %eax
3485 ; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx
3486 ; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx
3487 ; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4)
3488 ; DARWIN-32-DYNAMIC-NEXT: ret
3489
3490 ; DARWIN-32-PIC: _off08:
3491 ; DARWIN-32-PIC: call "L48$pb"
3492 ; DARWIN-32-PIC-NEXT: "L48$pb":
3493 ; DARWIN-32-PIC-NEXT: popl %eax
3494 ; DARWIN-32-PIC-NEXT: movl 4(%esp), %ecx
3495 ; DARWIN-32-PIC-NEXT: movl _lsrc+64-"L48$pb"(%eax,%ecx,4), %edx
3496 ; DARWIN-32-PIC-NEXT: movl _lptr-"L48$pb"(%eax), %eax
3497 ; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4)
3498 ; DARWIN-32-PIC-NEXT: ret
3499
3500 ; DARWIN-64-STATIC: _off08:
3501 ; DARWIN-64-STATIC: leaq _lsrc(%rip), %rax
3502 ; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax
3503 ; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx
3504 ; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3505 ; DARWIN-64-STATIC-NEXT: ret
3506
3507 ; DARWIN-64-DYNAMIC: _off08:
3508 ; DARWIN-64-DYNAMIC: leaq _lsrc(%rip), %rax
3509 ; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax
3510 ; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx
3511 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3512 ; DARWIN-64-DYNAMIC-NEXT: ret
3513
3514 ; DARWIN-64-PIC: _off08:
3515 ; DARWIN-64-PIC: leaq _lsrc(%rip), %rax
3516 ; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax
3517 ; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx
3518 ; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4)
3519 ; DARWIN-64-PIC-NEXT: ret
7783520 }
7793521
7803522 define void @moo00(i64 %i) nounwind {
7863528 ; LINUX-64-STATIC: movl src+262144(%rip), %eax
7873529 ; LINUX-64-STATIC: movl %eax, dst+262144(%rip)
7883530 ; LINUX-64-STATIC: ret
3531
3532 ; LINUX-32-STATIC: moo00:
3533 ; LINUX-32-STATIC: movl src+262144, %eax
3534 ; LINUX-32-STATIC-NEXT: movl %eax, dst+262144
3535 ; LINUX-32-STATIC-NEXT: ret
3536
3537 ; LINUX-32-PIC: moo00:
3538 ; LINUX-32-PIC: movl src+262144, %eax
3539 ; LINUX-32-PIC-NEXT: movl %eax, dst+262144
3540 ; LINUX-32-PIC-NEXT: ret
3541
3542 ; LINUX-64-PIC: moo00:
3543 ; LINUX-64-PIC: movq src@GOTPCREL(%rip), %rax
3544 ; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax
3545 ; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx
3546 ; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx)
3547 ; LINUX-64-PIC-NEXT: ret
3548
3549 ; DARWIN-32-STATIC: _moo00:
3550 ; DARWIN-32-STATIC: movl _src+262144, %eax
3551 ; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144
3552 ; DARWIN-32-STATIC-NEXT: ret
3553
3554 ; DARWIN-32-DYNAMIC: _moo00:
3555 ; DARWIN-32-DYNAMIC: movl L_src$non_lazy_ptr, %eax
3556 ; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax
3557 ; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx
3558 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx)
3559 ; DARWIN-32-DYNAMIC-NEXT: ret
3560
3561 ; DARWIN-32-PIC: _moo00:
3562 ; DARWIN-32-PIC: call "L49$pb"
3563 ; DARWIN-32-PIC-NEXT: "L49$pb":
3564 ; DARWIN-32-PIC-NEXT: popl %eax
3565 ; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-"L49$pb"(%eax), %ecx
3566 ; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx
3567 ; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-"L49$pb"(%eax), %eax
3568 ; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax)
3569 ; DARWIN-32-PIC-NEXT: ret
3570
3571 ; DARWIN-64-STATIC: _moo00:
3572 ; DARWIN-64-STATIC: movq _src@GOTPCREL(%rip), %rax
3573 ; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax
3574 ; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3575 ; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx)
3576 ; DARWIN-64-STATIC-NEXT: ret
3577
3578 ; DARWIN-64-DYNAMIC: _moo00:
3579 ; DARWIN-64-DYNAMIC: movq _src@GOTPCREL(%rip), %rax
3580 ; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax
3581 ; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3582 ; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx)
3583 ; DARWIN-64-DYNAMIC-NEXT: ret
3584
3585 ; DARWIN-64-PIC: _moo00:
3586 ; DARWIN-64-PIC: movq _src@GOTPCREL(%rip), %rax
3587 ; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax
3588 ; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx
3589 ; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx)
3590 ; DARWIN-64-PIC-NEXT: ret
7893591 }
7903592
7913593 define void @moo01(i64 %i) nounwind {
7953597 ; LINUX-64-STATIC: moo01:
7963598 ; LINUX-64-STATIC: movq $dst+262144, ptr(%rip)
7973599 ; LINUX-64-STATIC: ret
3600
3601 ; LINUX-32-STATIC: moo01:
3602 ; LINUX-32-STATIC: movl $dst+262144, ptr
3603 ; LINUX-32-STATIC-NEXT: ret
3604
3605 ; LINUX-32-PIC: moo01:
3606 ; LINUX-32-PIC: movl $dst+262144, ptr
3607 ; LINUX-32-PIC-NEXT: ret
3608
3609 ; LINUX-64-PIC: moo01:
3610 ; LINUX-64-PIC: movl $262144, %eax
3611 ; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax
3612 ; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx
3613 ; LINUX-64-PIC-NEXT: movq %rax, (%rcx)
3614 ; LINUX-64-PIC-NEXT: ret
3615
3616 ; DARWIN-32-STATIC: _moo01:
3617 ; DARWIN-32-STATIC: movl $_dst+262144, _ptr
3618 ; DARWIN-32-STATIC-NEXT: ret
3619
3620 ; DARWIN-32-DYNAMIC: _moo01:
3621 ; DARWIN-32-DYNAMIC: movl $262144, %eax
3622 ; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax
3623 ; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx
3624 ; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx)
3625 ; DARWIN-32-DYNAMIC-NEXT: ret
3626
3627 ; DARWIN-32-PIC: _moo01:
3628 ; DARWIN-32-PIC: call "L50$pb"
3629 ; DARWIN-32-PIC-NEXT: "L50$pb":
3630 ; DARWIN-32-PIC-NEXT: popl %eax
3631 ; DARWIN-32-PIC-NEXT: movl $262144, %ecx
3632 ; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-"L50$pb"(%eax), %ecx
3633 ; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-"L50$pb"(%eax), %eax
3634 ; DARWIN-32-PIC-NEXT: movl %ecx, (%eax)
3635 ; DARWIN-32-PIC-NEXT: ret
3636
3637 ; DARWIN-64-STATIC: _moo01:
3638 ; DARWIN-64-STATIC: movl $262144, %eax
3639 ; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
3640 ; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3641 ; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx)
3642 ; DARWIN-64-STATIC-NEXT: ret
3643
3644 ; DARWIN-64-DYNAMIC: _moo01:
3645 ; DARWIN-64-DYNAMIC: movl $262144, %eax
3646 ; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax
3647 ; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx
3648 ; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx)
3649 ; DARWIN-64-DYNAMIC-NEXT: ret
3650