Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-STATIC
      2 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-32-PIC
      3 
      4 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=LINUX-64-STATIC
      5 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=LINUX-64-PIC
      6 
      7 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-32-STATIC
      8 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC
      9 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -march=x86 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-32-PIC
     10 
     11 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=static -code-model=small | FileCheck %s -check-prefix=DARWIN-64-STATIC
     12 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=dynamic-no-pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC
     13 ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -march=x86-64 -relocation-model=pic -code-model=small | FileCheck %s -check-prefix=DARWIN-64-PIC
     14 
     15 @src = external global [131072 x i32]
     16 @dst = external global [131072 x i32]
     17 @xsrc = external global [32 x i32]
     18 @xdst = external global [32 x i32]
     19 @ptr = external global i32*
     20 @dsrc = global [131072 x i32] zeroinitializer, align 32
     21 @ddst = global [131072 x i32] zeroinitializer, align 32
     22 @dptr = global i32* null
     23 @lsrc = internal global [131072 x i32] zeroinitializer
     24 @ldst = internal global [131072 x i32] zeroinitializer
     25 @lptr = internal global i32* null
     26 @ifunc = external global void ()*
     27 @difunc = global void ()* null
     28 @lifunc = internal global void ()* null
     29 @lxsrc = internal global [32 x i32] zeroinitializer, align 32
     30 @lxdst = internal global [32 x i32] zeroinitializer, align 32
     31 @dxsrc = global [32 x i32] zeroinitializer, align 32
     32 @dxdst = global [32 x i32] zeroinitializer, align 32
     33 
     34 define void @foo00() nounwind {
     35 entry:
     36 	%0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
     37 	store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 0), align 4
     38 	ret void
     39 
     40 ; LINUX-64-STATIC: foo00:
     41 ; LINUX-64-STATIC: movl	src(%rip), [[EAX:%e.x]]
     42 ; LINUX-64-STATIC: movl	[[EAX]], dst
     43 ; LINUX-64-STATIC: ret
     44 
     45 ; LINUX-32-STATIC: foo00:
     46 ; LINUX-32-STATIC: 	movl	src, [[EAX:%e.x]]
     47 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dst
     48 ; LINUX-32-STATIC-NEXT: 	ret
     49 
     50 ; LINUX-32-PIC: foo00:
     51 ; LINUX-32-PIC: 	movl	src, [[EAX:%e.x]]
     52 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dst
     53 ; LINUX-32-PIC-NEXT: 	ret
     54 
     55 ; LINUX-64-PIC: foo00:
     56 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r..]]
     57 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]]
     58 ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r..]]
     59 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
     60 ; LINUX-64-PIC-NEXT: 	ret
     61 
     62 ; DARWIN-32-STATIC: _foo00:
     63 ; DARWIN-32-STATIC: 	movl	_src, [[EAX:%e.x]]
     64 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dst
     65 ; DARWIN-32-STATIC-NEXT: 	ret
     66 
     67 ; DARWIN-32-DYNAMIC: _foo00:
     68 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e..]]
     69 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e..]]
     70 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e..]]
     71 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
     72 ; DARWIN-32-DYNAMIC-NEXT: 	ret
     73 
     74 ; DARWIN-32-PIC: _foo00:
     75 ; DARWIN-32-PIC: 	calll	L0$pb
     76 ; DARWIN-32-PIC-NEXT: L0$pb:
     77 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e..]]
     78 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L0$pb([[EAX]]), [[ECX:%e..]]
     79 ; DARWIN-32-PIC-NEXT: 	movl	([[ECX]]), [[ECX:%e..]]
     80 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L0$pb([[EAX]]), [[EAX:%e..]]
     81 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
     82 ; DARWIN-32-PIC-NEXT: 	ret
     83 
     84 ; DARWIN-64-STATIC: _foo00:
     85 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r..]]
     86 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]]
     87 ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r..]]
     88 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]])
     89 ; DARWIN-64-STATIC-NEXT: 	ret
     90 
     91 ; DARWIN-64-DYNAMIC: _foo00:
     92 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r..]]
     93 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]]
     94 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r..]]
     95 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]])
     96 ; DARWIN-64-DYNAMIC-NEXT: 	ret
     97 
     98 ; DARWIN-64-PIC: _foo00:
     99 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r..]]
    100 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]]
    101 ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r..]]
    102 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    103 ; DARWIN-64-PIC-NEXT: 	ret
    104 }
    105 
    106 define void @fxo00() nounwind {
    107 entry:
    108 	%0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
    109 	store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 0), align 4
    110 	ret void
    111 
    112 ; LINUX-64-STATIC: fxo00:
    113 ; LINUX-64-STATIC: movl	xsrc(%rip), [[EAX:%e.x]]
    114 ; LINUX-64-STATIC: movl	[[EAX]], xdst
    115 ; LINUX-64-STATIC: ret
    116 
    117 ; LINUX-32-STATIC: fxo00:
    118 ; LINUX-32-STATIC: 	movl	xsrc, [[EAX:%e.x]]
    119 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], xdst
    120 ; LINUX-32-STATIC-NEXT: 	ret
    121 
    122 ; LINUX-32-PIC: fxo00:
    123 ; LINUX-32-PIC: 	movl	xsrc, [[EAX:%e.x]]
    124 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], xdst
    125 ; LINUX-32-PIC-NEXT: 	ret
    126 
    127 ; LINUX-64-PIC: fxo00:
    128 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    129 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    130 ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    131 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    132 ; LINUX-64-PIC-NEXT: 	ret
    133 
    134 ; DARWIN-32-STATIC: _fxo00:
    135 ; DARWIN-32-STATIC: 	movl	_xsrc, [[EAX:%e.x]]
    136 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _xdst
    137 ; DARWIN-32-STATIC-NEXT: 	ret
    138 
    139 ; DARWIN-32-DYNAMIC: _fxo00:
    140 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
    141 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
    142 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]]
    143 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    144 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    145 
    146 ; DARWIN-32-PIC: _fxo00:
    147 ; DARWIN-32-PIC: 	calll	L1$pb
    148 ; DARWIN-32-PIC-NEXT: L1$pb:
    149 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    150 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L1$pb([[EAX]]), [[ECX:%e.x]]
    151 ; DARWIN-32-PIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
    152 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L1$pb([[EAX]]), [[EAX:%e.x]]
    153 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
    154 ; DARWIN-32-PIC-NEXT: 	ret
    155 
    156 ; DARWIN-64-STATIC: _fxo00:
    157 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    158 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    159 ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    160 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    161 ; DARWIN-64-STATIC-NEXT: 	ret
    162 
    163 ; DARWIN-64-DYNAMIC: _fxo00:
    164 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    165 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    166 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    167 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    168 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    169 
    170 ; DARWIN-64-PIC: _fxo00:
    171 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    172 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    173 ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    174 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    175 ; DARWIN-64-PIC-NEXT: 	ret
    176 }
    177 
    178 define void @foo01() nounwind {
    179 entry:
    180 	store i32* getelementptr ([131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8
    181 	ret void
    182 ; LINUX-64-STATIC: foo01:
    183 ; LINUX-64-STATIC: movq	$dst, ptr
    184 ; LINUX-64-STATIC: ret
    185 
    186 ; LINUX-32-STATIC: foo01:
    187 ; LINUX-32-STATIC: 	movl	$dst, ptr
    188 ; LINUX-32-STATIC-NEXT: 	ret
    189 
    190 ; LINUX-32-PIC: foo01:
    191 ; LINUX-32-PIC: 	movl	$dst, ptr
    192 ; LINUX-32-PIC-NEXT: 	ret
    193 
    194 ; LINUX-64-PIC: foo01:
    195 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
    196 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    197 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    198 ; LINUX-64-PIC-NEXT: 	ret
    199 
    200 ; DARWIN-32-STATIC: _foo01:
    201 ; DARWIN-32-STATIC: 	movl	$_dst, _ptr
    202 ; DARWIN-32-STATIC-NEXT: 	ret
    203 
    204 ; DARWIN-32-DYNAMIC: _foo01:
    205 ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, [[EAX:%e.x]]
    206 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
    207 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    208 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    209 
    210 ; DARWIN-32-PIC: _foo01:
    211 ; DARWIN-32-PIC: 	calll	L2$pb
    212 ; DARWIN-32-PIC-NEXT: L2$pb:
    213 ; DARWIN-32-PIC-NEXT: 	popl
    214 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L2$pb(
    215 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L2$pb(
    216 ; DARWIN-32-PIC-NEXT: 	movl
    217 ; DARWIN-32-PIC-NEXT: 	ret
    218 
    219 ; DARWIN-64-STATIC: _foo01:
    220 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
    221 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    222 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    223 ; DARWIN-64-STATIC-NEXT: 	ret
    224 
    225 ; DARWIN-64-DYNAMIC: _foo01:
    226 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
    227 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    228 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    229 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    230 
    231 ; DARWIN-64-PIC: _foo01:
    232 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
    233 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    234 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    235 ; DARWIN-64-PIC-NEXT: 	ret
    236 }
    237 
    238 define void @fxo01() nounwind {
    239 entry:
    240 	store i32* getelementptr ([32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8
    241 	ret void
    242 ; LINUX-64-STATIC: fxo01:
    243 ; LINUX-64-STATIC: movq	$xdst, ptr
    244 ; LINUX-64-STATIC: ret
    245 
    246 ; LINUX-32-STATIC: fxo01:
    247 ; LINUX-32-STATIC: 	movl	$xdst, ptr
    248 ; LINUX-32-STATIC-NEXT: 	ret
    249 
    250 ; LINUX-32-PIC: fxo01:
    251 ; LINUX-32-PIC: 	movl	$xdst, ptr
    252 ; LINUX-32-PIC-NEXT: 	ret
    253 
    254 ; LINUX-64-PIC: fxo01:
    255 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]]
    256 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    257 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    258 ; LINUX-64-PIC-NEXT: 	ret
    259 
    260 ; DARWIN-32-STATIC: _fxo01:
    261 ; DARWIN-32-STATIC: 	movl	$_xdst, _ptr
    262 ; DARWIN-32-STATIC-NEXT: 	ret
    263 
    264 ; DARWIN-32-DYNAMIC: _fxo01:
    265 ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, [[EAX:%e.x]]
    266 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
    267 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    268 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    269 
    270 ; DARWIN-32-PIC: _fxo01:
    271 ; DARWIN-32-PIC: 	calll	L3$pb
    272 ; DARWIN-32-PIC-NEXT: L3$pb:
    273 ; DARWIN-32-PIC-NEXT: 	popl	[[R0:%e..]]
    274 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L3$pb([[R0]]), [[R1:%e..]]
    275 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L3$pb([[R0]]), [[R2:%e..]]
    276 ; DARWIN-32-PIC-NEXT: 	movl	[[R1:%e..]], ([[R2]])
    277 ; DARWIN-32-PIC-NEXT: 	ret
    278 
    279 ; DARWIN-64-STATIC: _fxo01:
    280 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
    281 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    282 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    283 ; DARWIN-64-STATIC-NEXT: 	ret
    284 
    285 ; DARWIN-64-DYNAMIC: _fxo01:
    286 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
    287 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    288 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    289 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    290 
    291 ; DARWIN-64-PIC: _fxo01:
    292 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
    293 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    294 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    295 ; DARWIN-64-PIC-NEXT: 	ret
    296 }
    297 
    298 define void @foo02() nounwind {
    299 entry:
    300 	%0 = load i32** @ptr, align 8
    301 	%1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 0), align 4
    302 	store i32 %1, i32* %0, align 4
    303 	ret void
    304 ; LINUX-64-STATIC: foo02:
    305 ; LINUX-64-STATIC: movl    src(%rip), %
    306 ; LINUX-64-STATIC: movq    ptr(%rip), %
    307 ; LINUX-64-STATIC: movl
    308 ; LINUX-64-STATIC: ret
    309 
    310 ; LINUX-32-STATIC: foo02:
    311 ; LINUX-32-STATIC: 	movl	src, [[EAX:%e.x]]
    312 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
    313 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    314 ; LINUX-32-STATIC-NEXT: 	ret
    315 
    316 ; LINUX-32-PIC: foo02:
    317 ; LINUX-32-PIC: 	movl	src, [[EAX:%e.x]]
    318 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
    319 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    320 ; LINUX-32-PIC-NEXT: 	ret
    321 
    322 ; LINUX-64-PIC: foo02:
    323 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
    324 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    325 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    326 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    327 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    328 ; LINUX-64-PIC-NEXT: 	ret
    329 
    330 ; DARWIN-32-STATIC: _foo02:
    331 ; DARWIN-32-STATIC: 	movl	_src, [[EAX:%e.x]]
    332 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
    333 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    334 ; DARWIN-32-STATIC-NEXT: 	ret
    335 
    336 ; DARWIN-32-DYNAMIC: _foo02:
    337 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]]
    338 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
    339 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
    340 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
    341 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    342 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    343 
    344 ; DARWIN-32-PIC: _foo02:
    345 ; DARWIN-32-PIC: 	calll	L4$pb
    346 ; DARWIN-32-PIC-NEXT: L4$pb:
    347 ; DARWIN-32-PIC-NEXT: 	popl	[[R0:%e..]]
    348 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L4$pb([[R0]]), [[R1:%e..]]
    349 ; DARWIN-32-PIC-NEXT: 	movl	([[R1]]), [[R2:%e..]]
    350 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L4$pb([[R0]]), [[R3:%e..]]
    351 ; DARWIN-32-PIC-NEXT: 	movl	([[R3]]), [[R4:%e..]]
    352 ; DARWIN-32-PIC-NEXT: 	movl	[[R2]], ([[R4]])
    353 ; DARWIN-32-PIC-NEXT: 	ret
    354 
    355 ; DARWIN-64-STATIC: _foo02:
    356 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
    357 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    358 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    359 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    360 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    361 ; DARWIN-64-STATIC-NEXT: 	ret
    362 
    363 ; DARWIN-64-DYNAMIC: _foo02:
    364 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
    365 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    366 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    367 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    368 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    369 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    370 
    371 ; DARWIN-64-PIC: _foo02:
    372 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
    373 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    374 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    375 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    376 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    377 ; DARWIN-64-PIC-NEXT: 	ret
    378 }
    379 
    380 define void @fxo02() nounwind {
    381 entry:
    382 	%0 = load i32** @ptr, align 8
    383 	%1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 0), align 4
    384 	store i32 %1, i32* %0, align 4
    385 ; LINUX-64-STATIC: fxo02:
    386 ; LINUX-64-STATIC: movl    xsrc(%rip), %
    387 ; LINUX-64-STATIC: movq    ptr(%rip), %
    388 ; LINUX-64-STATIC: movl
    389 ; LINUX-64-STATIC: ret
    390 
    391 ; LINUX-32-STATIC: fxo02:
    392 ; LINUX-32-STATIC: 	movl	xsrc, [[EAX:%e.x]]
    393 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
    394 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    395 ; LINUX-32-STATIC-NEXT: 	ret
    396 	ret void
    397 
    398 ; LINUX-32-PIC: fxo02:
    399 ; LINUX-32-PIC: 	movl	xsrc, [[EAX:%e.x]]
    400 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
    401 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    402 ; LINUX-32-PIC-NEXT: 	ret
    403 
    404 ; LINUX-64-PIC: fxo02:
    405 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    406 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    407 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    408 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    409 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    410 ; LINUX-64-PIC-NEXT: 	ret
    411 
    412 ; DARWIN-32-STATIC: _fxo02:
    413 ; DARWIN-32-STATIC: 	movl	_xsrc, [[EAX:%e.x]]
    414 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
    415 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    416 ; DARWIN-32-STATIC-NEXT: 	ret
    417 
    418 ; DARWIN-32-DYNAMIC: _fxo02:
    419 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
    420 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
    421 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
    422 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
    423 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    424 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    425 
    426 ; DARWIN-32-PIC: _fxo02:
    427 ; DARWIN-32-PIC: 	calll	L5$pb
    428 ; DARWIN-32-PIC-NEXT: L5$pb:
    429 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    430 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L5$pb([[EAX]]), [[ECX:%e.x]]
    431 ; DARWIN-32-PIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
    432 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L5$pb([[EAX]]), [[EAX:%e.x]]
    433 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
    434 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
    435 ; DARWIN-32-PIC-NEXT: 	ret
    436 
    437 ; DARWIN-64-STATIC: _fxo02:
    438 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    439 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    440 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    441 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    442 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    443 ; DARWIN-64-STATIC-NEXT: 	ret
    444 
    445 ; DARWIN-64-DYNAMIC: _fxo02:
    446 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    447 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    448 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    449 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    450 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    451 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    452 
    453 ; DARWIN-64-PIC: _fxo02:
    454 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    455 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    456 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    457 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    458 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    459 ; DARWIN-64-PIC-NEXT: 	ret
    460 }
    461 
    462 define void @foo03() nounwind {
    463 entry:
    464 	%0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
    465 	store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 0), align 32
    466 	ret void
    467 ; LINUX-64-STATIC: foo03:
    468 ; LINUX-64-STATIC: movl    dsrc(%rip), [[EAX:%e.x]]
    469 ; LINUX-64-STATIC: movl    [[EAX]], ddst
    470 ; LINUX-64-STATIC: ret
    471 
    472 ; LINUX-32-STATIC: foo03:
    473 ; LINUX-32-STATIC: 	movl	dsrc, [[EAX:%e.x]]
    474 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ddst
    475 ; LINUX-32-STATIC-NEXT: 	ret
    476 
    477 ; LINUX-32-PIC: foo03:
    478 ; LINUX-32-PIC: 	movl	dsrc, [[EAX:%e.x]]
    479 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ddst
    480 ; LINUX-32-PIC-NEXT: 	ret
    481 
    482 ; LINUX-64-PIC: foo03:
    483 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    484 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    485 ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]]
    486 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    487 ; LINUX-64-PIC-NEXT: 	ret
    488 
    489 ; DARWIN-32-STATIC: _foo03:
    490 ; DARWIN-32-STATIC: 	movl	_dsrc, [[EAX:%e.x]]
    491 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ddst
    492 ; DARWIN-32-STATIC-NEXT: 	ret
    493 
    494 ; DARWIN-32-DYNAMIC: _foo03:
    495 ; DARWIN-32-DYNAMIC: 	movl	_dsrc, [[EAX:%e.x]]
    496 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst
    497 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    498 
    499 ; DARWIN-32-PIC: _foo03:
    500 ; DARWIN-32-PIC: 	calll	L6$pb
    501 ; DARWIN-32-PIC-NEXT: L6$pb:
    502 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    503 ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L6$pb([[EAX]]), [[ECX:%e.x]]
    504 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _ddst-L6$pb([[EAX]])
    505 ; DARWIN-32-PIC-NEXT: 	ret
    506 
    507 ; DARWIN-64-STATIC: _foo03:
    508 ; DARWIN-64-STATIC: 	movl	_dsrc(%rip), [[EAX:%e.x]]
    509 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ddst(%rip)
    510 ; DARWIN-64-STATIC-NEXT: 	ret
    511 
    512 ; DARWIN-64-DYNAMIC: _foo03:
    513 ; DARWIN-64-DYNAMIC: 	movl	_dsrc(%rip), [[EAX:%e.x]]
    514 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst(%rip)
    515 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    516 
    517 ; DARWIN-64-PIC: _foo03:
    518 ; DARWIN-64-PIC: 	movl	_dsrc(%rip), [[EAX:%e.x]]
    519 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ddst(%rip)
    520 ; DARWIN-64-PIC-NEXT: 	ret
    521 }
    522 
    523 define void @foo04() nounwind {
    524 entry:
    525 	store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8
    526 	ret void
    527 ; LINUX-64-STATIC: foo04:
    528 ; LINUX-64-STATIC: movq    $ddst, dptr
    529 ; LINUX-64-STATIC: ret
    530 
    531 ; LINUX-32-STATIC: foo04:
    532 ; LINUX-32-STATIC: 	movl	$ddst, dptr
    533 ; LINUX-32-STATIC-NEXT: 	ret
    534 
    535 ; LINUX-32-PIC: foo04:
    536 ; LINUX-32-PIC: 	movl	$ddst, dptr
    537 ; LINUX-32-PIC-NEXT: 	ret
    538 
    539 ; LINUX-64-PIC: foo04:
    540 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
    541 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
    542 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    543 ; LINUX-64-PIC-NEXT: 	ret
    544 
    545 ; DARWIN-32-STATIC: _foo04:
    546 ; DARWIN-32-STATIC: 	movl	$_ddst, _dptr
    547 ; DARWIN-32-STATIC-NEXT: 	ret
    548 
    549 ; DARWIN-32-DYNAMIC: _foo04:
    550 ; DARWIN-32-DYNAMIC: 	movl	$_ddst, _dptr
    551 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    552 
    553 ; DARWIN-32-PIC: _foo04:
    554 ; DARWIN-32-PIC: 	calll	L7$pb
    555 ; DARWIN-32-PIC-NEXT: L7$pb:
    556 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    557 ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L7$pb([[EAX]]), [[ECX:%e.x]]
    558 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L7$pb([[EAX]])
    559 ; DARWIN-32-PIC-NEXT: 	ret
    560 
    561 ; DARWIN-64-STATIC: _foo04:
    562 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
    563 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
    564 ; DARWIN-64-STATIC-NEXT: 	ret
    565 
    566 ; DARWIN-64-DYNAMIC: _foo04:
    567 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
    568 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
    569 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    570 
    571 ; DARWIN-64-PIC: _foo04:
    572 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
    573 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
    574 ; DARWIN-64-PIC-NEXT: 	ret
    575 }
    576 
    577 define void @foo05() nounwind {
    578 entry:
    579 	%0 = load i32** @dptr, align 8
    580 	%1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 0), align 32
    581 	store i32 %1, i32* %0, align 4
    582 	ret void
    583 ; LINUX-64-STATIC: foo05:
    584 ; LINUX-64-STATIC: movl    dsrc(%rip), %
    585 ; LINUX-64-STATIC: movq    dptr(%rip), %
    586 ; LINUX-64-STATIC: movl
    587 ; LINUX-64-STATIC: ret
    588 
    589 ; LINUX-32-STATIC: foo05:
    590 ; LINUX-32-STATIC: 	movl	dsrc, [[EAX:%e.x]]
    591 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
    592 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    593 ; LINUX-32-STATIC-NEXT: 	ret
    594 
    595 ; LINUX-32-PIC: foo05:
    596 ; LINUX-32-PIC: 	movl	dsrc, [[EAX:%e.x]]
    597 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
    598 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    599 ; LINUX-32-PIC-NEXT: 	ret
    600 
    601 ; LINUX-64-PIC: foo05:
    602 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    603 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]]
    604 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
    605 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
    606 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    607 ; LINUX-64-PIC-NEXT: 	ret
    608 
    609 ; DARWIN-32-STATIC: _foo05:
    610 ; DARWIN-32-STATIC: 	movl	_dsrc, [[EAX:%e.x]]
    611 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
    612 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    613 ; DARWIN-32-STATIC-NEXT: 	ret
    614 
    615 ; DARWIN-32-DYNAMIC: _foo05:
    616 ; DARWIN-32-DYNAMIC: 	movl	_dsrc, [[EAX:%e.x]]
    617 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
    618 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    619 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    620 
    621 ; DARWIN-32-PIC: _foo05:
    622 ; DARWIN-32-PIC: 	calll	L8$pb
    623 ; DARWIN-32-PIC-NEXT: L8$pb:
    624 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    625 ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L8$pb([[EAX]]), [[ECX:%e.x]]
    626 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L8$pb([[EAX]]), [[EAX:%e.x]]
    627 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
    628 ; DARWIN-32-PIC-NEXT: 	ret
    629 
    630 ; DARWIN-64-STATIC: _foo05:
    631 ; DARWIN-64-STATIC: 	movl	_dsrc(%rip), [[EAX:%e.x]]
    632 ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
    633 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    634 ; DARWIN-64-STATIC-NEXT: 	ret
    635 
    636 ; DARWIN-64-DYNAMIC: _foo05:
    637 ; DARWIN-64-DYNAMIC: 	movl	_dsrc(%rip), [[EAX:%e.x]]
    638 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
    639 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    640 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    641 
    642 ; DARWIN-64-PIC: _foo05:
    643 ; DARWIN-64-PIC: 	movl	_dsrc(%rip), [[EAX:%e.x]]
    644 ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
    645 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    646 ; DARWIN-64-PIC-NEXT: 	ret
    647 }
    648 
    649 define void @foo06() nounwind {
    650 entry:
    651 	%0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
    652 	store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 0), align 4
    653 	ret void
    654 ; LINUX-64-STATIC: foo06:
    655 ; LINUX-64-STATIC: movl    lsrc(%rip), [[EAX:%e.x]]
    656 ; LINUX-64-STATIC: movl    [[EAX]], ldst(%rip)
    657 ; LINUX-64-STATIC: ret
    658 
    659 ; LINUX-32-STATIC: foo06:
    660 ; LINUX-32-STATIC: 	movl	lsrc, [[EAX:%e.x]]
    661 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ldst
    662 ; LINUX-32-STATIC-NEXT: 	ret
    663 
    664 ; LINUX-32-PIC: foo06:
    665 ; LINUX-32-PIC: 	movl	lsrc, [[EAX:%e.x]]
    666 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ldst
    667 ; LINUX-32-PIC-NEXT: 	ret
    668 
    669 ; LINUX-64-PIC: foo06:
    670 ; LINUX-64-PIC: 	movl	lsrc(%rip), [[EAX:%e.x]]
    671 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ldst(%rip)
    672 ; LINUX-64-PIC-NEXT: 	ret
    673 
    674 ; DARWIN-32-STATIC: _foo06:
    675 ; DARWIN-32-STATIC: 	movl	_lsrc, [[EAX:%e.x]]
    676 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ldst
    677 ; DARWIN-32-STATIC-NEXT: 	ret
    678 
    679 ; DARWIN-32-DYNAMIC: _foo06:
    680 ; DARWIN-32-DYNAMIC: 	movl	_lsrc, [[EAX:%e.x]]
    681 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst
    682 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    683 
    684 ; DARWIN-32-PIC: _foo06:
    685 ; DARWIN-32-PIC: 	calll	L9$pb
    686 ; DARWIN-32-PIC-NEXT: L9$pb:
    687 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    688 ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L9$pb([[EAX]]), [[ECX:%e.x]]
    689 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _ldst-L9$pb([[EAX]])
    690 ; DARWIN-32-PIC-NEXT: 	ret
    691 
    692 ; DARWIN-64-STATIC: _foo06:
    693 ; DARWIN-64-STATIC: 	movl	_lsrc(%rip), [[EAX:%e.x]]
    694 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ldst(%rip)
    695 ; DARWIN-64-STATIC-NEXT: 	ret
    696 
    697 ; DARWIN-64-DYNAMIC: _foo06:
    698 ; DARWIN-64-DYNAMIC: 	movl	_lsrc(%rip), [[EAX:%e.x]]
    699 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst(%rip)
    700 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    701 
    702 ; DARWIN-64-PIC: _foo06:
    703 ; DARWIN-64-PIC: 	movl	_lsrc(%rip), [[EAX:%e.x]]
    704 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ldst(%rip)
    705 ; DARWIN-64-PIC-NEXT: 	ret
    706 }
    707 
    708 define void @foo07() nounwind {
    709 entry:
    710 	store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8
    711 	ret void
    712 ; LINUX-64-STATIC: foo07:
    713 ; LINUX-64-STATIC: movq    $ldst, lptr
    714 ; LINUX-64-STATIC: ret
    715 
    716 ; LINUX-32-STATIC: foo07:
    717 ; LINUX-32-STATIC: 	movl	$ldst, lptr
    718 ; LINUX-32-STATIC-NEXT: 	ret
    719 
    720 ; LINUX-32-PIC: foo07:
    721 ; LINUX-32-PIC: 	movl	$ldst, lptr
    722 ; LINUX-32-PIC-NEXT: 	ret
    723 
    724 ; LINUX-64-PIC: foo07:
    725 ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]]
    726 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip)
    727 ; LINUX-64-PIC-NEXT: 	ret
    728 
    729 ; DARWIN-32-STATIC: _foo07:
    730 ; DARWIN-32-STATIC: 	movl	$_ldst, _lptr
    731 ; DARWIN-32-STATIC-NEXT: 	ret
    732 
    733 ; DARWIN-32-DYNAMIC: _foo07:
    734 ; DARWIN-32-DYNAMIC: 	movl	$_ldst, _lptr
    735 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    736 
    737 ; DARWIN-32-PIC: _foo07:
    738 ; DARWIN-32-PIC: 	calll	L10$pb
    739 ; DARWIN-32-PIC-NEXT: L10$pb:
    740 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    741 ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L10$pb([[EAX]]), [[ECX:%e.x]]
    742 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L10$pb([[EAX]])
    743 ; DARWIN-32-PIC-NEXT: 	ret
    744 
    745 ; DARWIN-64-STATIC: _foo07:
    746 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
    747 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
    748 ; DARWIN-64-STATIC-NEXT: 	ret
    749 
    750 ; DARWIN-64-DYNAMIC: _foo07:
    751 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
    752 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
    753 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    754 
    755 ; DARWIN-64-PIC: _foo07:
    756 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
    757 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
    758 ; DARWIN-64-PIC-NEXT: 	ret
    759 }
    760 
    761 define void @foo08() nounwind {
    762 entry:
    763 	%0 = load i32** @lptr, align 8
    764 	%1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 0), align 4
    765 	store i32 %1, i32* %0, align 4
    766 	ret void
    767 ; LINUX-64-STATIC: foo08:
    768 ; LINUX-64-STATIC: movl    lsrc(%rip), %
    769 ; LINUX-64-STATIC: movq    lptr(%rip), %
    770 ; LINUX-64-STATIC: movl
    771 ; LINUX-64-STATIC: ret
    772 
    773 ; LINUX-32-STATIC: foo08:
    774 ; LINUX-32-STATIC: 	movl	lsrc, [[EAX:%e.x]]
    775 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
    776 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    777 ; LINUX-32-STATIC-NEXT: 	ret
    778 
    779 ; LINUX-32-PIC: foo08:
    780 ; LINUX-32-PIC: 	movl	lsrc, [[EAX:%e.x]]
    781 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
    782 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    783 ; LINUX-32-PIC-NEXT: 	ret
    784 
    785 ; LINUX-64-PIC: foo08:
    786 ; LINUX-64-PIC: 	movl	lsrc(%rip), [[EAX:%e.x]]
    787 ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]]
    788 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    789 ; LINUX-64-PIC-NEXT: 	ret
    790 
    791 ; DARWIN-32-STATIC: _foo08:
    792 ; DARWIN-32-STATIC: 	movl	_lsrc, [[EAX:%e.x]]
    793 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
    794 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    795 ; DARWIN-32-STATIC-NEXT: 	ret
    796 
    797 ; DARWIN-32-DYNAMIC: _foo08:
    798 ; DARWIN-32-DYNAMIC: 	movl	_lsrc, [[EAX:%e.x]]
    799 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
    800 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
    801 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    802 
    803 ; DARWIN-32-PIC: _foo08:
    804 ; DARWIN-32-PIC: 	calll	L11$pb
    805 ; DARWIN-32-PIC-NEXT: L11$pb:
    806 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    807 ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L11$pb([[EAX]]), [[ECX:%e.x]]
    808 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L11$pb([[EAX]]), [[EAX:%e.x]]
    809 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
    810 ; DARWIN-32-PIC-NEXT: 	ret
    811 
    812 ; DARWIN-64-STATIC: _foo08:
    813 ; DARWIN-64-STATIC: 	movl	_lsrc(%rip), [[EAX:%e.x]]
    814 ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
    815 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    816 ; DARWIN-64-STATIC-NEXT: 	ret
    817 
    818 ; DARWIN-64-DYNAMIC: _foo08:
    819 ; DARWIN-64-DYNAMIC: 	movl	_lsrc(%rip), [[EAX:%e.x]]
    820 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
    821 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    822 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    823 
    824 ; DARWIN-64-PIC: _foo08:
    825 ; DARWIN-64-PIC: 	movl	_lsrc(%rip), [[EAX:%e.x]]
    826 ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
    827 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]])
    828 ; DARWIN-64-PIC-NEXT: 	ret
    829 }
    830 
    831 define void @qux00() nounwind {
    832 entry:
    833 	%0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
    834 	store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), align 4
    835 	ret void
    836 ; LINUX-64-STATIC: qux00:
    837 ; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]]
    838 ; LINUX-64-STATIC: movl    [[EAX]], dst+64(%rip)
    839 ; LINUX-64-STATIC: ret
    840 
    841 ; LINUX-32-STATIC: qux00:
    842 ; LINUX-32-STATIC: 	movl	src+64, [[EAX:%e.x]]
    843 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dst+64
    844 ; LINUX-32-STATIC-NEXT: 	ret
    845 
    846 ; LINUX-32-PIC: qux00:
    847 ; LINUX-32-PIC: 	movl	src+64, [[EAX:%e.x]]
    848 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dst+64
    849 ; LINUX-32-PIC-NEXT: 	ret
    850 
    851 ; LINUX-64-PIC: qux00:
    852 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
    853 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    854 ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]]
    855 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    856 ; LINUX-64-PIC-NEXT: 	ret
    857 
    858 ; DARWIN-32-STATIC: _qux00:
    859 ; DARWIN-32-STATIC: 	movl	_src+64, [[EAX:%e.x]]
    860 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dst+64
    861 ; DARWIN-32-STATIC-NEXT: 	ret
    862 
    863 ; DARWIN-32-DYNAMIC: _qux00:
    864 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]]
    865 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]]
    866 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]]
    867 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
    868 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    869 
    870 ; DARWIN-32-PIC: _qux00:
    871 ; DARWIN-32-PIC: 	calll	L12$pb
    872 ; DARWIN-32-PIC-NEXT: L12$pb:
    873 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    874 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L12$pb([[EAX]]), [[ECX:%e.x]]
    875 ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]]
    876 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L12$pb([[EAX]]), [[EAX:%e.x]]
    877 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]])
    878 ; DARWIN-32-PIC-NEXT: 	ret
    879 
    880 ; DARWIN-64-STATIC: _qux00:
    881 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
    882 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    883 ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
    884 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    885 ; DARWIN-64-STATIC-NEXT: 	ret
    886 
    887 ; DARWIN-64-DYNAMIC: _qux00:
    888 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
    889 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    890 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
    891 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    892 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    893 
    894 ; DARWIN-64-PIC: _qux00:
    895 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
    896 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    897 ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
    898 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    899 ; DARWIN-64-PIC-NEXT: 	ret
    900 }
    901 
    902 define void @qxx00() nounwind {
    903 entry:
    904 	%0 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
    905 	store i32 %0, i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), align 4
    906 	ret void
    907 ; LINUX-64-STATIC: qxx00:
    908 ; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]]
    909 ; LINUX-64-STATIC: movl    [[EAX]], xdst+64(%rip)
    910 ; LINUX-64-STATIC: ret
    911 
    912 ; LINUX-32-STATIC: qxx00:
    913 ; LINUX-32-STATIC: 	movl	xsrc+64, [[EAX:%e.x]]
    914 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], xdst+64
    915 ; LINUX-32-STATIC-NEXT: 	ret
    916 
    917 ; LINUX-32-PIC: qxx00:
    918 ; LINUX-32-PIC: 	movl	xsrc+64, [[EAX:%e.x]]
    919 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], xdst+64
    920 ; LINUX-32-PIC-NEXT: 	ret
    921 
    922 ; LINUX-64-PIC: qxx00:
    923 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    924 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    925 ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    926 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    927 ; LINUX-64-PIC-NEXT: 	ret
    928 
    929 ; DARWIN-32-STATIC: _qxx00:
    930 ; DARWIN-32-STATIC: 	movl	_xsrc+64, [[EAX:%e.x]]
    931 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _xdst+64
    932 ; DARWIN-32-STATIC-NEXT: 	ret
    933 
    934 ; DARWIN-32-DYNAMIC: _qxx00:
    935 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
    936 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]]
    937 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]]
    938 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
    939 ; DARWIN-32-DYNAMIC-NEXT: 	ret
    940 
    941 ; DARWIN-32-PIC: _qxx00:
    942 ; DARWIN-32-PIC: 	calll	L13$pb
    943 ; DARWIN-32-PIC-NEXT: L13$pb:
    944 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
    945 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L13$pb([[EAX]]), [[ECX:%e.x]]
    946 ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]]
    947 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L13$pb([[EAX]]), [[EAX:%e.x]]
    948 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]])
    949 ; DARWIN-32-PIC-NEXT: 	ret
    950 
    951 ; DARWIN-64-STATIC: _qxx00:
    952 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    953 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    954 ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    955 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    956 ; DARWIN-64-STATIC-NEXT: 	ret
    957 
    958 ; DARWIN-64-DYNAMIC: _qxx00:
    959 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    960 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    961 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    962 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    963 ; DARWIN-64-DYNAMIC-NEXT: 	ret
    964 
    965 ; DARWIN-64-PIC: _qxx00:
    966 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
    967 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
    968 ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
    969 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
    970 ; DARWIN-64-PIC-NEXT: 	ret
    971 }
    972 
    973 define void @qux01() nounwind {
    974 entry:
    975 	store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8
    976 	ret void
    977 ; LINUX-64-STATIC: qux01:
    978 ; LINUX-64-STATIC: movq    $dst+64, ptr
    979 ; LINUX-64-STATIC: ret
    980 
    981 ; LINUX-32-STATIC: qux01:
    982 ; LINUX-32-STATIC: 	movl	$dst+64, ptr
    983 ; LINUX-32-STATIC-NEXT: 	ret
    984 
    985 ; LINUX-32-PIC: qux01:
    986 ; LINUX-32-PIC: 	movl	$dst+64, ptr
    987 ; LINUX-32-PIC-NEXT: 	ret
    988 
    989 ; LINUX-64-PIC: qux01:
    990 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
    991 ; LINUX-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]]
    992 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
    993 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
    994 ; LINUX-64-PIC-NEXT: 	ret
    995 
    996 ; DARWIN-32-STATIC: _qux01:
    997 ; DARWIN-32-STATIC: 	movl	$_dst+64, _ptr
    998 ; DARWIN-32-STATIC-NEXT: 	ret
    999 
   1000 ; DARWIN-32-DYNAMIC: _qux01:
   1001 ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, [[EAX:%e.x]]
   1002 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, [[EAX:%e.x]]
   1003 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   1004 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   1005 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1006 
   1007 ; DARWIN-32-PIC: _qux01:
   1008 ; DARWIN-32-PIC: 	calll	L14$pb
   1009 ; DARWIN-32-PIC-NEXT: L14$pb:
   1010 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1011 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L14$pb([[EAX]]), [[ECX:%e.x]]
   1012 ; DARWIN-32-PIC-NEXT: 	addl	$64, [[ECX:%e.x]]
   1013 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L14$pb([[EAX]]), [[EAX:%e.x]]
   1014 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   1015 ; DARWIN-32-PIC-NEXT: 	ret
   1016 
   1017 ; DARWIN-64-STATIC: _qux01:
   1018 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   1019 ; DARWIN-64-STATIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1020 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1021 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1022 ; DARWIN-64-STATIC-NEXT: 	ret
   1023 
   1024 ; DARWIN-64-DYNAMIC: _qux01:
   1025 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   1026 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1027 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1028 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1029 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1030 
   1031 ; DARWIN-64-PIC: _qux01:
   1032 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   1033 ; DARWIN-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1034 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1035 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1036 ; DARWIN-64-PIC-NEXT: 	ret
   1037 }
   1038 
   1039 define void @qxx01() nounwind {
   1040 entry:
   1041 	store i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8
   1042 	ret void
   1043 ; LINUX-64-STATIC: qxx01:
   1044 ; LINUX-64-STATIC: movq    $xdst+64, ptr
   1045 ; LINUX-64-STATIC: ret
   1046 
   1047 ; LINUX-32-STATIC: qxx01:
   1048 ; LINUX-32-STATIC: 	movl	$xdst+64, ptr
   1049 ; LINUX-32-STATIC-NEXT: 	ret
   1050 
   1051 ; LINUX-32-PIC: qxx01:
   1052 ; LINUX-32-PIC: 	movl	$xdst+64, ptr
   1053 ; LINUX-32-PIC-NEXT: 	ret
   1054 
   1055 ; LINUX-64-PIC: qxx01:
   1056 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   1057 ; LINUX-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1058 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1059 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1060 ; LINUX-64-PIC-NEXT: 	ret
   1061 
   1062 ; DARWIN-32-STATIC: _qxx01:
   1063 ; DARWIN-32-STATIC: 	movl	$_xdst+64, _ptr
   1064 ; DARWIN-32-STATIC-NEXT: 	ret
   1065 
   1066 ; DARWIN-32-DYNAMIC: _qxx01:
   1067 ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, [[EAX:%e.x]]
   1068 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, [[EAX:%e.x]]
   1069 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   1070 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   1071 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1072 
   1073 ; DARWIN-32-PIC: _qxx01:
   1074 ; DARWIN-32-PIC: 	calll	L15$pb
   1075 ; DARWIN-32-PIC-NEXT: L15$pb:
   1076 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1077 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L15$pb([[EAX]]), [[ECX:%e.x]]
   1078 ; DARWIN-32-PIC-NEXT: 	addl	$64, [[ECX:%e.x]]
   1079 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L15$pb([[EAX]]), [[EAX:%e.x]]
   1080 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   1081 ; DARWIN-32-PIC-NEXT: 	ret
   1082 
   1083 ; DARWIN-64-STATIC: _qxx01:
   1084 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   1085 ; DARWIN-64-STATIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1086 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1087 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1088 ; DARWIN-64-STATIC-NEXT: 	ret
   1089 
   1090 ; DARWIN-64-DYNAMIC: _qxx01:
   1091 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   1092 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1093 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1094 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1095 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1096 
   1097 ; DARWIN-64-PIC: _qxx01:
   1098 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   1099 ; DARWIN-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1100 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1101 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1102 ; DARWIN-64-PIC-NEXT: 	ret
   1103 }
   1104 
   1105 define void @qux02() nounwind {
   1106 entry:
   1107 	%0 = load i32** @ptr, align 8
   1108 	%1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16), align 4
   1109 	%2 = getelementptr i32* %0, i64 16
   1110 	store i32 %1, i32* %2, align 4
   1111 ; LINUX-64-STATIC: qux02:
   1112 ; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]]
   1113 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   1114 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
   1115 ; LINUX-64-STATIC: ret
   1116 
   1117 ; LINUX-32-STATIC: qux02:
   1118 ; LINUX-32-STATIC: 	movl	src+64, [[EAX:%e.x]]
   1119 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   1120 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1121 ; LINUX-32-STATIC-NEXT: 	ret
   1122 	ret void
   1123 
   1124 ; LINUX-32-PIC: qux02:
   1125 ; LINUX-32-PIC: 	movl	src+64, [[EAX:%e.x]]
   1126 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   1127 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1128 ; LINUX-32-PIC-NEXT: 	ret
   1129 
   1130 ; LINUX-64-PIC: qux02:
   1131 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   1132 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1133 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1134 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1135 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1136 ; LINUX-64-PIC-NEXT: 	ret
   1137 
   1138 ; DARWIN-32-STATIC: _qux02:
   1139 ; DARWIN-32-STATIC: 	movl	_src+64, [[EAX:%e.x]]
   1140 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
   1141 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1142 ; DARWIN-32-STATIC-NEXT: 	ret
   1143 
   1144 ; DARWIN-32-DYNAMIC: _qux02:
   1145 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]]
   1146 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]]
   1147 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   1148 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
   1149 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1150 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1151 
   1152 ; DARWIN-32-PIC: _qux02:
   1153 ; DARWIN-32-PIC: 	calll	L16$pb
   1154 ; DARWIN-32-PIC-NEXT: L16$pb:
   1155 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1156 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L16$pb([[EAX]]), [[ECX:%e.x]]
   1157 ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]]
   1158 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L16$pb([[EAX]]), [[EAX:%e.x]]
   1159 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   1160 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]])
   1161 ; DARWIN-32-PIC-NEXT: 	ret
   1162 
   1163 ; DARWIN-64-STATIC: _qux02:
   1164 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   1165 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1166 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1167 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1168 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1169 ; DARWIN-64-STATIC-NEXT: 	ret
   1170 
   1171 ; DARWIN-64-DYNAMIC: _qux02:
   1172 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   1173 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1174 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1175 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1176 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1177 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1178 
   1179 ; DARWIN-64-PIC: _qux02:
   1180 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   1181 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1182 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1183 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1184 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1185 ; DARWIN-64-PIC-NEXT: 	ret
   1186 }
   1187 
   1188 define void @qxx02() nounwind {
   1189 entry:
   1190 	%0 = load i32** @ptr, align 8
   1191 	%1 = load i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16), align 4
   1192 	%2 = getelementptr i32* %0, i64 16
   1193 	store i32 %1, i32* %2, align 4
   1194 ; LINUX-64-STATIC: qxx02:
   1195 ; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]]
   1196 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   1197 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
   1198 ; LINUX-64-STATIC: ret
   1199 
   1200 ; LINUX-32-STATIC: qxx02:
   1201 ; LINUX-32-STATIC: 	movl	xsrc+64, [[EAX:%e.x]]
   1202 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   1203 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1204 ; LINUX-32-STATIC-NEXT: 	ret
   1205 	ret void
   1206 
   1207 ; LINUX-32-PIC: qxx02:
   1208 ; LINUX-32-PIC: 	movl	xsrc+64, [[EAX:%e.x]]
   1209 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   1210 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1211 ; LINUX-32-PIC-NEXT: 	ret
   1212 
   1213 ; LINUX-64-PIC: qxx02:
   1214 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1215 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1216 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1217 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1218 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1219 ; LINUX-64-PIC-NEXT: 	ret
   1220 
   1221 ; DARWIN-32-STATIC: _qxx02:
   1222 ; DARWIN-32-STATIC: 	movl	_xsrc+64, [[EAX:%e.x]]
   1223 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
   1224 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1225 ; DARWIN-32-STATIC-NEXT: 	ret
   1226 
   1227 ; DARWIN-32-DYNAMIC: _qxx02:
   1228 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]]
   1229 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]]
   1230 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   1231 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
   1232 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1233 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1234 
   1235 ; DARWIN-32-PIC: _qxx02:
   1236 ; DARWIN-32-PIC: 	calll	L17$pb
   1237 ; DARWIN-32-PIC-NEXT: L17$pb:
   1238 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1239 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L17$pb([[EAX]]), [[ECX:%e.x]]
   1240 ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]]
   1241 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L17$pb([[EAX]]), [[EAX:%e.x]]
   1242 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   1243 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]])
   1244 ; DARWIN-32-PIC-NEXT: 	ret
   1245 
   1246 ; DARWIN-64-STATIC: _qxx02:
   1247 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1248 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1249 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1250 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1251 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1252 ; DARWIN-64-STATIC-NEXT: 	ret
   1253 
   1254 ; DARWIN-64-DYNAMIC: _qxx02:
   1255 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1256 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1257 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1258 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1259 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1260 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1261 
   1262 ; DARWIN-64-PIC: _qxx02:
   1263 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1264 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1265 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1266 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1267 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1268 ; DARWIN-64-PIC-NEXT: 	ret
   1269 }
   1270 
   1271 define void @qux03() nounwind {
   1272 entry:
   1273 	%0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
   1274 	store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), align 32
   1275 	ret void
   1276 ; LINUX-64-STATIC: qux03:
   1277 ; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]]
   1278 ; LINUX-64-STATIC: movl    [[EAX]], ddst+64(%rip)
   1279 ; LINUX-64-STATIC: ret
   1280 
   1281 ; LINUX-32-STATIC: qux03:
   1282 ; LINUX-32-STATIC: 	movl	dsrc+64, [[EAX:%e.x]]
   1283 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ddst+64
   1284 ; LINUX-32-STATIC-NEXT: 	ret
   1285 
   1286 ; LINUX-32-PIC: qux03:
   1287 ; LINUX-32-PIC: 	movl	dsrc+64, [[EAX:%e.x]]
   1288 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ddst+64
   1289 ; LINUX-32-PIC-NEXT: 	ret
   1290 
   1291 ; LINUX-64-PIC: qux03:
   1292 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1293 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1294 ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]]
   1295 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1296 ; LINUX-64-PIC-NEXT: 	ret
   1297 
   1298 ; DARWIN-32-STATIC: _qux03:
   1299 ; DARWIN-32-STATIC: 	movl	_dsrc+64, [[EAX:%e.x]]
   1300 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ddst+64
   1301 ; DARWIN-32-STATIC-NEXT: 	ret
   1302 
   1303 ; DARWIN-32-DYNAMIC: _qux03:
   1304 ; DARWIN-32-DYNAMIC: 	movl	_dsrc+64, [[EAX:%e.x]]
   1305 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+64
   1306 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1307 
   1308 ; DARWIN-32-PIC: _qux03:
   1309 ; DARWIN-32-PIC: 	calll	L18$pb
   1310 ; DARWIN-32-PIC-NEXT: L18$pb:
   1311 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1312 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L18$pb)+64([[EAX]]), [[ECX:%e.x]]
   1313 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ddst-L18$pb)+64([[EAX]])
   1314 ; DARWIN-32-PIC-NEXT: 	ret
   1315 
   1316 ; DARWIN-64-STATIC: _qux03:
   1317 ; DARWIN-64-STATIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]]
   1318 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ddst+64(%rip)
   1319 ; DARWIN-64-STATIC-NEXT: 	ret
   1320 
   1321 ; DARWIN-64-DYNAMIC: _qux03:
   1322 ; DARWIN-64-DYNAMIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]]
   1323 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+64(%rip)
   1324 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1325 
   1326 ; DARWIN-64-PIC: _qux03:
   1327 ; DARWIN-64-PIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]]
   1328 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ddst+64(%rip)
   1329 ; DARWIN-64-PIC-NEXT: 	ret
   1330 }
   1331 
   1332 define void @qux04() nounwind {
   1333 entry:
   1334 	store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8
   1335 	ret void
   1336 ; LINUX-64-STATIC: qux04:
   1337 ; LINUX-64-STATIC: movq    $ddst+64, dptr(%rip)
   1338 ; LINUX-64-STATIC: ret
   1339 
   1340 ; LINUX-32-STATIC: qux04:
   1341 ; LINUX-32-STATIC: 	movl	$ddst+64, dptr
   1342 ; LINUX-32-STATIC-NEXT: 	ret
   1343 
   1344 ; LINUX-32-PIC: qux04:
   1345 ; LINUX-32-PIC: 	movl	$ddst+64, dptr
   1346 ; LINUX-32-PIC-NEXT: 	ret
   1347 
   1348 ; LINUX-64-PIC: qux04:
   1349 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
   1350 ; LINUX-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]]
   1351 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1352 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   1353 ; LINUX-64-PIC-NEXT: 	ret
   1354 
   1355 ; DARWIN-32-STATIC: _qux04:
   1356 ; DARWIN-32-STATIC: 	movl	$_ddst+64, _dptr
   1357 ; DARWIN-32-STATIC-NEXT: 	ret
   1358 
   1359 ; DARWIN-32-DYNAMIC: _qux04:
   1360 ; DARWIN-32-DYNAMIC: 	movl	$_ddst+64, _dptr
   1361 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1362 
   1363 ; DARWIN-32-PIC: _qux04:
   1364 ; DARWIN-32-PIC: 	calll	L19$pb
   1365 ; DARWIN-32-PIC-NEXT: L19$pb:
   1366 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1367 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L19$pb)+64([[EAX]]), [[ECX:%e.x]]
   1368 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L19$pb([[EAX]])
   1369 ; DARWIN-32-PIC-NEXT: 	ret
   1370 
   1371 ; DARWIN-64-STATIC: _qux04:
   1372 ; DARWIN-64-STATIC: 	leaq	_ddst+64(%rip), [[RAX:%r.x]]
   1373 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   1374 ; DARWIN-64-STATIC-NEXT: 	ret
   1375 
   1376 ; DARWIN-64-DYNAMIC: _qux04:
   1377 ; DARWIN-64-DYNAMIC: 	leaq	_ddst+64(%rip), [[RAX:%r.x]]
   1378 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   1379 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1380 
   1381 ; DARWIN-64-PIC: _qux04:
   1382 ; DARWIN-64-PIC: 	leaq	_ddst+64(%rip), [[RAX:%r.x]]
   1383 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   1384 ; DARWIN-64-PIC-NEXT: 	ret
   1385 }
   1386 
   1387 define void @qux05() nounwind {
   1388 entry:
   1389 	%0 = load i32** @dptr, align 8
   1390 	%1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16), align 32
   1391 	%2 = getelementptr i32* %0, i64 16
   1392 	store i32 %1, i32* %2, align 4
   1393 ; LINUX-64-STATIC: qux05:
   1394 ; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]]
   1395 ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
   1396 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
   1397 ; LINUX-64-STATIC: ret
   1398 
   1399 ; LINUX-32-STATIC: qux05:
   1400 ; LINUX-32-STATIC: 	movl	dsrc+64, [[EAX:%e.x]]
   1401 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   1402 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1403 ; LINUX-32-STATIC-NEXT: 	ret
   1404 	ret void
   1405 
   1406 ; LINUX-32-PIC: qux05:
   1407 ; LINUX-32-PIC: 	movl	dsrc+64, [[EAX:%e.x]]
   1408 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   1409 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1410 ; LINUX-32-PIC-NEXT: 	ret
   1411 
   1412 ; LINUX-64-PIC: qux05:
   1413 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1414 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]]
   1415 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1416 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1417 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1418 ; LINUX-64-PIC-NEXT: 	ret
   1419 
   1420 ; DARWIN-32-STATIC: _qux05:
   1421 ; DARWIN-32-STATIC: 	movl	_dsrc+64, [[EAX:%e.x]]
   1422 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   1423 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1424 ; DARWIN-32-STATIC-NEXT: 	ret
   1425 
   1426 ; DARWIN-32-DYNAMIC: _qux05:
   1427 ; DARWIN-32-DYNAMIC: 	movl	_dsrc+64, [[EAX:%e.x]]
   1428 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   1429 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1430 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1431 
   1432 ; DARWIN-32-PIC: _qux05:
   1433 ; DARWIN-32-PIC: 	calll	L20$pb
   1434 ; DARWIN-32-PIC-NEXT: L20$pb:
   1435 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1436 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L20$pb)+64([[EAX]]), [[ECX:%e.x]]
   1437 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L20$pb([[EAX]]), [[EAX:%e.x]]
   1438 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]])
   1439 ; DARWIN-32-PIC-NEXT: 	ret
   1440 
   1441 ; DARWIN-64-STATIC: _qux05:
   1442 ; DARWIN-64-STATIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]]
   1443 ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   1444 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1445 ; DARWIN-64-STATIC-NEXT: 	ret
   1446 
   1447 ; DARWIN-64-DYNAMIC: _qux05:
   1448 ; DARWIN-64-DYNAMIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]]
   1449 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   1450 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1451 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1452 
   1453 ; DARWIN-64-PIC: _qux05:
   1454 ; DARWIN-64-PIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]]
   1455 ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   1456 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1457 ; DARWIN-64-PIC-NEXT: 	ret
   1458 }
   1459 
   1460 define void @qux06() nounwind {
   1461 entry:
   1462 	%0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
   1463 	store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), align 4
   1464 	ret void
   1465 ; LINUX-64-STATIC: qux06:
   1466 ; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]]
   1467 ; LINUX-64-STATIC: movl    [[EAX]], ldst+64
   1468 ; LINUX-64-STATIC: ret
   1469 
   1470 ; LINUX-32-STATIC: qux06:
   1471 ; LINUX-32-STATIC: 	movl	lsrc+64, [[EAX:%e.x]]
   1472 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ldst+64
   1473 ; LINUX-32-STATIC-NEXT: 	ret
   1474 
   1475 ; LINUX-32-PIC: qux06:
   1476 ; LINUX-32-PIC: 	movl	lsrc+64, [[EAX:%e.x]]
   1477 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ldst+64
   1478 ; LINUX-32-PIC-NEXT: 	ret
   1479 
   1480 ; LINUX-64-PIC: qux06:
   1481 ; LINUX-64-PIC: 	movl	lsrc+64(%rip), [[EAX:%e.x]]
   1482 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ldst+64(%rip)
   1483 ; LINUX-64-PIC-NEXT: 	ret
   1484 
   1485 ; DARWIN-32-STATIC: _qux06:
   1486 ; DARWIN-32-STATIC: 	movl	_lsrc+64, [[EAX:%e.x]]
   1487 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ldst+64
   1488 ; DARWIN-32-STATIC-NEXT: 	ret
   1489 
   1490 ; DARWIN-32-DYNAMIC: _qux06:
   1491 ; DARWIN-32-DYNAMIC: 	movl	_lsrc+64, [[EAX:%e.x]]
   1492 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+64
   1493 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1494 
   1495 ; DARWIN-32-PIC: _qux06:
   1496 ; DARWIN-32-PIC: 	calll	L21$pb
   1497 ; DARWIN-32-PIC-NEXT: L21$pb:
   1498 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1499 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L21$pb)+64([[EAX]]), [[ECX:%e.x]]
   1500 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ldst-L21$pb)+64([[EAX]])
   1501 ; DARWIN-32-PIC-NEXT: 	ret
   1502 
   1503 ; DARWIN-64-STATIC: _qux06:
   1504 ; DARWIN-64-STATIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]]
   1505 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ldst+64(%rip)
   1506 ; DARWIN-64-STATIC-NEXT: 	ret
   1507 
   1508 ; DARWIN-64-DYNAMIC: _qux06:
   1509 ; DARWIN-64-DYNAMIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]]
   1510 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+64(%rip)
   1511 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1512 
   1513 ; DARWIN-64-PIC: _qux06:
   1514 ; DARWIN-64-PIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]]
   1515 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ldst+64(%rip)
   1516 ; DARWIN-64-PIC-NEXT: 	ret
   1517 }
   1518 
   1519 define void @qux07() nounwind {
   1520 entry:
   1521 	store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8
   1522 	ret void
   1523 ; LINUX-64-STATIC: qux07:
   1524 ; LINUX-64-STATIC: movq    $ldst+64, lptr
   1525 ; LINUX-64-STATIC: ret
   1526 
   1527 ; LINUX-32-STATIC: qux07:
   1528 ; LINUX-32-STATIC: 	movl	$ldst+64, lptr
   1529 ; LINUX-32-STATIC-NEXT: 	ret
   1530 
   1531 ; LINUX-32-PIC: qux07:
   1532 ; LINUX-32-PIC: 	movl	$ldst+64, lptr
   1533 ; LINUX-32-PIC-NEXT: 	ret
   1534 
   1535 ; LINUX-64-PIC: qux07:
   1536 ; LINUX-64-PIC: 	leaq	ldst+64(%rip), [[RAX:%r.x]]
   1537 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip)
   1538 ; LINUX-64-PIC-NEXT: 	ret
   1539 
   1540 ; DARWIN-32-STATIC: _qux07:
   1541 ; DARWIN-32-STATIC: 	movl	$_ldst+64, _lptr
   1542 ; DARWIN-32-STATIC-NEXT: 	ret
   1543 
   1544 ; DARWIN-32-DYNAMIC: _qux07:
   1545 ; DARWIN-32-DYNAMIC: 	movl	$_ldst+64, _lptr
   1546 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1547 
   1548 ; DARWIN-32-PIC: _qux07:
   1549 ; DARWIN-32-PIC: 	calll	L22$pb
   1550 ; DARWIN-32-PIC-NEXT: L22$pb:
   1551 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1552 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L22$pb)+64([[EAX]]), [[ECX:%e.x]]
   1553 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L22$pb([[EAX]])
   1554 ; DARWIN-32-PIC-NEXT: 	ret
   1555 
   1556 ; DARWIN-64-STATIC: _qux07:
   1557 ; DARWIN-64-STATIC: 	leaq	_ldst+64(%rip), [[RAX:%r.x]]
   1558 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   1559 ; DARWIN-64-STATIC-NEXT: 	ret
   1560 
   1561 ; DARWIN-64-DYNAMIC: _qux07:
   1562 ; DARWIN-64-DYNAMIC: 	leaq	_ldst+64(%rip), [[RAX:%r.x]]
   1563 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   1564 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1565 
   1566 ; DARWIN-64-PIC: _qux07:
   1567 ; DARWIN-64-PIC: 	leaq	_ldst+64(%rip), [[RAX:%r.x]]
   1568 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   1569 ; DARWIN-64-PIC-NEXT: 	ret
   1570 }
   1571 
   1572 define void @qux08() nounwind {
   1573 entry:
   1574 	%0 = load i32** @lptr, align 8
   1575 	%1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16), align 4
   1576 	%2 = getelementptr i32* %0, i64 16
   1577 	store i32 %1, i32* %2, align 4
   1578 ; LINUX-64-STATIC: qux08:
   1579 ; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]]
   1580 ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
   1581 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]])
   1582 ; LINUX-64-STATIC: ret
   1583 
   1584 ; LINUX-32-STATIC: qux08:
   1585 ; LINUX-32-STATIC: 	movl	lsrc+64, [[EAX:%e.x]]
   1586 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   1587 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1588 ; LINUX-32-STATIC-NEXT: 	ret
   1589 	ret void
   1590 
   1591 ; LINUX-32-PIC: qux08:
   1592 ; LINUX-32-PIC: 	movl	lsrc+64, [[EAX:%e.x]]
   1593 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   1594 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1595 ; LINUX-32-PIC-NEXT: 	ret
   1596 
   1597 ; LINUX-64-PIC: qux08:
   1598 ; LINUX-64-PIC: 	movl	lsrc+64(%rip), [[EAX:%e.x]]
   1599 ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]]
   1600 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1601 ; LINUX-64-PIC-NEXT: 	ret
   1602 
   1603 ; DARWIN-32-STATIC: _qux08:
   1604 ; DARWIN-32-STATIC: 	movl	_lsrc+64, [[EAX:%e.x]]
   1605 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   1606 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1607 ; DARWIN-32-STATIC-NEXT: 	ret
   1608 
   1609 ; DARWIN-32-DYNAMIC: _qux08:
   1610 ; DARWIN-32-DYNAMIC: 	movl	_lsrc+64, [[EAX:%e.x]]
   1611 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   1612 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]])
   1613 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1614 
   1615 ; DARWIN-32-PIC: _qux08:
   1616 ; DARWIN-32-PIC: 	calll	L23$pb
   1617 ; DARWIN-32-PIC-NEXT: L23$pb:
   1618 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1619 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L23$pb)+64([[EAX]]), [[ECX:%e.x]]
   1620 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L23$pb([[EAX]]), [[EAX:%e.x]]
   1621 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]])
   1622 ; DARWIN-32-PIC-NEXT: 	ret
   1623 
   1624 ; DARWIN-64-STATIC: _qux08:
   1625 ; DARWIN-64-STATIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]]
   1626 ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   1627 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1628 ; DARWIN-64-STATIC-NEXT: 	ret
   1629 
   1630 ; DARWIN-64-DYNAMIC: _qux08:
   1631 ; DARWIN-64-DYNAMIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]]
   1632 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   1633 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1634 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1635 
   1636 ; DARWIN-64-PIC: _qux08:
   1637 ; DARWIN-64-PIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]]
   1638 ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   1639 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]])
   1640 ; DARWIN-64-PIC-NEXT: 	ret
   1641 }
   1642 
   1643 define void @ind00(i64 %i) nounwind {
   1644 entry:
   1645 	%0 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
   1646 	%1 = load i32* %0, align 4
   1647 	%2 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
   1648 	store i32 %1, i32* %2, align 4
   1649 	ret void
   1650 ; LINUX-64-STATIC: ind00:
   1651 ; LINUX-64-STATIC: movl    src(,%rdi,4), [[EAX:%e.x]]
   1652 ; LINUX-64-STATIC: movl    [[EAX]], dst(,%rdi,4)
   1653 ; LINUX-64-STATIC: ret
   1654 
   1655 ; LINUX-32-STATIC: ind00:
   1656 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1657 ; LINUX-32-STATIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]]
   1658 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], dst(,[[EAX]],4)
   1659 ; LINUX-32-STATIC-NEXT: 	ret
   1660 
   1661 ; LINUX-32-PIC: ind00:
   1662 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   1663 ; LINUX-32-PIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]]
   1664 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], dst(,[[EAX]],4)
   1665 ; LINUX-32-PIC-NEXT: 	ret
   1666 
   1667 ; LINUX-64-PIC: ind00:
   1668 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   1669 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1670 ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]]
   1671 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1672 ; LINUX-64-PIC-NEXT: 	ret
   1673 
   1674 ; DARWIN-32-STATIC: _ind00:
   1675 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1676 ; DARWIN-32-STATIC-NEXT: 	movl	_src(,[[EAX]],4), [[ECX:%e.x]]
   1677 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _dst(,[[EAX]],4)
   1678 ; DARWIN-32-STATIC-NEXT: 	ret
   1679 
   1680 ; DARWIN-32-DYNAMIC: _ind00:
   1681 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   1682 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   1683 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   1684 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[EDX:%e.x]]
   1685 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   1686 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1687 
   1688 ; DARWIN-32-PIC: _ind00:
   1689 ; DARWIN-32-PIC: 	calll	L24$pb
   1690 ; DARWIN-32-PIC-NEXT: L24$pb:
   1691 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1692 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   1693 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L24$pb([[EAX]]), [[EDX:%e.x]]
   1694 ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   1695 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L24$pb([[EAX]]), [[EAX:%e.x]]
   1696 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4)
   1697 ; DARWIN-32-PIC-NEXT: 	ret
   1698 
   1699 ; DARWIN-64-STATIC: _ind00:
   1700 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   1701 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1702 ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   1703 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1704 ; DARWIN-64-STATIC-NEXT: 	ret
   1705 
   1706 ; DARWIN-64-DYNAMIC: _ind00:
   1707 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   1708 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1709 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   1710 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1711 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1712 
   1713 ; DARWIN-64-PIC: _ind00:
   1714 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   1715 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1716 ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   1717 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1718 ; DARWIN-64-PIC-NEXT: 	ret
   1719 }
   1720 
   1721 define void @ixd00(i64 %i) nounwind {
   1722 entry:
   1723 	%0 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
   1724 	%1 = load i32* %0, align 4
   1725 	%2 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
   1726 	store i32 %1, i32* %2, align 4
   1727 	ret void
   1728 ; LINUX-64-STATIC: ixd00:
   1729 ; LINUX-64-STATIC: movl    xsrc(,%rdi,4), [[EAX:%e.x]]
   1730 ; LINUX-64-STATIC: movl    [[EAX]], xdst(,%rdi,4)
   1731 ; LINUX-64-STATIC: ret
   1732 
   1733 ; LINUX-32-STATIC: ixd00:
   1734 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1735 ; LINUX-32-STATIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]]
   1736 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], xdst(,[[EAX]],4)
   1737 ; LINUX-32-STATIC-NEXT: 	ret
   1738 
   1739 ; LINUX-32-PIC: ixd00:
   1740 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   1741 ; LINUX-32-PIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]]
   1742 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], xdst(,[[EAX]],4)
   1743 ; LINUX-32-PIC-NEXT: 	ret
   1744 
   1745 ; LINUX-64-PIC: ixd00:
   1746 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1747 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1748 ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   1749 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1750 ; LINUX-64-PIC-NEXT: 	ret
   1751 
   1752 ; DARWIN-32-STATIC: _ixd00:
   1753 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1754 ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc(,[[EAX]],4), [[ECX:%e.x]]
   1755 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _xdst(,[[EAX]],4)
   1756 ; DARWIN-32-STATIC-NEXT: 	ret
   1757 
   1758 ; DARWIN-32-DYNAMIC: _ixd00:
   1759 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   1760 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
   1761 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   1762 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[EDX:%e.x]]
   1763 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   1764 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1765 
   1766 ; DARWIN-32-PIC: _ixd00:
   1767 ; DARWIN-32-PIC: 	calll	L25$pb
   1768 ; DARWIN-32-PIC-NEXT: L25$pb:
   1769 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1770 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   1771 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L25$pb([[EAX]]), [[EDX:%e.x]]
   1772 ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   1773 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L25$pb([[EAX]]), [[EAX:%e.x]]
   1774 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4)
   1775 ; DARWIN-32-PIC-NEXT: 	ret
   1776 
   1777 ; DARWIN-64-STATIC: _ixd00:
   1778 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1779 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1780 ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   1781 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1782 ; DARWIN-64-STATIC-NEXT: 	ret
   1783 
   1784 ; DARWIN-64-DYNAMIC: _ixd00:
   1785 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1786 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1787 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   1788 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1789 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1790 
   1791 ; DARWIN-64-PIC: _ixd00:
   1792 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   1793 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1794 ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   1795 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1796 ; DARWIN-64-PIC-NEXT: 	ret
   1797 }
   1798 
   1799 define void @ind01(i64 %i) nounwind {
   1800 entry:
   1801 	%0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %i
   1802 	store i32* %0, i32** @ptr, align 8
   1803 	ret void
   1804 ; LINUX-64-STATIC: ind01:
   1805 ; LINUX-64-STATIC: leaq    dst(,%rdi,4), [[RAX:%r.x]]
   1806 ; LINUX-64-STATIC: movq    [[RAX]], ptr
   1807 ; LINUX-64-STATIC: ret
   1808 
   1809 ; LINUX-32-STATIC: ind01:
   1810 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1811 ; LINUX-32-STATIC-NEXT: 	leal	dst(,[[EAX]],4), [[EAX:%e.x]]
   1812 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr
   1813 ; LINUX-32-STATIC-NEXT: 	ret
   1814 
   1815 ; LINUX-32-PIC: ind01:
   1816 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   1817 ; LINUX-32-PIC-NEXT: 	leal	dst(,[[EAX]],4), [[EAX:%e.x]]
   1818 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr
   1819 ; LINUX-32-PIC-NEXT: 	ret
   1820 
   1821 ; LINUX-64-PIC: ind01:
   1822 ; LINUX-64-PIC: 	shlq	$2, %rdi
   1823 ; LINUX-64-PIC-NEXT: 	addq	dst@GOTPCREL(%rip), %rdi
   1824 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1825 ; LINUX-64-PIC-NEXT: 	movq	%rdi, ([[RAX]])
   1826 ; LINUX-64-PIC-NEXT: 	ret
   1827 
   1828 ; DARWIN-32-STATIC: _ind01:
   1829 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1830 ; DARWIN-32-STATIC-NEXT: 	leal	_dst(,[[EAX]],4), [[EAX:%e.x]]
   1831 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr
   1832 ; DARWIN-32-STATIC-NEXT: 	ret
   1833 
   1834 ; DARWIN-32-DYNAMIC: _ind01:
   1835 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   1836 ; DARWIN-32-DYNAMIC-NEXT: 	shll	$2, [[EAX:%e.x]]
   1837 ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_dst$non_lazy_ptr, [[EAX:%e.x]]
   1838 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   1839 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   1840 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1841 
   1842 ; DARWIN-32-PIC: _ind01:
   1843 ; DARWIN-32-PIC: 	calll	L26$pb
   1844 ; DARWIN-32-PIC-NEXT: L26$pb:
   1845 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1846 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   1847 ; DARWIN-32-PIC-NEXT: 	shll	$2, [[ECX:%e.x]]
   1848 ; DARWIN-32-PIC-NEXT: 	addl	L_dst$non_lazy_ptr-L26$pb([[EAX]]), [[ECX:%e.x]]
   1849 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L26$pb([[EAX]]), [[EAX:%e.x]]
   1850 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   1851 ; DARWIN-32-PIC-NEXT: 	ret
   1852 
   1853 ; DARWIN-64-STATIC: _ind01:
   1854 ; DARWIN-64-STATIC: 	shlq	$2, %rdi
   1855 ; DARWIN-64-STATIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rdi
   1856 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1857 ; DARWIN-64-STATIC-NEXT: 	movq	%rdi, ([[RAX]])
   1858 ; DARWIN-64-STATIC-NEXT: 	ret
   1859 
   1860 ; DARWIN-64-DYNAMIC: _ind01:
   1861 ; DARWIN-64-DYNAMIC: 	shlq	$2, %rdi
   1862 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rdi
   1863 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1864 ; DARWIN-64-DYNAMIC-NEXT: 	movq	%rdi, ([[RAX]])
   1865 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1866 
   1867 ; DARWIN-64-PIC: _ind01:
   1868 ; DARWIN-64-PIC: 	shlq	$2, %rdi
   1869 ; DARWIN-64-PIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rdi
   1870 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1871 ; DARWIN-64-PIC-NEXT: 	movq	%rdi, ([[RAX]])
   1872 ; DARWIN-64-PIC-NEXT: 	ret
   1873 }
   1874 
   1875 define void @ixd01(i64 %i) nounwind {
   1876 entry:
   1877 	%0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %i
   1878 	store i32* %0, i32** @ptr, align 8
   1879 	ret void
   1880 ; LINUX-64-STATIC: ixd01:
   1881 ; LINUX-64-STATIC: leaq    xdst(,%rdi,4), [[RAX:%r.x]]
   1882 ; LINUX-64-STATIC: movq    [[RAX]], ptr
   1883 ; LINUX-64-STATIC: ret
   1884 
   1885 ; LINUX-32-STATIC: ixd01:
   1886 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1887 ; LINUX-32-STATIC-NEXT: 	leal	xdst(,[[EAX]],4), [[EAX:%e.x]]
   1888 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr
   1889 ; LINUX-32-STATIC-NEXT: 	ret
   1890 
   1891 ; LINUX-32-PIC: ixd01:
   1892 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   1893 ; LINUX-32-PIC-NEXT: 	leal	xdst(,[[EAX]],4), [[EAX:%e.x]]
   1894 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr
   1895 ; LINUX-32-PIC-NEXT: 	ret
   1896 
   1897 ; LINUX-64-PIC: ixd01:
   1898 ; LINUX-64-PIC: 	shlq	$2, %rdi
   1899 ; LINUX-64-PIC-NEXT: 	addq	xdst@GOTPCREL(%rip), %rdi
   1900 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1901 ; LINUX-64-PIC-NEXT: 	movq	%rdi, ([[RAX]])
   1902 ; LINUX-64-PIC-NEXT: 	ret
   1903 
   1904 ; DARWIN-32-STATIC: _ixd01:
   1905 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1906 ; DARWIN-32-STATIC-NEXT: 	leal	_xdst(,[[EAX]],4), [[EAX:%e.x]]
   1907 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr
   1908 ; DARWIN-32-STATIC-NEXT: 	ret
   1909 
   1910 ; DARWIN-32-DYNAMIC: _ixd01:
   1911 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   1912 ; DARWIN-32-DYNAMIC-NEXT: 	shll	$2, [[EAX:%e.x]]
   1913 ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_xdst$non_lazy_ptr, [[EAX:%e.x]]
   1914 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   1915 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   1916 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   1917 
   1918 ; DARWIN-32-PIC: _ixd01:
   1919 ; DARWIN-32-PIC: 	calll	L27$pb
   1920 ; DARWIN-32-PIC-NEXT: L27$pb:
   1921 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   1922 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   1923 ; DARWIN-32-PIC-NEXT: 	shll	$2, [[ECX:%e.x]]
   1924 ; DARWIN-32-PIC-NEXT: 	addl	L_xdst$non_lazy_ptr-L27$pb([[EAX]]), [[ECX:%e.x]]
   1925 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L27$pb([[EAX]]), [[EAX:%e.x]]
   1926 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   1927 ; DARWIN-32-PIC-NEXT: 	ret
   1928 
   1929 ; DARWIN-64-STATIC: _ixd01:
   1930 ; DARWIN-64-STATIC: 	shlq	$2, %rdi
   1931 ; DARWIN-64-STATIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rdi
   1932 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1933 ; DARWIN-64-STATIC-NEXT: 	movq	%rdi, ([[RAX]])
   1934 ; DARWIN-64-STATIC-NEXT: 	ret
   1935 
   1936 ; DARWIN-64-DYNAMIC: _ixd01:
   1937 ; DARWIN-64-DYNAMIC: 	shlq	$2, %rdi
   1938 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rdi
   1939 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1940 ; DARWIN-64-DYNAMIC-NEXT: 	movq	%rdi, ([[RAX]])
   1941 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   1942 
   1943 ; DARWIN-64-PIC: _ixd01:
   1944 ; DARWIN-64-PIC: 	shlq	$2, %rdi
   1945 ; DARWIN-64-PIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rdi
   1946 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   1947 ; DARWIN-64-PIC-NEXT: 	movq	%rdi, ([[RAX]])
   1948 ; DARWIN-64-PIC-NEXT: 	ret
   1949 }
   1950 
   1951 define void @ind02(i64 %i) nounwind {
   1952 entry:
   1953 	%0 = load i32** @ptr, align 8
   1954 	%1 = getelementptr [131072 x i32]* @src, i64 0, i64 %i
   1955 	%2 = load i32* %1, align 4
   1956 	%3 = getelementptr i32* %0, i64 %i
   1957 	store i32 %2, i32* %3, align 4
   1958 	ret void
   1959 ; LINUX-64-STATIC: ind02:
   1960 ; LINUX-64-STATIC: movl    src(,%rdi,4), [[EAX:%e.x]]
   1961 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   1962 ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
   1963 ; LINUX-64-STATIC: ret
   1964 
   1965 ; LINUX-32-STATIC: ind02:
   1966 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1967 ; LINUX-32-STATIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]]
   1968 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   1969 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   1970 ; LINUX-32-STATIC-NEXT: 	ret
   1971 
   1972 ; LINUX-32-PIC: ind02:
   1973 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   1974 ; LINUX-32-PIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]]
   1975 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   1976 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   1977 ; LINUX-32-PIC-NEXT: 	ret
   1978 
   1979 ; LINUX-64-PIC: ind02:
   1980 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   1981 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   1982 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   1983 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   1984 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   1985 ; LINUX-64-PIC-NEXT: 	ret
   1986 
   1987 ; DARWIN-32-STATIC: _ind02:
   1988 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   1989 ; DARWIN-32-STATIC-NEXT: 	movl	_src(,[[EAX]],4), [[ECX:%e.x]]
   1990 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]]
   1991 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   1992 ; DARWIN-32-STATIC-NEXT: 	ret
   1993 
   1994 ; DARWIN-32-DYNAMIC: _ind02:
   1995 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   1996 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   1997 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   1998 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]]
   1999 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]]
   2000 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2001 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2002 
   2003 ; DARWIN-32-PIC: _ind02:
   2004 ; DARWIN-32-PIC: 	calll	L28$pb
   2005 ; DARWIN-32-PIC-NEXT: L28$pb:
   2006 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2007 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2008 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L28$pb([[EAX]]), [[EDX:%e.x]]
   2009 ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   2010 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L28$pb([[EAX]]), [[EAX:%e.x]]
   2011 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   2012 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4)
   2013 ; DARWIN-32-PIC-NEXT: 	ret
   2014 
   2015 ; DARWIN-64-STATIC: _ind02:
   2016 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2017 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2018 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2019 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2020 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2021 ; DARWIN-64-STATIC-NEXT: 	ret
   2022 
   2023 ; DARWIN-64-DYNAMIC: _ind02:
   2024 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2025 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2026 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2027 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2028 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2029 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2030 
   2031 ; DARWIN-64-PIC: _ind02:
   2032 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2033 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2034 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2035 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2036 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2037 ; DARWIN-64-PIC-NEXT: 	ret
   2038 }
   2039 
   2040 define void @ixd02(i64 %i) nounwind {
   2041 entry:
   2042 	%0 = load i32** @ptr, align 8
   2043 	%1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %i
   2044 	%2 = load i32* %1, align 4
   2045 	%3 = getelementptr i32* %0, i64 %i
   2046 	store i32 %2, i32* %3, align 4
   2047 	ret void
   2048 ; LINUX-64-STATIC: ixd02:
   2049 ; LINUX-64-STATIC: movl    xsrc(,%rdi,4), [[EAX:%e.x]]
   2050 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   2051 ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
   2052 ; LINUX-64-STATIC: ret
   2053 
   2054 ; LINUX-32-STATIC: ixd02:
   2055 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2056 ; LINUX-32-STATIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]]
   2057 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   2058 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2059 ; LINUX-32-STATIC-NEXT: 	ret
   2060 
   2061 ; LINUX-32-PIC: ixd02:
   2062 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2063 ; LINUX-32-PIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]]
   2064 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   2065 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2066 ; LINUX-32-PIC-NEXT: 	ret
   2067 
   2068 ; LINUX-64-PIC: ixd02:
   2069 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2070 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2071 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2072 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2073 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2074 ; LINUX-64-PIC-NEXT: 	ret
   2075 
   2076 ; DARWIN-32-STATIC: _ixd02:
   2077 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2078 ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc(,[[EAX]],4), [[ECX:%e.x]]
   2079 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]]
   2080 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2081 ; DARWIN-32-STATIC-NEXT: 	ret
   2082 
   2083 ; DARWIN-32-DYNAMIC: _ixd02:
   2084 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2085 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
   2086 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   2087 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]]
   2088 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]]
   2089 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2090 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2091 
   2092 ; DARWIN-32-PIC: _ixd02:
   2093 ; DARWIN-32-PIC: 	calll	L29$pb
   2094 ; DARWIN-32-PIC-NEXT: L29$pb:
   2095 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2096 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2097 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L29$pb([[EAX]]), [[EDX:%e.x]]
   2098 ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   2099 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L29$pb([[EAX]]), [[EAX:%e.x]]
   2100 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   2101 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4)
   2102 ; DARWIN-32-PIC-NEXT: 	ret
   2103 
   2104 ; DARWIN-64-STATIC: _ixd02:
   2105 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2106 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2107 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2108 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2109 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2110 ; DARWIN-64-STATIC-NEXT: 	ret
   2111 
   2112 ; DARWIN-64-DYNAMIC: _ixd02:
   2113 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2114 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2115 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2116 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2117 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2118 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2119 
   2120 ; DARWIN-64-PIC: _ixd02:
   2121 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2122 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2123 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2124 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2125 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2126 ; DARWIN-64-PIC-NEXT: 	ret
   2127 }
   2128 
   2129 define void @ind03(i64 %i) nounwind {
   2130 entry:
   2131 	%0 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
   2132 	%1 = load i32* %0, align 4
   2133 	%2 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
   2134 	store i32 %1, i32* %2, align 4
   2135 	ret void
   2136 ; LINUX-64-STATIC: ind03:
   2137 ; LINUX-64-STATIC: movl    dsrc(,%rdi,4), [[EAX:%e.x]]
   2138 ; LINUX-64-STATIC: movl    [[EAX]], ddst(,%rdi,4)
   2139 ; LINUX-64-STATIC: ret
   2140 
   2141 ; LINUX-32-STATIC: ind03:
   2142 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2143 ; LINUX-32-STATIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2144 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ddst(,[[EAX]],4)
   2145 ; LINUX-32-STATIC-NEXT: 	ret
   2146 
   2147 ; LINUX-32-PIC: ind03:
   2148 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2149 ; LINUX-32-PIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2150 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ddst(,[[EAX]],4)
   2151 ; LINUX-32-PIC-NEXT: 	ret
   2152 
   2153 ; LINUX-64-PIC: ind03:
   2154 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2155 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2156 ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]]
   2157 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2158 ; LINUX-64-PIC-NEXT: 	ret
   2159 
   2160 ; DARWIN-32-STATIC: _ind03:
   2161 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2162 ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2163 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ddst(,[[EAX]],4)
   2164 ; DARWIN-32-STATIC-NEXT: 	ret
   2165 
   2166 ; DARWIN-32-DYNAMIC: _ind03:
   2167 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2168 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2169 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ddst(,[[EAX]],4)
   2170 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2171 
   2172 ; DARWIN-32-PIC: _ind03:
   2173 ; DARWIN-32-PIC: 	calll	L30$pb
   2174 ; DARWIN-32-PIC-NEXT: L30$pb:
   2175 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2176 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2177 ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L30$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   2178 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], _ddst-L30$pb([[EAX]],[[ECX]],4)
   2179 ; DARWIN-32-PIC-NEXT: 	ret
   2180 
   2181 ; DARWIN-64-STATIC: _ind03:
   2182 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   2183 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2184 ; DARWIN-64-STATIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   2185 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2186 ; DARWIN-64-STATIC-NEXT: 	ret
   2187 
   2188 ; DARWIN-64-DYNAMIC: _ind03:
   2189 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   2190 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2191 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   2192 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2193 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2194 
   2195 ; DARWIN-64-PIC: _ind03:
   2196 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   2197 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2198 ; DARWIN-64-PIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   2199 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2200 ; DARWIN-64-PIC-NEXT: 	ret
   2201 }
   2202 
   2203 define void @ind04(i64 %i) nounwind {
   2204 entry:
   2205 	%0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %i
   2206 	store i32* %0, i32** @dptr, align 8
   2207 	ret void
   2208 ; LINUX-64-STATIC: ind04:
   2209 ; LINUX-64-STATIC: leaq    ddst(,%rdi,4), [[RAX:%r.x]]
   2210 ; LINUX-64-STATIC: movq    [[RAX]], dptr
   2211 ; LINUX-64-STATIC: ret
   2212 
   2213 ; LINUX-32-STATIC: ind04:
   2214 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2215 ; LINUX-32-STATIC-NEXT: 	leal	ddst(,[[EAX]],4), [[EAX:%e.x]]
   2216 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dptr
   2217 ; LINUX-32-STATIC-NEXT: 	ret
   2218 
   2219 ; LINUX-32-PIC: ind04:
   2220 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2221 ; LINUX-32-PIC-NEXT: 	leal	ddst(,[[EAX]],4), [[EAX:%e.x]]
   2222 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dptr
   2223 ; LINUX-32-PIC-NEXT: 	ret
   2224 
   2225 ; LINUX-64-PIC: ind04:
   2226 ; LINUX-64-PIC: 	shlq	$2, %rdi
   2227 ; LINUX-64-PIC-NEXT: 	addq	ddst@GOTPCREL(%rip), %rdi
   2228 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]]
   2229 ; LINUX-64-PIC-NEXT: 	movq	%rdi, ([[RAX]])
   2230 ; LINUX-64-PIC-NEXT: 	ret
   2231 
   2232 ; DARWIN-32-STATIC: _ind04:
   2233 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2234 ; DARWIN-32-STATIC-NEXT: 	leal	_ddst(,[[EAX]],4), [[EAX:%e.x]]
   2235 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dptr
   2236 ; DARWIN-32-STATIC-NEXT: 	ret
   2237 
   2238 ; DARWIN-32-DYNAMIC: _ind04:
   2239 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2240 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst(,[[EAX]],4), [[EAX:%e.x]]
   2241 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _dptr
   2242 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2243 
   2244 ; DARWIN-32-PIC: _ind04:
   2245 ; DARWIN-32-PIC: 	calll	L31$pb
   2246 ; DARWIN-32-PIC-NEXT: L31$pb:
   2247 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2248 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2249 ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L31$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
   2250 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L31$pb([[EAX]])
   2251 ; DARWIN-32-PIC-NEXT: 	ret
   2252 
   2253 ; DARWIN-64-STATIC: _ind04:
   2254 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   2255 ; DARWIN-64-STATIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2256 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   2257 ; DARWIN-64-STATIC-NEXT: 	ret
   2258 
   2259 ; DARWIN-64-DYNAMIC: _ind04:
   2260 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   2261 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2262 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   2263 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2264 
   2265 ; DARWIN-64-PIC: _ind04:
   2266 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   2267 ; DARWIN-64-PIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2268 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   2269 ; DARWIN-64-PIC-NEXT: 	ret
   2270 }
   2271 
   2272 define void @ind05(i64 %i) nounwind {
   2273 entry:
   2274 	%0 = load i32** @dptr, align 8
   2275 	%1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %i
   2276 	%2 = load i32* %1, align 4
   2277 	%3 = getelementptr i32* %0, i64 %i
   2278 	store i32 %2, i32* %3, align 4
   2279 	ret void
   2280 ; LINUX-64-STATIC: ind05:
   2281 ; LINUX-64-STATIC: movl    dsrc(,%rdi,4), [[EAX:%e.x]]
   2282 ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
   2283 ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
   2284 ; LINUX-64-STATIC: ret
   2285 
   2286 ; LINUX-32-STATIC: ind05:
   2287 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2288 ; LINUX-32-STATIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2289 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[EDX:%e.x]]
   2290 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2291 ; LINUX-32-STATIC-NEXT: 	ret
   2292 
   2293 ; LINUX-32-PIC: ind05:
   2294 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2295 ; LINUX-32-PIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2296 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[EDX:%e.x]]
   2297 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2298 ; LINUX-32-PIC-NEXT: 	ret
   2299 
   2300 ; LINUX-64-PIC: ind05:
   2301 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2302 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2303 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2304 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2305 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2306 ; LINUX-64-PIC-NEXT: 	ret
   2307 
   2308 ; DARWIN-32-STATIC: _ind05:
   2309 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2310 ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2311 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[EDX:%e.x]]
   2312 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2313 ; DARWIN-32-STATIC-NEXT: 	ret
   2314 
   2315 ; DARWIN-32-DYNAMIC: _ind05:
   2316 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2317 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]]
   2318 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[EDX:%e.x]]
   2319 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2320 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2321 
   2322 ; DARWIN-32-PIC: _ind05:
   2323 ; DARWIN-32-PIC: 	calll	L32$pb
   2324 ; DARWIN-32-PIC-NEXT: L32$pb:
   2325 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2326 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2327 ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L32$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   2328 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L32$pb([[EAX]]), [[EAX:%e.x]]
   2329 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4)
   2330 ; DARWIN-32-PIC-NEXT: 	ret
   2331 
   2332 ; DARWIN-64-STATIC: _ind05:
   2333 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   2334 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2335 ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   2336 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2337 ; DARWIN-64-STATIC-NEXT: 	ret
   2338 
   2339 ; DARWIN-64-DYNAMIC: _ind05:
   2340 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   2341 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2342 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   2343 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2344 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2345 
   2346 ; DARWIN-64-PIC: _ind05:
   2347 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   2348 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2349 ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   2350 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2351 ; DARWIN-64-PIC-NEXT: 	ret
   2352 }
   2353 
   2354 define void @ind06(i64 %i) nounwind {
   2355 entry:
   2356 	%0 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
   2357 	%1 = load i32* %0, align 4
   2358 	%2 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
   2359 	store i32 %1, i32* %2, align 4
   2360 	ret void
   2361 ; LINUX-64-STATIC: ind06:
   2362 ; LINUX-64-STATIC: movl    lsrc(,%rdi,4), [[EAX:%e.x]]
   2363 ; LINUX-64-STATIC: movl    [[EAX]], ldst(,%rdi,4)
   2364 ; LINUX-64-STATIC: ret
   2365 
   2366 ; LINUX-32-STATIC: ind06:
   2367 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2368 ; LINUX-32-STATIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2369 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ldst(,[[EAX]],4)
   2370 ; LINUX-32-STATIC-NEXT: 	ret
   2371 
   2372 ; LINUX-32-PIC: ind06:
   2373 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2374 ; LINUX-32-PIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2375 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ldst(,[[EAX]],4)
   2376 ; LINUX-32-PIC-NEXT: 	ret
   2377 
   2378 ; LINUX-64-PIC: ind06:
   2379 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   2380 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2381 ; LINUX-64-PIC-NEXT: 	leaq	ldst(%rip), [[RCX:%r.x]]
   2382 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2383 ; LINUX-64-PIC-NEXT: 	ret
   2384 
   2385 ; DARWIN-32-STATIC: _ind06:
   2386 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2387 ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2388 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ldst(,[[EAX]],4)
   2389 ; DARWIN-32-STATIC-NEXT: 	ret
   2390 
   2391 ; DARWIN-32-DYNAMIC: _ind06:
   2392 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2393 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2394 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ldst(,[[EAX]],4)
   2395 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2396 
   2397 ; DARWIN-32-PIC: _ind06:
   2398 ; DARWIN-32-PIC: 	calll	L33$pb
   2399 ; DARWIN-32-PIC-NEXT: L33$pb:
   2400 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2401 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2402 ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L33$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   2403 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], _ldst-L33$pb([[EAX]],[[ECX]],4)
   2404 ; DARWIN-32-PIC-NEXT: 	ret
   2405 
   2406 ; DARWIN-64-STATIC: _ind06:
   2407 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   2408 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2409 ; DARWIN-64-STATIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   2410 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2411 ; DARWIN-64-STATIC-NEXT: 	ret
   2412 
   2413 ; DARWIN-64-DYNAMIC: _ind06:
   2414 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   2415 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2416 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   2417 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2418 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2419 
   2420 ; DARWIN-64-PIC: _ind06:
   2421 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   2422 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2423 ; DARWIN-64-PIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   2424 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2425 ; DARWIN-64-PIC-NEXT: 	ret
   2426 }
   2427 
   2428 define void @ind07(i64 %i) nounwind {
   2429 entry:
   2430 	%0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %i
   2431 	store i32* %0, i32** @lptr, align 8
   2432 	ret void
   2433 ; LINUX-64-STATIC: ind07:
   2434 ; LINUX-64-STATIC: leaq    ldst(,%rdi,4), [[RAX:%r.x]]
   2435 ; LINUX-64-STATIC: movq    [[RAX]], lptr
   2436 ; LINUX-64-STATIC: ret
   2437 
   2438 ; LINUX-32-STATIC: ind07:
   2439 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2440 ; LINUX-32-STATIC-NEXT: 	leal	ldst(,[[EAX]],4), [[EAX:%e.x]]
   2441 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], lptr
   2442 ; LINUX-32-STATIC-NEXT: 	ret
   2443 
   2444 ; LINUX-32-PIC: ind07:
   2445 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2446 ; LINUX-32-PIC-NEXT: 	leal	ldst(,[[EAX]],4), [[EAX:%e.x]]
   2447 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], lptr
   2448 ; LINUX-32-PIC-NEXT: 	ret
   2449 
   2450 ; LINUX-64-PIC: ind07:
   2451 ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]]
   2452 ; LINUX-64-PIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2453 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip)
   2454 ; LINUX-64-PIC-NEXT: 	ret
   2455 
   2456 ; DARWIN-32-STATIC: _ind07:
   2457 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2458 ; DARWIN-32-STATIC-NEXT: 	leal	_ldst(,[[EAX]],4), [[EAX:%e.x]]
   2459 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _lptr
   2460 ; DARWIN-32-STATIC-NEXT: 	ret
   2461 
   2462 ; DARWIN-32-DYNAMIC: _ind07:
   2463 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2464 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst(,[[EAX]],4), [[EAX:%e.x]]
   2465 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _lptr
   2466 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2467 
   2468 ; DARWIN-32-PIC: _ind07:
   2469 ; DARWIN-32-PIC: 	calll	L34$pb
   2470 ; DARWIN-32-PIC-NEXT: L34$pb:
   2471 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2472 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2473 ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L34$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]]
   2474 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L34$pb([[EAX]])
   2475 ; DARWIN-32-PIC-NEXT: 	ret
   2476 
   2477 ; DARWIN-64-STATIC: _ind07:
   2478 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   2479 ; DARWIN-64-STATIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2480 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   2481 ; DARWIN-64-STATIC-NEXT: 	ret
   2482 
   2483 ; DARWIN-64-DYNAMIC: _ind07:
   2484 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   2485 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2486 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   2487 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2488 
   2489 ; DARWIN-64-PIC: _ind07:
   2490 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   2491 ; DARWIN-64-PIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]]
   2492 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   2493 ; DARWIN-64-PIC-NEXT: 	ret
   2494 }
   2495 
   2496 define void @ind08(i64 %i) nounwind {
   2497 entry:
   2498 	%0 = load i32** @lptr, align 8
   2499 	%1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %i
   2500 	%2 = load i32* %1, align 4
   2501 	%3 = getelementptr i32* %0, i64 %i
   2502 	store i32 %2, i32* %3, align 4
   2503 	ret void
   2504 ; LINUX-64-STATIC: ind08:
   2505 ; LINUX-64-STATIC: movl    lsrc(,%rdi,4), [[EAX:%e.x]]
   2506 ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
   2507 ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4)
   2508 ; LINUX-64-STATIC: ret
   2509 
   2510 ; LINUX-32-STATIC: ind08:
   2511 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2512 ; LINUX-32-STATIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2513 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[EDX:%e.x]]
   2514 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2515 ; LINUX-32-STATIC-NEXT: 	ret
   2516 
   2517 ; LINUX-32-PIC: ind08:
   2518 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2519 ; LINUX-32-PIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2520 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[EDX:%e.x]]
   2521 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2522 ; LINUX-32-PIC-NEXT: 	ret
   2523 
   2524 ; LINUX-64-PIC: ind08:
   2525 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   2526 ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2527 ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]]
   2528 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2529 ; LINUX-64-PIC-NEXT: 	ret
   2530 
   2531 ; DARWIN-32-STATIC: _ind08:
   2532 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2533 ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2534 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[EDX:%e.x]]
   2535 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2536 ; DARWIN-32-STATIC-NEXT: 	ret
   2537 
   2538 ; DARWIN-32-DYNAMIC: _ind08:
   2539 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2540 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]]
   2541 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[EDX:%e.x]]
   2542 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4)
   2543 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2544 
   2545 ; DARWIN-32-PIC: _ind08:
   2546 ; DARWIN-32-PIC: 	calll	L35$pb
   2547 ; DARWIN-32-PIC-NEXT: L35$pb:
   2548 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2549 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2550 ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L35$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   2551 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L35$pb([[EAX]]), [[EAX:%e.x]]
   2552 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4)
   2553 ; DARWIN-32-PIC-NEXT: 	ret
   2554 
   2555 ; DARWIN-64-STATIC: _ind08:
   2556 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   2557 ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2558 ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   2559 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2560 ; DARWIN-64-STATIC-NEXT: 	ret
   2561 
   2562 ; DARWIN-64-DYNAMIC: _ind08:
   2563 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   2564 ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2565 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   2566 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2567 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2568 
   2569 ; DARWIN-64-PIC: _ind08:
   2570 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   2571 ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]]
   2572 ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   2573 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4)
   2574 ; DARWIN-64-PIC-NEXT: 	ret
   2575 }
   2576 
   2577 define void @off00(i64 %i) nounwind {
   2578 entry:
   2579 	%0 = add i64 %i, 16
   2580 	%1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
   2581 	%2 = load i32* %1, align 4
   2582 	%3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
   2583 	store i32 %2, i32* %3, align 4
   2584 	ret void
   2585 ; LINUX-64-STATIC: off00:
   2586 ; LINUX-64-STATIC: movl    src+64(,%rdi,4), [[EAX:%e.x]]
   2587 ; LINUX-64-STATIC: movl    [[EAX]], dst+64(,%rdi,4)
   2588 ; LINUX-64-STATIC: ret
   2589 
   2590 ; LINUX-32-STATIC: off00:
   2591 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2592 ; LINUX-32-STATIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]]
   2593 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], dst+64(,[[EAX]],4)
   2594 ; LINUX-32-STATIC-NEXT: 	ret
   2595 
   2596 ; LINUX-32-PIC: off00:
   2597 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2598 ; LINUX-32-PIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]]
   2599 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], dst+64(,[[EAX]],4)
   2600 ; LINUX-32-PIC-NEXT: 	ret
   2601 
   2602 ; LINUX-64-PIC: off00:
   2603 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   2604 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2605 ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]]
   2606 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2607 ; LINUX-64-PIC-NEXT: 	ret
   2608 
   2609 ; DARWIN-32-STATIC: _off00:
   2610 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2611 ; DARWIN-32-STATIC-NEXT: 	movl	_src+64(,[[EAX]],4), [[ECX:%e.x]]
   2612 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _dst+64(,[[EAX]],4)
   2613 ; DARWIN-32-STATIC-NEXT: 	ret
   2614 
   2615 ; DARWIN-32-DYNAMIC: _off00:
   2616 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2617 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   2618 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   2619 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[EDX:%e.x]]
   2620 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2621 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2622 
   2623 ; DARWIN-32-PIC: _off00:
   2624 ; DARWIN-32-PIC: 	calll	L36$pb
   2625 ; DARWIN-32-PIC-NEXT: L36$pb:
   2626 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2627 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2628 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L36$pb([[EAX]]), [[EDX:%e.x]]
   2629 ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   2630 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L36$pb([[EAX]]), [[EAX:%e.x]]
   2631 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4)
   2632 ; DARWIN-32-PIC-NEXT: 	ret
   2633 
   2634 ; DARWIN-64-STATIC: _off00:
   2635 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2636 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2637 ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   2638 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2639 ; DARWIN-64-STATIC-NEXT: 	ret
   2640 
   2641 ; DARWIN-64-DYNAMIC: _off00:
   2642 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2643 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2644 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   2645 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2646 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2647 
   2648 ; DARWIN-64-PIC: _off00:
   2649 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2650 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2651 ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   2652 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2653 ; DARWIN-64-PIC-NEXT: 	ret
   2654 }
   2655 
   2656 define void @oxf00(i64 %i) nounwind {
   2657 entry:
   2658 	%0 = add i64 %i, 16
   2659 	%1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
   2660 	%2 = load i32* %1, align 4
   2661 	%3 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
   2662 	store i32 %2, i32* %3, align 4
   2663 	ret void
   2664 ; LINUX-64-STATIC: oxf00:
   2665 ; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), [[EAX:%e.x]]
   2666 ; LINUX-64-STATIC: movl    [[EAX]], xdst+64(,%rdi,4)
   2667 ; LINUX-64-STATIC: ret
   2668 
   2669 ; LINUX-32-STATIC: oxf00:
   2670 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2671 ; LINUX-32-STATIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   2672 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], xdst+64(,[[EAX]],4)
   2673 ; LINUX-32-STATIC-NEXT: 	ret
   2674 
   2675 ; LINUX-32-PIC: oxf00:
   2676 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2677 ; LINUX-32-PIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   2678 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], xdst+64(,[[EAX]],4)
   2679 ; LINUX-32-PIC-NEXT: 	ret
   2680 
   2681 ; LINUX-64-PIC: oxf00:
   2682 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2683 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2684 ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   2685 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2686 ; LINUX-64-PIC-NEXT: 	ret
   2687 
   2688 ; DARWIN-32-STATIC: _oxf00:
   2689 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2690 ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   2691 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _xdst+64(,[[EAX]],4)
   2692 ; DARWIN-32-STATIC-NEXT: 	ret
   2693 
   2694 ; DARWIN-32-DYNAMIC: _oxf00:
   2695 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2696 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
   2697 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   2698 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[EDX:%e.x]]
   2699 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2700 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2701 
   2702 ; DARWIN-32-PIC: _oxf00:
   2703 ; DARWIN-32-PIC: 	calll	L37$pb
   2704 ; DARWIN-32-PIC-NEXT: L37$pb:
   2705 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2706 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2707 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L37$pb([[EAX]]), [[EDX:%e.x]]
   2708 ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   2709 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L37$pb([[EAX]]), [[EAX:%e.x]]
   2710 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4)
   2711 ; DARWIN-32-PIC-NEXT: 	ret
   2712 
   2713 ; DARWIN-64-STATIC: _oxf00:
   2714 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2715 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2716 ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   2717 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2718 ; DARWIN-64-STATIC-NEXT: 	ret
   2719 
   2720 ; DARWIN-64-DYNAMIC: _oxf00:
   2721 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2722 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2723 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   2724 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2725 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2726 
   2727 ; DARWIN-64-PIC: _oxf00:
   2728 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   2729 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2730 ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]]
   2731 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2732 ; DARWIN-64-PIC-NEXT: 	ret
   2733 }
   2734 
   2735 define void @off01(i64 %i) nounwind {
   2736 entry:
   2737 	%.sum = add i64 %i, 16
   2738 	%0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
   2739 	store i32* %0, i32** @ptr, align 8
   2740 	ret void
   2741 ; LINUX-64-STATIC: off01:
   2742 ; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), [[RAX:%r.x]]
   2743 ; LINUX-64-STATIC: movq    [[RAX]], ptr
   2744 ; LINUX-64-STATIC: ret
   2745 
   2746 ; LINUX-32-STATIC: off01:
   2747 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2748 ; LINUX-32-STATIC-NEXT: 	leal	dst+64(,[[EAX]],4), [[EAX:%e.x]]
   2749 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr
   2750 ; LINUX-32-STATIC-NEXT: 	ret
   2751 
   2752 ; LINUX-32-PIC: off01:
   2753 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2754 ; LINUX-32-PIC-NEXT: 	leal	dst+64(,[[EAX]],4), [[EAX:%e.x]]
   2755 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr
   2756 ; LINUX-32-PIC-NEXT: 	ret
   2757 
   2758 ; LINUX-64-PIC: off01:
   2759 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
   2760 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2761 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2762 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2763 ; LINUX-64-PIC-NEXT: 	ret
   2764 
   2765 ; DARWIN-32-STATIC: _off01:
   2766 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2767 ; DARWIN-32-STATIC-NEXT: 	leal	_dst+64(,[[EAX]],4), [[EAX:%e.x]]
   2768 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr
   2769 ; DARWIN-32-STATIC-NEXT: 	ret
   2770 
   2771 ; DARWIN-32-DYNAMIC: _off01:
   2772 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2773 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]]
   2774 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), [[EAX:%e.x]]
   2775 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   2776 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   2777 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2778 
   2779 ; DARWIN-32-PIC: _off01:
   2780 ; DARWIN-32-PIC: 	calll	L38$pb
   2781 ; DARWIN-32-PIC-NEXT: L38$pb:
   2782 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2783 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2784 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L38$pb([[EAX]]), [[EDX:%e.x]]
   2785 ; DARWIN-32-PIC-NEXT: 	leal	64([[EDX]],[[ECX]],4), [[ECX:%e.x]]
   2786 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L38$pb([[EAX]]), [[EAX:%e.x]]
   2787 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   2788 ; DARWIN-32-PIC-NEXT: 	ret
   2789 
   2790 ; DARWIN-64-STATIC: _off01:
   2791 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   2792 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2793 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2794 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2795 ; DARWIN-64-STATIC-NEXT: 	ret
   2796 
   2797 ; DARWIN-64-DYNAMIC: _off01:
   2798 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   2799 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2800 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2801 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2802 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2803 
   2804 ; DARWIN-64-PIC: _off01:
   2805 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   2806 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2807 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2808 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2809 ; DARWIN-64-PIC-NEXT: 	ret
   2810 }
   2811 
   2812 define void @oxf01(i64 %i) nounwind {
   2813 entry:
   2814 	%.sum = add i64 %i, 16
   2815 	%0 = getelementptr [32 x i32]* @xdst, i64 0, i64 %.sum
   2816 	store i32* %0, i32** @ptr, align 8
   2817 	ret void
   2818 ; LINUX-64-STATIC: oxf01:
   2819 ; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), [[RAX:%r.x]]
   2820 ; LINUX-64-STATIC: movq    [[RAX]], ptr
   2821 ; LINUX-64-STATIC: ret
   2822 
   2823 ; LINUX-32-STATIC: oxf01:
   2824 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2825 ; LINUX-32-STATIC-NEXT: 	leal	xdst+64(,[[EAX]],4), [[EAX:%e.x]]
   2826 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr
   2827 ; LINUX-32-STATIC-NEXT: 	ret
   2828 
   2829 ; LINUX-32-PIC: oxf01:
   2830 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2831 ; LINUX-32-PIC-NEXT: 	leal	xdst+64(,[[EAX]],4), [[EAX:%e.x]]
   2832 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr
   2833 ; LINUX-32-PIC-NEXT: 	ret
   2834 
   2835 ; LINUX-64-PIC: oxf01:
   2836 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   2837 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2838 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2839 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2840 ; LINUX-64-PIC-NEXT: 	ret
   2841 
   2842 ; DARWIN-32-STATIC: _oxf01:
   2843 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2844 ; DARWIN-32-STATIC-NEXT: 	leal	_xdst+64(,[[EAX]],4), [[EAX:%e.x]]
   2845 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr
   2846 ; DARWIN-32-STATIC-NEXT: 	ret
   2847 
   2848 ; DARWIN-32-DYNAMIC: _oxf01:
   2849 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2850 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]]
   2851 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), [[EAX:%e.x]]
   2852 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   2853 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   2854 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2855 
   2856 ; DARWIN-32-PIC: _oxf01:
   2857 ; DARWIN-32-PIC: 	calll	L39$pb
   2858 ; DARWIN-32-PIC-NEXT: L39$pb:
   2859 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2860 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2861 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L39$pb([[EAX]]), [[EDX:%e.x]]
   2862 ; DARWIN-32-PIC-NEXT: 	leal	64([[EDX]],[[ECX]],4), [[ECX:%e.x]]
   2863 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L39$pb([[EAX]]), [[EAX:%e.x]]
   2864 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   2865 ; DARWIN-32-PIC-NEXT: 	ret
   2866 
   2867 ; DARWIN-64-STATIC: _oxf01:
   2868 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   2869 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2870 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2871 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2872 ; DARWIN-64-STATIC-NEXT: 	ret
   2873 
   2874 ; DARWIN-64-DYNAMIC: _oxf01:
   2875 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   2876 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2877 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2878 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2879 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2880 
   2881 ; DARWIN-64-PIC: _oxf01:
   2882 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   2883 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   2884 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2885 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   2886 ; DARWIN-64-PIC-NEXT: 	ret
   2887 }
   2888 
   2889 define void @off02(i64 %i) nounwind {
   2890 entry:
   2891 	%0 = load i32** @ptr, align 8
   2892 	%1 = add i64 %i, 16
   2893 	%2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
   2894 	%3 = load i32* %2, align 4
   2895 	%4 = getelementptr i32* %0, i64 %1
   2896 	store i32 %3, i32* %4, align 4
   2897 	ret void
   2898 ; LINUX-64-STATIC: off02:
   2899 ; LINUX-64-STATIC: movl    src+64(,%rdi,4), [[EAX:%e.x]]
   2900 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   2901 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
   2902 ; LINUX-64-STATIC: ret
   2903 
   2904 ; LINUX-32-STATIC: off02:
   2905 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2906 ; LINUX-32-STATIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]]
   2907 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   2908 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2909 ; LINUX-32-STATIC-NEXT: 	ret
   2910 
   2911 ; LINUX-32-PIC: off02:
   2912 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   2913 ; LINUX-32-PIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]]
   2914 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   2915 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2916 ; LINUX-32-PIC-NEXT: 	ret
   2917 
   2918 ; LINUX-64-PIC: off02:
   2919 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   2920 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2921 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2922 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2923 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2924 ; LINUX-64-PIC-NEXT: 	ret
   2925 
   2926 ; DARWIN-32-STATIC: _off02:
   2927 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2928 ; DARWIN-32-STATIC-NEXT: 	movl	_src+64(,[[EAX]],4), [[ECX:%e.x]]
   2929 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]]
   2930 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2931 ; DARWIN-32-STATIC-NEXT: 	ret
   2932 
   2933 ; DARWIN-32-DYNAMIC: _off02:
   2934 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   2935 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   2936 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   2937 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]]
   2938 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]]
   2939 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2940 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   2941 
   2942 ; DARWIN-32-PIC: _off02:
   2943 ; DARWIN-32-PIC: 	calll	L40$pb
   2944 ; DARWIN-32-PIC-NEXT: L40$pb:
   2945 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   2946 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   2947 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L40$pb([[EAX]]), [[EDX:%e.x]]
   2948 ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   2949 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L40$pb([[EAX]]), [[EAX:%e.x]]
   2950 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   2951 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4)
   2952 ; DARWIN-32-PIC-NEXT: 	ret
   2953 
   2954 ; DARWIN-64-STATIC: _off02:
   2955 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2956 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2957 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2958 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2959 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2960 ; DARWIN-64-STATIC-NEXT: 	ret
   2961 
   2962 ; DARWIN-64-DYNAMIC: _off02:
   2963 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2964 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2965 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2966 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2967 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2968 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   2969 
   2970 ; DARWIN-64-PIC: _off02:
   2971 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   2972 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   2973 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   2974 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   2975 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   2976 ; DARWIN-64-PIC-NEXT: 	ret
   2977 }
   2978 
   2979 define void @oxf02(i64 %i) nounwind {
   2980 entry:
   2981 	%0 = load i32** @ptr, align 8
   2982 	%1 = add i64 %i, 16
   2983 	%2 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %1
   2984 	%3 = load i32* %2, align 4
   2985 	%4 = getelementptr i32* %0, i64 %1
   2986 	store i32 %3, i32* %4, align 4
   2987 	ret void
   2988 ; LINUX-64-STATIC: oxf02:
   2989 ; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), [[EAX:%e.x]]
   2990 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   2991 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
   2992 ; LINUX-64-STATIC: ret
   2993 
   2994 ; LINUX-32-STATIC: oxf02:
   2995 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   2996 ; LINUX-32-STATIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   2997 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   2998 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   2999 ; LINUX-32-STATIC-NEXT: 	ret
   3000 
   3001 ; LINUX-32-PIC: oxf02:
   3002 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3003 ; LINUX-32-PIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3004 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   3005 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3006 ; LINUX-32-PIC-NEXT: 	ret
   3007 
   3008 ; LINUX-64-PIC: oxf02:
   3009 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3010 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3011 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3012 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3013 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3014 ; LINUX-64-PIC-NEXT: 	ret
   3015 
   3016 ; DARWIN-32-STATIC: _oxf02:
   3017 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3018 ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3019 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]]
   3020 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3021 ; DARWIN-32-STATIC-NEXT: 	ret
   3022 
   3023 ; DARWIN-32-DYNAMIC: _oxf02:
   3024 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3025 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
   3026 ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   3027 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]]
   3028 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]]
   3029 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3030 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3031 
   3032 ; DARWIN-32-PIC: _oxf02:
   3033 ; DARWIN-32-PIC: 	calll	L41$pb
   3034 ; DARWIN-32-PIC-NEXT: L41$pb:
   3035 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3036 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3037 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L41$pb([[EAX]]), [[EDX:%e.x]]
   3038 ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   3039 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L41$pb([[EAX]]), [[EAX:%e.x]]
   3040 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   3041 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4)
   3042 ; DARWIN-32-PIC-NEXT: 	ret
   3043 
   3044 ; DARWIN-64-STATIC: _oxf02:
   3045 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3046 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3047 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3048 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3049 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3050 ; DARWIN-64-STATIC-NEXT: 	ret
   3051 
   3052 ; DARWIN-64-DYNAMIC: _oxf02:
   3053 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3054 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3055 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3056 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3057 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3058 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3059 
   3060 ; DARWIN-64-PIC: _oxf02:
   3061 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3062 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3063 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3064 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3065 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3066 ; DARWIN-64-PIC-NEXT: 	ret
   3067 }
   3068 
   3069 define void @off03(i64 %i) nounwind {
   3070 entry:
   3071 	%0 = add i64 %i, 16
   3072 	%1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
   3073 	%2 = load i32* %1, align 4
   3074 	%3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
   3075 	store i32 %2, i32* %3, align 4
   3076 	ret void
   3077 ; LINUX-64-STATIC: off03:
   3078 ; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), [[EAX:%e.x]]
   3079 ; LINUX-64-STATIC: movl    [[EAX]], ddst+64(,%rdi,4)
   3080 ; LINUX-64-STATIC: ret
   3081 
   3082 ; LINUX-32-STATIC: off03:
   3083 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3084 ; LINUX-32-STATIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3085 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ddst+64(,[[EAX]],4)
   3086 ; LINUX-32-STATIC-NEXT: 	ret
   3087 
   3088 ; LINUX-32-PIC: off03:
   3089 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3090 ; LINUX-32-PIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3091 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ddst+64(,[[EAX]],4)
   3092 ; LINUX-32-PIC-NEXT: 	ret
   3093 
   3094 ; LINUX-64-PIC: off03:
   3095 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3096 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3097 ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]]
   3098 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3099 ; LINUX-64-PIC-NEXT: 	ret
   3100 
   3101 ; DARWIN-32-STATIC: _off03:
   3102 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3103 ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3104 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ddst+64(,[[EAX]],4)
   3105 ; DARWIN-32-STATIC-NEXT: 	ret
   3106 
   3107 ; DARWIN-32-DYNAMIC: _off03:
   3108 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3109 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3110 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ddst+64(,[[EAX]],4)
   3111 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3112 
   3113 ; DARWIN-32-PIC: _off03:
   3114 ; DARWIN-32-PIC: 	calll	L42$pb
   3115 ; DARWIN-32-PIC-NEXT: L42$pb:
   3116 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3117 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3118 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L42$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   3119 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ddst-L42$pb)+64([[EAX]],[[ECX]],4)
   3120 ; DARWIN-32-PIC-NEXT: 	ret
   3121 
   3122 ; DARWIN-64-STATIC: _off03:
   3123 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   3124 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3125 ; DARWIN-64-STATIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   3126 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3127 ; DARWIN-64-STATIC-NEXT: 	ret
   3128 
   3129 ; DARWIN-64-DYNAMIC: _off03:
   3130 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   3131 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3132 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   3133 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3134 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3135 
   3136 ; DARWIN-64-PIC: _off03:
   3137 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   3138 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3139 ; DARWIN-64-PIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   3140 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3141 ; DARWIN-64-PIC-NEXT: 	ret
   3142 }
   3143 
   3144 define void @off04(i64 %i) nounwind {
   3145 entry:
   3146 	%.sum = add i64 %i, 16
   3147 	%0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
   3148 	store i32* %0, i32** @dptr, align 8
   3149 	ret void
   3150 ; LINUX-64-STATIC: off04:
   3151 ; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), [[RAX:%r.x]]
   3152 ; LINUX-64-STATIC: movq    [[RAX]], dptr
   3153 ; LINUX-64-STATIC: ret
   3154 
   3155 ; LINUX-32-STATIC: off04:
   3156 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3157 ; LINUX-32-STATIC-NEXT: 	leal	ddst+64(,[[EAX]],4), [[EAX:%e.x]]
   3158 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dptr
   3159 ; LINUX-32-STATIC-NEXT: 	ret
   3160 
   3161 ; LINUX-32-PIC: off04:
   3162 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3163 ; LINUX-32-PIC-NEXT: 	leal	ddst+64(,[[EAX]],4), [[EAX:%e.x]]
   3164 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dptr
   3165 ; LINUX-32-PIC-NEXT: 	ret
   3166 
   3167 ; LINUX-64-PIC: off04:
   3168 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
   3169 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3170 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3171 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   3172 ; LINUX-64-PIC-NEXT: 	ret
   3173 
   3174 ; DARWIN-32-STATIC: _off04:
   3175 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3176 ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), [[EAX:%e.x]]
   3177 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dptr
   3178 ; DARWIN-32-STATIC-NEXT: 	ret
   3179 
   3180 ; DARWIN-32-DYNAMIC: _off04:
   3181 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3182 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), [[EAX:%e.x]]
   3183 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _dptr
   3184 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3185 
   3186 ; DARWIN-32-PIC: _off04:
   3187 ; DARWIN-32-PIC: 	calll	L43$pb
   3188 ; DARWIN-32-PIC-NEXT: L43$pb:
   3189 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3190 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3191 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L43$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]]
   3192 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L43$pb([[EAX]])
   3193 ; DARWIN-32-PIC-NEXT: 	ret
   3194 
   3195 ; DARWIN-64-STATIC: _off04:
   3196 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   3197 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3198 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   3199 ; DARWIN-64-STATIC-NEXT: 	ret
   3200 
   3201 ; DARWIN-64-DYNAMIC: _off04:
   3202 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   3203 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3204 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   3205 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3206 
   3207 ; DARWIN-64-PIC: _off04:
   3208 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   3209 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3210 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   3211 ; DARWIN-64-PIC-NEXT: 	ret
   3212 }
   3213 
   3214 define void @off05(i64 %i) nounwind {
   3215 entry:
   3216 	%0 = load i32** @dptr, align 8
   3217 	%1 = add i64 %i, 16
   3218 	%2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
   3219 	%3 = load i32* %2, align 4
   3220 	%4 = getelementptr i32* %0, i64 %1
   3221 	store i32 %3, i32* %4, align 4
   3222 	ret void
   3223 ; LINUX-64-STATIC: off05:
   3224 ; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), [[EAX:%e.x]]
   3225 ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
   3226 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
   3227 ; LINUX-64-STATIC: ret
   3228 
   3229 ; LINUX-32-STATIC: off05:
   3230 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3231 ; LINUX-32-STATIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3232 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[EDX:%e.x]]
   3233 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3234 ; LINUX-32-STATIC-NEXT: 	ret
   3235 
   3236 ; LINUX-32-PIC: off05:
   3237 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3238 ; LINUX-32-PIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3239 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[EDX:%e.x]]
   3240 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3241 ; LINUX-32-PIC-NEXT: 	ret
   3242 
   3243 ; LINUX-64-PIC: off05:
   3244 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3245 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3246 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3247 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3248 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3249 ; LINUX-64-PIC-NEXT: 	ret
   3250 
   3251 ; DARWIN-32-STATIC: _off05:
   3252 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3253 ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3254 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[EDX:%e.x]]
   3255 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3256 ; DARWIN-32-STATIC-NEXT: 	ret
   3257 
   3258 ; DARWIN-32-DYNAMIC: _off05:
   3259 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3260 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3261 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[EDX:%e.x]]
   3262 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3263 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3264 
   3265 ; DARWIN-32-PIC: _off05:
   3266 ; DARWIN-32-PIC: 	calll	L44$pb
   3267 ; DARWIN-32-PIC-NEXT: L44$pb:
   3268 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3269 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3270 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L44$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   3271 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L44$pb([[EAX]]), [[EAX:%e.x]]
   3272 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4)
   3273 ; DARWIN-32-PIC-NEXT: 	ret
   3274 
   3275 ; DARWIN-64-STATIC: _off05:
   3276 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   3277 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3278 ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   3279 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3280 ; DARWIN-64-STATIC-NEXT: 	ret
   3281 
   3282 ; DARWIN-64-DYNAMIC: _off05:
   3283 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   3284 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3285 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   3286 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3287 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3288 
   3289 ; DARWIN-64-PIC: _off05:
   3290 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   3291 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3292 ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   3293 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3294 ; DARWIN-64-PIC-NEXT: 	ret
   3295 }
   3296 
   3297 define void @off06(i64 %i) nounwind {
   3298 entry:
   3299 	%0 = add i64 %i, 16
   3300 	%1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
   3301 	%2 = load i32* %1, align 4
   3302 	%3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
   3303 	store i32 %2, i32* %3, align 4
   3304 	ret void
   3305 ; LINUX-64-STATIC: off06:
   3306 ; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), [[EAX:%e.x]]
   3307 ; LINUX-64-STATIC: movl    [[EAX]], ldst+64(,%rdi,4)
   3308 ; LINUX-64-STATIC: ret
   3309 
   3310 ; LINUX-32-STATIC: off06:
   3311 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3312 ; LINUX-32-STATIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3313 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ldst+64(,[[EAX]],4)
   3314 ; LINUX-32-STATIC-NEXT: 	ret
   3315 
   3316 ; LINUX-32-PIC: off06:
   3317 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3318 ; LINUX-32-PIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3319 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ldst+64(,[[EAX]],4)
   3320 ; LINUX-32-PIC-NEXT: 	ret
   3321 
   3322 ; LINUX-64-PIC: off06:
   3323 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   3324 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3325 ; LINUX-64-PIC-NEXT: 	leaq	ldst(%rip), [[RCX:%r.x]]
   3326 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3327 ; LINUX-64-PIC-NEXT: 	ret
   3328 
   3329 ; DARWIN-32-STATIC: _off06:
   3330 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3331 ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3332 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ldst+64(,[[EAX]],4)
   3333 ; DARWIN-32-STATIC-NEXT: 	ret
   3334 
   3335 ; DARWIN-32-DYNAMIC: _off06:
   3336 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3337 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3338 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ldst+64(,[[EAX]],4)
   3339 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3340 
   3341 ; DARWIN-32-PIC: _off06:
   3342 ; DARWIN-32-PIC: 	calll	L45$pb
   3343 ; DARWIN-32-PIC-NEXT: L45$pb:
   3344 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3345 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3346 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L45$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   3347 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ldst-L45$pb)+64([[EAX]],[[ECX]],4)
   3348 ; DARWIN-32-PIC-NEXT: 	ret
   3349 
   3350 ; DARWIN-64-STATIC: _off06:
   3351 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   3352 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3353 ; DARWIN-64-STATIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   3354 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3355 ; DARWIN-64-STATIC-NEXT: 	ret
   3356 
   3357 ; DARWIN-64-DYNAMIC: _off06:
   3358 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   3359 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3360 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   3361 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3362 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3363 
   3364 ; DARWIN-64-PIC: _off06:
   3365 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   3366 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3367 ; DARWIN-64-PIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   3368 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3369 ; DARWIN-64-PIC-NEXT: 	ret
   3370 }
   3371 
   3372 define void @off07(i64 %i) nounwind {
   3373 entry:
   3374 	%.sum = add i64 %i, 16
   3375 	%0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
   3376 	store i32* %0, i32** @lptr, align 8
   3377 	ret void
   3378 ; LINUX-64-STATIC: off07:
   3379 ; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), [[RAX:%r.x]]
   3380 ; LINUX-64-STATIC: movq    [[RAX]], lptr
   3381 ; LINUX-64-STATIC: ret
   3382 
   3383 ; LINUX-32-STATIC: off07:
   3384 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3385 ; LINUX-32-STATIC-NEXT: 	leal	ldst+64(,[[EAX]],4), [[EAX:%e.x]]
   3386 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], lptr
   3387 ; LINUX-32-STATIC-NEXT: 	ret
   3388 
   3389 ; LINUX-32-PIC: off07:
   3390 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3391 ; LINUX-32-PIC-NEXT: 	leal	ldst+64(,[[EAX]],4), [[EAX:%e.x]]
   3392 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], lptr
   3393 ; LINUX-32-PIC-NEXT: 	ret
   3394 
   3395 ; LINUX-64-PIC: off07:
   3396 ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]]
   3397 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3398 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip)
   3399 ; LINUX-64-PIC-NEXT: 	ret
   3400 
   3401 ; DARWIN-32-STATIC: _off07:
   3402 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3403 ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), [[EAX:%e.x]]
   3404 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _lptr
   3405 ; DARWIN-32-STATIC-NEXT: 	ret
   3406 
   3407 ; DARWIN-32-DYNAMIC: _off07:
   3408 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3409 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), [[EAX:%e.x]]
   3410 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _lptr
   3411 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3412 
   3413 ; DARWIN-32-PIC: _off07:
   3414 ; DARWIN-32-PIC: 	calll	L46$pb
   3415 ; DARWIN-32-PIC-NEXT: L46$pb:
   3416 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3417 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3418 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L46$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]]
   3419 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L46$pb([[EAX]])
   3420 ; DARWIN-32-PIC-NEXT: 	ret
   3421 
   3422 ; DARWIN-64-STATIC: _off07:
   3423 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   3424 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3425 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   3426 ; DARWIN-64-STATIC-NEXT: 	ret
   3427 
   3428 ; DARWIN-64-DYNAMIC: _off07:
   3429 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   3430 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3431 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   3432 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3433 
   3434 ; DARWIN-64-PIC: _off07:
   3435 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   3436 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]]
   3437 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   3438 ; DARWIN-64-PIC-NEXT: 	ret
   3439 }
   3440 
   3441 define void @off08(i64 %i) nounwind {
   3442 entry:
   3443 	%0 = load i32** @lptr, align 8
   3444 	%1 = add i64 %i, 16
   3445 	%2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
   3446 	%3 = load i32* %2, align 4
   3447 	%4 = getelementptr i32* %0, i64 %1
   3448 	store i32 %3, i32* %4, align 4
   3449 	ret void
   3450 ; LINUX-64-STATIC: off08:
   3451 ; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), [[EAX:%e.x]]
   3452 ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
   3453 ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4)
   3454 ; LINUX-64-STATIC: ret
   3455 
   3456 ; LINUX-32-STATIC: off08:
   3457 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3458 ; LINUX-32-STATIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3459 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[EDX:%e.x]]
   3460 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3461 ; LINUX-32-STATIC-NEXT: 	ret
   3462 
   3463 ; LINUX-32-PIC: off08:
   3464 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   3465 ; LINUX-32-PIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3466 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[EDX:%e.x]]
   3467 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3468 ; LINUX-32-PIC-NEXT: 	ret
   3469 
   3470 ; LINUX-64-PIC: off08:
   3471 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   3472 ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3473 ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]]
   3474 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3475 ; LINUX-64-PIC-NEXT: 	ret
   3476 
   3477 ; DARWIN-32-STATIC: _off08:
   3478 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   3479 ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3480 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[EDX:%e.x]]
   3481 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3482 ; DARWIN-32-STATIC-NEXT: 	ret
   3483 
   3484 ; DARWIN-32-DYNAMIC: _off08:
   3485 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   3486 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]]
   3487 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[EDX:%e.x]]
   3488 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4)
   3489 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3490 
   3491 ; DARWIN-32-PIC: _off08:
   3492 ; DARWIN-32-PIC: 	calll	L47$pb
   3493 ; DARWIN-32-PIC-NEXT: L47$pb:
   3494 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3495 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   3496 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L47$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   3497 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L47$pb([[EAX]]), [[EAX:%e.x]]
   3498 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4)
   3499 ; DARWIN-32-PIC-NEXT: 	ret
   3500 
   3501 ; DARWIN-64-STATIC: _off08:
   3502 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   3503 ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3504 ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   3505 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3506 ; DARWIN-64-STATIC-NEXT: 	ret
   3507 
   3508 ; DARWIN-64-DYNAMIC: _off08:
   3509 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   3510 ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3511 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   3512 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3513 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3514 
   3515 ; DARWIN-64-PIC: _off08:
   3516 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   3517 ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]]
   3518 ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   3519 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4)
   3520 ; DARWIN-64-PIC-NEXT: 	ret
   3521 }
   3522 
   3523 define void @moo00(i64 %i) nounwind {
   3524 entry:
   3525 	%0 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
   3526 	store i32 %0, i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), align 4
   3527 	ret void
   3528 ; LINUX-64-STATIC: moo00:
   3529 ; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]]
   3530 ; LINUX-64-STATIC: movl    [[EAX]], dst+262144(%rip)
   3531 ; LINUX-64-STATIC: ret
   3532 
   3533 ; LINUX-32-STATIC: moo00:
   3534 ; LINUX-32-STATIC: 	movl	src+262144, [[EAX:%e.x]]
   3535 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dst+262144
   3536 ; LINUX-32-STATIC-NEXT: 	ret
   3537 
   3538 ; LINUX-32-PIC: moo00:
   3539 ; LINUX-32-PIC: 	movl	src+262144, [[EAX:%e.x]]
   3540 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dst+262144
   3541 ; LINUX-32-PIC-NEXT: 	ret
   3542 
   3543 ; LINUX-64-PIC: moo00:
   3544 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   3545 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3546 ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]]
   3547 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3548 ; LINUX-64-PIC-NEXT: 	ret
   3549 
   3550 ; DARWIN-32-STATIC: _moo00:
   3551 ; DARWIN-32-STATIC: 	movl	_src+262144, [[EAX:%e.x]]
   3552 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dst+262144
   3553 ; DARWIN-32-STATIC-NEXT: 	ret
   3554 
   3555 ; DARWIN-32-DYNAMIC: _moo00:
   3556 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]]
   3557 ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[EAX]]), [[EAX:%e.x]]
   3558 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]]
   3559 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3560 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3561 
   3562 ; DARWIN-32-PIC: _moo00:
   3563 ; DARWIN-32-PIC: 	calll	L48$pb
   3564 ; DARWIN-32-PIC-NEXT: L48$pb:
   3565 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3566 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L48$pb([[EAX]]), [[ECX:%e.x]]
   3567 ; DARWIN-32-PIC-NEXT: 	movl	262144([[ECX]]), [[ECX:%e.x]]
   3568 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L48$pb([[EAX]]), [[EAX:%e.x]]
   3569 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]])
   3570 ; DARWIN-32-PIC-NEXT: 	ret
   3571 
   3572 ; DARWIN-64-STATIC: _moo00:
   3573 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   3574 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3575 ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   3576 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3577 ; DARWIN-64-STATIC-NEXT: 	ret
   3578 
   3579 ; DARWIN-64-DYNAMIC: _moo00:
   3580 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   3581 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3582 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   3583 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3584 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3585 
   3586 ; DARWIN-64-PIC: _moo00:
   3587 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   3588 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3589 ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   3590 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3591 ; DARWIN-64-PIC-NEXT: 	ret
   3592 }
   3593 
   3594 define void @moo01(i64 %i) nounwind {
   3595 entry:
   3596 	store i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8
   3597 	ret void
   3598 ; LINUX-64-STATIC: moo01:
   3599 ; LINUX-64-STATIC: movq    $dst+262144, ptr(%rip)
   3600 ; LINUX-64-STATIC: ret
   3601 
   3602 ; LINUX-32-STATIC: moo01:
   3603 ; LINUX-32-STATIC: 	movl	$dst+262144, ptr
   3604 ; LINUX-32-STATIC-NEXT: 	ret
   3605 
   3606 ; LINUX-32-PIC: moo01:
   3607 ; LINUX-32-PIC: 	movl	$dst+262144, ptr
   3608 ; LINUX-32-PIC-NEXT: 	ret
   3609 
   3610 ; LINUX-64-PIC: moo01:
   3611 ; LINUX-64-PIC: 	movl	$262144, [[EAX:%e.x]]
   3612 ; LINUX-64-PIC-NEXT: 	addq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
   3613 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3614 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   3615 ; LINUX-64-PIC-NEXT: 	ret
   3616 
   3617 ; DARWIN-32-STATIC: _moo01:
   3618 ; DARWIN-32-STATIC: 	movl	$_dst+262144, _ptr
   3619 ; DARWIN-32-STATIC-NEXT: 	ret
   3620 
   3621 ; DARWIN-32-DYNAMIC: _moo01:
   3622 ; DARWIN-32-DYNAMIC: 	movl	$262144, [[EAX:%e.x]]
   3623 ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_dst$non_lazy_ptr, [[EAX:%e.x]]
   3624 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   3625 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   3626 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3627 
   3628 ; DARWIN-32-PIC: _moo01:
   3629 ; DARWIN-32-PIC: 	calll	L49$pb
   3630 ; DARWIN-32-PIC-NEXT: L49$pb:
   3631 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3632 ; DARWIN-32-PIC-NEXT: 	movl	$262144, [[ECX:%e.x]]
   3633 ; DARWIN-32-PIC-NEXT: 	addl	L_dst$non_lazy_ptr-L49$pb([[EAX]]), [[ECX:%e.x]]
   3634 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L49$pb([[EAX]]), [[EAX:%e.x]]
   3635 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   3636 ; DARWIN-32-PIC-NEXT: 	ret
   3637 
   3638 ; DARWIN-64-STATIC: _moo01:
   3639 ; DARWIN-64-STATIC: 	movl	$262144, [[EAX:%e.x]]
   3640 ; DARWIN-64-STATIC-NEXT: 	addq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   3641 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3642 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   3643 ; DARWIN-64-STATIC-NEXT: 	ret
   3644 
   3645 ; DARWIN-64-DYNAMIC: _moo01:
   3646 ; DARWIN-64-DYNAMIC: 	movl	$262144, [[EAX:%e.x]]
   3647 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   3648 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3649 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   3650 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3651 
   3652 ; DARWIN-64-PIC: _moo01:
   3653 ; DARWIN-64-PIC: 	movl	$262144, [[EAX:%e.x]]
   3654 ; DARWIN-64-PIC-NEXT: 	addq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   3655 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3656 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   3657 ; DARWIN-64-PIC-NEXT: 	ret
   3658 }
   3659 
   3660 define void @moo02(i64 %i) nounwind {
   3661 entry:
   3662 	%0 = load i32** @ptr, align 8
   3663 	%1 = load i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536), align 4
   3664 	%2 = getelementptr i32* %0, i64 65536
   3665 	store i32 %1, i32* %2, align 4
   3666 	ret void
   3667 ; LINUX-64-STATIC: moo02:
   3668 ; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]]
   3669 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   3670 ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]])
   3671 ; LINUX-64-STATIC: ret
   3672 
   3673 ; LINUX-32-STATIC: moo02:
   3674 ; LINUX-32-STATIC: 	movl	src+262144, [[EAX:%e.x]]
   3675 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   3676 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3677 ; LINUX-32-STATIC-NEXT: 	ret
   3678 
   3679 ; LINUX-32-PIC: moo02:
   3680 ; LINUX-32-PIC: 	movl	src+262144, [[EAX:%e.x]]
   3681 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   3682 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3683 ; LINUX-32-PIC-NEXT: 	ret
   3684 
   3685 ; LINUX-64-PIC: moo02:
   3686 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   3687 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3688 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3689 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3690 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3691 ; LINUX-64-PIC-NEXT: 	ret
   3692 
   3693 ; DARWIN-32-STATIC: _moo02:
   3694 ; DARWIN-32-STATIC: 	movl	_src+262144, [[EAX:%e.x]]
   3695 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
   3696 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3697 ; DARWIN-32-STATIC-NEXT: 	ret
   3698 
   3699 ; DARWIN-32-DYNAMIC: _moo02:
   3700 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]]
   3701 ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[EAX]]), [[EAX:%e.x]]
   3702 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   3703 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]]
   3704 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3705 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3706 
   3707 ; DARWIN-32-PIC: _moo02:
   3708 ; DARWIN-32-PIC: 	calll	L50$pb
   3709 ; DARWIN-32-PIC-NEXT: L50$pb:
   3710 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3711 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L50$pb([[EAX]]), [[ECX:%e.x]]
   3712 ; DARWIN-32-PIC-NEXT: 	movl	262144([[ECX]]), [[ECX:%e.x]]
   3713 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L50$pb([[EAX]]), [[EAX:%e.x]]
   3714 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   3715 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]])
   3716 ; DARWIN-32-PIC-NEXT: 	ret
   3717 
   3718 ; DARWIN-64-STATIC: _moo02:
   3719 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   3720 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3721 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3722 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3723 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3724 ; DARWIN-64-STATIC-NEXT: 	ret
   3725 
   3726 ; DARWIN-64-DYNAMIC: _moo02:
   3727 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   3728 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3729 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3730 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3731 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3732 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3733 
   3734 ; DARWIN-64-PIC: _moo02:
   3735 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   3736 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3737 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3738 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3739 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3740 ; DARWIN-64-PIC-NEXT: 	ret
   3741 }
   3742 
   3743 define void @moo03(i64 %i) nounwind {
   3744 entry:
   3745 	%0 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
   3746 	store i32 %0, i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), align 32
   3747 	ret void
   3748 ; LINUX-64-STATIC: moo03:
   3749 ; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]]
   3750 ; LINUX-64-STATIC: movl    [[EAX]], ddst+262144(%rip)
   3751 ; LINUX-64-STATIC: ret
   3752 
   3753 ; LINUX-32-STATIC: moo03:
   3754 ; LINUX-32-STATIC: 	movl	dsrc+262144, [[EAX:%e.x]]
   3755 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ddst+262144
   3756 ; LINUX-32-STATIC-NEXT: 	ret
   3757 
   3758 ; LINUX-32-PIC: moo03:
   3759 ; LINUX-32-PIC: 	movl	dsrc+262144, [[EAX:%e.x]]
   3760 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ddst+262144
   3761 ; LINUX-32-PIC-NEXT: 	ret
   3762 
   3763 ; LINUX-64-PIC: moo03:
   3764 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3765 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3766 ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]]
   3767 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3768 ; LINUX-64-PIC-NEXT: 	ret
   3769 
   3770 ; DARWIN-32-STATIC: _moo03:
   3771 ; DARWIN-32-STATIC: 	movl	_dsrc+262144, [[EAX:%e.x]]
   3772 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ddst+262144
   3773 ; DARWIN-32-STATIC-NEXT: 	ret
   3774 
   3775 ; DARWIN-32-DYNAMIC: _moo03:
   3776 ; DARWIN-32-DYNAMIC: 	movl	_dsrc+262144, [[EAX:%e.x]]
   3777 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+262144
   3778 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3779 
   3780 ; DARWIN-32-PIC: _moo03:
   3781 ; DARWIN-32-PIC: 	calll	L51$pb
   3782 ; DARWIN-32-PIC-NEXT: L51$pb:
   3783 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3784 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L51$pb)+262144([[EAX]]), [[ECX:%e.x]]
   3785 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ddst-L51$pb)+262144([[EAX]])
   3786 ; DARWIN-32-PIC-NEXT: 	ret
   3787 
   3788 ; DARWIN-64-STATIC: _moo03:
   3789 ; DARWIN-64-STATIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]]
   3790 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ddst+262144(%rip)
   3791 ; DARWIN-64-STATIC-NEXT: 	ret
   3792 
   3793 ; DARWIN-64-DYNAMIC: _moo03:
   3794 ; DARWIN-64-DYNAMIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]]
   3795 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+262144(%rip)
   3796 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3797 
   3798 ; DARWIN-64-PIC: _moo03:
   3799 ; DARWIN-64-PIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]]
   3800 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ddst+262144(%rip)
   3801 ; DARWIN-64-PIC-NEXT: 	ret
   3802 }
   3803 
   3804 define void @moo04(i64 %i) nounwind {
   3805 entry:
   3806 	store i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8
   3807 	ret void
   3808 ; LINUX-64-STATIC: moo04:
   3809 ; LINUX-64-STATIC: movq    $ddst+262144, dptr
   3810 ; LINUX-64-STATIC: ret
   3811 
   3812 ; LINUX-32-STATIC: moo04:
   3813 ; LINUX-32-STATIC: 	movl	$ddst+262144, dptr
   3814 ; LINUX-32-STATIC-NEXT: 	ret
   3815 
   3816 ; LINUX-32-PIC: moo04:
   3817 ; LINUX-32-PIC: 	movl	$ddst+262144, dptr
   3818 ; LINUX-32-PIC-NEXT: 	ret
   3819 
   3820 ; LINUX-64-PIC: moo04:
   3821 ; LINUX-64-PIC: 	movl	$262144, [[EAX:%e.x]]
   3822 ; LINUX-64-PIC-NEXT: 	addq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
   3823 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3824 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   3825 ; LINUX-64-PIC-NEXT: 	ret
   3826 
   3827 ; DARWIN-32-STATIC: _moo04:
   3828 ; DARWIN-32-STATIC: 	movl	$_ddst+262144, _dptr
   3829 ; DARWIN-32-STATIC-NEXT: 	ret
   3830 
   3831 ; DARWIN-32-DYNAMIC: _moo04:
   3832 ; DARWIN-32-DYNAMIC: 	movl	$_ddst+262144, _dptr
   3833 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3834 
   3835 ; DARWIN-32-PIC: _moo04:
   3836 ; DARWIN-32-PIC: 	calll	L52$pb
   3837 ; DARWIN-32-PIC-NEXT: L52$pb:
   3838 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3839 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L52$pb)+262144([[EAX]]), [[ECX:%e.x]]
   3840 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L52$pb([[EAX]])
   3841 ; DARWIN-32-PIC-NEXT: 	ret
   3842 
   3843 ; DARWIN-64-STATIC: _moo04:
   3844 ; DARWIN-64-STATIC: 	leaq	_ddst+262144(%rip), [[RAX:%r.x]]
   3845 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   3846 ; DARWIN-64-STATIC-NEXT: 	ret
   3847 
   3848 ; DARWIN-64-DYNAMIC: _moo04:
   3849 ; DARWIN-64-DYNAMIC: 	leaq	_ddst+262144(%rip), [[RAX:%r.x]]
   3850 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   3851 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3852 
   3853 ; DARWIN-64-PIC: _moo04:
   3854 ; DARWIN-64-PIC: 	leaq	_ddst+262144(%rip), [[RAX:%r.x]]
   3855 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   3856 ; DARWIN-64-PIC-NEXT: 	ret
   3857 }
   3858 
   3859 define void @moo05(i64 %i) nounwind {
   3860 entry:
   3861 	%0 = load i32** @dptr, align 8
   3862 	%1 = load i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536), align 32
   3863 	%2 = getelementptr i32* %0, i64 65536
   3864 	store i32 %1, i32* %2, align 4
   3865 	ret void
   3866 ; LINUX-64-STATIC: moo05:
   3867 ; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]]
   3868 ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
   3869 ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]])
   3870 ; LINUX-64-STATIC: ret
   3871 
   3872 ; LINUX-32-STATIC: moo05:
   3873 ; LINUX-32-STATIC: 	movl	dsrc+262144, [[EAX:%e.x]]
   3874 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   3875 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3876 ; LINUX-32-STATIC-NEXT: 	ret
   3877 
   3878 ; LINUX-32-PIC: moo05:
   3879 ; LINUX-32-PIC: 	movl	dsrc+262144, [[EAX:%e.x]]
   3880 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   3881 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3882 ; LINUX-32-PIC-NEXT: 	ret
   3883 
   3884 ; LINUX-64-PIC: moo05:
   3885 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   3886 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]]
   3887 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   3888 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   3889 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3890 ; LINUX-64-PIC-NEXT: 	ret
   3891 
   3892 ; DARWIN-32-STATIC: _moo05:
   3893 ; DARWIN-32-STATIC: 	movl	_dsrc+262144, [[EAX:%e.x]]
   3894 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   3895 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3896 ; DARWIN-32-STATIC-NEXT: 	ret
   3897 
   3898 ; DARWIN-32-DYNAMIC: _moo05:
   3899 ; DARWIN-32-DYNAMIC: 	movl	_dsrc+262144, [[EAX:%e.x]]
   3900 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   3901 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   3902 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3903 
   3904 ; DARWIN-32-PIC: _moo05:
   3905 ; DARWIN-32-PIC: 	calll	L53$pb
   3906 ; DARWIN-32-PIC-NEXT: L53$pb:
   3907 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3908 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L53$pb)+262144([[EAX]]), [[ECX:%e.x]]
   3909 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L53$pb([[EAX]]), [[EAX:%e.x]]
   3910 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]])
   3911 ; DARWIN-32-PIC-NEXT: 	ret
   3912 
   3913 ; DARWIN-64-STATIC: _moo05:
   3914 ; DARWIN-64-STATIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]]
   3915 ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   3916 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3917 ; DARWIN-64-STATIC-NEXT: 	ret
   3918 
   3919 ; DARWIN-64-DYNAMIC: _moo05:
   3920 ; DARWIN-64-DYNAMIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]]
   3921 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   3922 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3923 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3924 
   3925 ; DARWIN-64-PIC: _moo05:
   3926 ; DARWIN-64-PIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]]
   3927 ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   3928 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   3929 ; DARWIN-64-PIC-NEXT: 	ret
   3930 }
   3931 
   3932 define void @moo06(i64 %i) nounwind {
   3933 entry:
   3934 	%0 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
   3935 	store i32 %0, i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), align 4
   3936 	ret void
   3937 ; LINUX-64-STATIC: moo06:
   3938 ; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]]
   3939 ; LINUX-64-STATIC: movl    [[EAX]], ldst+262144(%rip)
   3940 ; LINUX-64-STATIC: ret
   3941 
   3942 ; LINUX-32-STATIC: moo06:
   3943 ; LINUX-32-STATIC: 	movl	lsrc+262144, [[EAX:%e.x]]
   3944 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ldst+262144
   3945 ; LINUX-32-STATIC-NEXT: 	ret
   3946 
   3947 ; LINUX-32-PIC: moo06:
   3948 ; LINUX-32-PIC: 	movl	lsrc+262144, [[EAX:%e.x]]
   3949 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ldst+262144
   3950 ; LINUX-32-PIC-NEXT: 	ret
   3951 
   3952 ; LINUX-64-PIC: moo06:
   3953 ; LINUX-64-PIC: 	movl	lsrc+262144(%rip), [[EAX:%e.x]]
   3954 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ldst+262144(%rip)
   3955 ; LINUX-64-PIC-NEXT: 	ret
   3956 
   3957 ; DARWIN-32-STATIC: _moo06:
   3958 ; DARWIN-32-STATIC: 	movl	_lsrc+262144, [[EAX:%e.x]]
   3959 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ldst+262144
   3960 ; DARWIN-32-STATIC-NEXT: 	ret
   3961 
   3962 ; DARWIN-32-DYNAMIC: _moo06:
   3963 ; DARWIN-32-DYNAMIC: 	movl	_lsrc+262144, [[EAX:%e.x]]
   3964 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+262144
   3965 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   3966 
   3967 ; DARWIN-32-PIC: _moo06:
   3968 ; DARWIN-32-PIC: 	calll	L54$pb
   3969 ; DARWIN-32-PIC-NEXT: L54$pb:
   3970 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   3971 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L54$pb)+262144([[EAX]]), [[ECX:%e.x]]
   3972 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ldst-L54$pb)+262144([[EAX]])
   3973 ; DARWIN-32-PIC-NEXT: 	ret
   3974 
   3975 ; DARWIN-64-STATIC: _moo06:
   3976 ; DARWIN-64-STATIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]]
   3977 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ldst+262144(%rip)
   3978 ; DARWIN-64-STATIC-NEXT: 	ret
   3979 
   3980 ; DARWIN-64-DYNAMIC: _moo06:
   3981 ; DARWIN-64-DYNAMIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]]
   3982 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+262144(%rip)
   3983 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   3984 
   3985 ; DARWIN-64-PIC: _moo06:
   3986 ; DARWIN-64-PIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]]
   3987 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ldst+262144(%rip)
   3988 ; DARWIN-64-PIC-NEXT: 	ret
   3989 }
   3990 
   3991 define void @moo07(i64 %i) nounwind {
   3992 entry:
   3993 	store i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8
   3994 	ret void
   3995 ; LINUX-64-STATIC: moo07:
   3996 ; LINUX-64-STATIC: movq    $ldst+262144, lptr
   3997 ; LINUX-64-STATIC: ret
   3998 
   3999 ; LINUX-32-STATIC: moo07:
   4000 ; LINUX-32-STATIC: 	movl	$ldst+262144, lptr
   4001 ; LINUX-32-STATIC-NEXT: 	ret
   4002 
   4003 ; LINUX-32-PIC: moo07:
   4004 ; LINUX-32-PIC: 	movl	$ldst+262144, lptr
   4005 ; LINUX-32-PIC-NEXT: 	ret
   4006 
   4007 ; LINUX-64-PIC: moo07:
   4008 ; LINUX-64-PIC: 	leaq	ldst+262144(%rip), [[RAX:%r.x]]
   4009 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip)
   4010 ; LINUX-64-PIC-NEXT: 	ret
   4011 
   4012 ; DARWIN-32-STATIC: _moo07:
   4013 ; DARWIN-32-STATIC: 	movl	$_ldst+262144, _lptr
   4014 ; DARWIN-32-STATIC-NEXT: 	ret
   4015 
   4016 ; DARWIN-32-DYNAMIC: _moo07:
   4017 ; DARWIN-32-DYNAMIC: 	movl	$_ldst+262144, _lptr
   4018 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4019 
   4020 ; DARWIN-32-PIC: _moo07:
   4021 ; DARWIN-32-PIC: 	calll	L55$pb
   4022 ; DARWIN-32-PIC-NEXT: L55$pb:
   4023 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4024 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L55$pb)+262144([[EAX]]), [[ECX:%e.x]]
   4025 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L55$pb([[EAX]])
   4026 ; DARWIN-32-PIC-NEXT: 	ret
   4027 
   4028 ; DARWIN-64-STATIC: _moo07:
   4029 ; DARWIN-64-STATIC: 	leaq	_ldst+262144(%rip), [[RAX:%r.x]]
   4030 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   4031 ; DARWIN-64-STATIC-NEXT: 	ret
   4032 
   4033 ; DARWIN-64-DYNAMIC: _moo07:
   4034 ; DARWIN-64-DYNAMIC: 	leaq	_ldst+262144(%rip), [[RAX:%r.x]]
   4035 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   4036 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4037 
   4038 ; DARWIN-64-PIC: _moo07:
   4039 ; DARWIN-64-PIC: 	leaq	_ldst+262144(%rip), [[RAX:%r.x]]
   4040 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   4041 ; DARWIN-64-PIC-NEXT: 	ret
   4042 }
   4043 
   4044 define void @moo08(i64 %i) nounwind {
   4045 entry:
   4046 	%0 = load i32** @lptr, align 8
   4047 	%1 = load i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536), align 4
   4048 	%2 = getelementptr i32* %0, i64 65536
   4049 	store i32 %1, i32* %2, align 4
   4050 	ret void
   4051 ; LINUX-64-STATIC: moo08:
   4052 ; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]]
   4053 ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
   4054 ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]])
   4055 ; LINUX-64-STATIC: ret
   4056 
   4057 ; LINUX-32-STATIC: moo08:
   4058 ; LINUX-32-STATIC: 	movl	lsrc+262144, [[EAX:%e.x]]
   4059 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   4060 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   4061 ; LINUX-32-STATIC-NEXT: 	ret
   4062 
   4063 ; LINUX-32-PIC: moo08:
   4064 ; LINUX-32-PIC: 	movl	lsrc+262144, [[EAX:%e.x]]
   4065 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   4066 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   4067 ; LINUX-32-PIC-NEXT: 	ret
   4068 
   4069 ; LINUX-64-PIC: moo08:
   4070 ; LINUX-64-PIC: 	movl	lsrc+262144(%rip), [[EAX:%e.x]]
   4071 ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]]
   4072 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   4073 ; LINUX-64-PIC-NEXT: 	ret
   4074 
   4075 ; DARWIN-32-STATIC: _moo08:
   4076 ; DARWIN-32-STATIC: 	movl	_lsrc+262144, [[EAX:%e.x]]
   4077 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   4078 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   4079 ; DARWIN-32-STATIC-NEXT: 	ret
   4080 
   4081 ; DARWIN-32-DYNAMIC: _moo08:
   4082 ; DARWIN-32-DYNAMIC: 	movl	_lsrc+262144, [[EAX:%e.x]]
   4083 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   4084 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]])
   4085 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4086 
   4087 ; DARWIN-32-PIC: _moo08:
   4088 ; DARWIN-32-PIC: 	calll	L56$pb
   4089 ; DARWIN-32-PIC-NEXT: L56$pb:
   4090 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4091 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L56$pb)+262144([[EAX]]), [[ECX:%e.x]]
   4092 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L56$pb([[EAX]]), [[EAX:%e.x]]
   4093 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]])
   4094 ; DARWIN-32-PIC-NEXT: 	ret
   4095 
   4096 ; DARWIN-64-STATIC: _moo08:
   4097 ; DARWIN-64-STATIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]]
   4098 ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   4099 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   4100 ; DARWIN-64-STATIC-NEXT: 	ret
   4101 
   4102 ; DARWIN-64-DYNAMIC: _moo08:
   4103 ; DARWIN-64-DYNAMIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]]
   4104 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   4105 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   4106 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4107 
   4108 ; DARWIN-64-PIC: _moo08:
   4109 ; DARWIN-64-PIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]]
   4110 ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   4111 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]])
   4112 ; DARWIN-64-PIC-NEXT: 	ret
   4113 }
   4114 
   4115 define void @big00(i64 %i) nounwind {
   4116 entry:
   4117 	%0 = add i64 %i, 65536
   4118 	%1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
   4119 	%2 = load i32* %1, align 4
   4120 	%3 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
   4121 	store i32 %2, i32* %3, align 4
   4122 	ret void
   4123 ; LINUX-64-STATIC: big00:
   4124 ; LINUX-64-STATIC: movl    src+262144(,%rdi,4), [[EAX:%e.x]]
   4125 ; LINUX-64-STATIC: movl    [[EAX]], dst+262144(,%rdi,4)
   4126 ; LINUX-64-STATIC: ret
   4127 
   4128 ; LINUX-32-STATIC: big00:
   4129 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4130 ; LINUX-32-STATIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]]
   4131 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], dst+262144(,[[EAX]],4)
   4132 ; LINUX-32-STATIC-NEXT: 	ret
   4133 
   4134 ; LINUX-32-PIC: big00:
   4135 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4136 ; LINUX-32-PIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]]
   4137 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], dst+262144(,[[EAX]],4)
   4138 ; LINUX-32-PIC-NEXT: 	ret
   4139 
   4140 ; LINUX-64-PIC: big00:
   4141 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   4142 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4143 ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]]
   4144 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4145 ; LINUX-64-PIC-NEXT: 	ret
   4146 
   4147 ; DARWIN-32-STATIC: _big00:
   4148 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4149 ; DARWIN-32-STATIC-NEXT: 	movl	_src+262144(,[[EAX]],4), [[ECX:%e.x]]
   4150 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _dst+262144(,[[EAX]],4)
   4151 ; DARWIN-32-STATIC-NEXT: 	ret
   4152 
   4153 ; DARWIN-32-DYNAMIC: _big00:
   4154 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4155 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   4156 ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   4157 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[EDX:%e.x]]
   4158 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4159 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4160 
   4161 ; DARWIN-32-PIC: _big00:
   4162 ; DARWIN-32-PIC: 	calll	L57$pb
   4163 ; DARWIN-32-PIC-NEXT: L57$pb:
   4164 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4165 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4166 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L57$pb([[EAX]]), [[EDX:%e.x]]
   4167 ; DARWIN-32-PIC-NEXT: 	movl	262144([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   4168 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L57$pb([[EAX]]), [[EAX:%e.x]]
   4169 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4)
   4170 ; DARWIN-32-PIC-NEXT: 	ret
   4171 
   4172 ; DARWIN-64-STATIC: _big00:
   4173 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   4174 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4175 ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   4176 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4177 ; DARWIN-64-STATIC-NEXT: 	ret
   4178 
   4179 ; DARWIN-64-DYNAMIC: _big00:
   4180 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   4181 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4182 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   4183 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4184 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4185 
   4186 ; DARWIN-64-PIC: _big00:
   4187 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   4188 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4189 ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]]
   4190 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4191 ; DARWIN-64-PIC-NEXT: 	ret
   4192 }
   4193 
   4194 define void @big01(i64 %i) nounwind {
   4195 entry:
   4196 	%.sum = add i64 %i, 65536
   4197 	%0 = getelementptr [131072 x i32]* @dst, i64 0, i64 %.sum
   4198 	store i32* %0, i32** @ptr, align 8
   4199 	ret void
   4200 ; LINUX-64-STATIC: big01:
   4201 ; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), [[RAX:%r.x]]
   4202 ; LINUX-64-STATIC: movq    [[RAX]], ptr(%rip)
   4203 ; LINUX-64-STATIC: ret
   4204 
   4205 ; LINUX-32-STATIC: big01:
   4206 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4207 ; LINUX-32-STATIC-NEXT: 	leal	dst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4208 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr
   4209 ; LINUX-32-STATIC-NEXT: 	ret
   4210 
   4211 ; LINUX-32-PIC: big01:
   4212 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4213 ; LINUX-32-PIC-NEXT: 	leal	dst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4214 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr
   4215 ; LINUX-32-PIC-NEXT: 	ret
   4216 
   4217 ; LINUX-64-PIC: big01:
   4218 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
   4219 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4220 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4221 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   4222 ; LINUX-64-PIC-NEXT: 	ret
   4223 
   4224 ; DARWIN-32-STATIC: _big01:
   4225 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4226 ; DARWIN-32-STATIC-NEXT: 	leal	_dst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4227 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr
   4228 ; DARWIN-32-STATIC-NEXT: 	ret
   4229 
   4230 ; DARWIN-32-DYNAMIC: _big01:
   4231 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4232 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]]
   4233 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), [[EAX:%e.x]]
   4234 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   4235 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]])
   4236 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4237 
   4238 ; DARWIN-32-PIC: _big01:
   4239 ; DARWIN-32-PIC: 	calll	L58$pb
   4240 ; DARWIN-32-PIC-NEXT: L58$pb:
   4241 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4242 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4243 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L58$pb([[EAX]]), [[EDX:%e.x]]
   4244 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EDX]],[[ECX]],4), [[ECX:%e.x]]
   4245 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L58$pb([[EAX]]), [[EAX:%e.x]]
   4246 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]])
   4247 ; DARWIN-32-PIC-NEXT: 	ret
   4248 
   4249 ; DARWIN-64-STATIC: _big01:
   4250 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   4251 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4252 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4253 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   4254 ; DARWIN-64-STATIC-NEXT: 	ret
   4255 
   4256 ; DARWIN-64-DYNAMIC: _big01:
   4257 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   4258 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4259 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4260 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   4261 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4262 
   4263 ; DARWIN-64-PIC: _big01:
   4264 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   4265 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4266 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4267 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   4268 ; DARWIN-64-PIC-NEXT: 	ret
   4269 }
   4270 
   4271 define void @big02(i64 %i) nounwind {
   4272 entry:
   4273 	%0 = load i32** @ptr, align 8
   4274 	%1 = add i64 %i, 65536
   4275 	%2 = getelementptr [131072 x i32]* @src, i64 0, i64 %1
   4276 	%3 = load i32* %2, align 4
   4277 	%4 = getelementptr i32* %0, i64 %1
   4278 	store i32 %3, i32* %4, align 4
   4279 	ret void
   4280 ; LINUX-64-STATIC: big02:
   4281 ; LINUX-64-STATIC: movl    src+262144(,%rdi,4), [[EAX:%e.x]]
   4282 ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]]
   4283 ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4)
   4284 ; LINUX-64-STATIC: ret
   4285 
   4286 ; LINUX-32-STATIC: big02:
   4287 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4288 ; LINUX-32-STATIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]]
   4289 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   4290 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4291 ; LINUX-32-STATIC-NEXT: 	ret
   4292 
   4293 ; LINUX-32-PIC: big02:
   4294 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4295 ; LINUX-32-PIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]]
   4296 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]]
   4297 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4298 ; LINUX-32-PIC-NEXT: 	ret
   4299 
   4300 ; LINUX-64-PIC: big02:
   4301 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   4302 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4303 ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4304 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   4305 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4306 ; LINUX-64-PIC-NEXT: 	ret
   4307 
   4308 ; DARWIN-32-STATIC: _big02:
   4309 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4310 ; DARWIN-32-STATIC-NEXT: 	movl	_src+262144(,[[EAX]],4), [[ECX:%e.x]]
   4311 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]]
   4312 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4313 ; DARWIN-32-STATIC-NEXT: 	ret
   4314 
   4315 ; DARWIN-32-DYNAMIC: _big02:
   4316 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4317 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   4318 ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[ECX]],[[EAX]],4), [[ECX:%e.x]]
   4319 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]]
   4320 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]]
   4321 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4322 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4323 
   4324 ; DARWIN-32-PIC: _big02:
   4325 ; DARWIN-32-PIC: 	calll	L59$pb
   4326 ; DARWIN-32-PIC-NEXT: L59$pb:
   4327 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4328 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4329 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L59$pb([[EAX]]), [[EDX:%e.x]]
   4330 ; DARWIN-32-PIC-NEXT: 	movl	262144([[EDX]],[[ECX]],4), [[EDX:%e.x]]
   4331 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L59$pb([[EAX]]), [[EAX:%e.x]]
   4332 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   4333 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4)
   4334 ; DARWIN-32-PIC-NEXT: 	ret
   4335 
   4336 ; DARWIN-64-STATIC: _big02:
   4337 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   4338 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4339 ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4340 ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   4341 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4342 ; DARWIN-64-STATIC-NEXT: 	ret
   4343 
   4344 ; DARWIN-64-DYNAMIC: _big02:
   4345 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   4346 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4347 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4348 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   4349 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4350 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4351 
   4352 ; DARWIN-64-PIC: _big02:
   4353 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   4354 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4355 ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4356 ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   4357 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4358 ; DARWIN-64-PIC-NEXT: 	ret
   4359 }
   4360 
   4361 define void @big03(i64 %i) nounwind {
   4362 entry:
   4363 	%0 = add i64 %i, 65536
   4364 	%1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
   4365 	%2 = load i32* %1, align 4
   4366 	%3 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
   4367 	store i32 %2, i32* %3, align 4
   4368 	ret void
   4369 ; LINUX-64-STATIC: big03:
   4370 ; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), [[EAX:%e.x]]
   4371 ; LINUX-64-STATIC: movl    [[EAX]], ddst+262144(,%rdi,4)
   4372 ; LINUX-64-STATIC: ret
   4373 
   4374 ; LINUX-32-STATIC: big03:
   4375 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4376 ; LINUX-32-STATIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4377 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ddst+262144(,[[EAX]],4)
   4378 ; LINUX-32-STATIC-NEXT: 	ret
   4379 
   4380 ; LINUX-32-PIC: big03:
   4381 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4382 ; LINUX-32-PIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4383 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ddst+262144(,[[EAX]],4)
   4384 ; LINUX-32-PIC-NEXT: 	ret
   4385 
   4386 ; LINUX-64-PIC: big03:
   4387 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   4388 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4389 ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]]
   4390 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4391 ; LINUX-64-PIC-NEXT: 	ret
   4392 
   4393 ; DARWIN-32-STATIC: _big03:
   4394 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4395 ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4396 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ddst+262144(,[[EAX]],4)
   4397 ; DARWIN-32-STATIC-NEXT: 	ret
   4398 
   4399 ; DARWIN-32-DYNAMIC: _big03:
   4400 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4401 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4402 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ddst+262144(,[[EAX]],4)
   4403 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4404 
   4405 ; DARWIN-32-PIC: _big03:
   4406 ; DARWIN-32-PIC: 	calll	L60$pb
   4407 ; DARWIN-32-PIC-NEXT: L60$pb:
   4408 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4409 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4410 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L60$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   4411 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ddst-L60$pb)+262144([[EAX]],[[ECX]],4)
   4412 ; DARWIN-32-PIC-NEXT: 	ret
   4413 
   4414 ; DARWIN-64-STATIC: _big03:
   4415 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   4416 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4417 ; DARWIN-64-STATIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   4418 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4419 ; DARWIN-64-STATIC-NEXT: 	ret
   4420 
   4421 ; DARWIN-64-DYNAMIC: _big03:
   4422 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   4423 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4424 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   4425 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4426 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4427 
   4428 ; DARWIN-64-PIC: _big03:
   4429 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   4430 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4431 ; DARWIN-64-PIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]]
   4432 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4433 ; DARWIN-64-PIC-NEXT: 	ret
   4434 }
   4435 
   4436 define void @big04(i64 %i) nounwind {
   4437 entry:
   4438 	%.sum = add i64 %i, 65536
   4439 	%0 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %.sum
   4440 	store i32* %0, i32** @dptr, align 8
   4441 	ret void
   4442 ; LINUX-64-STATIC: big04:
   4443 ; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), [[RAX:%r.x]]
   4444 ; LINUX-64-STATIC: movq    [[RAX]], dptr
   4445 ; LINUX-64-STATIC: ret
   4446 
   4447 ; LINUX-32-STATIC: big04:
   4448 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4449 ; LINUX-32-STATIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4450 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dptr
   4451 ; LINUX-32-STATIC-NEXT: 	ret
   4452 
   4453 ; LINUX-32-PIC: big04:
   4454 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4455 ; LINUX-32-PIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4456 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dptr
   4457 ; LINUX-32-PIC-NEXT: 	ret
   4458 
   4459 ; LINUX-64-PIC: big04:
   4460 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
   4461 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4462 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4463 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]])
   4464 ; LINUX-64-PIC-NEXT: 	ret
   4465 
   4466 ; DARWIN-32-STATIC: _big04:
   4467 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4468 ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4469 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dptr
   4470 ; DARWIN-32-STATIC-NEXT: 	ret
   4471 
   4472 ; DARWIN-32-DYNAMIC: _big04:
   4473 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4474 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4475 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _dptr
   4476 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4477 
   4478 ; DARWIN-32-PIC: _big04:
   4479 ; DARWIN-32-PIC: 	calll	L61$pb
   4480 ; DARWIN-32-PIC-NEXT: L61$pb:
   4481 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4482 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4483 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L61$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]]
   4484 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L61$pb([[EAX]])
   4485 ; DARWIN-32-PIC-NEXT: 	ret
   4486 
   4487 ; DARWIN-64-STATIC: _big04:
   4488 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   4489 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4490 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   4491 ; DARWIN-64-STATIC-NEXT: 	ret
   4492 
   4493 ; DARWIN-64-DYNAMIC: _big04:
   4494 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   4495 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4496 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   4497 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4498 
   4499 ; DARWIN-64-PIC: _big04:
   4500 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   4501 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4502 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip)
   4503 ; DARWIN-64-PIC-NEXT: 	ret
   4504 }
   4505 
   4506 define void @big05(i64 %i) nounwind {
   4507 entry:
   4508 	%0 = load i32** @dptr, align 8
   4509 	%1 = add i64 %i, 65536
   4510 	%2 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %1
   4511 	%3 = load i32* %2, align 4
   4512 	%4 = getelementptr i32* %0, i64 %1
   4513 	store i32 %3, i32* %4, align 4
   4514 	ret void
   4515 ; LINUX-64-STATIC: big05:
   4516 ; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), [[EAX:%e.x]]
   4517 ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]]
   4518 ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4)
   4519 ; LINUX-64-STATIC: ret
   4520 
   4521 ; LINUX-32-STATIC: big05:
   4522 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4523 ; LINUX-32-STATIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4524 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[EDX:%e.x]]
   4525 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4526 ; LINUX-32-STATIC-NEXT: 	ret
   4527 
   4528 ; LINUX-32-PIC: big05:
   4529 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4530 ; LINUX-32-PIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4531 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[EDX:%e.x]]
   4532 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4533 ; LINUX-32-PIC-NEXT: 	ret
   4534 
   4535 ; LINUX-64-PIC: big05:
   4536 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   4537 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4538 ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   4539 ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]]
   4540 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4541 ; LINUX-64-PIC-NEXT: 	ret
   4542 
   4543 ; DARWIN-32-STATIC: _big05:
   4544 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4545 ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4546 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[EDX:%e.x]]
   4547 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4548 ; DARWIN-32-STATIC-NEXT: 	ret
   4549 
   4550 ; DARWIN-32-DYNAMIC: _big05:
   4551 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4552 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4553 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[EDX:%e.x]]
   4554 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4555 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4556 
   4557 ; DARWIN-32-PIC: _big05:
   4558 ; DARWIN-32-PIC: 	calll	L62$pb
   4559 ; DARWIN-32-PIC-NEXT: L62$pb:
   4560 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4561 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4562 ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L62$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   4563 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L62$pb([[EAX]]), [[EAX:%e.x]]
   4564 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4)
   4565 ; DARWIN-32-PIC-NEXT: 	ret
   4566 
   4567 ; DARWIN-64-STATIC: _big05:
   4568 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   4569 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4570 ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   4571 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4572 ; DARWIN-64-STATIC-NEXT: 	ret
   4573 
   4574 ; DARWIN-64-DYNAMIC: _big05:
   4575 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   4576 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4577 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   4578 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4579 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4580 
   4581 ; DARWIN-64-PIC: _big05:
   4582 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   4583 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4584 ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]]
   4585 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4586 ; DARWIN-64-PIC-NEXT: 	ret
   4587 }
   4588 
   4589 define void @big06(i64 %i) nounwind {
   4590 entry:
   4591 	%0 = add i64 %i, 65536
   4592 	%1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
   4593 	%2 = load i32* %1, align 4
   4594 	%3 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
   4595 	store i32 %2, i32* %3, align 4
   4596 	ret void
   4597 ; LINUX-64-STATIC: big06:
   4598 ; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), [[EAX:%e.x]]
   4599 ; LINUX-64-STATIC: movl    [[EAX]], ldst+262144(,%rdi,4)
   4600 ; LINUX-64-STATIC: ret
   4601 
   4602 ; LINUX-32-STATIC: big06:
   4603 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4604 ; LINUX-32-STATIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4605 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ldst+262144(,[[EAX]],4)
   4606 ; LINUX-32-STATIC-NEXT: 	ret
   4607 
   4608 ; LINUX-32-PIC: big06:
   4609 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4610 ; LINUX-32-PIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4611 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ldst+262144(,[[EAX]],4)
   4612 ; LINUX-32-PIC-NEXT: 	ret
   4613 
   4614 ; LINUX-64-PIC: big06:
   4615 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   4616 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4617 ; LINUX-64-PIC-NEXT: 	leaq	ldst(%rip), [[RCX:%r.x]]
   4618 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4619 ; LINUX-64-PIC-NEXT: 	ret
   4620 
   4621 ; DARWIN-32-STATIC: _big06:
   4622 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4623 ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4624 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ldst+262144(,[[EAX]],4)
   4625 ; DARWIN-32-STATIC-NEXT: 	ret
   4626 
   4627 ; DARWIN-32-DYNAMIC: _big06:
   4628 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4629 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4630 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ldst+262144(,[[EAX]],4)
   4631 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4632 
   4633 ; DARWIN-32-PIC: _big06:
   4634 ; DARWIN-32-PIC: 	calll	L63$pb
   4635 ; DARWIN-32-PIC-NEXT: L63$pb:
   4636 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4637 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4638 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L63$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   4639 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ldst-L63$pb)+262144([[EAX]],[[ECX]],4)
   4640 ; DARWIN-32-PIC-NEXT: 	ret
   4641 
   4642 ; DARWIN-64-STATIC: _big06:
   4643 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   4644 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4645 ; DARWIN-64-STATIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   4646 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4647 ; DARWIN-64-STATIC-NEXT: 	ret
   4648 
   4649 ; DARWIN-64-DYNAMIC: _big06:
   4650 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   4651 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4652 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   4653 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4654 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4655 
   4656 ; DARWIN-64-PIC: _big06:
   4657 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   4658 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4659 ; DARWIN-64-PIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]]
   4660 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4661 ; DARWIN-64-PIC-NEXT: 	ret
   4662 }
   4663 
   4664 define void @big07(i64 %i) nounwind {
   4665 entry:
   4666 	%.sum = add i64 %i, 65536
   4667 	%0 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %.sum
   4668 	store i32* %0, i32** @lptr, align 8
   4669 	ret void
   4670 ; LINUX-64-STATIC: big07:
   4671 ; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), [[RAX:%r.x]]
   4672 ; LINUX-64-STATIC: movq    [[RAX]], lptr
   4673 ; LINUX-64-STATIC: ret
   4674 
   4675 ; LINUX-32-STATIC: big07:
   4676 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4677 ; LINUX-32-STATIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4678 ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], lptr
   4679 ; LINUX-32-STATIC-NEXT: 	ret
   4680 
   4681 ; LINUX-32-PIC: big07:
   4682 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4683 ; LINUX-32-PIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4684 ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], lptr
   4685 ; LINUX-32-PIC-NEXT: 	ret
   4686 
   4687 ; LINUX-64-PIC: big07:
   4688 ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]]
   4689 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4690 ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip)
   4691 ; LINUX-64-PIC-NEXT: 	ret
   4692 
   4693 ; DARWIN-32-STATIC: _big07:
   4694 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4695 ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4696 ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _lptr
   4697 ; DARWIN-32-STATIC-NEXT: 	ret
   4698 
   4699 ; DARWIN-32-DYNAMIC: _big07:
   4700 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4701 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), [[EAX:%e.x]]
   4702 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _lptr
   4703 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4704 
   4705 ; DARWIN-32-PIC: _big07:
   4706 ; DARWIN-32-PIC: 	calll	L64$pb
   4707 ; DARWIN-32-PIC-NEXT: L64$pb:
   4708 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4709 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4710 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L64$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]]
   4711 ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L64$pb([[EAX]])
   4712 ; DARWIN-32-PIC-NEXT: 	ret
   4713 
   4714 ; DARWIN-64-STATIC: _big07:
   4715 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   4716 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4717 ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   4718 ; DARWIN-64-STATIC-NEXT: 	ret
   4719 
   4720 ; DARWIN-64-DYNAMIC: _big07:
   4721 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   4722 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4723 ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   4724 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4725 
   4726 ; DARWIN-64-PIC: _big07:
   4727 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   4728 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]]
   4729 ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip)
   4730 ; DARWIN-64-PIC-NEXT: 	ret
   4731 }
   4732 
   4733 define void @big08(i64 %i) nounwind {
   4734 entry:
   4735 	%0 = load i32** @lptr, align 8
   4736 	%1 = add i64 %i, 65536
   4737 	%2 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %1
   4738 	%3 = load i32* %2, align 4
   4739 	%4 = getelementptr i32* %0, i64 %1
   4740 	store i32 %3, i32* %4, align 4
   4741 	ret void
   4742 ; LINUX-64-STATIC: big08:
   4743 ; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), [[EAX:%e.x]]
   4744 ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]]
   4745 ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4)
   4746 ; LINUX-64-STATIC: ret
   4747 
   4748 ; LINUX-32-STATIC: big08:
   4749 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4750 ; LINUX-32-STATIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4751 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[EDX:%e.x]]
   4752 ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4753 ; LINUX-32-STATIC-NEXT: 	ret
   4754 
   4755 ; LINUX-32-PIC: big08:
   4756 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   4757 ; LINUX-32-PIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4758 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[EDX:%e.x]]
   4759 ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4760 ; LINUX-32-PIC-NEXT: 	ret
   4761 
   4762 ; LINUX-64-PIC: big08:
   4763 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   4764 ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4765 ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]]
   4766 ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4767 ; LINUX-64-PIC-NEXT: 	ret
   4768 
   4769 ; DARWIN-32-STATIC: _big08:
   4770 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   4771 ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4772 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[EDX:%e.x]]
   4773 ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4774 ; DARWIN-32-STATIC-NEXT: 	ret
   4775 
   4776 ; DARWIN-32-DYNAMIC: _big08:
   4777 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   4778 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]]
   4779 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[EDX:%e.x]]
   4780 ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4)
   4781 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4782 
   4783 ; DARWIN-32-PIC: _big08:
   4784 ; DARWIN-32-PIC: 	calll	L65$pb
   4785 ; DARWIN-32-PIC-NEXT: L65$pb:
   4786 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4787 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   4788 ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L65$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]]
   4789 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L65$pb([[EAX]]), [[EAX:%e.x]]
   4790 ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4)
   4791 ; DARWIN-32-PIC-NEXT: 	ret
   4792 
   4793 ; DARWIN-64-STATIC: _big08:
   4794 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   4795 ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4796 ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   4797 ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4798 ; DARWIN-64-STATIC-NEXT: 	ret
   4799 
   4800 ; DARWIN-64-DYNAMIC: _big08:
   4801 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   4802 ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4803 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   4804 ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4805 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4806 
   4807 ; DARWIN-64-PIC: _big08:
   4808 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   4809 ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]]
   4810 ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]]
   4811 ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4)
   4812 ; DARWIN-64-PIC-NEXT: 	ret
   4813 }
   4814 
   4815 define i8* @bar00() nounwind {
   4816 entry:
   4817 	ret i8* bitcast ([131072 x i32]* @src to i8*)
   4818 ; LINUX-64-STATIC: bar00:
   4819 ; LINUX-64-STATIC: movl    $src, %eax
   4820 ; LINUX-64-STATIC: ret
   4821 
   4822 ; LINUX-32-STATIC: bar00:
   4823 ; LINUX-32-STATIC: 	movl	$src, %eax
   4824 ; LINUX-32-STATIC-NEXT: 	ret
   4825 
   4826 ; LINUX-32-PIC: bar00:
   4827 ; LINUX-32-PIC: 	movl	$src, %eax
   4828 ; LINUX-32-PIC-NEXT: 	ret
   4829 
   4830 ; LINUX-64-PIC: bar00:
   4831 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), %rax
   4832 ; LINUX-64-PIC-NEXT: 	ret
   4833 
   4834 ; DARWIN-32-STATIC: _bar00:
   4835 ; DARWIN-32-STATIC: 	movl	$_src, %eax
   4836 ; DARWIN-32-STATIC-NEXT: 	ret
   4837 
   4838 ; DARWIN-32-DYNAMIC: _bar00:
   4839 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, %eax
   4840 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4841 
   4842 ; DARWIN-32-PIC: _bar00:
   4843 ; DARWIN-32-PIC: 	calll	L66$pb
   4844 ; DARWIN-32-PIC-NEXT: L66$pb:
   4845 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4846 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L66$pb([[EAX]]), %eax
   4847 ; DARWIN-32-PIC-NEXT: 	ret
   4848 
   4849 ; DARWIN-64-STATIC: _bar00:
   4850 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), %rax
   4851 ; DARWIN-64-STATIC-NEXT: 	ret
   4852 
   4853 ; DARWIN-64-DYNAMIC: _bar00:
   4854 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), %rax
   4855 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4856 
   4857 ; DARWIN-64-PIC: _bar00:
   4858 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), %rax
   4859 ; DARWIN-64-PIC-NEXT: 	ret
   4860 }
   4861 
   4862 define i8* @bxr00() nounwind {
   4863 entry:
   4864 	ret i8* bitcast ([32 x i32]* @xsrc to i8*)
   4865 ; LINUX-64-STATIC: bxr00:
   4866 ; LINUX-64-STATIC: movl    $xsrc, %eax
   4867 ; LINUX-64-STATIC: ret
   4868 
   4869 ; LINUX-32-STATIC: bxr00:
   4870 ; LINUX-32-STATIC: 	movl	$xsrc, %eax
   4871 ; LINUX-32-STATIC-NEXT: 	ret
   4872 
   4873 ; LINUX-32-PIC: bxr00:
   4874 ; LINUX-32-PIC: 	movl	$xsrc, %eax
   4875 ; LINUX-32-PIC-NEXT: 	ret
   4876 
   4877 ; LINUX-64-PIC: bxr00:
   4878 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), %rax
   4879 ; LINUX-64-PIC-NEXT: 	ret
   4880 
   4881 ; DARWIN-32-STATIC: _bxr00:
   4882 ; DARWIN-32-STATIC: 	movl	$_xsrc, %eax
   4883 ; DARWIN-32-STATIC-NEXT: 	ret
   4884 
   4885 ; DARWIN-32-DYNAMIC: _bxr00:
   4886 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, %eax
   4887 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4888 
   4889 ; DARWIN-32-PIC: _bxr00:
   4890 ; DARWIN-32-PIC: 	calll	L67$pb
   4891 ; DARWIN-32-PIC-NEXT: L67$pb:
   4892 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4893 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L67$pb([[EAX]]), %eax
   4894 ; DARWIN-32-PIC-NEXT: 	ret
   4895 
   4896 ; DARWIN-64-STATIC: _bxr00:
   4897 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   4898 ; DARWIN-64-STATIC-NEXT: 	ret
   4899 
   4900 ; DARWIN-64-DYNAMIC: _bxr00:
   4901 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   4902 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4903 
   4904 ; DARWIN-64-PIC: _bxr00:
   4905 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   4906 ; DARWIN-64-PIC-NEXT: 	ret
   4907 }
   4908 
   4909 define i8* @bar01() nounwind {
   4910 entry:
   4911 	ret i8* bitcast ([131072 x i32]* @dst to i8*)
   4912 ; LINUX-64-STATIC: bar01:
   4913 ; LINUX-64-STATIC: movl    $dst, %eax
   4914 ; LINUX-64-STATIC: ret
   4915 
   4916 ; LINUX-32-STATIC: bar01:
   4917 ; LINUX-32-STATIC: 	movl	$dst, %eax
   4918 ; LINUX-32-STATIC-NEXT: 	ret
   4919 
   4920 ; LINUX-32-PIC: bar01:
   4921 ; LINUX-32-PIC: 	movl	$dst, %eax
   4922 ; LINUX-32-PIC-NEXT: 	ret
   4923 
   4924 ; LINUX-64-PIC: bar01:
   4925 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), %rax
   4926 ; LINUX-64-PIC-NEXT: 	ret
   4927 
   4928 ; DARWIN-32-STATIC: _bar01:
   4929 ; DARWIN-32-STATIC: 	movl	$_dst, %eax
   4930 ; DARWIN-32-STATIC-NEXT: 	ret
   4931 
   4932 ; DARWIN-32-DYNAMIC: _bar01:
   4933 ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, %eax
   4934 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4935 
   4936 ; DARWIN-32-PIC: _bar01:
   4937 ; DARWIN-32-PIC: 	calll	L68$pb
   4938 ; DARWIN-32-PIC-NEXT: L68$pb:
   4939 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4940 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L68$pb([[EAX]]), %eax
   4941 ; DARWIN-32-PIC-NEXT: 	ret
   4942 
   4943 ; DARWIN-64-STATIC: _bar01:
   4944 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), %rax
   4945 ; DARWIN-64-STATIC-NEXT: 	ret
   4946 
   4947 ; DARWIN-64-DYNAMIC: _bar01:
   4948 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), %rax
   4949 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4950 
   4951 ; DARWIN-64-PIC: _bar01:
   4952 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), %rax
   4953 ; DARWIN-64-PIC-NEXT: 	ret
   4954 }
   4955 
   4956 define i8* @bxr01() nounwind {
   4957 entry:
   4958 	ret i8* bitcast ([32 x i32]* @xdst to i8*)
   4959 ; LINUX-64-STATIC: bxr01:
   4960 ; LINUX-64-STATIC: movl    $xdst, %eax
   4961 ; LINUX-64-STATIC: ret
   4962 
   4963 ; LINUX-32-STATIC: bxr01:
   4964 ; LINUX-32-STATIC: 	movl	$xdst, %eax
   4965 ; LINUX-32-STATIC-NEXT: 	ret
   4966 
   4967 ; LINUX-32-PIC: bxr01:
   4968 ; LINUX-32-PIC: 	movl	$xdst, %eax
   4969 ; LINUX-32-PIC-NEXT: 	ret
   4970 
   4971 ; LINUX-64-PIC: bxr01:
   4972 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), %rax
   4973 ; LINUX-64-PIC-NEXT: 	ret
   4974 
   4975 ; DARWIN-32-STATIC: _bxr01:
   4976 ; DARWIN-32-STATIC: 	movl	$_xdst, %eax
   4977 ; DARWIN-32-STATIC-NEXT: 	ret
   4978 
   4979 ; DARWIN-32-DYNAMIC: _bxr01:
   4980 ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, %eax
   4981 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   4982 
   4983 ; DARWIN-32-PIC: _bxr01:
   4984 ; DARWIN-32-PIC: 	calll	L69$pb
   4985 ; DARWIN-32-PIC-NEXT: L69$pb:
   4986 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   4987 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L69$pb([[EAX]]), %eax
   4988 ; DARWIN-32-PIC-NEXT: 	ret
   4989 
   4990 ; DARWIN-64-STATIC: _bxr01:
   4991 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   4992 ; DARWIN-64-STATIC-NEXT: 	ret
   4993 
   4994 ; DARWIN-64-DYNAMIC: _bxr01:
   4995 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   4996 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   4997 
   4998 ; DARWIN-64-PIC: _bxr01:
   4999 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   5000 ; DARWIN-64-PIC-NEXT: 	ret
   5001 }
   5002 
   5003 define i8* @bar02() nounwind {
   5004 entry:
   5005 	ret i8* bitcast (i32** @ptr to i8*)
   5006 ; LINUX-64-STATIC: bar02:
   5007 ; LINUX-64-STATIC: movl    $ptr, %eax
   5008 ; LINUX-64-STATIC: ret
   5009 
   5010 ; LINUX-32-STATIC: bar02:
   5011 ; LINUX-32-STATIC: 	movl	$ptr, %eax
   5012 ; LINUX-32-STATIC-NEXT: 	ret
   5013 
   5014 ; LINUX-32-PIC: bar02:
   5015 ; LINUX-32-PIC: 	movl	$ptr, %eax
   5016 ; LINUX-32-PIC-NEXT: 	ret
   5017 
   5018 ; LINUX-64-PIC: bar02:
   5019 ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), %rax
   5020 ; LINUX-64-PIC-NEXT: 	ret
   5021 
   5022 ; DARWIN-32-STATIC: _bar02:
   5023 ; DARWIN-32-STATIC: 	movl	$_ptr, %eax
   5024 ; DARWIN-32-STATIC-NEXT: 	ret
   5025 
   5026 ; DARWIN-32-DYNAMIC: _bar02:
   5027 ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, %eax
   5028 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5029 
   5030 ; DARWIN-32-PIC: _bar02:
   5031 ; DARWIN-32-PIC: 	calll	L70$pb
   5032 ; DARWIN-32-PIC-NEXT: L70$pb:
   5033 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5034 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L70$pb([[EAX]]), %eax
   5035 ; DARWIN-32-PIC-NEXT: 	ret
   5036 
   5037 ; DARWIN-64-STATIC: _bar02:
   5038 ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), %rax
   5039 ; DARWIN-64-STATIC-NEXT: 	ret
   5040 
   5041 ; DARWIN-64-DYNAMIC: _bar02:
   5042 ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), %rax
   5043 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5044 
   5045 ; DARWIN-64-PIC: _bar02:
   5046 ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), %rax
   5047 ; DARWIN-64-PIC-NEXT: 	ret
   5048 }
   5049 
   5050 define i8* @bar03() nounwind {
   5051 entry:
   5052 	ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
   5053 ; LINUX-64-STATIC: bar03:
   5054 ; LINUX-64-STATIC: movl    $dsrc, %eax
   5055 ; LINUX-64-STATIC: ret
   5056 
   5057 ; LINUX-32-STATIC: bar03:
   5058 ; LINUX-32-STATIC: 	movl	$dsrc, %eax
   5059 ; LINUX-32-STATIC-NEXT: 	ret
   5060 
   5061 ; LINUX-32-PIC: bar03:
   5062 ; LINUX-32-PIC: 	movl	$dsrc, %eax
   5063 ; LINUX-32-PIC-NEXT: 	ret
   5064 
   5065 ; LINUX-64-PIC: bar03:
   5066 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), %rax
   5067 ; LINUX-64-PIC-NEXT: 	ret
   5068 
   5069 ; DARWIN-32-STATIC: _bar03:
   5070 ; DARWIN-32-STATIC: 	movl	$_dsrc, %eax
   5071 ; DARWIN-32-STATIC-NEXT: 	ret
   5072 
   5073 ; DARWIN-32-DYNAMIC: _bar03:
   5074 ; DARWIN-32-DYNAMIC: 	movl	$_dsrc, %eax
   5075 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5076 
   5077 ; DARWIN-32-PIC: _bar03:
   5078 ; DARWIN-32-PIC: 	calll	L71$pb
   5079 ; DARWIN-32-PIC-NEXT: L71$pb:
   5080 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5081 ; DARWIN-32-PIC-NEXT: 	leal	_dsrc-L71$pb([[EAX]]), %eax
   5082 ; DARWIN-32-PIC-NEXT: 	ret
   5083 
   5084 ; DARWIN-64-STATIC: _bar03:
   5085 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), %rax
   5086 ; DARWIN-64-STATIC-NEXT: 	ret
   5087 
   5088 ; DARWIN-64-DYNAMIC: _bar03:
   5089 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), %rax
   5090 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5091 
   5092 ; DARWIN-64-PIC: _bar03:
   5093 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), %rax
   5094 ; DARWIN-64-PIC-NEXT: 	ret
   5095 }
   5096 
   5097 define i8* @bar04() nounwind {
   5098 entry:
   5099 	ret i8* bitcast ([131072 x i32]* @ddst to i8*)
   5100 ; LINUX-64-STATIC: bar04:
   5101 ; LINUX-64-STATIC: movl    $ddst, %eax
   5102 ; LINUX-64-STATIC: ret
   5103 
   5104 ; LINUX-32-STATIC: bar04:
   5105 ; LINUX-32-STATIC: 	movl	$ddst, %eax
   5106 ; LINUX-32-STATIC-NEXT: 	ret
   5107 
   5108 ; LINUX-32-PIC: bar04:
   5109 ; LINUX-32-PIC: 	movl	$ddst, %eax
   5110 ; LINUX-32-PIC-NEXT: 	ret
   5111 
   5112 ; LINUX-64-PIC: bar04:
   5113 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), %rax
   5114 ; LINUX-64-PIC-NEXT: 	ret
   5115 
   5116 ; DARWIN-32-STATIC: _bar04:
   5117 ; DARWIN-32-STATIC: 	movl	$_ddst, %eax
   5118 ; DARWIN-32-STATIC-NEXT: 	ret
   5119 
   5120 ; DARWIN-32-DYNAMIC: _bar04:
   5121 ; DARWIN-32-DYNAMIC: 	movl	$_ddst, %eax
   5122 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5123 
   5124 ; DARWIN-32-PIC: _bar04:
   5125 ; DARWIN-32-PIC: 	calll	L72$pb
   5126 ; DARWIN-32-PIC-NEXT: L72$pb:
   5127 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5128 ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L72$pb([[EAX]]), %eax
   5129 ; DARWIN-32-PIC-NEXT: 	ret
   5130 
   5131 ; DARWIN-64-STATIC: _bar04:
   5132 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), %rax
   5133 ; DARWIN-64-STATIC-NEXT: 	ret
   5134 
   5135 ; DARWIN-64-DYNAMIC: _bar04:
   5136 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), %rax
   5137 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5138 
   5139 ; DARWIN-64-PIC: _bar04:
   5140 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), %rax
   5141 ; DARWIN-64-PIC-NEXT: 	ret
   5142 }
   5143 
   5144 define i8* @bar05() nounwind {
   5145 entry:
   5146 	ret i8* bitcast (i32** @dptr to i8*)
   5147 ; LINUX-64-STATIC: bar05:
   5148 ; LINUX-64-STATIC: movl    $dptr, %eax
   5149 ; LINUX-64-STATIC: ret
   5150 
   5151 ; LINUX-32-STATIC: bar05:
   5152 ; LINUX-32-STATIC: 	movl	$dptr, %eax
   5153 ; LINUX-32-STATIC-NEXT: 	ret
   5154 
   5155 ; LINUX-32-PIC: bar05:
   5156 ; LINUX-32-PIC: 	movl	$dptr, %eax
   5157 ; LINUX-32-PIC-NEXT: 	ret
   5158 
   5159 ; LINUX-64-PIC: bar05:
   5160 ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), %rax
   5161 ; LINUX-64-PIC-NEXT: 	ret
   5162 
   5163 ; DARWIN-32-STATIC: _bar05:
   5164 ; DARWIN-32-STATIC: 	movl	$_dptr, %eax
   5165 ; DARWIN-32-STATIC-NEXT: 	ret
   5166 
   5167 ; DARWIN-32-DYNAMIC: _bar05:
   5168 ; DARWIN-32-DYNAMIC: 	movl	$_dptr, %eax
   5169 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5170 
   5171 ; DARWIN-32-PIC: _bar05:
   5172 ; DARWIN-32-PIC: 	calll	L73$pb
   5173 ; DARWIN-32-PIC-NEXT: L73$pb:
   5174 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5175 ; DARWIN-32-PIC-NEXT: 	leal	_dptr-L73$pb([[EAX]]), %eax
   5176 ; DARWIN-32-PIC-NEXT: 	ret
   5177 
   5178 ; DARWIN-64-STATIC: _bar05:
   5179 ; DARWIN-64-STATIC: 	leaq	_dptr(%rip), %rax
   5180 ; DARWIN-64-STATIC-NEXT: 	ret
   5181 
   5182 ; DARWIN-64-DYNAMIC: _bar05:
   5183 ; DARWIN-64-DYNAMIC: 	leaq	_dptr(%rip), %rax
   5184 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5185 
   5186 ; DARWIN-64-PIC: _bar05:
   5187 ; DARWIN-64-PIC: 	leaq	_dptr(%rip), %rax
   5188 ; DARWIN-64-PIC-NEXT: 	ret
   5189 }
   5190 
   5191 define i8* @bar06() nounwind {
   5192 entry:
   5193 	ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
   5194 ; LINUX-64-STATIC: bar06:
   5195 ; LINUX-64-STATIC: movl    $lsrc, %eax
   5196 ; LINUX-64-STATIC: ret
   5197 
   5198 ; LINUX-32-STATIC: bar06:
   5199 ; LINUX-32-STATIC: 	movl	$lsrc, %eax
   5200 ; LINUX-32-STATIC-NEXT: 	ret
   5201 
   5202 ; LINUX-32-PIC: bar06:
   5203 ; LINUX-32-PIC: 	movl	$lsrc, %eax
   5204 ; LINUX-32-PIC-NEXT: 	ret
   5205 
   5206 ; LINUX-64-PIC: bar06:
   5207 ; LINUX-64-PIC: 	leaq	lsrc(%rip), %rax
   5208 ; LINUX-64-PIC-NEXT: 	ret
   5209 
   5210 ; DARWIN-32-STATIC: _bar06:
   5211 ; DARWIN-32-STATIC: 	movl	$_lsrc, %eax
   5212 ; DARWIN-32-STATIC-NEXT: 	ret
   5213 
   5214 ; DARWIN-32-DYNAMIC: _bar06:
   5215 ; DARWIN-32-DYNAMIC: 	movl	$_lsrc, %eax
   5216 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5217 
   5218 ; DARWIN-32-PIC: _bar06:
   5219 ; DARWIN-32-PIC: 	calll	L74$pb
   5220 ; DARWIN-32-PIC-NEXT: L74$pb:
   5221 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5222 ; DARWIN-32-PIC-NEXT: 	leal	_lsrc-L74$pb([[EAX]]), %eax
   5223 ; DARWIN-32-PIC-NEXT: 	ret
   5224 
   5225 ; DARWIN-64-STATIC: _bar06:
   5226 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), %rax
   5227 ; DARWIN-64-STATIC-NEXT: 	ret
   5228 
   5229 ; DARWIN-64-DYNAMIC: _bar06:
   5230 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), %rax
   5231 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5232 
   5233 ; DARWIN-64-PIC: _bar06:
   5234 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), %rax
   5235 ; DARWIN-64-PIC-NEXT: 	ret
   5236 }
   5237 
   5238 define i8* @bar07() nounwind {
   5239 entry:
   5240 	ret i8* bitcast ([131072 x i32]* @ldst to i8*)
   5241 ; LINUX-64-STATIC: bar07:
   5242 ; LINUX-64-STATIC: movl    $ldst, %eax
   5243 ; LINUX-64-STATIC: ret
   5244 
   5245 ; LINUX-32-STATIC: bar07:
   5246 ; LINUX-32-STATIC: 	movl	$ldst, %eax
   5247 ; LINUX-32-STATIC-NEXT: 	ret
   5248 
   5249 ; LINUX-32-PIC: bar07:
   5250 ; LINUX-32-PIC: 	movl	$ldst, %eax
   5251 ; LINUX-32-PIC-NEXT: 	ret
   5252 
   5253 ; LINUX-64-PIC: bar07:
   5254 ; LINUX-64-PIC: 	leaq	ldst(%rip), %rax
   5255 ; LINUX-64-PIC-NEXT: 	ret
   5256 
   5257 ; DARWIN-32-STATIC: _bar07:
   5258 ; DARWIN-32-STATIC: 	movl	$_ldst, %eax
   5259 ; DARWIN-32-STATIC-NEXT: 	ret
   5260 
   5261 ; DARWIN-32-DYNAMIC: _bar07:
   5262 ; DARWIN-32-DYNAMIC: 	movl	$_ldst, %eax
   5263 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5264 
   5265 ; DARWIN-32-PIC: _bar07:
   5266 ; DARWIN-32-PIC: 	calll	L75$pb
   5267 ; DARWIN-32-PIC-NEXT: L75$pb:
   5268 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5269 ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L75$pb([[EAX]]), %eax
   5270 ; DARWIN-32-PIC-NEXT: 	ret
   5271 
   5272 ; DARWIN-64-STATIC: _bar07:
   5273 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), %rax
   5274 ; DARWIN-64-STATIC-NEXT: 	ret
   5275 
   5276 ; DARWIN-64-DYNAMIC: _bar07:
   5277 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), %rax
   5278 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5279 
   5280 ; DARWIN-64-PIC: _bar07:
   5281 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), %rax
   5282 ; DARWIN-64-PIC-NEXT: 	ret
   5283 }
   5284 
   5285 define i8* @bar08() nounwind {
   5286 entry:
   5287 	ret i8* bitcast (i32** @lptr to i8*)
   5288 ; LINUX-64-STATIC: bar08:
   5289 ; LINUX-64-STATIC: movl    $lptr, %eax
   5290 ; LINUX-64-STATIC: ret
   5291 
   5292 ; LINUX-32-STATIC: bar08:
   5293 ; LINUX-32-STATIC: 	movl	$lptr, %eax
   5294 ; LINUX-32-STATIC-NEXT: 	ret
   5295 
   5296 ; LINUX-32-PIC: bar08:
   5297 ; LINUX-32-PIC: 	movl	$lptr, %eax
   5298 ; LINUX-32-PIC-NEXT: 	ret
   5299 
   5300 ; LINUX-64-PIC: bar08:
   5301 ; LINUX-64-PIC: 	leaq	lptr(%rip), %rax
   5302 ; LINUX-64-PIC-NEXT: 	ret
   5303 
   5304 ; DARWIN-32-STATIC: _bar08:
   5305 ; DARWIN-32-STATIC: 	movl	$_lptr, %eax
   5306 ; DARWIN-32-STATIC-NEXT: 	ret
   5307 
   5308 ; DARWIN-32-DYNAMIC: _bar08:
   5309 ; DARWIN-32-DYNAMIC: 	movl	$_lptr, %eax
   5310 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5311 
   5312 ; DARWIN-32-PIC: _bar08:
   5313 ; DARWIN-32-PIC: 	calll	L76$pb
   5314 ; DARWIN-32-PIC-NEXT: L76$pb:
   5315 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5316 ; DARWIN-32-PIC-NEXT: 	leal	_lptr-L76$pb([[EAX]]), %eax
   5317 ; DARWIN-32-PIC-NEXT: 	ret
   5318 
   5319 ; DARWIN-64-STATIC: _bar08:
   5320 ; DARWIN-64-STATIC: 	leaq	_lptr(%rip), %rax
   5321 ; DARWIN-64-STATIC-NEXT: 	ret
   5322 
   5323 ; DARWIN-64-DYNAMIC: _bar08:
   5324 ; DARWIN-64-DYNAMIC: 	leaq	_lptr(%rip), %rax
   5325 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5326 
   5327 ; DARWIN-64-PIC: _bar08:
   5328 ; DARWIN-64-PIC: 	leaq	_lptr(%rip), %rax
   5329 ; DARWIN-64-PIC-NEXT: 	ret
   5330 }
   5331 
   5332 define i8* @har00() nounwind {
   5333 entry:
   5334 	ret i8* bitcast ([131072 x i32]* @src to i8*)
   5335 ; LINUX-64-STATIC: har00:
   5336 ; LINUX-64-STATIC: movl    $src, %eax
   5337 ; LINUX-64-STATIC: ret
   5338 
   5339 ; LINUX-32-STATIC: har00:
   5340 ; LINUX-32-STATIC: 	movl	$src, %eax
   5341 ; LINUX-32-STATIC-NEXT: 	ret
   5342 
   5343 ; LINUX-32-PIC: har00:
   5344 ; LINUX-32-PIC: 	movl	$src, %eax
   5345 ; LINUX-32-PIC-NEXT: 	ret
   5346 
   5347 ; LINUX-64-PIC: har00:
   5348 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), %rax
   5349 ; LINUX-64-PIC-NEXT: 	ret
   5350 
   5351 ; DARWIN-32-STATIC: _har00:
   5352 ; DARWIN-32-STATIC: 	movl	$_src, %eax
   5353 ; DARWIN-32-STATIC-NEXT: 	ret
   5354 
   5355 ; DARWIN-32-DYNAMIC: _har00:
   5356 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, %eax
   5357 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5358 
   5359 ; DARWIN-32-PIC: _har00:
   5360 ; DARWIN-32-PIC: 	calll	L77$pb
   5361 ; DARWIN-32-PIC-NEXT: L77$pb:
   5362 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5363 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L77$pb([[EAX]]), %eax
   5364 ; DARWIN-32-PIC-NEXT: 	ret
   5365 
   5366 ; DARWIN-64-STATIC: _har00:
   5367 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), %rax
   5368 ; DARWIN-64-STATIC-NEXT: 	ret
   5369 
   5370 ; DARWIN-64-DYNAMIC: _har00:
   5371 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), %rax
   5372 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5373 
   5374 ; DARWIN-64-PIC: _har00:
   5375 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), %rax
   5376 ; DARWIN-64-PIC-NEXT: 	ret
   5377 }
   5378 
   5379 define i8* @hxr00() nounwind {
   5380 entry:
   5381 	ret i8* bitcast ([32 x i32]* @xsrc to i8*)
   5382 ; LINUX-64-STATIC: hxr00:
   5383 ; LINUX-64-STATIC: movl    $xsrc, %eax
   5384 ; LINUX-64-STATIC: ret
   5385 
   5386 ; LINUX-32-STATIC: hxr00:
   5387 ; LINUX-32-STATIC: 	movl	$xsrc, %eax
   5388 ; LINUX-32-STATIC-NEXT: 	ret
   5389 
   5390 ; LINUX-32-PIC: hxr00:
   5391 ; LINUX-32-PIC: 	movl	$xsrc, %eax
   5392 ; LINUX-32-PIC-NEXT: 	ret
   5393 
   5394 ; LINUX-64-PIC: hxr00:
   5395 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), %rax
   5396 ; LINUX-64-PIC-NEXT: 	ret
   5397 
   5398 ; DARWIN-32-STATIC: _hxr00:
   5399 ; DARWIN-32-STATIC: 	movl	$_xsrc, %eax
   5400 ; DARWIN-32-STATIC-NEXT: 	ret
   5401 
   5402 ; DARWIN-32-DYNAMIC: _hxr00:
   5403 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, %eax
   5404 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5405 
   5406 ; DARWIN-32-PIC: _hxr00:
   5407 ; DARWIN-32-PIC: 	calll	L78$pb
   5408 ; DARWIN-32-PIC-NEXT: L78$pb:
   5409 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5410 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L78$pb([[EAX]]), %eax
   5411 ; DARWIN-32-PIC-NEXT: 	ret
   5412 
   5413 ; DARWIN-64-STATIC: _hxr00:
   5414 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   5415 ; DARWIN-64-STATIC-NEXT: 	ret
   5416 
   5417 ; DARWIN-64-DYNAMIC: _hxr00:
   5418 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   5419 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5420 
   5421 ; DARWIN-64-PIC: _hxr00:
   5422 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   5423 ; DARWIN-64-PIC-NEXT: 	ret
   5424 }
   5425 
   5426 define i8* @har01() nounwind {
   5427 entry:
   5428 	ret i8* bitcast ([131072 x i32]* @dst to i8*)
   5429 ; LINUX-64-STATIC: har01:
   5430 ; LINUX-64-STATIC: movl    $dst, %eax
   5431 ; LINUX-64-STATIC: ret
   5432 
   5433 ; LINUX-32-STATIC: har01:
   5434 ; LINUX-32-STATIC: 	movl	$dst, %eax
   5435 ; LINUX-32-STATIC-NEXT: 	ret
   5436 
   5437 ; LINUX-32-PIC: har01:
   5438 ; LINUX-32-PIC: 	movl	$dst, %eax
   5439 ; LINUX-32-PIC-NEXT: 	ret
   5440 
   5441 ; LINUX-64-PIC: har01:
   5442 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), %rax
   5443 ; LINUX-64-PIC-NEXT: 	ret
   5444 
   5445 ; DARWIN-32-STATIC: _har01:
   5446 ; DARWIN-32-STATIC: 	movl	$_dst, %eax
   5447 ; DARWIN-32-STATIC-NEXT: 	ret
   5448 
   5449 ; DARWIN-32-DYNAMIC: _har01:
   5450 ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, %eax
   5451 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5452 
   5453 ; DARWIN-32-PIC: _har01:
   5454 ; DARWIN-32-PIC: 	calll	L79$pb
   5455 ; DARWIN-32-PIC-NEXT: L79$pb:
   5456 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5457 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L79$pb([[EAX]]), %eax
   5458 ; DARWIN-32-PIC-NEXT: 	ret
   5459 
   5460 ; DARWIN-64-STATIC: _har01:
   5461 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), %rax
   5462 ; DARWIN-64-STATIC-NEXT: 	ret
   5463 
   5464 ; DARWIN-64-DYNAMIC: _har01:
   5465 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), %rax
   5466 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5467 
   5468 ; DARWIN-64-PIC: _har01:
   5469 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), %rax
   5470 ; DARWIN-64-PIC-NEXT: 	ret
   5471 }
   5472 
   5473 define i8* @hxr01() nounwind {
   5474 entry:
   5475 	ret i8* bitcast ([32 x i32]* @xdst to i8*)
   5476 ; LINUX-64-STATIC: hxr01:
   5477 ; LINUX-64-STATIC: movl    $xdst, %eax
   5478 ; LINUX-64-STATIC: ret
   5479 
   5480 ; LINUX-32-STATIC: hxr01:
   5481 ; LINUX-32-STATIC: 	movl	$xdst, %eax
   5482 ; LINUX-32-STATIC-NEXT: 	ret
   5483 
   5484 ; LINUX-32-PIC: hxr01:
   5485 ; LINUX-32-PIC: 	movl	$xdst, %eax
   5486 ; LINUX-32-PIC-NEXT: 	ret
   5487 
   5488 ; LINUX-64-PIC: hxr01:
   5489 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), %rax
   5490 ; LINUX-64-PIC-NEXT: 	ret
   5491 
   5492 ; DARWIN-32-STATIC: _hxr01:
   5493 ; DARWIN-32-STATIC: 	movl	$_xdst, %eax
   5494 ; DARWIN-32-STATIC-NEXT: 	ret
   5495 
   5496 ; DARWIN-32-DYNAMIC: _hxr01:
   5497 ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, %eax
   5498 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5499 
   5500 ; DARWIN-32-PIC: _hxr01:
   5501 ; DARWIN-32-PIC: 	calll	L80$pb
   5502 ; DARWIN-32-PIC-NEXT: L80$pb:
   5503 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5504 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L80$pb([[EAX]]), %eax
   5505 ; DARWIN-32-PIC-NEXT: 	ret
   5506 
   5507 ; DARWIN-64-STATIC: _hxr01:
   5508 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   5509 ; DARWIN-64-STATIC-NEXT: 	ret
   5510 
   5511 ; DARWIN-64-DYNAMIC: _hxr01:
   5512 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   5513 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5514 
   5515 ; DARWIN-64-PIC: _hxr01:
   5516 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   5517 ; DARWIN-64-PIC-NEXT: 	ret
   5518 }
   5519 
   5520 define i8* @har02() nounwind {
   5521 entry:
   5522 	%0 = load i32** @ptr, align 8
   5523 	%1 = bitcast i32* %0 to i8*
   5524 	ret i8* %1
   5525 ; LINUX-64-STATIC: har02:
   5526 ; LINUX-64-STATIC: movq    ptr(%rip), %rax
   5527 ; LINUX-64-STATIC: ret
   5528 
   5529 ; LINUX-32-STATIC: har02:
   5530 ; LINUX-32-STATIC: 	movl	ptr, %eax
   5531 ; LINUX-32-STATIC-NEXT: 	ret
   5532 
   5533 ; LINUX-32-PIC: har02:
   5534 ; LINUX-32-PIC: 	movl	ptr, %eax
   5535 ; LINUX-32-PIC-NEXT: 	ret
   5536 
   5537 ; LINUX-64-PIC: har02:
   5538 ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   5539 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax
   5540 ; LINUX-64-PIC-NEXT: 	ret
   5541 
   5542 ; DARWIN-32-STATIC: _har02:
   5543 ; DARWIN-32-STATIC: 	movl	_ptr, %eax
   5544 ; DARWIN-32-STATIC-NEXT: 	ret
   5545 
   5546 ; DARWIN-32-DYNAMIC: _har02:
   5547 ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]]
   5548 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), %eax
   5549 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5550 
   5551 ; DARWIN-32-PIC: _har02:
   5552 ; DARWIN-32-PIC: 	calll	L81$pb
   5553 ; DARWIN-32-PIC-NEXT: L81$pb:
   5554 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5555 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L81$pb([[EAX]]), [[EAX:%e.x]]
   5556 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), %eax
   5557 ; DARWIN-32-PIC-NEXT: 	ret
   5558 
   5559 ; DARWIN-64-STATIC: _har02:
   5560 ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   5561 ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), %rax
   5562 ; DARWIN-64-STATIC-NEXT: 	ret
   5563 
   5564 ; DARWIN-64-DYNAMIC: _har02:
   5565 ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   5566 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), %rax
   5567 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5568 
   5569 ; DARWIN-64-PIC: _har02:
   5570 ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   5571 ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), %rax
   5572 ; DARWIN-64-PIC-NEXT: 	ret
   5573 }
   5574 
   5575 define i8* @har03() nounwind {
   5576 entry:
   5577 	ret i8* bitcast ([131072 x i32]* @dsrc to i8*)
   5578 ; LINUX-64-STATIC: har03:
   5579 ; LINUX-64-STATIC: movl    $dsrc, %eax
   5580 ; LINUX-64-STATIC: ret
   5581 
   5582 ; LINUX-32-STATIC: har03:
   5583 ; LINUX-32-STATIC: 	movl	$dsrc, %eax
   5584 ; LINUX-32-STATIC-NEXT: 	ret
   5585 
   5586 ; LINUX-32-PIC: har03:
   5587 ; LINUX-32-PIC: 	movl	$dsrc, %eax
   5588 ; LINUX-32-PIC-NEXT: 	ret
   5589 
   5590 ; LINUX-64-PIC: har03:
   5591 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), %rax
   5592 ; LINUX-64-PIC-NEXT: 	ret
   5593 
   5594 ; DARWIN-32-STATIC: _har03:
   5595 ; DARWIN-32-STATIC: 	movl	$_dsrc, %eax
   5596 ; DARWIN-32-STATIC-NEXT: 	ret
   5597 
   5598 ; DARWIN-32-DYNAMIC: _har03:
   5599 ; DARWIN-32-DYNAMIC: 	movl	$_dsrc, %eax
   5600 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5601 
   5602 ; DARWIN-32-PIC: _har03:
   5603 ; DARWIN-32-PIC: 	calll	L82$pb
   5604 ; DARWIN-32-PIC-NEXT: L82$pb:
   5605 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5606 ; DARWIN-32-PIC-NEXT: 	leal	_dsrc-L82$pb([[EAX]]), %eax
   5607 ; DARWIN-32-PIC-NEXT: 	ret
   5608 
   5609 ; DARWIN-64-STATIC: _har03:
   5610 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), %rax
   5611 ; DARWIN-64-STATIC-NEXT: 	ret
   5612 
   5613 ; DARWIN-64-DYNAMIC: _har03:
   5614 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), %rax
   5615 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5616 
   5617 ; DARWIN-64-PIC: _har03:
   5618 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), %rax
   5619 ; DARWIN-64-PIC-NEXT: 	ret
   5620 }
   5621 
   5622 define i8* @har04() nounwind {
   5623 entry:
   5624 	ret i8* bitcast ([131072 x i32]* @ddst to i8*)
   5625 ; LINUX-64-STATIC: har04:
   5626 ; LINUX-64-STATIC: movl    $ddst, %eax
   5627 ; LINUX-64-STATIC: ret
   5628 
   5629 ; LINUX-32-STATIC: har04:
   5630 ; LINUX-32-STATIC: 	movl	$ddst, %eax
   5631 ; LINUX-32-STATIC-NEXT: 	ret
   5632 
   5633 ; LINUX-32-PIC: har04:
   5634 ; LINUX-32-PIC: 	movl	$ddst, %eax
   5635 ; LINUX-32-PIC-NEXT: 	ret
   5636 
   5637 ; LINUX-64-PIC: har04:
   5638 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), %rax
   5639 ; LINUX-64-PIC-NEXT: 	ret
   5640 
   5641 ; DARWIN-32-STATIC: _har04:
   5642 ; DARWIN-32-STATIC: 	movl	$_ddst, %eax
   5643 ; DARWIN-32-STATIC-NEXT: 	ret
   5644 
   5645 ; DARWIN-32-DYNAMIC: _har04:
   5646 ; DARWIN-32-DYNAMIC: 	movl	$_ddst, %eax
   5647 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5648 
   5649 ; DARWIN-32-PIC: _har04:
   5650 ; DARWIN-32-PIC: 	calll	L83$pb
   5651 ; DARWIN-32-PIC-NEXT: L83$pb:
   5652 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5653 ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L83$pb([[EAX]]), %eax
   5654 ; DARWIN-32-PIC-NEXT: 	ret
   5655 
   5656 ; DARWIN-64-STATIC: _har04:
   5657 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), %rax
   5658 ; DARWIN-64-STATIC-NEXT: 	ret
   5659 
   5660 ; DARWIN-64-DYNAMIC: _har04:
   5661 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), %rax
   5662 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5663 
   5664 ; DARWIN-64-PIC: _har04:
   5665 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), %rax
   5666 ; DARWIN-64-PIC-NEXT: 	ret
   5667 }
   5668 
   5669 define i8* @har05() nounwind {
   5670 entry:
   5671 	%0 = load i32** @dptr, align 8
   5672 	%1 = bitcast i32* %0 to i8*
   5673 	ret i8* %1
   5674 ; LINUX-64-STATIC: har05:
   5675 ; LINUX-64-STATIC: movq    dptr(%rip), %rax
   5676 ; LINUX-64-STATIC: ret
   5677 
   5678 ; LINUX-32-STATIC: har05:
   5679 ; LINUX-32-STATIC: 	movl	dptr, %eax
   5680 ; LINUX-32-STATIC-NEXT: 	ret
   5681 
   5682 ; LINUX-32-PIC: har05:
   5683 ; LINUX-32-PIC: 	movl	dptr, %eax
   5684 ; LINUX-32-PIC-NEXT: 	ret
   5685 
   5686 ; LINUX-64-PIC: har05:
   5687 ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]]
   5688 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax
   5689 ; LINUX-64-PIC-NEXT: 	ret
   5690 
   5691 ; DARWIN-32-STATIC: _har05:
   5692 ; DARWIN-32-STATIC: 	movl	_dptr, %eax
   5693 ; DARWIN-32-STATIC-NEXT: 	ret
   5694 
   5695 ; DARWIN-32-DYNAMIC: _har05:
   5696 ; DARWIN-32-DYNAMIC: 	movl	_dptr, %eax
   5697 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5698 
   5699 ; DARWIN-32-PIC: _har05:
   5700 ; DARWIN-32-PIC: 	calll	L84$pb
   5701 ; DARWIN-32-PIC-NEXT: L84$pb:
   5702 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5703 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L84$pb([[EAX]]), %eax
   5704 ; DARWIN-32-PIC-NEXT: 	ret
   5705 
   5706 ; DARWIN-64-STATIC: _har05:
   5707 ; DARWIN-64-STATIC: 	movq	_dptr(%rip), %rax
   5708 ; DARWIN-64-STATIC-NEXT: 	ret
   5709 
   5710 ; DARWIN-64-DYNAMIC: _har05:
   5711 ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), %rax
   5712 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5713 
   5714 ; DARWIN-64-PIC: _har05:
   5715 ; DARWIN-64-PIC: 	movq	_dptr(%rip), %rax
   5716 ; DARWIN-64-PIC-NEXT: 	ret
   5717 }
   5718 
   5719 define i8* @har06() nounwind {
   5720 entry:
   5721 	ret i8* bitcast ([131072 x i32]* @lsrc to i8*)
   5722 ; LINUX-64-STATIC: har06:
   5723 ; LINUX-64-STATIC: movl    $lsrc, %eax
   5724 ; LINUX-64-STATIC: ret
   5725 
   5726 ; LINUX-32-STATIC: har06:
   5727 ; LINUX-32-STATIC: 	movl	$lsrc, %eax
   5728 ; LINUX-32-STATIC-NEXT: 	ret
   5729 
   5730 ; LINUX-32-PIC: har06:
   5731 ; LINUX-32-PIC: 	movl	$lsrc, %eax
   5732 ; LINUX-32-PIC-NEXT: 	ret
   5733 
   5734 ; LINUX-64-PIC: har06:
   5735 ; LINUX-64-PIC: 	leaq	lsrc(%rip), %rax
   5736 ; LINUX-64-PIC-NEXT: 	ret
   5737 
   5738 ; DARWIN-32-STATIC: _har06:
   5739 ; DARWIN-32-STATIC: 	movl	$_lsrc, %eax
   5740 ; DARWIN-32-STATIC-NEXT: 	ret
   5741 
   5742 ; DARWIN-32-DYNAMIC: _har06:
   5743 ; DARWIN-32-DYNAMIC: 	movl	$_lsrc, %eax
   5744 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5745 
   5746 ; DARWIN-32-PIC: _har06:
   5747 ; DARWIN-32-PIC: 	calll	L85$pb
   5748 ; DARWIN-32-PIC-NEXT: L85$pb:
   5749 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5750 ; DARWIN-32-PIC-NEXT: 	leal	_lsrc-L85$pb([[EAX]]), %eax
   5751 ; DARWIN-32-PIC-NEXT: 	ret
   5752 
   5753 ; DARWIN-64-STATIC: _har06:
   5754 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), %rax
   5755 ; DARWIN-64-STATIC-NEXT: 	ret
   5756 
   5757 ; DARWIN-64-DYNAMIC: _har06:
   5758 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), %rax
   5759 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5760 
   5761 ; DARWIN-64-PIC: _har06:
   5762 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), %rax
   5763 ; DARWIN-64-PIC-NEXT: 	ret
   5764 }
   5765 
   5766 define i8* @har07() nounwind {
   5767 entry:
   5768 	ret i8* bitcast ([131072 x i32]* @ldst to i8*)
   5769 ; LINUX-64-STATIC: har07:
   5770 ; LINUX-64-STATIC: movl    $ldst, %eax
   5771 ; LINUX-64-STATIC: ret
   5772 
   5773 ; LINUX-32-STATIC: har07:
   5774 ; LINUX-32-STATIC: 	movl	$ldst, %eax
   5775 ; LINUX-32-STATIC-NEXT: 	ret
   5776 
   5777 ; LINUX-32-PIC: har07:
   5778 ; LINUX-32-PIC: 	movl	$ldst, %eax
   5779 ; LINUX-32-PIC-NEXT: 	ret
   5780 
   5781 ; LINUX-64-PIC: har07:
   5782 ; LINUX-64-PIC: 	leaq	ldst(%rip), %rax
   5783 ; LINUX-64-PIC-NEXT: 	ret
   5784 
   5785 ; DARWIN-32-STATIC: _har07:
   5786 ; DARWIN-32-STATIC: 	movl	$_ldst, %eax
   5787 ; DARWIN-32-STATIC-NEXT: 	ret
   5788 
   5789 ; DARWIN-32-DYNAMIC: _har07:
   5790 ; DARWIN-32-DYNAMIC: 	movl	$_ldst, %eax
   5791 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5792 
   5793 ; DARWIN-32-PIC: _har07:
   5794 ; DARWIN-32-PIC: 	calll	L86$pb
   5795 ; DARWIN-32-PIC-NEXT: L86$pb:
   5796 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5797 ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L86$pb([[EAX]]), %eax
   5798 ; DARWIN-32-PIC-NEXT: 	ret
   5799 
   5800 ; DARWIN-64-STATIC: _har07:
   5801 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), %rax
   5802 ; DARWIN-64-STATIC-NEXT: 	ret
   5803 
   5804 ; DARWIN-64-DYNAMIC: _har07:
   5805 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), %rax
   5806 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5807 
   5808 ; DARWIN-64-PIC: _har07:
   5809 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), %rax
   5810 ; DARWIN-64-PIC-NEXT: 	ret
   5811 }
   5812 
   5813 define i8* @har08() nounwind {
   5814 entry:
   5815 	%0 = load i32** @lptr, align 8
   5816 	%1 = bitcast i32* %0 to i8*
   5817 	ret i8* %1
   5818 ; LINUX-64-STATIC: har08:
   5819 ; LINUX-64-STATIC: movq    lptr(%rip), %rax
   5820 ; LINUX-64-STATIC: ret
   5821 
   5822 ; LINUX-32-STATIC: har08:
   5823 ; LINUX-32-STATIC: 	movl	lptr, %eax
   5824 ; LINUX-32-STATIC-NEXT: 	ret
   5825 
   5826 ; LINUX-32-PIC: har08:
   5827 ; LINUX-32-PIC: 	movl	lptr, %eax
   5828 ; LINUX-32-PIC-NEXT: 	ret
   5829 
   5830 ; LINUX-64-PIC: har08:
   5831 ; LINUX-64-PIC: 	movq	lptr(%rip), %rax
   5832 ; LINUX-64-PIC-NEXT: 	ret
   5833 
   5834 ; DARWIN-32-STATIC: _har08:
   5835 ; DARWIN-32-STATIC: 	movl	_lptr, %eax
   5836 ; DARWIN-32-STATIC-NEXT: 	ret
   5837 
   5838 ; DARWIN-32-DYNAMIC: _har08:
   5839 ; DARWIN-32-DYNAMIC: 	movl	_lptr, %eax
   5840 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5841 
   5842 ; DARWIN-32-PIC: _har08:
   5843 ; DARWIN-32-PIC: 	calll	L87$pb
   5844 ; DARWIN-32-PIC-NEXT: L87$pb:
   5845 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5846 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L87$pb([[EAX]]), %eax
   5847 ; DARWIN-32-PIC-NEXT: 	ret
   5848 
   5849 ; DARWIN-64-STATIC: _har08:
   5850 ; DARWIN-64-STATIC: 	movq	_lptr(%rip), %rax
   5851 ; DARWIN-64-STATIC-NEXT: 	ret
   5852 
   5853 ; DARWIN-64-DYNAMIC: _har08:
   5854 ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), %rax
   5855 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5856 
   5857 ; DARWIN-64-PIC: _har08:
   5858 ; DARWIN-64-PIC: 	movq	_lptr(%rip), %rax
   5859 ; DARWIN-64-PIC-NEXT: 	ret
   5860 }
   5861 
   5862 define i8* @bat00() nounwind {
   5863 entry:
   5864 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 16) to i8*)
   5865 ; LINUX-64-STATIC: bat00:
   5866 ; LINUX-64-STATIC: movl    $src+64, %eax
   5867 ; LINUX-64-STATIC: ret
   5868 
   5869 ; LINUX-32-STATIC: bat00:
   5870 ; LINUX-32-STATIC: 	movl	$src+64, %eax
   5871 ; LINUX-32-STATIC-NEXT: 	ret
   5872 
   5873 ; LINUX-32-PIC: bat00:
   5874 ; LINUX-32-PIC: 	movl	$src+64, %eax
   5875 ; LINUX-32-PIC-NEXT: 	ret
   5876 
   5877 ; LINUX-64-PIC: bat00:
   5878 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), %rax
   5879 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   5880 ; LINUX-64-PIC-NEXT: 	ret
   5881 
   5882 ; DARWIN-32-STATIC: _bat00:
   5883 ; DARWIN-32-STATIC: 	movl	$_src+64, %eax
   5884 ; DARWIN-32-STATIC-NEXT: 	ret
   5885 
   5886 ; DARWIN-32-DYNAMIC: _bat00:
   5887 ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, %eax
   5888 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   5889 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5890 
   5891 ; DARWIN-32-PIC: _bat00:
   5892 ; DARWIN-32-PIC: 	calll	L88$pb
   5893 ; DARWIN-32-PIC-NEXT: L88$pb:
   5894 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5895 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L88$pb([[EAX]]), %eax
   5896 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   5897 ; DARWIN-32-PIC-NEXT: 	ret
   5898 
   5899 ; DARWIN-64-STATIC: _bat00:
   5900 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), %rax
   5901 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   5902 ; DARWIN-64-STATIC-NEXT: 	ret
   5903 
   5904 ; DARWIN-64-DYNAMIC: _bat00:
   5905 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), %rax
   5906 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   5907 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5908 
   5909 ; DARWIN-64-PIC: _bat00:
   5910 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), %rax
   5911 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   5912 ; DARWIN-64-PIC-NEXT: 	ret
   5913 }
   5914 
   5915 define i8* @bxt00() nounwind {
   5916 entry:
   5917 	ret i8* bitcast (i32* getelementptr ([32 x i32]* @xsrc, i32 0, i64 16) to i8*)
   5918 ; LINUX-64-STATIC: bxt00:
   5919 ; LINUX-64-STATIC: movl    $xsrc+64, %eax
   5920 ; LINUX-64-STATIC: ret
   5921 
   5922 ; LINUX-32-STATIC: bxt00:
   5923 ; LINUX-32-STATIC: 	movl	$xsrc+64, %eax
   5924 ; LINUX-32-STATIC-NEXT: 	ret
   5925 
   5926 ; LINUX-32-PIC: bxt00:
   5927 ; LINUX-32-PIC: 	movl	$xsrc+64, %eax
   5928 ; LINUX-32-PIC-NEXT: 	ret
   5929 
   5930 ; LINUX-64-PIC: bxt00:
   5931 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), %rax
   5932 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   5933 ; LINUX-64-PIC-NEXT: 	ret
   5934 
   5935 ; DARWIN-32-STATIC: _bxt00:
   5936 ; DARWIN-32-STATIC: 	movl	$_xsrc+64, %eax
   5937 ; DARWIN-32-STATIC-NEXT: 	ret
   5938 
   5939 ; DARWIN-32-DYNAMIC: _bxt00:
   5940 ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, %eax
   5941 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   5942 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5943 
   5944 ; DARWIN-32-PIC: _bxt00:
   5945 ; DARWIN-32-PIC: 	calll	L89$pb
   5946 ; DARWIN-32-PIC-NEXT: L89$pb:
   5947 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   5948 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L89$pb([[EAX]]), %eax
   5949 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   5950 ; DARWIN-32-PIC-NEXT: 	ret
   5951 
   5952 ; DARWIN-64-STATIC: _bxt00:
   5953 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   5954 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   5955 ; DARWIN-64-STATIC-NEXT: 	ret
   5956 
   5957 ; DARWIN-64-DYNAMIC: _bxt00:
   5958 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   5959 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   5960 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   5961 
   5962 ; DARWIN-64-PIC: _bxt00:
   5963 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), %rax
   5964 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   5965 ; DARWIN-64-PIC-NEXT: 	ret
   5966 }
   5967 
   5968 define i8* @bat01() nounwind {
   5969 entry:
   5970 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 16) to i8*)
   5971 ; LINUX-64-STATIC: bat01:
   5972 ; LINUX-64-STATIC: movl    $dst+64, %eax
   5973 ; LINUX-64-STATIC: ret
   5974 
   5975 ; LINUX-32-STATIC: bat01:
   5976 ; LINUX-32-STATIC: 	movl	$dst+64, %eax
   5977 ; LINUX-32-STATIC-NEXT: 	ret
   5978 
   5979 ; LINUX-32-PIC: bat01:
   5980 ; LINUX-32-PIC: 	movl	$dst+64, %eax
   5981 ; LINUX-32-PIC-NEXT: 	ret
   5982 
   5983 ; LINUX-64-PIC: bat01:
   5984 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), %rax
   5985 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   5986 ; LINUX-64-PIC-NEXT: 	ret
   5987 
   5988 ; DARWIN-32-STATIC: _bat01:
   5989 ; DARWIN-32-STATIC: 	movl	$_dst+64, %eax
   5990 ; DARWIN-32-STATIC-NEXT: 	ret
   5991 
   5992 ; DARWIN-32-DYNAMIC: _bat01:
   5993 ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, %eax
   5994 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   5995 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   5996 
   5997 ; DARWIN-32-PIC: _bat01:
   5998 ; DARWIN-32-PIC: 	calll	L90$pb
   5999 ; DARWIN-32-PIC-NEXT: L90$pb:
   6000 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6001 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L90$pb([[EAX]]), %eax
   6002 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   6003 ; DARWIN-32-PIC-NEXT: 	ret
   6004 
   6005 ; DARWIN-64-STATIC: _bat01:
   6006 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), %rax
   6007 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   6008 ; DARWIN-64-STATIC-NEXT: 	ret
   6009 
   6010 ; DARWIN-64-DYNAMIC: _bat01:
   6011 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), %rax
   6012 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   6013 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6014 
   6015 ; DARWIN-64-PIC: _bat01:
   6016 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), %rax
   6017 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   6018 ; DARWIN-64-PIC-NEXT: 	ret
   6019 }
   6020 
   6021 define i8* @bxt01() nounwind {
   6022 entry:
   6023 	ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 16) to i8*)
   6024 ; LINUX-64-STATIC: bxt01:
   6025 ; LINUX-64-STATIC: movl    $xdst+64, %eax
   6026 ; LINUX-64-STATIC: ret
   6027 
   6028 ; LINUX-32-STATIC: bxt01:
   6029 ; LINUX-32-STATIC: 	movl	$xdst+64, %eax
   6030 ; LINUX-32-STATIC-NEXT: 	ret
   6031 
   6032 ; LINUX-32-PIC: bxt01:
   6033 ; LINUX-32-PIC: 	movl	$xdst+64, %eax
   6034 ; LINUX-32-PIC-NEXT: 	ret
   6035 
   6036 ; LINUX-64-PIC: bxt01:
   6037 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), %rax
   6038 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   6039 ; LINUX-64-PIC-NEXT: 	ret
   6040 
   6041 ; DARWIN-32-STATIC: _bxt01:
   6042 ; DARWIN-32-STATIC: 	movl	$_xdst+64, %eax
   6043 ; DARWIN-32-STATIC-NEXT: 	ret
   6044 
   6045 ; DARWIN-32-DYNAMIC: _bxt01:
   6046 ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, %eax
   6047 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   6048 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6049 
   6050 ; DARWIN-32-PIC: _bxt01:
   6051 ; DARWIN-32-PIC: 	calll	L91$pb
   6052 ; DARWIN-32-PIC-NEXT: L91$pb:
   6053 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6054 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L91$pb([[EAX]]), %eax
   6055 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   6056 ; DARWIN-32-PIC-NEXT: 	ret
   6057 
   6058 ; DARWIN-64-STATIC: _bxt01:
   6059 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   6060 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   6061 ; DARWIN-64-STATIC-NEXT: 	ret
   6062 
   6063 ; DARWIN-64-DYNAMIC: _bxt01:
   6064 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   6065 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   6066 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6067 
   6068 ; DARWIN-64-PIC: _bxt01:
   6069 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), %rax
   6070 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   6071 ; DARWIN-64-PIC-NEXT: 	ret
   6072 }
   6073 
   6074 define i8* @bat02() nounwind {
   6075 entry:
   6076 	%0 = load i32** @ptr, align 8
   6077 	%1 = getelementptr i32* %0, i64 16
   6078 	%2 = bitcast i32* %1 to i8*
   6079 	ret i8* %2
   6080 ; LINUX-64-STATIC: bat02:
   6081 ; LINUX-64-STATIC: movq    ptr(%rip), %rax
   6082 ; LINUX-64-STATIC: addq    $64, %rax
   6083 ; LINUX-64-STATIC: ret
   6084 
   6085 ; LINUX-32-STATIC: bat02:
   6086 ; LINUX-32-STATIC: 	movl	ptr, %eax
   6087 ; LINUX-32-STATIC-NEXT: 	addl	$64, %eax
   6088 ; LINUX-32-STATIC-NEXT: 	ret
   6089 
   6090 ; LINUX-32-PIC: bat02:
   6091 ; LINUX-32-PIC: 	movl	ptr, %eax
   6092 ; LINUX-32-PIC-NEXT: 	addl	$64, %eax
   6093 ; LINUX-32-PIC-NEXT: 	ret
   6094 
   6095 ; LINUX-64-PIC: bat02:
   6096 ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   6097 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax
   6098 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   6099 ; LINUX-64-PIC-NEXT: 	ret
   6100 
   6101 ; DARWIN-32-STATIC: _bat02:
   6102 ; DARWIN-32-STATIC: 	movl	_ptr, %eax
   6103 ; DARWIN-32-STATIC-NEXT: 	addl	$64, %eax
   6104 ; DARWIN-32-STATIC-NEXT: 	ret
   6105 
   6106 ; DARWIN-32-DYNAMIC: _bat02:
   6107 ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]]
   6108 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   6109 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   6110 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6111 
   6112 ; DARWIN-32-PIC: _bat02:
   6113 ; DARWIN-32-PIC: 	calll	L92$pb
   6114 ; DARWIN-32-PIC-NEXT: L92$pb:
   6115 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6116 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L92$pb([[EAX]]), [[EAX:%e.x]]
   6117 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), %eax
   6118 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   6119 ; DARWIN-32-PIC-NEXT: 	ret
   6120 
   6121 ; DARWIN-64-STATIC: _bat02:
   6122 ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   6123 ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), %rax
   6124 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   6125 ; DARWIN-64-STATIC-NEXT: 	ret
   6126 
   6127 ; DARWIN-64-DYNAMIC: _bat02:
   6128 ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   6129 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   6130 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   6131 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6132 
   6133 ; DARWIN-64-PIC: _bat02:
   6134 ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   6135 ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), %rax
   6136 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   6137 ; DARWIN-64-PIC-NEXT: 	ret
   6138 }
   6139 
   6140 define i8* @bat03() nounwind {
   6141 entry:
   6142 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 16) to i8*)
   6143 ; LINUX-64-STATIC: bat03:
   6144 ; LINUX-64-STATIC: movl    $dsrc+64, %eax
   6145 ; LINUX-64-STATIC: ret
   6146 
   6147 ; LINUX-32-STATIC: bat03:
   6148 ; LINUX-32-STATIC: 	movl	$dsrc+64, %eax
   6149 ; LINUX-32-STATIC-NEXT: 	ret
   6150 
   6151 ; LINUX-32-PIC: bat03:
   6152 ; LINUX-32-PIC: 	movl	$dsrc+64, %eax
   6153 ; LINUX-32-PIC-NEXT: 	ret
   6154 
   6155 ; LINUX-64-PIC: bat03:
   6156 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), %rax
   6157 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   6158 ; LINUX-64-PIC-NEXT: 	ret
   6159 
   6160 ; DARWIN-32-STATIC: _bat03:
   6161 ; DARWIN-32-STATIC: 	movl	$_dsrc+64, %eax
   6162 ; DARWIN-32-STATIC-NEXT: 	ret
   6163 
   6164 ; DARWIN-32-DYNAMIC: _bat03:
   6165 ; DARWIN-32-DYNAMIC: 	movl	$_dsrc+64, %eax
   6166 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6167 
   6168 ; DARWIN-32-PIC: _bat03:
   6169 ; DARWIN-32-PIC: 	calll	L93$pb
   6170 ; DARWIN-32-PIC-NEXT: L93$pb:
   6171 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6172 ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L93$pb)+64([[EAX]]), %eax
   6173 ; DARWIN-32-PIC-NEXT: 	ret
   6174 
   6175 ; DARWIN-64-STATIC: _bat03:
   6176 ; DARWIN-64-STATIC: 	leaq	_dsrc+64(%rip), %rax
   6177 ; DARWIN-64-STATIC-NEXT: 	ret
   6178 
   6179 ; DARWIN-64-DYNAMIC: _bat03:
   6180 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc+64(%rip), %rax
   6181 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6182 
   6183 ; DARWIN-64-PIC: _bat03:
   6184 ; DARWIN-64-PIC: 	leaq	_dsrc+64(%rip), %rax
   6185 ; DARWIN-64-PIC-NEXT: 	ret
   6186 }
   6187 
   6188 define i8* @bat04() nounwind {
   6189 entry:
   6190 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 16) to i8*)
   6191 ; LINUX-64-STATIC: bat04:
   6192 ; LINUX-64-STATIC: movl    $ddst+64, %eax
   6193 ; LINUX-64-STATIC: ret
   6194 
   6195 ; LINUX-32-STATIC: bat04:
   6196 ; LINUX-32-STATIC: 	movl	$ddst+64, %eax
   6197 ; LINUX-32-STATIC-NEXT: 	ret
   6198 
   6199 ; LINUX-32-PIC: bat04:
   6200 ; LINUX-32-PIC: 	movl	$ddst+64, %eax
   6201 ; LINUX-32-PIC-NEXT: 	ret
   6202 
   6203 ; LINUX-64-PIC: bat04:
   6204 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), %rax
   6205 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   6206 ; LINUX-64-PIC-NEXT: 	ret
   6207 
   6208 ; DARWIN-32-STATIC: _bat04:
   6209 ; DARWIN-32-STATIC: 	movl	$_ddst+64, %eax
   6210 ; DARWIN-32-STATIC-NEXT: 	ret
   6211 
   6212 ; DARWIN-32-DYNAMIC: _bat04:
   6213 ; DARWIN-32-DYNAMIC: 	movl	$_ddst+64, %eax
   6214 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6215 
   6216 ; DARWIN-32-PIC: _bat04:
   6217 ; DARWIN-32-PIC: 	calll	L94$pb
   6218 ; DARWIN-32-PIC-NEXT: L94$pb:
   6219 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6220 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L94$pb)+64([[EAX]]), %eax
   6221 ; DARWIN-32-PIC-NEXT: 	ret
   6222 
   6223 ; DARWIN-64-STATIC: _bat04:
   6224 ; DARWIN-64-STATIC: 	leaq	_ddst+64(%rip), %rax
   6225 ; DARWIN-64-STATIC-NEXT: 	ret
   6226 
   6227 ; DARWIN-64-DYNAMIC: _bat04:
   6228 ; DARWIN-64-DYNAMIC: 	leaq	_ddst+64(%rip), %rax
   6229 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6230 
   6231 ; DARWIN-64-PIC: _bat04:
   6232 ; DARWIN-64-PIC: 	leaq	_ddst+64(%rip), %rax
   6233 ; DARWIN-64-PIC-NEXT: 	ret
   6234 }
   6235 
   6236 define i8* @bat05() nounwind {
   6237 entry:
   6238 	%0 = load i32** @dptr, align 8
   6239 	%1 = getelementptr i32* %0, i64 16
   6240 	%2 = bitcast i32* %1 to i8*
   6241 	ret i8* %2
   6242 ; LINUX-64-STATIC: bat05:
   6243 ; LINUX-64-STATIC: movq    dptr(%rip), %rax
   6244 ; LINUX-64-STATIC: addq    $64, %rax
   6245 ; LINUX-64-STATIC: ret
   6246 
   6247 ; LINUX-32-STATIC: bat05:
   6248 ; LINUX-32-STATIC: 	movl	dptr, %eax
   6249 ; LINUX-32-STATIC-NEXT: 	addl	$64, %eax
   6250 ; LINUX-32-STATIC-NEXT: 	ret
   6251 
   6252 ; LINUX-32-PIC: bat05:
   6253 ; LINUX-32-PIC: 	movl	dptr, %eax
   6254 ; LINUX-32-PIC-NEXT: 	addl	$64, %eax
   6255 ; LINUX-32-PIC-NEXT: 	ret
   6256 
   6257 ; LINUX-64-PIC: bat05:
   6258 ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]]
   6259 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax
   6260 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   6261 ; LINUX-64-PIC-NEXT: 	ret
   6262 
   6263 ; DARWIN-32-STATIC: _bat05:
   6264 ; DARWIN-32-STATIC: 	movl	_dptr, %eax
   6265 ; DARWIN-32-STATIC-NEXT: 	addl	$64, %eax
   6266 ; DARWIN-32-STATIC-NEXT: 	ret
   6267 
   6268 ; DARWIN-32-DYNAMIC: _bat05:
   6269 ; DARWIN-32-DYNAMIC: 	movl	_dptr, %eax
   6270 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   6271 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6272 
   6273 ; DARWIN-32-PIC: _bat05:
   6274 ; DARWIN-32-PIC: 	calll	L95$pb
   6275 ; DARWIN-32-PIC-NEXT: L95$pb:
   6276 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6277 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L95$pb([[EAX]]), %eax
   6278 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   6279 ; DARWIN-32-PIC-NEXT: 	ret
   6280 
   6281 ; DARWIN-64-STATIC: _bat05:
   6282 ; DARWIN-64-STATIC: 	movq	_dptr(%rip), %rax
   6283 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   6284 ; DARWIN-64-STATIC-NEXT: 	ret
   6285 
   6286 ; DARWIN-64-DYNAMIC: _bat05:
   6287 ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), %rax
   6288 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   6289 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6290 
   6291 ; DARWIN-64-PIC: _bat05:
   6292 ; DARWIN-64-PIC: 	movq	_dptr(%rip), %rax
   6293 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   6294 ; DARWIN-64-PIC-NEXT: 	ret
   6295 }
   6296 
   6297 define i8* @bat06() nounwind {
   6298 entry:
   6299 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 16) to i8*)
   6300 ; LINUX-64-STATIC: bat06:
   6301 ; LINUX-64-STATIC: movl    $lsrc+64, %eax
   6302 ; LINUX-64-STATIC: ret
   6303 
   6304 ; LINUX-32-STATIC: bat06:
   6305 ; LINUX-32-STATIC: 	movl	$lsrc+64, %eax
   6306 ; LINUX-32-STATIC-NEXT: 	ret
   6307 
   6308 ; LINUX-32-PIC: bat06:
   6309 ; LINUX-32-PIC: 	movl	$lsrc+64, %eax
   6310 ; LINUX-32-PIC-NEXT: 	ret
   6311 
   6312 ; LINUX-64-PIC: bat06:
   6313 ; LINUX-64-PIC: 	leaq	lsrc+64(%rip), %rax
   6314 ; LINUX-64-PIC-NEXT: 	ret
   6315 
   6316 ; DARWIN-32-STATIC: _bat06:
   6317 ; DARWIN-32-STATIC: 	movl	$_lsrc+64, %eax
   6318 ; DARWIN-32-STATIC-NEXT: 	ret
   6319 
   6320 ; DARWIN-32-DYNAMIC: _bat06:
   6321 ; DARWIN-32-DYNAMIC: 	movl	$_lsrc+64, %eax
   6322 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6323 
   6324 ; DARWIN-32-PIC: _bat06:
   6325 ; DARWIN-32-PIC: 	calll	L96$pb
   6326 ; DARWIN-32-PIC-NEXT: L96$pb:
   6327 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6328 ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L96$pb)+64([[EAX]]), %eax
   6329 ; DARWIN-32-PIC-NEXT: 	ret
   6330 
   6331 ; DARWIN-64-STATIC: _bat06:
   6332 ; DARWIN-64-STATIC: 	leaq	_lsrc+64(%rip), %rax
   6333 ; DARWIN-64-STATIC-NEXT: 	ret
   6334 
   6335 ; DARWIN-64-DYNAMIC: _bat06:
   6336 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc+64(%rip), %rax
   6337 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6338 
   6339 ; DARWIN-64-PIC: _bat06:
   6340 ; DARWIN-64-PIC: 	leaq	_lsrc+64(%rip), %rax
   6341 ; DARWIN-64-PIC-NEXT: 	ret
   6342 }
   6343 
   6344 define i8* @bat07() nounwind {
   6345 entry:
   6346 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 16) to i8*)
   6347 ; LINUX-64-STATIC: bat07:
   6348 ; LINUX-64-STATIC: movl    $ldst+64, %eax
   6349 ; LINUX-64-STATIC: ret
   6350 
   6351 ; LINUX-32-STATIC: bat07:
   6352 ; LINUX-32-STATIC: 	movl	$ldst+64, %eax
   6353 ; LINUX-32-STATIC-NEXT: 	ret
   6354 
   6355 ; LINUX-32-PIC: bat07:
   6356 ; LINUX-32-PIC: 	movl	$ldst+64, %eax
   6357 ; LINUX-32-PIC-NEXT: 	ret
   6358 
   6359 ; LINUX-64-PIC: bat07:
   6360 ; LINUX-64-PIC: 	leaq	ldst+64(%rip), %rax
   6361 ; LINUX-64-PIC-NEXT: 	ret
   6362 
   6363 ; DARWIN-32-STATIC: _bat07:
   6364 ; DARWIN-32-STATIC: 	movl	$_ldst+64, %eax
   6365 ; DARWIN-32-STATIC-NEXT: 	ret
   6366 
   6367 ; DARWIN-32-DYNAMIC: _bat07:
   6368 ; DARWIN-32-DYNAMIC: 	movl	$_ldst+64, %eax
   6369 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6370 
   6371 ; DARWIN-32-PIC: _bat07:
   6372 ; DARWIN-32-PIC: 	calll	L97$pb
   6373 ; DARWIN-32-PIC-NEXT: L97$pb:
   6374 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6375 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L97$pb)+64([[EAX]]), %eax
   6376 ; DARWIN-32-PIC-NEXT: 	ret
   6377 
   6378 ; DARWIN-64-STATIC: _bat07:
   6379 ; DARWIN-64-STATIC: 	leaq	_ldst+64(%rip), %rax
   6380 ; DARWIN-64-STATIC-NEXT: 	ret
   6381 
   6382 ; DARWIN-64-DYNAMIC: _bat07:
   6383 ; DARWIN-64-DYNAMIC: 	leaq	_ldst+64(%rip), %rax
   6384 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6385 
   6386 ; DARWIN-64-PIC: _bat07:
   6387 ; DARWIN-64-PIC: 	leaq	_ldst+64(%rip), %rax
   6388 ; DARWIN-64-PIC-NEXT: 	ret
   6389 }
   6390 
   6391 define i8* @bat08() nounwind {
   6392 entry:
   6393 	%0 = load i32** @lptr, align 8
   6394 	%1 = getelementptr i32* %0, i64 16
   6395 	%2 = bitcast i32* %1 to i8*
   6396 	ret i8* %2
   6397 ; LINUX-64-STATIC: bat08:
   6398 ; LINUX-64-STATIC: movq    lptr(%rip), %rax
   6399 ; LINUX-64-STATIC: addq    $64, %rax
   6400 ; LINUX-64-STATIC: ret
   6401 
   6402 ; LINUX-32-STATIC: bat08:
   6403 ; LINUX-32-STATIC: 	movl	lptr, %eax
   6404 ; LINUX-32-STATIC-NEXT: 	addl	$64, %eax
   6405 ; LINUX-32-STATIC-NEXT: 	ret
   6406 
   6407 ; LINUX-32-PIC: bat08:
   6408 ; LINUX-32-PIC: 	movl	lptr, %eax
   6409 ; LINUX-32-PIC-NEXT: 	addl	$64, %eax
   6410 ; LINUX-32-PIC-NEXT: 	ret
   6411 
   6412 ; LINUX-64-PIC: bat08:
   6413 ; LINUX-64-PIC: 	movq	lptr(%rip), %rax
   6414 ; LINUX-64-PIC-NEXT: 	addq	$64, %rax
   6415 ; LINUX-64-PIC-NEXT: 	ret
   6416 
   6417 ; DARWIN-32-STATIC: _bat08:
   6418 ; DARWIN-32-STATIC: 	movl	_lptr, %eax
   6419 ; DARWIN-32-STATIC-NEXT: 	addl	$64, %eax
   6420 ; DARWIN-32-STATIC-NEXT: 	ret
   6421 
   6422 ; DARWIN-32-DYNAMIC: _bat08:
   6423 ; DARWIN-32-DYNAMIC: 	movl	_lptr, %eax
   6424 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax
   6425 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6426 
   6427 ; DARWIN-32-PIC: _bat08:
   6428 ; DARWIN-32-PIC: 	calll	L98$pb
   6429 ; DARWIN-32-PIC-NEXT: L98$pb:
   6430 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6431 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L98$pb([[EAX]]), %eax
   6432 ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax
   6433 ; DARWIN-32-PIC-NEXT: 	ret
   6434 
   6435 ; DARWIN-64-STATIC: _bat08:
   6436 ; DARWIN-64-STATIC: 	movq	_lptr(%rip), %rax
   6437 ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax
   6438 ; DARWIN-64-STATIC-NEXT: 	ret
   6439 
   6440 ; DARWIN-64-DYNAMIC: _bat08:
   6441 ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), %rax
   6442 ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax
   6443 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6444 
   6445 ; DARWIN-64-PIC: _bat08:
   6446 ; DARWIN-64-PIC: 	movq	_lptr(%rip), %rax
   6447 ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax
   6448 ; DARWIN-64-PIC-NEXT: 	ret
   6449 }
   6450 
   6451 define i8* @bam00() nounwind {
   6452 entry:
   6453 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @src, i32 0, i64 65536) to i8*)
   6454 ; LINUX-64-STATIC: bam00:
   6455 ; LINUX-64-STATIC: movl    $src+262144, %eax
   6456 ; LINUX-64-STATIC: ret
   6457 
   6458 ; LINUX-32-STATIC: bam00:
   6459 ; LINUX-32-STATIC: 	movl	$src+262144, %eax
   6460 ; LINUX-32-STATIC-NEXT: 	ret
   6461 
   6462 ; LINUX-32-PIC: bam00:
   6463 ; LINUX-32-PIC: 	movl	$src+262144, %eax
   6464 ; LINUX-32-PIC-NEXT: 	ret
   6465 
   6466 ; LINUX-64-PIC: bam00:
   6467 ; LINUX-64-PIC: 	movl	$262144, %eax
   6468 ; LINUX-64-PIC-NEXT: 	addq	src@GOTPCREL(%rip), %rax
   6469 ; LINUX-64-PIC-NEXT: 	ret
   6470 
   6471 ; DARWIN-32-STATIC: _bam00:
   6472 ; DARWIN-32-STATIC: 	movl	$_src+262144, %eax
   6473 ; DARWIN-32-STATIC-NEXT: 	ret
   6474 
   6475 ; DARWIN-32-DYNAMIC: _bam00:
   6476 ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax
   6477 ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_src$non_lazy_ptr, %eax
   6478 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6479 
   6480 ; DARWIN-32-PIC: _bam00:
   6481 ; DARWIN-32-PIC: 	calll	L99$pb
   6482 ; DARWIN-32-PIC-NEXT: L99$pb:
   6483 ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]]
   6484 ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax
   6485 ; DARWIN-32-PIC-NEXT: 	addl	L_src$non_lazy_ptr-L99$pb([[ECX]]), %eax
   6486 ; DARWIN-32-PIC-NEXT: 	ret
   6487 
   6488 ; DARWIN-64-STATIC: _bam00:
   6489 ; DARWIN-64-STATIC: 	movl	$262144, %eax
   6490 ; DARWIN-64-STATIC-NEXT: 	addq	_src@GOTPCREL(%rip), %rax
   6491 ; DARWIN-64-STATIC-NEXT: 	ret
   6492 
   6493 ; DARWIN-64-DYNAMIC: _bam00:
   6494 ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax
   6495 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_src@GOTPCREL(%rip), %rax
   6496 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6497 
   6498 ; DARWIN-64-PIC: _bam00:
   6499 ; DARWIN-64-PIC: 	movl	$262144, %eax
   6500 ; DARWIN-64-PIC-NEXT: 	addq	_src@GOTPCREL(%rip), %rax
   6501 ; DARWIN-64-PIC-NEXT: 	ret
   6502 }
   6503 
   6504 define i8* @bam01() nounwind {
   6505 entry:
   6506 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dst, i32 0, i64 65536) to i8*)
   6507 ; LINUX-64-STATIC: bam01:
   6508 ; LINUX-64-STATIC: movl    $dst+262144, %eax
   6509 ; LINUX-64-STATIC: ret
   6510 
   6511 ; LINUX-32-STATIC: bam01:
   6512 ; LINUX-32-STATIC: 	movl	$dst+262144, %eax
   6513 ; LINUX-32-STATIC-NEXT: 	ret
   6514 
   6515 ; LINUX-32-PIC: bam01:
   6516 ; LINUX-32-PIC: 	movl	$dst+262144, %eax
   6517 ; LINUX-32-PIC-NEXT: 	ret
   6518 
   6519 ; LINUX-64-PIC: bam01:
   6520 ; LINUX-64-PIC: 	movl	$262144, %eax
   6521 ; LINUX-64-PIC-NEXT: 	addq	dst@GOTPCREL(%rip), %rax
   6522 ; LINUX-64-PIC-NEXT: 	ret
   6523 
   6524 ; DARWIN-32-STATIC: _bam01:
   6525 ; DARWIN-32-STATIC: 	movl	$_dst+262144, %eax
   6526 ; DARWIN-32-STATIC-NEXT: 	ret
   6527 
   6528 ; DARWIN-32-DYNAMIC: _bam01:
   6529 ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax
   6530 ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_dst$non_lazy_ptr, %eax
   6531 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6532 
   6533 ; DARWIN-32-PIC: _bam01:
   6534 ; DARWIN-32-PIC: 	calll	L100$pb
   6535 ; DARWIN-32-PIC-NEXT: L100$pb:
   6536 ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]]
   6537 ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax
   6538 ; DARWIN-32-PIC-NEXT: 	addl	L_dst$non_lazy_ptr-L100$pb([[ECX]]), %eax
   6539 ; DARWIN-32-PIC-NEXT: 	ret
   6540 
   6541 ; DARWIN-64-STATIC: _bam01:
   6542 ; DARWIN-64-STATIC: 	movl	$262144, %eax
   6543 ; DARWIN-64-STATIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rax
   6544 ; DARWIN-64-STATIC-NEXT: 	ret
   6545 
   6546 ; DARWIN-64-DYNAMIC: _bam01:
   6547 ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax
   6548 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rax
   6549 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6550 
   6551 ; DARWIN-64-PIC: _bam01:
   6552 ; DARWIN-64-PIC: 	movl	$262144, %eax
   6553 ; DARWIN-64-PIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rax
   6554 ; DARWIN-64-PIC-NEXT: 	ret
   6555 }
   6556 
   6557 define i8* @bxm01() nounwind {
   6558 entry:
   6559 	ret i8* bitcast (i32* getelementptr ([32 x i32]* @xdst, i32 0, i64 65536) to i8*)
   6560 ; LINUX-64-STATIC: bxm01:
   6561 ; LINUX-64-STATIC: movl    $xdst+262144, %eax
   6562 ; LINUX-64-STATIC: ret
   6563 
   6564 ; LINUX-32-STATIC: bxm01:
   6565 ; LINUX-32-STATIC: 	movl	$xdst+262144, %eax
   6566 ; LINUX-32-STATIC-NEXT: 	ret
   6567 
   6568 ; LINUX-32-PIC: bxm01:
   6569 ; LINUX-32-PIC: 	movl	$xdst+262144, %eax
   6570 ; LINUX-32-PIC-NEXT: 	ret
   6571 
   6572 ; LINUX-64-PIC: bxm01:
   6573 ; LINUX-64-PIC: 	movl	$262144, %eax
   6574 ; LINUX-64-PIC-NEXT: 	addq	xdst@GOTPCREL(%rip), %rax
   6575 ; LINUX-64-PIC-NEXT: 	ret
   6576 
   6577 ; DARWIN-32-STATIC: _bxm01:
   6578 ; DARWIN-32-STATIC: 	movl	$_xdst+262144, %eax
   6579 ; DARWIN-32-STATIC-NEXT: 	ret
   6580 
   6581 ; DARWIN-32-DYNAMIC: _bxm01:
   6582 ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax
   6583 ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_xdst$non_lazy_ptr, %eax
   6584 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6585 
   6586 ; DARWIN-32-PIC: _bxm01:
   6587 ; DARWIN-32-PIC: 	calll	L101$pb
   6588 ; DARWIN-32-PIC-NEXT: L101$pb:
   6589 ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]]
   6590 ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax
   6591 ; DARWIN-32-PIC-NEXT: 	addl	L_xdst$non_lazy_ptr-L101$pb([[ECX]]), %eax
   6592 ; DARWIN-32-PIC-NEXT: 	ret
   6593 
   6594 ; DARWIN-64-STATIC: _bxm01:
   6595 ; DARWIN-64-STATIC: 	movl	$262144, %eax
   6596 ; DARWIN-64-STATIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rax
   6597 ; DARWIN-64-STATIC-NEXT: 	ret
   6598 
   6599 ; DARWIN-64-DYNAMIC: _bxm01:
   6600 ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax
   6601 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rax
   6602 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6603 
   6604 ; DARWIN-64-PIC: _bxm01:
   6605 ; DARWIN-64-PIC: 	movl	$262144, %eax
   6606 ; DARWIN-64-PIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rax
   6607 ; DARWIN-64-PIC-NEXT: 	ret
   6608 }
   6609 
   6610 define i8* @bam02() nounwind {
   6611 entry:
   6612 	%0 = load i32** @ptr, align 8
   6613 	%1 = getelementptr i32* %0, i64 65536
   6614 	%2 = bitcast i32* %1 to i8*
   6615 	ret i8* %2
   6616 ; LINUX-64-STATIC: bam02:
   6617 ; LINUX-64-STATIC: movl    $262144, %eax
   6618 ; LINUX-64-STATIC: addq    ptr(%rip), %rax
   6619 ; LINUX-64-STATIC: ret
   6620 
   6621 ; LINUX-32-STATIC: bam02:
   6622 ; LINUX-32-STATIC: 	movl	$262144, %eax
   6623 ; LINUX-32-STATIC-NEXT: 	addl	ptr, %eax
   6624 ; LINUX-32-STATIC-NEXT: 	ret
   6625 
   6626 ; LINUX-32-PIC: bam02:
   6627 ; LINUX-32-PIC: 	movl	$262144, %eax
   6628 ; LINUX-32-PIC-NEXT: 	addl	ptr, %eax
   6629 ; LINUX-32-PIC-NEXT: 	ret
   6630 
   6631 ; LINUX-64-PIC: bam02:
   6632 ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   6633 ; LINUX-64-PIC-NEXT: 	movl	$262144, %eax
   6634 ; LINUX-64-PIC-NEXT: 	addq	([[RCX]]), %rax
   6635 ; LINUX-64-PIC-NEXT: 	ret
   6636 
   6637 ; DARWIN-32-STATIC: _bam02:
   6638 ; DARWIN-32-STATIC: 	movl	$262144, %eax
   6639 ; DARWIN-32-STATIC-NEXT: 	addl	_ptr, %eax
   6640 ; DARWIN-32-STATIC-NEXT: 	ret
   6641 
   6642 ; DARWIN-32-DYNAMIC: _bam02:
   6643 ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]]
   6644 ; DARWIN-32-DYNAMIC-NEXT: 	movl	$262144, %eax
   6645 ; DARWIN-32-DYNAMIC-NEXT: 	addl	([[ECX]]), %eax
   6646 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6647 
   6648 ; DARWIN-32-PIC: _bam02:
   6649 ; DARWIN-32-PIC: 	calll	L102$pb
   6650 ; DARWIN-32-PIC-NEXT: L102$pb:
   6651 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6652 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L102$pb([[EAX]]), [[ECX:%e.x]]
   6653 ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax
   6654 ; DARWIN-32-PIC-NEXT: 	addl	([[ECX]]), %eax
   6655 ; DARWIN-32-PIC-NEXT: 	ret
   6656 
   6657 ; DARWIN-64-STATIC: _bam02:
   6658 ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   6659 ; DARWIN-64-STATIC-NEXT: 	movl	$262144, %eax
   6660 ; DARWIN-64-STATIC-NEXT: 	addq	([[RCX]]), %rax
   6661 ; DARWIN-64-STATIC-NEXT: 	ret
   6662 
   6663 ; DARWIN-64-DYNAMIC: _bam02:
   6664 ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   6665 ; DARWIN-64-DYNAMIC-NEXT: 	movl	$262144, %eax
   6666 ; DARWIN-64-DYNAMIC-NEXT: 	addq	([[RCX]]), %rax
   6667 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6668 
   6669 ; DARWIN-64-PIC: _bam02:
   6670 ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]]
   6671 ; DARWIN-64-PIC-NEXT: 	movl	$262144, %eax
   6672 ; DARWIN-64-PIC-NEXT: 	addq	([[RCX]]), %rax
   6673 ; DARWIN-64-PIC-NEXT: 	ret
   6674 }
   6675 
   6676 define i8* @bam03() nounwind {
   6677 entry:
   6678 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @dsrc, i32 0, i64 65536) to i8*)
   6679 ; LINUX-64-STATIC: bam03:
   6680 ; LINUX-64-STATIC: movl    $dsrc+262144, %eax
   6681 ; LINUX-64-STATIC: ret
   6682 
   6683 ; LINUX-32-STATIC: bam03:
   6684 ; LINUX-32-STATIC: 	movl	$dsrc+262144, %eax
   6685 ; LINUX-32-STATIC-NEXT: 	ret
   6686 
   6687 ; LINUX-32-PIC: bam03:
   6688 ; LINUX-32-PIC: 	movl	$dsrc+262144, %eax
   6689 ; LINUX-32-PIC-NEXT: 	ret
   6690 
   6691 ; LINUX-64-PIC: bam03:
   6692 ; LINUX-64-PIC: 	movl	$262144, %eax
   6693 ; LINUX-64-PIC-NEXT: 	addq	dsrc@GOTPCREL(%rip), %rax
   6694 ; LINUX-64-PIC-NEXT: 	ret
   6695 
   6696 ; DARWIN-32-STATIC: _bam03:
   6697 ; DARWIN-32-STATIC: 	movl	$_dsrc+262144, %eax
   6698 ; DARWIN-32-STATIC-NEXT: 	ret
   6699 
   6700 ; DARWIN-32-DYNAMIC: _bam03:
   6701 ; DARWIN-32-DYNAMIC: 	movl	$_dsrc+262144, %eax
   6702 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6703 
   6704 ; DARWIN-32-PIC: _bam03:
   6705 ; DARWIN-32-PIC: 	calll	L103$pb
   6706 ; DARWIN-32-PIC-NEXT: L103$pb:
   6707 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6708 ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L103$pb)+262144([[EAX]]), %eax
   6709 ; DARWIN-32-PIC-NEXT: 	ret
   6710 
   6711 ; DARWIN-64-STATIC: _bam03:
   6712 ; DARWIN-64-STATIC: 	leaq	_dsrc+262144(%rip), %rax
   6713 ; DARWIN-64-STATIC-NEXT: 	ret
   6714 
   6715 ; DARWIN-64-DYNAMIC: _bam03:
   6716 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc+262144(%rip), %rax
   6717 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6718 
   6719 ; DARWIN-64-PIC: _bam03:
   6720 ; DARWIN-64-PIC: 	leaq	_dsrc+262144(%rip), %rax
   6721 ; DARWIN-64-PIC-NEXT: 	ret
   6722 }
   6723 
   6724 define i8* @bam04() nounwind {
   6725 entry:
   6726 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ddst, i32 0, i64 65536) to i8*)
   6727 ; LINUX-64-STATIC: bam04:
   6728 ; LINUX-64-STATIC: movl    $ddst+262144, %eax
   6729 ; LINUX-64-STATIC: ret
   6730 
   6731 ; LINUX-32-STATIC: bam04:
   6732 ; LINUX-32-STATIC: 	movl	$ddst+262144, %eax
   6733 ; LINUX-32-STATIC-NEXT: 	ret
   6734 
   6735 ; LINUX-32-PIC: bam04:
   6736 ; LINUX-32-PIC: 	movl	$ddst+262144, %eax
   6737 ; LINUX-32-PIC-NEXT: 	ret
   6738 
   6739 ; LINUX-64-PIC: bam04:
   6740 ; LINUX-64-PIC: 	movl	$262144, %eax
   6741 ; LINUX-64-PIC-NEXT: 	addq	ddst@GOTPCREL(%rip), %rax
   6742 ; LINUX-64-PIC-NEXT: 	ret
   6743 
   6744 ; DARWIN-32-STATIC: _bam04:
   6745 ; DARWIN-32-STATIC: 	movl	$_ddst+262144, %eax
   6746 ; DARWIN-32-STATIC-NEXT: 	ret
   6747 
   6748 ; DARWIN-32-DYNAMIC: _bam04:
   6749 ; DARWIN-32-DYNAMIC: 	movl	$_ddst+262144, %eax
   6750 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6751 
   6752 ; DARWIN-32-PIC: _bam04:
   6753 ; DARWIN-32-PIC: 	calll	L104$pb
   6754 ; DARWIN-32-PIC-NEXT: L104$pb:
   6755 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6756 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L104$pb)+262144([[EAX]]), %eax
   6757 ; DARWIN-32-PIC-NEXT: 	ret
   6758 
   6759 ; DARWIN-64-STATIC: _bam04:
   6760 ; DARWIN-64-STATIC: 	leaq	_ddst+262144(%rip), %rax
   6761 ; DARWIN-64-STATIC-NEXT: 	ret
   6762 
   6763 ; DARWIN-64-DYNAMIC: _bam04:
   6764 ; DARWIN-64-DYNAMIC: 	leaq	_ddst+262144(%rip), %rax
   6765 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6766 
   6767 ; DARWIN-64-PIC: _bam04:
   6768 ; DARWIN-64-PIC: 	leaq	_ddst+262144(%rip), %rax
   6769 ; DARWIN-64-PIC-NEXT: 	ret
   6770 }
   6771 
   6772 define i8* @bam05() nounwind {
   6773 entry:
   6774 	%0 = load i32** @dptr, align 8
   6775 	%1 = getelementptr i32* %0, i64 65536
   6776 	%2 = bitcast i32* %1 to i8*
   6777 	ret i8* %2
   6778 ; LINUX-64-STATIC: bam05:
   6779 ; LINUX-64-STATIC: movl    $262144, %eax
   6780 ; LINUX-64-STATIC: addq    dptr(%rip), %rax
   6781 ; LINUX-64-STATIC: ret
   6782 
   6783 ; LINUX-32-STATIC: bam05:
   6784 ; LINUX-32-STATIC: 	movl	$262144, %eax
   6785 ; LINUX-32-STATIC-NEXT: 	addl	dptr, %eax
   6786 ; LINUX-32-STATIC-NEXT: 	ret
   6787 
   6788 ; LINUX-32-PIC: bam05:
   6789 ; LINUX-32-PIC: 	movl	$262144, %eax
   6790 ; LINUX-32-PIC-NEXT: 	addl	dptr, %eax
   6791 ; LINUX-32-PIC-NEXT: 	ret
   6792 
   6793 ; LINUX-64-PIC: bam05:
   6794 ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]]
   6795 ; LINUX-64-PIC-NEXT: 	movl	$262144, %eax
   6796 ; LINUX-64-PIC-NEXT: 	addq	([[RCX]]), %rax
   6797 ; LINUX-64-PIC-NEXT: 	ret
   6798 
   6799 ; DARWIN-32-STATIC: _bam05:
   6800 ; DARWIN-32-STATIC: 	movl	$262144, %eax
   6801 ; DARWIN-32-STATIC-NEXT: 	addl	_dptr, %eax
   6802 ; DARWIN-32-STATIC-NEXT: 	ret
   6803 
   6804 ; DARWIN-32-DYNAMIC: _bam05:
   6805 ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax
   6806 ; DARWIN-32-DYNAMIC-NEXT: 	addl	_dptr, %eax
   6807 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6808 
   6809 ; DARWIN-32-PIC: _bam05:
   6810 ; DARWIN-32-PIC: 	calll	L105$pb
   6811 ; DARWIN-32-PIC-NEXT: L105$pb:
   6812 ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]]
   6813 ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax
   6814 ; DARWIN-32-PIC-NEXT: 	addl	_dptr-L105$pb([[ECX]]), %eax
   6815 ; DARWIN-32-PIC-NEXT: 	ret
   6816 
   6817 ; DARWIN-64-STATIC: _bam05:
   6818 ; DARWIN-64-STATIC: 	movl	$262144, %eax
   6819 ; DARWIN-64-STATIC-NEXT: 	addq	_dptr(%rip), %rax
   6820 ; DARWIN-64-STATIC-NEXT: 	ret
   6821 
   6822 ; DARWIN-64-DYNAMIC: _bam05:
   6823 ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax
   6824 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dptr(%rip), %rax
   6825 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6826 
   6827 ; DARWIN-64-PIC: _bam05:
   6828 ; DARWIN-64-PIC: 	movl	$262144, %eax
   6829 ; DARWIN-64-PIC-NEXT: 	addq	_dptr(%rip), %rax
   6830 ; DARWIN-64-PIC-NEXT: 	ret
   6831 }
   6832 
   6833 define i8* @bam06() nounwind {
   6834 entry:
   6835 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @lsrc, i32 0, i64 65536) to i8*)
   6836 ; LINUX-64-STATIC: bam06:
   6837 ; LINUX-64-STATIC: movl    $lsrc+262144, %eax
   6838 ; LINUX-64-STATIC: ret
   6839 
   6840 ; LINUX-32-STATIC: bam06:
   6841 ; LINUX-32-STATIC: 	movl	$lsrc+262144, %eax
   6842 ; LINUX-32-STATIC-NEXT: 	ret
   6843 
   6844 ; LINUX-32-PIC: bam06:
   6845 ; LINUX-32-PIC: 	movl	$lsrc+262144, %eax
   6846 ; LINUX-32-PIC-NEXT: 	ret
   6847 
   6848 ; LINUX-64-PIC: bam06:
   6849 ; LINUX-64-PIC: 	leaq	lsrc+262144(%rip), %rax
   6850 ; LINUX-64-PIC-NEXT: 	ret
   6851 
   6852 ; DARWIN-32-STATIC: _bam06:
   6853 ; DARWIN-32-STATIC: 	movl	$_lsrc+262144, %eax
   6854 ; DARWIN-32-STATIC-NEXT: 	ret
   6855 
   6856 ; DARWIN-32-DYNAMIC: _bam06:
   6857 ; DARWIN-32-DYNAMIC: 	movl	$_lsrc+262144, %eax
   6858 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6859 
   6860 ; DARWIN-32-PIC: _bam06:
   6861 ; DARWIN-32-PIC: 	calll	L106$pb
   6862 ; DARWIN-32-PIC-NEXT: L106$pb:
   6863 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   6864 ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L106$pb)+262144([[EAX]]), %eax
   6865 ; DARWIN-32-PIC-NEXT: 	ret
   6866 
   6867 ; DARWIN-64-STATIC: _bam06:
   6868 ; DARWIN-64-STATIC: 	leaq	_lsrc+262144(%rip), %rax
   6869 ; DARWIN-64-STATIC-NEXT: 	ret
   6870 
   6871 ; DARWIN-64-DYNAMIC: _bam06:
   6872 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc+262144(%rip), %rax
   6873 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6874 
   6875 ; DARWIN-64-PIC: _bam06:
   6876 ; DARWIN-64-PIC: 	leaq	_lsrc+262144(%rip), %rax
   6877 ; DARWIN-64-PIC-NEXT: 	ret
   6878 }
   6879 
   6880 define i8* @bam07() nounwind {
   6881 entry:
   6882 	ret i8* bitcast (i32* getelementptr ([131072 x i32]* @ldst, i32 0, i64 65536) to i8*)
   6883 ; LINUX-64-STATIC: bam07:
   6884 ; LINUX-64-STATIC: movl    $ldst+262144, %eax
   6885 ; LINUX-64-STATIC: ret
   6886 
   6887 ; LINUX-32-STATIC: bam07:
   6888 ; LINUX-32-STATIC: 	movl	$ldst+262144, %eax
   6889 ; LINUX-32-STATIC-NEXT: 	ret
   6890 
   6891 ; LINUX-32-PIC: bam07:
   6892 ; LINUX-32-PIC: 	movl	$ldst+262144, %eax
   6893 ; LINUX-32-PIC-NEXT: 	ret
   6894 
   6895 ; LINUX-64-PIC: bam07:
   6896 ; LINUX-64-PIC: 	leaq	ldst+262144(%rip), %rax
   6897 ; LINUX-64-PIC-NEXT: 	ret
   6898 
   6899 ; DARWIN-32-STATIC: _bam07:
   6900 ; DARWIN-32-STATIC: 	movl	$_ldst+262144, %eax
   6901 ; DARWIN-32-STATIC-NEXT: 	ret
   6902 
   6903 ; DARWIN-32-DYNAMIC: _bam07:
   6904 ; DARWIN-32-DYNAMIC: 	movl	$_ldst+262144, %eax
   6905 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6906 
   6907 ; DARWIN-32-PIC: _bam07:
   6908 ; DARWIN-32-PIC: 	calll	L107$pb
   6909 ; DARWIN-32-PIC-NEXT: L107$pb:
   6910 ; DARWIN-32-PIC-NEXT: 	popl	%eax
   6911 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L107$pb)+262144([[EAX]]), %eax
   6912 ; DARWIN-32-PIC-NEXT: 	ret
   6913 
   6914 ; DARWIN-64-STATIC: _bam07:
   6915 ; DARWIN-64-STATIC: 	leaq	_ldst+262144(%rip), %rax
   6916 ; DARWIN-64-STATIC-NEXT: 	ret
   6917 
   6918 ; DARWIN-64-DYNAMIC: _bam07:
   6919 ; DARWIN-64-DYNAMIC: 	leaq	_ldst+262144(%rip), %rax
   6920 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6921 
   6922 ; DARWIN-64-PIC: _bam07:
   6923 ; DARWIN-64-PIC: 	leaq	_ldst+262144(%rip), %rax
   6924 ; DARWIN-64-PIC-NEXT: 	ret
   6925 }
   6926 
   6927 define i8* @bam08() nounwind {
   6928 entry:
   6929 	%0 = load i32** @lptr, align 8
   6930 	%1 = getelementptr i32* %0, i64 65536
   6931 	%2 = bitcast i32* %1 to i8*
   6932 	ret i8* %2
   6933 ; LINUX-64-STATIC: bam08:
   6934 ; LINUX-64-STATIC: movl    $262144, %eax
   6935 ; LINUX-64-STATIC: addq    lptr(%rip), %rax
   6936 ; LINUX-64-STATIC: ret
   6937 
   6938 ; LINUX-32-STATIC: bam08:
   6939 ; LINUX-32-STATIC: 	movl	$262144, %eax
   6940 ; LINUX-32-STATIC-NEXT: 	addl	lptr, %eax
   6941 ; LINUX-32-STATIC-NEXT: 	ret
   6942 
   6943 ; LINUX-32-PIC: bam08:
   6944 ; LINUX-32-PIC: 	movl	$262144, %eax
   6945 ; LINUX-32-PIC-NEXT: 	addl	lptr, %eax
   6946 ; LINUX-32-PIC-NEXT: 	ret
   6947 
   6948 ; LINUX-64-PIC: bam08:
   6949 ; LINUX-64-PIC: 	movl	$262144, %eax
   6950 ; LINUX-64-PIC-NEXT: 	addq	lptr(%rip), %rax
   6951 ; LINUX-64-PIC-NEXT: 	ret
   6952 
   6953 ; DARWIN-32-STATIC: _bam08:
   6954 ; DARWIN-32-STATIC: 	movl	$262144, %eax
   6955 ; DARWIN-32-STATIC-NEXT: 	addl	_lptr, %eax
   6956 ; DARWIN-32-STATIC-NEXT: 	ret
   6957 
   6958 ; DARWIN-32-DYNAMIC: _bam08:
   6959 ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax
   6960 ; DARWIN-32-DYNAMIC-NEXT: 	addl	_lptr, %eax
   6961 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   6962 
   6963 ; DARWIN-32-PIC: _bam08:
   6964 ; DARWIN-32-PIC: 	calll	L108$pb
   6965 ; DARWIN-32-PIC-NEXT: L108$pb:
   6966 ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]]
   6967 ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax
   6968 ; DARWIN-32-PIC-NEXT: 	addl	_lptr-L108$pb([[ECX]]), %eax
   6969 ; DARWIN-32-PIC-NEXT: 	ret
   6970 
   6971 ; DARWIN-64-STATIC: _bam08:
   6972 ; DARWIN-64-STATIC: 	movl	$262144, %eax
   6973 ; DARWIN-64-STATIC-NEXT: 	addq	_lptr(%rip), %rax
   6974 ; DARWIN-64-STATIC-NEXT: 	ret
   6975 
   6976 ; DARWIN-64-DYNAMIC: _bam08:
   6977 ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax
   6978 ; DARWIN-64-DYNAMIC-NEXT: 	addq	_lptr(%rip), %rax
   6979 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   6980 
   6981 ; DARWIN-64-PIC: _bam08:
   6982 ; DARWIN-64-PIC: 	movl	$262144, %eax
   6983 ; DARWIN-64-PIC-NEXT: 	addq	_lptr(%rip), %rax
   6984 ; DARWIN-64-PIC-NEXT: 	ret
   6985 }
   6986 
   6987 define i8* @cat00(i64 %i) nounwind {
   6988 entry:
   6989 	%0 = add i64 %i, 16
   6990 	%1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
   6991 	%2 = bitcast i32* %1 to i8*
   6992 	ret i8* %2
   6993 ; LINUX-64-STATIC: cat00:
   6994 ; LINUX-64-STATIC: leaq    src+64(,%rdi,4), %rax
   6995 ; LINUX-64-STATIC: ret
   6996 
   6997 ; LINUX-32-STATIC: cat00:
   6998 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   6999 ; LINUX-32-STATIC-NEXT: 	leal	src+64(,[[EAX]],4), %eax
   7000 ; LINUX-32-STATIC-NEXT: 	ret
   7001 
   7002 ; LINUX-32-PIC: cat00:
   7003 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7004 ; LINUX-32-PIC-NEXT: 	leal	src+64(,[[EAX]],4), %eax
   7005 ; LINUX-32-PIC-NEXT: 	ret
   7006 
   7007 ; LINUX-64-PIC: cat00:
   7008 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   7009 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7010 ; LINUX-64-PIC-NEXT: 	ret
   7011 
   7012 ; DARWIN-32-STATIC: _cat00:
   7013 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7014 ; DARWIN-32-STATIC-NEXT: 	leal	_src+64(,[[EAX]],4), %eax
   7015 ; DARWIN-32-STATIC-NEXT: 	ret
   7016 
   7017 ; DARWIN-32-DYNAMIC: _cat00:
   7018 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7019 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   7020 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7021 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7022 
   7023 ; DARWIN-32-PIC: _cat00:
   7024 ; DARWIN-32-PIC: 	calll	L109$pb
   7025 ; DARWIN-32-PIC-NEXT: L109$pb:
   7026 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7027 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7028 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L109$pb([[EAX]]), [[EAX:%e.x]]
   7029 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7030 ; DARWIN-32-PIC-NEXT: 	ret
   7031 
   7032 ; DARWIN-64-STATIC: _cat00:
   7033 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   7034 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7035 ; DARWIN-64-STATIC-NEXT: 	ret
   7036 
   7037 ; DARWIN-64-DYNAMIC: _cat00:
   7038 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   7039 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7040 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7041 
   7042 ; DARWIN-64-PIC: _cat00:
   7043 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   7044 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7045 ; DARWIN-64-PIC-NEXT: 	ret
   7046 }
   7047 
   7048 define i8* @cxt00(i64 %i) nounwind {
   7049 entry:
   7050 	%0 = add i64 %i, 16
   7051 	%1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
   7052 	%2 = bitcast i32* %1 to i8*
   7053 	ret i8* %2
   7054 ; LINUX-64-STATIC: cxt00:
   7055 ; LINUX-64-STATIC: leaq    xsrc+64(,%rdi,4), %rax
   7056 ; LINUX-64-STATIC: ret
   7057 
   7058 ; LINUX-32-STATIC: cxt00:
   7059 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7060 ; LINUX-32-STATIC-NEXT: 	leal	xsrc+64(,[[EAX]],4), %eax
   7061 ; LINUX-32-STATIC-NEXT: 	ret
   7062 
   7063 ; LINUX-32-PIC: cxt00:
   7064 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7065 ; LINUX-32-PIC-NEXT: 	leal	xsrc+64(,[[EAX]],4), %eax
   7066 ; LINUX-32-PIC-NEXT: 	ret
   7067 
   7068 ; LINUX-64-PIC: cxt00:
   7069 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7070 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7071 ; LINUX-64-PIC-NEXT: 	ret
   7072 
   7073 ; DARWIN-32-STATIC: _cxt00:
   7074 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7075 ; DARWIN-32-STATIC-NEXT: 	leal	_xsrc+64(,[[EAX]],4), %eax
   7076 ; DARWIN-32-STATIC-NEXT: 	ret
   7077 
   7078 ; DARWIN-32-DYNAMIC: _cxt00:
   7079 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7080 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
   7081 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7082 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7083 
   7084 ; DARWIN-32-PIC: _cxt00:
   7085 ; DARWIN-32-PIC: 	calll	L110$pb
   7086 ; DARWIN-32-PIC-NEXT: L110$pb:
   7087 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7088 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7089 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L110$pb([[EAX]]), [[EAX:%e.x]]
   7090 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7091 ; DARWIN-32-PIC-NEXT: 	ret
   7092 
   7093 ; DARWIN-64-STATIC: _cxt00:
   7094 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7095 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7096 ; DARWIN-64-STATIC-NEXT: 	ret
   7097 
   7098 ; DARWIN-64-DYNAMIC: _cxt00:
   7099 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7100 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7101 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7102 
   7103 ; DARWIN-64-PIC: _cxt00:
   7104 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7105 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7106 ; DARWIN-64-PIC-NEXT: 	ret
   7107 }
   7108 
   7109 define i8* @cat01(i64 %i) nounwind {
   7110 entry:
   7111 	%0 = add i64 %i, 16
   7112 	%1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
   7113 	%2 = bitcast i32* %1 to i8*
   7114 	ret i8* %2
   7115 ; LINUX-64-STATIC: cat01:
   7116 ; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), %rax
   7117 ; LINUX-64-STATIC: ret
   7118 
   7119 ; LINUX-32-STATIC: cat01:
   7120 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7121 ; LINUX-32-STATIC-NEXT: 	leal	dst+64(,[[EAX]],4), %eax
   7122 ; LINUX-32-STATIC-NEXT: 	ret
   7123 
   7124 ; LINUX-32-PIC: cat01:
   7125 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7126 ; LINUX-32-PIC-NEXT: 	leal	dst+64(,[[EAX]],4), %eax
   7127 ; LINUX-32-PIC-NEXT: 	ret
   7128 
   7129 ; LINUX-64-PIC: cat01:
   7130 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7131 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7132 ; LINUX-64-PIC-NEXT: 	ret
   7133 
   7134 ; DARWIN-32-STATIC: _cat01:
   7135 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7136 ; DARWIN-32-STATIC-NEXT: 	leal	_dst+64(,[[EAX]],4), %eax
   7137 ; DARWIN-32-STATIC-NEXT: 	ret
   7138 
   7139 ; DARWIN-32-DYNAMIC: _cat01:
   7140 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7141 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]]
   7142 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7143 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7144 
   7145 ; DARWIN-32-PIC: _cat01:
   7146 ; DARWIN-32-PIC: 	calll	L111$pb
   7147 ; DARWIN-32-PIC-NEXT: L111$pb:
   7148 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7149 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7150 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L111$pb([[EAX]]), [[EAX:%e.x]]
   7151 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7152 ; DARWIN-32-PIC-NEXT: 	ret
   7153 
   7154 ; DARWIN-64-STATIC: _cat01:
   7155 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7156 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7157 ; DARWIN-64-STATIC-NEXT: 	ret
   7158 
   7159 ; DARWIN-64-DYNAMIC: _cat01:
   7160 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7161 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7162 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7163 
   7164 ; DARWIN-64-PIC: _cat01:
   7165 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7166 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7167 ; DARWIN-64-PIC-NEXT: 	ret
   7168 }
   7169 
   7170 define i8* @cxt01(i64 %i) nounwind {
   7171 entry:
   7172 	%0 = add i64 %i, 16
   7173 	%1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
   7174 	%2 = bitcast i32* %1 to i8*
   7175 	ret i8* %2
   7176 ; LINUX-64-STATIC: cxt01:
   7177 ; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), %rax
   7178 ; LINUX-64-STATIC: ret
   7179 
   7180 ; LINUX-32-STATIC: cxt01:
   7181 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7182 ; LINUX-32-STATIC-NEXT: 	leal	xdst+64(,[[EAX]],4), %eax
   7183 ; LINUX-32-STATIC-NEXT: 	ret
   7184 
   7185 ; LINUX-32-PIC: cxt01:
   7186 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7187 ; LINUX-32-PIC-NEXT: 	leal	xdst+64(,[[EAX]],4), %eax
   7188 ; LINUX-32-PIC-NEXT: 	ret
   7189 
   7190 ; LINUX-64-PIC: cxt01:
   7191 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7192 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7193 ; LINUX-64-PIC-NEXT: 	ret
   7194 
   7195 ; DARWIN-32-STATIC: _cxt01:
   7196 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7197 ; DARWIN-32-STATIC-NEXT: 	leal	_xdst+64(,[[EAX]],4), %eax
   7198 ; DARWIN-32-STATIC-NEXT: 	ret
   7199 
   7200 ; DARWIN-32-DYNAMIC: _cxt01:
   7201 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7202 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]]
   7203 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7204 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7205 
   7206 ; DARWIN-32-PIC: _cxt01:
   7207 ; DARWIN-32-PIC: 	calll	L112$pb
   7208 ; DARWIN-32-PIC-NEXT: L112$pb:
   7209 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7210 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7211 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L112$pb([[EAX]]), [[EAX:%e.x]]
   7212 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7213 ; DARWIN-32-PIC-NEXT: 	ret
   7214 
   7215 ; DARWIN-64-STATIC: _cxt01:
   7216 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7217 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7218 ; DARWIN-64-STATIC-NEXT: 	ret
   7219 
   7220 ; DARWIN-64-DYNAMIC: _cxt01:
   7221 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7222 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7223 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7224 
   7225 ; DARWIN-64-PIC: _cxt01:
   7226 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7227 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7228 ; DARWIN-64-PIC-NEXT: 	ret
   7229 }
   7230 
   7231 define i8* @cat02(i64 %i) nounwind {
   7232 entry:
   7233 	%0 = load i32** @ptr, align 8
   7234 	%1 = add i64 %i, 16
   7235 	%2 = getelementptr i32* %0, i64 %1
   7236 	%3 = bitcast i32* %2 to i8*
   7237 	ret i8* %3
   7238 ; LINUX-64-STATIC: cat02:
   7239 ; LINUX-64-STATIC: movq    ptr(%rip), [[RAX:%r.x]]
   7240 ; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax
   7241 ; LINUX-64-STATIC: ret
   7242 
   7243 ; LINUX-32-STATIC: cat02:
   7244 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7245 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   7246 ; LINUX-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7247 ; LINUX-32-STATIC-NEXT: 	ret
   7248 
   7249 ; LINUX-32-PIC: cat02:
   7250 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7251 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   7252 ; LINUX-32-PIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7253 ; LINUX-32-PIC-NEXT: 	ret
   7254 
   7255 ; LINUX-64-PIC: cat02:
   7256 ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7257 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7258 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7259 ; LINUX-64-PIC-NEXT: 	ret
   7260 
   7261 ; DARWIN-32-STATIC: _cat02:
   7262 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7263 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
   7264 ; DARWIN-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7265 ; DARWIN-32-STATIC-NEXT: 	ret
   7266 
   7267 ; DARWIN-32-DYNAMIC: _cat02:
   7268 ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]]
   7269 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   7270 ; DARWIN-32-DYNAMIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7271 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7272 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7273 
   7274 ; DARWIN-32-PIC: _cat02:
   7275 ; DARWIN-32-PIC: 	calll	L113$pb
   7276 ; DARWIN-32-PIC-NEXT: L113$pb:
   7277 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7278 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L113$pb([[EAX]]), [[EAX:%e.x]]
   7279 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   7280 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7281 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7282 ; DARWIN-32-PIC-NEXT: 	ret
   7283 
   7284 ; DARWIN-64-STATIC: _cat02:
   7285 ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7286 ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7287 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7288 ; DARWIN-64-STATIC-NEXT: 	ret
   7289 
   7290 ; DARWIN-64-DYNAMIC: _cat02:
   7291 ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7292 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7293 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7294 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7295 
   7296 ; DARWIN-64-PIC: _cat02:
   7297 ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7298 ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7299 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7300 ; DARWIN-64-PIC-NEXT: 	ret
   7301 }
   7302 
   7303 define i8* @cat03(i64 %i) nounwind {
   7304 entry:
   7305 	%0 = add i64 %i, 16
   7306 	%1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
   7307 	%2 = bitcast i32* %1 to i8*
   7308 	ret i8* %2
   7309 ; LINUX-64-STATIC: cat03:
   7310 ; LINUX-64-STATIC: leaq    dsrc+64(,%rdi,4), %rax
   7311 ; LINUX-64-STATIC: ret
   7312 
   7313 ; LINUX-32-STATIC: cat03:
   7314 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7315 ; LINUX-32-STATIC-NEXT: 	leal	dsrc+64(,[[EAX]],4), %eax
   7316 ; LINUX-32-STATIC-NEXT: 	ret
   7317 
   7318 ; LINUX-32-PIC: cat03:
   7319 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7320 ; LINUX-32-PIC-NEXT: 	leal	dsrc+64(,[[EAX]],4), %eax
   7321 ; LINUX-32-PIC-NEXT: 	ret
   7322 
   7323 ; LINUX-64-PIC: cat03:
   7324 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7325 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7326 ; LINUX-64-PIC-NEXT: 	ret
   7327 
   7328 ; DARWIN-32-STATIC: _cat03:
   7329 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7330 ; DARWIN-32-STATIC-NEXT: 	leal	_dsrc+64(,[[EAX]],4), %eax
   7331 ; DARWIN-32-STATIC-NEXT: 	ret
   7332 
   7333 ; DARWIN-32-DYNAMIC: _cat03:
   7334 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7335 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_dsrc+64(,[[EAX]],4), %eax
   7336 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7337 
   7338 ; DARWIN-32-PIC: _cat03:
   7339 ; DARWIN-32-PIC: 	calll	L114$pb
   7340 ; DARWIN-32-PIC-NEXT: L114$pb:
   7341 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7342 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7343 ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L114$pb)+64([[EAX]],[[ECX]],4), %eax
   7344 ; DARWIN-32-PIC-NEXT: 	ret
   7345 
   7346 ; DARWIN-64-STATIC: _cat03:
   7347 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   7348 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7349 ; DARWIN-64-STATIC-NEXT: 	ret
   7350 
   7351 ; DARWIN-64-DYNAMIC: _cat03:
   7352 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   7353 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7354 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7355 
   7356 ; DARWIN-64-PIC: _cat03:
   7357 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   7358 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7359 ; DARWIN-64-PIC-NEXT: 	ret
   7360 }
   7361 
   7362 define i8* @cat04(i64 %i) nounwind {
   7363 entry:
   7364 	%0 = add i64 %i, 16
   7365 	%1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
   7366 	%2 = bitcast i32* %1 to i8*
   7367 	ret i8* %2
   7368 ; LINUX-64-STATIC: cat04:
   7369 ; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), %rax
   7370 ; LINUX-64-STATIC: ret
   7371 
   7372 ; LINUX-32-STATIC: cat04:
   7373 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7374 ; LINUX-32-STATIC-NEXT: 	leal	ddst+64(,[[EAX]],4), %eax
   7375 ; LINUX-32-STATIC-NEXT: 	ret
   7376 
   7377 ; LINUX-32-PIC: cat04:
   7378 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7379 ; LINUX-32-PIC-NEXT: 	leal	ddst+64(,[[EAX]],4), %eax
   7380 ; LINUX-32-PIC-NEXT: 	ret
   7381 
   7382 ; LINUX-64-PIC: cat04:
   7383 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
   7384 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7385 ; LINUX-64-PIC-NEXT: 	ret
   7386 
   7387 ; DARWIN-32-STATIC: _cat04:
   7388 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7389 ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), %eax
   7390 ; DARWIN-32-STATIC-NEXT: 	ret
   7391 
   7392 ; DARWIN-32-DYNAMIC: _cat04:
   7393 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7394 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), %eax
   7395 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7396 
   7397 ; DARWIN-32-PIC: _cat04:
   7398 ; DARWIN-32-PIC: 	calll	L115$pb
   7399 ; DARWIN-32-PIC-NEXT: L115$pb:
   7400 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7401 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7402 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L115$pb)+64([[EAX]],[[ECX]],4), %eax
   7403 ; DARWIN-32-PIC-NEXT: 	ret
   7404 
   7405 ; DARWIN-64-STATIC: _cat04:
   7406 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   7407 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7408 ; DARWIN-64-STATIC-NEXT: 	ret
   7409 
   7410 ; DARWIN-64-DYNAMIC: _cat04:
   7411 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   7412 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7413 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7414 
   7415 ; DARWIN-64-PIC: _cat04:
   7416 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   7417 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7418 ; DARWIN-64-PIC-NEXT: 	ret
   7419 }
   7420 
   7421 define i8* @cat05(i64 %i) nounwind {
   7422 entry:
   7423 	%0 = load i32** @dptr, align 8
   7424 	%1 = add i64 %i, 16
   7425 	%2 = getelementptr i32* %0, i64 %1
   7426 	%3 = bitcast i32* %2 to i8*
   7427 	ret i8* %3
   7428 ; LINUX-64-STATIC: cat05:
   7429 ; LINUX-64-STATIC: movq    dptr(%rip), [[RAX:%r.x]]
   7430 ; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax
   7431 ; LINUX-64-STATIC: ret
   7432 
   7433 ; LINUX-32-STATIC: cat05:
   7434 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7435 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   7436 ; LINUX-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7437 ; LINUX-32-STATIC-NEXT: 	ret
   7438 
   7439 ; LINUX-32-PIC: cat05:
   7440 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7441 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   7442 ; LINUX-32-PIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7443 ; LINUX-32-PIC-NEXT: 	ret
   7444 
   7445 ; LINUX-64-PIC: cat05:
   7446 ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7447 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7448 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7449 ; LINUX-64-PIC-NEXT: 	ret
   7450 
   7451 ; DARWIN-32-STATIC: _cat05:
   7452 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7453 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   7454 ; DARWIN-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7455 ; DARWIN-32-STATIC-NEXT: 	ret
   7456 
   7457 ; DARWIN-32-DYNAMIC: _cat05:
   7458 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7459 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   7460 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7461 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7462 
   7463 ; DARWIN-32-PIC: _cat05:
   7464 ; DARWIN-32-PIC: 	calll	L116$pb
   7465 ; DARWIN-32-PIC-NEXT: L116$pb:
   7466 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7467 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7468 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L116$pb([[EAX]]), [[EAX:%e.x]]
   7469 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7470 ; DARWIN-32-PIC-NEXT: 	ret
   7471 
   7472 ; DARWIN-64-STATIC: _cat05:
   7473 ; DARWIN-64-STATIC: 	movq	_dptr(%rip), [[RAX:%r.x]]
   7474 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7475 ; DARWIN-64-STATIC-NEXT: 	ret
   7476 
   7477 ; DARWIN-64-DYNAMIC: _cat05:
   7478 ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), [[RAX:%r.x]]
   7479 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7480 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7481 
   7482 ; DARWIN-64-PIC: _cat05:
   7483 ; DARWIN-64-PIC: 	movq	_dptr(%rip), [[RAX:%r.x]]
   7484 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7485 ; DARWIN-64-PIC-NEXT: 	ret
   7486 }
   7487 
   7488 define i8* @cat06(i64 %i) nounwind {
   7489 entry:
   7490 	%0 = add i64 %i, 16
   7491 	%1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
   7492 	%2 = bitcast i32* %1 to i8*
   7493 	ret i8* %2
   7494 ; LINUX-64-STATIC: cat06:
   7495 ; LINUX-64-STATIC: leaq    lsrc+64(,%rdi,4), %rax
   7496 ; LINUX-64-STATIC: ret
   7497 
   7498 ; LINUX-32-STATIC: cat06:
   7499 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7500 ; LINUX-32-STATIC-NEXT: 	leal	lsrc+64(,[[EAX]],4), %eax
   7501 ; LINUX-32-STATIC-NEXT: 	ret
   7502 
   7503 ; LINUX-32-PIC: cat06:
   7504 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7505 ; LINUX-32-PIC-NEXT: 	leal	lsrc+64(,[[EAX]],4), %eax
   7506 ; LINUX-32-PIC-NEXT: 	ret
   7507 
   7508 ; LINUX-64-PIC: cat06:
   7509 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   7510 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7511 ; LINUX-64-PIC-NEXT: 	ret
   7512 
   7513 ; DARWIN-32-STATIC: _cat06:
   7514 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7515 ; DARWIN-32-STATIC-NEXT: 	leal	_lsrc+64(,[[EAX]],4), %eax
   7516 ; DARWIN-32-STATIC-NEXT: 	ret
   7517 
   7518 ; DARWIN-32-DYNAMIC: _cat06:
   7519 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7520 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_lsrc+64(,[[EAX]],4), %eax
   7521 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7522 
   7523 ; DARWIN-32-PIC: _cat06:
   7524 ; DARWIN-32-PIC: 	calll	L117$pb
   7525 ; DARWIN-32-PIC-NEXT: L117$pb:
   7526 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7527 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7528 ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L117$pb)+64([[EAX]],[[ECX]],4), %eax
   7529 ; DARWIN-32-PIC-NEXT: 	ret
   7530 
   7531 ; DARWIN-64-STATIC: _cat06:
   7532 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   7533 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7534 ; DARWIN-64-STATIC-NEXT: 	ret
   7535 
   7536 ; DARWIN-64-DYNAMIC: _cat06:
   7537 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   7538 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7539 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7540 
   7541 ; DARWIN-64-PIC: _cat06:
   7542 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   7543 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7544 ; DARWIN-64-PIC-NEXT: 	ret
   7545 }
   7546 
   7547 define i8* @cat07(i64 %i) nounwind {
   7548 entry:
   7549 	%0 = add i64 %i, 16
   7550 	%1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
   7551 	%2 = bitcast i32* %1 to i8*
   7552 	ret i8* %2
   7553 ; LINUX-64-STATIC: cat07:
   7554 ; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), %rax
   7555 ; LINUX-64-STATIC: ret
   7556 
   7557 ; LINUX-32-STATIC: cat07:
   7558 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7559 ; LINUX-32-STATIC-NEXT: 	leal	ldst+64(,[[EAX]],4), %eax
   7560 ; LINUX-32-STATIC-NEXT: 	ret
   7561 
   7562 ; LINUX-32-PIC: cat07:
   7563 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7564 ; LINUX-32-PIC-NEXT: 	leal	ldst+64(,[[EAX]],4), %eax
   7565 ; LINUX-32-PIC-NEXT: 	ret
   7566 
   7567 ; LINUX-64-PIC: cat07:
   7568 ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]]
   7569 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7570 ; LINUX-64-PIC-NEXT: 	ret
   7571 
   7572 ; DARWIN-32-STATIC: _cat07:
   7573 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7574 ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), %eax
   7575 ; DARWIN-32-STATIC-NEXT: 	ret
   7576 
   7577 ; DARWIN-32-DYNAMIC: _cat07:
   7578 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7579 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), %eax
   7580 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7581 
   7582 ; DARWIN-32-PIC: _cat07:
   7583 ; DARWIN-32-PIC: 	calll	L118$pb
   7584 ; DARWIN-32-PIC-NEXT: L118$pb:
   7585 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7586 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7587 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L118$pb)+64([[EAX]],[[ECX]],4), %eax
   7588 ; DARWIN-32-PIC-NEXT: 	ret
   7589 
   7590 ; DARWIN-64-STATIC: _cat07:
   7591 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   7592 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7593 ; DARWIN-64-STATIC-NEXT: 	ret
   7594 
   7595 ; DARWIN-64-DYNAMIC: _cat07:
   7596 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   7597 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7598 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7599 
   7600 ; DARWIN-64-PIC: _cat07:
   7601 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   7602 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7603 ; DARWIN-64-PIC-NEXT: 	ret
   7604 }
   7605 
   7606 define i8* @cat08(i64 %i) nounwind {
   7607 entry:
   7608 	%0 = load i32** @lptr, align 8
   7609 	%1 = add i64 %i, 16
   7610 	%2 = getelementptr i32* %0, i64 %1
   7611 	%3 = bitcast i32* %2 to i8*
   7612 	ret i8* %3
   7613 ; LINUX-64-STATIC: cat08:
   7614 ; LINUX-64-STATIC: movq    lptr(%rip), [[RAX:%r.x]]
   7615 ; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax
   7616 ; LINUX-64-STATIC: ret
   7617 
   7618 ; LINUX-32-STATIC: cat08:
   7619 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7620 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   7621 ; LINUX-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7622 ; LINUX-32-STATIC-NEXT: 	ret
   7623 
   7624 ; LINUX-32-PIC: cat08:
   7625 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7626 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   7627 ; LINUX-32-PIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7628 ; LINUX-32-PIC-NEXT: 	ret
   7629 
   7630 ; LINUX-64-PIC: cat08:
   7631 ; LINUX-64-PIC: 	movq	lptr(%rip), [[RAX:%r.x]]
   7632 ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7633 ; LINUX-64-PIC-NEXT: 	ret
   7634 
   7635 ; DARWIN-32-STATIC: _cat08:
   7636 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7637 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   7638 ; DARWIN-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7639 ; DARWIN-32-STATIC-NEXT: 	ret
   7640 
   7641 ; DARWIN-32-DYNAMIC: _cat08:
   7642 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7643 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   7644 ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax
   7645 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7646 
   7647 ; DARWIN-32-PIC: _cat08:
   7648 ; DARWIN-32-PIC: 	calll	L119$pb
   7649 ; DARWIN-32-PIC-NEXT: L119$pb:
   7650 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7651 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7652 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L119$pb([[EAX]]), [[EAX:%e.x]]
   7653 ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax
   7654 ; DARWIN-32-PIC-NEXT: 	ret
   7655 
   7656 ; DARWIN-64-STATIC: _cat08:
   7657 ; DARWIN-64-STATIC: 	movq	_lptr(%rip), [[RAX:%r.x]]
   7658 ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7659 ; DARWIN-64-STATIC-NEXT: 	ret
   7660 
   7661 ; DARWIN-64-DYNAMIC: _cat08:
   7662 ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), [[RAX:%r.x]]
   7663 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7664 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7665 
   7666 ; DARWIN-64-PIC: _cat08:
   7667 ; DARWIN-64-PIC: 	movq	_lptr(%rip), [[RAX:%r.x]]
   7668 ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax
   7669 ; DARWIN-64-PIC-NEXT: 	ret
   7670 }
   7671 
   7672 define i8* @cam00(i64 %i) nounwind {
   7673 entry:
   7674 	%0 = add i64 %i, 65536
   7675 	%1 = getelementptr [131072 x i32]* @src, i64 0, i64 %0
   7676 	%2 = bitcast i32* %1 to i8*
   7677 	ret i8* %2
   7678 ; LINUX-64-STATIC: cam00:
   7679 ; LINUX-64-STATIC: leaq    src+262144(,%rdi,4), %rax
   7680 ; LINUX-64-STATIC: ret
   7681 
   7682 ; LINUX-32-STATIC: cam00:
   7683 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7684 ; LINUX-32-STATIC-NEXT: 	leal	src+262144(,[[EAX]],4), %eax
   7685 ; LINUX-32-STATIC-NEXT: 	ret
   7686 
   7687 ; LINUX-32-PIC: cam00:
   7688 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7689 ; LINUX-32-PIC-NEXT: 	leal	src+262144(,[[EAX]],4), %eax
   7690 ; LINUX-32-PIC-NEXT: 	ret
   7691 
   7692 ; LINUX-64-PIC: cam00:
   7693 ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]]
   7694 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7695 ; LINUX-64-PIC-NEXT: 	ret
   7696 
   7697 ; DARWIN-32-STATIC: _cam00:
   7698 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7699 ; DARWIN-32-STATIC-NEXT: 	leal	_src+262144(,[[EAX]],4), %eax
   7700 ; DARWIN-32-STATIC-NEXT: 	ret
   7701 
   7702 ; DARWIN-32-DYNAMIC: _cam00:
   7703 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7704 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]]
   7705 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7706 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7707 
   7708 ; DARWIN-32-PIC: _cam00:
   7709 ; DARWIN-32-PIC: 	calll	L120$pb
   7710 ; DARWIN-32-PIC-NEXT: L120$pb:
   7711 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7712 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7713 ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L120$pb([[EAX]]), [[EAX:%e.x]]
   7714 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   7715 ; DARWIN-32-PIC-NEXT: 	ret
   7716 
   7717 ; DARWIN-64-STATIC: _cam00:
   7718 ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   7719 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7720 ; DARWIN-64-STATIC-NEXT: 	ret
   7721 
   7722 ; DARWIN-64-DYNAMIC: _cam00:
   7723 ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   7724 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7725 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7726 
   7727 ; DARWIN-64-PIC: _cam00:
   7728 ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]]
   7729 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7730 ; DARWIN-64-PIC-NEXT: 	ret
   7731 }
   7732 
   7733 define i8* @cxm00(i64 %i) nounwind {
   7734 entry:
   7735 	%0 = add i64 %i, 65536
   7736 	%1 = getelementptr [32 x i32]* @xsrc, i64 0, i64 %0
   7737 	%2 = bitcast i32* %1 to i8*
   7738 	ret i8* %2
   7739 ; LINUX-64-STATIC: cxm00:
   7740 ; LINUX-64-STATIC: leaq    xsrc+262144(,%rdi,4), %rax
   7741 ; LINUX-64-STATIC: ret
   7742 
   7743 ; LINUX-32-STATIC: cxm00:
   7744 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7745 ; LINUX-32-STATIC-NEXT: 	leal	xsrc+262144(,[[EAX]],4), %eax
   7746 ; LINUX-32-STATIC-NEXT: 	ret
   7747 
   7748 ; LINUX-32-PIC: cxm00:
   7749 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7750 ; LINUX-32-PIC-NEXT: 	leal	xsrc+262144(,[[EAX]],4), %eax
   7751 ; LINUX-32-PIC-NEXT: 	ret
   7752 
   7753 ; LINUX-64-PIC: cxm00:
   7754 ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7755 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7756 ; LINUX-64-PIC-NEXT: 	ret
   7757 
   7758 ; DARWIN-32-STATIC: _cxm00:
   7759 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7760 ; DARWIN-32-STATIC-NEXT: 	leal	_xsrc+262144(,[[EAX]],4), %eax
   7761 ; DARWIN-32-STATIC-NEXT: 	ret
   7762 
   7763 ; DARWIN-32-DYNAMIC: _cxm00:
   7764 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7765 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]]
   7766 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7767 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7768 
   7769 ; DARWIN-32-PIC: _cxm00:
   7770 ; DARWIN-32-PIC: 	calll	L121$pb
   7771 ; DARWIN-32-PIC-NEXT: L121$pb:
   7772 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7773 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7774 ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L121$pb([[EAX]]), [[EAX:%e.x]]
   7775 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   7776 ; DARWIN-32-PIC-NEXT: 	ret
   7777 
   7778 ; DARWIN-64-STATIC: _cxm00:
   7779 ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7780 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7781 ; DARWIN-64-STATIC-NEXT: 	ret
   7782 
   7783 ; DARWIN-64-DYNAMIC: _cxm00:
   7784 ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7785 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7786 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7787 
   7788 ; DARWIN-64-PIC: _cxm00:
   7789 ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   7790 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7791 ; DARWIN-64-PIC-NEXT: 	ret
   7792 }
   7793 
   7794 define i8* @cam01(i64 %i) nounwind {
   7795 entry:
   7796 	%0 = add i64 %i, 65536
   7797 	%1 = getelementptr [131072 x i32]* @dst, i64 0, i64 %0
   7798 	%2 = bitcast i32* %1 to i8*
   7799 	ret i8* %2
   7800 ; LINUX-64-STATIC: cam01:
   7801 ; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), %rax
   7802 ; LINUX-64-STATIC: ret
   7803 
   7804 ; LINUX-32-STATIC: cam01:
   7805 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7806 ; LINUX-32-STATIC-NEXT: 	leal	dst+262144(,[[EAX]],4), %eax
   7807 ; LINUX-32-STATIC-NEXT: 	ret
   7808 
   7809 ; LINUX-32-PIC: cam01:
   7810 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7811 ; LINUX-32-PIC-NEXT: 	leal	dst+262144(,[[EAX]],4), %eax
   7812 ; LINUX-32-PIC-NEXT: 	ret
   7813 
   7814 ; LINUX-64-PIC: cam01:
   7815 ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7816 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7817 ; LINUX-64-PIC-NEXT: 	ret
   7818 
   7819 ; DARWIN-32-STATIC: _cam01:
   7820 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7821 ; DARWIN-32-STATIC-NEXT: 	leal	_dst+262144(,[[EAX]],4), %eax
   7822 ; DARWIN-32-STATIC-NEXT: 	ret
   7823 
   7824 ; DARWIN-32-DYNAMIC: _cam01:
   7825 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7826 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]]
   7827 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7828 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7829 
   7830 ; DARWIN-32-PIC: _cam01:
   7831 ; DARWIN-32-PIC: 	calll	L122$pb
   7832 ; DARWIN-32-PIC-NEXT: L122$pb:
   7833 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7834 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7835 ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L122$pb([[EAX]]), [[EAX:%e.x]]
   7836 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   7837 ; DARWIN-32-PIC-NEXT: 	ret
   7838 
   7839 ; DARWIN-64-STATIC: _cam01:
   7840 ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7841 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7842 ; DARWIN-64-STATIC-NEXT: 	ret
   7843 
   7844 ; DARWIN-64-DYNAMIC: _cam01:
   7845 ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7846 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7847 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7848 
   7849 ; DARWIN-64-PIC: _cam01:
   7850 ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]]
   7851 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7852 ; DARWIN-64-PIC-NEXT: 	ret
   7853 }
   7854 
   7855 define i8* @cxm01(i64 %i) nounwind {
   7856 entry:
   7857 	%0 = add i64 %i, 65536
   7858 	%1 = getelementptr [32 x i32]* @xdst, i64 0, i64 %0
   7859 	%2 = bitcast i32* %1 to i8*
   7860 	ret i8* %2
   7861 ; LINUX-64-STATIC: cxm01:
   7862 ; LINUX-64-STATIC: leaq    xdst+262144(,%rdi,4), %rax
   7863 ; LINUX-64-STATIC: ret
   7864 
   7865 ; LINUX-32-STATIC: cxm01:
   7866 ; LINUX-32-STATIC: 	movl	4(%esp), %eax
   7867 ; LINUX-32-STATIC-NEXT: 	leal	xdst+262144(,[[EAX]],4), %eax
   7868 ; LINUX-32-STATIC-NEXT: 	ret
   7869 
   7870 ; LINUX-32-PIC: cxm01:
   7871 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7872 ; LINUX-32-PIC-NEXT: 	leal	xdst+262144(,[[EAX]],4), %eax
   7873 ; LINUX-32-PIC-NEXT: 	ret
   7874 
   7875 ; LINUX-64-PIC: cxm01:
   7876 ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7877 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7878 ; LINUX-64-PIC-NEXT: 	ret
   7879 
   7880 ; DARWIN-32-STATIC: _cxm01:
   7881 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7882 ; DARWIN-32-STATIC-NEXT: 	leal	_xdst+262144(,[[EAX]],4), %eax
   7883 ; DARWIN-32-STATIC-NEXT: 	ret
   7884 
   7885 ; DARWIN-32-DYNAMIC: _cxm01:
   7886 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   7887 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]]
   7888 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7889 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7890 
   7891 ; DARWIN-32-PIC: _cxm01:
   7892 ; DARWIN-32-PIC: 	calll	L123$pb
   7893 ; DARWIN-32-PIC-NEXT: L123$pb:
   7894 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7895 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7896 ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L123$pb([[EAX]]), [[EAX:%e.x]]
   7897 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   7898 ; DARWIN-32-PIC-NEXT: 	ret
   7899 
   7900 ; DARWIN-64-STATIC: _cxm01:
   7901 ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7902 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7903 ; DARWIN-64-STATIC-NEXT: 	ret
   7904 
   7905 ; DARWIN-64-DYNAMIC: _cxm01:
   7906 ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7907 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7908 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7909 
   7910 ; DARWIN-64-PIC: _cxm01:
   7911 ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]]
   7912 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7913 ; DARWIN-64-PIC-NEXT: 	ret
   7914 }
   7915 
   7916 define i8* @cam02(i64 %i) nounwind {
   7917 entry:
   7918 	%0 = load i32** @ptr, align 8
   7919 	%1 = add i64 %i, 65536
   7920 	%2 = getelementptr i32* %0, i64 %1
   7921 	%3 = bitcast i32* %2 to i8*
   7922 	ret i8* %3
   7923 ; LINUX-64-STATIC: cam02:
   7924 ; LINUX-64-STATIC: movq    ptr(%rip), [[RAX:%r.x]]
   7925 ; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax
   7926 ; LINUX-64-STATIC: ret
   7927 
   7928 ; LINUX-32-STATIC: cam02:
   7929 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7930 ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   7931 ; LINUX-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7932 ; LINUX-32-STATIC-NEXT: 	ret
   7933 
   7934 ; LINUX-32-PIC: cam02:
   7935 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   7936 ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]]
   7937 ; LINUX-32-PIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7938 ; LINUX-32-PIC-NEXT: 	ret
   7939 
   7940 ; LINUX-64-PIC: cam02:
   7941 ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7942 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7943 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7944 ; LINUX-64-PIC-NEXT: 	ret
   7945 
   7946 ; DARWIN-32-STATIC: _cam02:
   7947 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   7948 ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]]
   7949 ; DARWIN-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   7950 ; DARWIN-32-STATIC-NEXT: 	ret
   7951 
   7952 ; DARWIN-32-DYNAMIC: _cam02:
   7953 ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]]
   7954 ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   7955 ; DARWIN-32-DYNAMIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7956 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   7957 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   7958 
   7959 ; DARWIN-32-PIC: _cam02:
   7960 ; DARWIN-32-PIC: 	calll	L124$pb
   7961 ; DARWIN-32-PIC-NEXT: L124$pb:
   7962 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   7963 ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L124$pb([[EAX]]), [[EAX:%e.x]]
   7964 ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]]
   7965 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   7966 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   7967 ; DARWIN-32-PIC-NEXT: 	ret
   7968 
   7969 ; DARWIN-64-STATIC: _cam02:
   7970 ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7971 ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7972 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7973 ; DARWIN-64-STATIC-NEXT: 	ret
   7974 
   7975 ; DARWIN-64-DYNAMIC: _cam02:
   7976 ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7977 ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7978 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7979 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   7980 
   7981 ; DARWIN-64-PIC: _cam02:
   7982 ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]]
   7983 ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   7984 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   7985 ; DARWIN-64-PIC-NEXT: 	ret
   7986 }
   7987 
   7988 define i8* @cam03(i64 %i) nounwind {
   7989 entry:
   7990 	%0 = add i64 %i, 65536
   7991 	%1 = getelementptr [131072 x i32]* @dsrc, i64 0, i64 %0
   7992 	%2 = bitcast i32* %1 to i8*
   7993 	ret i8* %2
   7994 ; LINUX-64-STATIC: cam03:
   7995 ; LINUX-64-STATIC: leaq    dsrc+262144(,%rdi,4), %rax
   7996 ; LINUX-64-STATIC: ret
   7997 
   7998 ; LINUX-32-STATIC: cam03:
   7999 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8000 ; LINUX-32-STATIC-NEXT: 	leal	dsrc+262144(,[[EAX]],4), %eax
   8001 ; LINUX-32-STATIC-NEXT: 	ret
   8002 
   8003 ; LINUX-32-PIC: cam03:
   8004 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   8005 ; LINUX-32-PIC-NEXT: 	leal	dsrc+262144(,[[EAX]],4), %eax
   8006 ; LINUX-32-PIC-NEXT: 	ret
   8007 
   8008 ; LINUX-64-PIC: cam03:
   8009 ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]]
   8010 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8011 ; LINUX-64-PIC-NEXT: 	ret
   8012 
   8013 ; DARWIN-32-STATIC: _cam03:
   8014 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8015 ; DARWIN-32-STATIC-NEXT: 	leal	_dsrc+262144(,[[EAX]],4), %eax
   8016 ; DARWIN-32-STATIC-NEXT: 	ret
   8017 
   8018 ; DARWIN-32-DYNAMIC: _cam03:
   8019 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   8020 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_dsrc+262144(,[[EAX]],4), %eax
   8021 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8022 
   8023 ; DARWIN-32-PIC: _cam03:
   8024 ; DARWIN-32-PIC: 	calll	L125$pb
   8025 ; DARWIN-32-PIC-NEXT: L125$pb:
   8026 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8027 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   8028 ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L125$pb)+262144([[EAX]],[[ECX]],4), %eax
   8029 ; DARWIN-32-PIC-NEXT: 	ret
   8030 
   8031 ; DARWIN-64-STATIC: _cam03:
   8032 ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   8033 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8034 ; DARWIN-64-STATIC-NEXT: 	ret
   8035 
   8036 ; DARWIN-64-DYNAMIC: _cam03:
   8037 ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   8038 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8039 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8040 
   8041 ; DARWIN-64-PIC: _cam03:
   8042 ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]]
   8043 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8044 ; DARWIN-64-PIC-NEXT: 	ret
   8045 }
   8046 
   8047 define i8* @cam04(i64 %i) nounwind {
   8048 entry:
   8049 	%0 = add i64 %i, 65536
   8050 	%1 = getelementptr [131072 x i32]* @ddst, i64 0, i64 %0
   8051 	%2 = bitcast i32* %1 to i8*
   8052 	ret i8* %2
   8053 ; LINUX-64-STATIC: cam04:
   8054 ; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), %rax
   8055 ; LINUX-64-STATIC: ret
   8056 
   8057 ; LINUX-32-STATIC: cam04:
   8058 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8059 ; LINUX-32-STATIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), %eax
   8060 ; LINUX-32-STATIC-NEXT: 	ret
   8061 
   8062 ; LINUX-32-PIC: cam04:
   8063 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   8064 ; LINUX-32-PIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), %eax
   8065 ; LINUX-32-PIC-NEXT: 	ret
   8066 
   8067 ; LINUX-64-PIC: cam04:
   8068 ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]]
   8069 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8070 ; LINUX-64-PIC-NEXT: 	ret
   8071 
   8072 ; DARWIN-32-STATIC: _cam04:
   8073 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8074 ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), %eax
   8075 ; DARWIN-32-STATIC-NEXT: 	ret
   8076 
   8077 ; DARWIN-32-DYNAMIC: _cam04:
   8078 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   8079 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), %eax
   8080 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8081 
   8082 ; DARWIN-32-PIC: _cam04:
   8083 ; DARWIN-32-PIC: 	calll	L126$pb
   8084 ; DARWIN-32-PIC-NEXT: L126$pb:
   8085 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8086 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   8087 ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L126$pb)+262144([[EAX]],[[ECX]],4), %eax
   8088 ; DARWIN-32-PIC-NEXT: 	ret
   8089 
   8090 ; DARWIN-64-STATIC: _cam04:
   8091 ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   8092 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8093 ; DARWIN-64-STATIC-NEXT: 	ret
   8094 
   8095 ; DARWIN-64-DYNAMIC: _cam04:
   8096 ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   8097 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8098 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8099 
   8100 ; DARWIN-64-PIC: _cam04:
   8101 ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]]
   8102 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8103 ; DARWIN-64-PIC-NEXT: 	ret
   8104 }
   8105 
   8106 define i8* @cam05(i64 %i) nounwind {
   8107 entry:
   8108 	%0 = load i32** @dptr, align 8
   8109 	%1 = add i64 %i, 65536
   8110 	%2 = getelementptr i32* %0, i64 %1
   8111 	%3 = bitcast i32* %2 to i8*
   8112 	ret i8* %3
   8113 ; LINUX-64-STATIC: cam05:
   8114 ; LINUX-64-STATIC: movq    dptr(%rip), [[RAX:%r.x]]
   8115 ; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax
   8116 ; LINUX-64-STATIC: ret
   8117 
   8118 ; LINUX-32-STATIC: cam05:
   8119 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8120 ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   8121 ; LINUX-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8122 ; LINUX-32-STATIC-NEXT: 	ret
   8123 
   8124 ; LINUX-32-PIC: cam05:
   8125 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   8126 ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]]
   8127 ; LINUX-32-PIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8128 ; LINUX-32-PIC-NEXT: 	ret
   8129 
   8130 ; LINUX-64-PIC: cam05:
   8131 ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]]
   8132 ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]]
   8133 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8134 ; LINUX-64-PIC-NEXT: 	ret
   8135 
   8136 ; DARWIN-32-STATIC: _cam05:
   8137 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8138 ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   8139 ; DARWIN-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8140 ; DARWIN-32-STATIC-NEXT: 	ret
   8141 
   8142 ; DARWIN-32-DYNAMIC: _cam05:
   8143 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   8144 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]]
   8145 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8146 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8147 
   8148 ; DARWIN-32-PIC: _cam05:
   8149 ; DARWIN-32-PIC: 	calll	L127$pb
   8150 ; DARWIN-32-PIC-NEXT: L127$pb:
   8151 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8152 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   8153 ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L127$pb([[EAX]]), [[EAX:%e.x]]
   8154 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   8155 ; DARWIN-32-PIC-NEXT: 	ret
   8156 
   8157 ; DARWIN-64-STATIC: _cam05:
   8158 ; DARWIN-64-STATIC: 	movq	_dptr(%rip), [[RAX:%r.x]]
   8159 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8160 ; DARWIN-64-STATIC-NEXT: 	ret
   8161 
   8162 ; DARWIN-64-DYNAMIC: _cam05:
   8163 ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), [[RAX:%r.x]]
   8164 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8165 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8166 
   8167 ; DARWIN-64-PIC: _cam05:
   8168 ; DARWIN-64-PIC: 	movq	_dptr(%rip), [[RAX:%r.x]]
   8169 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8170 ; DARWIN-64-PIC-NEXT: 	ret
   8171 }
   8172 
   8173 define i8* @cam06(i64 %i) nounwind {
   8174 entry:
   8175 	%0 = add i64 %i, 65536
   8176 	%1 = getelementptr [131072 x i32]* @lsrc, i64 0, i64 %0
   8177 	%2 = bitcast i32* %1 to i8*
   8178 	ret i8* %2
   8179 ; LINUX-64-STATIC: cam06:
   8180 ; LINUX-64-STATIC: leaq    lsrc+262144(,%rdi,4), %rax
   8181 ; LINUX-64-STATIC: ret
   8182 
   8183 ; LINUX-32-STATIC: cam06:
   8184 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8185 ; LINUX-32-STATIC-NEXT: 	leal	lsrc+262144(,[[EAX]],4), %eax
   8186 ; LINUX-32-STATIC-NEXT: 	ret
   8187 
   8188 ; LINUX-32-PIC: cam06:
   8189 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   8190 ; LINUX-32-PIC-NEXT: 	leal	lsrc+262144(,[[EAX]],4), %eax
   8191 ; LINUX-32-PIC-NEXT: 	ret
   8192 
   8193 ; LINUX-64-PIC: cam06:
   8194 ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]]
   8195 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8196 ; LINUX-64-PIC-NEXT: 	ret
   8197 
   8198 ; DARWIN-32-STATIC: _cam06:
   8199 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8200 ; DARWIN-32-STATIC-NEXT: 	leal	_lsrc+262144(,[[EAX]],4), %eax
   8201 ; DARWIN-32-STATIC-NEXT: 	ret
   8202 
   8203 ; DARWIN-32-DYNAMIC: _cam06:
   8204 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   8205 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_lsrc+262144(,[[EAX]],4), %eax
   8206 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8207 
   8208 ; DARWIN-32-PIC: _cam06:
   8209 ; DARWIN-32-PIC: 	calll	L128$pb
   8210 ; DARWIN-32-PIC-NEXT: L128$pb:
   8211 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8212 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   8213 ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L128$pb)+262144([[EAX]],[[ECX]],4), %eax
   8214 ; DARWIN-32-PIC-NEXT: 	ret
   8215 
   8216 ; DARWIN-64-STATIC: _cam06:
   8217 ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   8218 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8219 ; DARWIN-64-STATIC-NEXT: 	ret
   8220 
   8221 ; DARWIN-64-DYNAMIC: _cam06:
   8222 ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   8223 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8224 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8225 
   8226 ; DARWIN-64-PIC: _cam06:
   8227 ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]]
   8228 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8229 ; DARWIN-64-PIC-NEXT: 	ret
   8230 }
   8231 
   8232 define i8* @cam07(i64 %i) nounwind {
   8233 entry:
   8234 	%0 = add i64 %i, 65536
   8235 	%1 = getelementptr [131072 x i32]* @ldst, i64 0, i64 %0
   8236 	%2 = bitcast i32* %1 to i8*
   8237 	ret i8* %2
   8238 ; LINUX-64-STATIC: cam07:
   8239 ; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), %rax
   8240 ; LINUX-64-STATIC: ret
   8241 
   8242 ; LINUX-32-STATIC: cam07:
   8243 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8244 ; LINUX-32-STATIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), %eax
   8245 ; LINUX-32-STATIC-NEXT: 	ret
   8246 
   8247 ; LINUX-32-PIC: cam07:
   8248 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   8249 ; LINUX-32-PIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), %eax
   8250 ; LINUX-32-PIC-NEXT: 	ret
   8251 
   8252 ; LINUX-64-PIC: cam07:
   8253 ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]]
   8254 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8255 ; LINUX-64-PIC-NEXT: 	ret
   8256 
   8257 ; DARWIN-32-STATIC: _cam07:
   8258 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8259 ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), %eax
   8260 ; DARWIN-32-STATIC-NEXT: 	ret
   8261 
   8262 ; DARWIN-32-DYNAMIC: _cam07:
   8263 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   8264 ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), %eax
   8265 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8266 
   8267 ; DARWIN-32-PIC: _cam07:
   8268 ; DARWIN-32-PIC: 	calll	L129$pb
   8269 ; DARWIN-32-PIC-NEXT: L129$pb:
   8270 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8271 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   8272 ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L129$pb)+262144([[EAX]],[[ECX]],4), %eax
   8273 ; DARWIN-32-PIC-NEXT: 	ret
   8274 
   8275 ; DARWIN-64-STATIC: _cam07:
   8276 ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   8277 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8278 ; DARWIN-64-STATIC-NEXT: 	ret
   8279 
   8280 ; DARWIN-64-DYNAMIC: _cam07:
   8281 ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   8282 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8283 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8284 
   8285 ; DARWIN-64-PIC: _cam07:
   8286 ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]]
   8287 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8288 ; DARWIN-64-PIC-NEXT: 	ret
   8289 }
   8290 
   8291 define i8* @cam08(i64 %i) nounwind {
   8292 entry:
   8293 	%0 = load i32** @lptr, align 8
   8294 	%1 = add i64 %i, 65536
   8295 	%2 = getelementptr i32* %0, i64 %1
   8296 	%3 = bitcast i32* %2 to i8*
   8297 	ret i8* %3
   8298 ; LINUX-64-STATIC: cam08:
   8299 ; LINUX-64-STATIC: movq    lptr(%rip), [[RAX:%r.x]]
   8300 ; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax
   8301 ; LINUX-64-STATIC: ret
   8302 
   8303 ; LINUX-32-STATIC: cam08:
   8304 ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8305 ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   8306 ; LINUX-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8307 ; LINUX-32-STATIC-NEXT: 	ret
   8308 
   8309 ; LINUX-32-PIC: cam08:
   8310 ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]]
   8311 ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]]
   8312 ; LINUX-32-PIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8313 ; LINUX-32-PIC-NEXT: 	ret
   8314 
   8315 ; LINUX-64-PIC: cam08:
   8316 ; LINUX-64-PIC: 	movq	lptr(%rip), [[RAX:%r.x]]
   8317 ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8318 ; LINUX-64-PIC-NEXT: 	ret
   8319 
   8320 ; DARWIN-32-STATIC: _cam08:
   8321 ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]]
   8322 ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   8323 ; DARWIN-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8324 ; DARWIN-32-STATIC-NEXT: 	ret
   8325 
   8326 ; DARWIN-32-DYNAMIC: _cam08:
   8327 ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]]
   8328 ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]]
   8329 ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax
   8330 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8331 
   8332 ; DARWIN-32-PIC: _cam08:
   8333 ; DARWIN-32-PIC: 	calll	L130$pb
   8334 ; DARWIN-32-PIC-NEXT: L130$pb:
   8335 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8336 ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]]
   8337 ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L130$pb([[EAX]]), [[EAX:%e.x]]
   8338 ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax
   8339 ; DARWIN-32-PIC-NEXT: 	ret
   8340 
   8341 ; DARWIN-64-STATIC: _cam08:
   8342 ; DARWIN-64-STATIC: 	movq	_lptr(%rip), [[RAX:%r.x]]
   8343 ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8344 ; DARWIN-64-STATIC-NEXT: 	ret
   8345 
   8346 ; DARWIN-64-DYNAMIC: _cam08:
   8347 ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), [[RAX:%r.x]]
   8348 ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8349 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8350 
   8351 ; DARWIN-64-PIC: _cam08:
   8352 ; DARWIN-64-PIC: 	movq	_lptr(%rip), [[RAX:%r.x]]
   8353 ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax
   8354 ; DARWIN-64-PIC-NEXT: 	ret
   8355 }
   8356 
   8357 define void @lcallee() nounwind {
   8358 entry:
   8359 	call void @x() nounwind
   8360 	call void @x() nounwind
   8361 	call void @x() nounwind
   8362 	call void @x() nounwind
   8363 	call void @x() nounwind
   8364 	call void @x() nounwind
   8365 	call void @x() nounwind
   8366 	ret void
   8367 ; LINUX-64-STATIC: lcallee:
   8368 ; LINUX-64-STATIC: callq   x
   8369 ; LINUX-64-STATIC: callq   x
   8370 ; LINUX-64-STATIC: callq   x
   8371 ; LINUX-64-STATIC: callq   x
   8372 ; LINUX-64-STATIC: callq   x
   8373 ; LINUX-64-STATIC: callq   x
   8374 ; LINUX-64-STATIC: callq   x
   8375 ; LINUX-64-STATIC: ret
   8376 
   8377 ; LINUX-32-STATIC: lcallee:
   8378 ; LINUX-32-STATIC: 	subl
   8379 ; LINUX-32-STATIC-NEXT: 	calll	x
   8380 ; LINUX-32-STATIC-NEXT: 	calll	x
   8381 ; LINUX-32-STATIC-NEXT: 	calll	x
   8382 ; LINUX-32-STATIC-NEXT: 	calll	x
   8383 ; LINUX-32-STATIC-NEXT: 	calll	x
   8384 ; LINUX-32-STATIC-NEXT: 	calll	x
   8385 ; LINUX-32-STATIC-NEXT: 	calll	x
   8386 ; LINUX-32-STATIC-NEXT: 	addl
   8387 ; LINUX-32-STATIC-NEXT: 	ret
   8388 
   8389 ; LINUX-32-PIC: lcallee:
   8390 ; LINUX-32-PIC: 	subl
   8391 ; LINUX-32-PIC-NEXT: 	calll	x
   8392 ; LINUX-32-PIC-NEXT: 	calll	x
   8393 ; LINUX-32-PIC-NEXT: 	calll	x
   8394 ; LINUX-32-PIC-NEXT: 	calll	x
   8395 ; LINUX-32-PIC-NEXT: 	calll	x
   8396 ; LINUX-32-PIC-NEXT: 	calll	x
   8397 ; LINUX-32-PIC-NEXT: 	calll	x
   8398 ; LINUX-32-PIC-NEXT: 	addl
   8399 
   8400 ; LINUX-32-PIC-NEXT: 	ret
   8401 
   8402 ; LINUX-64-PIC: lcallee:
   8403 ; LINUX-64-PIC: 	pushq
   8404 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8405 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8406 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8407 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8408 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8409 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8410 ; LINUX-64-PIC-NEXT: 	callq	x@PLT
   8411 ; LINUX-64-PIC-NEXT: 	popq
   8412 ; LINUX-64-PIC-NEXT: 	ret
   8413 
   8414 ; DARWIN-32-STATIC: _lcallee:
   8415 ; DARWIN-32-STATIC: 	subl	$12, %esp
   8416 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8417 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8418 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8419 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8420 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8421 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8422 ; DARWIN-32-STATIC-NEXT: 	calll	_x
   8423 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   8424 ; DARWIN-32-STATIC-NEXT: 	ret
   8425 
   8426 ; DARWIN-32-DYNAMIC: _lcallee:
   8427 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   8428 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8429 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8430 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8431 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8432 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8433 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8434 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_x$stub
   8435 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   8436 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8437 
   8438 ; DARWIN-32-PIC: _lcallee:
   8439 ; DARWIN-32-PIC: 	subl	$12, %esp
   8440 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8441 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8442 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8443 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8444 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8445 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8446 ; DARWIN-32-PIC-NEXT: 	calll	L_x$stub
   8447 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   8448 ; DARWIN-32-PIC-NEXT: 	ret
   8449 
   8450 ; DARWIN-64-STATIC: _lcallee:
   8451 ; DARWIN-64-STATIC: 	pushq
   8452 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8453 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8454 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8455 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8456 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8457 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8458 ; DARWIN-64-STATIC-NEXT: 	callq	_x
   8459 ; DARWIN-64-STATIC-NEXT: 	popq
   8460 ; DARWIN-64-STATIC-NEXT: 	ret
   8461 
   8462 ; DARWIN-64-DYNAMIC: _lcallee:
   8463 ; DARWIN-64-DYNAMIC: 	pushq
   8464 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8465 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8466 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8467 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8468 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8469 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8470 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x
   8471 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   8472 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8473 
   8474 ; DARWIN-64-PIC: _lcallee:
   8475 ; DARWIN-64-PIC: 	pushq
   8476 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8477 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8478 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8479 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8480 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8481 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8482 ; DARWIN-64-PIC-NEXT: 	callq	_x
   8483 ; DARWIN-64-PIC-NEXT: 	popq
   8484 ; DARWIN-64-PIC-NEXT: 	ret
   8485 }
   8486 
   8487 declare void @x()
   8488 
   8489 define internal void @dcallee() nounwind {
   8490 entry:
   8491 	call void @y() nounwind
   8492 	call void @y() nounwind
   8493 	call void @y() nounwind
   8494 	call void @y() nounwind
   8495 	call void @y() nounwind
   8496 	call void @y() nounwind
   8497 	call void @y() nounwind
   8498 	ret void
   8499 ; LINUX-64-STATIC: dcallee:
   8500 ; LINUX-64-STATIC: callq   y
   8501 ; LINUX-64-STATIC: callq   y
   8502 ; LINUX-64-STATIC: callq   y
   8503 ; LINUX-64-STATIC: callq   y
   8504 ; LINUX-64-STATIC: callq   y
   8505 ; LINUX-64-STATIC: callq   y
   8506 ; LINUX-64-STATIC: callq   y
   8507 ; LINUX-64-STATIC: ret
   8508 
   8509 ; LINUX-32-STATIC: dcallee:
   8510 ; LINUX-32-STATIC: 	subl
   8511 ; LINUX-32-STATIC-NEXT: 	calll	y
   8512 ; LINUX-32-STATIC-NEXT: 	calll	y
   8513 ; LINUX-32-STATIC-NEXT: 	calll	y
   8514 ; LINUX-32-STATIC-NEXT: 	calll	y
   8515 ; LINUX-32-STATIC-NEXT: 	calll	y
   8516 ; LINUX-32-STATIC-NEXT: 	calll	y
   8517 ; LINUX-32-STATIC-NEXT: 	calll	y
   8518 ; LINUX-32-STATIC-NEXT: 	addl
   8519 ; LINUX-32-STATIC-NEXT: 	ret
   8520 
   8521 ; LINUX-32-PIC: dcallee:
   8522 ; LINUX-32-PIC: 	subl
   8523 ; LINUX-32-PIC-NEXT: 	calll	y
   8524 ; LINUX-32-PIC-NEXT: 	calll	y
   8525 ; LINUX-32-PIC-NEXT: 	calll	y
   8526 ; LINUX-32-PIC-NEXT: 	calll	y
   8527 ; LINUX-32-PIC-NEXT: 	calll	y
   8528 ; LINUX-32-PIC-NEXT: 	calll	y
   8529 ; LINUX-32-PIC-NEXT: 	calll	y
   8530 ; LINUX-32-PIC-NEXT: 	addl
   8531 
   8532 ; LINUX-32-PIC-NEXT: 	ret
   8533 
   8534 ; LINUX-64-PIC: dcallee:
   8535 ; LINUX-64-PIC: 	pushq
   8536 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8537 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8538 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8539 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8540 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8541 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8542 ; LINUX-64-PIC-NEXT: 	callq	y@PLT
   8543 ; LINUX-64-PIC-NEXT: 	popq
   8544 ; LINUX-64-PIC-NEXT: 	ret
   8545 
   8546 ; DARWIN-32-STATIC: _dcallee:
   8547 ; DARWIN-32-STATIC: 	subl	$12, %esp
   8548 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8549 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8550 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8551 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8552 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8553 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8554 ; DARWIN-32-STATIC-NEXT: 	calll	_y
   8555 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   8556 ; DARWIN-32-STATIC-NEXT: 	ret
   8557 
   8558 ; DARWIN-32-DYNAMIC: _dcallee:
   8559 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   8560 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8561 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8562 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8563 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8564 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8565 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8566 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_y$stub
   8567 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   8568 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8569 
   8570 ; DARWIN-32-PIC: _dcallee:
   8571 ; DARWIN-32-PIC: 	subl	$12, %esp
   8572 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8573 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8574 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8575 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8576 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8577 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8578 ; DARWIN-32-PIC-NEXT: 	calll	L_y$stub
   8579 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   8580 ; DARWIN-32-PIC-NEXT: 	ret
   8581 
   8582 ; DARWIN-64-STATIC: _dcallee:
   8583 ; DARWIN-64-STATIC: 	pushq
   8584 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8585 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8586 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8587 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8588 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8589 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8590 ; DARWIN-64-STATIC-NEXT: 	callq	_y
   8591 ; DARWIN-64-STATIC-NEXT: 	popq
   8592 ; DARWIN-64-STATIC-NEXT: 	ret
   8593 
   8594 ; DARWIN-64-DYNAMIC: _dcallee:
   8595 ; DARWIN-64-DYNAMIC: 	pushq
   8596 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8597 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8598 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8599 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8600 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8601 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8602 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y
   8603 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   8604 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8605 
   8606 ; DARWIN-64-PIC: _dcallee:
   8607 ; DARWIN-64-PIC: 	pushq
   8608 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8609 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8610 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8611 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8612 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8613 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8614 ; DARWIN-64-PIC-NEXT: 	callq	_y
   8615 ; DARWIN-64-PIC-NEXT: 	popq
   8616 ; DARWIN-64-PIC-NEXT: 	ret
   8617 }
   8618 
   8619 declare void @y()
   8620 
   8621 define void ()* @address() nounwind {
   8622 entry:
   8623 	ret void ()* @callee
   8624 ; LINUX-64-STATIC: address:
   8625 ; LINUX-64-STATIC: movl    $callee, %eax
   8626 ; LINUX-64-STATIC: ret
   8627 
   8628 ; LINUX-32-STATIC: address:
   8629 ; LINUX-32-STATIC: 	movl	$callee, %eax
   8630 ; LINUX-32-STATIC-NEXT: 	ret
   8631 
   8632 ; LINUX-32-PIC: address:
   8633 ; LINUX-32-PIC: 	movl	$callee, %eax
   8634 ; LINUX-32-PIC-NEXT: 	ret
   8635 
   8636 ; LINUX-64-PIC: address:
   8637 ; LINUX-64-PIC: 	movq	callee@GOTPCREL(%rip), %rax
   8638 ; LINUX-64-PIC-NEXT: 	ret
   8639 
   8640 ; DARWIN-32-STATIC: _address:
   8641 ; DARWIN-32-STATIC: 	movl	$_callee, %eax
   8642 ; DARWIN-32-STATIC-NEXT: 	ret
   8643 
   8644 ; DARWIN-32-DYNAMIC: _address:
   8645 ; DARWIN-32-DYNAMIC: 	movl	L_callee$non_lazy_ptr, %eax
   8646 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8647 
   8648 ; DARWIN-32-PIC: _address:
   8649 ; DARWIN-32-PIC: 	calll	L133$pb
   8650 ; DARWIN-32-PIC-NEXT: L133$pb:
   8651 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8652 ; DARWIN-32-PIC-NEXT: 	movl	L_callee$non_lazy_ptr-L133$pb([[EAX]]), %eax
   8653 ; DARWIN-32-PIC-NEXT: 	ret
   8654 
   8655 ; DARWIN-64-STATIC: _address:
   8656 ; DARWIN-64-STATIC: 	movq	_callee@GOTPCREL(%rip), %rax
   8657 ; DARWIN-64-STATIC-NEXT: 	ret
   8658 
   8659 ; DARWIN-64-DYNAMIC: _address:
   8660 ; DARWIN-64-DYNAMIC: 	movq	_callee@GOTPCREL(%rip), %rax
   8661 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8662 
   8663 ; DARWIN-64-PIC: _address:
   8664 ; DARWIN-64-PIC: 	movq	_callee@GOTPCREL(%rip), %rax
   8665 ; DARWIN-64-PIC-NEXT: 	ret
   8666 }
   8667 
   8668 declare void @callee()
   8669 
   8670 define void ()* @laddress() nounwind {
   8671 entry:
   8672 	ret void ()* @lcallee
   8673 ; LINUX-64-STATIC: laddress:
   8674 ; LINUX-64-STATIC: movl    $lcallee, %eax
   8675 ; LINUX-64-STATIC: ret
   8676 
   8677 ; LINUX-32-STATIC: laddress:
   8678 ; LINUX-32-STATIC: 	movl	$lcallee, %eax
   8679 ; LINUX-32-STATIC-NEXT: 	ret
   8680 
   8681 ; LINUX-32-PIC: laddress:
   8682 ; LINUX-32-PIC: 	movl	$lcallee, %eax
   8683 ; LINUX-32-PIC-NEXT: 	ret
   8684 
   8685 ; LINUX-64-PIC: laddress:
   8686 ; LINUX-64-PIC: 	movq	lcallee@GOTPCREL(%rip), %rax
   8687 ; LINUX-64-PIC-NEXT: 	ret
   8688 
   8689 ; DARWIN-32-STATIC: _laddress:
   8690 ; DARWIN-32-STATIC: 	movl	$_lcallee, %eax
   8691 ; DARWIN-32-STATIC-NEXT: 	ret
   8692 
   8693 ; DARWIN-32-DYNAMIC: _laddress:
   8694 ; DARWIN-32-DYNAMIC: 	movl	$_lcallee, %eax
   8695 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8696 
   8697 ; DARWIN-32-PIC: _laddress:
   8698 ; DARWIN-32-PIC: 	calll	L134$pb
   8699 ; DARWIN-32-PIC-NEXT: L134$pb:
   8700 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8701 ; DARWIN-32-PIC-NEXT: 	leal	_lcallee-L134$pb([[EAX]]), %eax
   8702 ; DARWIN-32-PIC-NEXT: 	ret
   8703 
   8704 ; DARWIN-64-STATIC: _laddress:
   8705 ; DARWIN-64-STATIC: 	leaq	_lcallee(%rip), %rax
   8706 ; DARWIN-64-STATIC-NEXT: 	ret
   8707 
   8708 ; DARWIN-64-DYNAMIC: _laddress:
   8709 ; DARWIN-64-DYNAMIC: 	leaq	_lcallee(%rip), %rax
   8710 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8711 
   8712 ; DARWIN-64-PIC: _laddress:
   8713 ; DARWIN-64-PIC: 	leaq	_lcallee(%rip), %rax
   8714 ; DARWIN-64-PIC-NEXT: 	ret
   8715 }
   8716 
   8717 define void ()* @daddress() nounwind {
   8718 entry:
   8719 	ret void ()* @dcallee
   8720 ; LINUX-64-STATIC: daddress:
   8721 ; LINUX-64-STATIC: movl    $dcallee, %eax
   8722 ; LINUX-64-STATIC: ret
   8723 
   8724 ; LINUX-32-STATIC: daddress:
   8725 ; LINUX-32-STATIC: 	movl	$dcallee, %eax
   8726 ; LINUX-32-STATIC-NEXT: 	ret
   8727 
   8728 ; LINUX-32-PIC: daddress:
   8729 ; LINUX-32-PIC: 	movl	$dcallee, %eax
   8730 ; LINUX-32-PIC-NEXT: 	ret
   8731 
   8732 ; LINUX-64-PIC: daddress:
   8733 ; LINUX-64-PIC: 	leaq	dcallee(%rip), %rax
   8734 ; LINUX-64-PIC-NEXT: 	ret
   8735 
   8736 ; DARWIN-32-STATIC: _daddress:
   8737 ; DARWIN-32-STATIC: 	movl	$_dcallee, %eax
   8738 ; DARWIN-32-STATIC-NEXT: 	ret
   8739 
   8740 ; DARWIN-32-DYNAMIC: _daddress:
   8741 ; DARWIN-32-DYNAMIC: 	movl	$_dcallee, %eax
   8742 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8743 
   8744 ; DARWIN-32-PIC: _daddress:
   8745 ; DARWIN-32-PIC: 	calll	L135$pb
   8746 ; DARWIN-32-PIC-NEXT: L135$pb:
   8747 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   8748 ; DARWIN-32-PIC-NEXT: 	leal	_dcallee-L135$pb([[EAX]]), %eax
   8749 ; DARWIN-32-PIC-NEXT: 	ret
   8750 
   8751 ; DARWIN-64-STATIC: _daddress:
   8752 ; DARWIN-64-STATIC: 	leaq	_dcallee(%rip), %rax
   8753 ; DARWIN-64-STATIC-NEXT: 	ret
   8754 
   8755 ; DARWIN-64-DYNAMIC: _daddress:
   8756 ; DARWIN-64-DYNAMIC: 	leaq	_dcallee(%rip), %rax
   8757 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8758 
   8759 ; DARWIN-64-PIC: _daddress:
   8760 ; DARWIN-64-PIC: 	leaq	_dcallee(%rip), %rax
   8761 ; DARWIN-64-PIC-NEXT: 	ret
   8762 }
   8763 
   8764 define void @caller() nounwind {
   8765 entry:
   8766 	call void @callee() nounwind
   8767 	call void @callee() nounwind
   8768 	ret void
   8769 ; LINUX-64-STATIC: caller:
   8770 ; LINUX-64-STATIC: callq   callee
   8771 ; LINUX-64-STATIC: callq   callee
   8772 ; LINUX-64-STATIC: ret
   8773 
   8774 ; LINUX-32-STATIC: caller:
   8775 ; LINUX-32-STATIC: 	subl
   8776 ; LINUX-32-STATIC-NEXT: 	calll	callee
   8777 ; LINUX-32-STATIC-NEXT: 	calll	callee
   8778 ; LINUX-32-STATIC-NEXT: 	addl
   8779 ; LINUX-32-STATIC-NEXT: 	ret
   8780 
   8781 ; LINUX-32-PIC: caller:
   8782 ; LINUX-32-PIC: 	subl
   8783 ; LINUX-32-PIC-NEXT: 	calll	callee
   8784 ; LINUX-32-PIC-NEXT: 	calll	callee
   8785 ; LINUX-32-PIC-NEXT: 	addl
   8786 
   8787 ; LINUX-32-PIC-NEXT: 	ret
   8788 
   8789 ; LINUX-64-PIC: caller:
   8790 ; LINUX-64-PIC: 	pushq
   8791 ; LINUX-64-PIC-NEXT: 	callq	callee@PLT
   8792 ; LINUX-64-PIC-NEXT: 	callq	callee@PLT
   8793 ; LINUX-64-PIC-NEXT: 	popq
   8794 ; LINUX-64-PIC-NEXT: 	ret
   8795 
   8796 ; DARWIN-32-STATIC: _caller:
   8797 ; DARWIN-32-STATIC: 	subl	$12, %esp
   8798 ; DARWIN-32-STATIC-NEXT: 	calll	_callee
   8799 ; DARWIN-32-STATIC-NEXT: 	calll	_callee
   8800 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   8801 ; DARWIN-32-STATIC-NEXT: 	ret
   8802 
   8803 ; DARWIN-32-DYNAMIC: _caller:
   8804 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   8805 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_callee$stub
   8806 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_callee$stub
   8807 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   8808 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8809 
   8810 ; DARWIN-32-PIC: _caller:
   8811 ; DARWIN-32-PIC: 	subl	$12, %esp
   8812 ; DARWIN-32-PIC-NEXT: 	calll	L_callee$stub
   8813 ; DARWIN-32-PIC-NEXT: 	calll	L_callee$stub
   8814 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   8815 ; DARWIN-32-PIC-NEXT: 	ret
   8816 
   8817 ; DARWIN-64-STATIC: _caller:
   8818 ; DARWIN-64-STATIC: 	pushq
   8819 ; DARWIN-64-STATIC-NEXT: 	callq	_callee
   8820 ; DARWIN-64-STATIC-NEXT: 	callq	_callee
   8821 ; DARWIN-64-STATIC-NEXT: 	popq
   8822 ; DARWIN-64-STATIC-NEXT: 	ret
   8823 
   8824 ; DARWIN-64-DYNAMIC: _caller:
   8825 ; DARWIN-64-DYNAMIC: 	pushq
   8826 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_callee
   8827 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_callee
   8828 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   8829 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8830 
   8831 ; DARWIN-64-PIC: _caller:
   8832 ; DARWIN-64-PIC: 	pushq
   8833 ; DARWIN-64-PIC-NEXT: 	callq	_callee
   8834 ; DARWIN-64-PIC-NEXT: 	callq	_callee
   8835 ; DARWIN-64-PIC-NEXT: 	popq
   8836 ; DARWIN-64-PIC-NEXT: 	ret
   8837 }
   8838 
   8839 define void @dcaller() nounwind {
   8840 entry:
   8841 	call void @dcallee() nounwind
   8842 	call void @dcallee() nounwind
   8843 	ret void
   8844 ; LINUX-64-STATIC: dcaller:
   8845 ; LINUX-64-STATIC: callq   dcallee
   8846 ; LINUX-64-STATIC: callq   dcallee
   8847 ; LINUX-64-STATIC: ret
   8848 
   8849 ; LINUX-32-STATIC: dcaller:
   8850 ; LINUX-32-STATIC: 	subl
   8851 ; LINUX-32-STATIC-NEXT: 	calll	dcallee
   8852 ; LINUX-32-STATIC-NEXT: 	calll	dcallee
   8853 ; LINUX-32-STATIC-NEXT: 	addl
   8854 ; LINUX-32-STATIC-NEXT: 	ret
   8855 
   8856 ; LINUX-32-PIC: dcaller:
   8857 ; LINUX-32-PIC: 	subl
   8858 ; LINUX-32-PIC-NEXT: 	calll	dcallee
   8859 ; LINUX-32-PIC-NEXT: 	calll	dcallee
   8860 ; LINUX-32-PIC-NEXT: 	addl
   8861 
   8862 ; LINUX-32-PIC-NEXT: 	ret
   8863 
   8864 ; LINUX-64-PIC: dcaller:
   8865 ; LINUX-64-PIC: 	pushq
   8866 ; LINUX-64-PIC-NEXT: 	callq	dcallee
   8867 ; LINUX-64-PIC-NEXT: 	callq	dcallee
   8868 ; LINUX-64-PIC-NEXT: 	popq
   8869 ; LINUX-64-PIC-NEXT: 	ret
   8870 
   8871 ; DARWIN-32-STATIC: _dcaller:
   8872 ; DARWIN-32-STATIC: 	subl	$12, %esp
   8873 ; DARWIN-32-STATIC-NEXT: 	calll	_dcallee
   8874 ; DARWIN-32-STATIC-NEXT: 	calll	_dcallee
   8875 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   8876 ; DARWIN-32-STATIC-NEXT: 	ret
   8877 
   8878 ; DARWIN-32-DYNAMIC: _dcaller:
   8879 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   8880 ; DARWIN-32-DYNAMIC-NEXT: 	calll	_dcallee
   8881 ; DARWIN-32-DYNAMIC-NEXT: 	calll	_dcallee
   8882 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   8883 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8884 
   8885 ; DARWIN-32-PIC: _dcaller:
   8886 ; DARWIN-32-PIC: 	subl	$12, %esp
   8887 ; DARWIN-32-PIC-NEXT: 	calll	_dcallee
   8888 ; DARWIN-32-PIC-NEXT: 	calll	_dcallee
   8889 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   8890 ; DARWIN-32-PIC-NEXT: 	ret
   8891 
   8892 ; DARWIN-64-STATIC: _dcaller:
   8893 ; DARWIN-64-STATIC: 	pushq
   8894 ; DARWIN-64-STATIC-NEXT: 	callq	_dcallee
   8895 ; DARWIN-64-STATIC-NEXT: 	callq	_dcallee
   8896 ; DARWIN-64-STATIC-NEXT: 	popq
   8897 ; DARWIN-64-STATIC-NEXT: 	ret
   8898 
   8899 ; DARWIN-64-DYNAMIC: _dcaller:
   8900 ; DARWIN-64-DYNAMIC: 	pushq
   8901 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_dcallee
   8902 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_dcallee
   8903 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   8904 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8905 
   8906 ; DARWIN-64-PIC: _dcaller:
   8907 ; DARWIN-64-PIC: 	pushq
   8908 ; DARWIN-64-PIC-NEXT: 	callq	_dcallee
   8909 ; DARWIN-64-PIC-NEXT: 	callq	_dcallee
   8910 ; DARWIN-64-PIC-NEXT: 	popq
   8911 ; DARWIN-64-PIC-NEXT: 	ret
   8912 }
   8913 
   8914 define void @lcaller() nounwind {
   8915 entry:
   8916 	call void @lcallee() nounwind
   8917 	call void @lcallee() nounwind
   8918 	ret void
   8919 ; LINUX-64-STATIC: lcaller:
   8920 ; LINUX-64-STATIC: callq   lcallee
   8921 ; LINUX-64-STATIC: callq   lcallee
   8922 ; LINUX-64-STATIC: ret
   8923 
   8924 ; LINUX-32-STATIC: lcaller:
   8925 ; LINUX-32-STATIC: 	subl
   8926 ; LINUX-32-STATIC-NEXT: 	calll	lcallee
   8927 ; LINUX-32-STATIC-NEXT: 	calll	lcallee
   8928 ; LINUX-32-STATIC-NEXT: 	addl
   8929 ; LINUX-32-STATIC-NEXT: 	ret
   8930 
   8931 ; LINUX-32-PIC: lcaller:
   8932 ; LINUX-32-PIC: 	subl
   8933 ; LINUX-32-PIC-NEXT: 	calll	lcallee
   8934 ; LINUX-32-PIC-NEXT: 	calll	lcallee
   8935 ; LINUX-32-PIC-NEXT: 	addl
   8936 
   8937 ; LINUX-32-PIC-NEXT: 	ret
   8938 
   8939 ; LINUX-64-PIC: lcaller:
   8940 ; LINUX-64-PIC: 	pushq
   8941 ; LINUX-64-PIC-NEXT: 	callq	lcallee@PLT
   8942 ; LINUX-64-PIC-NEXT: 	callq	lcallee@PLT
   8943 ; LINUX-64-PIC-NEXT: 	popq
   8944 ; LINUX-64-PIC-NEXT: 	ret
   8945 
   8946 ; DARWIN-32-STATIC: _lcaller:
   8947 ; DARWIN-32-STATIC: 	subl	$12, %esp
   8948 ; DARWIN-32-STATIC-NEXT: 	calll	_lcallee
   8949 ; DARWIN-32-STATIC-NEXT: 	calll	_lcallee
   8950 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   8951 ; DARWIN-32-STATIC-NEXT: 	ret
   8952 
   8953 ; DARWIN-32-DYNAMIC: _lcaller:
   8954 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   8955 ; DARWIN-32-DYNAMIC-NEXT: 	calll	_lcallee
   8956 ; DARWIN-32-DYNAMIC-NEXT: 	calll	_lcallee
   8957 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   8958 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   8959 
   8960 ; DARWIN-32-PIC: _lcaller:
   8961 ; DARWIN-32-PIC: 	subl	$12, %esp
   8962 ; DARWIN-32-PIC-NEXT: 	calll	_lcallee
   8963 ; DARWIN-32-PIC-NEXT: 	calll	_lcallee
   8964 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   8965 ; DARWIN-32-PIC-NEXT: 	ret
   8966 
   8967 ; DARWIN-64-STATIC: _lcaller:
   8968 ; DARWIN-64-STATIC: 	pushq
   8969 ; DARWIN-64-STATIC-NEXT: 	callq	_lcallee
   8970 ; DARWIN-64-STATIC-NEXT: 	callq	_lcallee
   8971 ; DARWIN-64-STATIC-NEXT: 	popq
   8972 ; DARWIN-64-STATIC-NEXT: 	ret
   8973 
   8974 ; DARWIN-64-DYNAMIC: _lcaller:
   8975 ; DARWIN-64-DYNAMIC: 	pushq
   8976 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_lcallee
   8977 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_lcallee
   8978 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   8979 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   8980 
   8981 ; DARWIN-64-PIC: _lcaller:
   8982 ; DARWIN-64-PIC: 	pushq
   8983 ; DARWIN-64-PIC-NEXT: 	callq	_lcallee
   8984 ; DARWIN-64-PIC-NEXT: 	callq	_lcallee
   8985 ; DARWIN-64-PIC-NEXT: 	popq
   8986 ; DARWIN-64-PIC-NEXT: 	ret
   8987 }
   8988 
   8989 define void @tailcaller() nounwind {
   8990 entry:
   8991 	call void @callee() nounwind
   8992 	ret void
   8993 ; LINUX-64-STATIC: tailcaller:
   8994 ; LINUX-64-STATIC: callq   callee
   8995 ; LINUX-64-STATIC: ret
   8996 
   8997 ; LINUX-32-STATIC: tailcaller:
   8998 ; LINUX-32-STATIC: 	subl
   8999 ; LINUX-32-STATIC-NEXT: 	calll	callee
   9000 ; LINUX-32-STATIC-NEXT: 	addl
   9001 ; LINUX-32-STATIC-NEXT: 	ret
   9002 
   9003 ; LINUX-32-PIC: tailcaller:
   9004 ; LINUX-32-PIC: 	subl
   9005 ; LINUX-32-PIC-NEXT: 	calll	callee
   9006 ; LINUX-32-PIC-NEXT: 	addl
   9007 
   9008 ; LINUX-32-PIC-NEXT: 	ret
   9009 
   9010 ; LINUX-64-PIC: tailcaller:
   9011 ; LINUX-64-PIC: 	pushq
   9012 ; LINUX-64-PIC-NEXT: 	callq	callee@PLT
   9013 ; LINUX-64-PIC-NEXT: 	popq
   9014 ; LINUX-64-PIC-NEXT: 	ret
   9015 
   9016 ; DARWIN-32-STATIC: _tailcaller:
   9017 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9018 ; DARWIN-32-STATIC-NEXT: 	calll	_callee
   9019 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9020 ; DARWIN-32-STATIC-NEXT: 	ret
   9021 
   9022 ; DARWIN-32-DYNAMIC: _tailcaller:
   9023 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9024 ; DARWIN-32-DYNAMIC-NEXT: 	calll	L_callee$stub
   9025 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9026 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9027 
   9028 ; DARWIN-32-PIC: _tailcaller:
   9029 ; DARWIN-32-PIC: 	subl	$12, %esp
   9030 ; DARWIN-32-PIC-NEXT: 	calll	L_callee$stub
   9031 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   9032 ; DARWIN-32-PIC-NEXT: 	ret
   9033 
   9034 ; DARWIN-64-STATIC: _tailcaller:
   9035 ; DARWIN-64-STATIC: 	pushq
   9036 ; DARWIN-64-STATIC-NEXT: 	callq	_callee
   9037 ; DARWIN-64-STATIC-NEXT: 	popq
   9038 ; DARWIN-64-STATIC-NEXT: 	ret
   9039 
   9040 ; DARWIN-64-DYNAMIC: _tailcaller:
   9041 ; DARWIN-64-DYNAMIC: 	pushq
   9042 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_callee
   9043 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9044 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9045 
   9046 ; DARWIN-64-PIC: _tailcaller:
   9047 ; DARWIN-64-PIC: 	pushq
   9048 ; DARWIN-64-PIC-NEXT: 	callq	_callee
   9049 ; DARWIN-64-PIC-NEXT: 	popq
   9050 ; DARWIN-64-PIC-NEXT: 	ret
   9051 }
   9052 
   9053 define void @dtailcaller() nounwind {
   9054 entry:
   9055 	call void @dcallee() nounwind
   9056 	ret void
   9057 ; LINUX-64-STATIC: dtailcaller:
   9058 ; LINUX-64-STATIC: callq   dcallee
   9059 ; LINUX-64-STATIC: ret
   9060 
   9061 ; LINUX-32-STATIC: dtailcaller:
   9062 ; LINUX-32-STATIC: 	subl
   9063 ; LINUX-32-STATIC-NEXT: 	calll	dcallee
   9064 ; LINUX-32-STATIC-NEXT: 	addl
   9065 ; LINUX-32-STATIC-NEXT: 	ret
   9066 
   9067 ; LINUX-32-PIC: dtailcaller:
   9068 ; LINUX-32-PIC: 	subl
   9069 ; LINUX-32-PIC-NEXT: 	calll	dcallee
   9070 ; LINUX-32-PIC-NEXT: 	addl
   9071 
   9072 ; LINUX-32-PIC-NEXT: 	ret
   9073 
   9074 ; LINUX-64-PIC: dtailcaller:
   9075 ; LINUX-64-PIC: 	pushq
   9076 ; LINUX-64-PIC-NEXT: 	callq	dcallee
   9077 ; LINUX-64-PIC-NEXT: 	popq
   9078 ; LINUX-64-PIC-NEXT: 	ret
   9079 
   9080 ; DARWIN-32-STATIC: _dtailcaller:
   9081 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9082 ; DARWIN-32-STATIC-NEXT: 	calll	_dcallee
   9083 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9084 ; DARWIN-32-STATIC-NEXT: 	ret
   9085 
   9086 ; DARWIN-32-DYNAMIC: _dtailcaller:
   9087 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9088 ; DARWIN-32-DYNAMIC-NEXT: 	calll	_dcallee
   9089 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9090 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9091 
   9092 ; DARWIN-32-PIC: _dtailcaller:
   9093 ; DARWIN-32-PIC: 	subl	$12, %esp
   9094 ; DARWIN-32-PIC-NEXT: 	calll	_dcallee
   9095 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   9096 ; DARWIN-32-PIC-NEXT: 	ret
   9097 
   9098 ; DARWIN-64-STATIC: _dtailcaller:
   9099 ; DARWIN-64-STATIC: 	pushq
   9100 ; DARWIN-64-STATIC-NEXT: 	callq	_dcallee
   9101 ; DARWIN-64-STATIC-NEXT: 	popq
   9102 ; DARWIN-64-STATIC-NEXT: 	ret
   9103 
   9104 ; DARWIN-64-DYNAMIC: _dtailcaller:
   9105 ; DARWIN-64-DYNAMIC: 	pushq
   9106 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_dcallee
   9107 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9108 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9109 
   9110 ; DARWIN-64-PIC: _dtailcaller:
   9111 ; DARWIN-64-PIC: 	pushq
   9112 ; DARWIN-64-PIC-NEXT: 	callq	_dcallee
   9113 ; DARWIN-64-PIC-NEXT: 	popq
   9114 ; DARWIN-64-PIC-NEXT: 	ret
   9115 }
   9116 
   9117 define void @ltailcaller() nounwind {
   9118 entry:
   9119 	call void @lcallee() nounwind
   9120 	ret void
   9121 ; LINUX-64-STATIC: ltailcaller:
   9122 ; LINUX-64-STATIC: callq   lcallee
   9123 ; LINUX-64-STATIC: ret
   9124 
   9125 ; LINUX-32-STATIC: ltailcaller:
   9126 ; LINUX-32-STATIC: 	subl
   9127 ; LINUX-32-STATIC-NEXT: 	calll	lcallee
   9128 ; LINUX-32-STATIC-NEXT: 	addl
   9129 ; LINUX-32-STATIC-NEXT: 	ret
   9130 
   9131 ; LINUX-32-PIC: ltailcaller:
   9132 ; LINUX-32-PIC: 	subl
   9133 ; LINUX-32-PIC-NEXT: 	calll	lcallee
   9134 ; LINUX-32-PIC-NEXT: 	addl
   9135 
   9136 ; LINUX-32-PIC-NEXT: 	ret
   9137 
   9138 ; LINUX-64-PIC: ltailcaller:
   9139 ; LINUX-64-PIC: 	pushq
   9140 ; LINUX-64-PIC-NEXT: 	callq	lcallee@PLT
   9141 ; LINUX-64-PIC-NEXT: 	popq
   9142 ; LINUX-64-PIC-NEXT: 	ret
   9143 
   9144 ; DARWIN-32-STATIC: _ltailcaller:
   9145 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9146 ; DARWIN-32-STATIC-NEXT: 	calll	_lcallee
   9147 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9148 ; DARWIN-32-STATIC-NEXT: 	ret
   9149 
   9150 ; DARWIN-32-DYNAMIC: _ltailcaller:
   9151 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9152 ; DARWIN-32-DYNAMIC-NEXT: 	calll	_lcallee
   9153 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9154 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9155 
   9156 ; DARWIN-32-PIC: _ltailcaller:
   9157 ; DARWIN-32-PIC: 	subl	$12, %esp
   9158 ; DARWIN-32-PIC-NEXT: 	calll	_lcallee
   9159 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   9160 ; DARWIN-32-PIC-NEXT: 	ret
   9161 
   9162 ; DARWIN-64-STATIC: _ltailcaller:
   9163 ; DARWIN-64-STATIC: 	pushq
   9164 ; DARWIN-64-STATIC-NEXT: 	callq	_lcallee
   9165 ; DARWIN-64-STATIC-NEXT: 	popq
   9166 ; DARWIN-64-STATIC-NEXT: 	ret
   9167 
   9168 ; DARWIN-64-DYNAMIC: _ltailcaller:
   9169 ; DARWIN-64-DYNAMIC: 	pushq
   9170 ; DARWIN-64-DYNAMIC-NEXT: 	callq	_lcallee
   9171 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9172 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9173 
   9174 ; DARWIN-64-PIC: _ltailcaller:
   9175 ; DARWIN-64-PIC: 	pushq
   9176 ; DARWIN-64-PIC-NEXT: 	callq	_lcallee
   9177 ; DARWIN-64-PIC-NEXT: 	popq
   9178 ; DARWIN-64-PIC-NEXT: 	ret
   9179 }
   9180 
   9181 define void @icaller() nounwind {
   9182 entry:
   9183 	%0 = load void ()** @ifunc, align 8
   9184 	call void %0() nounwind
   9185 	%1 = load void ()** @ifunc, align 8
   9186 	call void %1() nounwind
   9187 	ret void
   9188 ; LINUX-64-STATIC: icaller:
   9189 ; LINUX-64-STATIC: callq   *ifunc
   9190 ; LINUX-64-STATIC: callq   *ifunc
   9191 ; LINUX-64-STATIC: ret
   9192 
   9193 ; LINUX-32-STATIC: icaller:
   9194 ; LINUX-32-STATIC: 	subl
   9195 ; LINUX-32-STATIC-NEXT: 	calll	*ifunc
   9196 ; LINUX-32-STATIC-NEXT: 	calll	*ifunc
   9197 ; LINUX-32-STATIC-NEXT: 	addl
   9198 ; LINUX-32-STATIC-NEXT: 	ret
   9199 
   9200 ; LINUX-32-PIC: icaller:
   9201 ; LINUX-32-PIC: 	subl
   9202 ; LINUX-32-PIC-NEXT: 	calll	*ifunc
   9203 ; LINUX-32-PIC-NEXT: 	calll	*ifunc
   9204 ; LINUX-32-PIC-NEXT: 	addl
   9205 
   9206 ; LINUX-32-PIC-NEXT: 	ret
   9207 
   9208 ; LINUX-64-PIC: icaller:
   9209 ; LINUX-64-PIC: 	pushq	[[RBX:%r.x]]
   9210 ; LINUX-64-PIC-NEXT: 	movq	ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9211 ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]])
   9212 ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]])
   9213 ; LINUX-64-PIC-NEXT: 	popq	[[RBX:%r.x]]
   9214 ; LINUX-64-PIC-NEXT: 	ret
   9215 
   9216 ; DARWIN-32-STATIC: _icaller:
   9217 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9218 ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc
   9219 ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc
   9220 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9221 ; DARWIN-32-STATIC-NEXT: 	ret
   9222 
   9223 ; DARWIN-32-DYNAMIC: _icaller:
   9224 ; DARWIN-32-DYNAMIC: 	pushl	%esi
   9225 ; DARWIN-32-DYNAMIC-NEXT: 	subl	$8, %esp
   9226 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ifunc$non_lazy_ptr, %esi
   9227 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi)
   9228 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi)
   9229 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$8, %esp
   9230 ; DARWIN-32-DYNAMIC-NEXT: 	popl	%esi
   9231 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9232 
   9233 ; DARWIN-32-PIC: _icaller:
   9234 ; DARWIN-32-PIC: 	pushl	%esi
   9235 ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp
   9236 ; DARWIN-32-PIC-NEXT: 	calll	L142$pb
   9237 ; DARWIN-32-PIC-NEXT: L142$pb:
   9238 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   9239 ; DARWIN-32-PIC-NEXT: 	movl	L_ifunc$non_lazy_ptr-L142$pb([[EAX]]), %esi
   9240 ; DARWIN-32-PIC-NEXT: 	calll	*(%esi)
   9241 ; DARWIN-32-PIC-NEXT: 	calll	*(%esi)
   9242 ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp
   9243 ; DARWIN-32-PIC-NEXT: 	popl	%esi
   9244 ; DARWIN-32-PIC-NEXT: 	ret
   9245 
   9246 ; DARWIN-64-STATIC: _icaller:
   9247 ; DARWIN-64-STATIC: 	pushq	[[RBX:%r.x]]
   9248 ; DARWIN-64-STATIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9249 ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]])
   9250 ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]])
   9251 ; DARWIN-64-STATIC-NEXT: 	popq	[[RBX:%r.x]]
   9252 ; DARWIN-64-STATIC-NEXT: 	ret
   9253 
   9254 ; DARWIN-64-DYNAMIC: _icaller:
   9255 ; DARWIN-64-DYNAMIC: 	pushq	[[RBX:%r.x]]
   9256 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9257 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]])
   9258 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]])
   9259 ; DARWIN-64-DYNAMIC-NEXT: 	popq	[[RBX:%r.x]]
   9260 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9261 
   9262 ; DARWIN-64-PIC: _icaller:
   9263 ; DARWIN-64-PIC: 	pushq	[[RBX:%r.x]]
   9264 ; DARWIN-64-PIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9265 ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]])
   9266 ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]])
   9267 ; DARWIN-64-PIC-NEXT: 	popq	[[RBX:%r.x]]
   9268 ; DARWIN-64-PIC-NEXT: 	ret
   9269 }
   9270 
   9271 define void @dicaller() nounwind {
   9272 entry:
   9273 	%0 = load void ()** @difunc, align 8
   9274 	call void %0() nounwind
   9275 	%1 = load void ()** @difunc, align 8
   9276 	call void %1() nounwind
   9277 	ret void
   9278 ; LINUX-64-STATIC: dicaller:
   9279 ; LINUX-64-STATIC: callq   *difunc
   9280 ; LINUX-64-STATIC: callq   *difunc
   9281 ; LINUX-64-STATIC: ret
   9282 
   9283 ; LINUX-32-STATIC: dicaller:
   9284 ; LINUX-32-STATIC: 	subl
   9285 ; LINUX-32-STATIC-NEXT: 	calll	*difunc
   9286 ; LINUX-32-STATIC-NEXT: 	calll	*difunc
   9287 ; LINUX-32-STATIC-NEXT: 	addl
   9288 ; LINUX-32-STATIC-NEXT: 	ret
   9289 
   9290 ; LINUX-32-PIC: dicaller:
   9291 ; LINUX-32-PIC: 	subl
   9292 ; LINUX-32-PIC-NEXT: 	calll	*difunc
   9293 ; LINUX-32-PIC-NEXT: 	calll	*difunc
   9294 ; LINUX-32-PIC-NEXT: 	addl
   9295 
   9296 ; LINUX-32-PIC-NEXT: 	ret
   9297 
   9298 ; LINUX-64-PIC: dicaller:
   9299 ; LINUX-64-PIC: 	pushq	[[RBX:%r.x]]
   9300 ; LINUX-64-PIC-NEXT: 	movq	difunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9301 ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]])
   9302 ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]])
   9303 ; LINUX-64-PIC-NEXT: 	popq	[[RBX:%r.x]]
   9304 ; LINUX-64-PIC-NEXT: 	ret
   9305 
   9306 ; DARWIN-32-STATIC: _dicaller:
   9307 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9308 ; DARWIN-32-STATIC-NEXT: 	calll	*_difunc
   9309 ; DARWIN-32-STATIC-NEXT: 	calll	*_difunc
   9310 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9311 ; DARWIN-32-STATIC-NEXT: 	ret
   9312 
   9313 ; DARWIN-32-DYNAMIC: _dicaller:
   9314 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9315 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_difunc
   9316 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_difunc
   9317 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9318 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9319 
   9320 ; DARWIN-32-PIC: _dicaller:
   9321 ; DARWIN-32-PIC: 	pushl	%esi
   9322 ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp
   9323 ; DARWIN-32-PIC-NEXT: 	calll	L143$pb
   9324 ; DARWIN-32-PIC-NEXT: L143$pb:
   9325 ; DARWIN-32-PIC-NEXT: 	popl	%esi
   9326 ; DARWIN-32-PIC-NEXT: 	calll	*_difunc-L143$pb(%esi)
   9327 ; DARWIN-32-PIC-NEXT: 	calll	*_difunc-L143$pb(%esi)
   9328 ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp
   9329 ; DARWIN-32-PIC-NEXT: 	popl	%esi
   9330 ; DARWIN-32-PIC-NEXT: 	ret
   9331 
   9332 ; DARWIN-64-STATIC: _dicaller:
   9333 ; DARWIN-64-STATIC: 	pushq
   9334 ; DARWIN-64-STATIC-NEXT: 	callq	*_difunc(%rip)
   9335 ; DARWIN-64-STATIC-NEXT: 	callq	*_difunc(%rip)
   9336 ; DARWIN-64-STATIC-NEXT: 	popq
   9337 ; DARWIN-64-STATIC-NEXT: 	ret
   9338 
   9339 ; DARWIN-64-DYNAMIC: _dicaller:
   9340 ; DARWIN-64-DYNAMIC: 	pushq
   9341 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_difunc(%rip)
   9342 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_difunc(%rip)
   9343 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9344 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9345 
   9346 ; DARWIN-64-PIC: _dicaller:
   9347 ; DARWIN-64-PIC: 	pushq
   9348 ; DARWIN-64-PIC-NEXT: 	callq	*_difunc(%rip)
   9349 ; DARWIN-64-PIC-NEXT: 	callq	*_difunc(%rip)
   9350 ; DARWIN-64-PIC-NEXT: 	popq
   9351 ; DARWIN-64-PIC-NEXT: 	ret
   9352 }
   9353 
   9354 define void @licaller() nounwind {
   9355 entry:
   9356 	%0 = load void ()** @lifunc, align 8
   9357 	call void %0() nounwind
   9358 	%1 = load void ()** @lifunc, align 8
   9359 	call void %1() nounwind
   9360 	ret void
   9361 ; LINUX-64-STATIC: licaller:
   9362 ; LINUX-64-STATIC: callq   *lifunc
   9363 ; LINUX-64-STATIC: callq   *lifunc
   9364 ; LINUX-64-STATIC: ret
   9365 
   9366 ; LINUX-32-STATIC: licaller:
   9367 ; LINUX-32-STATIC: 	subl
   9368 ; LINUX-32-STATIC-NEXT: 	calll	*lifunc
   9369 ; LINUX-32-STATIC-NEXT: 	calll	*lifunc
   9370 ; LINUX-32-STATIC-NEXT: 	addl
   9371 ; LINUX-32-STATIC-NEXT: 	ret
   9372 
   9373 ; LINUX-32-PIC: licaller:
   9374 ; LINUX-32-PIC: 	subl
   9375 ; LINUX-32-PIC-NEXT: 	calll	*lifunc
   9376 ; LINUX-32-PIC-NEXT: 	calll	*lifunc
   9377 ; LINUX-32-PIC-NEXT: 	addl
   9378 
   9379 ; LINUX-32-PIC-NEXT: 	ret
   9380 
   9381 ; LINUX-64-PIC: licaller:
   9382 ; LINUX-64-PIC: 	pushq
   9383 ; LINUX-64-PIC-NEXT: 	callq	*lifunc(%rip)
   9384 ; LINUX-64-PIC-NEXT: 	callq	*lifunc(%rip)
   9385 ; LINUX-64-PIC-NEXT: 	popq
   9386 ; LINUX-64-PIC-NEXT: 	ret
   9387 
   9388 ; DARWIN-32-STATIC: _licaller:
   9389 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9390 ; DARWIN-32-STATIC-NEXT: 	calll	*_lifunc
   9391 ; DARWIN-32-STATIC-NEXT: 	calll	*_lifunc
   9392 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9393 ; DARWIN-32-STATIC-NEXT: 	ret
   9394 
   9395 ; DARWIN-32-DYNAMIC: _licaller:
   9396 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9397 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_lifunc
   9398 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_lifunc
   9399 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9400 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9401 
   9402 ; DARWIN-32-PIC: _licaller:
   9403 ; DARWIN-32-PIC: 	pushl	%esi
   9404 ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp
   9405 ; DARWIN-32-PIC-NEXT: 	calll	L144$pb
   9406 ; DARWIN-32-PIC-NEXT: L144$pb:
   9407 ; DARWIN-32-PIC-NEXT: 	popl	%esi
   9408 ; DARWIN-32-PIC-NEXT: 	calll	*_lifunc-L144$pb(%esi)
   9409 ; DARWIN-32-PIC-NEXT: 	calll	*_lifunc-L144$pb(%esi)
   9410 ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp
   9411 ; DARWIN-32-PIC-NEXT: 	popl	%esi
   9412 ; DARWIN-32-PIC-NEXT: 	ret
   9413 
   9414 ; DARWIN-64-STATIC: _licaller:
   9415 ; DARWIN-64-STATIC: 	pushq
   9416 ; DARWIN-64-STATIC-NEXT: 	callq	*_lifunc(%rip)
   9417 ; DARWIN-64-STATIC-NEXT: 	callq	*_lifunc(%rip)
   9418 ; DARWIN-64-STATIC-NEXT: 	popq
   9419 ; DARWIN-64-STATIC-NEXT: 	ret
   9420 
   9421 ; DARWIN-64-DYNAMIC: _licaller:
   9422 ; DARWIN-64-DYNAMIC: 	pushq
   9423 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_lifunc(%rip)
   9424 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_lifunc(%rip)
   9425 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9426 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9427 
   9428 ; DARWIN-64-PIC: _licaller:
   9429 ; DARWIN-64-PIC: 	pushq
   9430 ; DARWIN-64-PIC-NEXT: 	callq	*_lifunc(%rip)
   9431 ; DARWIN-64-PIC-NEXT: 	callq	*_lifunc(%rip)
   9432 ; DARWIN-64-PIC-NEXT: 	popq
   9433 ; DARWIN-64-PIC-NEXT: 	ret
   9434 }
   9435 
   9436 define void @itailcaller() nounwind {
   9437 entry:
   9438 	%0 = load void ()** @ifunc, align 8
   9439 	call void %0() nounwind
   9440 	%1 = load void ()** @ifunc, align 8
   9441 	call void %1() nounwind
   9442 	ret void
   9443 ; LINUX-64-STATIC: itailcaller:
   9444 ; LINUX-64-STATIC: callq   *ifunc
   9445 ; LINUX-64-STATIC: callq   *ifunc
   9446 ; LINUX-64-STATIC: ret
   9447 
   9448 ; LINUX-32-STATIC: itailcaller:
   9449 ; LINUX-32-STATIC: 	subl
   9450 ; LINUX-32-STATIC-NEXT: 	calll	*ifunc
   9451 ; LINUX-32-STATIC-NEXT: 	calll	*ifunc
   9452 ; LINUX-32-STATIC-NEXT: 	addl
   9453 ; LINUX-32-STATIC-NEXT: 	ret
   9454 
   9455 ; LINUX-32-PIC: itailcaller:
   9456 ; LINUX-32-PIC: 	subl
   9457 ; LINUX-32-PIC-NEXT: 	calll	*ifunc
   9458 ; LINUX-32-PIC-NEXT: 	calll	*ifunc
   9459 ; LINUX-32-PIC-NEXT: 	addl
   9460 
   9461 ; LINUX-32-PIC-NEXT: 	ret
   9462 
   9463 ; LINUX-64-PIC: itailcaller:
   9464 ; LINUX-64-PIC: 	pushq	[[RBX:%r.x]]
   9465 ; LINUX-64-PIC-NEXT: 	movq	ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9466 ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]])
   9467 ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]])
   9468 ; LINUX-64-PIC-NEXT: 	popq	[[RBX:%r.x]]
   9469 ; LINUX-64-PIC-NEXT: 	ret
   9470 
   9471 ; DARWIN-32-STATIC: _itailcaller:
   9472 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9473 ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc
   9474 ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc
   9475 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9476 ; DARWIN-32-STATIC-NEXT: 	ret
   9477 
   9478 ; DARWIN-32-DYNAMIC: _itailcaller:
   9479 ; DARWIN-32-DYNAMIC: 	pushl	%esi
   9480 ; DARWIN-32-DYNAMIC-NEXT: 	subl	$8, %esp
   9481 ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ifunc$non_lazy_ptr, %esi
   9482 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi)
   9483 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi)
   9484 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$8, %esp
   9485 ; DARWIN-32-DYNAMIC-NEXT: 	popl	%esi
   9486 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9487 
   9488 ; DARWIN-32-PIC: _itailcaller:
   9489 ; DARWIN-32-PIC: 	pushl	%esi
   9490 ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp
   9491 ; DARWIN-32-PIC-NEXT: 	calll	L145$pb
   9492 ; DARWIN-32-PIC-NEXT: L145$pb:
   9493 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   9494 ; DARWIN-32-PIC-NEXT: 	movl	L_ifunc$non_lazy_ptr-L145$pb([[EAX]]), %esi
   9495 ; DARWIN-32-PIC-NEXT: 	calll	*(%esi)
   9496 ; DARWIN-32-PIC-NEXT: 	calll	*(%esi)
   9497 ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp
   9498 ; DARWIN-32-PIC-NEXT: 	popl	%esi
   9499 ; DARWIN-32-PIC-NEXT: 	ret
   9500 
   9501 ; DARWIN-64-STATIC: _itailcaller:
   9502 ; DARWIN-64-STATIC: 	pushq	[[RBX:%r.x]]
   9503 ; DARWIN-64-STATIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9504 ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]])
   9505 ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]])
   9506 ; DARWIN-64-STATIC-NEXT: 	popq	[[RBX:%r.x]]
   9507 ; DARWIN-64-STATIC-NEXT: 	ret
   9508 
   9509 ; DARWIN-64-DYNAMIC: _itailcaller:
   9510 ; DARWIN-64-DYNAMIC: 	pushq	[[RBX:%r.x]]
   9511 ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9512 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]])
   9513 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]])
   9514 ; DARWIN-64-DYNAMIC-NEXT: 	popq	[[RBX:%r.x]]
   9515 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9516 
   9517 ; DARWIN-64-PIC: _itailcaller:
   9518 ; DARWIN-64-PIC: 	pushq	[[RBX:%r.x]]
   9519 ; DARWIN-64-PIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]]
   9520 ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]])
   9521 ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]])
   9522 ; DARWIN-64-PIC-NEXT: 	popq	[[RBX:%r.x]]
   9523 ; DARWIN-64-PIC-NEXT: 	ret
   9524 }
   9525 
   9526 define void @ditailcaller() nounwind {
   9527 entry:
   9528 	%0 = load void ()** @difunc, align 8
   9529 	call void %0() nounwind
   9530 	ret void
   9531 ; LINUX-64-STATIC: ditailcaller:
   9532 ; LINUX-64-STATIC: callq   *difunc
   9533 ; LINUX-64-STATIC: ret
   9534 
   9535 ; LINUX-32-STATIC: ditailcaller:
   9536 ; LINUX-32-STATIC: 	subl
   9537 ; LINUX-32-STATIC-NEXT: 	calll	*difunc
   9538 ; LINUX-32-STATIC-NEXT: 	addl
   9539 ; LINUX-32-STATIC-NEXT: 	ret
   9540 
   9541 ; LINUX-32-PIC: ditailcaller:
   9542 ; LINUX-32-PIC: 	subl
   9543 ; LINUX-32-PIC-NEXT: 	calll	*difunc
   9544 ; LINUX-32-PIC-NEXT: 	addl
   9545 
   9546 ; LINUX-32-PIC-NEXT: 	ret
   9547 
   9548 ; LINUX-64-PIC: ditailcaller:
   9549 ; LINUX-64-PIC: 	pushq
   9550 ; LINUX-64-PIC-NEXT: 	movq	difunc@GOTPCREL(%rip), [[RAX:%r.x]]
   9551 ; LINUX-64-PIC-NEXT: 	callq	*([[RAX]])
   9552 ; LINUX-64-PIC-NEXT: 	popq
   9553 ; LINUX-64-PIC-NEXT: 	ret
   9554 
   9555 ; DARWIN-32-STATIC: _ditailcaller:
   9556 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9557 ; DARWIN-32-STATIC-NEXT: 	calll	*_difunc
   9558 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9559 ; DARWIN-32-STATIC-NEXT: 	ret
   9560 
   9561 ; DARWIN-32-DYNAMIC: _ditailcaller:
   9562 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9563 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_difunc
   9564 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9565 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9566 
   9567 ; DARWIN-32-PIC: _ditailcaller:
   9568 ; DARWIN-32-PIC: 	subl	$12, %esp
   9569 ; DARWIN-32-PIC-NEXT: 	calll	L146$pb
   9570 ; DARWIN-32-PIC-NEXT: L146$pb:
   9571 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   9572 ; DARWIN-32-PIC-NEXT: 	calll	*_difunc-L146$pb([[EAX]])
   9573 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   9574 ; DARWIN-32-PIC-NEXT: 	ret
   9575 
   9576 ; DARWIN-64-STATIC: _ditailcaller:
   9577 ; DARWIN-64-STATIC: 	pushq
   9578 ; DARWIN-64-STATIC-NEXT: 	callq	*_difunc(%rip)
   9579 ; DARWIN-64-STATIC-NEXT: 	popq
   9580 ; DARWIN-64-STATIC-NEXT: 	ret
   9581 
   9582 ; DARWIN-64-DYNAMIC: _ditailcaller:
   9583 ; DARWIN-64-DYNAMIC: 	pushq
   9584 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_difunc(%rip)
   9585 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9586 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9587 
   9588 ; DARWIN-64-PIC: _ditailcaller:
   9589 ; DARWIN-64-PIC: 	callq	*_difunc(%rip)
   9590 ; DARWIN-64-PIC-NEXT: 	popq
   9591 ; DARWIN-64-PIC-NEXT: 	ret
   9592 }
   9593 
   9594 define void @litailcaller() nounwind {
   9595 entry:
   9596 	%0 = load void ()** @lifunc, align 8
   9597 	call void %0() nounwind
   9598 	ret void
   9599 ; LINUX-64-STATIC: litailcaller:
   9600 ; LINUX-64-STATIC: callq   *lifunc
   9601 ; LINUX-64-STATIC: ret
   9602 
   9603 ; LINUX-32-STATIC: litailcaller:
   9604 ; LINUX-32-STATIC: 	subl
   9605 ; LINUX-32-STATIC-NEXT: 	calll	*lifunc
   9606 ; LINUX-32-STATIC-NEXT: 	addl
   9607 ; LINUX-32-STATIC-NEXT: 	ret
   9608 
   9609 ; LINUX-32-PIC: litailcaller:
   9610 ; LINUX-32-PIC: 	subl
   9611 ; LINUX-32-PIC-NEXT: 	calll	*lifunc
   9612 ; LINUX-32-PIC-NEXT: 	addl
   9613 
   9614 ; LINUX-32-PIC-NEXT: 	ret
   9615 
   9616 ; LINUX-64-PIC: litailcaller:
   9617 ; LINUX-64-PIC: 	pushq
   9618 ; LINUX-64-PIC-NEXT: 	callq	*lifunc(%rip)
   9619 ; LINUX-64-PIC-NEXT: 	popq
   9620 ; LINUX-64-PIC-NEXT: 	ret
   9621 
   9622 ; DARWIN-32-STATIC: _litailcaller:
   9623 ; DARWIN-32-STATIC: 	subl	$12, %esp
   9624 ; DARWIN-32-STATIC-NEXT: 	calll	*_lifunc
   9625 ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp
   9626 ; DARWIN-32-STATIC-NEXT: 	ret
   9627 
   9628 ; DARWIN-32-DYNAMIC: _litailcaller:
   9629 ; DARWIN-32-DYNAMIC: 	subl	$12, %esp
   9630 ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_lifunc
   9631 ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp
   9632 ; DARWIN-32-DYNAMIC-NEXT: 	ret
   9633 
   9634 ; DARWIN-32-PIC: _litailcaller:
   9635 ; DARWIN-32-PIC: 	subl	$12, %esp
   9636 ; DARWIN-32-PIC-NEXT: 	calll	L147$pb
   9637 ; DARWIN-32-PIC-NEXT: L147$pb:
   9638 ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]]
   9639 ; DARWIN-32-PIC-NEXT: 	calll	*_lifunc-L147$pb([[EAX]])
   9640 ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp
   9641 ; DARWIN-32-PIC-NEXT: 	ret
   9642 
   9643 ; DARWIN-64-STATIC: _litailcaller:
   9644 ; DARWIN-64-STATIC: 	pushq
   9645 ; DARWIN-64-STATIC-NEXT: 	callq	*_lifunc(%rip)
   9646 ; DARWIN-64-STATIC-NEXT: 	popq
   9647 ; DARWIN-64-STATIC-NEXT: 	ret
   9648 
   9649 ; DARWIN-64-DYNAMIC: _litailcaller:
   9650 ; DARWIN-64-DYNAMIC: 	pushq
   9651 ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_lifunc(%rip)
   9652 ; DARWIN-64-DYNAMIC-NEXT: 	popq
   9653 ; DARWIN-64-DYNAMIC-NEXT: 	ret
   9654 
   9655 ; DARWIN-64-PIC: _litailcaller:
   9656 ; DARWIN-64-PIC: 	pushq
   9657 ; DARWIN-64-PIC-NEXT: 	callq	*_lifunc(%rip)
   9658 ; DARWIN-64-PIC-NEXT: 	popq
   9659 ; DARWIN-64-PIC-NEXT: 	ret
   9660 }
   9661