|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-STATIC | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC | 
|  |  | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-STATIC | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-64-PIC | 
|  |  | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin9 -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-DYNAMIC | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=i686-apple-darwin9 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC | 
|  |  | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-STATIC | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -relocation-model=dynamic-no-pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-DYNAMIC | 
|  | ; RUN: llc < %s -asm-verbose=0 -mcpu=generic -mtriple=x86_64-apple-darwin -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-64-PIC | 
|  |  | 
|  | @src = external global [131072 x i32] | 
|  | @dst = external global [131072 x i32] | 
|  | @xsrc = external global [32 x i32] | 
|  | @xdst = external global [32 x i32] | 
|  | @ptr = external global i32* | 
|  | @dsrc = global [131072 x i32] zeroinitializer, align 32 | 
|  | @ddst = global [131072 x i32] zeroinitializer, align 32 | 
|  | @dptr = global i32* null | 
|  | @lsrc = internal global [131072 x i32] zeroinitializer | 
|  | @ldst = internal global [131072 x i32] zeroinitializer | 
|  | @lptr = internal global i32* null | 
|  | @ifunc = external global void ()* | 
|  | @difunc = global void ()* null | 
|  | @lifunc = internal global void ()* null | 
|  | @lxsrc = internal global [32 x i32] zeroinitializer, align 32 | 
|  | @lxdst = internal global [32 x i32] zeroinitializer, align 32 | 
|  | @dxsrc = global [32 x i32] zeroinitializer, align 32 | 
|  | @dxdst = global [32 x i32] zeroinitializer, align 32 | 
|  |  | 
|  | define void @foo00() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4 | 
|  | ret void | 
|  |  | 
|  | ; LINUX-64-STATIC-LABEL: foo00: | 
|  | ; LINUX-64-STATIC: movl	src(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl	[[EAX]], dst | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo00: | 
|  | ; LINUX-32-STATIC: 	movl	src, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dst | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo00: | 
|  | ; LINUX-32-PIC: 	movl	src, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dst | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r..]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r..]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo00: | 
|  | ; DARWIN-32-STATIC: 	movl	_src, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dst | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e..]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e..]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e..]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo00: | 
|  | ; DARWIN-32-PIC: 	calll	L0$pb | 
|  | ; DARWIN-32-PIC-NEXT: L0$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L0$pb([[EAX]]), [[ECX:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[ECX]]), [[ECX:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L0$pb([[EAX]]), [[EAX:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r..]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r..]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r..]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r..]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r..]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e..]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r..]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @fxo00() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 | 
|  | store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4 | 
|  | ret void | 
|  |  | 
|  | ; LINUX-64-STATIC-LABEL: fxo00: | 
|  | ; LINUX-64-STATIC: movl	xsrc(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl	[[EAX]], xdst | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: fxo00: | 
|  | ; LINUX-32-STATIC: 	movl	xsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], xdst | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: fxo00: | 
|  | ; LINUX-32-PIC: 	movl	xsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], xdst | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: fxo00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _fxo00: | 
|  | ; DARWIN-32-STATIC: 	movl	_xsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _xdst | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _fxo00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _fxo00: | 
|  | ; DARWIN-32-PIC: 	calll	L1$pb | 
|  | ; DARWIN-32-PIC-NEXT: L1$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L1$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L1$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _fxo00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _fxo00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _fxo00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo01() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo01: | 
|  | ; LINUX-64-STATIC: movq	$dst, ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst, ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo01: | 
|  | ; LINUX-32-PIC: 	movl	$dst, ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst, _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo01: | 
|  | ; DARWIN-32-PIC: 	calll	L2$pb | 
|  | ; DARWIN-32-PIC-NEXT: L2$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L2$pb( | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L2$pb( | 
|  | ; DARWIN-32-PIC-NEXT: 	movl | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @fxo01() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: fxo01: | 
|  | ; LINUX-64-STATIC: movq	$xdst, ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: fxo01: | 
|  | ; LINUX-32-STATIC: 	movl	$xdst, ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: fxo01: | 
|  | ; LINUX-32-PIC: 	movl	$xdst, ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: fxo01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _fxo01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xdst, _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _fxo01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _fxo01: | 
|  | ; DARWIN-32-PIC: 	calll	L3$pb | 
|  | ; DARWIN-32-PIC-NEXT: L3$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[R0:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L3$pb([[R0]]), [[R1:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L3$pb([[R0]]), [[R2:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[R1:%e..]], ([[R2]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _fxo01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _fxo01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _fxo01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 | 
|  | store i32 %1, i32* %0, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo02: | 
|  | ; LINUX-64-STATIC: movl    src(%rip), % | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), % | 
|  | ; LINUX-64-STATIC: movl | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo02: | 
|  | ; LINUX-32-STATIC: 	movl	src, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo02: | 
|  | ; LINUX-32-PIC: 	movl	src, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo02: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo02: | 
|  | ; DARWIN-32-STATIC: 	movl	_src, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo02: | 
|  | ; DARWIN-32-PIC: 	calll	L4$pb | 
|  | ; DARWIN-32-PIC-NEXT: L4$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[R0:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L4$pb([[R0]]), [[R1:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[R1]]), [[R2:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L4$pb([[R0]]), [[R3:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[R3]]), [[R4:%e..]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[R2]], ([[R4]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo02: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo02: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @fxo02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 | 
|  | store i32 %1, i32* %0, align 4 | 
|  | ; LINUX-64-STATIC-LABEL: fxo02: | 
|  | ; LINUX-64-STATIC: movl    xsrc(%rip), % | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), % | 
|  | ; LINUX-64-STATIC: movl | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: fxo02: | 
|  | ; LINUX-32-STATIC: 	movl	xsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  | ret void | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: fxo02: | 
|  | ; LINUX-32-PIC: 	movl	xsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: fxo02: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _fxo02: | 
|  | ; DARWIN-32-STATIC: 	movl	_xsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _fxo02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _fxo02: | 
|  | ; DARWIN-32-PIC: 	calll	L5$pb | 
|  | ; DARWIN-32-PIC-NEXT: L5$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L5$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L5$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _fxo02: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _fxo02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _fxo02: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo03() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo03: | 
|  | ; LINUX-64-STATIC: movl    dsrc(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ddst | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo03: | 
|  | ; LINUX-32-STATIC: 	movl	dsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ddst | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo03: | 
|  | ; LINUX-32-PIC: 	movl	dsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ddst | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo03: | 
|  | ; DARWIN-32-STATIC: 	movl	_dsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ddst | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo03: | 
|  | ; DARWIN-32-PIC: 	calll	L6$pb | 
|  | ; DARWIN-32-PIC-NEXT: L6$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L6$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _ddst-L6$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo03: | 
|  | ; DARWIN-64-STATIC: 	movl	_dsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ddst(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo03: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_dsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo03: | 
|  | ; DARWIN-64-PIC: 	movl	_dsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ddst(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo04() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo04: | 
|  | ; LINUX-64-STATIC: movq    $ddst, dptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst, dptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst, dptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst, _dptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst, _dptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo04: | 
|  | ; DARWIN-32-PIC: 	calll	L7$pb | 
|  | ; DARWIN-32-PIC-NEXT: L7$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L7$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L7$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo05() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 | 
|  | store i32 %1, i32* %0, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo05: | 
|  | ; LINUX-64-STATIC: movl    dsrc(%rip), % | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), % | 
|  | ; LINUX-64-STATIC: movl | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo05: | 
|  | ; LINUX-32-STATIC: 	movl	dsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo05: | 
|  | ; LINUX-32-PIC: 	movl	dsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo05: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo05: | 
|  | ; DARWIN-32-STATIC: 	movl	_dsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo05: | 
|  | ; DARWIN-32-PIC: 	calll	L8$pb | 
|  | ; DARWIN-32-PIC-NEXT: L8$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L8$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L8$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo05: | 
|  | ; DARWIN-64-STATIC: 	movl	_dsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo05: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_dsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo05: | 
|  | ; DARWIN-64-PIC: 	movl	_dsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo06() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo06: | 
|  | ; LINUX-64-STATIC: movl    lsrc(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ldst(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo06: | 
|  | ; LINUX-32-STATIC: 	movl	lsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ldst | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo06: | 
|  | ; LINUX-32-PIC: 	movl	lsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ldst | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo06: | 
|  | ; LINUX-64-PIC: 	movl	lsrc(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ldst(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo06: | 
|  | ; DARWIN-32-STATIC: 	movl	_lsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ldst | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo06: | 
|  | ; DARWIN-32-PIC: 	calll	L9$pb | 
|  | ; DARWIN-32-PIC-NEXT: L9$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L9$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _ldst-L9$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo06: | 
|  | ; DARWIN-64-STATIC: 	movl	_lsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ldst(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo06: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_lsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo06: | 
|  | ; DARWIN-64-PIC: 	movl	_lsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ldst(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo07() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo07: | 
|  | ; LINUX-64-STATIC: movq    $ldst, lptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst, lptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst, lptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst, _lptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst, _lptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo07: | 
|  | ; DARWIN-32-PIC: 	calll	L10$pb | 
|  | ; DARWIN-32-PIC-NEXT: L10$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L10$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L10$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @foo08() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 | 
|  | store i32 %1, i32* %0, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: foo08: | 
|  | ; LINUX-64-STATIC: movl    lsrc(%rip), % | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), % | 
|  | ; LINUX-64-STATIC: movl | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: foo08: | 
|  | ; LINUX-32-STATIC: 	movl	lsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: foo08: | 
|  | ; LINUX-32-PIC: 	movl	lsrc, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: foo08: | 
|  | ; LINUX-64-PIC: 	movl	lsrc(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _foo08: | 
|  | ; DARWIN-32-STATIC: 	movl	_lsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _foo08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lsrc, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _foo08: | 
|  | ; DARWIN-32-PIC: 	calll	L11$pb | 
|  | ; DARWIN-32-PIC-NEXT: L11$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L11$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L11$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _foo08: | 
|  | ; DARWIN-64-STATIC: 	movl	_lsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _foo08: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_lsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _foo08: | 
|  | ; DARWIN-64-PIC: 	movl	_lsrc(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux00() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qux00: | 
|  | ; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], dst+64(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux00: | 
|  | ; LINUX-32-STATIC: 	movl	src+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dst+64 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux00: | 
|  | ; LINUX-32-PIC: 	movl	src+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dst+64 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux00: | 
|  | ; DARWIN-32-STATIC: 	movl	_src+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dst+64 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux00: | 
|  | ; DARWIN-32-PIC: 	calll	L12$pb | 
|  | ; DARWIN-32-PIC-NEXT: L12$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L12$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L12$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qxx00() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 | 
|  | store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qxx00: | 
|  | ; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], xdst+64(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qxx00: | 
|  | ; LINUX-32-STATIC: 	movl	xsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], xdst+64 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qxx00: | 
|  | ; LINUX-32-PIC: 	movl	xsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], xdst+64 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qxx00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qxx00: | 
|  | ; DARWIN-32-STATIC: 	movl	_xsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _xdst+64 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qxx00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qxx00: | 
|  | ; DARWIN-32-PIC: 	calll	L13$pb | 
|  | ; DARWIN-32-PIC-NEXT: L13$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L13$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L13$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qxx00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qxx00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qxx00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux01() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qux01: | 
|  | ; LINUX-64-STATIC: movq    $dst+64, ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst+64, ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux01: | 
|  | ; LINUX-32-PIC: 	movl	$dst+64, ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst+64, _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux01: | 
|  | ; DARWIN-32-PIC: 	calll	L14$pb | 
|  | ; DARWIN-32-PIC-NEXT: L14$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L14$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L14$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qxx01() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qxx01: | 
|  | ; LINUX-64-STATIC: movq    $xdst+64, ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qxx01: | 
|  | ; LINUX-32-STATIC: 	movl	$xdst+64, ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qxx01: | 
|  | ; LINUX-32-PIC: 	movl	$xdst+64, ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qxx01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qxx01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xdst+64, _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qxx01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qxx01: | 
|  | ; DARWIN-32-PIC: 	calll	L15$pb | 
|  | ; DARWIN-32-PIC-NEXT: L15$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L15$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L15$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qxx01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qxx01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qxx01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 | 
|  | %2 = getelementptr i32, i32* %0, i64 16 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ; LINUX-64-STATIC-LABEL: qux02: | 
|  | ; LINUX-64-STATIC: movl    src+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux02: | 
|  | ; LINUX-32-STATIC: 	movl	src+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  | ret void | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux02: | 
|  | ; LINUX-32-PIC: 	movl	src+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux02: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux02: | 
|  | ; DARWIN-32-STATIC: 	movl	_src+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux02: | 
|  | ; DARWIN-32-PIC: 	calll	L16$pb | 
|  | ; DARWIN-32-PIC-NEXT: L16$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L16$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L16$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux02: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux02: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qxx02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 | 
|  | %2 = getelementptr i32, i32* %0, i64 16 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ; LINUX-64-STATIC-LABEL: qxx02: | 
|  | ; LINUX-64-STATIC: movl    xsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qxx02: | 
|  | ; LINUX-32-STATIC: 	movl	xsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  | ret void | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qxx02: | 
|  | ; LINUX-32-PIC: 	movl	xsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qxx02: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qxx02: | 
|  | ; DARWIN-32-STATIC: 	movl	_xsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qxx02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qxx02: | 
|  | ; DARWIN-32-PIC: 	calll	L17$pb | 
|  | ; DARWIN-32-PIC-NEXT: L17$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L17$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L17$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qxx02: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qxx02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qxx02: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux03() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qux03: | 
|  | ; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ddst+64(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux03: | 
|  | ; LINUX-32-STATIC: 	movl	dsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ddst+64 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux03: | 
|  | ; LINUX-32-PIC: 	movl	dsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ddst+64 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux03: | 
|  | ; DARWIN-32-STATIC: 	movl	_dsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ddst+64 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+64 | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux03: | 
|  | ; DARWIN-32-PIC: 	calll	L18$pb | 
|  | ; DARWIN-32-PIC-NEXT: L18$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L18$pb)+64([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ddst-L18$pb)+64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux03: | 
|  | ; DARWIN-64-STATIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ddst+64(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux03: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+64(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux03: | 
|  | ; DARWIN-64-PIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ddst+64(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux04() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qux04: | 
|  | ; LINUX-64-STATIC: movq    $ddst+64, dptr(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst+64, dptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst+64, dptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst+64, _dptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst+64, _dptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux04: | 
|  | ; DARWIN-32-PIC: 	calll	L19$pb | 
|  | ; DARWIN-32-PIC-NEXT: L19$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L19$pb)+64([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L19$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst+64(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst+64(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst+64(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux05() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 | 
|  | %2 = getelementptr i32, i32* %0, i64 16 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ; LINUX-64-STATIC-LABEL: qux05: | 
|  | ; LINUX-64-STATIC: movl    dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux05: | 
|  | ; LINUX-32-STATIC: 	movl	dsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  | ret void | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux05: | 
|  | ; LINUX-32-PIC: 	movl	dsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux05: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux05: | 
|  | ; DARWIN-32-STATIC: 	movl	_dsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux05: | 
|  | ; DARWIN-32-PIC: 	calll	L20$pb | 
|  | ; DARWIN-32-PIC-NEXT: L20$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L20$pb)+64([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L20$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux05: | 
|  | ; DARWIN-64-STATIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux05: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux05: | 
|  | ; DARWIN-64-PIC: 	movl	_dsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux06() nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qux06: | 
|  | ; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ldst+64 | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux06: | 
|  | ; LINUX-32-STATIC: 	movl	lsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ldst+64 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux06: | 
|  | ; LINUX-32-PIC: 	movl	lsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ldst+64 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux06: | 
|  | ; LINUX-64-PIC: 	movl	lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ldst+64(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux06: | 
|  | ; DARWIN-32-STATIC: 	movl	_lsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ldst+64 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+64 | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux06: | 
|  | ; DARWIN-32-PIC: 	calll	L21$pb | 
|  | ; DARWIN-32-PIC-NEXT: L21$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L21$pb)+64([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ldst-L21$pb)+64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux06: | 
|  | ; DARWIN-64-STATIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ldst+64(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux06: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+64(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux06: | 
|  | ; DARWIN-64-PIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ldst+64(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux07() nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: qux07: | 
|  | ; LINUX-64-STATIC: movq    $ldst+64, lptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst+64, lptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst+64, lptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst+64(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst+64, _lptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst+64, _lptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux07: | 
|  | ; DARWIN-32-PIC: 	calll	L22$pb | 
|  | ; DARWIN-32-PIC-NEXT: L22$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L22$pb)+64([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L22$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst+64(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst+64(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst+64(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @qux08() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 | 
|  | %2 = getelementptr i32, i32* %0, i64 16 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ; LINUX-64-STATIC-LABEL: qux08: | 
|  | ; LINUX-64-STATIC: movl    lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: qux08: | 
|  | ; LINUX-32-STATIC: 	movl	lsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  | ret void | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: qux08: | 
|  | ; LINUX-32-PIC: 	movl	lsrc+64, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: qux08: | 
|  | ; LINUX-64-PIC: 	movl	lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _qux08: | 
|  | ; DARWIN-32-STATIC: 	movl	_lsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _qux08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lsrc+64, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _qux08: | 
|  | ; DARWIN-32-PIC: 	calll	L23$pb | 
|  | ; DARWIN-32-PIC-NEXT: L23$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L23$pb)+64([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L23$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 64([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _qux08: | 
|  | ; DARWIN-64-STATIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _qux08: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _qux08: | 
|  | ; DARWIN-64-PIC: 	movl	_lsrc+64(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i | 
|  | %1 = load i32, i32* %0, align 4 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind00: | 
|  | ; LINUX-64-STATIC: movl    src(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], dst(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], dst(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], dst(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_src(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _dst(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind00: | 
|  | ; DARWIN-32-PIC: 	calll	L24$pb | 
|  | ; DARWIN-32-PIC-NEXT: L24$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L24$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L24$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ixd00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i | 
|  | %1 = load i32, i32* %0, align 4 | 
|  | %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ixd00: | 
|  | ; LINUX-64-STATIC: movl    xsrc(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], xdst(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ixd00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], xdst(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ixd00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], xdst(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ixd00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ixd00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _xdst(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ixd00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ixd00: | 
|  | ; DARWIN-32-PIC: 	calll	L25$pb | 
|  | ; DARWIN-32-PIC-NEXT: L25$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L25$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L25$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ixd00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ixd00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ixd00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind01(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i | 
|  | store i32* %0, i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind01: | 
|  | ; LINUX-64-STATIC: leaq    dst(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind01: | 
|  | ; LINUX-64-PIC: 	shlq	$2, %rdi | 
|  | ; LINUX-64-PIC-NEXT: 	addq	dst@GOTPCREL(%rip), %rdi | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	shll	$2, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_dst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind01: | 
|  | ; DARWIN-32-PIC: 	calll	L26$pb | 
|  | ; DARWIN-32-PIC-NEXT: L26$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	shll	$2, [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	L_dst$non_lazy_ptr-L26$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L26$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind01: | 
|  | ; DARWIN-64-STATIC: 	shlq	$2, %rdi | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rdi | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind01: | 
|  | ; DARWIN-64-DYNAMIC: 	shlq	$2, %rdi | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rdi | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind01: | 
|  | ; DARWIN-64-PIC: 	shlq	$2, %rdi | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rdi | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ixd01(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i | 
|  | store i32* %0, i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ixd01: | 
|  | ; LINUX-64-STATIC: leaq    xdst(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ixd01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	xdst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ixd01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	xdst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ixd01: | 
|  | ; LINUX-64-PIC: 	shlq	$2, %rdi | 
|  | ; LINUX-64-PIC-NEXT: 	addq	xdst@GOTPCREL(%rip), %rdi | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ixd01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_xdst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ixd01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	shll	$2, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_xdst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ixd01: | 
|  | ; DARWIN-32-PIC: 	calll	L27$pb | 
|  | ; DARWIN-32-PIC-NEXT: L27$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	shll	$2, [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	L_xdst$non_lazy_ptr-L27$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L27$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ixd01: | 
|  | ; DARWIN-64-STATIC: 	shlq	$2, %rdi | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rdi | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ixd01: | 
|  | ; DARWIN-64-DYNAMIC: 	shlq	$2, %rdi | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rdi | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ixd01: | 
|  | ; DARWIN-64-PIC: 	shlq	$2, %rdi | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rdi | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr i32, i32* %0, i64 %i | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind02: | 
|  | ; LINUX-64-STATIC: movl    src(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	src(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind02: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_src(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind02: | 
|  | ; DARWIN-32-PIC: 	calll	L28$pb | 
|  | ; DARWIN-32-PIC-NEXT: L28$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L28$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L28$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind02: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind02: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ixd02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr i32, i32* %0, i64 %i | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ixd02: | 
|  | ; LINUX-64-STATIC: movl    xsrc(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ixd02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ixd02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	xsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ixd02: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ixd02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ixd02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ixd02: | 
|  | ; DARWIN-32-PIC: 	calll	L29$pb | 
|  | ; DARWIN-32-PIC-NEXT: L29$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L29$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L29$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ixd02: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ixd02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ixd02: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind03(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i | 
|  | %1 = load i32, i32* %0, align 4 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind03: | 
|  | ; LINUX-64-STATIC: movl    dsrc(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ddst(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind03: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ddst(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind03: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ddst(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind03: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ddst(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ddst(,[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind03: | 
|  | ; DARWIN-32-PIC: 	calll	L30$pb | 
|  | ; DARWIN-32-PIC-NEXT: L30$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L30$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], _ddst-L30$pb([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind04(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i | 
|  | store i32* %0, i32** @dptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind04: | 
|  | ; LINUX-64-STATIC: leaq    ddst(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], dptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind04: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ddst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind04: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ddst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind04: | 
|  | ; LINUX-64-PIC: 	shlq	$2, %rdi | 
|  | ; LINUX-64-PIC-NEXT: 	addq	ddst@GOTPCREL(%rip), %rdi | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	%rdi, ([[RAX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind04: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ddst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _dptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind04: | 
|  | ; DARWIN-32-PIC: 	calll	L31$pb | 
|  | ; DARWIN-32-PIC-NEXT: L31$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L31$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L31$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind05(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr i32, i32* %0, i64 %i | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind05: | 
|  | ; LINUX-64-STATIC: movl    dsrc(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind05: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind05: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind05: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind05: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind05: | 
|  | ; DARWIN-32-PIC: 	calll	L32$pb | 
|  | ; DARWIN-32-PIC-NEXT: L32$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dsrc-L32$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L32$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind05: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind05: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind05: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind06(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i | 
|  | %1 = load i32, i32* %0, align 4 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind06: | 
|  | ; LINUX-64-STATIC: movl    lsrc(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ldst(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind06: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ldst(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind06: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ldst(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	ldst(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind06: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ldst(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ldst(,[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind06: | 
|  | ; DARWIN-32-PIC: 	calll	L33$pb | 
|  | ; DARWIN-32-PIC-NEXT: L33$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L33$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], _ldst-L33$pb([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind07(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i | 
|  | store i32* %0, i32** @lptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind07: | 
|  | ; LINUX-64-STATIC: leaq    ldst(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], lptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind07: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ldst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], lptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind07: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ldst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], lptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind07: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ldst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _lptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _lptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind07: | 
|  | ; DARWIN-32-PIC: 	calll	L34$pb | 
|  | ; DARWIN-32-PIC-NEXT: L34$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L34$pb([[EAX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L34$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ind08(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr i32, i32* %0, i64 %i | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ind08: | 
|  | ; LINUX-64-STATIC: movl    lsrc(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ind08: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ind08: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ind08: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ind08: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ind08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], ([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ind08: | 
|  | ; DARWIN-32-PIC: 	calll	L35$pb | 
|  | ; DARWIN-32-PIC-NEXT: L35$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lsrc-L35$pb([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L35$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], ([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ind08: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ind08: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ind08: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], ([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off00: | 
|  | ; LINUX-64-STATIC: movl    src+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], dst+64(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], dst+64(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], dst+64(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_src+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _dst+64(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off00: | 
|  | ; DARWIN-32-PIC: 	calll	L36$pb | 
|  | ; DARWIN-32-PIC-NEXT: L36$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L36$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L36$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @oxf00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: oxf00: | 
|  | ; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], xdst+64(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: oxf00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], xdst+64(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: oxf00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], xdst+64(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: oxf00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _oxf00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _xdst+64(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _oxf00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _oxf00: | 
|  | ; DARWIN-32-PIC: 	calll	L37$pb | 
|  | ; DARWIN-32-PIC-NEXT: L37$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L37$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L37$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _oxf00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _oxf00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _oxf00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_xdst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off01(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 16 | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off01: | 
|  | ; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off01: | 
|  | ; DARWIN-32-PIC: 	calll	L38$pb | 
|  | ; DARWIN-32-PIC-NEXT: L38$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L38$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EDX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L38$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @oxf01(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 16 | 
|  | %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: oxf01: | 
|  | ; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], ptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: oxf01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	xdst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: oxf01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	xdst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: oxf01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _oxf01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_xdst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _oxf01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _oxf01: | 
|  | ; DARWIN-32-PIC: 	calll	L39$pb | 
|  | ; DARWIN-32-PIC-NEXT: L39$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L39$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EDX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L39$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _oxf01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _oxf01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _oxf01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off02: | 
|  | ; LINUX-64-STATIC: movl    src+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	src+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off02: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_src+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off02: | 
|  | ; DARWIN-32-PIC: 	calll	L40$pb | 
|  | ; DARWIN-32-PIC-NEXT: L40$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L40$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L40$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off02: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off02: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @oxf02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: oxf02: | 
|  | ; LINUX-64-STATIC: movl    xsrc+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: oxf02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: oxf02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	xsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: oxf02: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _oxf02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_xsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _oxf02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	64([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _oxf02: | 
|  | ; DARWIN-32-PIC: 	calll	L41$pb | 
|  | ; DARWIN-32-PIC-NEXT: L41$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L41$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	64([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L41$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _oxf02: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _oxf02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _oxf02: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off03(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off03: | 
|  | ; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ddst+64(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off03: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ddst+64(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off03: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ddst+64(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off03: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ddst+64(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ddst+64(,[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off03: | 
|  | ; DARWIN-32-PIC: 	calll	L42$pb | 
|  | ; DARWIN-32-PIC-NEXT: L42$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L42$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ddst-L42$pb)+64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off04(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 16 | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @dptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off04: | 
|  | ; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], dptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off04: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ddst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off04: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ddst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off04: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _dptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off04: | 
|  | ; DARWIN-32-PIC: 	calll	L43$pb | 
|  | ; DARWIN-32-PIC-NEXT: L43$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L43$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L43$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off05(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off05: | 
|  | ; LINUX-64-STATIC: movl    dsrc+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off05: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off05: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off05: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off05: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off05: | 
|  | ; DARWIN-32-PIC: 	calll	L44$pb | 
|  | ; DARWIN-32-PIC-NEXT: L44$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L44$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L44$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off05: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off05: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off05: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off06(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off06: | 
|  | ; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ldst+64(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off06: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ldst+64(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off06: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ldst+64(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	ldst(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off06: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ldst+64(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ldst+64(,[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off06: | 
|  | ; DARWIN-32-PIC: 	calll	L45$pb | 
|  | ; DARWIN-32-PIC-NEXT: L45$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L45$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ldst-L45$pb)+64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off07(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 16 | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @lptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off07: | 
|  | ; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], lptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off07: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ldst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], lptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off07: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ldst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], lptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off07: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _lptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _lptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off07: | 
|  | ; DARWIN-32-PIC: 	calll	L46$pb | 
|  | ; DARWIN-32-PIC-NEXT: L46$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L46$pb)+64([[EAX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L46$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @off08(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: off08: | 
|  | ; LINUX-64-STATIC: movl    lsrc+64(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: off08: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: off08: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: off08: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _off08: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _off08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+64(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 64([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _off08: | 
|  | ; DARWIN-32-PIC: 	calll	L47$pb | 
|  | ; DARWIN-32-PIC-NEXT: L47$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L47$pb)+64([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L47$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 64([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _off08: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _off08: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _off08: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	64([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 64([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo00: | 
|  | ; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], dst+262144(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo00: | 
|  | ; LINUX-32-STATIC: 	movl	src+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dst+262144 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo00: | 
|  | ; LINUX-32-PIC: 	movl	src+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dst+262144 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo00: | 
|  | ; DARWIN-32-STATIC: 	movl	_src+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dst+262144 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo00: | 
|  | ; DARWIN-32-PIC: 	calll	L48$pb | 
|  | ; DARWIN-32-PIC-NEXT: L48$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L48$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	262144([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L48$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo01(i64 %i) nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo01: | 
|  | ; LINUX-64-STATIC: movq    $dst+262144, ptr(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst+262144, ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo01: | 
|  | ; LINUX-32-PIC: 	movl	$dst+262144, ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo01: | 
|  | ; LINUX-64-PIC: 	movl	$262144, [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst+262144, _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_dst$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo01: | 
|  | ; DARWIN-32-PIC: 	calll	L49$pb | 
|  | ; DARWIN-32-PIC-NEXT: L49$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	L_dst$non_lazy_ptr-L49$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L49$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo01: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo01: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo01: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 | 
|  | %2 = getelementptr i32, i32* %0, i64 65536 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo02: | 
|  | ; LINUX-64-STATIC: movl    src+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo02: | 
|  | ; LINUX-32-STATIC: 	movl	src+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo02: | 
|  | ; LINUX-32-PIC: 	movl	src+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo02: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo02: | 
|  | ; DARWIN-32-STATIC: 	movl	_src+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo02: | 
|  | ; DARWIN-32-PIC: 	calll	L50$pb | 
|  | ; DARWIN-32-PIC-NEXT: L50$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L50$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	262144([[ECX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L50$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo02: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo02: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo03(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo03: | 
|  | ; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ddst+262144(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo03: | 
|  | ; LINUX-32-STATIC: 	movl	dsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ddst+262144 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo03: | 
|  | ; LINUX-32-PIC: 	movl	dsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ddst+262144 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo03: | 
|  | ; DARWIN-32-STATIC: 	movl	_dsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ddst+262144 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+262144 | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo03: | 
|  | ; DARWIN-32-PIC: 	calll	L51$pb | 
|  | ; DARWIN-32-PIC-NEXT: L51$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L51$pb)+262144([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ddst-L51$pb)+262144([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo03: | 
|  | ; DARWIN-64-STATIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ddst+262144(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo03: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ddst+262144(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo03: | 
|  | ; DARWIN-64-PIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ddst+262144(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo04(i64 %i) nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo04: | 
|  | ; LINUX-64-STATIC: movq    $ddst+262144, dptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst+262144, dptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst+262144, dptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo04: | 
|  | ; LINUX-64-PIC: 	movl	$262144, [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst+262144, _dptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst+262144, _dptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo04: | 
|  | ; DARWIN-32-PIC: 	calll	L52$pb | 
|  | ; DARWIN-32-PIC-NEXT: L52$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L52$pb)+262144([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L52$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst+262144(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst+262144(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst+262144(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo05(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 | 
|  | %2 = getelementptr i32, i32* %0, i64 65536 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo05: | 
|  | ; LINUX-64-STATIC: movl    dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo05: | 
|  | ; LINUX-32-STATIC: 	movl	dsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo05: | 
|  | ; LINUX-32-PIC: 	movl	dsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo05: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]]), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo05: | 
|  | ; DARWIN-32-STATIC: 	movl	_dsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo05: | 
|  | ; DARWIN-32-PIC: 	calll	L53$pb | 
|  | ; DARWIN-32-PIC-NEXT: L53$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L53$pb)+262144([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L53$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo05: | 
|  | ; DARWIN-64-STATIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo05: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo05: | 
|  | ; DARWIN-64-PIC: 	movl	_dsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo06(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 | 
|  | store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo06: | 
|  | ; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ldst+262144(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo06: | 
|  | ; LINUX-32-STATIC: 	movl	lsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ldst+262144 | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo06: | 
|  | ; LINUX-32-PIC: 	movl	lsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ldst+262144 | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo06: | 
|  | ; LINUX-64-PIC: 	movl	lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], ldst+262144(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo06: | 
|  | ; DARWIN-32-STATIC: 	movl	_lsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ldst+262144 | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+262144 | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo06: | 
|  | ; DARWIN-32-PIC: 	calll	L54$pb | 
|  | ; DARWIN-32-PIC-NEXT: L54$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L54$pb)+262144([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], (_ldst-L54$pb)+262144([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo06: | 
|  | ; DARWIN-64-STATIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], _ldst+262144(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo06: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], _ldst+262144(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo06: | 
|  | ; DARWIN-64-PIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], _ldst+262144(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo07(i64 %i) nounwind { | 
|  | entry: | 
|  | store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo07: | 
|  | ; LINUX-64-STATIC: movq    $ldst+262144, lptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst+262144, lptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst+262144, lptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst+262144(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst+262144, _lptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst+262144, _lptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo07: | 
|  | ; DARWIN-32-PIC: 	calll	L55$pb | 
|  | ; DARWIN-32-PIC-NEXT: L55$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L55$pb)+262144([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L55$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst+262144(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst+262144(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst+262144(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @moo08(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 | 
|  | %2 = getelementptr i32, i32* %0, i64 65536 | 
|  | store i32 %1, i32* %2, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: moo08: | 
|  | ; LINUX-64-STATIC: movl    lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: moo08: | 
|  | ; LINUX-32-STATIC: 	movl	lsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: moo08: | 
|  | ; LINUX-32-PIC: 	movl	lsrc+262144, [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: moo08: | 
|  | ; LINUX-64-PIC: 	movl	lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _moo08: | 
|  | ; DARWIN-32-STATIC: 	movl	_lsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _moo08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lsrc+262144, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _moo08: | 
|  | ; DARWIN-32-PIC: 	calll	L56$pb | 
|  | ; DARWIN-32-PIC-NEXT: L56$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L56$pb)+262144([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L56$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _moo08: | 
|  | ; DARWIN-64-STATIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _moo08: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _moo08: | 
|  | ; DARWIN-64-PIC: 	movl	_lsrc+262144(%rip), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big00: | 
|  | ; LINUX-64-STATIC: movl    src+262144(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], dst+262144(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], dst+262144(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], dst+262144(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_src+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _dst+262144(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big00: | 
|  | ; DARWIN-32-PIC: 	calll	L57$pb | 
|  | ; DARWIN-32-PIC-NEXT: L57$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L57$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	262144([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L57$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big01(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 65536 | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @ptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big01: | 
|  | ; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], ptr(%rip) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], ptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _ptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], ([[ECX]]) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big01: | 
|  | ; DARWIN-32-PIC: 	calll	L58$pb | 
|  | ; DARWIN-32-PIC-NEXT: L58$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L58$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EDX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L58$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], ([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = add i64 %i, 65536 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big02: | 
|  | ; LINUX-64-STATIC: movl    src+262144(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	src+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big02: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_src+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	262144([[ECX]],[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ptr$non_lazy_ptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EDX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big02: | 
|  | ; DARWIN-32-PIC: 	calll	L59$pb | 
|  | ; DARWIN-32-PIC-NEXT: L59$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L59$pb([[EAX]]), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	262144([[EDX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L59$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big02: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big02: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big03(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big03: | 
|  | ; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ddst+262144(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big03: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ddst+262144(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big03: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ddst+262144(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ddst@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big03: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ddst+262144(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ddst+262144(,[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big03: | 
|  | ; DARWIN-32-PIC: 	calll	L60$pb | 
|  | ; DARWIN-32-PIC-NEXT: L60$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L60$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ddst-L60$pb)+262144([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	_ddst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big04(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 65536 | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @dptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big04: | 
|  | ; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], dptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big04: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], dptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big04: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], dptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], ([[RCX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big04: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _dptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _dptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big04: | 
|  | ; DARWIN-32-PIC: 	calll	L61$pb | 
|  | ; DARWIN-32-PIC-NEXT: L61$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L61$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _dptr-L61$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _dptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big05(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = add i64 %i, 65536 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big05: | 
|  | ; LINUX-64-STATIC: movl    dsrc+262144(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big05: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big05: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big05: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RCX]]), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big05: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big05: | 
|  | ; DARWIN-32-PIC: 	calll	L62$pb | 
|  | ; DARWIN-32-PIC-NEXT: L62$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_dsrc-L62$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L62$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big05: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big05: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big05: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_dptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big06(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 | 
|  | %2 = load i32, i32* %1, align 4 | 
|  | %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 | 
|  | store i32 %2, i32* %3, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big06: | 
|  | ; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], ldst+262144(,%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big06: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], ldst+262144(,[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big06: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], ldst+262144(,[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	ldst(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big06: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], _ldst+262144(,[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], _ldst+262144(,[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big06: | 
|  | ; DARWIN-32-PIC: 	calll	L63$pb | 
|  | ; DARWIN-32-PIC-NEXT: L63$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L63$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], (_ldst-L63$pb)+262144([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	_ldst(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big07(i64 %i) nounwind { | 
|  | entry: | 
|  | %.sum = add i64 %i, 65536 | 
|  | %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum | 
|  | store i32* %0, i32** @lptr, align 8 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big07: | 
|  | ; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: movq    [[RAX]], lptr | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big07: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[EAX]], lptr | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big07: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[EAX]], lptr | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	[[RAX]], lptr(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big07: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[EAX]], _lptr | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[EAX]], _lptr | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big07: | 
|  | ; DARWIN-32-PIC: 	calll	L64$pb | 
|  | ; DARWIN-32-PIC-NEXT: L64$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L64$pb)+262144([[EAX]],[[ECX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[ECX]], _lptr-L64$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	[[RAX]], _lptr(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @big08(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = add i64 %i, 65536 | 
|  | %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | %4 = getelementptr i32, i32* %0, i64 %1 | 
|  | store i32 %3, i32* %4, align 4 | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: big08: | 
|  | ; LINUX-64-STATIC: movl    lsrc+262144(,%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-STATIC: movl    [[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: big08: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: big08: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[EDX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: big08: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	lptr(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _big08: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _big08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lsrc+262144(,[[EAX]],4), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[EDX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	[[ECX]], 262144([[EDX]],[[EAX]],4) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _big08: | 
|  | ; DARWIN-32-PIC: 	calll	L65$pb | 
|  | ; DARWIN-32-PIC-NEXT: L65$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	(_lsrc-L65$pb)+262144([[EAX]],[[ECX]],4), [[EDX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L65$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	[[EDX]], 262144([[EAX]],[[ECX]],4) | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _big08: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _big08: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _big08: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	262144([[RAX]],%rdi,4), [[EAX:%e.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_lptr(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movl	[[EAX]], 262144([[RCX]],%rdi,4) | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @src to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar00: | 
|  | ; LINUX-64-STATIC: movl    $src, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar00: | 
|  | ; LINUX-32-STATIC: 	movl	$src, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar00: | 
|  | ; LINUX-32-PIC: 	movl	$src, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_src, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar00: | 
|  | ; DARWIN-32-PIC: 	calll	L66$pb | 
|  | ; DARWIN-32-PIC-NEXT: L66$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L66$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bxr00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([32 x i32]* @xsrc to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bxr00: | 
|  | ; LINUX-64-STATIC: movl    $xsrc, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bxr00: | 
|  | ; LINUX-32-STATIC: 	movl	$xsrc, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bxr00: | 
|  | ; LINUX-32-PIC: 	movl	$xsrc, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bxr00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bxr00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xsrc, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bxr00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bxr00: | 
|  | ; DARWIN-32-PIC: 	calll	L67$pb | 
|  | ; DARWIN-32-PIC-NEXT: L67$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L67$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bxr00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bxr00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bxr00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @dst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar01: | 
|  | ; LINUX-64-STATIC: movl    $dst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar01: | 
|  | ; LINUX-32-PIC: 	movl	$dst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar01: | 
|  | ; DARWIN-32-PIC: 	calll	L68$pb | 
|  | ; DARWIN-32-PIC-NEXT: L68$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L68$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bxr01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([32 x i32]* @xdst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bxr01: | 
|  | ; LINUX-64-STATIC: movl    $xdst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bxr01: | 
|  | ; LINUX-32-STATIC: 	movl	$xdst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bxr01: | 
|  | ; LINUX-32-PIC: 	movl	$xdst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bxr01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bxr01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xdst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bxr01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bxr01: | 
|  | ; DARWIN-32-PIC: 	calll	L69$pb | 
|  | ; DARWIN-32-PIC-NEXT: L69$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L69$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bxr01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bxr01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bxr01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar02() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32** @ptr to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar02: | 
|  | ; LINUX-64-STATIC: movl    $ptr, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar02: | 
|  | ; LINUX-32-STATIC: 	movl	$ptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar02: | 
|  | ; LINUX-32-PIC: 	movl	$ptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar02: | 
|  | ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar02: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar02: | 
|  | ; DARWIN-32-PIC: 	calll	L70$pb | 
|  | ; DARWIN-32-PIC-NEXT: L70$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L70$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar02: | 
|  | ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar02: | 
|  | ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar03() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @dsrc to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar03: | 
|  | ; LINUX-64-STATIC: movl    $dsrc, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar03: | 
|  | ; LINUX-32-STATIC: 	movl	$dsrc, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar03: | 
|  | ; LINUX-32-PIC: 	movl	$dsrc, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar03: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dsrc, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_dsrc, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar03: | 
|  | ; DARWIN-32-PIC: 	calll	L71$pb | 
|  | ; DARWIN-32-PIC-NEXT: L71$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_dsrc-L71$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar04() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @ddst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar04: | 
|  | ; LINUX-64-STATIC: movl    $ddst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar04: | 
|  | ; DARWIN-32-PIC: 	calll	L72$pb | 
|  | ; DARWIN-32-PIC-NEXT: L72$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L72$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar05() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32** @dptr to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar05: | 
|  | ; LINUX-64-STATIC: movl    $dptr, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar05: | 
|  | ; LINUX-32-STATIC: 	movl	$dptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar05: | 
|  | ; LINUX-32-PIC: 	movl	$dptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar05: | 
|  | ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar05: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_dptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar05: | 
|  | ; DARWIN-32-PIC: 	calll	L73$pb | 
|  | ; DARWIN-32-PIC-NEXT: L73$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_dptr-L73$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar05: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar05: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar05: | 
|  | ; DARWIN-64-PIC: 	leaq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar06() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @lsrc to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar06: | 
|  | ; LINUX-64-STATIC: movl    $lsrc, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar06: | 
|  | ; LINUX-32-STATIC: 	movl	$lsrc, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar06: | 
|  | ; LINUX-32-PIC: 	movl	$lsrc, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar06: | 
|  | ; DARWIN-32-STATIC: 	movl	$_lsrc, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_lsrc, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar06: | 
|  | ; DARWIN-32-PIC: 	calll	L74$pb | 
|  | ; DARWIN-32-PIC-NEXT: L74$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_lsrc-L74$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar07() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @ldst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar07: | 
|  | ; LINUX-64-STATIC: movl    $ldst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar07: | 
|  | ; DARWIN-32-PIC: 	calll	L75$pb | 
|  | ; DARWIN-32-PIC-NEXT: L75$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L75$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bar08() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32** @lptr to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bar08: | 
|  | ; LINUX-64-STATIC: movl    $lptr, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bar08: | 
|  | ; LINUX-32-STATIC: 	movl	$lptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bar08: | 
|  | ; LINUX-32-PIC: 	movl	$lptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bar08: | 
|  | ; LINUX-64-PIC: 	leaq	lptr(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bar08: | 
|  | ; DARWIN-32-STATIC: 	movl	$_lptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bar08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_lptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bar08: | 
|  | ; DARWIN-32-PIC: 	calll	L76$pb | 
|  | ; DARWIN-32-PIC-NEXT: L76$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_lptr-L76$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bar08: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bar08: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bar08: | 
|  | ; DARWIN-64-PIC: 	leaq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @src to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: har00: | 
|  | ; LINUX-64-STATIC: movl    $src, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har00: | 
|  | ; LINUX-32-STATIC: 	movl	$src, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har00: | 
|  | ; LINUX-32-PIC: 	movl	$src, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_src, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har00: | 
|  | ; DARWIN-32-PIC: 	calll	L77$pb | 
|  | ; DARWIN-32-PIC-NEXT: L77$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L77$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @hxr00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([32 x i32]* @xsrc to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: hxr00: | 
|  | ; LINUX-64-STATIC: movl    $xsrc, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: hxr00: | 
|  | ; LINUX-32-STATIC: 	movl	$xsrc, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: hxr00: | 
|  | ; LINUX-32-PIC: 	movl	$xsrc, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: hxr00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _hxr00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xsrc, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _hxr00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _hxr00: | 
|  | ; DARWIN-32-PIC: 	calll	L78$pb | 
|  | ; DARWIN-32-PIC-NEXT: L78$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L78$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _hxr00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _hxr00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _hxr00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @dst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: har01: | 
|  | ; LINUX-64-STATIC: movl    $dst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har01: | 
|  | ; LINUX-32-PIC: 	movl	$dst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har01: | 
|  | ; DARWIN-32-PIC: 	calll	L79$pb | 
|  | ; DARWIN-32-PIC-NEXT: L79$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L79$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @hxr01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([32 x i32]* @xdst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: hxr01: | 
|  | ; LINUX-64-STATIC: movl    $xdst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: hxr01: | 
|  | ; LINUX-32-STATIC: 	movl	$xdst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: hxr01: | 
|  | ; LINUX-32-PIC: 	movl	$xdst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: hxr01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _hxr01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xdst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _hxr01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _hxr01: | 
|  | ; DARWIN-32-PIC: 	calll	L80$pb | 
|  | ; DARWIN-32-PIC-NEXT: L80$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L80$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _hxr01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _hxr01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _hxr01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = bitcast i32* %0 to i8* | 
|  | ret i8* %1 | 
|  | ; LINUX-64-STATIC-LABEL: har02: | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har02: | 
|  | ; LINUX-32-STATIC: 	movl	ptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har02: | 
|  | ; LINUX-32-PIC: 	movl	ptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har02: | 
|  | ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har02: | 
|  | ; DARWIN-32-STATIC: 	movl	_ptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har02: | 
|  | ; DARWIN-32-PIC: 	calll	L81$pb | 
|  | ; DARWIN-32-PIC-NEXT: L81$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L81$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har02: | 
|  | ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har02: | 
|  | ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har03() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @dsrc to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: har03: | 
|  | ; LINUX-64-STATIC: movl    $dsrc, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har03: | 
|  | ; LINUX-32-STATIC: 	movl	$dsrc, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har03: | 
|  | ; LINUX-32-PIC: 	movl	$dsrc, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har03: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dsrc, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_dsrc, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har03: | 
|  | ; DARWIN-32-PIC: 	calll	L82$pb | 
|  | ; DARWIN-32-PIC-NEXT: L82$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_dsrc-L82$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har04() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @ddst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: har04: | 
|  | ; LINUX-64-STATIC: movl    $ddst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har04: | 
|  | ; DARWIN-32-PIC: 	calll	L83$pb | 
|  | ; DARWIN-32-PIC-NEXT: L83$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ddst-L83$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har05() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = bitcast i32* %0 to i8* | 
|  | ret i8* %1 | 
|  | ; LINUX-64-STATIC-LABEL: har05: | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har05: | 
|  | ; LINUX-32-STATIC: 	movl	dptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har05: | 
|  | ; LINUX-32-PIC: 	movl	dptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har05: | 
|  | ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har05: | 
|  | ; DARWIN-32-STATIC: 	movl	_dptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har05: | 
|  | ; DARWIN-32-PIC: 	calll	L84$pb | 
|  | ; DARWIN-32-PIC-NEXT: L84$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L84$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har05: | 
|  | ; DARWIN-64-STATIC: 	movq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har05: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har05: | 
|  | ; DARWIN-64-PIC: 	movq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har06() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @lsrc to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: har06: | 
|  | ; LINUX-64-STATIC: movl    $lsrc, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har06: | 
|  | ; LINUX-32-STATIC: 	movl	$lsrc, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har06: | 
|  | ; LINUX-32-PIC: 	movl	$lsrc, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har06: | 
|  | ; DARWIN-32-STATIC: 	movl	$_lsrc, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_lsrc, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har06: | 
|  | ; DARWIN-32-PIC: 	calll	L85$pb | 
|  | ; DARWIN-32-PIC-NEXT: L85$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_lsrc-L85$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har07() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast ([131072 x i32]* @ldst to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: har07: | 
|  | ; LINUX-64-STATIC: movl    $ldst, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har07: | 
|  | ; DARWIN-32-PIC: 	calll	L86$pb | 
|  | ; DARWIN-32-PIC-NEXT: L86$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_ldst-L86$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @har08() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = bitcast i32* %0 to i8* | 
|  | ret i8* %1 | 
|  | ; LINUX-64-STATIC-LABEL: har08: | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: har08: | 
|  | ; LINUX-32-STATIC: 	movl	lptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: har08: | 
|  | ; LINUX-32-PIC: 	movl	lptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: har08: | 
|  | ; LINUX-64-PIC: 	movq	lptr(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _har08: | 
|  | ; DARWIN-32-STATIC: 	movl	_lptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _har08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _har08: | 
|  | ; DARWIN-32-PIC: 	calll	L87$pb | 
|  | ; DARWIN-32-PIC-NEXT: L87$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L87$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _har08: | 
|  | ; DARWIN-64-STATIC: 	movq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _har08: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _har08: | 
|  | ; DARWIN-64-PIC: 	movq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bat00: | 
|  | ; LINUX-64-STATIC: movl    $src+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat00: | 
|  | ; LINUX-32-STATIC: 	movl	$src+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat00: | 
|  | ; LINUX-32-PIC: 	movl	$src+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_src+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_src$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat00: | 
|  | ; DARWIN-32-PIC: 	calll	L88$pb | 
|  | ; DARWIN-32-PIC-NEXT: L88$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L88$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bxt00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bxt00: | 
|  | ; LINUX-64-STATIC: movl    $xsrc+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bxt00: | 
|  | ; LINUX-32-STATIC: 	movl	$xsrc+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bxt00: | 
|  | ; LINUX-32-PIC: 	movl	$xsrc+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bxt00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bxt00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xsrc+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bxt00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xsrc$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bxt00: | 
|  | ; DARWIN-32-PIC: 	calll	L89$pb | 
|  | ; DARWIN-32-PIC-NEXT: L89$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L89$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bxt00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bxt00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bxt00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bat01: | 
|  | ; LINUX-64-STATIC: movl    $dst+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat01: | 
|  | ; LINUX-32-PIC: 	movl	$dst+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_dst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat01: | 
|  | ; DARWIN-32-PIC: 	calll	L90$pb | 
|  | ; DARWIN-32-PIC-NEXT: L90$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L90$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bxt01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bxt01: | 
|  | ; LINUX-64-STATIC: movl    $xdst+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bxt01: | 
|  | ; LINUX-32-STATIC: 	movl	$xdst+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bxt01: | 
|  | ; LINUX-32-PIC: 	movl	$xdst+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bxt01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bxt01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xdst+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bxt01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_xdst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bxt01: | 
|  | ; DARWIN-32-PIC: 	calll	L91$pb | 
|  | ; DARWIN-32-PIC-NEXT: L91$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L91$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bxt01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bxt01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bxt01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = getelementptr i32, i32* %0, i64 16 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: bat02: | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: addq    $64, %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat02: | 
|  | ; LINUX-32-STATIC: 	movl	ptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	addl	$64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat02: | 
|  | ; LINUX-32-PIC: 	movl	ptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat02: | 
|  | ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat02: | 
|  | ; DARWIN-32-STATIC: 	movl	_ptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat02: | 
|  | ; DARWIN-32-PIC: 	calll	L92$pb | 
|  | ; DARWIN-32-PIC-NEXT: L92$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L92$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat02: | 
|  | ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat02: | 
|  | ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat03() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bat03: | 
|  | ; LINUX-64-STATIC: movl    $dsrc+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat03: | 
|  | ; LINUX-32-STATIC: 	movl	$dsrc+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat03: | 
|  | ; LINUX-32-PIC: 	movl	$dsrc+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat03: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dsrc+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_dsrc+64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat03: | 
|  | ; DARWIN-32-PIC: 	calll	L93$pb | 
|  | ; DARWIN-32-PIC-NEXT: L93$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L93$pb)+64([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc+64(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc+64(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc+64(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat04() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bat04: | 
|  | ; LINUX-64-STATIC: movl    $ddst+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst+64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat04: | 
|  | ; DARWIN-32-PIC: 	calll	L94$pb | 
|  | ; DARWIN-32-PIC-NEXT: L94$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L94$pb)+64([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst+64(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst+64(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst+64(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat05() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = getelementptr i32, i32* %0, i64 16 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: bat05: | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: addq    $64, %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat05: | 
|  | ; LINUX-32-STATIC: 	movl	dptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	addl	$64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat05: | 
|  | ; LINUX-32-PIC: 	movl	dptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat05: | 
|  | ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat05: | 
|  | ; DARWIN-32-STATIC: 	movl	_dptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_dptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat05: | 
|  | ; DARWIN-32-PIC: 	calll	L95$pb | 
|  | ; DARWIN-32-PIC-NEXT: L95$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L95$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat05: | 
|  | ; DARWIN-64-STATIC: 	movq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat05: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat05: | 
|  | ; DARWIN-64-PIC: 	movq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat06() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bat06: | 
|  | ; LINUX-64-STATIC: movl    $lsrc+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat06: | 
|  | ; LINUX-32-STATIC: 	movl	$lsrc+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat06: | 
|  | ; LINUX-32-PIC: 	movl	$lsrc+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc+64(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat06: | 
|  | ; DARWIN-32-STATIC: 	movl	$_lsrc+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_lsrc+64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat06: | 
|  | ; DARWIN-32-PIC: 	calll	L96$pb | 
|  | ; DARWIN-32-PIC-NEXT: L96$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L96$pb)+64([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc+64(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc+64(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc+64(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat07() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bat07: | 
|  | ; LINUX-64-STATIC: movl    $ldst+64, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst+64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst+64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst+64(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst+64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst+64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat07: | 
|  | ; DARWIN-32-PIC: 	calll	L97$pb | 
|  | ; DARWIN-32-PIC-NEXT: L97$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L97$pb)+64([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst+64(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst+64(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst+64(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bat08() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = getelementptr i32, i32* %0, i64 16 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: bat08: | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: addq    $64, %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bat08: | 
|  | ; LINUX-32-STATIC: 	movl	lptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	addl	$64, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bat08: | 
|  | ; LINUX-32-PIC: 	movl	lptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bat08: | 
|  | ; LINUX-64-PIC: 	movq	lptr(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bat08: | 
|  | ; DARWIN-32-STATIC: 	movl	_lptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bat08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	_lptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bat08: | 
|  | ; DARWIN-32-PIC: 	calll	L98$pb | 
|  | ; DARWIN-32-PIC-NEXT: L98$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L98$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$64, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bat08: | 
|  | ; DARWIN-64-STATIC: 	movq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bat08: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bat08: | 
|  | ; DARWIN-64-PIC: 	movq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	$64, %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam00() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bam00: | 
|  | ; LINUX-64-STATIC: movl    $src+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam00: | 
|  | ; LINUX-32-STATIC: 	movl	$src+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam00: | 
|  | ; LINUX-32-PIC: 	movl	$src+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam00: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	src@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam00: | 
|  | ; DARWIN-32-STATIC: 	movl	$_src+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_src$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam00: | 
|  | ; DARWIN-32-PIC: 	calll	L99$pb | 
|  | ; DARWIN-32-PIC-NEXT: L99$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	L_src$non_lazy_ptr-L99$pb([[ECX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam00: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam00: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam00: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_src@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bam01: | 
|  | ; LINUX-64-STATIC: movl    $dst+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam01: | 
|  | ; LINUX-32-STATIC: 	movl	$dst+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam01: | 
|  | ; LINUX-32-PIC: 	movl	$dst+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam01: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	dst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dst+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_dst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam01: | 
|  | ; DARWIN-32-PIC: 	calll	L100$pb | 
|  | ; DARWIN-32-PIC-NEXT: L100$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	L_dst$non_lazy_ptr-L100$pb([[ECX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam01: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam01: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam01: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_dst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bxm01() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bxm01: | 
|  | ; LINUX-64-STATIC: movl    $xdst+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bxm01: | 
|  | ; LINUX-32-STATIC: 	movl	$xdst+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bxm01: | 
|  | ; LINUX-32-PIC: 	movl	$xdst+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bxm01: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	xdst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bxm01: | 
|  | ; DARWIN-32-STATIC: 	movl	$_xdst+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bxm01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	L_xdst$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bxm01: | 
|  | ; DARWIN-32-PIC: 	calll	L101$pb | 
|  | ; DARWIN-32-PIC-NEXT: L101$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	L_xdst$non_lazy_ptr-L101$pb([[ECX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bxm01: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bxm01: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bxm01: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_xdst@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam02() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = getelementptr i32, i32* %0, i64 65536 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: bam02: | 
|  | ; LINUX-64-STATIC: movl    $262144, %eax | 
|  | ; LINUX-64-STATIC: addq    ptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam02: | 
|  | ; LINUX-32-STATIC: 	movl	$262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	addl	ptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam02: | 
|  | ; LINUX-32-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	addl	ptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam02: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	([[RCX]]), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam02: | 
|  | ; DARWIN-32-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	_ptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	([[ECX]]), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam02: | 
|  | ; DARWIN-32-PIC: 	calll	L102$pb | 
|  | ; DARWIN-32-PIC-NEXT: L102$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L102$pb([[EAX]]), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	([[ECX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam02: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	([[RCX]]), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam02: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	([[RCX]]), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam02: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	([[RCX]]), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam03() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bam03: | 
|  | ; LINUX-64-STATIC: movl    $dsrc+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam03: | 
|  | ; LINUX-32-STATIC: 	movl	$dsrc+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam03: | 
|  | ; LINUX-32-PIC: 	movl	$dsrc+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam03: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	dsrc@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam03: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dsrc+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_dsrc+262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam03: | 
|  | ; DARWIN-32-PIC: 	calll	L103$pb | 
|  | ; DARWIN-32-PIC-NEXT: L103$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L103$pb)+262144([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc+262144(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc+262144(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc+262144(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam04() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bam04: | 
|  | ; LINUX-64-STATIC: movl    $ddst+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam04: | 
|  | ; LINUX-32-STATIC: 	movl	$ddst+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam04: | 
|  | ; LINUX-32-PIC: 	movl	$ddst+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam04: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	ddst@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam04: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ddst+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ddst+262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam04: | 
|  | ; DARWIN-32-PIC: 	calll	L104$pb | 
|  | ; DARWIN-32-PIC-NEXT: L104$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L104$pb)+262144([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst+262144(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst+262144(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst+262144(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam05() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = getelementptr i32, i32* %0, i64 65536 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: bam05: | 
|  | ; LINUX-64-STATIC: movl    $262144, %eax | 
|  | ; LINUX-64-STATIC: addq    dptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam05: | 
|  | ; LINUX-32-STATIC: 	movl	$262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	addl	dptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam05: | 
|  | ; LINUX-32-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	addl	dptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam05: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	movq	dptr@GOTPCREL(%rip), [[RCX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	addq	([[RCX]]), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam05: | 
|  | ; DARWIN-32-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	_dptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	_dptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam05: | 
|  | ; DARWIN-32-PIC: 	calll	L105$pb | 
|  | ; DARWIN-32-PIC-NEXT: L105$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	_dptr-L105$pb([[ECX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam05: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam05: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam05: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_dptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam06() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bam06: | 
|  | ; LINUX-64-STATIC: movl    $lsrc+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam06: | 
|  | ; LINUX-32-STATIC: 	movl	$lsrc+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam06: | 
|  | ; LINUX-32-PIC: 	movl	$lsrc+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc+262144(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam06: | 
|  | ; DARWIN-32-STATIC: 	movl	$_lsrc+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_lsrc+262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam06: | 
|  | ; DARWIN-32-PIC: 	calll	L106$pb | 
|  | ; DARWIN-32-PIC-NEXT: L106$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L106$pb)+262144([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc+262144(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc+262144(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc+262144(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam07() nounwind { | 
|  | entry: | 
|  | ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*) | 
|  | ; LINUX-64-STATIC-LABEL: bam07: | 
|  | ; LINUX-64-STATIC: movl    $ldst+262144, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam07: | 
|  | ; LINUX-32-STATIC: 	movl	$ldst+262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam07: | 
|  | ; LINUX-32-PIC: 	movl	$ldst+262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst+262144(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam07: | 
|  | ; DARWIN-32-STATIC: 	movl	$_ldst+262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_ldst+262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam07: | 
|  | ; DARWIN-32-PIC: 	calll	L107$pb | 
|  | ; DARWIN-32-PIC-NEXT: L107$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%eax | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L107$pb)+262144([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst+262144(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst+262144(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst+262144(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @bam08() nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = getelementptr i32, i32* %0, i64 65536 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: bam08: | 
|  | ; LINUX-64-STATIC: movl    $262144, %eax | 
|  | ; LINUX-64-STATIC: addq    lptr(%rip), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: bam08: | 
|  | ; LINUX-32-STATIC: 	movl	$262144, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	addl	lptr, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: bam08: | 
|  | ; LINUX-32-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	addl	lptr, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: bam08: | 
|  | ; LINUX-64-PIC: 	movl	$262144, %eax | 
|  | ; LINUX-64-PIC-NEXT: 	addq	lptr(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _bam08: | 
|  | ; DARWIN-32-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	_lptr, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _bam08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	_lptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _bam08: | 
|  | ; DARWIN-32-PIC: 	calll	L108$pb | 
|  | ; DARWIN-32-PIC-NEXT: L108$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	$262144, %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	_lptr-L108$pb([[ECX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _bam08: | 
|  | ; DARWIN-64-STATIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-STATIC-NEXT: 	addq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _bam08: | 
|  | ; DARWIN-64-DYNAMIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	addq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _bam08: | 
|  | ; DARWIN-64-PIC: 	movl	$262144, %eax | 
|  | ; DARWIN-64-PIC-NEXT: 	addq	_lptr(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cat00: | 
|  | ; LINUX-64-STATIC: leaq    src+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	src+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	src+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_src+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat00: | 
|  | ; DARWIN-32-PIC: 	calll	L109$pb | 
|  | ; DARWIN-32-PIC-NEXT: L109$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L109$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cxt00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cxt00: | 
|  | ; LINUX-64-STATIC: leaq    xsrc+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cxt00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	xsrc+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cxt00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	xsrc+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cxt00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cxt00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_xsrc+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cxt00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cxt00: | 
|  | ; DARWIN-32-PIC: 	calll	L110$pb | 
|  | ; DARWIN-32-PIC-NEXT: L110$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L110$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cxt00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cxt00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cxt00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat01(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cat01: | 
|  | ; LINUX-64-STATIC: leaq    dst+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dst+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat01: | 
|  | ; DARWIN-32-PIC: 	calll	L111$pb | 
|  | ; DARWIN-32-PIC-NEXT: L111$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L111$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cxt01(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cxt01: | 
|  | ; LINUX-64-STATIC: leaq    xdst+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cxt01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	xdst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cxt01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	xdst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cxt01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cxt01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_xdst+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cxt01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cxt01: | 
|  | ; DARWIN-32-PIC: 	calll	L112$pb | 
|  | ; DARWIN-32-PIC-NEXT: L112$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L112$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cxt01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cxt01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cxt01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr i32, i32* %0, i64 %1 | 
|  | %3 = bitcast i32* %2 to i8* | 
|  | ret i8* %3 | 
|  | ; LINUX-64-STATIC-LABEL: cat02: | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat02: | 
|  | ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat02: | 
|  | ; DARWIN-32-PIC: 	calll	L113$pb | 
|  | ; DARWIN-32-PIC-NEXT: L113$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L113$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat02: | 
|  | ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat02: | 
|  | ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat03(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cat03: | 
|  | ; LINUX-64-STATIC: leaq    dsrc+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat03: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dsrc+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat03: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dsrc+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat03: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dsrc+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_dsrc+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat03: | 
|  | ; DARWIN-32-PIC: 	calll	L114$pb | 
|  | ; DARWIN-32-PIC-NEXT: L114$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L114$pb)+64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat04(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cat04: | 
|  | ; LINUX-64-STATIC: leaq    ddst+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat04: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ddst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat04: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ddst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat04: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat04: | 
|  | ; DARWIN-32-PIC: 	calll	L115$pb | 
|  | ; DARWIN-32-PIC-NEXT: L115$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L115$pb)+64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat05(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr i32, i32* %0, i64 %1 | 
|  | %3 = bitcast i32* %2 to i8* | 
|  | ret i8* %3 | 
|  | ; LINUX-64-STATIC-LABEL: cat05: | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat05: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat05: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat05: | 
|  | ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat05: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat05: | 
|  | ; DARWIN-32-PIC: 	calll	L116$pb | 
|  | ; DARWIN-32-PIC-NEXT: L116$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L116$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat05: | 
|  | ; DARWIN-64-STATIC: 	movq	_dptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat05: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat05: | 
|  | ; DARWIN-64-PIC: 	movq	_dptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat06(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cat06: | 
|  | ; LINUX-64-STATIC: leaq    lsrc+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat06: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	lsrc+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat06: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	lsrc+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat06: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_lsrc+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_lsrc+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat06: | 
|  | ; DARWIN-32-PIC: 	calll	L117$pb | 
|  | ; DARWIN-32-PIC-NEXT: L117$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L117$pb)+64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat07(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 16 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cat07: | 
|  | ; LINUX-64-STATIC: leaq    ldst+64(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat07: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ldst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat07: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ldst+64(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat07: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+64(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat07: | 
|  | ; DARWIN-32-PIC: 	calll	L118$pb | 
|  | ; DARWIN-32-PIC-NEXT: L118$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L118$pb)+64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cat08(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = add i64 %i, 16 | 
|  | %2 = getelementptr i32, i32* %0, i64 %1 | 
|  | %3 = bitcast i32* %2 to i8* | 
|  | ret i8* %3 | 
|  | ; LINUX-64-STATIC-LABEL: cat08: | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: leaq    64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cat08: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cat08: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cat08: | 
|  | ; LINUX-64-PIC: 	movq	lptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cat08: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cat08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	64([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cat08: | 
|  | ; DARWIN-32-PIC: 	calll	L119$pb | 
|  | ; DARWIN-32-PIC-NEXT: L119$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L119$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	64([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cat08: | 
|  | ; DARWIN-64-STATIC: 	movq	_lptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cat08: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cat08: | 
|  | ; DARWIN-64-PIC: 	movq	_lptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	64([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cam00: | 
|  | ; LINUX-64-STATIC: leaq    src+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	src+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	src+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam00: | 
|  | ; LINUX-64-PIC: 	movq	src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_src+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_src$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam00: | 
|  | ; DARWIN-32-PIC: 	calll	L120$pb | 
|  | ; DARWIN-32-PIC-NEXT: L120$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_src$non_lazy_ptr-L120$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam00: | 
|  | ; DARWIN-64-STATIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam00: | 
|  | ; DARWIN-64-PIC: 	movq	_src@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cxm00(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cxm00: | 
|  | ; LINUX-64-STATIC: leaq    xsrc+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cxm00: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	xsrc+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cxm00: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	xsrc+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cxm00: | 
|  | ; LINUX-64-PIC: 	movq	xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cxm00: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_xsrc+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cxm00: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xsrc$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cxm00: | 
|  | ; DARWIN-32-PIC: 	calll	L121$pb | 
|  | ; DARWIN-32-PIC-NEXT: L121$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xsrc$non_lazy_ptr-L121$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cxm00: | 
|  | ; DARWIN-64-STATIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cxm00: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cxm00: | 
|  | ; DARWIN-64-PIC: 	movq	_xsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam01(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cam01: | 
|  | ; LINUX-64-STATIC: leaq    dst+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam01: | 
|  | ; LINUX-64-PIC: 	movq	dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dst+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_dst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam01: | 
|  | ; DARWIN-32-PIC: 	calll	L122$pb | 
|  | ; DARWIN-32-PIC-NEXT: L122$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_dst$non_lazy_ptr-L122$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam01: | 
|  | ; DARWIN-64-STATIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam01: | 
|  | ; DARWIN-64-PIC: 	movq	_dst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cxm01(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cxm01: | 
|  | ; LINUX-64-STATIC: leaq    xdst+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cxm01: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	xdst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cxm01: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	xdst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cxm01: | 
|  | ; LINUX-64-PIC: 	movq	xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cxm01: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_xdst+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cxm01: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_xdst$non_lazy_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cxm01: | 
|  | ; DARWIN-32-PIC: 	calll	L123$pb | 
|  | ; DARWIN-32-PIC-NEXT: L123$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_xdst$non_lazy_ptr-L123$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cxm01: | 
|  | ; DARWIN-64-STATIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cxm01: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cxm01: | 
|  | ; DARWIN-64-PIC: 	movq	_xdst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam02(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @ptr, align 8 | 
|  | %1 = add i64 %i, 65536 | 
|  | %2 = getelementptr i32, i32* %0, i64 %1 | 
|  | %3 = bitcast i32* %2 to i8* | 
|  | ret i8* %3 | 
|  | ; LINUX-64-STATIC-LABEL: cam02: | 
|  | ; LINUX-64-STATIC: movq    ptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam02: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam02: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	ptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam02: | 
|  | ; LINUX-64-PIC: 	movq	ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam02: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_ptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam02: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_ptr$non_lazy_ptr, [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam02: | 
|  | ; DARWIN-32-PIC: 	calll	L124$pb | 
|  | ; DARWIN-32-PIC-NEXT: L124$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ptr$non_lazy_ptr-L124$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam02: | 
|  | ; DARWIN-64-STATIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam02: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam02: | 
|  | ; DARWIN-64-PIC: 	movq	_ptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam03(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cam03: | 
|  | ; LINUX-64-STATIC: leaq    dsrc+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam03: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	dsrc+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam03: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	dsrc+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam03: | 
|  | ; LINUX-64-PIC: 	movq	dsrc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam03: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_dsrc+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam03: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_dsrc+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam03: | 
|  | ; DARWIN-32-PIC: 	calll	L125$pb | 
|  | ; DARWIN-32-PIC-NEXT: L125$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_dsrc-L125$pb)+262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam03: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam03: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam03: | 
|  | ; DARWIN-64-PIC: 	leaq	_dsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam04(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cam04: | 
|  | ; LINUX-64-STATIC: leaq    ddst+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam04: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam04: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ddst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam04: | 
|  | ; LINUX-64-PIC: 	movq	ddst@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam04: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam04: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ddst+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam04: | 
|  | ; DARWIN-32-PIC: 	calll	L126$pb | 
|  | ; DARWIN-32-PIC-NEXT: L126$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ddst-L126$pb)+262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam04: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam04: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam04: | 
|  | ; DARWIN-64-PIC: 	leaq	_ddst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam05(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @dptr, align 8 | 
|  | %1 = add i64 %i, 65536 | 
|  | %2 = getelementptr i32, i32* %0, i64 %1 | 
|  | %3 = bitcast i32* %2 to i8* | 
|  | ret i8* %3 | 
|  | ; LINUX-64-STATIC-LABEL: cam05: | 
|  | ; LINUX-64-STATIC: movq    dptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam05: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam05: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	dptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam05: | 
|  | ; LINUX-64-PIC: 	movq	dptr@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	([[RAX]]), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam05: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam05: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_dptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam05: | 
|  | ; DARWIN-32-PIC: 	calll	L127$pb | 
|  | ; DARWIN-32-PIC-NEXT: L127$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_dptr-L127$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam05: | 
|  | ; DARWIN-64-STATIC: 	movq	_dptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam05: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_dptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam05: | 
|  | ; DARWIN-64-PIC: 	movq	_dptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam06(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cam06: | 
|  | ; LINUX-64-STATIC: leaq    lsrc+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam06: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	lsrc+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam06: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	lsrc+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam06: | 
|  | ; LINUX-64-PIC: 	leaq	lsrc(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam06: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_lsrc+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam06: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_lsrc+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam06: | 
|  | ; DARWIN-32-PIC: 	calll	L128$pb | 
|  | ; DARWIN-32-PIC-NEXT: L128$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_lsrc-L128$pb)+262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam06: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam06: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam06: | 
|  | ; DARWIN-64-PIC: 	leaq	_lsrc(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam07(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = add i64 %i, 65536 | 
|  | %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 | 
|  | %2 = bitcast i32* %1 to i8* | 
|  | ret i8* %2 | 
|  | ; LINUX-64-STATIC-LABEL: cam07: | 
|  | ; LINUX-64-STATIC: leaq    ldst+262144(,%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam07: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam07: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	ldst+262144(,[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam07: | 
|  | ; LINUX-64-PIC: 	leaq	ldst(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam07: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam07: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	_ldst+262144(,[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam07: | 
|  | ; DARWIN-32-PIC: 	calll	L129$pb | 
|  | ; DARWIN-32-PIC-NEXT: L129$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	(_ldst-L129$pb)+262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam07: | 
|  | ; DARWIN-64-STATIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam07: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam07: | 
|  | ; DARWIN-64-PIC: 	leaq	_ldst(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define i8* @cam08(i64 %i) nounwind { | 
|  | entry: | 
|  | %0 = load i32*, i32** @lptr, align 8 | 
|  | %1 = add i64 %i, 65536 | 
|  | %2 = getelementptr i32, i32* %0, i64 %1 | 
|  | %3 = bitcast i32* %2 to i8* | 
|  | ret i8* %3 | 
|  | ; LINUX-64-STATIC-LABEL: cam08: | 
|  | ; LINUX-64-STATIC: movq    lptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-STATIC: leaq    262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: cam08: | 
|  | ; LINUX-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: cam08: | 
|  | ; LINUX-32-PIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	movl	lptr, [[ECX:%e.x]] | 
|  | ; LINUX-32-PIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: cam08: | 
|  | ; LINUX-64-PIC: 	movq	lptr(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _cam08: | 
|  | ; DARWIN-32-STATIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-STATIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _cam08: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	4(%esp), [[EAX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	_lptr, [[ECX:%e.x]] | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	leal	262144([[ECX]],[[EAX]],4), %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _cam08: | 
|  | ; DARWIN-32-PIC: 	calll	L130$pb | 
|  | ; DARWIN-32-PIC-NEXT: L130$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	4(%esp), [[ECX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	_lptr-L130$pb([[EAX]]), [[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	262144([[EAX]],[[ECX]],4), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _cam08: | 
|  | ; DARWIN-64-STATIC: 	movq	_lptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _cam08: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_lptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _cam08: | 
|  | ; DARWIN-64-PIC: 	movq	_lptr(%rip), [[RAX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	leaq	262144([[RAX]],%rdi,4), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @lcallee() nounwind { | 
|  | entry: | 
|  | call void @x() nounwind | 
|  | call void @x() nounwind | 
|  | call void @x() nounwind | 
|  | call void @x() nounwind | 
|  | call void @x() nounwind | 
|  | call void @x() nounwind | 
|  | call void @x() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: lcallee: | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: callq   x | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: lcallee: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	x | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: lcallee: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	calll	x | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: lcallee: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	x@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _lcallee: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _lcallee: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _lcallee: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_x | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _lcallee: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _lcallee: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _lcallee: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_x | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | declare void @x() | 
|  |  | 
|  | define internal void @dcallee() nounwind { | 
|  | entry: | 
|  | call void @y() nounwind | 
|  | call void @y() nounwind | 
|  | call void @y() nounwind | 
|  | call void @y() nounwind | 
|  | call void @y() nounwind | 
|  | call void @y() nounwind | 
|  | call void @y() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: dcallee: | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: callq   y | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: dcallee: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	y | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: dcallee: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	calll	y | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: dcallee: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	y@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _dcallee: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _dcallee: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _dcallee: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_y | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _dcallee: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _dcallee: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _dcallee: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_y | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | declare void @y() | 
|  |  | 
|  | define void ()* @address() nounwind { | 
|  | entry: | 
|  | ret void ()* @callee | 
|  | ; LINUX-64-STATIC-LABEL: address: | 
|  | ; LINUX-64-STATIC: movl    $callee, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: address: | 
|  | ; LINUX-32-STATIC: 	movl	$callee, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: address: | 
|  | ; LINUX-32-PIC: 	movl	$callee, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: address: | 
|  | ; LINUX-64-PIC: 	movq	callee@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _address: | 
|  | ; DARWIN-32-STATIC: 	movl	$_callee, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _address: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	L_callee$non_lazy_ptr, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _address: | 
|  | ; DARWIN-32-PIC: 	calll	L133$pb | 
|  | ; DARWIN-32-PIC-NEXT: L133$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_callee$non_lazy_ptr-L133$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _address: | 
|  | ; DARWIN-64-STATIC: 	movq	_callee@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _address: | 
|  | ; DARWIN-64-DYNAMIC: 	movq	_callee@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _address: | 
|  | ; DARWIN-64-PIC: 	movq	_callee@GOTPCREL(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | declare void @callee() | 
|  |  | 
|  | define void ()* @laddress() nounwind { | 
|  | entry: | 
|  | ret void ()* @lcallee | 
|  | ; LINUX-64-STATIC-LABEL: laddress: | 
|  | ; LINUX-64-STATIC: movl    $lcallee, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: laddress: | 
|  | ; LINUX-32-STATIC: 	movl	$lcallee, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: laddress: | 
|  | ; LINUX-32-PIC: 	movl	$lcallee, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: laddress: | 
|  | ; LINUX-64-PIC: 	movq	lcallee@GOTPCREL(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _laddress: | 
|  | ; DARWIN-32-STATIC: 	movl	$_lcallee, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _laddress: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_lcallee, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _laddress: | 
|  | ; DARWIN-32-PIC: 	calll	L134$pb | 
|  | ; DARWIN-32-PIC-NEXT: L134$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_lcallee-L134$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _laddress: | 
|  | ; DARWIN-64-STATIC: 	leaq	_lcallee(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _laddress: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_lcallee(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _laddress: | 
|  | ; DARWIN-64-PIC: 	leaq	_lcallee(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void ()* @daddress() nounwind { | 
|  | entry: | 
|  | ret void ()* @dcallee | 
|  | ; LINUX-64-STATIC-LABEL: daddress: | 
|  | ; LINUX-64-STATIC: movl    $dcallee, %eax | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: daddress: | 
|  | ; LINUX-32-STATIC: 	movl	$dcallee, %eax | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: daddress: | 
|  | ; LINUX-32-PIC: 	movl	$dcallee, %eax | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: daddress: | 
|  | ; LINUX-64-PIC: 	leaq	dcallee(%rip), %rax | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _daddress: | 
|  | ; DARWIN-32-STATIC: 	movl	$_dcallee, %eax | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _daddress: | 
|  | ; DARWIN-32-DYNAMIC: 	movl	$_dcallee, %eax | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _daddress: | 
|  | ; DARWIN-32-PIC: 	calll	L135$pb | 
|  | ; DARWIN-32-PIC-NEXT: L135$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	leal	_dcallee-L135$pb([[EAX]]), %eax | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _daddress: | 
|  | ; DARWIN-64-STATIC: 	leaq	_dcallee(%rip), %rax | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _daddress: | 
|  | ; DARWIN-64-DYNAMIC: 	leaq	_dcallee(%rip), %rax | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _daddress: | 
|  | ; DARWIN-64-PIC: 	leaq	_dcallee(%rip), %rax | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @caller() nounwind { | 
|  | entry: | 
|  | call void @callee() nounwind | 
|  | call void @callee() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: caller: | 
|  | ; LINUX-64-STATIC: callq   callee | 
|  | ; LINUX-64-STATIC: callq   callee | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: caller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	callee | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	callee | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: caller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	callee | 
|  | ; LINUX-32-PIC-NEXT: 	calll	callee | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: caller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	callee@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	callee@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _caller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _caller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _caller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _caller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _caller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _caller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @dcaller() nounwind { | 
|  | entry: | 
|  | call void @dcallee() nounwind | 
|  | call void @dcallee() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: dcaller: | 
|  | ; LINUX-64-STATIC: callq   dcallee | 
|  | ; LINUX-64-STATIC: callq   dcallee | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: dcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	dcallee | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	dcallee | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: dcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	dcallee | 
|  | ; LINUX-32-PIC-NEXT: 	calll	dcallee | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: dcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	dcallee | 
|  | ; LINUX-64-PIC-NEXT: 	callq	dcallee | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _dcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _dcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _dcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _dcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _dcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _dcaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @lcaller() nounwind { | 
|  | entry: | 
|  | call void @lcallee() nounwind | 
|  | call void @lcallee() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: lcaller: | 
|  | ; LINUX-64-STATIC: callq   lcallee | 
|  | ; LINUX-64-STATIC: callq   lcallee | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: lcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	lcallee | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	lcallee | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: lcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	lcallee | 
|  | ; LINUX-32-PIC-NEXT: 	calll	lcallee | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: lcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	lcallee@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	callq	lcallee@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _lcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _lcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _lcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _lcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _lcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _lcaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @tailcaller() nounwind { | 
|  | entry: | 
|  | call void @callee() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: tailcaller: | 
|  | ; LINUX-64-STATIC: callq   callee | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: tailcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	callee | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: tailcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	callee | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: tailcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	callee@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _tailcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _tailcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _tailcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_callee | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _tailcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _tailcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _tailcaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_callee | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @dtailcaller() nounwind { | 
|  | entry: | 
|  | call void @dcallee() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: dtailcaller: | 
|  | ; LINUX-64-STATIC: callq   dcallee | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: dtailcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	dcallee | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: dtailcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	dcallee | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: dtailcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	dcallee | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _dtailcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _dtailcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _dtailcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_dcallee | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _dtailcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _dtailcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _dtailcaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_dcallee | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ltailcaller() nounwind { | 
|  | entry: | 
|  | call void @lcallee() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ltailcaller: | 
|  | ; LINUX-64-STATIC: callq   lcallee | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ltailcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	lcallee | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ltailcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	lcallee | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ltailcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	lcallee@PLT | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ltailcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ltailcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ltailcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	_lcallee | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ltailcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ltailcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ltailcaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	_lcallee | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @icaller() nounwind { | 
|  | entry: | 
|  | %0 = load void ()*, void ()** @ifunc, align 8 | 
|  | call void %0() nounwind | 
|  | %1 = load void ()*, void ()** @ifunc, align 8 | 
|  | call void %1() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: icaller: | 
|  | ; LINUX-64-STATIC: callq   *ifunc | 
|  | ; LINUX-64-STATIC: callq   *ifunc | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: icaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: icaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: icaller: | 
|  | ; LINUX-64-PIC: 	pushq	[[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _icaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _icaller: | 
|  | ; DARWIN-32-DYNAMIC: 	pushl	%esi | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	subl	$8, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ifunc$non_lazy_ptr, %esi | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$8, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _icaller: | 
|  | ; DARWIN-32-PIC: 	pushl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	L142$pb | 
|  | ; DARWIN-32-PIC-NEXT: L142$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ifunc$non_lazy_ptr-L142$pb([[EAX]]), %esi | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _icaller: | 
|  | ; DARWIN-64-STATIC: 	pushq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _icaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _icaller: | 
|  | ; DARWIN-64-PIC: 	pushq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @dicaller() nounwind { | 
|  | entry: | 
|  | %0 = load void ()*, void ()** @difunc, align 8 | 
|  | call void %0() nounwind | 
|  | %1 = load void ()*, void ()** @difunc, align 8 | 
|  | call void %1() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: dicaller: | 
|  | ; LINUX-64-STATIC: callq   *difunc | 
|  | ; LINUX-64-STATIC: callq   *difunc | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: dicaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*difunc | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*difunc | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: dicaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*difunc | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*difunc | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: dicaller: | 
|  | ; LINUX-64-PIC: 	pushq	[[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	difunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _dicaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_difunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_difunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _dicaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_difunc | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_difunc | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _dicaller: | 
|  | ; DARWIN-32-PIC: 	pushl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	L143$pb | 
|  | ; DARWIN-32-PIC-NEXT: L143$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*_difunc-L143$pb(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*_difunc-L143$pb(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _dicaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _dicaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _dicaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @licaller() nounwind { | 
|  | entry: | 
|  | %0 = load void ()*, void ()** @lifunc, align 8 | 
|  | call void %0() nounwind | 
|  | %1 = load void ()*, void ()** @lifunc, align 8 | 
|  | call void %1() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: licaller: | 
|  | ; LINUX-64-STATIC: callq   *lifunc | 
|  | ; LINUX-64-STATIC: callq   *lifunc | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: licaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*lifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*lifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: licaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*lifunc | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*lifunc | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: licaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*lifunc(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*lifunc(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _licaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_lifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_lifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _licaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_lifunc | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_lifunc | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _licaller: | 
|  | ; DARWIN-32-PIC: 	pushl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	L144$pb | 
|  | ; DARWIN-32-PIC-NEXT: L144$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*_lifunc-L144$pb(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*_lifunc-L144$pb(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _licaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _licaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _licaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @itailcaller() nounwind { | 
|  | entry: | 
|  | %0 = load void ()*, void ()** @ifunc, align 8 | 
|  | call void %0() nounwind | 
|  | %1 = load void ()*, void ()** @ifunc, align 8 | 
|  | call void %1() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: itailcaller: | 
|  | ; LINUX-64-STATIC: callq   *ifunc | 
|  | ; LINUX-64-STATIC: callq   *ifunc | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: itailcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: itailcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*ifunc | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: itailcaller: | 
|  | ; LINUX-64-PIC: 	pushq	[[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	movq	ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _itailcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_ifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _itailcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	pushl	%esi | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	subl	$8, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	movl	L_ifunc$non_lazy_ptr, %esi | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$8, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _itailcaller: | 
|  | ; DARWIN-32-PIC: 	pushl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	subl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	L145$pb | 
|  | ; DARWIN-32-PIC-NEXT: L145$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	movl	L_ifunc$non_lazy_ptr-L145$pb([[EAX]]), %esi | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*(%esi) | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$8, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	%esi | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _itailcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _itailcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _itailcaller: | 
|  | ; DARWIN-64-PIC: 	pushq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	movq	_ifunc@GOTPCREL(%rip), [[RBX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*([[RBX]]) | 
|  | ; DARWIN-64-PIC-NEXT: 	popq	[[RBX:%r.x]] | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @ditailcaller() nounwind { | 
|  | entry: | 
|  | %0 = load void ()*, void ()** @difunc, align 8 | 
|  | call void %0() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: ditailcaller: | 
|  | ; LINUX-64-STATIC: callq   *difunc | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: ditailcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*difunc | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: ditailcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*difunc | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: ditailcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	movq	difunc@GOTPCREL(%rip), [[RAX:%r.x]] | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*([[RAX]]) | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _ditailcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_difunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _ditailcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_difunc | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _ditailcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	L146$pb | 
|  | ; DARWIN-32-PIC-NEXT: L146$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*_difunc-L146$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _ditailcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _ditailcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _ditailcaller: | 
|  | ; DARWIN-64-PIC: 	callq	*_difunc(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } | 
|  |  | 
|  | define void @litailcaller() nounwind { | 
|  | entry: | 
|  | %0 = load void ()*, void ()** @lifunc, align 8 | 
|  | call void %0() nounwind | 
|  | ret void | 
|  | ; LINUX-64-STATIC-LABEL: litailcaller: | 
|  | ; LINUX-64-STATIC: callq   *lifunc | 
|  | ; LINUX-64-STATIC: ret | 
|  |  | 
|  | ; LINUX-32-STATIC-LABEL: litailcaller: | 
|  | ; LINUX-32-STATIC: 	subl | 
|  | ; LINUX-32-STATIC-NEXT: 	calll	*lifunc | 
|  | ; LINUX-32-STATIC-NEXT: 	addl | 
|  | ; LINUX-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-32-PIC-LABEL: litailcaller: | 
|  | ; LINUX-32-PIC: 	subl | 
|  | ; LINUX-32-PIC-NEXT: 	calll	*lifunc | 
|  | ; LINUX-32-PIC-NEXT: 	addl | 
|  |  | 
|  | ; LINUX-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; LINUX-64-PIC-LABEL: litailcaller: | 
|  | ; LINUX-64-PIC: 	pushq | 
|  | ; LINUX-64-PIC-NEXT: 	callq	*lifunc(%rip) | 
|  | ; LINUX-64-PIC-NEXT: 	popq | 
|  | ; LINUX-64-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-STATIC: _litailcaller: | 
|  | ; DARWIN-32-STATIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	calll	*_lifunc | 
|  | ; DARWIN-32-STATIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-DYNAMIC: _litailcaller: | 
|  | ; DARWIN-32-DYNAMIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	calll	*_lifunc | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-32-PIC: _litailcaller: | 
|  | ; DARWIN-32-PIC: 	subl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	L147$pb | 
|  | ; DARWIN-32-PIC-NEXT: L147$pb: | 
|  | ; DARWIN-32-PIC-NEXT: 	popl	[[EAX:%e.x]] | 
|  | ; DARWIN-32-PIC-NEXT: 	calll	*_lifunc-L147$pb([[EAX]]) | 
|  | ; DARWIN-32-PIC-NEXT: 	addl	$12, %esp | 
|  | ; DARWIN-32-PIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-STATIC: _litailcaller: | 
|  | ; DARWIN-64-STATIC: 	pushq | 
|  | ; DARWIN-64-STATIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-STATIC-NEXT: 	popq | 
|  | ; DARWIN-64-STATIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-DYNAMIC: _litailcaller: | 
|  | ; DARWIN-64-DYNAMIC: 	pushq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	popq | 
|  | ; DARWIN-64-DYNAMIC-NEXT: 	ret | 
|  |  | 
|  | ; DARWIN-64-PIC: _litailcaller: | 
|  | ; DARWIN-64-PIC: 	pushq | 
|  | ; DARWIN-64-PIC-NEXT: 	callq	*_lifunc(%rip) | 
|  | ; DARWIN-64-PIC-NEXT: 	popq | 
|  | ; DARWIN-64-PIC-NEXT: 	ret | 
|  | } |