1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; NOTE: Use the --no_x86_scrub_rip additional argument to keep the rip address math. 3 4; RUN: llc < %s -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 5; RUN: llc < %s -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 6; RUN: llc < %s -mcpu=generic -mtriple=i686-unknown-linux-gnu -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=LINUX-32-PIC 7; RUN: llc < %s -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 8 9; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin -relocation-model=static -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-STATIC 10; RUN: llc < %s -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 11; RUN: llc < %s -mcpu=generic -mtriple=i686-apple-darwin9 -relocation-model=pic -code-model=small -pre-RA-sched=list-ilp | FileCheck %s -check-prefix=DARWIN-32-PIC 12 13; RUN: llc < %s -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 14; RUN: llc < %s -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 15; RUN: llc < %s -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 16 17@src = external global [131072 x i32] 18@dst = external global [131072 x i32] 19@xsrc = external global [32 x i32] 20@xdst = external global [32 x i32] 21@ptr = external global i32* 22@dsrc = global [131072 x i32] zeroinitializer, align 32 23@ddst = global [131072 x i32] zeroinitializer, align 32 24@dptr = global i32* null 25@lsrc = internal global [131072 x i32] zeroinitializer 26@ldst = internal global [131072 x i32] zeroinitializer 27@lptr = internal global i32* null 28@ifunc = external global void ()* 29@difunc = global void ()* null 30@lifunc = internal global void ()* null 31@lxsrc = internal global [32 x i32] zeroinitializer, align 32 32@lxdst = internal global [32 x i32] zeroinitializer, align 32 33@dxsrc = global [32 x i32] zeroinitializer, align 32 34@dxdst = global [32 x i32] zeroinitializer, align 32 35 36define void @foo00() nounwind { 37; LINUX-64-STATIC-LABEL: foo00: 38; LINUX-64-STATIC: # %bb.0: # %entry 39; LINUX-64-STATIC-NEXT: movl src(%rip), %eax 40; LINUX-64-STATIC-NEXT: movl %eax, dst(%rip) 41; LINUX-64-STATIC-NEXT: retq 42; 43; LINUX-32-STATIC-LABEL: foo00: 44; LINUX-32-STATIC: # %bb.0: # %entry 45; LINUX-32-STATIC-NEXT: movl src, %eax 46; LINUX-32-STATIC-NEXT: movl %eax, dst 47; LINUX-32-STATIC-NEXT: retl 48; 49; LINUX-32-PIC-LABEL: foo00: 50; LINUX-32-PIC: # %bb.0: # %entry 51; LINUX-32-PIC-NEXT: calll .L0$pb 52; LINUX-32-PIC-NEXT: .L0$pb: 53; LINUX-32-PIC-NEXT: popl %eax 54; LINUX-32-PIC-NEXT: .Ltmp0: 55; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax 56; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 57; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 58; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 59; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 60; LINUX-32-PIC-NEXT: retl 61; 62; LINUX-64-PIC-LABEL: foo00: 63; LINUX-64-PIC: # %bb.0: # %entry 64; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 65; LINUX-64-PIC-NEXT: movl (%rax), %eax 66; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 67; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 68; LINUX-64-PIC-NEXT: retq 69; 70; DARWIN-32-STATIC-LABEL: foo00: 71; DARWIN-32-STATIC: ## %bb.0: ## %entry 72; DARWIN-32-STATIC-NEXT: movl _src, %eax 73; DARWIN-32-STATIC-NEXT: movl %eax, _dst 74; DARWIN-32-STATIC-NEXT: retl 75; 76; DARWIN-32-DYNAMIC-LABEL: foo00: 77; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 78; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 79; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 80; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 81; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 82; DARWIN-32-DYNAMIC-NEXT: retl 83; 84; DARWIN-32-PIC-LABEL: foo00: 85; DARWIN-32-PIC: ## %bb.0: ## %entry 86; DARWIN-32-PIC-NEXT: calll L0$pb 87; DARWIN-32-PIC-NEXT: L0$pb: 88; DARWIN-32-PIC-NEXT: popl %eax 89; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx 90; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 91; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax 92; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 93; DARWIN-32-PIC-NEXT: retl 94; 95; DARWIN-64-STATIC-LABEL: foo00: 96; DARWIN-64-STATIC: ## %bb.0: ## %entry 97; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 98; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 99; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 100; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 101; DARWIN-64-STATIC-NEXT: retq 102; 103; DARWIN-64-DYNAMIC-LABEL: foo00: 104; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 105; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 106; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 107; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 108; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 109; DARWIN-64-DYNAMIC-NEXT: retq 110; 111; DARWIN-64-PIC-LABEL: foo00: 112; DARWIN-64-PIC: ## %bb.0: ## %entry 113; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 114; DARWIN-64-PIC-NEXT: movl (%rax), %eax 115; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 116; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 117; DARWIN-64-PIC-NEXT: retq 118 119entry: 120 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 121 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 0), align 4 122 ret void 123 124} 125 126define void @fxo00() nounwind { 127; LINUX-64-STATIC-LABEL: fxo00: 128; LINUX-64-STATIC: # %bb.0: # %entry 129; LINUX-64-STATIC-NEXT: movl xsrc(%rip), %eax 130; LINUX-64-STATIC-NEXT: movl %eax, xdst(%rip) 131; LINUX-64-STATIC-NEXT: retq 132; 133; LINUX-32-STATIC-LABEL: fxo00: 134; LINUX-32-STATIC: # %bb.0: # %entry 135; LINUX-32-STATIC-NEXT: movl xsrc, %eax 136; LINUX-32-STATIC-NEXT: movl %eax, xdst 137; LINUX-32-STATIC-NEXT: retl 138; 139; LINUX-32-PIC-LABEL: fxo00: 140; LINUX-32-PIC: # %bb.0: # %entry 141; LINUX-32-PIC-NEXT: calll .L1$pb 142; LINUX-32-PIC-NEXT: .L1$pb: 143; LINUX-32-PIC-NEXT: popl %eax 144; LINUX-32-PIC-NEXT: .Ltmp1: 145; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax 146; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 147; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 148; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 149; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 150; LINUX-32-PIC-NEXT: retl 151; 152; LINUX-64-PIC-LABEL: fxo00: 153; LINUX-64-PIC: # %bb.0: # %entry 154; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 155; LINUX-64-PIC-NEXT: movl (%rax), %eax 156; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 157; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 158; LINUX-64-PIC-NEXT: retq 159; 160; DARWIN-32-STATIC-LABEL: fxo00: 161; DARWIN-32-STATIC: ## %bb.0: ## %entry 162; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax 163; DARWIN-32-STATIC-NEXT: movl %eax, _xdst 164; DARWIN-32-STATIC-NEXT: retl 165; 166; DARWIN-32-DYNAMIC-LABEL: fxo00: 167; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 168; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 169; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 170; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 171; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 172; DARWIN-32-DYNAMIC-NEXT: retl 173; 174; DARWIN-32-PIC-LABEL: fxo00: 175; DARWIN-32-PIC: ## %bb.0: ## %entry 176; DARWIN-32-PIC-NEXT: calll L1$pb 177; DARWIN-32-PIC-NEXT: L1$pb: 178; DARWIN-32-PIC-NEXT: popl %eax 179; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx 180; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 181; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax 182; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 183; DARWIN-32-PIC-NEXT: retl 184; 185; DARWIN-64-STATIC-LABEL: fxo00: 186; DARWIN-64-STATIC: ## %bb.0: ## %entry 187; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 188; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 189; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 190; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 191; DARWIN-64-STATIC-NEXT: retq 192; 193; DARWIN-64-DYNAMIC-LABEL: fxo00: 194; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 195; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 196; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 197; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 198; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 199; DARWIN-64-DYNAMIC-NEXT: retq 200; 201; DARWIN-64-PIC-LABEL: fxo00: 202; DARWIN-64-PIC: ## %bb.0: ## %entry 203; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 204; DARWIN-64-PIC-NEXT: movl (%rax), %eax 205; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 206; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 207; DARWIN-64-PIC-NEXT: retq 208 209entry: 210 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 211 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 0), align 4 212 ret void 213 214} 215 216define void @foo01() nounwind { 217; LINUX-64-STATIC-LABEL: foo01: 218; LINUX-64-STATIC: # %bb.0: # %entry 219; LINUX-64-STATIC-NEXT: movq $dst, ptr(%rip) 220; LINUX-64-STATIC-NEXT: retq 221; 222; LINUX-32-STATIC-LABEL: foo01: 223; LINUX-32-STATIC: # %bb.0: # %entry 224; LINUX-32-STATIC-NEXT: movl $dst, ptr 225; LINUX-32-STATIC-NEXT: retl 226; 227; LINUX-32-PIC-LABEL: foo01: 228; LINUX-32-PIC: # %bb.0: # %entry 229; LINUX-32-PIC-NEXT: calll .L2$pb 230; LINUX-32-PIC-NEXT: .L2$pb: 231; LINUX-32-PIC-NEXT: popl %eax 232; LINUX-32-PIC-NEXT: .Ltmp2: 233; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax 234; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx 235; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 236; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 237; LINUX-32-PIC-NEXT: retl 238; 239; LINUX-64-PIC-LABEL: foo01: 240; LINUX-64-PIC: # %bb.0: # %entry 241; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 242; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 243; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 244; LINUX-64-PIC-NEXT: retq 245; 246; DARWIN-32-STATIC-LABEL: foo01: 247; DARWIN-32-STATIC: ## %bb.0: ## %entry 248; DARWIN-32-STATIC-NEXT: movl $_dst, _ptr 249; DARWIN-32-STATIC-NEXT: retl 250; 251; DARWIN-32-DYNAMIC-LABEL: foo01: 252; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 253; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 254; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 255; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 256; DARWIN-32-DYNAMIC-NEXT: retl 257; 258; DARWIN-32-PIC-LABEL: foo01: 259; DARWIN-32-PIC: ## %bb.0: ## %entry 260; DARWIN-32-PIC-NEXT: calll L2$pb 261; DARWIN-32-PIC-NEXT: L2$pb: 262; DARWIN-32-PIC-NEXT: popl %eax 263; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx 264; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax 265; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 266; DARWIN-32-PIC-NEXT: retl 267; 268; DARWIN-64-STATIC-LABEL: foo01: 269; DARWIN-64-STATIC: ## %bb.0: ## %entry 270; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 271; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 272; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 273; DARWIN-64-STATIC-NEXT: retq 274; 275; DARWIN-64-DYNAMIC-LABEL: foo01: 276; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 277; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 278; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 279; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 280; DARWIN-64-DYNAMIC-NEXT: retq 281; 282; DARWIN-64-PIC-LABEL: foo01: 283; DARWIN-64-PIC: ## %bb.0: ## %entry 284; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 285; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 286; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 287; DARWIN-64-PIC-NEXT: retq 288 289entry: 290 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i32 0), i32** @ptr, align 8 291 ret void 292} 293 294define void @fxo01() nounwind { 295; LINUX-64-STATIC-LABEL: fxo01: 296; LINUX-64-STATIC: # %bb.0: # %entry 297; LINUX-64-STATIC-NEXT: movq $xdst, ptr(%rip) 298; LINUX-64-STATIC-NEXT: retq 299; 300; LINUX-32-STATIC-LABEL: fxo01: 301; LINUX-32-STATIC: # %bb.0: # %entry 302; LINUX-32-STATIC-NEXT: movl $xdst, ptr 303; LINUX-32-STATIC-NEXT: retl 304; 305; LINUX-32-PIC-LABEL: fxo01: 306; LINUX-32-PIC: # %bb.0: # %entry 307; LINUX-32-PIC-NEXT: calll .L3$pb 308; LINUX-32-PIC-NEXT: .L3$pb: 309; LINUX-32-PIC-NEXT: popl %eax 310; LINUX-32-PIC-NEXT: .Ltmp3: 311; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax 312; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx 313; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 314; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 315; LINUX-32-PIC-NEXT: retl 316; 317; LINUX-64-PIC-LABEL: fxo01: 318; LINUX-64-PIC: # %bb.0: # %entry 319; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 320; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 321; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 322; LINUX-64-PIC-NEXT: retq 323; 324; DARWIN-32-STATIC-LABEL: fxo01: 325; DARWIN-32-STATIC: ## %bb.0: ## %entry 326; DARWIN-32-STATIC-NEXT: movl $_xdst, _ptr 327; DARWIN-32-STATIC-NEXT: retl 328; 329; DARWIN-32-DYNAMIC-LABEL: fxo01: 330; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 331; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 332; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 333; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 334; DARWIN-32-DYNAMIC-NEXT: retl 335; 336; DARWIN-32-PIC-LABEL: fxo01: 337; DARWIN-32-PIC: ## %bb.0: ## %entry 338; DARWIN-32-PIC-NEXT: calll L3$pb 339; DARWIN-32-PIC-NEXT: L3$pb: 340; DARWIN-32-PIC-NEXT: popl %eax 341; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx 342; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax 343; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 344; DARWIN-32-PIC-NEXT: retl 345; 346; DARWIN-64-STATIC-LABEL: fxo01: 347; DARWIN-64-STATIC: ## %bb.0: ## %entry 348; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 349; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 350; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 351; DARWIN-64-STATIC-NEXT: retq 352; 353; DARWIN-64-DYNAMIC-LABEL: fxo01: 354; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 355; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 356; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 357; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 358; DARWIN-64-DYNAMIC-NEXT: retq 359; 360; DARWIN-64-PIC-LABEL: fxo01: 361; DARWIN-64-PIC: ## %bb.0: ## %entry 362; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 363; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 364; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 365; DARWIN-64-PIC-NEXT: retq 366 367entry: 368 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i32 0), i32** @ptr, align 8 369 ret void 370} 371 372define void @foo02() nounwind { 373; LINUX-64-STATIC-LABEL: foo02: 374; LINUX-64-STATIC: # %bb.0: # %entry 375; LINUX-64-STATIC-NEXT: movl src(%rip), %eax 376; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 377; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 378; LINUX-64-STATIC-NEXT: retq 379; 380; LINUX-32-STATIC-LABEL: foo02: 381; LINUX-32-STATIC: # %bb.0: # %entry 382; LINUX-32-STATIC-NEXT: movl src, %eax 383; LINUX-32-STATIC-NEXT: movl ptr, %ecx 384; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 385; LINUX-32-STATIC-NEXT: retl 386; 387; LINUX-32-PIC-LABEL: foo02: 388; LINUX-32-PIC: # %bb.0: # %entry 389; LINUX-32-PIC-NEXT: calll .L4$pb 390; LINUX-32-PIC-NEXT: .L4$pb: 391; LINUX-32-PIC-NEXT: popl %eax 392; LINUX-32-PIC-NEXT: .Ltmp4: 393; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax 394; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 395; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 396; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 397; LINUX-32-PIC-NEXT: movl (%eax), %eax 398; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 399; LINUX-32-PIC-NEXT: retl 400; 401; LINUX-64-PIC-LABEL: foo02: 402; LINUX-64-PIC: # %bb.0: # %entry 403; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 404; LINUX-64-PIC-NEXT: movl (%rax), %eax 405; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 406; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 407; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 408; LINUX-64-PIC-NEXT: retq 409; 410; DARWIN-32-STATIC-LABEL: foo02: 411; DARWIN-32-STATIC: ## %bb.0: ## %entry 412; DARWIN-32-STATIC-NEXT: movl _src, %eax 413; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 414; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 415; DARWIN-32-STATIC-NEXT: retl 416; 417; DARWIN-32-DYNAMIC-LABEL: foo02: 418; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 419; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 420; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 421; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 422; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 423; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 424; DARWIN-32-DYNAMIC-NEXT: retl 425; 426; DARWIN-32-PIC-LABEL: foo02: 427; DARWIN-32-PIC: ## %bb.0: ## %entry 428; DARWIN-32-PIC-NEXT: calll L4$pb 429; DARWIN-32-PIC-NEXT: L4$pb: 430; DARWIN-32-PIC-NEXT: popl %eax 431; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx 432; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 433; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax 434; DARWIN-32-PIC-NEXT: movl (%eax), %eax 435; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 436; DARWIN-32-PIC-NEXT: retl 437; 438; DARWIN-64-STATIC-LABEL: foo02: 439; DARWIN-64-STATIC: ## %bb.0: ## %entry 440; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 441; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 442; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 443; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 444; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 445; DARWIN-64-STATIC-NEXT: retq 446; 447; DARWIN-64-DYNAMIC-LABEL: foo02: 448; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 449; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 450; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 451; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 452; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 453; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 454; DARWIN-64-DYNAMIC-NEXT: retq 455; 456; DARWIN-64-PIC-LABEL: foo02: 457; DARWIN-64-PIC: ## %bb.0: ## %entry 458; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 459; DARWIN-64-PIC-NEXT: movl (%rax), %eax 460; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 461; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 462; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 463; DARWIN-64-PIC-NEXT: retq 464 465entry: 466 %0 = load i32*, i32** @ptr, align 8 467 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 0), align 4 468 store i32 %1, i32* %0, align 4 469 ret void 470} 471 472define void @fxo02() nounwind { 473; LINUX-64-STATIC-LABEL: fxo02: 474; LINUX-64-STATIC: # %bb.0: # %entry 475; LINUX-64-STATIC-NEXT: movl xsrc(%rip), %eax 476; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 477; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 478; LINUX-64-STATIC-NEXT: retq 479; 480; LINUX-32-STATIC-LABEL: fxo02: 481; LINUX-32-STATIC: # %bb.0: # %entry 482; LINUX-32-STATIC-NEXT: movl xsrc, %eax 483; LINUX-32-STATIC-NEXT: movl ptr, %ecx 484; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 485; LINUX-32-STATIC-NEXT: retl 486; 487; LINUX-32-PIC-LABEL: fxo02: 488; LINUX-32-PIC: # %bb.0: # %entry 489; LINUX-32-PIC-NEXT: calll .L5$pb 490; LINUX-32-PIC-NEXT: .L5$pb: 491; LINUX-32-PIC-NEXT: popl %eax 492; LINUX-32-PIC-NEXT: .Ltmp5: 493; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax 494; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 495; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 496; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 497; LINUX-32-PIC-NEXT: movl (%eax), %eax 498; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 499; LINUX-32-PIC-NEXT: retl 500; 501; LINUX-64-PIC-LABEL: fxo02: 502; LINUX-64-PIC: # %bb.0: # %entry 503; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 504; LINUX-64-PIC-NEXT: movl (%rax), %eax 505; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 506; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 507; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 508; LINUX-64-PIC-NEXT: retq 509; 510; DARWIN-32-STATIC-LABEL: fxo02: 511; DARWIN-32-STATIC: ## %bb.0: ## %entry 512; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax 513; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 514; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 515; DARWIN-32-STATIC-NEXT: retl 516; 517; DARWIN-32-DYNAMIC-LABEL: fxo02: 518; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 519; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 520; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 521; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 522; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 523; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 524; DARWIN-32-DYNAMIC-NEXT: retl 525; 526; DARWIN-32-PIC-LABEL: fxo02: 527; DARWIN-32-PIC: ## %bb.0: ## %entry 528; DARWIN-32-PIC-NEXT: calll L5$pb 529; DARWIN-32-PIC-NEXT: L5$pb: 530; DARWIN-32-PIC-NEXT: popl %eax 531; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx 532; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 533; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax 534; DARWIN-32-PIC-NEXT: movl (%eax), %eax 535; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 536; DARWIN-32-PIC-NEXT: retl 537; 538; DARWIN-64-STATIC-LABEL: fxo02: 539; DARWIN-64-STATIC: ## %bb.0: ## %entry 540; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 541; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 542; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 543; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 544; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 545; DARWIN-64-STATIC-NEXT: retq 546; 547; DARWIN-64-DYNAMIC-LABEL: fxo02: 548; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 549; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 550; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 551; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 552; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 553; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 554; DARWIN-64-DYNAMIC-NEXT: retq 555; 556; DARWIN-64-PIC-LABEL: fxo02: 557; DARWIN-64-PIC: ## %bb.0: ## %entry 558; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 559; DARWIN-64-PIC-NEXT: movl (%rax), %eax 560; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 561; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 562; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 563; DARWIN-64-PIC-NEXT: retq 564 565entry: 566 %0 = load i32*, i32** @ptr, align 8 567 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 0), align 4 568 store i32 %1, i32* %0, align 4 569 ret void 570} 571 572define void @foo03() nounwind { 573; LINUX-64-STATIC-LABEL: foo03: 574; LINUX-64-STATIC: # %bb.0: # %entry 575; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax 576; LINUX-64-STATIC-NEXT: movl %eax, ddst(%rip) 577; LINUX-64-STATIC-NEXT: retq 578; 579; LINUX-32-STATIC-LABEL: foo03: 580; LINUX-32-STATIC: # %bb.0: # %entry 581; LINUX-32-STATIC-NEXT: movl dsrc, %eax 582; LINUX-32-STATIC-NEXT: movl %eax, ddst 583; LINUX-32-STATIC-NEXT: retl 584; 585; LINUX-32-PIC-LABEL: foo03: 586; LINUX-32-PIC: # %bb.0: # %entry 587; LINUX-32-PIC-NEXT: calll .L6$pb 588; LINUX-32-PIC-NEXT: .L6$pb: 589; LINUX-32-PIC-NEXT: popl %eax 590; LINUX-32-PIC-NEXT: .Ltmp6: 591; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax 592; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx 593; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 594; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 595; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 596; LINUX-32-PIC-NEXT: retl 597; 598; LINUX-64-PIC-LABEL: foo03: 599; LINUX-64-PIC: # %bb.0: # %entry 600; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 601; LINUX-64-PIC-NEXT: movl (%rax), %eax 602; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx 603; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 604; LINUX-64-PIC-NEXT: retq 605; 606; DARWIN-32-STATIC-LABEL: foo03: 607; DARWIN-32-STATIC: ## %bb.0: ## %entry 608; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax 609; DARWIN-32-STATIC-NEXT: movl %eax, _ddst 610; DARWIN-32-STATIC-NEXT: retl 611; 612; DARWIN-32-DYNAMIC-LABEL: foo03: 613; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 614; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax 615; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst 616; DARWIN-32-DYNAMIC-NEXT: retl 617; 618; DARWIN-32-PIC-LABEL: foo03: 619; DARWIN-32-PIC: ## %bb.0: ## %entry 620; DARWIN-32-PIC-NEXT: calll L6$pb 621; DARWIN-32-PIC-NEXT: L6$pb: 622; DARWIN-32-PIC-NEXT: popl %eax 623; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx 624; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax) 625; DARWIN-32-PIC-NEXT: retl 626; 627; DARWIN-64-STATIC-LABEL: foo03: 628; DARWIN-64-STATIC: ## %bb.0: ## %entry 629; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax 630; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip) 631; DARWIN-64-STATIC-NEXT: retq 632; 633; DARWIN-64-DYNAMIC-LABEL: foo03: 634; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 635; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax 636; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip) 637; DARWIN-64-DYNAMIC-NEXT: retq 638; 639; DARWIN-64-PIC-LABEL: foo03: 640; DARWIN-64-PIC: ## %bb.0: ## %entry 641; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax 642; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip) 643; DARWIN-64-PIC-NEXT: retq 644 645entry: 646 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 647 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 0), align 32 648 ret void 649} 650 651define void @foo04() nounwind { 652; LINUX-64-STATIC-LABEL: foo04: 653; LINUX-64-STATIC: # %bb.0: # %entry 654; LINUX-64-STATIC-NEXT: movq $ddst, dptr(%rip) 655; LINUX-64-STATIC-NEXT: retq 656; 657; LINUX-32-STATIC-LABEL: foo04: 658; LINUX-32-STATIC: # %bb.0: # %entry 659; LINUX-32-STATIC-NEXT: movl $ddst, dptr 660; LINUX-32-STATIC-NEXT: retl 661; 662; LINUX-32-PIC-LABEL: foo04: 663; LINUX-32-PIC: # %bb.0: # %entry 664; LINUX-32-PIC-NEXT: calll .L7$pb 665; LINUX-32-PIC-NEXT: .L7$pb: 666; LINUX-32-PIC-NEXT: popl %eax 667; LINUX-32-PIC-NEXT: .Ltmp7: 668; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax 669; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %ecx 670; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 671; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 672; LINUX-32-PIC-NEXT: retl 673; 674; LINUX-64-PIC-LABEL: foo04: 675; LINUX-64-PIC: # %bb.0: # %entry 676; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 677; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 678; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 679; LINUX-64-PIC-NEXT: retq 680; 681; DARWIN-32-STATIC-LABEL: foo04: 682; DARWIN-32-STATIC: ## %bb.0: ## %entry 683; DARWIN-32-STATIC-NEXT: movl $_ddst, _dptr 684; DARWIN-32-STATIC-NEXT: retl 685; 686; DARWIN-32-DYNAMIC-LABEL: foo04: 687; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 688; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, _dptr 689; DARWIN-32-DYNAMIC-NEXT: retl 690; 691; DARWIN-32-PIC-LABEL: foo04: 692; DARWIN-32-PIC: ## %bb.0: ## %entry 693; DARWIN-32-PIC-NEXT: calll L7$pb 694; DARWIN-32-PIC-NEXT: L7$pb: 695; DARWIN-32-PIC-NEXT: popl %eax 696; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx 697; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax) 698; DARWIN-32-PIC-NEXT: retl 699; 700; DARWIN-64-STATIC-LABEL: foo04: 701; DARWIN-64-STATIC: ## %bb.0: ## %entry 702; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 703; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 704; DARWIN-64-STATIC-NEXT: retq 705; 706; DARWIN-64-DYNAMIC-LABEL: foo04: 707; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 708; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 709; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 710; DARWIN-64-DYNAMIC-NEXT: retq 711; 712; DARWIN-64-PIC-LABEL: foo04: 713; DARWIN-64-PIC: ## %bb.0: ## %entry 714; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 715; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 716; DARWIN-64-PIC-NEXT: retq 717 718entry: 719 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i32 0), i32** @dptr, align 8 720 ret void 721} 722 723define void @foo05() nounwind { 724; LINUX-64-STATIC-LABEL: foo05: 725; LINUX-64-STATIC: # %bb.0: # %entry 726; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax 727; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 728; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 729; LINUX-64-STATIC-NEXT: retq 730; 731; LINUX-32-STATIC-LABEL: foo05: 732; LINUX-32-STATIC: # %bb.0: # %entry 733; LINUX-32-STATIC-NEXT: movl dsrc, %eax 734; LINUX-32-STATIC-NEXT: movl dptr, %ecx 735; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 736; LINUX-32-STATIC-NEXT: retl 737; 738; LINUX-32-PIC-LABEL: foo05: 739; LINUX-32-PIC: # %bb.0: # %entry 740; LINUX-32-PIC-NEXT: calll .L8$pb 741; LINUX-32-PIC-NEXT: .L8$pb: 742; LINUX-32-PIC-NEXT: popl %eax 743; LINUX-32-PIC-NEXT: .Ltmp8: 744; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax 745; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx 746; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 747; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 748; LINUX-32-PIC-NEXT: movl (%eax), %eax 749; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 750; LINUX-32-PIC-NEXT: retl 751; 752; LINUX-64-PIC-LABEL: foo05: 753; LINUX-64-PIC: # %bb.0: # %entry 754; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 755; LINUX-64-PIC-NEXT: movl (%rax), %eax 756; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 757; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 758; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 759; LINUX-64-PIC-NEXT: retq 760; 761; DARWIN-32-STATIC-LABEL: foo05: 762; DARWIN-32-STATIC: ## %bb.0: ## %entry 763; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax 764; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 765; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 766; DARWIN-32-STATIC-NEXT: retl 767; 768; DARWIN-32-DYNAMIC-LABEL: foo05: 769; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 770; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax 771; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 772; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 773; DARWIN-32-DYNAMIC-NEXT: retl 774; 775; DARWIN-32-PIC-LABEL: foo05: 776; DARWIN-32-PIC: ## %bb.0: ## %entry 777; DARWIN-32-PIC-NEXT: calll L8$pb 778; DARWIN-32-PIC-NEXT: L8$pb: 779; DARWIN-32-PIC-NEXT: popl %eax 780; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx 781; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax 782; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 783; DARWIN-32-PIC-NEXT: retl 784; 785; DARWIN-64-STATIC-LABEL: foo05: 786; DARWIN-64-STATIC: ## %bb.0: ## %entry 787; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax 788; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 789; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 790; DARWIN-64-STATIC-NEXT: retq 791; 792; DARWIN-64-DYNAMIC-LABEL: foo05: 793; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 794; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax 795; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 796; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 797; DARWIN-64-DYNAMIC-NEXT: retq 798; 799; DARWIN-64-PIC-LABEL: foo05: 800; DARWIN-64-PIC: ## %bb.0: ## %entry 801; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax 802; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 803; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 804; DARWIN-64-PIC-NEXT: retq 805 806entry: 807 %0 = load i32*, i32** @dptr, align 8 808 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 0), align 32 809 store i32 %1, i32* %0, align 4 810 ret void 811} 812 813define void @foo06() nounwind { 814; LINUX-64-STATIC-LABEL: foo06: 815; LINUX-64-STATIC: # %bb.0: # %entry 816; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax 817; LINUX-64-STATIC-NEXT: movl %eax, ldst(%rip) 818; LINUX-64-STATIC-NEXT: retq 819; 820; LINUX-32-STATIC-LABEL: foo06: 821; LINUX-32-STATIC: # %bb.0: # %entry 822; LINUX-32-STATIC-NEXT: movl lsrc, %eax 823; LINUX-32-STATIC-NEXT: movl %eax, ldst 824; LINUX-32-STATIC-NEXT: retl 825; 826; LINUX-32-PIC-LABEL: foo06: 827; LINUX-32-PIC: # %bb.0: # %entry 828; LINUX-32-PIC-NEXT: calll .L9$pb 829; LINUX-32-PIC-NEXT: .L9$pb: 830; LINUX-32-PIC-NEXT: popl %eax 831; LINUX-32-PIC-NEXT: .Ltmp9: 832; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax 833; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx 834; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF(%eax) 835; LINUX-32-PIC-NEXT: retl 836; 837; LINUX-64-PIC-LABEL: foo06: 838; LINUX-64-PIC: # %bb.0: # %entry 839; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax 840; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip) 841; LINUX-64-PIC-NEXT: retq 842; 843; DARWIN-32-STATIC-LABEL: foo06: 844; DARWIN-32-STATIC: ## %bb.0: ## %entry 845; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax 846; DARWIN-32-STATIC-NEXT: movl %eax, _ldst 847; DARWIN-32-STATIC-NEXT: retl 848; 849; DARWIN-32-DYNAMIC-LABEL: foo06: 850; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 851; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax 852; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst 853; DARWIN-32-DYNAMIC-NEXT: retl 854; 855; DARWIN-32-PIC-LABEL: foo06: 856; DARWIN-32-PIC: ## %bb.0: ## %entry 857; DARWIN-32-PIC-NEXT: calll L9$pb 858; DARWIN-32-PIC-NEXT: L9$pb: 859; DARWIN-32-PIC-NEXT: popl %eax 860; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx 861; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax) 862; DARWIN-32-PIC-NEXT: retl 863; 864; DARWIN-64-STATIC-LABEL: foo06: 865; DARWIN-64-STATIC: ## %bb.0: ## %entry 866; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax 867; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip) 868; DARWIN-64-STATIC-NEXT: retq 869; 870; DARWIN-64-DYNAMIC-LABEL: foo06: 871; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 872; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax 873; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip) 874; DARWIN-64-DYNAMIC-NEXT: retq 875; 876; DARWIN-64-PIC-LABEL: foo06: 877; DARWIN-64-PIC: ## %bb.0: ## %entry 878; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax 879; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip) 880; DARWIN-64-PIC-NEXT: retq 881 882entry: 883 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 884 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 0), align 4 885 ret void 886} 887 888define void @foo07() nounwind { 889; LINUX-64-STATIC-LABEL: foo07: 890; LINUX-64-STATIC: # %bb.0: # %entry 891; LINUX-64-STATIC-NEXT: movq $ldst, lptr(%rip) 892; LINUX-64-STATIC-NEXT: retq 893; 894; LINUX-32-STATIC-LABEL: foo07: 895; LINUX-32-STATIC: # %bb.0: # %entry 896; LINUX-32-STATIC-NEXT: movl $ldst, lptr 897; LINUX-32-STATIC-NEXT: retl 898; 899; LINUX-32-PIC-LABEL: foo07: 900; LINUX-32-PIC: # %bb.0: # %entry 901; LINUX-32-PIC-NEXT: calll .L10$pb 902; LINUX-32-PIC-NEXT: .L10$pb: 903; LINUX-32-PIC-NEXT: popl %eax 904; LINUX-32-PIC-NEXT: .Ltmp10: 905; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax 906; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %ecx 907; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 908; LINUX-32-PIC-NEXT: retl 909; 910; LINUX-64-PIC-LABEL: foo07: 911; LINUX-64-PIC: # %bb.0: # %entry 912; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 913; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 914; LINUX-64-PIC-NEXT: retq 915; 916; DARWIN-32-STATIC-LABEL: foo07: 917; DARWIN-32-STATIC: ## %bb.0: ## %entry 918; DARWIN-32-STATIC-NEXT: movl $_ldst, _lptr 919; DARWIN-32-STATIC-NEXT: retl 920; 921; DARWIN-32-DYNAMIC-LABEL: foo07: 922; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 923; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, _lptr 924; DARWIN-32-DYNAMIC-NEXT: retl 925; 926; DARWIN-32-PIC-LABEL: foo07: 927; DARWIN-32-PIC: ## %bb.0: ## %entry 928; DARWIN-32-PIC-NEXT: calll L10$pb 929; DARWIN-32-PIC-NEXT: L10$pb: 930; DARWIN-32-PIC-NEXT: popl %eax 931; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx 932; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax) 933; DARWIN-32-PIC-NEXT: retl 934; 935; DARWIN-64-STATIC-LABEL: foo07: 936; DARWIN-64-STATIC: ## %bb.0: ## %entry 937; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 938; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 939; DARWIN-64-STATIC-NEXT: retq 940; 941; DARWIN-64-DYNAMIC-LABEL: foo07: 942; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 943; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 944; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 945; DARWIN-64-DYNAMIC-NEXT: retq 946; 947; DARWIN-64-PIC-LABEL: foo07: 948; DARWIN-64-PIC: ## %bb.0: ## %entry 949; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 950; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 951; DARWIN-64-PIC-NEXT: retq 952 953entry: 954 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i32 0), i32** @lptr, align 8 955 ret void 956} 957 958define void @foo08() nounwind { 959; LINUX-64-STATIC-LABEL: foo08: 960; LINUX-64-STATIC: # %bb.0: # %entry 961; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax 962; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 963; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 964; LINUX-64-STATIC-NEXT: retq 965; 966; LINUX-32-STATIC-LABEL: foo08: 967; LINUX-32-STATIC: # %bb.0: # %entry 968; LINUX-32-STATIC-NEXT: movl lsrc, %eax 969; LINUX-32-STATIC-NEXT: movl lptr, %ecx 970; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 971; LINUX-32-STATIC-NEXT: retl 972; 973; LINUX-32-PIC-LABEL: foo08: 974; LINUX-32-PIC: # %bb.0: # %entry 975; LINUX-32-PIC-NEXT: calll .L11$pb 976; LINUX-32-PIC-NEXT: .L11$pb: 977; LINUX-32-PIC-NEXT: popl %eax 978; LINUX-32-PIC-NEXT: .Ltmp11: 979; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax 980; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx 981; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 982; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 983; LINUX-32-PIC-NEXT: retl 984; 985; LINUX-64-PIC-LABEL: foo08: 986; LINUX-64-PIC: # %bb.0: # %entry 987; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax 988; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 989; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 990; LINUX-64-PIC-NEXT: retq 991; 992; DARWIN-32-STATIC-LABEL: foo08: 993; DARWIN-32-STATIC: ## %bb.0: ## %entry 994; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax 995; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 996; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 997; DARWIN-32-STATIC-NEXT: retl 998; 999; DARWIN-32-DYNAMIC-LABEL: foo08: 1000; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1001; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax 1002; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 1003; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1004; DARWIN-32-DYNAMIC-NEXT: retl 1005; 1006; DARWIN-32-PIC-LABEL: foo08: 1007; DARWIN-32-PIC: ## %bb.0: ## %entry 1008; DARWIN-32-PIC-NEXT: calll L11$pb 1009; DARWIN-32-PIC-NEXT: L11$pb: 1010; DARWIN-32-PIC-NEXT: popl %eax 1011; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx 1012; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax 1013; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1014; DARWIN-32-PIC-NEXT: retl 1015; 1016; DARWIN-64-STATIC-LABEL: foo08: 1017; DARWIN-64-STATIC: ## %bb.0: ## %entry 1018; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax 1019; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 1020; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 1021; DARWIN-64-STATIC-NEXT: retq 1022; 1023; DARWIN-64-DYNAMIC-LABEL: foo08: 1024; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1025; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax 1026; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 1027; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 1028; DARWIN-64-DYNAMIC-NEXT: retq 1029; 1030; DARWIN-64-PIC-LABEL: foo08: 1031; DARWIN-64-PIC: ## %bb.0: ## %entry 1032; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax 1033; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 1034; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 1035; DARWIN-64-PIC-NEXT: retq 1036 1037entry: 1038 %0 = load i32*, i32** @lptr, align 8 1039 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 0), align 4 1040 store i32 %1, i32* %0, align 4 1041 ret void 1042} 1043 1044define void @qux00() nounwind { 1045; LINUX-64-STATIC-LABEL: qux00: 1046; LINUX-64-STATIC: # %bb.0: # %entry 1047; LINUX-64-STATIC-NEXT: movl src+64(%rip), %eax 1048; LINUX-64-STATIC-NEXT: movl %eax, dst+64(%rip) 1049; LINUX-64-STATIC-NEXT: retq 1050; 1051; LINUX-32-STATIC-LABEL: qux00: 1052; LINUX-32-STATIC: # %bb.0: # %entry 1053; LINUX-32-STATIC-NEXT: movl src+64, %eax 1054; LINUX-32-STATIC-NEXT: movl %eax, dst+64 1055; LINUX-32-STATIC-NEXT: retl 1056; 1057; LINUX-32-PIC-LABEL: qux00: 1058; LINUX-32-PIC: # %bb.0: # %entry 1059; LINUX-32-PIC-NEXT: calll .L12$pb 1060; LINUX-32-PIC-NEXT: .L12$pb: 1061; LINUX-32-PIC-NEXT: popl %eax 1062; LINUX-32-PIC-NEXT: .Ltmp12: 1063; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax 1064; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 1065; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1066; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 1067; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1068; LINUX-32-PIC-NEXT: retl 1069; 1070; LINUX-64-PIC-LABEL: qux00: 1071; LINUX-64-PIC: # %bb.0: # %entry 1072; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 1073; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1074; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 1075; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1076; LINUX-64-PIC-NEXT: retq 1077; 1078; DARWIN-32-STATIC-LABEL: qux00: 1079; DARWIN-32-STATIC: ## %bb.0: ## %entry 1080; DARWIN-32-STATIC-NEXT: movl _src+64, %eax 1081; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64 1082; DARWIN-32-STATIC-NEXT: retl 1083; 1084; DARWIN-32-DYNAMIC-LABEL: qux00: 1085; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1086; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 1087; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1088; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 1089; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1090; DARWIN-32-DYNAMIC-NEXT: retl 1091; 1092; DARWIN-32-PIC-LABEL: qux00: 1093; DARWIN-32-PIC: ## %bb.0: ## %entry 1094; DARWIN-32-PIC-NEXT: calll L12$pb 1095; DARWIN-32-PIC-NEXT: L12$pb: 1096; DARWIN-32-PIC-NEXT: popl %eax 1097; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx 1098; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1099; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax 1100; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1101; DARWIN-32-PIC-NEXT: retl 1102; 1103; DARWIN-64-STATIC-LABEL: qux00: 1104; DARWIN-64-STATIC: ## %bb.0: ## %entry 1105; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1106; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1107; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1108; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1109; DARWIN-64-STATIC-NEXT: retq 1110; 1111; DARWIN-64-DYNAMIC-LABEL: qux00: 1112; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1113; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1114; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1115; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1116; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1117; DARWIN-64-DYNAMIC-NEXT: retq 1118; 1119; DARWIN-64-PIC-LABEL: qux00: 1120; DARWIN-64-PIC: ## %bb.0: ## %entry 1121; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1122; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1123; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1124; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1125; DARWIN-64-PIC-NEXT: retq 1126 1127entry: 1128 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 1129 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), align 4 1130 ret void 1131} 1132 1133define void @qxx00() nounwind { 1134; LINUX-64-STATIC-LABEL: qxx00: 1135; LINUX-64-STATIC: # %bb.0: # %entry 1136; LINUX-64-STATIC-NEXT: movl xsrc+64(%rip), %eax 1137; LINUX-64-STATIC-NEXT: movl %eax, xdst+64(%rip) 1138; LINUX-64-STATIC-NEXT: retq 1139; 1140; LINUX-32-STATIC-LABEL: qxx00: 1141; LINUX-32-STATIC: # %bb.0: # %entry 1142; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax 1143; LINUX-32-STATIC-NEXT: movl %eax, xdst+64 1144; LINUX-32-STATIC-NEXT: retl 1145; 1146; LINUX-32-PIC-LABEL: qxx00: 1147; LINUX-32-PIC: # %bb.0: # %entry 1148; LINUX-32-PIC-NEXT: calll .L13$pb 1149; LINUX-32-PIC-NEXT: .L13$pb: 1150; LINUX-32-PIC-NEXT: popl %eax 1151; LINUX-32-PIC-NEXT: .Ltmp13: 1152; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax 1153; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 1154; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1155; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 1156; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1157; LINUX-32-PIC-NEXT: retl 1158; 1159; LINUX-64-PIC-LABEL: qxx00: 1160; LINUX-64-PIC: # %bb.0: # %entry 1161; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1162; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1163; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 1164; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1165; LINUX-64-PIC-NEXT: retq 1166; 1167; DARWIN-32-STATIC-LABEL: qxx00: 1168; DARWIN-32-STATIC: ## %bb.0: ## %entry 1169; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax 1170; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64 1171; DARWIN-32-STATIC-NEXT: retl 1172; 1173; DARWIN-32-DYNAMIC-LABEL: qxx00: 1174; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1175; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 1176; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1177; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 1178; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1179; DARWIN-32-DYNAMIC-NEXT: retl 1180; 1181; DARWIN-32-PIC-LABEL: qxx00: 1182; DARWIN-32-PIC: ## %bb.0: ## %entry 1183; DARWIN-32-PIC-NEXT: calll L13$pb 1184; DARWIN-32-PIC-NEXT: L13$pb: 1185; DARWIN-32-PIC-NEXT: popl %eax 1186; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx 1187; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1188; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax 1189; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1190; DARWIN-32-PIC-NEXT: retl 1191; 1192; DARWIN-64-STATIC-LABEL: qxx00: 1193; DARWIN-64-STATIC: ## %bb.0: ## %entry 1194; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1195; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1196; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1197; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1198; DARWIN-64-STATIC-NEXT: retq 1199; 1200; DARWIN-64-DYNAMIC-LABEL: qxx00: 1201; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1202; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1203; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1204; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1205; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1206; DARWIN-64-DYNAMIC-NEXT: retq 1207; 1208; DARWIN-64-PIC-LABEL: qxx00: 1209; DARWIN-64-PIC: ## %bb.0: ## %entry 1210; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1211; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1212; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1213; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1214; DARWIN-64-PIC-NEXT: retq 1215 1216entry: 1217 %0 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 1218 store i32 %0, i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), align 4 1219 ret void 1220} 1221 1222define void @qux01() nounwind { 1223; LINUX-64-STATIC-LABEL: qux01: 1224; LINUX-64-STATIC: # %bb.0: # %entry 1225; LINUX-64-STATIC-NEXT: movq $dst+64, ptr(%rip) 1226; LINUX-64-STATIC-NEXT: retq 1227; 1228; LINUX-32-STATIC-LABEL: qux01: 1229; LINUX-32-STATIC: # %bb.0: # %entry 1230; LINUX-32-STATIC-NEXT: movl $dst+64, ptr 1231; LINUX-32-STATIC-NEXT: retl 1232; 1233; LINUX-32-PIC-LABEL: qux01: 1234; LINUX-32-PIC: # %bb.0: # %entry 1235; LINUX-32-PIC-NEXT: calll .L14$pb 1236; LINUX-32-PIC-NEXT: .L14$pb: 1237; LINUX-32-PIC-NEXT: popl %eax 1238; LINUX-32-PIC-NEXT: .Ltmp14: 1239; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax 1240; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx 1241; LINUX-32-PIC-NEXT: addl $64, %ecx 1242; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1243; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1244; LINUX-32-PIC-NEXT: retl 1245; 1246; LINUX-64-PIC-LABEL: qux01: 1247; LINUX-64-PIC: # %bb.0: # %entry 1248; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 1249; LINUX-64-PIC-NEXT: addq $64, %rax 1250; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1251; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1252; LINUX-64-PIC-NEXT: retq 1253; 1254; DARWIN-32-STATIC-LABEL: qux01: 1255; DARWIN-32-STATIC: ## %bb.0: ## %entry 1256; DARWIN-32-STATIC-NEXT: movl $_dst+64, _ptr 1257; DARWIN-32-STATIC-NEXT: retl 1258; 1259; DARWIN-32-DYNAMIC-LABEL: qux01: 1260; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1261; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 1262; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 1263; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1264; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1265; DARWIN-32-DYNAMIC-NEXT: retl 1266; 1267; DARWIN-32-PIC-LABEL: qux01: 1268; DARWIN-32-PIC: ## %bb.0: ## %entry 1269; DARWIN-32-PIC-NEXT: calll L14$pb 1270; DARWIN-32-PIC-NEXT: L14$pb: 1271; DARWIN-32-PIC-NEXT: popl %eax 1272; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx 1273; DARWIN-32-PIC-NEXT: addl $64, %ecx 1274; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax 1275; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1276; DARWIN-32-PIC-NEXT: retl 1277; 1278; DARWIN-64-STATIC-LABEL: qux01: 1279; DARWIN-64-STATIC: ## %bb.0: ## %entry 1280; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1281; DARWIN-64-STATIC-NEXT: addq $64, %rax 1282; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1283; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 1284; DARWIN-64-STATIC-NEXT: retq 1285; 1286; DARWIN-64-DYNAMIC-LABEL: qux01: 1287; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1288; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1289; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 1290; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1291; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 1292; DARWIN-64-DYNAMIC-NEXT: retq 1293; 1294; DARWIN-64-PIC-LABEL: qux01: 1295; DARWIN-64-PIC: ## %bb.0: ## %entry 1296; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1297; DARWIN-64-PIC-NEXT: addq $64, %rax 1298; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1299; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 1300; DARWIN-64-PIC-NEXT: retq 1301 1302entry: 1303 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16), i32** @ptr, align 8 1304 ret void 1305} 1306 1307define void @qxx01() nounwind { 1308; LINUX-64-STATIC-LABEL: qxx01: 1309; LINUX-64-STATIC: # %bb.0: # %entry 1310; LINUX-64-STATIC-NEXT: movq $xdst+64, ptr(%rip) 1311; LINUX-64-STATIC-NEXT: retq 1312; 1313; LINUX-32-STATIC-LABEL: qxx01: 1314; LINUX-32-STATIC: # %bb.0: # %entry 1315; LINUX-32-STATIC-NEXT: movl $xdst+64, ptr 1316; LINUX-32-STATIC-NEXT: retl 1317; 1318; LINUX-32-PIC-LABEL: qxx01: 1319; LINUX-32-PIC: # %bb.0: # %entry 1320; LINUX-32-PIC-NEXT: calll .L15$pb 1321; LINUX-32-PIC-NEXT: .L15$pb: 1322; LINUX-32-PIC-NEXT: popl %eax 1323; LINUX-32-PIC-NEXT: .Ltmp15: 1324; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax 1325; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx 1326; LINUX-32-PIC-NEXT: addl $64, %ecx 1327; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1328; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1329; LINUX-32-PIC-NEXT: retl 1330; 1331; LINUX-64-PIC-LABEL: qxx01: 1332; LINUX-64-PIC: # %bb.0: # %entry 1333; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 1334; LINUX-64-PIC-NEXT: addq $64, %rax 1335; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1336; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1337; LINUX-64-PIC-NEXT: retq 1338; 1339; DARWIN-32-STATIC-LABEL: qxx01: 1340; DARWIN-32-STATIC: ## %bb.0: ## %entry 1341; DARWIN-32-STATIC-NEXT: movl $_xdst+64, _ptr 1342; DARWIN-32-STATIC-NEXT: retl 1343; 1344; DARWIN-32-DYNAMIC-LABEL: qxx01: 1345; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1346; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 1347; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 1348; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1349; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1350; DARWIN-32-DYNAMIC-NEXT: retl 1351; 1352; DARWIN-32-PIC-LABEL: qxx01: 1353; DARWIN-32-PIC: ## %bb.0: ## %entry 1354; DARWIN-32-PIC-NEXT: calll L15$pb 1355; DARWIN-32-PIC-NEXT: L15$pb: 1356; DARWIN-32-PIC-NEXT: popl %eax 1357; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx 1358; DARWIN-32-PIC-NEXT: addl $64, %ecx 1359; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax 1360; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1361; DARWIN-32-PIC-NEXT: retl 1362; 1363; DARWIN-64-STATIC-LABEL: qxx01: 1364; DARWIN-64-STATIC: ## %bb.0: ## %entry 1365; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1366; DARWIN-64-STATIC-NEXT: addq $64, %rax 1367; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1368; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 1369; DARWIN-64-STATIC-NEXT: retq 1370; 1371; DARWIN-64-DYNAMIC-LABEL: qxx01: 1372; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1373; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1374; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 1375; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1376; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 1377; DARWIN-64-DYNAMIC-NEXT: retq 1378; 1379; DARWIN-64-PIC-LABEL: qxx01: 1380; DARWIN-64-PIC: ## %bb.0: ## %entry 1381; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1382; DARWIN-64-PIC-NEXT: addq $64, %rax 1383; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1384; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 1385; DARWIN-64-PIC-NEXT: retq 1386 1387entry: 1388 store i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16), i32** @ptr, align 8 1389 ret void 1390} 1391 1392define void @qux02() nounwind { 1393; LINUX-64-STATIC-LABEL: qux02: 1394; LINUX-64-STATIC: # %bb.0: # %entry 1395; LINUX-64-STATIC-NEXT: movl src+64(%rip), %eax 1396; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 1397; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1398; LINUX-64-STATIC-NEXT: retq 1399; 1400; LINUX-32-STATIC-LABEL: qux02: 1401; LINUX-32-STATIC: # %bb.0: # %entry 1402; LINUX-32-STATIC-NEXT: movl src+64, %eax 1403; LINUX-32-STATIC-NEXT: movl ptr, %ecx 1404; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1405; LINUX-32-STATIC-NEXT: retl 1406; 1407; LINUX-32-PIC-LABEL: qux02: 1408; LINUX-32-PIC: # %bb.0: # %entry 1409; LINUX-32-PIC-NEXT: calll .L16$pb 1410; LINUX-32-PIC-NEXT: .L16$pb: 1411; LINUX-32-PIC-NEXT: popl %eax 1412; LINUX-32-PIC-NEXT: .Ltmp16: 1413; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax 1414; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 1415; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1416; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1417; LINUX-32-PIC-NEXT: movl (%eax), %eax 1418; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1419; LINUX-32-PIC-NEXT: retl 1420; 1421; LINUX-64-PIC-LABEL: qux02: 1422; LINUX-64-PIC: # %bb.0: # %entry 1423; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 1424; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1425; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1426; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1427; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1428; LINUX-64-PIC-NEXT: retq 1429; 1430; DARWIN-32-STATIC-LABEL: qux02: 1431; DARWIN-32-STATIC: ## %bb.0: ## %entry 1432; DARWIN-32-STATIC-NEXT: movl _src+64, %eax 1433; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 1434; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1435; DARWIN-32-STATIC-NEXT: retl 1436; 1437; DARWIN-32-DYNAMIC-LABEL: qux02: 1438; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1439; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 1440; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1441; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1442; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 1443; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1444; DARWIN-32-DYNAMIC-NEXT: retl 1445; 1446; DARWIN-32-PIC-LABEL: qux02: 1447; DARWIN-32-PIC: ## %bb.0: ## %entry 1448; DARWIN-32-PIC-NEXT: calll L16$pb 1449; DARWIN-32-PIC-NEXT: L16$pb: 1450; DARWIN-32-PIC-NEXT: popl %eax 1451; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx 1452; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1453; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax 1454; DARWIN-32-PIC-NEXT: movl (%eax), %eax 1455; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1456; DARWIN-32-PIC-NEXT: retl 1457; 1458; DARWIN-64-STATIC-LABEL: qux02: 1459; DARWIN-64-STATIC: ## %bb.0: ## %entry 1460; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1461; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1462; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1463; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 1464; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1465; DARWIN-64-STATIC-NEXT: retq 1466; 1467; DARWIN-64-DYNAMIC-LABEL: qux02: 1468; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1469; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1470; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1471; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1472; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 1473; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1474; DARWIN-64-DYNAMIC-NEXT: retq 1475; 1476; DARWIN-64-PIC-LABEL: qux02: 1477; DARWIN-64-PIC: ## %bb.0: ## %entry 1478; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1479; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1480; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1481; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 1482; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1483; DARWIN-64-PIC-NEXT: retq 1484 1485entry: 1486 %0 = load i32*, i32** @ptr, align 8 1487 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16), align 4 1488 %2 = getelementptr i32, i32* %0, i64 16 1489 store i32 %1, i32* %2, align 4 1490 ret void 1491} 1492 1493define void @qxx02() nounwind { 1494; LINUX-64-STATIC-LABEL: qxx02: 1495; LINUX-64-STATIC: # %bb.0: # %entry 1496; LINUX-64-STATIC-NEXT: movl xsrc+64(%rip), %eax 1497; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 1498; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1499; LINUX-64-STATIC-NEXT: retq 1500; 1501; LINUX-32-STATIC-LABEL: qxx02: 1502; LINUX-32-STATIC: # %bb.0: # %entry 1503; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax 1504; LINUX-32-STATIC-NEXT: movl ptr, %ecx 1505; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1506; LINUX-32-STATIC-NEXT: retl 1507; 1508; LINUX-32-PIC-LABEL: qxx02: 1509; LINUX-32-PIC: # %bb.0: # %entry 1510; LINUX-32-PIC-NEXT: calll .L17$pb 1511; LINUX-32-PIC-NEXT: .L17$pb: 1512; LINUX-32-PIC-NEXT: popl %eax 1513; LINUX-32-PIC-NEXT: .Ltmp17: 1514; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax 1515; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 1516; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1517; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1518; LINUX-32-PIC-NEXT: movl (%eax), %eax 1519; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1520; LINUX-32-PIC-NEXT: retl 1521; 1522; LINUX-64-PIC-LABEL: qxx02: 1523; LINUX-64-PIC: # %bb.0: # %entry 1524; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1525; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1526; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1527; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1528; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1529; LINUX-64-PIC-NEXT: retq 1530; 1531; DARWIN-32-STATIC-LABEL: qxx02: 1532; DARWIN-32-STATIC: ## %bb.0: ## %entry 1533; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax 1534; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 1535; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1536; DARWIN-32-STATIC-NEXT: retl 1537; 1538; DARWIN-32-DYNAMIC-LABEL: qxx02: 1539; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1540; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 1541; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1542; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1543; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 1544; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1545; DARWIN-32-DYNAMIC-NEXT: retl 1546; 1547; DARWIN-32-PIC-LABEL: qxx02: 1548; DARWIN-32-PIC: ## %bb.0: ## %entry 1549; DARWIN-32-PIC-NEXT: calll L17$pb 1550; DARWIN-32-PIC-NEXT: L17$pb: 1551; DARWIN-32-PIC-NEXT: popl %eax 1552; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx 1553; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1554; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax 1555; DARWIN-32-PIC-NEXT: movl (%eax), %eax 1556; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1557; DARWIN-32-PIC-NEXT: retl 1558; 1559; DARWIN-64-STATIC-LABEL: qxx02: 1560; DARWIN-64-STATIC: ## %bb.0: ## %entry 1561; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1562; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1563; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1564; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 1565; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1566; DARWIN-64-STATIC-NEXT: retq 1567; 1568; DARWIN-64-DYNAMIC-LABEL: qxx02: 1569; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1570; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1571; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1572; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1573; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 1574; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1575; DARWIN-64-DYNAMIC-NEXT: retq 1576; 1577; DARWIN-64-PIC-LABEL: qxx02: 1578; DARWIN-64-PIC: ## %bb.0: ## %entry 1579; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1580; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1581; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1582; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 1583; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1584; DARWIN-64-PIC-NEXT: retq 1585 1586entry: 1587 %0 = load i32*, i32** @ptr, align 8 1588 %1 = load i32, i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16), align 4 1589 %2 = getelementptr i32, i32* %0, i64 16 1590 store i32 %1, i32* %2, align 4 1591 ret void 1592} 1593 1594define void @qux03() nounwind { 1595; LINUX-64-STATIC-LABEL: qux03: 1596; LINUX-64-STATIC: # %bb.0: # %entry 1597; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax 1598; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(%rip) 1599; LINUX-64-STATIC-NEXT: retq 1600; 1601; LINUX-32-STATIC-LABEL: qux03: 1602; LINUX-32-STATIC: # %bb.0: # %entry 1603; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax 1604; LINUX-32-STATIC-NEXT: movl %eax, ddst+64 1605; LINUX-32-STATIC-NEXT: retl 1606; 1607; LINUX-32-PIC-LABEL: qux03: 1608; LINUX-32-PIC: # %bb.0: # %entry 1609; LINUX-32-PIC-NEXT: calll .L18$pb 1610; LINUX-32-PIC-NEXT: .L18$pb: 1611; LINUX-32-PIC-NEXT: popl %eax 1612; LINUX-32-PIC-NEXT: .Ltmp18: 1613; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax 1614; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx 1615; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1616; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 1617; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1618; LINUX-32-PIC-NEXT: retl 1619; 1620; LINUX-64-PIC-LABEL: qux03: 1621; LINUX-64-PIC: # %bb.0: # %entry 1622; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 1623; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1624; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx 1625; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1626; LINUX-64-PIC-NEXT: retq 1627; 1628; DARWIN-32-STATIC-LABEL: qux03: 1629; DARWIN-32-STATIC: ## %bb.0: ## %entry 1630; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax 1631; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64 1632; DARWIN-32-STATIC-NEXT: retl 1633; 1634; DARWIN-32-DYNAMIC-LABEL: qux03: 1635; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1636; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax 1637; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64 1638; DARWIN-32-DYNAMIC-NEXT: retl 1639; 1640; DARWIN-32-PIC-LABEL: qux03: 1641; DARWIN-32-PIC: ## %bb.0: ## %entry 1642; DARWIN-32-PIC-NEXT: calll L18$pb 1643; DARWIN-32-PIC-NEXT: L18$pb: 1644; DARWIN-32-PIC-NEXT: popl %eax 1645; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx 1646; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax) 1647; DARWIN-32-PIC-NEXT: retl 1648; 1649; DARWIN-64-STATIC-LABEL: qux03: 1650; DARWIN-64-STATIC: ## %bb.0: ## %entry 1651; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax 1652; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip) 1653; DARWIN-64-STATIC-NEXT: retq 1654; 1655; DARWIN-64-DYNAMIC-LABEL: qux03: 1656; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1657; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax 1658; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip) 1659; DARWIN-64-DYNAMIC-NEXT: retq 1660; 1661; DARWIN-64-PIC-LABEL: qux03: 1662; DARWIN-64-PIC: ## %bb.0: ## %entry 1663; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax 1664; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip) 1665; DARWIN-64-PIC-NEXT: retq 1666 1667entry: 1668 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 1669 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), align 32 1670 ret void 1671} 1672 1673define void @qux04() nounwind { 1674; LINUX-64-STATIC-LABEL: qux04: 1675; LINUX-64-STATIC: # %bb.0: # %entry 1676; LINUX-64-STATIC-NEXT: movq $ddst+64, dptr(%rip) 1677; LINUX-64-STATIC-NEXT: retq 1678; 1679; LINUX-32-STATIC-LABEL: qux04: 1680; LINUX-32-STATIC: # %bb.0: # %entry 1681; LINUX-32-STATIC-NEXT: movl $ddst+64, dptr 1682; LINUX-32-STATIC-NEXT: retl 1683; 1684; LINUX-32-PIC-LABEL: qux04: 1685; LINUX-32-PIC: # %bb.0: # %entry 1686; LINUX-32-PIC-NEXT: calll .L19$pb 1687; LINUX-32-PIC-NEXT: .L19$pb: 1688; LINUX-32-PIC-NEXT: popl %eax 1689; LINUX-32-PIC-NEXT: .Ltmp19: 1690; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax 1691; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %ecx 1692; LINUX-32-PIC-NEXT: addl $64, %ecx 1693; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 1694; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1695; LINUX-32-PIC-NEXT: retl 1696; 1697; LINUX-64-PIC-LABEL: qux04: 1698; LINUX-64-PIC: # %bb.0: # %entry 1699; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 1700; LINUX-64-PIC-NEXT: addq $64, %rax 1701; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 1702; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1703; LINUX-64-PIC-NEXT: retq 1704; 1705; DARWIN-32-STATIC-LABEL: qux04: 1706; DARWIN-32-STATIC: ## %bb.0: ## %entry 1707; DARWIN-32-STATIC-NEXT: movl $_ddst+64, _dptr 1708; DARWIN-32-STATIC-NEXT: retl 1709; 1710; DARWIN-32-DYNAMIC-LABEL: qux04: 1711; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1712; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, _dptr 1713; DARWIN-32-DYNAMIC-NEXT: retl 1714; 1715; DARWIN-32-PIC-LABEL: qux04: 1716; DARWIN-32-PIC: ## %bb.0: ## %entry 1717; DARWIN-32-PIC-NEXT: calll L19$pb 1718; DARWIN-32-PIC-NEXT: L19$pb: 1719; DARWIN-32-PIC-NEXT: popl %eax 1720; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx 1721; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax) 1722; DARWIN-32-PIC-NEXT: retl 1723; 1724; DARWIN-64-STATIC-LABEL: qux04: 1725; DARWIN-64-STATIC: ## %bb.0: ## %entry 1726; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax 1727; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 1728; DARWIN-64-STATIC-NEXT: retq 1729; 1730; DARWIN-64-DYNAMIC-LABEL: qux04: 1731; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1732; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax 1733; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 1734; DARWIN-64-DYNAMIC-NEXT: retq 1735; 1736; DARWIN-64-PIC-LABEL: qux04: 1737; DARWIN-64-PIC: ## %bb.0: ## %entry 1738; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax 1739; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 1740; DARWIN-64-PIC-NEXT: retq 1741 1742entry: 1743 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16), i32** @dptr, align 8 1744 ret void 1745} 1746 1747define void @qux05() nounwind { 1748; LINUX-64-STATIC-LABEL: qux05: 1749; LINUX-64-STATIC: # %bb.0: # %entry 1750; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax 1751; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 1752; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1753; LINUX-64-STATIC-NEXT: retq 1754; 1755; LINUX-32-STATIC-LABEL: qux05: 1756; LINUX-32-STATIC: # %bb.0: # %entry 1757; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax 1758; LINUX-32-STATIC-NEXT: movl dptr, %ecx 1759; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1760; LINUX-32-STATIC-NEXT: retl 1761; 1762; LINUX-32-PIC-LABEL: qux05: 1763; LINUX-32-PIC: # %bb.0: # %entry 1764; LINUX-32-PIC-NEXT: calll .L20$pb 1765; LINUX-32-PIC-NEXT: .L20$pb: 1766; LINUX-32-PIC-NEXT: popl %eax 1767; LINUX-32-PIC-NEXT: .Ltmp20: 1768; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax 1769; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx 1770; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1771; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 1772; LINUX-32-PIC-NEXT: movl (%eax), %eax 1773; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1774; LINUX-32-PIC-NEXT: retl 1775; 1776; LINUX-64-PIC-LABEL: qux05: 1777; LINUX-64-PIC: # %bb.0: # %entry 1778; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 1779; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1780; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 1781; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1782; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1783; LINUX-64-PIC-NEXT: retq 1784; 1785; DARWIN-32-STATIC-LABEL: qux05: 1786; DARWIN-32-STATIC: ## %bb.0: ## %entry 1787; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax 1788; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 1789; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1790; DARWIN-32-STATIC-NEXT: retl 1791; 1792; DARWIN-32-DYNAMIC-LABEL: qux05: 1793; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1794; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax 1795; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 1796; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1797; DARWIN-32-DYNAMIC-NEXT: retl 1798; 1799; DARWIN-32-PIC-LABEL: qux05: 1800; DARWIN-32-PIC: ## %bb.0: ## %entry 1801; DARWIN-32-PIC-NEXT: calll L20$pb 1802; DARWIN-32-PIC-NEXT: L20$pb: 1803; DARWIN-32-PIC-NEXT: popl %eax 1804; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx 1805; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax 1806; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1807; DARWIN-32-PIC-NEXT: retl 1808; 1809; DARWIN-64-STATIC-LABEL: qux05: 1810; DARWIN-64-STATIC: ## %bb.0: ## %entry 1811; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax 1812; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 1813; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1814; DARWIN-64-STATIC-NEXT: retq 1815; 1816; DARWIN-64-DYNAMIC-LABEL: qux05: 1817; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1818; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax 1819; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 1820; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1821; DARWIN-64-DYNAMIC-NEXT: retq 1822; 1823; DARWIN-64-PIC-LABEL: qux05: 1824; DARWIN-64-PIC: ## %bb.0: ## %entry 1825; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax 1826; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 1827; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1828; DARWIN-64-PIC-NEXT: retq 1829 1830entry: 1831 %0 = load i32*, i32** @dptr, align 8 1832 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16), align 32 1833 %2 = getelementptr i32, i32* %0, i64 16 1834 store i32 %1, i32* %2, align 4 1835 ret void 1836} 1837 1838define void @qux06() nounwind { 1839; LINUX-64-STATIC-LABEL: qux06: 1840; LINUX-64-STATIC: # %bb.0: # %entry 1841; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax 1842; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(%rip) 1843; LINUX-64-STATIC-NEXT: retq 1844; 1845; LINUX-32-STATIC-LABEL: qux06: 1846; LINUX-32-STATIC: # %bb.0: # %entry 1847; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax 1848; LINUX-32-STATIC-NEXT: movl %eax, ldst+64 1849; LINUX-32-STATIC-NEXT: retl 1850; 1851; LINUX-32-PIC-LABEL: qux06: 1852; LINUX-32-PIC: # %bb.0: # %entry 1853; LINUX-32-PIC-NEXT: calll .L21$pb 1854; LINUX-32-PIC-NEXT: .L21$pb: 1855; LINUX-32-PIC-NEXT: popl %eax 1856; LINUX-32-PIC-NEXT: .Ltmp21: 1857; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax 1858; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx 1859; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+64(%eax) 1860; LINUX-32-PIC-NEXT: retl 1861; 1862; LINUX-64-PIC-LABEL: qux06: 1863; LINUX-64-PIC: # %bb.0: # %entry 1864; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax 1865; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip) 1866; LINUX-64-PIC-NEXT: retq 1867; 1868; DARWIN-32-STATIC-LABEL: qux06: 1869; DARWIN-32-STATIC: ## %bb.0: ## %entry 1870; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax 1871; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64 1872; DARWIN-32-STATIC-NEXT: retl 1873; 1874; DARWIN-32-DYNAMIC-LABEL: qux06: 1875; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1876; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax 1877; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64 1878; DARWIN-32-DYNAMIC-NEXT: retl 1879; 1880; DARWIN-32-PIC-LABEL: qux06: 1881; DARWIN-32-PIC: ## %bb.0: ## %entry 1882; DARWIN-32-PIC-NEXT: calll L21$pb 1883; DARWIN-32-PIC-NEXT: L21$pb: 1884; DARWIN-32-PIC-NEXT: popl %eax 1885; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx 1886; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax) 1887; DARWIN-32-PIC-NEXT: retl 1888; 1889; DARWIN-64-STATIC-LABEL: qux06: 1890; DARWIN-64-STATIC: ## %bb.0: ## %entry 1891; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax 1892; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip) 1893; DARWIN-64-STATIC-NEXT: retq 1894; 1895; DARWIN-64-DYNAMIC-LABEL: qux06: 1896; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1897; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax 1898; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip) 1899; DARWIN-64-DYNAMIC-NEXT: retq 1900; 1901; DARWIN-64-PIC-LABEL: qux06: 1902; DARWIN-64-PIC: ## %bb.0: ## %entry 1903; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax 1904; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip) 1905; DARWIN-64-PIC-NEXT: retq 1906 1907entry: 1908 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 1909 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), align 4 1910 ret void 1911} 1912 1913define void @qux07() nounwind { 1914; LINUX-64-STATIC-LABEL: qux07: 1915; LINUX-64-STATIC: # %bb.0: # %entry 1916; LINUX-64-STATIC-NEXT: movq $ldst+64, lptr(%rip) 1917; LINUX-64-STATIC-NEXT: retq 1918; 1919; LINUX-32-STATIC-LABEL: qux07: 1920; LINUX-32-STATIC: # %bb.0: # %entry 1921; LINUX-32-STATIC-NEXT: movl $ldst+64, lptr 1922; LINUX-32-STATIC-NEXT: retl 1923; 1924; LINUX-32-PIC-LABEL: qux07: 1925; LINUX-32-PIC: # %bb.0: # %entry 1926; LINUX-32-PIC-NEXT: calll .L22$pb 1927; LINUX-32-PIC-NEXT: .L22$pb: 1928; LINUX-32-PIC-NEXT: popl %eax 1929; LINUX-32-PIC-NEXT: .Ltmp22: 1930; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax 1931; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %ecx 1932; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 1933; LINUX-32-PIC-NEXT: retl 1934; 1935; LINUX-64-PIC-LABEL: qux07: 1936; LINUX-64-PIC: # %bb.0: # %entry 1937; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax 1938; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 1939; LINUX-64-PIC-NEXT: retq 1940; 1941; DARWIN-32-STATIC-LABEL: qux07: 1942; DARWIN-32-STATIC: ## %bb.0: ## %entry 1943; DARWIN-32-STATIC-NEXT: movl $_ldst+64, _lptr 1944; DARWIN-32-STATIC-NEXT: retl 1945; 1946; DARWIN-32-DYNAMIC-LABEL: qux07: 1947; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1948; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, _lptr 1949; DARWIN-32-DYNAMIC-NEXT: retl 1950; 1951; DARWIN-32-PIC-LABEL: qux07: 1952; DARWIN-32-PIC: ## %bb.0: ## %entry 1953; DARWIN-32-PIC-NEXT: calll L22$pb 1954; DARWIN-32-PIC-NEXT: L22$pb: 1955; DARWIN-32-PIC-NEXT: popl %eax 1956; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx 1957; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax) 1958; DARWIN-32-PIC-NEXT: retl 1959; 1960; DARWIN-64-STATIC-LABEL: qux07: 1961; DARWIN-64-STATIC: ## %bb.0: ## %entry 1962; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax 1963; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 1964; DARWIN-64-STATIC-NEXT: retq 1965; 1966; DARWIN-64-DYNAMIC-LABEL: qux07: 1967; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1968; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax 1969; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 1970; DARWIN-64-DYNAMIC-NEXT: retq 1971; 1972; DARWIN-64-PIC-LABEL: qux07: 1973; DARWIN-64-PIC: ## %bb.0: ## %entry 1974; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax 1975; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 1976; DARWIN-64-PIC-NEXT: retq 1977 1978entry: 1979 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16), i32** @lptr, align 8 1980 ret void 1981} 1982 1983define void @qux08() nounwind { 1984; LINUX-64-STATIC-LABEL: qux08: 1985; LINUX-64-STATIC: # %bb.0: # %entry 1986; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax 1987; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 1988; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1989; LINUX-64-STATIC-NEXT: retq 1990; 1991; LINUX-32-STATIC-LABEL: qux08: 1992; LINUX-32-STATIC: # %bb.0: # %entry 1993; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax 1994; LINUX-32-STATIC-NEXT: movl lptr, %ecx 1995; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1996; LINUX-32-STATIC-NEXT: retl 1997; 1998; LINUX-32-PIC-LABEL: qux08: 1999; LINUX-32-PIC: # %bb.0: # %entry 2000; LINUX-32-PIC-NEXT: calll .L23$pb 2001; LINUX-32-PIC-NEXT: .L23$pb: 2002; LINUX-32-PIC-NEXT: popl %eax 2003; LINUX-32-PIC-NEXT: .Ltmp23: 2004; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax 2005; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx 2006; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 2007; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 2008; LINUX-32-PIC-NEXT: retl 2009; 2010; LINUX-64-PIC-LABEL: qux08: 2011; LINUX-64-PIC: # %bb.0: # %entry 2012; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax 2013; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 2014; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 2015; LINUX-64-PIC-NEXT: retq 2016; 2017; DARWIN-32-STATIC-LABEL: qux08: 2018; DARWIN-32-STATIC: ## %bb.0: ## %entry 2019; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax 2020; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 2021; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 2022; DARWIN-32-STATIC-NEXT: retl 2023; 2024; DARWIN-32-DYNAMIC-LABEL: qux08: 2025; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2026; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax 2027; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 2028; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 2029; DARWIN-32-DYNAMIC-NEXT: retl 2030; 2031; DARWIN-32-PIC-LABEL: qux08: 2032; DARWIN-32-PIC: ## %bb.0: ## %entry 2033; DARWIN-32-PIC-NEXT: calll L23$pb 2034; DARWIN-32-PIC-NEXT: L23$pb: 2035; DARWIN-32-PIC-NEXT: popl %eax 2036; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx 2037; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax 2038; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 2039; DARWIN-32-PIC-NEXT: retl 2040; 2041; DARWIN-64-STATIC-LABEL: qux08: 2042; DARWIN-64-STATIC: ## %bb.0: ## %entry 2043; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax 2044; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 2045; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 2046; DARWIN-64-STATIC-NEXT: retq 2047; 2048; DARWIN-64-DYNAMIC-LABEL: qux08: 2049; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2050; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax 2051; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 2052; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 2053; DARWIN-64-DYNAMIC-NEXT: retq 2054; 2055; DARWIN-64-PIC-LABEL: qux08: 2056; DARWIN-64-PIC: ## %bb.0: ## %entry 2057; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax 2058; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 2059; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 2060; DARWIN-64-PIC-NEXT: retq 2061 2062entry: 2063 %0 = load i32*, i32** @lptr, align 8 2064 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16), align 4 2065 %2 = getelementptr i32, i32* %0, i64 16 2066 store i32 %1, i32* %2, align 4 2067 ret void 2068} 2069 2070define void @ind00(i64 %i) nounwind { 2071; LINUX-64-STATIC-LABEL: ind00: 2072; LINUX-64-STATIC: # %bb.0: # %entry 2073; LINUX-64-STATIC-NEXT: movl src(,%rdi,4), %eax 2074; LINUX-64-STATIC-NEXT: movl %eax, dst(,%rdi,4) 2075; LINUX-64-STATIC-NEXT: retq 2076; 2077; LINUX-32-STATIC-LABEL: ind00: 2078; LINUX-32-STATIC: # %bb.0: # %entry 2079; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2080; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx 2081; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4) 2082; LINUX-32-STATIC-NEXT: retl 2083; 2084; LINUX-32-PIC-LABEL: ind00: 2085; LINUX-32-PIC: # %bb.0: # %entry 2086; LINUX-32-PIC-NEXT: calll .L24$pb 2087; LINUX-32-PIC-NEXT: .L24$pb: 2088; LINUX-32-PIC-NEXT: popl %eax 2089; LINUX-32-PIC-NEXT: .Ltmp24: 2090; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax 2091; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2092; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 2093; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2094; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 2095; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2096; LINUX-32-PIC-NEXT: retl 2097; 2098; LINUX-64-PIC-LABEL: ind00: 2099; LINUX-64-PIC: # %bb.0: # %entry 2100; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 2101; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2102; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 2103; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2104; LINUX-64-PIC-NEXT: retq 2105; 2106; DARWIN-32-STATIC-LABEL: ind00: 2107; DARWIN-32-STATIC: ## %bb.0: ## %entry 2108; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2109; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx 2110; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4) 2111; DARWIN-32-STATIC-NEXT: retl 2112; 2113; DARWIN-32-DYNAMIC-LABEL: ind00: 2114; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2115; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2116; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 2117; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2118; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 2119; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2120; DARWIN-32-DYNAMIC-NEXT: retl 2121; 2122; DARWIN-32-PIC-LABEL: ind00: 2123; DARWIN-32-PIC: ## %bb.0: ## %entry 2124; DARWIN-32-PIC-NEXT: calll L24$pb 2125; DARWIN-32-PIC-NEXT: L24$pb: 2126; DARWIN-32-PIC-NEXT: popl %eax 2127; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2128; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx 2129; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2130; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax 2131; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2132; DARWIN-32-PIC-NEXT: retl 2133; 2134; DARWIN-64-STATIC-LABEL: ind00: 2135; DARWIN-64-STATIC: ## %bb.0: ## %entry 2136; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2137; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2138; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2139; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2140; DARWIN-64-STATIC-NEXT: retq 2141; 2142; DARWIN-64-DYNAMIC-LABEL: ind00: 2143; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2144; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2145; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2146; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2147; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2148; DARWIN-64-DYNAMIC-NEXT: retq 2149; 2150; DARWIN-64-PIC-LABEL: ind00: 2151; DARWIN-64-PIC: ## %bb.0: ## %entry 2152; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2153; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2154; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2155; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2156; DARWIN-64-PIC-NEXT: retq 2157 2158entry: 2159 %0 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i 2160 %1 = load i32, i32* %0, align 4 2161 %2 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i 2162 store i32 %1, i32* %2, align 4 2163 ret void 2164} 2165 2166define void @ixd00(i64 %i) nounwind { 2167; LINUX-64-STATIC-LABEL: ixd00: 2168; LINUX-64-STATIC: # %bb.0: # %entry 2169; LINUX-64-STATIC-NEXT: movl xsrc(,%rdi,4), %eax 2170; LINUX-64-STATIC-NEXT: movl %eax, xdst(,%rdi,4) 2171; LINUX-64-STATIC-NEXT: retq 2172; 2173; LINUX-32-STATIC-LABEL: ixd00: 2174; LINUX-32-STATIC: # %bb.0: # %entry 2175; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2176; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx 2177; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4) 2178; LINUX-32-STATIC-NEXT: retl 2179; 2180; LINUX-32-PIC-LABEL: ixd00: 2181; LINUX-32-PIC: # %bb.0: # %entry 2182; LINUX-32-PIC-NEXT: calll .L25$pb 2183; LINUX-32-PIC-NEXT: .L25$pb: 2184; LINUX-32-PIC-NEXT: popl %eax 2185; LINUX-32-PIC-NEXT: .Ltmp25: 2186; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax 2187; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2188; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 2189; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2190; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 2191; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2192; LINUX-32-PIC-NEXT: retl 2193; 2194; LINUX-64-PIC-LABEL: ixd00: 2195; LINUX-64-PIC: # %bb.0: # %entry 2196; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2197; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2198; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 2199; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2200; LINUX-64-PIC-NEXT: retq 2201; 2202; DARWIN-32-STATIC-LABEL: ixd00: 2203; DARWIN-32-STATIC: ## %bb.0: ## %entry 2204; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2205; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx 2206; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4) 2207; DARWIN-32-STATIC-NEXT: retl 2208; 2209; DARWIN-32-DYNAMIC-LABEL: ixd00: 2210; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2211; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2212; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 2213; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2214; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx 2215; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2216; DARWIN-32-DYNAMIC-NEXT: retl 2217; 2218; DARWIN-32-PIC-LABEL: ixd00: 2219; DARWIN-32-PIC: ## %bb.0: ## %entry 2220; DARWIN-32-PIC-NEXT: calll L25$pb 2221; DARWIN-32-PIC-NEXT: L25$pb: 2222; DARWIN-32-PIC-NEXT: popl %eax 2223; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2224; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx 2225; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2226; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax 2227; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2228; DARWIN-32-PIC-NEXT: retl 2229; 2230; DARWIN-64-STATIC-LABEL: ixd00: 2231; DARWIN-64-STATIC: ## %bb.0: ## %entry 2232; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2233; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2234; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2235; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2236; DARWIN-64-STATIC-NEXT: retq 2237; 2238; DARWIN-64-DYNAMIC-LABEL: ixd00: 2239; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2240; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2241; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2242; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2243; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2244; DARWIN-64-DYNAMIC-NEXT: retq 2245; 2246; DARWIN-64-PIC-LABEL: ixd00: 2247; DARWIN-64-PIC: ## %bb.0: ## %entry 2248; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2249; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2250; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2251; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2252; DARWIN-64-PIC-NEXT: retq 2253 2254entry: 2255 %0 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i 2256 %1 = load i32, i32* %0, align 4 2257 %2 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i 2258 store i32 %1, i32* %2, align 4 2259 ret void 2260} 2261 2262define void @ind01(i64 %i) nounwind { 2263; LINUX-64-STATIC-LABEL: ind01: 2264; LINUX-64-STATIC: # %bb.0: # %entry 2265; LINUX-64-STATIC-NEXT: leaq dst(,%rdi,4), %rax 2266; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip) 2267; LINUX-64-STATIC-NEXT: retq 2268; 2269; LINUX-32-STATIC-LABEL: ind01: 2270; LINUX-32-STATIC: # %bb.0: # %entry 2271; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2272; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax 2273; LINUX-32-STATIC-NEXT: movl %eax, ptr 2274; LINUX-32-STATIC-NEXT: retl 2275; 2276; LINUX-32-PIC-LABEL: ind01: 2277; LINUX-32-PIC: # %bb.0: # %entry 2278; LINUX-32-PIC-NEXT: calll .L26$pb 2279; LINUX-32-PIC-NEXT: .L26$pb: 2280; LINUX-32-PIC-NEXT: popl %eax 2281; LINUX-32-PIC-NEXT: .Ltmp26: 2282; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax 2283; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2284; LINUX-32-PIC-NEXT: shll $2, %ecx 2285; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx 2286; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2287; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2288; LINUX-32-PIC-NEXT: retl 2289; 2290; LINUX-64-PIC-LABEL: ind01: 2291; LINUX-64-PIC: # %bb.0: # %entry 2292; LINUX-64-PIC-NEXT: shlq $2, %rdi 2293; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi 2294; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2295; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2296; LINUX-64-PIC-NEXT: retq 2297; 2298; DARWIN-32-STATIC-LABEL: ind01: 2299; DARWIN-32-STATIC: ## %bb.0: ## %entry 2300; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2301; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax 2302; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 2303; DARWIN-32-STATIC-NEXT: retl 2304; 2305; DARWIN-32-DYNAMIC-LABEL: ind01: 2306; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2307; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2308; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax 2309; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 2310; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 2311; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 2312; DARWIN-32-DYNAMIC-NEXT: retl 2313; 2314; DARWIN-32-PIC-LABEL: ind01: 2315; DARWIN-32-PIC: ## %bb.0: ## %entry 2316; DARWIN-32-PIC-NEXT: calll L26$pb 2317; DARWIN-32-PIC-NEXT: L26$pb: 2318; DARWIN-32-PIC-NEXT: popl %eax 2319; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2320; DARWIN-32-PIC-NEXT: shll $2, %ecx 2321; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx 2322; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax 2323; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 2324; DARWIN-32-PIC-NEXT: retl 2325; 2326; DARWIN-64-STATIC-LABEL: ind01: 2327; DARWIN-64-STATIC: ## %bb.0: ## %entry 2328; DARWIN-64-STATIC-NEXT: shlq $2, %rdi 2329; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2330; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2331; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax) 2332; DARWIN-64-STATIC-NEXT: retq 2333; 2334; DARWIN-64-DYNAMIC-LABEL: ind01: 2335; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2336; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi 2337; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2338; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2339; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax) 2340; DARWIN-64-DYNAMIC-NEXT: retq 2341; 2342; DARWIN-64-PIC-LABEL: ind01: 2343; DARWIN-64-PIC: ## %bb.0: ## %entry 2344; DARWIN-64-PIC-NEXT: shlq $2, %rdi 2345; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2346; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2347; DARWIN-64-PIC-NEXT: movq %rdi, (%rax) 2348; DARWIN-64-PIC-NEXT: retq 2349 2350entry: 2351 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %i 2352 store i32* %0, i32** @ptr, align 8 2353 ret void 2354} 2355 2356define void @ixd01(i64 %i) nounwind { 2357; LINUX-64-STATIC-LABEL: ixd01: 2358; LINUX-64-STATIC: # %bb.0: # %entry 2359; LINUX-64-STATIC-NEXT: leaq xdst(,%rdi,4), %rax 2360; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip) 2361; LINUX-64-STATIC-NEXT: retq 2362; 2363; LINUX-32-STATIC-LABEL: ixd01: 2364; LINUX-32-STATIC: # %bb.0: # %entry 2365; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2366; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax 2367; LINUX-32-STATIC-NEXT: movl %eax, ptr 2368; LINUX-32-STATIC-NEXT: retl 2369; 2370; LINUX-32-PIC-LABEL: ixd01: 2371; LINUX-32-PIC: # %bb.0: # %entry 2372; LINUX-32-PIC-NEXT: calll .L27$pb 2373; LINUX-32-PIC-NEXT: .L27$pb: 2374; LINUX-32-PIC-NEXT: popl %eax 2375; LINUX-32-PIC-NEXT: .Ltmp27: 2376; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax 2377; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2378; LINUX-32-PIC-NEXT: shll $2, %ecx 2379; LINUX-32-PIC-NEXT: addl xdst@GOT(%eax), %ecx 2380; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2381; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2382; LINUX-32-PIC-NEXT: retl 2383; 2384; LINUX-64-PIC-LABEL: ixd01: 2385; LINUX-64-PIC: # %bb.0: # %entry 2386; LINUX-64-PIC-NEXT: shlq $2, %rdi 2387; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi 2388; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2389; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2390; LINUX-64-PIC-NEXT: retq 2391; 2392; DARWIN-32-STATIC-LABEL: ixd01: 2393; DARWIN-32-STATIC: ## %bb.0: ## %entry 2394; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2395; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax 2396; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 2397; DARWIN-32-STATIC-NEXT: retl 2398; 2399; DARWIN-32-DYNAMIC-LABEL: ixd01: 2400; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2401; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2402; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax 2403; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax 2404; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 2405; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 2406; DARWIN-32-DYNAMIC-NEXT: retl 2407; 2408; DARWIN-32-PIC-LABEL: ixd01: 2409; DARWIN-32-PIC: ## %bb.0: ## %entry 2410; DARWIN-32-PIC-NEXT: calll L27$pb 2411; DARWIN-32-PIC-NEXT: L27$pb: 2412; DARWIN-32-PIC-NEXT: popl %eax 2413; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2414; DARWIN-32-PIC-NEXT: shll $2, %ecx 2415; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx 2416; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax 2417; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 2418; DARWIN-32-PIC-NEXT: retl 2419; 2420; DARWIN-64-STATIC-LABEL: ixd01: 2421; DARWIN-64-STATIC: ## %bb.0: ## %entry 2422; DARWIN-64-STATIC-NEXT: shlq $2, %rdi 2423; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2424; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2425; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax) 2426; DARWIN-64-STATIC-NEXT: retq 2427; 2428; DARWIN-64-DYNAMIC-LABEL: ixd01: 2429; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2430; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi 2431; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2432; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2433; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax) 2434; DARWIN-64-DYNAMIC-NEXT: retq 2435; 2436; DARWIN-64-PIC-LABEL: ixd01: 2437; DARWIN-64-PIC: ## %bb.0: ## %entry 2438; DARWIN-64-PIC-NEXT: shlq $2, %rdi 2439; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2440; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2441; DARWIN-64-PIC-NEXT: movq %rdi, (%rax) 2442; DARWIN-64-PIC-NEXT: retq 2443 2444entry: 2445 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %i 2446 store i32* %0, i32** @ptr, align 8 2447 ret void 2448} 2449 2450define void @ind02(i64 %i) nounwind { 2451; LINUX-64-STATIC-LABEL: ind02: 2452; LINUX-64-STATIC: # %bb.0: # %entry 2453; LINUX-64-STATIC-NEXT: movl src(,%rdi,4), %eax 2454; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 2455; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2456; LINUX-64-STATIC-NEXT: retq 2457; 2458; LINUX-32-STATIC-LABEL: ind02: 2459; LINUX-32-STATIC: # %bb.0: # %entry 2460; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2461; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx 2462; LINUX-32-STATIC-NEXT: movl ptr, %edx 2463; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2464; LINUX-32-STATIC-NEXT: retl 2465; 2466; LINUX-32-PIC-LABEL: ind02: 2467; LINUX-32-PIC: # %bb.0: # %entry 2468; LINUX-32-PIC-NEXT: calll .L28$pb 2469; LINUX-32-PIC-NEXT: .L28$pb: 2470; LINUX-32-PIC-NEXT: popl %eax 2471; LINUX-32-PIC-NEXT: .Ltmp28: 2472; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax 2473; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2474; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 2475; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2476; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2477; LINUX-32-PIC-NEXT: movl (%eax), %eax 2478; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2479; LINUX-32-PIC-NEXT: retl 2480; 2481; LINUX-64-PIC-LABEL: ind02: 2482; LINUX-64-PIC: # %bb.0: # %entry 2483; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 2484; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2485; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2486; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2487; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2488; LINUX-64-PIC-NEXT: retq 2489; 2490; DARWIN-32-STATIC-LABEL: ind02: 2491; DARWIN-32-STATIC: ## %bb.0: ## %entry 2492; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2493; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx 2494; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 2495; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2496; DARWIN-32-STATIC-NEXT: retl 2497; 2498; DARWIN-32-DYNAMIC-LABEL: ind02: 2499; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2500; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2501; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 2502; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2503; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 2504; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 2505; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2506; DARWIN-32-DYNAMIC-NEXT: retl 2507; 2508; DARWIN-32-PIC-LABEL: ind02: 2509; DARWIN-32-PIC: ## %bb.0: ## %entry 2510; DARWIN-32-PIC-NEXT: calll L28$pb 2511; DARWIN-32-PIC-NEXT: L28$pb: 2512; DARWIN-32-PIC-NEXT: popl %eax 2513; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2514; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx 2515; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2516; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax 2517; DARWIN-32-PIC-NEXT: movl (%eax), %eax 2518; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2519; DARWIN-32-PIC-NEXT: retl 2520; 2521; DARWIN-64-STATIC-LABEL: ind02: 2522; DARWIN-64-STATIC: ## %bb.0: ## %entry 2523; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2524; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2525; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2526; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 2527; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2528; DARWIN-64-STATIC-NEXT: retq 2529; 2530; DARWIN-64-DYNAMIC-LABEL: ind02: 2531; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2532; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2533; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2534; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2535; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 2536; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2537; DARWIN-64-DYNAMIC-NEXT: retq 2538; 2539; DARWIN-64-PIC-LABEL: ind02: 2540; DARWIN-64-PIC: ## %bb.0: ## %entry 2541; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2542; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2543; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2544; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 2545; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2546; DARWIN-64-PIC-NEXT: retq 2547 2548entry: 2549 %0 = load i32*, i32** @ptr, align 8 2550 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %i 2551 %2 = load i32, i32* %1, align 4 2552 %3 = getelementptr i32, i32* %0, i64 %i 2553 store i32 %2, i32* %3, align 4 2554 ret void 2555} 2556 2557define void @ixd02(i64 %i) nounwind { 2558; LINUX-64-STATIC-LABEL: ixd02: 2559; LINUX-64-STATIC: # %bb.0: # %entry 2560; LINUX-64-STATIC-NEXT: movl xsrc(,%rdi,4), %eax 2561; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 2562; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2563; LINUX-64-STATIC-NEXT: retq 2564; 2565; LINUX-32-STATIC-LABEL: ixd02: 2566; LINUX-32-STATIC: # %bb.0: # %entry 2567; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2568; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx 2569; LINUX-32-STATIC-NEXT: movl ptr, %edx 2570; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2571; LINUX-32-STATIC-NEXT: retl 2572; 2573; LINUX-32-PIC-LABEL: ixd02: 2574; LINUX-32-PIC: # %bb.0: # %entry 2575; LINUX-32-PIC-NEXT: calll .L29$pb 2576; LINUX-32-PIC-NEXT: .L29$pb: 2577; LINUX-32-PIC-NEXT: popl %eax 2578; LINUX-32-PIC-NEXT: .Ltmp29: 2579; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax 2580; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2581; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 2582; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2583; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2584; LINUX-32-PIC-NEXT: movl (%eax), %eax 2585; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2586; LINUX-32-PIC-NEXT: retl 2587; 2588; LINUX-64-PIC-LABEL: ixd02: 2589; LINUX-64-PIC: # %bb.0: # %entry 2590; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2591; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2592; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2593; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2594; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2595; LINUX-64-PIC-NEXT: retq 2596; 2597; DARWIN-32-STATIC-LABEL: ixd02: 2598; DARWIN-32-STATIC: ## %bb.0: ## %entry 2599; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2600; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx 2601; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 2602; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2603; DARWIN-32-STATIC-NEXT: retl 2604; 2605; DARWIN-32-DYNAMIC-LABEL: ixd02: 2606; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2607; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2608; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 2609; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2610; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 2611; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 2612; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2613; DARWIN-32-DYNAMIC-NEXT: retl 2614; 2615; DARWIN-32-PIC-LABEL: ixd02: 2616; DARWIN-32-PIC: ## %bb.0: ## %entry 2617; DARWIN-32-PIC-NEXT: calll L29$pb 2618; DARWIN-32-PIC-NEXT: L29$pb: 2619; DARWIN-32-PIC-NEXT: popl %eax 2620; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2621; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx 2622; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2623; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax 2624; DARWIN-32-PIC-NEXT: movl (%eax), %eax 2625; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2626; DARWIN-32-PIC-NEXT: retl 2627; 2628; DARWIN-64-STATIC-LABEL: ixd02: 2629; DARWIN-64-STATIC: ## %bb.0: ## %entry 2630; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2631; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2632; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2633; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 2634; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2635; DARWIN-64-STATIC-NEXT: retq 2636; 2637; DARWIN-64-DYNAMIC-LABEL: ixd02: 2638; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2639; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2640; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2641; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2642; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 2643; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2644; DARWIN-64-DYNAMIC-NEXT: retq 2645; 2646; DARWIN-64-PIC-LABEL: ixd02: 2647; DARWIN-64-PIC: ## %bb.0: ## %entry 2648; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2649; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2650; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2651; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 2652; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2653; DARWIN-64-PIC-NEXT: retq 2654 2655entry: 2656 %0 = load i32*, i32** @ptr, align 8 2657 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %i 2658 %2 = load i32, i32* %1, align 4 2659 %3 = getelementptr i32, i32* %0, i64 %i 2660 store i32 %2, i32* %3, align 4 2661 ret void 2662} 2663 2664define void @ind03(i64 %i) nounwind { 2665; LINUX-64-STATIC-LABEL: ind03: 2666; LINUX-64-STATIC: # %bb.0: # %entry 2667; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax 2668; LINUX-64-STATIC-NEXT: movl %eax, ddst(,%rdi,4) 2669; LINUX-64-STATIC-NEXT: retq 2670; 2671; LINUX-32-STATIC-LABEL: ind03: 2672; LINUX-32-STATIC: # %bb.0: # %entry 2673; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2674; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx 2675; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4) 2676; LINUX-32-STATIC-NEXT: retl 2677; 2678; LINUX-32-PIC-LABEL: ind03: 2679; LINUX-32-PIC: # %bb.0: # %entry 2680; LINUX-32-PIC-NEXT: calll .L30$pb 2681; LINUX-32-PIC-NEXT: .L30$pb: 2682; LINUX-32-PIC-NEXT: popl %eax 2683; LINUX-32-PIC-NEXT: .Ltmp30: 2684; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax 2685; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2686; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx 2687; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2688; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 2689; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2690; LINUX-32-PIC-NEXT: retl 2691; 2692; LINUX-64-PIC-LABEL: ind03: 2693; LINUX-64-PIC: # %bb.0: # %entry 2694; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 2695; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2696; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx 2697; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2698; LINUX-64-PIC-NEXT: retq 2699; 2700; DARWIN-32-STATIC-LABEL: ind03: 2701; DARWIN-32-STATIC: ## %bb.0: ## %entry 2702; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2703; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx 2704; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4) 2705; DARWIN-32-STATIC-NEXT: retl 2706; 2707; DARWIN-32-DYNAMIC-LABEL: ind03: 2708; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2709; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2710; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx 2711; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4) 2712; DARWIN-32-DYNAMIC-NEXT: retl 2713; 2714; DARWIN-32-PIC-LABEL: ind03: 2715; DARWIN-32-PIC: ## %bb.0: ## %entry 2716; DARWIN-32-PIC-NEXT: calll L30$pb 2717; DARWIN-32-PIC-NEXT: L30$pb: 2718; DARWIN-32-PIC-NEXT: popl %eax 2719; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2720; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx 2721; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4) 2722; DARWIN-32-PIC-NEXT: retl 2723; 2724; DARWIN-64-STATIC-LABEL: ind03: 2725; DARWIN-64-STATIC: ## %bb.0: ## %entry 2726; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 2727; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2728; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 2729; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2730; DARWIN-64-STATIC-NEXT: retq 2731; 2732; DARWIN-64-DYNAMIC-LABEL: ind03: 2733; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2734; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 2735; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2736; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 2737; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2738; DARWIN-64-DYNAMIC-NEXT: retq 2739; 2740; DARWIN-64-PIC-LABEL: ind03: 2741; DARWIN-64-PIC: ## %bb.0: ## %entry 2742; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 2743; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2744; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 2745; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2746; DARWIN-64-PIC-NEXT: retq 2747 2748entry: 2749 %0 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i 2750 %1 = load i32, i32* %0, align 4 2751 %2 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i 2752 store i32 %1, i32* %2, align 4 2753 ret void 2754} 2755 2756define void @ind04(i64 %i) nounwind { 2757; LINUX-64-STATIC-LABEL: ind04: 2758; LINUX-64-STATIC: # %bb.0: # %entry 2759; LINUX-64-STATIC-NEXT: leaq ddst(,%rdi,4), %rax 2760; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 2761; LINUX-64-STATIC-NEXT: retq 2762; 2763; LINUX-32-STATIC-LABEL: ind04: 2764; LINUX-32-STATIC: # %bb.0: # %entry 2765; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2766; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax 2767; LINUX-32-STATIC-NEXT: movl %eax, dptr 2768; LINUX-32-STATIC-NEXT: retl 2769; 2770; LINUX-32-PIC-LABEL: ind04: 2771; LINUX-32-PIC: # %bb.0: # %entry 2772; LINUX-32-PIC-NEXT: calll .L31$pb 2773; LINUX-32-PIC-NEXT: .L31$pb: 2774; LINUX-32-PIC-NEXT: popl %eax 2775; LINUX-32-PIC-NEXT: .Ltmp31: 2776; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax 2777; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2778; LINUX-32-PIC-NEXT: shll $2, %ecx 2779; LINUX-32-PIC-NEXT: addl ddst@GOT(%eax), %ecx 2780; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 2781; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2782; LINUX-32-PIC-NEXT: retl 2783; 2784; LINUX-64-PIC-LABEL: ind04: 2785; LINUX-64-PIC: # %bb.0: # %entry 2786; LINUX-64-PIC-NEXT: shlq $2, %rdi 2787; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rdi 2788; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax 2789; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2790; LINUX-64-PIC-NEXT: retq 2791; 2792; DARWIN-32-STATIC-LABEL: ind04: 2793; DARWIN-32-STATIC: ## %bb.0: ## %entry 2794; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2795; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax 2796; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 2797; DARWIN-32-STATIC-NEXT: retl 2798; 2799; DARWIN-32-DYNAMIC-LABEL: ind04: 2800; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2801; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2802; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax 2803; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 2804; DARWIN-32-DYNAMIC-NEXT: retl 2805; 2806; DARWIN-32-PIC-LABEL: ind04: 2807; DARWIN-32-PIC: ## %bb.0: ## %entry 2808; DARWIN-32-PIC-NEXT: calll L31$pb 2809; DARWIN-32-PIC-NEXT: L31$pb: 2810; DARWIN-32-PIC-NEXT: popl %eax 2811; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2812; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx 2813; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax) 2814; DARWIN-32-PIC-NEXT: retl 2815; 2816; DARWIN-64-STATIC-LABEL: ind04: 2817; DARWIN-64-STATIC: ## %bb.0: ## %entry 2818; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 2819; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax 2820; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 2821; DARWIN-64-STATIC-NEXT: retq 2822; 2823; DARWIN-64-DYNAMIC-LABEL: ind04: 2824; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2825; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 2826; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax 2827; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 2828; DARWIN-64-DYNAMIC-NEXT: retq 2829; 2830; DARWIN-64-PIC-LABEL: ind04: 2831; DARWIN-64-PIC: ## %bb.0: ## %entry 2832; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 2833; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 2834; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 2835; DARWIN-64-PIC-NEXT: retq 2836 2837entry: 2838 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %i 2839 store i32* %0, i32** @dptr, align 8 2840 ret void 2841} 2842 2843define void @ind05(i64 %i) nounwind { 2844; LINUX-64-STATIC-LABEL: ind05: 2845; LINUX-64-STATIC: # %bb.0: # %entry 2846; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax 2847; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 2848; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2849; LINUX-64-STATIC-NEXT: retq 2850; 2851; LINUX-32-STATIC-LABEL: ind05: 2852; LINUX-32-STATIC: # %bb.0: # %entry 2853; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2854; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx 2855; LINUX-32-STATIC-NEXT: movl dptr, %edx 2856; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2857; LINUX-32-STATIC-NEXT: retl 2858; 2859; LINUX-32-PIC-LABEL: ind05: 2860; LINUX-32-PIC: # %bb.0: # %entry 2861; LINUX-32-PIC-NEXT: calll .L32$pb 2862; LINUX-32-PIC-NEXT: .L32$pb: 2863; LINUX-32-PIC-NEXT: popl %eax 2864; LINUX-32-PIC-NEXT: .Ltmp32: 2865; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax 2866; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2867; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx 2868; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2869; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 2870; LINUX-32-PIC-NEXT: movl (%eax), %eax 2871; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2872; LINUX-32-PIC-NEXT: retl 2873; 2874; LINUX-64-PIC-LABEL: ind05: 2875; LINUX-64-PIC: # %bb.0: # %entry 2876; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 2877; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2878; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 2879; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2880; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2881; LINUX-64-PIC-NEXT: retq 2882; 2883; DARWIN-32-STATIC-LABEL: ind05: 2884; DARWIN-32-STATIC: ## %bb.0: ## %entry 2885; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2886; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx 2887; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 2888; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2889; DARWIN-32-STATIC-NEXT: retl 2890; 2891; DARWIN-32-DYNAMIC-LABEL: ind05: 2892; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2893; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2894; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx 2895; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 2896; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2897; DARWIN-32-DYNAMIC-NEXT: retl 2898; 2899; DARWIN-32-PIC-LABEL: ind05: 2900; DARWIN-32-PIC: ## %bb.0: ## %entry 2901; DARWIN-32-PIC-NEXT: calll L32$pb 2902; DARWIN-32-PIC-NEXT: L32$pb: 2903; DARWIN-32-PIC-NEXT: popl %eax 2904; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2905; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx 2906; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax 2907; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2908; DARWIN-32-PIC-NEXT: retl 2909; 2910; DARWIN-64-STATIC-LABEL: ind05: 2911; DARWIN-64-STATIC: ## %bb.0: ## %entry 2912; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 2913; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2914; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 2915; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2916; DARWIN-64-STATIC-NEXT: retq 2917; 2918; DARWIN-64-DYNAMIC-LABEL: ind05: 2919; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2920; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 2921; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2922; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 2923; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2924; DARWIN-64-DYNAMIC-NEXT: retq 2925; 2926; DARWIN-64-PIC-LABEL: ind05: 2927; DARWIN-64-PIC: ## %bb.0: ## %entry 2928; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 2929; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2930; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 2931; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2932; DARWIN-64-PIC-NEXT: retq 2933 2934entry: 2935 %0 = load i32*, i32** @dptr, align 8 2936 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %i 2937 %2 = load i32, i32* %1, align 4 2938 %3 = getelementptr i32, i32* %0, i64 %i 2939 store i32 %2, i32* %3, align 4 2940 ret void 2941} 2942 2943define void @ind06(i64 %i) nounwind { 2944; LINUX-64-STATIC-LABEL: ind06: 2945; LINUX-64-STATIC: # %bb.0: # %entry 2946; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax 2947; LINUX-64-STATIC-NEXT: movl %eax, ldst(,%rdi,4) 2948; LINUX-64-STATIC-NEXT: retq 2949; 2950; LINUX-32-STATIC-LABEL: ind06: 2951; LINUX-32-STATIC: # %bb.0: # %entry 2952; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2953; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx 2954; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4) 2955; LINUX-32-STATIC-NEXT: retl 2956; 2957; LINUX-32-PIC-LABEL: ind06: 2958; LINUX-32-PIC: # %bb.0: # %entry 2959; LINUX-32-PIC-NEXT: calll .L33$pb 2960; LINUX-32-PIC-NEXT: .L33$pb: 2961; LINUX-32-PIC-NEXT: popl %eax 2962; LINUX-32-PIC-NEXT: .Ltmp33: 2963; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax 2964; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2965; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx 2966; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF(%eax,%ecx,4) 2967; LINUX-32-PIC-NEXT: retl 2968; 2969; LINUX-64-PIC-LABEL: ind06: 2970; LINUX-64-PIC: # %bb.0: # %entry 2971; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 2972; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2973; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 2974; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2975; LINUX-64-PIC-NEXT: retq 2976; 2977; DARWIN-32-STATIC-LABEL: ind06: 2978; DARWIN-32-STATIC: ## %bb.0: ## %entry 2979; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2980; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx 2981; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4) 2982; DARWIN-32-STATIC-NEXT: retl 2983; 2984; DARWIN-32-DYNAMIC-LABEL: ind06: 2985; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2986; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2987; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx 2988; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4) 2989; DARWIN-32-DYNAMIC-NEXT: retl 2990; 2991; DARWIN-32-PIC-LABEL: ind06: 2992; DARWIN-32-PIC: ## %bb.0: ## %entry 2993; DARWIN-32-PIC-NEXT: calll L33$pb 2994; DARWIN-32-PIC-NEXT: L33$pb: 2995; DARWIN-32-PIC-NEXT: popl %eax 2996; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2997; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx 2998; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4) 2999; DARWIN-32-PIC-NEXT: retl 3000; 3001; DARWIN-64-STATIC-LABEL: ind06: 3002; DARWIN-64-STATIC: ## %bb.0: ## %entry 3003; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 3004; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 3005; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 3006; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3007; DARWIN-64-STATIC-NEXT: retq 3008; 3009; DARWIN-64-DYNAMIC-LABEL: ind06: 3010; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3011; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 3012; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 3013; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 3014; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 3015; DARWIN-64-DYNAMIC-NEXT: retq 3016; 3017; DARWIN-64-PIC-LABEL: ind06: 3018; DARWIN-64-PIC: ## %bb.0: ## %entry 3019; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 3020; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3021; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 3022; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3023; DARWIN-64-PIC-NEXT: retq 3024 3025entry: 3026 %0 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i 3027 %1 = load i32, i32* %0, align 4 3028 %2 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i 3029 store i32 %1, i32* %2, align 4 3030 ret void 3031} 3032 3033define void @ind07(i64 %i) nounwind { 3034; LINUX-64-STATIC-LABEL: ind07: 3035; LINUX-64-STATIC: # %bb.0: # %entry 3036; LINUX-64-STATIC-NEXT: leaq ldst(,%rdi,4), %rax 3037; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 3038; LINUX-64-STATIC-NEXT: retq 3039; 3040; LINUX-32-STATIC-LABEL: ind07: 3041; LINUX-32-STATIC: # %bb.0: # %entry 3042; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3043; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax 3044; LINUX-32-STATIC-NEXT: movl %eax, lptr 3045; LINUX-32-STATIC-NEXT: retl 3046; 3047; LINUX-32-PIC-LABEL: ind07: 3048; LINUX-32-PIC: # %bb.0: # %entry 3049; LINUX-32-PIC-NEXT: calll .L34$pb 3050; LINUX-32-PIC-NEXT: .L34$pb: 3051; LINUX-32-PIC-NEXT: popl %eax 3052; LINUX-32-PIC-NEXT: .Ltmp34: 3053; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax 3054; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3055; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax,%ecx,4), %ecx 3056; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 3057; LINUX-32-PIC-NEXT: retl 3058; 3059; LINUX-64-PIC-LABEL: ind07: 3060; LINUX-64-PIC: # %bb.0: # %entry 3061; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 3062; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 3063; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 3064; LINUX-64-PIC-NEXT: retq 3065; 3066; DARWIN-32-STATIC-LABEL: ind07: 3067; DARWIN-32-STATIC: ## %bb.0: ## %entry 3068; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3069; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax 3070; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 3071; DARWIN-32-STATIC-NEXT: retl 3072; 3073; DARWIN-32-DYNAMIC-LABEL: ind07: 3074; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3075; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3076; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax 3077; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 3078; DARWIN-32-DYNAMIC-NEXT: retl 3079; 3080; DARWIN-32-PIC-LABEL: ind07: 3081; DARWIN-32-PIC: ## %bb.0: ## %entry 3082; DARWIN-32-PIC-NEXT: calll L34$pb 3083; DARWIN-32-PIC-NEXT: L34$pb: 3084; DARWIN-32-PIC-NEXT: popl %eax 3085; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3086; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb(%eax,%ecx,4), %ecx 3087; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L34$pb(%eax) 3088; DARWIN-32-PIC-NEXT: retl 3089; 3090; DARWIN-64-STATIC-LABEL: ind07: 3091; DARWIN-64-STATIC: ## %bb.0: ## %entry 3092; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 3093; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax 3094; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 3095; DARWIN-64-STATIC-NEXT: retq 3096; 3097; DARWIN-64-DYNAMIC-LABEL: ind07: 3098; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3099; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 3100; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax 3101; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 3102; DARWIN-64-DYNAMIC-NEXT: retq 3103; 3104; DARWIN-64-PIC-LABEL: ind07: 3105; DARWIN-64-PIC: ## %bb.0: ## %entry 3106; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 3107; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 3108; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 3109; DARWIN-64-PIC-NEXT: retq 3110 3111entry: 3112 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %i 3113 store i32* %0, i32** @lptr, align 8 3114 ret void 3115} 3116 3117define void @ind08(i64 %i) nounwind { 3118; LINUX-64-STATIC-LABEL: ind08: 3119; LINUX-64-STATIC: # %bb.0: # %entry 3120; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax 3121; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 3122; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3123; LINUX-64-STATIC-NEXT: retq 3124; 3125; LINUX-32-STATIC-LABEL: ind08: 3126; LINUX-32-STATIC: # %bb.0: # %entry 3127; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3128; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx 3129; LINUX-32-STATIC-NEXT: movl lptr, %edx 3130; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 3131; LINUX-32-STATIC-NEXT: retl 3132; 3133; LINUX-32-PIC-LABEL: ind08: 3134; LINUX-32-PIC: # %bb.0: # %entry 3135; LINUX-32-PIC-NEXT: calll .L35$pb 3136; LINUX-32-PIC-NEXT: .L35$pb: 3137; LINUX-32-PIC-NEXT: popl %eax 3138; LINUX-32-PIC-NEXT: .Ltmp35: 3139; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax 3140; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3141; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx 3142; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 3143; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 3144; LINUX-32-PIC-NEXT: retl 3145; 3146; LINUX-64-PIC-LABEL: ind08: 3147; LINUX-64-PIC: # %bb.0: # %entry 3148; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 3149; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3150; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 3151; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3152; LINUX-64-PIC-NEXT: retq 3153; 3154; DARWIN-32-STATIC-LABEL: ind08: 3155; DARWIN-32-STATIC: ## %bb.0: ## %entry 3156; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3157; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx 3158; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 3159; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 3160; DARWIN-32-STATIC-NEXT: retl 3161; 3162; DARWIN-32-DYNAMIC-LABEL: ind08: 3163; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3164; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3165; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx 3166; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 3167; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 3168; DARWIN-32-DYNAMIC-NEXT: retl 3169; 3170; DARWIN-32-PIC-LABEL: ind08: 3171; DARWIN-32-PIC: ## %bb.0: ## %entry 3172; DARWIN-32-PIC-NEXT: calll L35$pb 3173; DARWIN-32-PIC-NEXT: L35$pb: 3174; DARWIN-32-PIC-NEXT: popl %eax 3175; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3176; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb(%eax,%ecx,4), %edx 3177; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb(%eax), %eax 3178; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 3179; DARWIN-32-PIC-NEXT: retl 3180; 3181; DARWIN-64-STATIC-LABEL: ind08: 3182; DARWIN-64-STATIC: ## %bb.0: ## %entry 3183; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 3184; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 3185; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 3186; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3187; DARWIN-64-STATIC-NEXT: retq 3188; 3189; DARWIN-64-DYNAMIC-LABEL: ind08: 3190; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3191; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 3192; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 3193; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 3194; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 3195; DARWIN-64-DYNAMIC-NEXT: retq 3196; 3197; DARWIN-64-PIC-LABEL: ind08: 3198; DARWIN-64-PIC: ## %bb.0: ## %entry 3199; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 3200; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3201; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 3202; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3203; DARWIN-64-PIC-NEXT: retq 3204 3205entry: 3206 %0 = load i32*, i32** @lptr, align 8 3207 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %i 3208 %2 = load i32, i32* %1, align 4 3209 %3 = getelementptr i32, i32* %0, i64 %i 3210 store i32 %2, i32* %3, align 4 3211 ret void 3212} 3213 3214define void @off00(i64 %i) nounwind { 3215; LINUX-64-STATIC-LABEL: off00: 3216; LINUX-64-STATIC: # %bb.0: # %entry 3217; LINUX-64-STATIC-NEXT: movl src+64(,%rdi,4), %eax 3218; LINUX-64-STATIC-NEXT: movl %eax, dst+64(,%rdi,4) 3219; LINUX-64-STATIC-NEXT: retq 3220; 3221; LINUX-32-STATIC-LABEL: off00: 3222; LINUX-32-STATIC: # %bb.0: # %entry 3223; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3224; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx 3225; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4) 3226; LINUX-32-STATIC-NEXT: retl 3227; 3228; LINUX-32-PIC-LABEL: off00: 3229; LINUX-32-PIC: # %bb.0: # %entry 3230; LINUX-32-PIC-NEXT: calll .L36$pb 3231; LINUX-32-PIC-NEXT: .L36$pb: 3232; LINUX-32-PIC-NEXT: popl %eax 3233; LINUX-32-PIC-NEXT: .Ltmp36: 3234; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax 3235; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3236; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 3237; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3238; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 3239; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3240; LINUX-32-PIC-NEXT: retl 3241; 3242; LINUX-64-PIC-LABEL: off00: 3243; LINUX-64-PIC: # %bb.0: # %entry 3244; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 3245; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3246; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 3247; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3248; LINUX-64-PIC-NEXT: retq 3249; 3250; DARWIN-32-STATIC-LABEL: off00: 3251; DARWIN-32-STATIC: ## %bb.0: ## %entry 3252; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3253; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx 3254; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4) 3255; DARWIN-32-STATIC-NEXT: retl 3256; 3257; DARWIN-32-DYNAMIC-LABEL: off00: 3258; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3259; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3260; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 3261; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3262; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 3263; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3264; DARWIN-32-DYNAMIC-NEXT: retl 3265; 3266; DARWIN-32-PIC-LABEL: off00: 3267; DARWIN-32-PIC: ## %bb.0: ## %entry 3268; DARWIN-32-PIC-NEXT: calll L36$pb 3269; DARWIN-32-PIC-NEXT: L36$pb: 3270; DARWIN-32-PIC-NEXT: popl %eax 3271; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3272; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb(%eax), %edx 3273; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3274; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax 3275; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3276; DARWIN-32-PIC-NEXT: retl 3277; 3278; DARWIN-64-STATIC-LABEL: off00: 3279; DARWIN-64-STATIC: ## %bb.0: ## %entry 3280; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3281; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3282; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3283; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3284; DARWIN-64-STATIC-NEXT: retq 3285; 3286; DARWIN-64-DYNAMIC-LABEL: off00: 3287; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3288; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3289; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3290; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3291; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3292; DARWIN-64-DYNAMIC-NEXT: retq 3293; 3294; DARWIN-64-PIC-LABEL: off00: 3295; DARWIN-64-PIC: ## %bb.0: ## %entry 3296; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3297; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3298; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3299; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3300; DARWIN-64-PIC-NEXT: retq 3301 3302entry: 3303 %0 = add i64 %i, 16 3304 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 3305 %2 = load i32, i32* %1, align 4 3306 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 3307 store i32 %2, i32* %3, align 4 3308 ret void 3309} 3310 3311define void @oxf00(i64 %i) nounwind { 3312; LINUX-64-STATIC-LABEL: oxf00: 3313; LINUX-64-STATIC: # %bb.0: # %entry 3314; LINUX-64-STATIC-NEXT: movl xsrc+64(,%rdi,4), %eax 3315; LINUX-64-STATIC-NEXT: movl %eax, xdst+64(,%rdi,4) 3316; LINUX-64-STATIC-NEXT: retq 3317; 3318; LINUX-32-STATIC-LABEL: oxf00: 3319; LINUX-32-STATIC: # %bb.0: # %entry 3320; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3321; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx 3322; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4) 3323; LINUX-32-STATIC-NEXT: retl 3324; 3325; LINUX-32-PIC-LABEL: oxf00: 3326; LINUX-32-PIC: # %bb.0: # %entry 3327; LINUX-32-PIC-NEXT: calll .L37$pb 3328; LINUX-32-PIC-NEXT: .L37$pb: 3329; LINUX-32-PIC-NEXT: popl %eax 3330; LINUX-32-PIC-NEXT: .Ltmp37: 3331; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax 3332; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3333; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 3334; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3335; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 3336; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3337; LINUX-32-PIC-NEXT: retl 3338; 3339; LINUX-64-PIC-LABEL: oxf00: 3340; LINUX-64-PIC: # %bb.0: # %entry 3341; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3342; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3343; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 3344; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3345; LINUX-64-PIC-NEXT: retq 3346; 3347; DARWIN-32-STATIC-LABEL: oxf00: 3348; DARWIN-32-STATIC: ## %bb.0: ## %entry 3349; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3350; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx 3351; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4) 3352; DARWIN-32-STATIC-NEXT: retl 3353; 3354; DARWIN-32-DYNAMIC-LABEL: oxf00: 3355; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3356; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3357; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 3358; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3359; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx 3360; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3361; DARWIN-32-DYNAMIC-NEXT: retl 3362; 3363; DARWIN-32-PIC-LABEL: oxf00: 3364; DARWIN-32-PIC: ## %bb.0: ## %entry 3365; DARWIN-32-PIC-NEXT: calll L37$pb 3366; DARWIN-32-PIC-NEXT: L37$pb: 3367; DARWIN-32-PIC-NEXT: popl %eax 3368; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3369; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx 3370; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3371; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax 3372; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3373; DARWIN-32-PIC-NEXT: retl 3374; 3375; DARWIN-64-STATIC-LABEL: oxf00: 3376; DARWIN-64-STATIC: ## %bb.0: ## %entry 3377; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3378; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3379; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3380; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3381; DARWIN-64-STATIC-NEXT: retq 3382; 3383; DARWIN-64-DYNAMIC-LABEL: oxf00: 3384; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3385; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3386; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3387; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3388; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3389; DARWIN-64-DYNAMIC-NEXT: retq 3390; 3391; DARWIN-64-PIC-LABEL: oxf00: 3392; DARWIN-64-PIC: ## %bb.0: ## %entry 3393; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3394; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3395; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3396; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3397; DARWIN-64-PIC-NEXT: retq 3398 3399entry: 3400 %0 = add i64 %i, 16 3401 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 3402 %2 = load i32, i32* %1, align 4 3403 %3 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 3404 store i32 %2, i32* %3, align 4 3405 ret void 3406} 3407 3408define void @off01(i64 %i) nounwind { 3409; LINUX-64-STATIC-LABEL: off01: 3410; LINUX-64-STATIC: # %bb.0: # %entry 3411; LINUX-64-STATIC-NEXT: leaq dst+64(,%rdi,4), %rax 3412; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip) 3413; LINUX-64-STATIC-NEXT: retq 3414; 3415; LINUX-32-STATIC-LABEL: off01: 3416; LINUX-32-STATIC: # %bb.0: # %entry 3417; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3418; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax 3419; LINUX-32-STATIC-NEXT: movl %eax, ptr 3420; LINUX-32-STATIC-NEXT: retl 3421; 3422; LINUX-32-PIC-LABEL: off01: 3423; LINUX-32-PIC: # %bb.0: # %entry 3424; LINUX-32-PIC-NEXT: calll .L38$pb 3425; LINUX-32-PIC-NEXT: .L38$pb: 3426; LINUX-32-PIC-NEXT: popl %eax 3427; LINUX-32-PIC-NEXT: .Ltmp38: 3428; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax 3429; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3430; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx 3431; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3432; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3433; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3434; LINUX-32-PIC-NEXT: retl 3435; 3436; LINUX-64-PIC-LABEL: off01: 3437; LINUX-64-PIC: # %bb.0: # %entry 3438; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 3439; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3440; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3441; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3442; LINUX-64-PIC-NEXT: retq 3443; 3444; DARWIN-32-STATIC-LABEL: off01: 3445; DARWIN-32-STATIC: ## %bb.0: ## %entry 3446; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3447; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax 3448; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 3449; DARWIN-32-STATIC-NEXT: retl 3450; 3451; DARWIN-32-DYNAMIC-LABEL: off01: 3452; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3453; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3454; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 3455; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 3456; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 3457; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 3458; DARWIN-32-DYNAMIC-NEXT: retl 3459; 3460; DARWIN-32-PIC-LABEL: off01: 3461; DARWIN-32-PIC: ## %bb.0: ## %entry 3462; DARWIN-32-PIC-NEXT: calll L38$pb 3463; DARWIN-32-PIC-NEXT: L38$pb: 3464; DARWIN-32-PIC-NEXT: popl %eax 3465; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3466; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx 3467; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3468; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax 3469; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 3470; DARWIN-32-PIC-NEXT: retl 3471; 3472; DARWIN-64-STATIC-LABEL: off01: 3473; DARWIN-64-STATIC: ## %bb.0: ## %entry 3474; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3475; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3476; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3477; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 3478; DARWIN-64-STATIC-NEXT: retq 3479; 3480; DARWIN-64-DYNAMIC-LABEL: off01: 3481; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3482; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3483; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3484; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3485; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 3486; DARWIN-64-DYNAMIC-NEXT: retq 3487; 3488; DARWIN-64-PIC-LABEL: off01: 3489; DARWIN-64-PIC: ## %bb.0: ## %entry 3490; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3491; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3492; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3493; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 3494; DARWIN-64-PIC-NEXT: retq 3495 3496entry: 3497 %.sum = add i64 %i, 16 3498 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum 3499 store i32* %0, i32** @ptr, align 8 3500 ret void 3501} 3502 3503define void @oxf01(i64 %i) nounwind { 3504; LINUX-64-STATIC-LABEL: oxf01: 3505; LINUX-64-STATIC: # %bb.0: # %entry 3506; LINUX-64-STATIC-NEXT: leaq xdst+64(,%rdi,4), %rax 3507; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip) 3508; LINUX-64-STATIC-NEXT: retq 3509; 3510; LINUX-32-STATIC-LABEL: oxf01: 3511; LINUX-32-STATIC: # %bb.0: # %entry 3512; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3513; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax 3514; LINUX-32-STATIC-NEXT: movl %eax, ptr 3515; LINUX-32-STATIC-NEXT: retl 3516; 3517; LINUX-32-PIC-LABEL: oxf01: 3518; LINUX-32-PIC: # %bb.0: # %entry 3519; LINUX-32-PIC-NEXT: calll .L39$pb 3520; LINUX-32-PIC-NEXT: .L39$pb: 3521; LINUX-32-PIC-NEXT: popl %eax 3522; LINUX-32-PIC-NEXT: .Ltmp39: 3523; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax 3524; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3525; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %edx 3526; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3527; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3528; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3529; LINUX-32-PIC-NEXT: retl 3530; 3531; LINUX-64-PIC-LABEL: oxf01: 3532; LINUX-64-PIC: # %bb.0: # %entry 3533; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 3534; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3535; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3536; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3537; LINUX-64-PIC-NEXT: retq 3538; 3539; DARWIN-32-STATIC-LABEL: oxf01: 3540; DARWIN-32-STATIC: ## %bb.0: ## %entry 3541; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3542; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax 3543; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 3544; DARWIN-32-STATIC-NEXT: retl 3545; 3546; DARWIN-32-DYNAMIC-LABEL: oxf01: 3547; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3548; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3549; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 3550; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 3551; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 3552; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 3553; DARWIN-32-DYNAMIC-NEXT: retl 3554; 3555; DARWIN-32-PIC-LABEL: oxf01: 3556; DARWIN-32-PIC: ## %bb.0: ## %entry 3557; DARWIN-32-PIC-NEXT: calll L39$pb 3558; DARWIN-32-PIC-NEXT: L39$pb: 3559; DARWIN-32-PIC-NEXT: popl %eax 3560; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3561; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx 3562; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3563; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax 3564; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 3565; DARWIN-32-PIC-NEXT: retl 3566; 3567; DARWIN-64-STATIC-LABEL: oxf01: 3568; DARWIN-64-STATIC: ## %bb.0: ## %entry 3569; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3570; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3571; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3572; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 3573; DARWIN-64-STATIC-NEXT: retq 3574; 3575; DARWIN-64-DYNAMIC-LABEL: oxf01: 3576; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3577; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3578; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3579; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3580; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 3581; DARWIN-64-DYNAMIC-NEXT: retq 3582; 3583; DARWIN-64-PIC-LABEL: oxf01: 3584; DARWIN-64-PIC: ## %bb.0: ## %entry 3585; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3586; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3587; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3588; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 3589; DARWIN-64-PIC-NEXT: retq 3590 3591entry: 3592 %.sum = add i64 %i, 16 3593 %0 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %.sum 3594 store i32* %0, i32** @ptr, align 8 3595 ret void 3596} 3597 3598define void @off02(i64 %i) nounwind { 3599; LINUX-64-STATIC-LABEL: off02: 3600; LINUX-64-STATIC: # %bb.0: # %entry 3601; LINUX-64-STATIC-NEXT: movl src+64(,%rdi,4), %eax 3602; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 3603; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3604; LINUX-64-STATIC-NEXT: retq 3605; 3606; LINUX-32-STATIC-LABEL: off02: 3607; LINUX-32-STATIC: # %bb.0: # %entry 3608; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3609; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx 3610; LINUX-32-STATIC-NEXT: movl ptr, %edx 3611; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3612; LINUX-32-STATIC-NEXT: retl 3613; 3614; LINUX-32-PIC-LABEL: off02: 3615; LINUX-32-PIC: # %bb.0: # %entry 3616; LINUX-32-PIC-NEXT: calll .L40$pb 3617; LINUX-32-PIC-NEXT: .L40$pb: 3618; LINUX-32-PIC-NEXT: popl %eax 3619; LINUX-32-PIC-NEXT: .Ltmp40: 3620; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax 3621; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3622; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 3623; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3624; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3625; LINUX-32-PIC-NEXT: movl (%eax), %eax 3626; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3627; LINUX-32-PIC-NEXT: retl 3628; 3629; LINUX-64-PIC-LABEL: off02: 3630; LINUX-64-PIC: # %bb.0: # %entry 3631; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 3632; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3633; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3634; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 3635; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3636; LINUX-64-PIC-NEXT: retq 3637; 3638; DARWIN-32-STATIC-LABEL: off02: 3639; DARWIN-32-STATIC: ## %bb.0: ## %entry 3640; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3641; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx 3642; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 3643; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3644; DARWIN-32-STATIC-NEXT: retl 3645; 3646; DARWIN-32-DYNAMIC-LABEL: off02: 3647; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3648; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3649; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 3650; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3651; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 3652; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 3653; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3654; DARWIN-32-DYNAMIC-NEXT: retl 3655; 3656; DARWIN-32-PIC-LABEL: off02: 3657; DARWIN-32-PIC: ## %bb.0: ## %entry 3658; DARWIN-32-PIC-NEXT: calll L40$pb 3659; DARWIN-32-PIC-NEXT: L40$pb: 3660; DARWIN-32-PIC-NEXT: popl %eax 3661; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3662; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb(%eax), %edx 3663; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3664; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax 3665; DARWIN-32-PIC-NEXT: movl (%eax), %eax 3666; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3667; DARWIN-32-PIC-NEXT: retl 3668; 3669; DARWIN-64-STATIC-LABEL: off02: 3670; DARWIN-64-STATIC: ## %bb.0: ## %entry 3671; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3672; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3673; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3674; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 3675; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3676; DARWIN-64-STATIC-NEXT: retq 3677; 3678; DARWIN-64-DYNAMIC-LABEL: off02: 3679; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3680; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3681; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3682; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3683; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 3684; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3685; DARWIN-64-DYNAMIC-NEXT: retq 3686; 3687; DARWIN-64-PIC-LABEL: off02: 3688; DARWIN-64-PIC: ## %bb.0: ## %entry 3689; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3690; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3691; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3692; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 3693; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3694; DARWIN-64-PIC-NEXT: retq 3695 3696entry: 3697 %0 = load i32*, i32** @ptr, align 8 3698 %1 = add i64 %i, 16 3699 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 3700 %3 = load i32, i32* %2, align 4 3701 %4 = getelementptr i32, i32* %0, i64 %1 3702 store i32 %3, i32* %4, align 4 3703 ret void 3704} 3705 3706define void @oxf02(i64 %i) nounwind { 3707; LINUX-64-STATIC-LABEL: oxf02: 3708; LINUX-64-STATIC: # %bb.0: # %entry 3709; LINUX-64-STATIC-NEXT: movl xsrc+64(,%rdi,4), %eax 3710; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 3711; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3712; LINUX-64-STATIC-NEXT: retq 3713; 3714; LINUX-32-STATIC-LABEL: oxf02: 3715; LINUX-32-STATIC: # %bb.0: # %entry 3716; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3717; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx 3718; LINUX-32-STATIC-NEXT: movl ptr, %edx 3719; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3720; LINUX-32-STATIC-NEXT: retl 3721; 3722; LINUX-32-PIC-LABEL: oxf02: 3723; LINUX-32-PIC: # %bb.0: # %entry 3724; LINUX-32-PIC-NEXT: calll .L41$pb 3725; LINUX-32-PIC-NEXT: .L41$pb: 3726; LINUX-32-PIC-NEXT: popl %eax 3727; LINUX-32-PIC-NEXT: .Ltmp41: 3728; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax 3729; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3730; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 3731; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3732; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3733; LINUX-32-PIC-NEXT: movl (%eax), %eax 3734; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3735; LINUX-32-PIC-NEXT: retl 3736; 3737; LINUX-64-PIC-LABEL: oxf02: 3738; LINUX-64-PIC: # %bb.0: # %entry 3739; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3740; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3741; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3742; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 3743; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3744; LINUX-64-PIC-NEXT: retq 3745; 3746; DARWIN-32-STATIC-LABEL: oxf02: 3747; DARWIN-32-STATIC: ## %bb.0: ## %entry 3748; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3749; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx 3750; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 3751; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3752; DARWIN-32-STATIC-NEXT: retl 3753; 3754; DARWIN-32-DYNAMIC-LABEL: oxf02: 3755; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3756; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3757; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 3758; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3759; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 3760; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 3761; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3762; DARWIN-32-DYNAMIC-NEXT: retl 3763; 3764; DARWIN-32-PIC-LABEL: oxf02: 3765; DARWIN-32-PIC: ## %bb.0: ## %entry 3766; DARWIN-32-PIC-NEXT: calll L41$pb 3767; DARWIN-32-PIC-NEXT: L41$pb: 3768; DARWIN-32-PIC-NEXT: popl %eax 3769; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3770; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx 3771; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3772; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax 3773; DARWIN-32-PIC-NEXT: movl (%eax), %eax 3774; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3775; DARWIN-32-PIC-NEXT: retl 3776; 3777; DARWIN-64-STATIC-LABEL: oxf02: 3778; DARWIN-64-STATIC: ## %bb.0: ## %entry 3779; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3780; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3781; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3782; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 3783; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3784; DARWIN-64-STATIC-NEXT: retq 3785; 3786; DARWIN-64-DYNAMIC-LABEL: oxf02: 3787; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3788; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3789; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3790; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3791; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 3792; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3793; DARWIN-64-DYNAMIC-NEXT: retq 3794; 3795; DARWIN-64-PIC-LABEL: oxf02: 3796; DARWIN-64-PIC: ## %bb.0: ## %entry 3797; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3798; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3799; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3800; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 3801; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3802; DARWIN-64-PIC-NEXT: retq 3803 3804entry: 3805 %0 = load i32*, i32** @ptr, align 8 3806 %1 = add i64 %i, 16 3807 %2 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %1 3808 %3 = load i32, i32* %2, align 4 3809 %4 = getelementptr i32, i32* %0, i64 %1 3810 store i32 %3, i32* %4, align 4 3811 ret void 3812} 3813 3814define void @off03(i64 %i) nounwind { 3815; LINUX-64-STATIC-LABEL: off03: 3816; LINUX-64-STATIC: # %bb.0: # %entry 3817; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax 3818; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(,%rdi,4) 3819; LINUX-64-STATIC-NEXT: retq 3820; 3821; LINUX-32-STATIC-LABEL: off03: 3822; LINUX-32-STATIC: # %bb.0: # %entry 3823; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3824; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx 3825; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4) 3826; LINUX-32-STATIC-NEXT: retl 3827; 3828; LINUX-32-PIC-LABEL: off03: 3829; LINUX-32-PIC: # %bb.0: # %entry 3830; LINUX-32-PIC-NEXT: calll .L42$pb 3831; LINUX-32-PIC-NEXT: .L42$pb: 3832; LINUX-32-PIC-NEXT: popl %eax 3833; LINUX-32-PIC-NEXT: .Ltmp42: 3834; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax 3835; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3836; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx 3837; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3838; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 3839; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3840; LINUX-32-PIC-NEXT: retl 3841; 3842; LINUX-64-PIC-LABEL: off03: 3843; LINUX-64-PIC: # %bb.0: # %entry 3844; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 3845; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3846; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx 3847; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3848; LINUX-64-PIC-NEXT: retq 3849; 3850; DARWIN-32-STATIC-LABEL: off03: 3851; DARWIN-32-STATIC: ## %bb.0: ## %entry 3852; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3853; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 3854; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4) 3855; DARWIN-32-STATIC-NEXT: retl 3856; 3857; DARWIN-32-DYNAMIC-LABEL: off03: 3858; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3859; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3860; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 3861; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4) 3862; DARWIN-32-DYNAMIC-NEXT: retl 3863; 3864; DARWIN-32-PIC-LABEL: off03: 3865; DARWIN-32-PIC: ## %bb.0: ## %entry 3866; DARWIN-32-PIC-NEXT: calll L42$pb 3867; DARWIN-32-PIC-NEXT: L42$pb: 3868; DARWIN-32-PIC-NEXT: popl %eax 3869; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3870; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx 3871; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4) 3872; DARWIN-32-PIC-NEXT: retl 3873; 3874; DARWIN-64-STATIC-LABEL: off03: 3875; DARWIN-64-STATIC: ## %bb.0: ## %entry 3876; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 3877; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3878; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 3879; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3880; DARWIN-64-STATIC-NEXT: retq 3881; 3882; DARWIN-64-DYNAMIC-LABEL: off03: 3883; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3884; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 3885; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3886; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 3887; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3888; DARWIN-64-DYNAMIC-NEXT: retq 3889; 3890; DARWIN-64-PIC-LABEL: off03: 3891; DARWIN-64-PIC: ## %bb.0: ## %entry 3892; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 3893; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3894; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 3895; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3896; DARWIN-64-PIC-NEXT: retq 3897 3898entry: 3899 %0 = add i64 %i, 16 3900 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 3901 %2 = load i32, i32* %1, align 4 3902 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 3903 store i32 %2, i32* %3, align 4 3904 ret void 3905} 3906 3907define void @off04(i64 %i) nounwind { 3908; LINUX-64-STATIC-LABEL: off04: 3909; LINUX-64-STATIC: # %bb.0: # %entry 3910; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax 3911; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 3912; LINUX-64-STATIC-NEXT: retq 3913; 3914; LINUX-32-STATIC-LABEL: off04: 3915; LINUX-32-STATIC: # %bb.0: # %entry 3916; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3917; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax 3918; LINUX-32-STATIC-NEXT: movl %eax, dptr 3919; LINUX-32-STATIC-NEXT: retl 3920; 3921; LINUX-32-PIC-LABEL: off04: 3922; LINUX-32-PIC: # %bb.0: # %entry 3923; LINUX-32-PIC-NEXT: calll .L43$pb 3924; LINUX-32-PIC-NEXT: .L43$pb: 3925; LINUX-32-PIC-NEXT: popl %eax 3926; LINUX-32-PIC-NEXT: .Ltmp43: 3927; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax 3928; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3929; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %edx 3930; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3931; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 3932; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3933; LINUX-32-PIC-NEXT: retl 3934; 3935; LINUX-64-PIC-LABEL: off04: 3936; LINUX-64-PIC: # %bb.0: # %entry 3937; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 3938; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3939; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 3940; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3941; LINUX-64-PIC-NEXT: retq 3942; 3943; DARWIN-32-STATIC-LABEL: off04: 3944; DARWIN-32-STATIC: ## %bb.0: ## %entry 3945; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3946; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax 3947; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 3948; DARWIN-32-STATIC-NEXT: retl 3949; 3950; DARWIN-32-DYNAMIC-LABEL: off04: 3951; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3952; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3953; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax 3954; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 3955; DARWIN-32-DYNAMIC-NEXT: retl 3956; 3957; DARWIN-32-PIC-LABEL: off04: 3958; DARWIN-32-PIC: ## %bb.0: ## %entry 3959; DARWIN-32-PIC-NEXT: calll L43$pb 3960; DARWIN-32-PIC-NEXT: L43$pb: 3961; DARWIN-32-PIC-NEXT: popl %eax 3962; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3963; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx 3964; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax) 3965; DARWIN-32-PIC-NEXT: retl 3966; 3967; DARWIN-64-STATIC-LABEL: off04: 3968; DARWIN-64-STATIC: ## %bb.0: ## %entry 3969; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 3970; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3971; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 3972; DARWIN-64-STATIC-NEXT: retq 3973; 3974; DARWIN-64-DYNAMIC-LABEL: off04: 3975; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3976; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 3977; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3978; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 3979; DARWIN-64-DYNAMIC-NEXT: retq 3980; 3981; DARWIN-64-PIC-LABEL: off04: 3982; DARWIN-64-PIC: ## %bb.0: ## %entry 3983; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 3984; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3985; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 3986; DARWIN-64-PIC-NEXT: retq 3987 3988entry: 3989 %.sum = add i64 %i, 16 3990 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum 3991 store i32* %0, i32** @dptr, align 8 3992 ret void 3993} 3994 3995define void @off05(i64 %i) nounwind { 3996; LINUX-64-STATIC-LABEL: off05: 3997; LINUX-64-STATIC: # %bb.0: # %entry 3998; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax 3999; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 4000; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4001; LINUX-64-STATIC-NEXT: retq 4002; 4003; LINUX-32-STATIC-LABEL: off05: 4004; LINUX-32-STATIC: # %bb.0: # %entry 4005; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4006; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx 4007; LINUX-32-STATIC-NEXT: movl dptr, %edx 4008; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4009; LINUX-32-STATIC-NEXT: retl 4010; 4011; LINUX-32-PIC-LABEL: off05: 4012; LINUX-32-PIC: # %bb.0: # %entry 4013; LINUX-32-PIC-NEXT: calll .L44$pb 4014; LINUX-32-PIC-NEXT: .L44$pb: 4015; LINUX-32-PIC-NEXT: popl %eax 4016; LINUX-32-PIC-NEXT: .Ltmp44: 4017; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax 4018; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4019; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx 4020; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 4021; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 4022; LINUX-32-PIC-NEXT: movl (%eax), %eax 4023; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4024; LINUX-32-PIC-NEXT: retl 4025; 4026; LINUX-64-PIC-LABEL: off05: 4027; LINUX-64-PIC: # %bb.0: # %entry 4028; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 4029; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4030; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 4031; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 4032; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4033; LINUX-64-PIC-NEXT: retq 4034; 4035; DARWIN-32-STATIC-LABEL: off05: 4036; DARWIN-32-STATIC: ## %bb.0: ## %entry 4037; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4038; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 4039; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 4040; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4041; DARWIN-32-STATIC-NEXT: retl 4042; 4043; DARWIN-32-DYNAMIC-LABEL: off05: 4044; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4045; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4046; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 4047; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 4048; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4049; DARWIN-32-DYNAMIC-NEXT: retl 4050; 4051; DARWIN-32-PIC-LABEL: off05: 4052; DARWIN-32-PIC: ## %bb.0: ## %entry 4053; DARWIN-32-PIC-NEXT: calll L44$pb 4054; DARWIN-32-PIC-NEXT: L44$pb: 4055; DARWIN-32-PIC-NEXT: popl %eax 4056; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4057; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx 4058; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax 4059; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4060; DARWIN-32-PIC-NEXT: retl 4061; 4062; DARWIN-64-STATIC-LABEL: off05: 4063; DARWIN-64-STATIC: ## %bb.0: ## %entry 4064; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 4065; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4066; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 4067; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4068; DARWIN-64-STATIC-NEXT: retq 4069; 4070; DARWIN-64-DYNAMIC-LABEL: off05: 4071; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4072; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 4073; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4074; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 4075; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4076; DARWIN-64-DYNAMIC-NEXT: retq 4077; 4078; DARWIN-64-PIC-LABEL: off05: 4079; DARWIN-64-PIC: ## %bb.0: ## %entry 4080; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 4081; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4082; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 4083; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4084; DARWIN-64-PIC-NEXT: retq 4085 4086entry: 4087 %0 = load i32*, i32** @dptr, align 8 4088 %1 = add i64 %i, 16 4089 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 4090 %3 = load i32, i32* %2, align 4 4091 %4 = getelementptr i32, i32* %0, i64 %1 4092 store i32 %3, i32* %4, align 4 4093 ret void 4094} 4095 4096define void @off06(i64 %i) nounwind { 4097; LINUX-64-STATIC-LABEL: off06: 4098; LINUX-64-STATIC: # %bb.0: # %entry 4099; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax 4100; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(,%rdi,4) 4101; LINUX-64-STATIC-NEXT: retq 4102; 4103; LINUX-32-STATIC-LABEL: off06: 4104; LINUX-32-STATIC: # %bb.0: # %entry 4105; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4106; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx 4107; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4) 4108; LINUX-32-STATIC-NEXT: retl 4109; 4110; LINUX-32-PIC-LABEL: off06: 4111; LINUX-32-PIC: # %bb.0: # %entry 4112; LINUX-32-PIC-NEXT: calll .L45$pb 4113; LINUX-32-PIC-NEXT: .L45$pb: 4114; LINUX-32-PIC-NEXT: popl %eax 4115; LINUX-32-PIC-NEXT: .Ltmp45: 4116; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax 4117; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4118; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx 4119; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+64(%eax,%ecx,4) 4120; LINUX-32-PIC-NEXT: retl 4121; 4122; LINUX-64-PIC-LABEL: off06: 4123; LINUX-64-PIC: # %bb.0: # %entry 4124; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 4125; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4126; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 4127; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4128; LINUX-64-PIC-NEXT: retq 4129; 4130; DARWIN-32-STATIC-LABEL: off06: 4131; DARWIN-32-STATIC: ## %bb.0: ## %entry 4132; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4133; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4134; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4) 4135; DARWIN-32-STATIC-NEXT: retl 4136; 4137; DARWIN-32-DYNAMIC-LABEL: off06: 4138; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4139; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4140; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4141; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4) 4142; DARWIN-32-DYNAMIC-NEXT: retl 4143; 4144; DARWIN-32-PIC-LABEL: off06: 4145; DARWIN-32-PIC: ## %bb.0: ## %entry 4146; DARWIN-32-PIC-NEXT: calll L45$pb 4147; DARWIN-32-PIC-NEXT: L45$pb: 4148; DARWIN-32-PIC-NEXT: popl %eax 4149; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4150; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx 4151; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4) 4152; DARWIN-32-PIC-NEXT: retl 4153; 4154; DARWIN-64-STATIC-LABEL: off06: 4155; DARWIN-64-STATIC: ## %bb.0: ## %entry 4156; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 4157; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4158; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 4159; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4160; DARWIN-64-STATIC-NEXT: retq 4161; 4162; DARWIN-64-DYNAMIC-LABEL: off06: 4163; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4164; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 4165; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4166; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 4167; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4168; DARWIN-64-DYNAMIC-NEXT: retq 4169; 4170; DARWIN-64-PIC-LABEL: off06: 4171; DARWIN-64-PIC: ## %bb.0: ## %entry 4172; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 4173; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4174; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 4175; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4176; DARWIN-64-PIC-NEXT: retq 4177 4178entry: 4179 %0 = add i64 %i, 16 4180 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 4181 %2 = load i32, i32* %1, align 4 4182 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 4183 store i32 %2, i32* %3, align 4 4184 ret void 4185} 4186 4187define void @off07(i64 %i) nounwind { 4188; LINUX-64-STATIC-LABEL: off07: 4189; LINUX-64-STATIC: # %bb.0: # %entry 4190; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax 4191; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 4192; LINUX-64-STATIC-NEXT: retq 4193; 4194; LINUX-32-STATIC-LABEL: off07: 4195; LINUX-32-STATIC: # %bb.0: # %entry 4196; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4197; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax 4198; LINUX-32-STATIC-NEXT: movl %eax, lptr 4199; LINUX-32-STATIC-NEXT: retl 4200; 4201; LINUX-32-PIC-LABEL: off07: 4202; LINUX-32-PIC: # %bb.0: # %entry 4203; LINUX-32-PIC-NEXT: calll .L46$pb 4204; LINUX-32-PIC-NEXT: .L46$pb: 4205; LINUX-32-PIC-NEXT: popl %eax 4206; LINUX-32-PIC-NEXT: .Ltmp46: 4207; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax 4208; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4209; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx 4210; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 4211; LINUX-32-PIC-NEXT: retl 4212; 4213; LINUX-64-PIC-LABEL: off07: 4214; LINUX-64-PIC: # %bb.0: # %entry 4215; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 4216; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4217; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 4218; LINUX-64-PIC-NEXT: retq 4219; 4220; DARWIN-32-STATIC-LABEL: off07: 4221; DARWIN-32-STATIC: ## %bb.0: ## %entry 4222; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4223; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax 4224; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 4225; DARWIN-32-STATIC-NEXT: retl 4226; 4227; DARWIN-32-DYNAMIC-LABEL: off07: 4228; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4229; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4230; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax 4231; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 4232; DARWIN-32-DYNAMIC-NEXT: retl 4233; 4234; DARWIN-32-PIC-LABEL: off07: 4235; DARWIN-32-PIC: ## %bb.0: ## %entry 4236; DARWIN-32-PIC-NEXT: calll L46$pb 4237; DARWIN-32-PIC-NEXT: L46$pb: 4238; DARWIN-32-PIC-NEXT: popl %eax 4239; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4240; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx 4241; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax) 4242; DARWIN-32-PIC-NEXT: retl 4243; 4244; DARWIN-64-STATIC-LABEL: off07: 4245; DARWIN-64-STATIC: ## %bb.0: ## %entry 4246; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 4247; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4248; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 4249; DARWIN-64-STATIC-NEXT: retq 4250; 4251; DARWIN-64-DYNAMIC-LABEL: off07: 4252; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4253; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 4254; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4255; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 4256; DARWIN-64-DYNAMIC-NEXT: retq 4257; 4258; DARWIN-64-PIC-LABEL: off07: 4259; DARWIN-64-PIC: ## %bb.0: ## %entry 4260; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 4261; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4262; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 4263; DARWIN-64-PIC-NEXT: retq 4264 4265entry: 4266 %.sum = add i64 %i, 16 4267 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum 4268 store i32* %0, i32** @lptr, align 8 4269 ret void 4270} 4271 4272define void @off08(i64 %i) nounwind { 4273; LINUX-64-STATIC-LABEL: off08: 4274; LINUX-64-STATIC: # %bb.0: # %entry 4275; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax 4276; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 4277; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4278; LINUX-64-STATIC-NEXT: retq 4279; 4280; LINUX-32-STATIC-LABEL: off08: 4281; LINUX-32-STATIC: # %bb.0: # %entry 4282; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4283; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx 4284; LINUX-32-STATIC-NEXT: movl lptr, %edx 4285; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4286; LINUX-32-STATIC-NEXT: retl 4287; 4288; LINUX-32-PIC-LABEL: off08: 4289; LINUX-32-PIC: # %bb.0: # %entry 4290; LINUX-32-PIC-NEXT: calll .L47$pb 4291; LINUX-32-PIC-NEXT: .L47$pb: 4292; LINUX-32-PIC-NEXT: popl %eax 4293; LINUX-32-PIC-NEXT: .Ltmp47: 4294; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax 4295; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4296; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx 4297; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 4298; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4299; LINUX-32-PIC-NEXT: retl 4300; 4301; LINUX-64-PIC-LABEL: off08: 4302; LINUX-64-PIC: # %bb.0: # %entry 4303; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 4304; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4305; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 4306; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4307; LINUX-64-PIC-NEXT: retq 4308; 4309; DARWIN-32-STATIC-LABEL: off08: 4310; DARWIN-32-STATIC: ## %bb.0: ## %entry 4311; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4312; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4313; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 4314; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4315; DARWIN-32-STATIC-NEXT: retl 4316; 4317; DARWIN-32-DYNAMIC-LABEL: off08: 4318; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4319; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4320; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4321; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 4322; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4323; DARWIN-32-DYNAMIC-NEXT: retl 4324; 4325; DARWIN-32-PIC-LABEL: off08: 4326; DARWIN-32-PIC: ## %bb.0: ## %entry 4327; DARWIN-32-PIC-NEXT: calll L47$pb 4328; DARWIN-32-PIC-NEXT: L47$pb: 4329; DARWIN-32-PIC-NEXT: popl %eax 4330; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4331; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx 4332; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax 4333; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4334; DARWIN-32-PIC-NEXT: retl 4335; 4336; DARWIN-64-STATIC-LABEL: off08: 4337; DARWIN-64-STATIC: ## %bb.0: ## %entry 4338; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 4339; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4340; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 4341; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4342; DARWIN-64-STATIC-NEXT: retq 4343; 4344; DARWIN-64-DYNAMIC-LABEL: off08: 4345; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4346; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 4347; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4348; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 4349; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4350; DARWIN-64-DYNAMIC-NEXT: retq 4351; 4352; DARWIN-64-PIC-LABEL: off08: 4353; DARWIN-64-PIC: ## %bb.0: ## %entry 4354; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 4355; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4356; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 4357; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4358; DARWIN-64-PIC-NEXT: retq 4359 4360entry: 4361 %0 = load i32*, i32** @lptr, align 8 4362 %1 = add i64 %i, 16 4363 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 4364 %3 = load i32, i32* %2, align 4 4365 %4 = getelementptr i32, i32* %0, i64 %1 4366 store i32 %3, i32* %4, align 4 4367 ret void 4368} 4369 4370define void @moo00(i64 %i) nounwind { 4371; LINUX-64-STATIC-LABEL: moo00: 4372; LINUX-64-STATIC: # %bb.0: # %entry 4373; LINUX-64-STATIC-NEXT: movl src+262144(%rip), %eax 4374; LINUX-64-STATIC-NEXT: movl %eax, dst+262144(%rip) 4375; LINUX-64-STATIC-NEXT: retq 4376; 4377; LINUX-32-STATIC-LABEL: moo00: 4378; LINUX-32-STATIC: # %bb.0: # %entry 4379; LINUX-32-STATIC-NEXT: movl src+262144, %eax 4380; LINUX-32-STATIC-NEXT: movl %eax, dst+262144 4381; LINUX-32-STATIC-NEXT: retl 4382; 4383; LINUX-32-PIC-LABEL: moo00: 4384; LINUX-32-PIC: # %bb.0: # %entry 4385; LINUX-32-PIC-NEXT: calll .L48$pb 4386; LINUX-32-PIC-NEXT: .L48$pb: 4387; LINUX-32-PIC-NEXT: popl %eax 4388; LINUX-32-PIC-NEXT: .Ltmp48: 4389; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax 4390; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 4391; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4392; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 4393; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4394; LINUX-32-PIC-NEXT: retl 4395; 4396; LINUX-64-PIC-LABEL: moo00: 4397; LINUX-64-PIC: # %bb.0: # %entry 4398; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 4399; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4400; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 4401; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4402; LINUX-64-PIC-NEXT: retq 4403; 4404; DARWIN-32-STATIC-LABEL: moo00: 4405; DARWIN-32-STATIC: ## %bb.0: ## %entry 4406; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax 4407; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144 4408; DARWIN-32-STATIC-NEXT: retl 4409; 4410; DARWIN-32-DYNAMIC-LABEL: moo00: 4411; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4412; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 4413; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax 4414; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 4415; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4416; DARWIN-32-DYNAMIC-NEXT: retl 4417; 4418; DARWIN-32-PIC-LABEL: moo00: 4419; DARWIN-32-PIC: ## %bb.0: ## %entry 4420; DARWIN-32-PIC-NEXT: calll L48$pb 4421; DARWIN-32-PIC-NEXT: L48$pb: 4422; DARWIN-32-PIC-NEXT: popl %eax 4423; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx 4424; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx 4425; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax 4426; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4427; DARWIN-32-PIC-NEXT: retl 4428; 4429; DARWIN-64-STATIC-LABEL: moo00: 4430; DARWIN-64-STATIC: ## %bb.0: ## %entry 4431; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4432; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax 4433; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4434; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4435; DARWIN-64-STATIC-NEXT: retq 4436; 4437; DARWIN-64-DYNAMIC-LABEL: moo00: 4438; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4439; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4440; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax 4441; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4442; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4443; DARWIN-64-DYNAMIC-NEXT: retq 4444; 4445; DARWIN-64-PIC-LABEL: moo00: 4446; DARWIN-64-PIC: ## %bb.0: ## %entry 4447; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4448; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax 4449; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4450; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4451; DARWIN-64-PIC-NEXT: retq 4452 4453entry: 4454 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 4455 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), align 4 4456 ret void 4457} 4458 4459define void @moo01(i64 %i) nounwind { 4460; LINUX-64-STATIC-LABEL: moo01: 4461; LINUX-64-STATIC: # %bb.0: # %entry 4462; LINUX-64-STATIC-NEXT: movq $dst+262144, ptr(%rip) 4463; LINUX-64-STATIC-NEXT: retq 4464; 4465; LINUX-32-STATIC-LABEL: moo01: 4466; LINUX-32-STATIC: # %bb.0: # %entry 4467; LINUX-32-STATIC-NEXT: movl $dst+262144, ptr 4468; LINUX-32-STATIC-NEXT: retl 4469; 4470; LINUX-32-PIC-LABEL: moo01: 4471; LINUX-32-PIC: # %bb.0: # %entry 4472; LINUX-32-PIC-NEXT: calll .L49$pb 4473; LINUX-32-PIC-NEXT: .L49$pb: 4474; LINUX-32-PIC-NEXT: popl %eax 4475; LINUX-32-PIC-NEXT: .Ltmp49: 4476; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax 4477; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000 4478; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx 4479; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 4480; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 4481; LINUX-32-PIC-NEXT: retl 4482; 4483; LINUX-64-PIC-LABEL: moo01: 4484; LINUX-64-PIC: # %bb.0: # %entry 4485; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 4486; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax 4487; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4488; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 4489; LINUX-64-PIC-NEXT: retq 4490; 4491; DARWIN-32-STATIC-LABEL: moo01: 4492; DARWIN-32-STATIC: ## %bb.0: ## %entry 4493; DARWIN-32-STATIC-NEXT: movl $_dst+262144, _ptr 4494; DARWIN-32-STATIC-NEXT: retl 4495; 4496; DARWIN-32-DYNAMIC-LABEL: moo01: 4497; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4498; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 4499; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 4500; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 4501; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 4502; DARWIN-32-DYNAMIC-NEXT: retl 4503; 4504; DARWIN-32-PIC-LABEL: moo01: 4505; DARWIN-32-PIC: ## %bb.0: ## %entry 4506; DARWIN-32-PIC-NEXT: calll L49$pb 4507; DARWIN-32-PIC-NEXT: L49$pb: 4508; DARWIN-32-PIC-NEXT: popl %eax 4509; DARWIN-32-PIC-NEXT: movl $262144, %ecx ## imm = 0x40000 4510; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx 4511; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax 4512; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 4513; DARWIN-32-PIC-NEXT: retl 4514; 4515; DARWIN-64-STATIC-LABEL: moo01: 4516; DARWIN-64-STATIC: ## %bb.0: ## %entry 4517; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 4518; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4519; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4520; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 4521; DARWIN-64-STATIC-NEXT: retq 4522; 4523; DARWIN-64-DYNAMIC-LABEL: moo01: 4524; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4525; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 4526; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4527; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4528; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 4529; DARWIN-64-DYNAMIC-NEXT: retq 4530; 4531; DARWIN-64-PIC-LABEL: moo01: 4532; DARWIN-64-PIC: ## %bb.0: ## %entry 4533; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 4534; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4535; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4536; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 4537; DARWIN-64-PIC-NEXT: retq 4538 4539entry: 4540 store i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536), i32** @ptr, align 8 4541 ret void 4542} 4543 4544define void @moo02(i64 %i) nounwind { 4545; LINUX-64-STATIC-LABEL: moo02: 4546; LINUX-64-STATIC: # %bb.0: # %entry 4547; LINUX-64-STATIC-NEXT: movl src+262144(%rip), %eax 4548; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 4549; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4550; LINUX-64-STATIC-NEXT: retq 4551; 4552; LINUX-32-STATIC-LABEL: moo02: 4553; LINUX-32-STATIC: # %bb.0: # %entry 4554; LINUX-32-STATIC-NEXT: movl src+262144, %eax 4555; LINUX-32-STATIC-NEXT: movl ptr, %ecx 4556; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4557; LINUX-32-STATIC-NEXT: retl 4558; 4559; LINUX-32-PIC-LABEL: moo02: 4560; LINUX-32-PIC: # %bb.0: # %entry 4561; LINUX-32-PIC-NEXT: calll .L50$pb 4562; LINUX-32-PIC-NEXT: .L50$pb: 4563; LINUX-32-PIC-NEXT: popl %eax 4564; LINUX-32-PIC-NEXT: .Ltmp50: 4565; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax 4566; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 4567; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4568; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 4569; LINUX-32-PIC-NEXT: movl (%eax), %eax 4570; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4571; LINUX-32-PIC-NEXT: retl 4572; 4573; LINUX-64-PIC-LABEL: moo02: 4574; LINUX-64-PIC: # %bb.0: # %entry 4575; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 4576; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4577; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4578; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 4579; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4580; LINUX-64-PIC-NEXT: retq 4581; 4582; DARWIN-32-STATIC-LABEL: moo02: 4583; DARWIN-32-STATIC: ## %bb.0: ## %entry 4584; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax 4585; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 4586; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4587; DARWIN-32-STATIC-NEXT: retl 4588; 4589; DARWIN-32-DYNAMIC-LABEL: moo02: 4590; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4591; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 4592; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax 4593; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 4594; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 4595; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4596; DARWIN-32-DYNAMIC-NEXT: retl 4597; 4598; DARWIN-32-PIC-LABEL: moo02: 4599; DARWIN-32-PIC: ## %bb.0: ## %entry 4600; DARWIN-32-PIC-NEXT: calll L50$pb 4601; DARWIN-32-PIC-NEXT: L50$pb: 4602; DARWIN-32-PIC-NEXT: popl %eax 4603; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx 4604; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx 4605; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax 4606; DARWIN-32-PIC-NEXT: movl (%eax), %eax 4607; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4608; DARWIN-32-PIC-NEXT: retl 4609; 4610; DARWIN-64-STATIC-LABEL: moo02: 4611; DARWIN-64-STATIC: ## %bb.0: ## %entry 4612; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4613; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax 4614; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4615; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 4616; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4617; DARWIN-64-STATIC-NEXT: retq 4618; 4619; DARWIN-64-DYNAMIC-LABEL: moo02: 4620; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4621; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4622; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax 4623; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4624; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 4625; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4626; DARWIN-64-DYNAMIC-NEXT: retq 4627; 4628; DARWIN-64-PIC-LABEL: moo02: 4629; DARWIN-64-PIC: ## %bb.0: ## %entry 4630; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4631; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax 4632; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4633; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 4634; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4635; DARWIN-64-PIC-NEXT: retq 4636 4637entry: 4638 %0 = load i32*, i32** @ptr, align 8 4639 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536), align 4 4640 %2 = getelementptr i32, i32* %0, i64 65536 4641 store i32 %1, i32* %2, align 4 4642 ret void 4643} 4644 4645define void @moo03(i64 %i) nounwind { 4646; LINUX-64-STATIC-LABEL: moo03: 4647; LINUX-64-STATIC: # %bb.0: # %entry 4648; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax 4649; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(%rip) 4650; LINUX-64-STATIC-NEXT: retq 4651; 4652; LINUX-32-STATIC-LABEL: moo03: 4653; LINUX-32-STATIC: # %bb.0: # %entry 4654; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax 4655; LINUX-32-STATIC-NEXT: movl %eax, ddst+262144 4656; LINUX-32-STATIC-NEXT: retl 4657; 4658; LINUX-32-PIC-LABEL: moo03: 4659; LINUX-32-PIC: # %bb.0: # %entry 4660; LINUX-32-PIC-NEXT: calll .L51$pb 4661; LINUX-32-PIC-NEXT: .L51$pb: 4662; LINUX-32-PIC-NEXT: popl %eax 4663; LINUX-32-PIC-NEXT: .Ltmp51: 4664; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax 4665; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx 4666; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4667; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 4668; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4669; LINUX-32-PIC-NEXT: retl 4670; 4671; LINUX-64-PIC-LABEL: moo03: 4672; LINUX-64-PIC: # %bb.0: # %entry 4673; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 4674; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4675; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx 4676; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4677; LINUX-64-PIC-NEXT: retq 4678; 4679; DARWIN-32-STATIC-LABEL: moo03: 4680; DARWIN-32-STATIC: ## %bb.0: ## %entry 4681; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax 4682; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+262144 4683; DARWIN-32-STATIC-NEXT: retl 4684; 4685; DARWIN-32-DYNAMIC-LABEL: moo03: 4686; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4687; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax 4688; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+262144 4689; DARWIN-32-DYNAMIC-NEXT: retl 4690; 4691; DARWIN-32-PIC-LABEL: moo03: 4692; DARWIN-32-PIC: ## %bb.0: ## %entry 4693; DARWIN-32-PIC-NEXT: calll L51$pb 4694; DARWIN-32-PIC-NEXT: L51$pb: 4695; DARWIN-32-PIC-NEXT: popl %eax 4696; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144(%eax), %ecx 4697; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L51$pb)+262144(%eax) 4698; DARWIN-32-PIC-NEXT: retl 4699; 4700; DARWIN-64-STATIC-LABEL: moo03: 4701; DARWIN-64-STATIC: ## %bb.0: ## %entry 4702; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax 4703; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip) 4704; DARWIN-64-STATIC-NEXT: retq 4705; 4706; DARWIN-64-DYNAMIC-LABEL: moo03: 4707; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4708; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax 4709; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip) 4710; DARWIN-64-DYNAMIC-NEXT: retq 4711; 4712; DARWIN-64-PIC-LABEL: moo03: 4713; DARWIN-64-PIC: ## %bb.0: ## %entry 4714; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax 4715; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip) 4716; DARWIN-64-PIC-NEXT: retq 4717 4718entry: 4719 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 4720 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), align 32 4721 ret void 4722} 4723 4724define void @moo04(i64 %i) nounwind { 4725; LINUX-64-STATIC-LABEL: moo04: 4726; LINUX-64-STATIC: # %bb.0: # %entry 4727; LINUX-64-STATIC-NEXT: movq $ddst+262144, dptr(%rip) 4728; LINUX-64-STATIC-NEXT: retq 4729; 4730; LINUX-32-STATIC-LABEL: moo04: 4731; LINUX-32-STATIC: # %bb.0: # %entry 4732; LINUX-32-STATIC-NEXT: movl $ddst+262144, dptr 4733; LINUX-32-STATIC-NEXT: retl 4734; 4735; LINUX-32-PIC-LABEL: moo04: 4736; LINUX-32-PIC: # %bb.0: # %entry 4737; LINUX-32-PIC-NEXT: calll .L52$pb 4738; LINUX-32-PIC-NEXT: .L52$pb: 4739; LINUX-32-PIC-NEXT: popl %eax 4740; LINUX-32-PIC-NEXT: .Ltmp52: 4741; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax 4742; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000 4743; LINUX-32-PIC-NEXT: addl ddst@GOT(%eax), %ecx 4744; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 4745; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 4746; LINUX-32-PIC-NEXT: retl 4747; 4748; LINUX-64-PIC-LABEL: moo04: 4749; LINUX-64-PIC: # %bb.0: # %entry 4750; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 4751; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax 4752; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 4753; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 4754; LINUX-64-PIC-NEXT: retq 4755; 4756; DARWIN-32-STATIC-LABEL: moo04: 4757; DARWIN-32-STATIC: ## %bb.0: ## %entry 4758; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, _dptr 4759; DARWIN-32-STATIC-NEXT: retl 4760; 4761; DARWIN-32-DYNAMIC-LABEL: moo04: 4762; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4763; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, _dptr 4764; DARWIN-32-DYNAMIC-NEXT: retl 4765; 4766; DARWIN-32-PIC-LABEL: moo04: 4767; DARWIN-32-PIC: ## %bb.0: ## %entry 4768; DARWIN-32-PIC-NEXT: calll L52$pb 4769; DARWIN-32-PIC-NEXT: L52$pb: 4770; DARWIN-32-PIC-NEXT: popl %eax 4771; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144(%eax), %ecx 4772; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax) 4773; DARWIN-32-PIC-NEXT: retl 4774; 4775; DARWIN-64-STATIC-LABEL: moo04: 4776; DARWIN-64-STATIC: ## %bb.0: ## %entry 4777; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax 4778; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 4779; DARWIN-64-STATIC-NEXT: retq 4780; 4781; DARWIN-64-DYNAMIC-LABEL: moo04: 4782; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4783; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax 4784; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 4785; DARWIN-64-DYNAMIC-NEXT: retq 4786; 4787; DARWIN-64-PIC-LABEL: moo04: 4788; DARWIN-64-PIC: ## %bb.0: ## %entry 4789; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax 4790; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 4791; DARWIN-64-PIC-NEXT: retq 4792 4793entry: 4794 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536), i32** @dptr, align 8 4795 ret void 4796} 4797 4798define void @moo05(i64 %i) nounwind { 4799; LINUX-64-STATIC-LABEL: moo05: 4800; LINUX-64-STATIC: # %bb.0: # %entry 4801; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax 4802; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 4803; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4804; LINUX-64-STATIC-NEXT: retq 4805; 4806; LINUX-32-STATIC-LABEL: moo05: 4807; LINUX-32-STATIC: # %bb.0: # %entry 4808; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax 4809; LINUX-32-STATIC-NEXT: movl dptr, %ecx 4810; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4811; LINUX-32-STATIC-NEXT: retl 4812; 4813; LINUX-32-PIC-LABEL: moo05: 4814; LINUX-32-PIC: # %bb.0: # %entry 4815; LINUX-32-PIC-NEXT: calll .L53$pb 4816; LINUX-32-PIC-NEXT: .L53$pb: 4817; LINUX-32-PIC-NEXT: popl %eax 4818; LINUX-32-PIC-NEXT: .Ltmp53: 4819; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax 4820; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %ecx 4821; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4822; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 4823; LINUX-32-PIC-NEXT: movl (%eax), %eax 4824; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4825; LINUX-32-PIC-NEXT: retl 4826; 4827; LINUX-64-PIC-LABEL: moo05: 4828; LINUX-64-PIC: # %bb.0: # %entry 4829; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 4830; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4831; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 4832; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 4833; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4834; LINUX-64-PIC-NEXT: retq 4835; 4836; DARWIN-32-STATIC-LABEL: moo05: 4837; DARWIN-32-STATIC: ## %bb.0: ## %entry 4838; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax 4839; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 4840; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4841; DARWIN-32-STATIC-NEXT: retl 4842; 4843; DARWIN-32-DYNAMIC-LABEL: moo05: 4844; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4845; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax 4846; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 4847; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4848; DARWIN-32-DYNAMIC-NEXT: retl 4849; 4850; DARWIN-32-PIC-LABEL: moo05: 4851; DARWIN-32-PIC: ## %bb.0: ## %entry 4852; DARWIN-32-PIC-NEXT: calll L53$pb 4853; DARWIN-32-PIC-NEXT: L53$pb: 4854; DARWIN-32-PIC-NEXT: popl %eax 4855; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144(%eax), %ecx 4856; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax 4857; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4858; DARWIN-32-PIC-NEXT: retl 4859; 4860; DARWIN-64-STATIC-LABEL: moo05: 4861; DARWIN-64-STATIC: ## %bb.0: ## %entry 4862; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax 4863; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 4864; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4865; DARWIN-64-STATIC-NEXT: retq 4866; 4867; DARWIN-64-DYNAMIC-LABEL: moo05: 4868; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4869; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax 4870; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 4871; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4872; DARWIN-64-DYNAMIC-NEXT: retq 4873; 4874; DARWIN-64-PIC-LABEL: moo05: 4875; DARWIN-64-PIC: ## %bb.0: ## %entry 4876; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax 4877; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 4878; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4879; DARWIN-64-PIC-NEXT: retq 4880 4881entry: 4882 %0 = load i32*, i32** @dptr, align 8 4883 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536), align 32 4884 %2 = getelementptr i32, i32* %0, i64 65536 4885 store i32 %1, i32* %2, align 4 4886 ret void 4887} 4888 4889define void @moo06(i64 %i) nounwind { 4890; LINUX-64-STATIC-LABEL: moo06: 4891; LINUX-64-STATIC: # %bb.0: # %entry 4892; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax 4893; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(%rip) 4894; LINUX-64-STATIC-NEXT: retq 4895; 4896; LINUX-32-STATIC-LABEL: moo06: 4897; LINUX-32-STATIC: # %bb.0: # %entry 4898; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax 4899; LINUX-32-STATIC-NEXT: movl %eax, ldst+262144 4900; LINUX-32-STATIC-NEXT: retl 4901; 4902; LINUX-32-PIC-LABEL: moo06: 4903; LINUX-32-PIC: # %bb.0: # %entry 4904; LINUX-32-PIC-NEXT: calll .L54$pb 4905; LINUX-32-PIC-NEXT: .L54$pb: 4906; LINUX-32-PIC-NEXT: popl %eax 4907; LINUX-32-PIC-NEXT: .Ltmp54: 4908; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax 4909; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx 4910; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+262144(%eax) 4911; LINUX-32-PIC-NEXT: retl 4912; 4913; LINUX-64-PIC-LABEL: moo06: 4914; LINUX-64-PIC: # %bb.0: # %entry 4915; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax 4916; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip) 4917; LINUX-64-PIC-NEXT: retq 4918; 4919; DARWIN-32-STATIC-LABEL: moo06: 4920; DARWIN-32-STATIC: ## %bb.0: ## %entry 4921; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax 4922; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+262144 4923; DARWIN-32-STATIC-NEXT: retl 4924; 4925; DARWIN-32-DYNAMIC-LABEL: moo06: 4926; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4927; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax 4928; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+262144 4929; DARWIN-32-DYNAMIC-NEXT: retl 4930; 4931; DARWIN-32-PIC-LABEL: moo06: 4932; DARWIN-32-PIC: ## %bb.0: ## %entry 4933; DARWIN-32-PIC-NEXT: calll L54$pb 4934; DARWIN-32-PIC-NEXT: L54$pb: 4935; DARWIN-32-PIC-NEXT: popl %eax 4936; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144(%eax), %ecx 4937; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L54$pb)+262144(%eax) 4938; DARWIN-32-PIC-NEXT: retl 4939; 4940; DARWIN-64-STATIC-LABEL: moo06: 4941; DARWIN-64-STATIC: ## %bb.0: ## %entry 4942; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax 4943; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip) 4944; DARWIN-64-STATIC-NEXT: retq 4945; 4946; DARWIN-64-DYNAMIC-LABEL: moo06: 4947; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4948; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax 4949; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip) 4950; DARWIN-64-DYNAMIC-NEXT: retq 4951; 4952; DARWIN-64-PIC-LABEL: moo06: 4953; DARWIN-64-PIC: ## %bb.0: ## %entry 4954; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax 4955; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip) 4956; DARWIN-64-PIC-NEXT: retq 4957 4958entry: 4959 %0 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 4960 store i32 %0, i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), align 4 4961 ret void 4962} 4963 4964define void @moo07(i64 %i) nounwind { 4965; LINUX-64-STATIC-LABEL: moo07: 4966; LINUX-64-STATIC: # %bb.0: # %entry 4967; LINUX-64-STATIC-NEXT: movq $ldst+262144, lptr(%rip) 4968; LINUX-64-STATIC-NEXT: retq 4969; 4970; LINUX-32-STATIC-LABEL: moo07: 4971; LINUX-32-STATIC: # %bb.0: # %entry 4972; LINUX-32-STATIC-NEXT: movl $ldst+262144, lptr 4973; LINUX-32-STATIC-NEXT: retl 4974; 4975; LINUX-32-PIC-LABEL: moo07: 4976; LINUX-32-PIC: # %bb.0: # %entry 4977; LINUX-32-PIC-NEXT: calll .L55$pb 4978; LINUX-32-PIC-NEXT: .L55$pb: 4979; LINUX-32-PIC-NEXT: popl %eax 4980; LINUX-32-PIC-NEXT: .Ltmp55: 4981; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax 4982; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %ecx 4983; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 4984; LINUX-32-PIC-NEXT: retl 4985; 4986; LINUX-64-PIC-LABEL: moo07: 4987; LINUX-64-PIC: # %bb.0: # %entry 4988; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax 4989; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 4990; LINUX-64-PIC-NEXT: retq 4991; 4992; DARWIN-32-STATIC-LABEL: moo07: 4993; DARWIN-32-STATIC: ## %bb.0: ## %entry 4994; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, _lptr 4995; DARWIN-32-STATIC-NEXT: retl 4996; 4997; DARWIN-32-DYNAMIC-LABEL: moo07: 4998; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4999; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, _lptr 5000; DARWIN-32-DYNAMIC-NEXT: retl 5001; 5002; DARWIN-32-PIC-LABEL: moo07: 5003; DARWIN-32-PIC: ## %bb.0: ## %entry 5004; DARWIN-32-PIC-NEXT: calll L55$pb 5005; DARWIN-32-PIC-NEXT: L55$pb: 5006; DARWIN-32-PIC-NEXT: popl %eax 5007; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144(%eax), %ecx 5008; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax) 5009; DARWIN-32-PIC-NEXT: retl 5010; 5011; DARWIN-64-STATIC-LABEL: moo07: 5012; DARWIN-64-STATIC: ## %bb.0: ## %entry 5013; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax 5014; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 5015; DARWIN-64-STATIC-NEXT: retq 5016; 5017; DARWIN-64-DYNAMIC-LABEL: moo07: 5018; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5019; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax 5020; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 5021; DARWIN-64-DYNAMIC-NEXT: retq 5022; 5023; DARWIN-64-PIC-LABEL: moo07: 5024; DARWIN-64-PIC: ## %bb.0: ## %entry 5025; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax 5026; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 5027; DARWIN-64-PIC-NEXT: retq 5028 5029entry: 5030 store i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536), i32** @lptr, align 8 5031 ret void 5032} 5033 5034define void @moo08(i64 %i) nounwind { 5035; LINUX-64-STATIC-LABEL: moo08: 5036; LINUX-64-STATIC: # %bb.0: # %entry 5037; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax 5038; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 5039; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 5040; LINUX-64-STATIC-NEXT: retq 5041; 5042; LINUX-32-STATIC-LABEL: moo08: 5043; LINUX-32-STATIC: # %bb.0: # %entry 5044; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax 5045; LINUX-32-STATIC-NEXT: movl lptr, %ecx 5046; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 5047; LINUX-32-STATIC-NEXT: retl 5048; 5049; LINUX-32-PIC-LABEL: moo08: 5050; LINUX-32-PIC: # %bb.0: # %entry 5051; LINUX-32-PIC-NEXT: calll .L56$pb 5052; LINUX-32-PIC-NEXT: .L56$pb: 5053; LINUX-32-PIC-NEXT: popl %eax 5054; LINUX-32-PIC-NEXT: .Ltmp56: 5055; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax 5056; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx 5057; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 5058; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 5059; LINUX-32-PIC-NEXT: retl 5060; 5061; LINUX-64-PIC-LABEL: moo08: 5062; LINUX-64-PIC: # %bb.0: # %entry 5063; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax 5064; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 5065; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 5066; LINUX-64-PIC-NEXT: retq 5067; 5068; DARWIN-32-STATIC-LABEL: moo08: 5069; DARWIN-32-STATIC: ## %bb.0: ## %entry 5070; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax 5071; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 5072; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 5073; DARWIN-32-STATIC-NEXT: retl 5074; 5075; DARWIN-32-DYNAMIC-LABEL: moo08: 5076; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5077; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax 5078; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 5079; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 5080; DARWIN-32-DYNAMIC-NEXT: retl 5081; 5082; DARWIN-32-PIC-LABEL: moo08: 5083; DARWIN-32-PIC: ## %bb.0: ## %entry 5084; DARWIN-32-PIC-NEXT: calll L56$pb 5085; DARWIN-32-PIC-NEXT: L56$pb: 5086; DARWIN-32-PIC-NEXT: popl %eax 5087; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144(%eax), %ecx 5088; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax 5089; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 5090; DARWIN-32-PIC-NEXT: retl 5091; 5092; DARWIN-64-STATIC-LABEL: moo08: 5093; DARWIN-64-STATIC: ## %bb.0: ## %entry 5094; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax 5095; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 5096; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 5097; DARWIN-64-STATIC-NEXT: retq 5098; 5099; DARWIN-64-DYNAMIC-LABEL: moo08: 5100; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5101; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax 5102; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 5103; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 5104; DARWIN-64-DYNAMIC-NEXT: retq 5105; 5106; DARWIN-64-PIC-LABEL: moo08: 5107; DARWIN-64-PIC: ## %bb.0: ## %entry 5108; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax 5109; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 5110; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 5111; DARWIN-64-PIC-NEXT: retq 5112 5113entry: 5114 %0 = load i32*, i32** @lptr, align 8 5115 %1 = load i32, i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536), align 4 5116 %2 = getelementptr i32, i32* %0, i64 65536 5117 store i32 %1, i32* %2, align 4 5118 ret void 5119} 5120 5121define void @big00(i64 %i) nounwind { 5122; LINUX-64-STATIC-LABEL: big00: 5123; LINUX-64-STATIC: # %bb.0: # %entry 5124; LINUX-64-STATIC-NEXT: movl src+262144(,%rdi,4), %eax 5125; LINUX-64-STATIC-NEXT: movl %eax, dst+262144(,%rdi,4) 5126; LINUX-64-STATIC-NEXT: retq 5127; 5128; LINUX-32-STATIC-LABEL: big00: 5129; LINUX-32-STATIC: # %bb.0: # %entry 5130; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5131; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx 5132; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4) 5133; LINUX-32-STATIC-NEXT: retl 5134; 5135; LINUX-32-PIC-LABEL: big00: 5136; LINUX-32-PIC: # %bb.0: # %entry 5137; LINUX-32-PIC-NEXT: calll .L57$pb 5138; LINUX-32-PIC-NEXT: .L57$pb: 5139; LINUX-32-PIC-NEXT: popl %eax 5140; LINUX-32-PIC-NEXT: .Ltmp57: 5141; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax 5142; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5143; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 5144; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5145; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 5146; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5147; LINUX-32-PIC-NEXT: retl 5148; 5149; LINUX-64-PIC-LABEL: big00: 5150; LINUX-64-PIC: # %bb.0: # %entry 5151; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 5152; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5153; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 5154; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5155; LINUX-64-PIC-NEXT: retq 5156; 5157; DARWIN-32-STATIC-LABEL: big00: 5158; DARWIN-32-STATIC: ## %bb.0: ## %entry 5159; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5160; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx 5161; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4) 5162; DARWIN-32-STATIC-NEXT: retl 5163; 5164; DARWIN-32-DYNAMIC-LABEL: big00: 5165; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5166; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5167; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 5168; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx 5169; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 5170; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5171; DARWIN-32-DYNAMIC-NEXT: retl 5172; 5173; DARWIN-32-PIC-LABEL: big00: 5174; DARWIN-32-PIC: ## %bb.0: ## %entry 5175; DARWIN-32-PIC-NEXT: calll L57$pb 5176; DARWIN-32-PIC-NEXT: L57$pb: 5177; DARWIN-32-PIC-NEXT: popl %eax 5178; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5179; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb(%eax), %edx 5180; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5181; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax 5182; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5183; DARWIN-32-PIC-NEXT: retl 5184; 5185; DARWIN-64-STATIC-LABEL: big00: 5186; DARWIN-64-STATIC: ## %bb.0: ## %entry 5187; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5188; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5189; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5190; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5191; DARWIN-64-STATIC-NEXT: retq 5192; 5193; DARWIN-64-DYNAMIC-LABEL: big00: 5194; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5195; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5196; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5197; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5198; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5199; DARWIN-64-DYNAMIC-NEXT: retq 5200; 5201; DARWIN-64-PIC-LABEL: big00: 5202; DARWIN-64-PIC: ## %bb.0: ## %entry 5203; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5204; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5205; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5206; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5207; DARWIN-64-PIC-NEXT: retq 5208 5209entry: 5210 %0 = add i64 %i, 65536 5211 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 5212 %2 = load i32, i32* %1, align 4 5213 %3 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 5214 store i32 %2, i32* %3, align 4 5215 ret void 5216} 5217 5218define void @big01(i64 %i) nounwind { 5219; LINUX-64-STATIC-LABEL: big01: 5220; LINUX-64-STATIC: # %bb.0: # %entry 5221; LINUX-64-STATIC-NEXT: leaq dst+262144(,%rdi,4), %rax 5222; LINUX-64-STATIC-NEXT: movq %rax, ptr(%rip) 5223; LINUX-64-STATIC-NEXT: retq 5224; 5225; LINUX-32-STATIC-LABEL: big01: 5226; LINUX-32-STATIC: # %bb.0: # %entry 5227; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5228; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax 5229; LINUX-32-STATIC-NEXT: movl %eax, ptr 5230; LINUX-32-STATIC-NEXT: retl 5231; 5232; LINUX-32-PIC-LABEL: big01: 5233; LINUX-32-PIC: # %bb.0: # %entry 5234; LINUX-32-PIC-NEXT: calll .L58$pb 5235; LINUX-32-PIC-NEXT: .L58$pb: 5236; LINUX-32-PIC-NEXT: popl %eax 5237; LINUX-32-PIC-NEXT: .Ltmp58: 5238; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax 5239; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5240; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx 5241; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5242; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 5243; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 5244; LINUX-32-PIC-NEXT: retl 5245; 5246; LINUX-64-PIC-LABEL: big01: 5247; LINUX-64-PIC: # %bb.0: # %entry 5248; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 5249; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5250; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5251; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 5252; LINUX-64-PIC-NEXT: retq 5253; 5254; DARWIN-32-STATIC-LABEL: big01: 5255; DARWIN-32-STATIC: ## %bb.0: ## %entry 5256; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5257; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax 5258; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 5259; DARWIN-32-STATIC-NEXT: retl 5260; 5261; DARWIN-32-DYNAMIC-LABEL: big01: 5262; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5263; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5264; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 5265; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 5266; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 5267; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 5268; DARWIN-32-DYNAMIC-NEXT: retl 5269; 5270; DARWIN-32-PIC-LABEL: big01: 5271; DARWIN-32-PIC: ## %bb.0: ## %entry 5272; DARWIN-32-PIC-NEXT: calll L58$pb 5273; DARWIN-32-PIC-NEXT: L58$pb: 5274; DARWIN-32-PIC-NEXT: popl %eax 5275; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5276; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx 5277; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5278; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax 5279; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 5280; DARWIN-32-PIC-NEXT: retl 5281; 5282; DARWIN-64-STATIC-LABEL: big01: 5283; DARWIN-64-STATIC: ## %bb.0: ## %entry 5284; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5285; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5286; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5287; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 5288; DARWIN-64-STATIC-NEXT: retq 5289; 5290; DARWIN-64-DYNAMIC-LABEL: big01: 5291; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5292; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5293; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5294; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5295; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 5296; DARWIN-64-DYNAMIC-NEXT: retq 5297; 5298; DARWIN-64-PIC-LABEL: big01: 5299; DARWIN-64-PIC: ## %bb.0: ## %entry 5300; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5301; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5302; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5303; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 5304; DARWIN-64-PIC-NEXT: retq 5305 5306entry: 5307 %.sum = add i64 %i, 65536 5308 %0 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %.sum 5309 store i32* %0, i32** @ptr, align 8 5310 ret void 5311} 5312 5313define void @big02(i64 %i) nounwind { 5314; LINUX-64-STATIC-LABEL: big02: 5315; LINUX-64-STATIC: # %bb.0: # %entry 5316; LINUX-64-STATIC-NEXT: movl src+262144(,%rdi,4), %eax 5317; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rcx 5318; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5319; LINUX-64-STATIC-NEXT: retq 5320; 5321; LINUX-32-STATIC-LABEL: big02: 5322; LINUX-32-STATIC: # %bb.0: # %entry 5323; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5324; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx 5325; LINUX-32-STATIC-NEXT: movl ptr, %edx 5326; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5327; LINUX-32-STATIC-NEXT: retl 5328; 5329; LINUX-32-PIC-LABEL: big02: 5330; LINUX-32-PIC: # %bb.0: # %entry 5331; LINUX-32-PIC-NEXT: calll .L59$pb 5332; LINUX-32-PIC-NEXT: .L59$pb: 5333; LINUX-32-PIC-NEXT: popl %eax 5334; LINUX-32-PIC-NEXT: .Ltmp59: 5335; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax 5336; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5337; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 5338; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5339; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 5340; LINUX-32-PIC-NEXT: movl (%eax), %eax 5341; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5342; LINUX-32-PIC-NEXT: retl 5343; 5344; LINUX-64-PIC-LABEL: big02: 5345; LINUX-64-PIC: # %bb.0: # %entry 5346; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 5347; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5348; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5349; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 5350; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5351; LINUX-64-PIC-NEXT: retq 5352; 5353; DARWIN-32-STATIC-LABEL: big02: 5354; DARWIN-32-STATIC: ## %bb.0: ## %entry 5355; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5356; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx 5357; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 5358; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5359; DARWIN-32-STATIC-NEXT: retl 5360; 5361; DARWIN-32-DYNAMIC-LABEL: big02: 5362; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5363; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5364; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 5365; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx 5366; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 5367; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 5368; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5369; DARWIN-32-DYNAMIC-NEXT: retl 5370; 5371; DARWIN-32-PIC-LABEL: big02: 5372; DARWIN-32-PIC: ## %bb.0: ## %entry 5373; DARWIN-32-PIC-NEXT: calll L59$pb 5374; DARWIN-32-PIC-NEXT: L59$pb: 5375; DARWIN-32-PIC-NEXT: popl %eax 5376; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5377; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb(%eax), %edx 5378; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5379; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax 5380; DARWIN-32-PIC-NEXT: movl (%eax), %eax 5381; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5382; DARWIN-32-PIC-NEXT: retl 5383; 5384; DARWIN-64-STATIC-LABEL: big02: 5385; DARWIN-64-STATIC: ## %bb.0: ## %entry 5386; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5387; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5388; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5389; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 5390; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5391; DARWIN-64-STATIC-NEXT: retq 5392; 5393; DARWIN-64-DYNAMIC-LABEL: big02: 5394; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5395; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5396; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5397; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5398; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 5399; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5400; DARWIN-64-DYNAMIC-NEXT: retq 5401; 5402; DARWIN-64-PIC-LABEL: big02: 5403; DARWIN-64-PIC: ## %bb.0: ## %entry 5404; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5405; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5406; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5407; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 5408; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5409; DARWIN-64-PIC-NEXT: retq 5410 5411entry: 5412 %0 = load i32*, i32** @ptr, align 8 5413 %1 = add i64 %i, 65536 5414 %2 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %1 5415 %3 = load i32, i32* %2, align 4 5416 %4 = getelementptr i32, i32* %0, i64 %1 5417 store i32 %3, i32* %4, align 4 5418 ret void 5419} 5420 5421define void @big03(i64 %i) nounwind { 5422; LINUX-64-STATIC-LABEL: big03: 5423; LINUX-64-STATIC: # %bb.0: # %entry 5424; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax 5425; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(,%rdi,4) 5426; LINUX-64-STATIC-NEXT: retq 5427; 5428; LINUX-32-STATIC-LABEL: big03: 5429; LINUX-32-STATIC: # %bb.0: # %entry 5430; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5431; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx 5432; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4) 5433; LINUX-32-STATIC-NEXT: retl 5434; 5435; LINUX-32-PIC-LABEL: big03: 5436; LINUX-32-PIC: # %bb.0: # %entry 5437; LINUX-32-PIC-NEXT: calll .L60$pb 5438; LINUX-32-PIC-NEXT: .L60$pb: 5439; LINUX-32-PIC-NEXT: popl %eax 5440; LINUX-32-PIC-NEXT: .Ltmp60: 5441; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax 5442; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5443; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx 5444; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5445; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 5446; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5447; LINUX-32-PIC-NEXT: retl 5448; 5449; LINUX-64-PIC-LABEL: big03: 5450; LINUX-64-PIC: # %bb.0: # %entry 5451; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 5452; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5453; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rcx 5454; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5455; LINUX-64-PIC-NEXT: retq 5456; 5457; DARWIN-32-STATIC-LABEL: big03: 5458; DARWIN-32-STATIC: ## %bb.0: ## %entry 5459; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5460; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5461; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4) 5462; DARWIN-32-STATIC-NEXT: retl 5463; 5464; DARWIN-32-DYNAMIC-LABEL: big03: 5465; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5466; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5467; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5468; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4) 5469; DARWIN-32-DYNAMIC-NEXT: retl 5470; 5471; DARWIN-32-PIC-LABEL: big03: 5472; DARWIN-32-PIC: ## %bb.0: ## %entry 5473; DARWIN-32-PIC-NEXT: calll L60$pb 5474; DARWIN-32-PIC-NEXT: L60$pb: 5475; DARWIN-32-PIC-NEXT: popl %eax 5476; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5477; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx 5478; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4) 5479; DARWIN-32-PIC-NEXT: retl 5480; 5481; DARWIN-64-STATIC-LABEL: big03: 5482; DARWIN-64-STATIC: ## %bb.0: ## %entry 5483; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 5484; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5485; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 5486; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5487; DARWIN-64-STATIC-NEXT: retq 5488; 5489; DARWIN-64-DYNAMIC-LABEL: big03: 5490; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5491; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 5492; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5493; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 5494; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5495; DARWIN-64-DYNAMIC-NEXT: retq 5496; 5497; DARWIN-64-PIC-LABEL: big03: 5498; DARWIN-64-PIC: ## %bb.0: ## %entry 5499; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 5500; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5501; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 5502; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5503; DARWIN-64-PIC-NEXT: retq 5504 5505entry: 5506 %0 = add i64 %i, 65536 5507 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 5508 %2 = load i32, i32* %1, align 4 5509 %3 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 5510 store i32 %2, i32* %3, align 4 5511 ret void 5512} 5513 5514define void @big04(i64 %i) nounwind { 5515; LINUX-64-STATIC-LABEL: big04: 5516; LINUX-64-STATIC: # %bb.0: # %entry 5517; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax 5518; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 5519; LINUX-64-STATIC-NEXT: retq 5520; 5521; LINUX-32-STATIC-LABEL: big04: 5522; LINUX-32-STATIC: # %bb.0: # %entry 5523; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5524; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax 5525; LINUX-32-STATIC-NEXT: movl %eax, dptr 5526; LINUX-32-STATIC-NEXT: retl 5527; 5528; LINUX-32-PIC-LABEL: big04: 5529; LINUX-32-PIC: # %bb.0: # %entry 5530; LINUX-32-PIC-NEXT: calll .L61$pb 5531; LINUX-32-PIC-NEXT: .L61$pb: 5532; LINUX-32-PIC-NEXT: popl %eax 5533; LINUX-32-PIC-NEXT: .Ltmp61: 5534; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax 5535; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5536; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %edx 5537; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5538; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 5539; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 5540; LINUX-32-PIC-NEXT: retl 5541; 5542; LINUX-64-PIC-LABEL: big04: 5543; LINUX-64-PIC: # %bb.0: # %entry 5544; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 5545; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5546; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 5547; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 5548; LINUX-64-PIC-NEXT: retq 5549; 5550; DARWIN-32-STATIC-LABEL: big04: 5551; DARWIN-32-STATIC: ## %bb.0: ## %entry 5552; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5553; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax 5554; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 5555; DARWIN-32-STATIC-NEXT: retl 5556; 5557; DARWIN-32-DYNAMIC-LABEL: big04: 5558; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5559; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5560; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax 5561; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 5562; DARWIN-32-DYNAMIC-NEXT: retl 5563; 5564; DARWIN-32-PIC-LABEL: big04: 5565; DARWIN-32-PIC: ## %bb.0: ## %entry 5566; DARWIN-32-PIC-NEXT: calll L61$pb 5567; DARWIN-32-PIC-NEXT: L61$pb: 5568; DARWIN-32-PIC-NEXT: popl %eax 5569; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5570; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx 5571; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax) 5572; DARWIN-32-PIC-NEXT: retl 5573; 5574; DARWIN-64-STATIC-LABEL: big04: 5575; DARWIN-64-STATIC: ## %bb.0: ## %entry 5576; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 5577; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5578; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 5579; DARWIN-64-STATIC-NEXT: retq 5580; 5581; DARWIN-64-DYNAMIC-LABEL: big04: 5582; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5583; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 5584; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5585; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 5586; DARWIN-64-DYNAMIC-NEXT: retq 5587; 5588; DARWIN-64-PIC-LABEL: big04: 5589; DARWIN-64-PIC: ## %bb.0: ## %entry 5590; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 5591; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5592; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 5593; DARWIN-64-PIC-NEXT: retq 5594 5595entry: 5596 %.sum = add i64 %i, 65536 5597 %0 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %.sum 5598 store i32* %0, i32** @dptr, align 8 5599 ret void 5600} 5601 5602define void @big05(i64 %i) nounwind { 5603; LINUX-64-STATIC-LABEL: big05: 5604; LINUX-64-STATIC: # %bb.0: # %entry 5605; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax 5606; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 5607; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5608; LINUX-64-STATIC-NEXT: retq 5609; 5610; LINUX-32-STATIC-LABEL: big05: 5611; LINUX-32-STATIC: # %bb.0: # %entry 5612; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5613; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx 5614; LINUX-32-STATIC-NEXT: movl dptr, %edx 5615; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5616; LINUX-32-STATIC-NEXT: retl 5617; 5618; LINUX-32-PIC-LABEL: big05: 5619; LINUX-32-PIC: # %bb.0: # %entry 5620; LINUX-32-PIC-NEXT: calll .L62$pb 5621; LINUX-32-PIC-NEXT: .L62$pb: 5622; LINUX-32-PIC-NEXT: popl %eax 5623; LINUX-32-PIC-NEXT: .Ltmp62: 5624; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax 5625; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5626; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %edx 5627; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5628; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 5629; LINUX-32-PIC-NEXT: movl (%eax), %eax 5630; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5631; LINUX-32-PIC-NEXT: retl 5632; 5633; LINUX-64-PIC-LABEL: big05: 5634; LINUX-64-PIC: # %bb.0: # %entry 5635; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 5636; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5637; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 5638; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 5639; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5640; LINUX-64-PIC-NEXT: retq 5641; 5642; DARWIN-32-STATIC-LABEL: big05: 5643; DARWIN-32-STATIC: ## %bb.0: ## %entry 5644; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5645; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5646; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 5647; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5648; DARWIN-32-STATIC-NEXT: retl 5649; 5650; DARWIN-32-DYNAMIC-LABEL: big05: 5651; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5652; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5653; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5654; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 5655; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5656; DARWIN-32-DYNAMIC-NEXT: retl 5657; 5658; DARWIN-32-PIC-LABEL: big05: 5659; DARWIN-32-PIC: ## %bb.0: ## %entry 5660; DARWIN-32-PIC-NEXT: calll L62$pb 5661; DARWIN-32-PIC-NEXT: L62$pb: 5662; DARWIN-32-PIC-NEXT: popl %eax 5663; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5664; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx 5665; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax 5666; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5667; DARWIN-32-PIC-NEXT: retl 5668; 5669; DARWIN-64-STATIC-LABEL: big05: 5670; DARWIN-64-STATIC: ## %bb.0: ## %entry 5671; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 5672; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5673; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 5674; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5675; DARWIN-64-STATIC-NEXT: retq 5676; 5677; DARWIN-64-DYNAMIC-LABEL: big05: 5678; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5679; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 5680; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5681; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 5682; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5683; DARWIN-64-DYNAMIC-NEXT: retq 5684; 5685; DARWIN-64-PIC-LABEL: big05: 5686; DARWIN-64-PIC: ## %bb.0: ## %entry 5687; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 5688; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5689; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 5690; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5691; DARWIN-64-PIC-NEXT: retq 5692 5693entry: 5694 %0 = load i32*, i32** @dptr, align 8 5695 %1 = add i64 %i, 65536 5696 %2 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %1 5697 %3 = load i32, i32* %2, align 4 5698 %4 = getelementptr i32, i32* %0, i64 %1 5699 store i32 %3, i32* %4, align 4 5700 ret void 5701} 5702 5703define void @big06(i64 %i) nounwind { 5704; LINUX-64-STATIC-LABEL: big06: 5705; LINUX-64-STATIC: # %bb.0: # %entry 5706; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax 5707; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(,%rdi,4) 5708; LINUX-64-STATIC-NEXT: retq 5709; 5710; LINUX-32-STATIC-LABEL: big06: 5711; LINUX-32-STATIC: # %bb.0: # %entry 5712; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5713; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx 5714; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4) 5715; LINUX-32-STATIC-NEXT: retl 5716; 5717; LINUX-32-PIC-LABEL: big06: 5718; LINUX-32-PIC: # %bb.0: # %entry 5719; LINUX-32-PIC-NEXT: calll .L63$pb 5720; LINUX-32-PIC-NEXT: .L63$pb: 5721; LINUX-32-PIC-NEXT: popl %eax 5722; LINUX-32-PIC-NEXT: .Ltmp63: 5723; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax 5724; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5725; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx 5726; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4) 5727; LINUX-32-PIC-NEXT: retl 5728; 5729; LINUX-64-PIC-LABEL: big06: 5730; LINUX-64-PIC: # %bb.0: # %entry 5731; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 5732; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5733; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 5734; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5735; LINUX-64-PIC-NEXT: retq 5736; 5737; DARWIN-32-STATIC-LABEL: big06: 5738; DARWIN-32-STATIC: ## %bb.0: ## %entry 5739; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5740; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5741; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4) 5742; DARWIN-32-STATIC-NEXT: retl 5743; 5744; DARWIN-32-DYNAMIC-LABEL: big06: 5745; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5746; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5747; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5748; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4) 5749; DARWIN-32-DYNAMIC-NEXT: retl 5750; 5751; DARWIN-32-PIC-LABEL: big06: 5752; DARWIN-32-PIC: ## %bb.0: ## %entry 5753; DARWIN-32-PIC-NEXT: calll L63$pb 5754; DARWIN-32-PIC-NEXT: L63$pb: 5755; DARWIN-32-PIC-NEXT: popl %eax 5756; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5757; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx 5758; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4) 5759; DARWIN-32-PIC-NEXT: retl 5760; 5761; DARWIN-64-STATIC-LABEL: big06: 5762; DARWIN-64-STATIC: ## %bb.0: ## %entry 5763; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 5764; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5765; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 5766; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5767; DARWIN-64-STATIC-NEXT: retq 5768; 5769; DARWIN-64-DYNAMIC-LABEL: big06: 5770; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5771; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 5772; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5773; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 5774; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5775; DARWIN-64-DYNAMIC-NEXT: retq 5776; 5777; DARWIN-64-PIC-LABEL: big06: 5778; DARWIN-64-PIC: ## %bb.0: ## %entry 5779; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 5780; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5781; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 5782; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5783; DARWIN-64-PIC-NEXT: retq 5784 5785entry: 5786 %0 = add i64 %i, 65536 5787 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 5788 %2 = load i32, i32* %1, align 4 5789 %3 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 5790 store i32 %2, i32* %3, align 4 5791 ret void 5792} 5793 5794define void @big07(i64 %i) nounwind { 5795; LINUX-64-STATIC-LABEL: big07: 5796; LINUX-64-STATIC: # %bb.0: # %entry 5797; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax 5798; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 5799; LINUX-64-STATIC-NEXT: retq 5800; 5801; LINUX-32-STATIC-LABEL: big07: 5802; LINUX-32-STATIC: # %bb.0: # %entry 5803; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5804; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax 5805; LINUX-32-STATIC-NEXT: movl %eax, lptr 5806; LINUX-32-STATIC-NEXT: retl 5807; 5808; LINUX-32-PIC-LABEL: big07: 5809; LINUX-32-PIC: # %bb.0: # %entry 5810; LINUX-32-PIC-NEXT: calll .L64$pb 5811; LINUX-32-PIC-NEXT: .L64$pb: 5812; LINUX-32-PIC-NEXT: popl %eax 5813; LINUX-32-PIC-NEXT: .Ltmp64: 5814; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax 5815; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5816; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx 5817; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 5818; LINUX-32-PIC-NEXT: retl 5819; 5820; LINUX-64-PIC-LABEL: big07: 5821; LINUX-64-PIC: # %bb.0: # %entry 5822; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 5823; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5824; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 5825; LINUX-64-PIC-NEXT: retq 5826; 5827; DARWIN-32-STATIC-LABEL: big07: 5828; DARWIN-32-STATIC: ## %bb.0: ## %entry 5829; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5830; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax 5831; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 5832; DARWIN-32-STATIC-NEXT: retl 5833; 5834; DARWIN-32-DYNAMIC-LABEL: big07: 5835; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5836; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5837; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax 5838; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 5839; DARWIN-32-DYNAMIC-NEXT: retl 5840; 5841; DARWIN-32-PIC-LABEL: big07: 5842; DARWIN-32-PIC: ## %bb.0: ## %entry 5843; DARWIN-32-PIC-NEXT: calll L64$pb 5844; DARWIN-32-PIC-NEXT: L64$pb: 5845; DARWIN-32-PIC-NEXT: popl %eax 5846; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5847; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx 5848; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax) 5849; DARWIN-32-PIC-NEXT: retl 5850; 5851; DARWIN-64-STATIC-LABEL: big07: 5852; DARWIN-64-STATIC: ## %bb.0: ## %entry 5853; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 5854; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5855; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 5856; DARWIN-64-STATIC-NEXT: retq 5857; 5858; DARWIN-64-DYNAMIC-LABEL: big07: 5859; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5860; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 5861; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5862; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 5863; DARWIN-64-DYNAMIC-NEXT: retq 5864; 5865; DARWIN-64-PIC-LABEL: big07: 5866; DARWIN-64-PIC: ## %bb.0: ## %entry 5867; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 5868; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5869; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 5870; DARWIN-64-PIC-NEXT: retq 5871 5872entry: 5873 %.sum = add i64 %i, 65536 5874 %0 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %.sum 5875 store i32* %0, i32** @lptr, align 8 5876 ret void 5877} 5878 5879define void @big08(i64 %i) nounwind { 5880; LINUX-64-STATIC-LABEL: big08: 5881; LINUX-64-STATIC: # %bb.0: # %entry 5882; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax 5883; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 5884; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5885; LINUX-64-STATIC-NEXT: retq 5886; 5887; LINUX-32-STATIC-LABEL: big08: 5888; LINUX-32-STATIC: # %bb.0: # %entry 5889; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5890; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx 5891; LINUX-32-STATIC-NEXT: movl lptr, %edx 5892; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5893; LINUX-32-STATIC-NEXT: retl 5894; 5895; LINUX-32-PIC-LABEL: big08: 5896; LINUX-32-PIC: # %bb.0: # %entry 5897; LINUX-32-PIC-NEXT: calll .L65$pb 5898; LINUX-32-PIC-NEXT: .L65$pb: 5899; LINUX-32-PIC-NEXT: popl %eax 5900; LINUX-32-PIC-NEXT: .Ltmp65: 5901; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax 5902; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5903; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx 5904; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 5905; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5906; LINUX-32-PIC-NEXT: retl 5907; 5908; LINUX-64-PIC-LABEL: big08: 5909; LINUX-64-PIC: # %bb.0: # %entry 5910; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 5911; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5912; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 5913; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5914; LINUX-64-PIC-NEXT: retq 5915; 5916; DARWIN-32-STATIC-LABEL: big08: 5917; DARWIN-32-STATIC: ## %bb.0: ## %entry 5918; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5919; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5920; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 5921; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5922; DARWIN-32-STATIC-NEXT: retl 5923; 5924; DARWIN-32-DYNAMIC-LABEL: big08: 5925; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5926; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5927; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5928; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 5929; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5930; DARWIN-32-DYNAMIC-NEXT: retl 5931; 5932; DARWIN-32-PIC-LABEL: big08: 5933; DARWIN-32-PIC: ## %bb.0: ## %entry 5934; DARWIN-32-PIC-NEXT: calll L65$pb 5935; DARWIN-32-PIC-NEXT: L65$pb: 5936; DARWIN-32-PIC-NEXT: popl %eax 5937; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5938; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx 5939; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax 5940; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5941; DARWIN-32-PIC-NEXT: retl 5942; 5943; DARWIN-64-STATIC-LABEL: big08: 5944; DARWIN-64-STATIC: ## %bb.0: ## %entry 5945; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 5946; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5947; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 5948; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5949; DARWIN-64-STATIC-NEXT: retq 5950; 5951; DARWIN-64-DYNAMIC-LABEL: big08: 5952; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5953; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 5954; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5955; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 5956; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5957; DARWIN-64-DYNAMIC-NEXT: retq 5958; 5959; DARWIN-64-PIC-LABEL: big08: 5960; DARWIN-64-PIC: ## %bb.0: ## %entry 5961; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 5962; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5963; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 5964; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5965; DARWIN-64-PIC-NEXT: retq 5966 5967entry: 5968 %0 = load i32*, i32** @lptr, align 8 5969 %1 = add i64 %i, 65536 5970 %2 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %1 5971 %3 = load i32, i32* %2, align 4 5972 %4 = getelementptr i32, i32* %0, i64 %1 5973 store i32 %3, i32* %4, align 4 5974 ret void 5975} 5976 5977define i8* @bar00() nounwind { 5978; LINUX-64-STATIC-LABEL: bar00: 5979; LINUX-64-STATIC: # %bb.0: # %entry 5980; LINUX-64-STATIC-NEXT: movl $src, %eax 5981; LINUX-64-STATIC-NEXT: retq 5982; 5983; LINUX-32-STATIC-LABEL: bar00: 5984; LINUX-32-STATIC: # %bb.0: # %entry 5985; LINUX-32-STATIC-NEXT: movl $src, %eax 5986; LINUX-32-STATIC-NEXT: retl 5987; 5988; LINUX-32-PIC-LABEL: bar00: 5989; LINUX-32-PIC: # %bb.0: # %entry 5990; LINUX-32-PIC-NEXT: calll .L66$pb 5991; LINUX-32-PIC-NEXT: .L66$pb: 5992; LINUX-32-PIC-NEXT: popl %eax 5993; LINUX-32-PIC-NEXT: .Ltmp66: 5994; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax 5995; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 5996; LINUX-32-PIC-NEXT: retl 5997; 5998; LINUX-64-PIC-LABEL: bar00: 5999; LINUX-64-PIC: # %bb.0: # %entry 6000; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 6001; LINUX-64-PIC-NEXT: retq 6002; 6003; DARWIN-32-STATIC-LABEL: bar00: 6004; DARWIN-32-STATIC: ## %bb.0: ## %entry 6005; DARWIN-32-STATIC-NEXT: movl $_src, %eax 6006; DARWIN-32-STATIC-NEXT: retl 6007; 6008; DARWIN-32-DYNAMIC-LABEL: bar00: 6009; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6010; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 6011; DARWIN-32-DYNAMIC-NEXT: retl 6012; 6013; DARWIN-32-PIC-LABEL: bar00: 6014; DARWIN-32-PIC: ## %bb.0: ## %entry 6015; DARWIN-32-PIC-NEXT: calll L66$pb 6016; DARWIN-32-PIC-NEXT: L66$pb: 6017; DARWIN-32-PIC-NEXT: popl %eax 6018; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb(%eax), %eax 6019; DARWIN-32-PIC-NEXT: retl 6020; 6021; DARWIN-64-STATIC-LABEL: bar00: 6022; DARWIN-64-STATIC: ## %bb.0: ## %entry 6023; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6024; DARWIN-64-STATIC-NEXT: retq 6025; 6026; DARWIN-64-DYNAMIC-LABEL: bar00: 6027; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6028; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6029; DARWIN-64-DYNAMIC-NEXT: retq 6030; 6031; DARWIN-64-PIC-LABEL: bar00: 6032; DARWIN-64-PIC: ## %bb.0: ## %entry 6033; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6034; DARWIN-64-PIC-NEXT: retq 6035 6036entry: 6037 ret i8* bitcast ([131072 x i32]* @src to i8*) 6038} 6039 6040define i8* @bxr00() nounwind { 6041; LINUX-64-STATIC-LABEL: bxr00: 6042; LINUX-64-STATIC: # %bb.0: # %entry 6043; LINUX-64-STATIC-NEXT: movl $xsrc, %eax 6044; LINUX-64-STATIC-NEXT: retq 6045; 6046; LINUX-32-STATIC-LABEL: bxr00: 6047; LINUX-32-STATIC: # %bb.0: # %entry 6048; LINUX-32-STATIC-NEXT: movl $xsrc, %eax 6049; LINUX-32-STATIC-NEXT: retl 6050; 6051; LINUX-32-PIC-LABEL: bxr00: 6052; LINUX-32-PIC: # %bb.0: # %entry 6053; LINUX-32-PIC-NEXT: calll .L67$pb 6054; LINUX-32-PIC-NEXT: .L67$pb: 6055; LINUX-32-PIC-NEXT: popl %eax 6056; LINUX-32-PIC-NEXT: .Ltmp67: 6057; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax 6058; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 6059; LINUX-32-PIC-NEXT: retl 6060; 6061; LINUX-64-PIC-LABEL: bxr00: 6062; LINUX-64-PIC: # %bb.0: # %entry 6063; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6064; LINUX-64-PIC-NEXT: retq 6065; 6066; DARWIN-32-STATIC-LABEL: bxr00: 6067; DARWIN-32-STATIC: ## %bb.0: ## %entry 6068; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax 6069; DARWIN-32-STATIC-NEXT: retl 6070; 6071; DARWIN-32-DYNAMIC-LABEL: bxr00: 6072; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6073; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 6074; DARWIN-32-DYNAMIC-NEXT: retl 6075; 6076; DARWIN-32-PIC-LABEL: bxr00: 6077; DARWIN-32-PIC: ## %bb.0: ## %entry 6078; DARWIN-32-PIC-NEXT: calll L67$pb 6079; DARWIN-32-PIC-NEXT: L67$pb: 6080; DARWIN-32-PIC-NEXT: popl %eax 6081; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax 6082; DARWIN-32-PIC-NEXT: retl 6083; 6084; DARWIN-64-STATIC-LABEL: bxr00: 6085; DARWIN-64-STATIC: ## %bb.0: ## %entry 6086; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6087; DARWIN-64-STATIC-NEXT: retq 6088; 6089; DARWIN-64-DYNAMIC-LABEL: bxr00: 6090; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6091; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6092; DARWIN-64-DYNAMIC-NEXT: retq 6093; 6094; DARWIN-64-PIC-LABEL: bxr00: 6095; DARWIN-64-PIC: ## %bb.0: ## %entry 6096; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6097; DARWIN-64-PIC-NEXT: retq 6098 6099entry: 6100 ret i8* bitcast ([32 x i32]* @xsrc to i8*) 6101} 6102 6103define i8* @bar01() nounwind { 6104; LINUX-64-STATIC-LABEL: bar01: 6105; LINUX-64-STATIC: # %bb.0: # %entry 6106; LINUX-64-STATIC-NEXT: movl $dst, %eax 6107; LINUX-64-STATIC-NEXT: retq 6108; 6109; LINUX-32-STATIC-LABEL: bar01: 6110; LINUX-32-STATIC: # %bb.0: # %entry 6111; LINUX-32-STATIC-NEXT: movl $dst, %eax 6112; LINUX-32-STATIC-NEXT: retl 6113; 6114; LINUX-32-PIC-LABEL: bar01: 6115; LINUX-32-PIC: # %bb.0: # %entry 6116; LINUX-32-PIC-NEXT: calll .L68$pb 6117; LINUX-32-PIC-NEXT: .L68$pb: 6118; LINUX-32-PIC-NEXT: popl %eax 6119; LINUX-32-PIC-NEXT: .Ltmp68: 6120; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax 6121; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 6122; LINUX-32-PIC-NEXT: retl 6123; 6124; LINUX-64-PIC-LABEL: bar01: 6125; LINUX-64-PIC: # %bb.0: # %entry 6126; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6127; LINUX-64-PIC-NEXT: retq 6128; 6129; DARWIN-32-STATIC-LABEL: bar01: 6130; DARWIN-32-STATIC: ## %bb.0: ## %entry 6131; DARWIN-32-STATIC-NEXT: movl $_dst, %eax 6132; DARWIN-32-STATIC-NEXT: retl 6133; 6134; DARWIN-32-DYNAMIC-LABEL: bar01: 6135; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6136; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 6137; DARWIN-32-DYNAMIC-NEXT: retl 6138; 6139; DARWIN-32-PIC-LABEL: bar01: 6140; DARWIN-32-PIC: ## %bb.0: ## %entry 6141; DARWIN-32-PIC-NEXT: calll L68$pb 6142; DARWIN-32-PIC-NEXT: L68$pb: 6143; DARWIN-32-PIC-NEXT: popl %eax 6144; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax 6145; DARWIN-32-PIC-NEXT: retl 6146; 6147; DARWIN-64-STATIC-LABEL: bar01: 6148; DARWIN-64-STATIC: ## %bb.0: ## %entry 6149; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6150; DARWIN-64-STATIC-NEXT: retq 6151; 6152; DARWIN-64-DYNAMIC-LABEL: bar01: 6153; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6154; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6155; DARWIN-64-DYNAMIC-NEXT: retq 6156; 6157; DARWIN-64-PIC-LABEL: bar01: 6158; DARWIN-64-PIC: ## %bb.0: ## %entry 6159; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6160; DARWIN-64-PIC-NEXT: retq 6161 6162entry: 6163 ret i8* bitcast ([131072 x i32]* @dst to i8*) 6164} 6165 6166define i8* @bxr01() nounwind { 6167; LINUX-64-STATIC-LABEL: bxr01: 6168; LINUX-64-STATIC: # %bb.0: # %entry 6169; LINUX-64-STATIC-NEXT: movl $xdst, %eax 6170; LINUX-64-STATIC-NEXT: retq 6171; 6172; LINUX-32-STATIC-LABEL: bxr01: 6173; LINUX-32-STATIC: # %bb.0: # %entry 6174; LINUX-32-STATIC-NEXT: movl $xdst, %eax 6175; LINUX-32-STATIC-NEXT: retl 6176; 6177; LINUX-32-PIC-LABEL: bxr01: 6178; LINUX-32-PIC: # %bb.0: # %entry 6179; LINUX-32-PIC-NEXT: calll .L69$pb 6180; LINUX-32-PIC-NEXT: .L69$pb: 6181; LINUX-32-PIC-NEXT: popl %eax 6182; LINUX-32-PIC-NEXT: .Ltmp69: 6183; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax 6184; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 6185; LINUX-32-PIC-NEXT: retl 6186; 6187; LINUX-64-PIC-LABEL: bxr01: 6188; LINUX-64-PIC: # %bb.0: # %entry 6189; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6190; LINUX-64-PIC-NEXT: retq 6191; 6192; DARWIN-32-STATIC-LABEL: bxr01: 6193; DARWIN-32-STATIC: ## %bb.0: ## %entry 6194; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax 6195; DARWIN-32-STATIC-NEXT: retl 6196; 6197; DARWIN-32-DYNAMIC-LABEL: bxr01: 6198; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6199; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 6200; DARWIN-32-DYNAMIC-NEXT: retl 6201; 6202; DARWIN-32-PIC-LABEL: bxr01: 6203; DARWIN-32-PIC: ## %bb.0: ## %entry 6204; DARWIN-32-PIC-NEXT: calll L69$pb 6205; DARWIN-32-PIC-NEXT: L69$pb: 6206; DARWIN-32-PIC-NEXT: popl %eax 6207; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax 6208; DARWIN-32-PIC-NEXT: retl 6209; 6210; DARWIN-64-STATIC-LABEL: bxr01: 6211; DARWIN-64-STATIC: ## %bb.0: ## %entry 6212; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6213; DARWIN-64-STATIC-NEXT: retq 6214; 6215; DARWIN-64-DYNAMIC-LABEL: bxr01: 6216; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6217; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6218; DARWIN-64-DYNAMIC-NEXT: retq 6219; 6220; DARWIN-64-PIC-LABEL: bxr01: 6221; DARWIN-64-PIC: ## %bb.0: ## %entry 6222; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6223; DARWIN-64-PIC-NEXT: retq 6224 6225entry: 6226 ret i8* bitcast ([32 x i32]* @xdst to i8*) 6227} 6228 6229define i8* @bar02() nounwind { 6230; LINUX-64-STATIC-LABEL: bar02: 6231; LINUX-64-STATIC: # %bb.0: # %entry 6232; LINUX-64-STATIC-NEXT: movl $ptr, %eax 6233; LINUX-64-STATIC-NEXT: retq 6234; 6235; LINUX-32-STATIC-LABEL: bar02: 6236; LINUX-32-STATIC: # %bb.0: # %entry 6237; LINUX-32-STATIC-NEXT: movl $ptr, %eax 6238; LINUX-32-STATIC-NEXT: retl 6239; 6240; LINUX-32-PIC-LABEL: bar02: 6241; LINUX-32-PIC: # %bb.0: # %entry 6242; LINUX-32-PIC-NEXT: calll .L70$pb 6243; LINUX-32-PIC-NEXT: .L70$pb: 6244; LINUX-32-PIC-NEXT: popl %eax 6245; LINUX-32-PIC-NEXT: .Ltmp70: 6246; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax 6247; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 6248; LINUX-32-PIC-NEXT: retl 6249; 6250; LINUX-64-PIC-LABEL: bar02: 6251; LINUX-64-PIC: # %bb.0: # %entry 6252; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6253; LINUX-64-PIC-NEXT: retq 6254; 6255; DARWIN-32-STATIC-LABEL: bar02: 6256; DARWIN-32-STATIC: ## %bb.0: ## %entry 6257; DARWIN-32-STATIC-NEXT: movl $_ptr, %eax 6258; DARWIN-32-STATIC-NEXT: retl 6259; 6260; DARWIN-32-DYNAMIC-LABEL: bar02: 6261; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6262; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 6263; DARWIN-32-DYNAMIC-NEXT: retl 6264; 6265; DARWIN-32-PIC-LABEL: bar02: 6266; DARWIN-32-PIC: ## %bb.0: ## %entry 6267; DARWIN-32-PIC-NEXT: calll L70$pb 6268; DARWIN-32-PIC-NEXT: L70$pb: 6269; DARWIN-32-PIC-NEXT: popl %eax 6270; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax 6271; DARWIN-32-PIC-NEXT: retl 6272; 6273; DARWIN-64-STATIC-LABEL: bar02: 6274; DARWIN-64-STATIC: ## %bb.0: ## %entry 6275; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6276; DARWIN-64-STATIC-NEXT: retq 6277; 6278; DARWIN-64-DYNAMIC-LABEL: bar02: 6279; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6280; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6281; DARWIN-64-DYNAMIC-NEXT: retq 6282; 6283; DARWIN-64-PIC-LABEL: bar02: 6284; DARWIN-64-PIC: ## %bb.0: ## %entry 6285; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6286; DARWIN-64-PIC-NEXT: retq 6287 6288entry: 6289 ret i8* bitcast (i32** @ptr to i8*) 6290} 6291 6292define i8* @bar03() nounwind { 6293; LINUX-64-STATIC-LABEL: bar03: 6294; LINUX-64-STATIC: # %bb.0: # %entry 6295; LINUX-64-STATIC-NEXT: movl $dsrc, %eax 6296; LINUX-64-STATIC-NEXT: retq 6297; 6298; LINUX-32-STATIC-LABEL: bar03: 6299; LINUX-32-STATIC: # %bb.0: # %entry 6300; LINUX-32-STATIC-NEXT: movl $dsrc, %eax 6301; LINUX-32-STATIC-NEXT: retl 6302; 6303; LINUX-32-PIC-LABEL: bar03: 6304; LINUX-32-PIC: # %bb.0: # %entry 6305; LINUX-32-PIC-NEXT: calll .L71$pb 6306; LINUX-32-PIC-NEXT: .L71$pb: 6307; LINUX-32-PIC-NEXT: popl %eax 6308; LINUX-32-PIC-NEXT: .Ltmp71: 6309; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax 6310; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax 6311; LINUX-32-PIC-NEXT: retl 6312; 6313; LINUX-64-PIC-LABEL: bar03: 6314; LINUX-64-PIC: # %bb.0: # %entry 6315; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 6316; LINUX-64-PIC-NEXT: retq 6317; 6318; DARWIN-32-STATIC-LABEL: bar03: 6319; DARWIN-32-STATIC: ## %bb.0: ## %entry 6320; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax 6321; DARWIN-32-STATIC-NEXT: retl 6322; 6323; DARWIN-32-DYNAMIC-LABEL: bar03: 6324; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6325; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax 6326; DARWIN-32-DYNAMIC-NEXT: retl 6327; 6328; DARWIN-32-PIC-LABEL: bar03: 6329; DARWIN-32-PIC: ## %bb.0: ## %entry 6330; DARWIN-32-PIC-NEXT: calll L71$pb 6331; DARWIN-32-PIC-NEXT: L71$pb: 6332; DARWIN-32-PIC-NEXT: popl %eax 6333; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb(%eax), %eax 6334; DARWIN-32-PIC-NEXT: retl 6335; 6336; DARWIN-64-STATIC-LABEL: bar03: 6337; DARWIN-64-STATIC: ## %bb.0: ## %entry 6338; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 6339; DARWIN-64-STATIC-NEXT: retq 6340; 6341; DARWIN-64-DYNAMIC-LABEL: bar03: 6342; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6343; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 6344; DARWIN-64-DYNAMIC-NEXT: retq 6345; 6346; DARWIN-64-PIC-LABEL: bar03: 6347; DARWIN-64-PIC: ## %bb.0: ## %entry 6348; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 6349; DARWIN-64-PIC-NEXT: retq 6350 6351entry: 6352 ret i8* bitcast ([131072 x i32]* @dsrc to i8*) 6353} 6354 6355define i8* @bar04() nounwind { 6356; LINUX-64-STATIC-LABEL: bar04: 6357; LINUX-64-STATIC: # %bb.0: # %entry 6358; LINUX-64-STATIC-NEXT: movl $ddst, %eax 6359; LINUX-64-STATIC-NEXT: retq 6360; 6361; LINUX-32-STATIC-LABEL: bar04: 6362; LINUX-32-STATIC: # %bb.0: # %entry 6363; LINUX-32-STATIC-NEXT: movl $ddst, %eax 6364; LINUX-32-STATIC-NEXT: retl 6365; 6366; LINUX-32-PIC-LABEL: bar04: 6367; LINUX-32-PIC: # %bb.0: # %entry 6368; LINUX-32-PIC-NEXT: calll .L72$pb 6369; LINUX-32-PIC-NEXT: .L72$pb: 6370; LINUX-32-PIC-NEXT: popl %eax 6371; LINUX-32-PIC-NEXT: .Ltmp72: 6372; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax 6373; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 6374; LINUX-32-PIC-NEXT: retl 6375; 6376; LINUX-64-PIC-LABEL: bar04: 6377; LINUX-64-PIC: # %bb.0: # %entry 6378; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 6379; LINUX-64-PIC-NEXT: retq 6380; 6381; DARWIN-32-STATIC-LABEL: bar04: 6382; DARWIN-32-STATIC: ## %bb.0: ## %entry 6383; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax 6384; DARWIN-32-STATIC-NEXT: retl 6385; 6386; DARWIN-32-DYNAMIC-LABEL: bar04: 6387; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6388; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax 6389; DARWIN-32-DYNAMIC-NEXT: retl 6390; 6391; DARWIN-32-PIC-LABEL: bar04: 6392; DARWIN-32-PIC: ## %bb.0: ## %entry 6393; DARWIN-32-PIC-NEXT: calll L72$pb 6394; DARWIN-32-PIC-NEXT: L72$pb: 6395; DARWIN-32-PIC-NEXT: popl %eax 6396; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb(%eax), %eax 6397; DARWIN-32-PIC-NEXT: retl 6398; 6399; DARWIN-64-STATIC-LABEL: bar04: 6400; DARWIN-64-STATIC: ## %bb.0: ## %entry 6401; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 6402; DARWIN-64-STATIC-NEXT: retq 6403; 6404; DARWIN-64-DYNAMIC-LABEL: bar04: 6405; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6406; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 6407; DARWIN-64-DYNAMIC-NEXT: retq 6408; 6409; DARWIN-64-PIC-LABEL: bar04: 6410; DARWIN-64-PIC: ## %bb.0: ## %entry 6411; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 6412; DARWIN-64-PIC-NEXT: retq 6413 6414entry: 6415 ret i8* bitcast ([131072 x i32]* @ddst to i8*) 6416} 6417 6418define i8* @bar05() nounwind { 6419; LINUX-64-STATIC-LABEL: bar05: 6420; LINUX-64-STATIC: # %bb.0: # %entry 6421; LINUX-64-STATIC-NEXT: movl $dptr, %eax 6422; LINUX-64-STATIC-NEXT: retq 6423; 6424; LINUX-32-STATIC-LABEL: bar05: 6425; LINUX-32-STATIC: # %bb.0: # %entry 6426; LINUX-32-STATIC-NEXT: movl $dptr, %eax 6427; LINUX-32-STATIC-NEXT: retl 6428; 6429; LINUX-32-PIC-LABEL: bar05: 6430; LINUX-32-PIC: # %bb.0: # %entry 6431; LINUX-32-PIC-NEXT: calll .L73$pb 6432; LINUX-32-PIC-NEXT: .L73$pb: 6433; LINUX-32-PIC-NEXT: popl %eax 6434; LINUX-32-PIC-NEXT: .Ltmp73: 6435; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax 6436; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 6437; LINUX-32-PIC-NEXT: retl 6438; 6439; LINUX-64-PIC-LABEL: bar05: 6440; LINUX-64-PIC: # %bb.0: # %entry 6441; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax 6442; LINUX-64-PIC-NEXT: retq 6443; 6444; DARWIN-32-STATIC-LABEL: bar05: 6445; DARWIN-32-STATIC: ## %bb.0: ## %entry 6446; DARWIN-32-STATIC-NEXT: movl $_dptr, %eax 6447; DARWIN-32-STATIC-NEXT: retl 6448; 6449; DARWIN-32-DYNAMIC-LABEL: bar05: 6450; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6451; DARWIN-32-DYNAMIC-NEXT: movl $_dptr, %eax 6452; DARWIN-32-DYNAMIC-NEXT: retl 6453; 6454; DARWIN-32-PIC-LABEL: bar05: 6455; DARWIN-32-PIC: ## %bb.0: ## %entry 6456; DARWIN-32-PIC-NEXT: calll L73$pb 6457; DARWIN-32-PIC-NEXT: L73$pb: 6458; DARWIN-32-PIC-NEXT: popl %eax 6459; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb(%eax), %eax 6460; DARWIN-32-PIC-NEXT: retl 6461; 6462; DARWIN-64-STATIC-LABEL: bar05: 6463; DARWIN-64-STATIC: ## %bb.0: ## %entry 6464; DARWIN-64-STATIC-NEXT: leaq _dptr(%rip), %rax 6465; DARWIN-64-STATIC-NEXT: retq 6466; 6467; DARWIN-64-DYNAMIC-LABEL: bar05: 6468; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6469; DARWIN-64-DYNAMIC-NEXT: leaq _dptr(%rip), %rax 6470; DARWIN-64-DYNAMIC-NEXT: retq 6471; 6472; DARWIN-64-PIC-LABEL: bar05: 6473; DARWIN-64-PIC: ## %bb.0: ## %entry 6474; DARWIN-64-PIC-NEXT: leaq _dptr(%rip), %rax 6475; DARWIN-64-PIC-NEXT: retq 6476 6477entry: 6478 ret i8* bitcast (i32** @dptr to i8*) 6479} 6480 6481define i8* @bar06() nounwind { 6482; LINUX-64-STATIC-LABEL: bar06: 6483; LINUX-64-STATIC: # %bb.0: # %entry 6484; LINUX-64-STATIC-NEXT: movl $lsrc, %eax 6485; LINUX-64-STATIC-NEXT: retq 6486; 6487; LINUX-32-STATIC-LABEL: bar06: 6488; LINUX-32-STATIC: # %bb.0: # %entry 6489; LINUX-32-STATIC-NEXT: movl $lsrc, %eax 6490; LINUX-32-STATIC-NEXT: retl 6491; 6492; LINUX-32-PIC-LABEL: bar06: 6493; LINUX-32-PIC: # %bb.0: # %entry 6494; LINUX-32-PIC-NEXT: calll .L74$pb 6495; LINUX-32-PIC-NEXT: .L74$pb: 6496; LINUX-32-PIC-NEXT: popl %eax 6497; LINUX-32-PIC-NEXT: .Ltmp74: 6498; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax 6499; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax 6500; LINUX-32-PIC-NEXT: retl 6501; 6502; LINUX-64-PIC-LABEL: bar06: 6503; LINUX-64-PIC: # %bb.0: # %entry 6504; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 6505; LINUX-64-PIC-NEXT: retq 6506; 6507; DARWIN-32-STATIC-LABEL: bar06: 6508; DARWIN-32-STATIC: ## %bb.0: ## %entry 6509; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax 6510; DARWIN-32-STATIC-NEXT: retl 6511; 6512; DARWIN-32-DYNAMIC-LABEL: bar06: 6513; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6514; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax 6515; DARWIN-32-DYNAMIC-NEXT: retl 6516; 6517; DARWIN-32-PIC-LABEL: bar06: 6518; DARWIN-32-PIC: ## %bb.0: ## %entry 6519; DARWIN-32-PIC-NEXT: calll L74$pb 6520; DARWIN-32-PIC-NEXT: L74$pb: 6521; DARWIN-32-PIC-NEXT: popl %eax 6522; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb(%eax), %eax 6523; DARWIN-32-PIC-NEXT: retl 6524; 6525; DARWIN-64-STATIC-LABEL: bar06: 6526; DARWIN-64-STATIC: ## %bb.0: ## %entry 6527; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 6528; DARWIN-64-STATIC-NEXT: retq 6529; 6530; DARWIN-64-DYNAMIC-LABEL: bar06: 6531; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6532; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 6533; DARWIN-64-DYNAMIC-NEXT: retq 6534; 6535; DARWIN-64-PIC-LABEL: bar06: 6536; DARWIN-64-PIC: ## %bb.0: ## %entry 6537; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 6538; DARWIN-64-PIC-NEXT: retq 6539 6540entry: 6541 ret i8* bitcast ([131072 x i32]* @lsrc to i8*) 6542} 6543 6544define i8* @bar07() nounwind { 6545; LINUX-64-STATIC-LABEL: bar07: 6546; LINUX-64-STATIC: # %bb.0: # %entry 6547; LINUX-64-STATIC-NEXT: movl $ldst, %eax 6548; LINUX-64-STATIC-NEXT: retq 6549; 6550; LINUX-32-STATIC-LABEL: bar07: 6551; LINUX-32-STATIC: # %bb.0: # %entry 6552; LINUX-32-STATIC-NEXT: movl $ldst, %eax 6553; LINUX-32-STATIC-NEXT: retl 6554; 6555; LINUX-32-PIC-LABEL: bar07: 6556; LINUX-32-PIC: # %bb.0: # %entry 6557; LINUX-32-PIC-NEXT: calll .L75$pb 6558; LINUX-32-PIC-NEXT: .L75$pb: 6559; LINUX-32-PIC-NEXT: popl %eax 6560; LINUX-32-PIC-NEXT: .Ltmp75: 6561; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax 6562; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax 6563; LINUX-32-PIC-NEXT: retl 6564; 6565; LINUX-64-PIC-LABEL: bar07: 6566; LINUX-64-PIC: # %bb.0: # %entry 6567; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 6568; LINUX-64-PIC-NEXT: retq 6569; 6570; DARWIN-32-STATIC-LABEL: bar07: 6571; DARWIN-32-STATIC: ## %bb.0: ## %entry 6572; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax 6573; DARWIN-32-STATIC-NEXT: retl 6574; 6575; DARWIN-32-DYNAMIC-LABEL: bar07: 6576; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6577; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax 6578; DARWIN-32-DYNAMIC-NEXT: retl 6579; 6580; DARWIN-32-PIC-LABEL: bar07: 6581; DARWIN-32-PIC: ## %bb.0: ## %entry 6582; DARWIN-32-PIC-NEXT: calll L75$pb 6583; DARWIN-32-PIC-NEXT: L75$pb: 6584; DARWIN-32-PIC-NEXT: popl %eax 6585; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb(%eax), %eax 6586; DARWIN-32-PIC-NEXT: retl 6587; 6588; DARWIN-64-STATIC-LABEL: bar07: 6589; DARWIN-64-STATIC: ## %bb.0: ## %entry 6590; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 6591; DARWIN-64-STATIC-NEXT: retq 6592; 6593; DARWIN-64-DYNAMIC-LABEL: bar07: 6594; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6595; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 6596; DARWIN-64-DYNAMIC-NEXT: retq 6597; 6598; DARWIN-64-PIC-LABEL: bar07: 6599; DARWIN-64-PIC: ## %bb.0: ## %entry 6600; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 6601; DARWIN-64-PIC-NEXT: retq 6602 6603entry: 6604 ret i8* bitcast ([131072 x i32]* @ldst to i8*) 6605} 6606 6607define i8* @bar08() nounwind { 6608; LINUX-64-STATIC-LABEL: bar08: 6609; LINUX-64-STATIC: # %bb.0: # %entry 6610; LINUX-64-STATIC-NEXT: movl $lptr, %eax 6611; LINUX-64-STATIC-NEXT: retq 6612; 6613; LINUX-32-STATIC-LABEL: bar08: 6614; LINUX-32-STATIC: # %bb.0: # %entry 6615; LINUX-32-STATIC-NEXT: movl $lptr, %eax 6616; LINUX-32-STATIC-NEXT: retl 6617; 6618; LINUX-32-PIC-LABEL: bar08: 6619; LINUX-32-PIC: # %bb.0: # %entry 6620; LINUX-32-PIC-NEXT: calll .L76$pb 6621; LINUX-32-PIC-NEXT: .L76$pb: 6622; LINUX-32-PIC-NEXT: popl %eax 6623; LINUX-32-PIC-NEXT: .Ltmp76: 6624; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax 6625; LINUX-32-PIC-NEXT: leal lptr@GOTOFF(%eax), %eax 6626; LINUX-32-PIC-NEXT: retl 6627; 6628; LINUX-64-PIC-LABEL: bar08: 6629; LINUX-64-PIC: # %bb.0: # %entry 6630; LINUX-64-PIC-NEXT: leaq lptr(%rip), %rax 6631; LINUX-64-PIC-NEXT: retq 6632; 6633; DARWIN-32-STATIC-LABEL: bar08: 6634; DARWIN-32-STATIC: ## %bb.0: ## %entry 6635; DARWIN-32-STATIC-NEXT: movl $_lptr, %eax 6636; DARWIN-32-STATIC-NEXT: retl 6637; 6638; DARWIN-32-DYNAMIC-LABEL: bar08: 6639; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6640; DARWIN-32-DYNAMIC-NEXT: movl $_lptr, %eax 6641; DARWIN-32-DYNAMIC-NEXT: retl 6642; 6643; DARWIN-32-PIC-LABEL: bar08: 6644; DARWIN-32-PIC: ## %bb.0: ## %entry 6645; DARWIN-32-PIC-NEXT: calll L76$pb 6646; DARWIN-32-PIC-NEXT: L76$pb: 6647; DARWIN-32-PIC-NEXT: popl %eax 6648; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb(%eax), %eax 6649; DARWIN-32-PIC-NEXT: retl 6650; 6651; DARWIN-64-STATIC-LABEL: bar08: 6652; DARWIN-64-STATIC: ## %bb.0: ## %entry 6653; DARWIN-64-STATIC-NEXT: leaq _lptr(%rip), %rax 6654; DARWIN-64-STATIC-NEXT: retq 6655; 6656; DARWIN-64-DYNAMIC-LABEL: bar08: 6657; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6658; DARWIN-64-DYNAMIC-NEXT: leaq _lptr(%rip), %rax 6659; DARWIN-64-DYNAMIC-NEXT: retq 6660; 6661; DARWIN-64-PIC-LABEL: bar08: 6662; DARWIN-64-PIC: ## %bb.0: ## %entry 6663; DARWIN-64-PIC-NEXT: leaq _lptr(%rip), %rax 6664; DARWIN-64-PIC-NEXT: retq 6665 6666entry: 6667 ret i8* bitcast (i32** @lptr to i8*) 6668} 6669 6670define i8* @har00() nounwind { 6671; LINUX-64-STATIC-LABEL: har00: 6672; LINUX-64-STATIC: # %bb.0: # %entry 6673; LINUX-64-STATIC-NEXT: movl $src, %eax 6674; LINUX-64-STATIC-NEXT: retq 6675; 6676; LINUX-32-STATIC-LABEL: har00: 6677; LINUX-32-STATIC: # %bb.0: # %entry 6678; LINUX-32-STATIC-NEXT: movl $src, %eax 6679; LINUX-32-STATIC-NEXT: retl 6680; 6681; LINUX-32-PIC-LABEL: har00: 6682; LINUX-32-PIC: # %bb.0: # %entry 6683; LINUX-32-PIC-NEXT: calll .L77$pb 6684; LINUX-32-PIC-NEXT: .L77$pb: 6685; LINUX-32-PIC-NEXT: popl %eax 6686; LINUX-32-PIC-NEXT: .Ltmp77: 6687; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax 6688; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 6689; LINUX-32-PIC-NEXT: retl 6690; 6691; LINUX-64-PIC-LABEL: har00: 6692; LINUX-64-PIC: # %bb.0: # %entry 6693; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 6694; LINUX-64-PIC-NEXT: retq 6695; 6696; DARWIN-32-STATIC-LABEL: har00: 6697; DARWIN-32-STATIC: ## %bb.0: ## %entry 6698; DARWIN-32-STATIC-NEXT: movl $_src, %eax 6699; DARWIN-32-STATIC-NEXT: retl 6700; 6701; DARWIN-32-DYNAMIC-LABEL: har00: 6702; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6703; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 6704; DARWIN-32-DYNAMIC-NEXT: retl 6705; 6706; DARWIN-32-PIC-LABEL: har00: 6707; DARWIN-32-PIC: ## %bb.0: ## %entry 6708; DARWIN-32-PIC-NEXT: calll L77$pb 6709; DARWIN-32-PIC-NEXT: L77$pb: 6710; DARWIN-32-PIC-NEXT: popl %eax 6711; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb(%eax), %eax 6712; DARWIN-32-PIC-NEXT: retl 6713; 6714; DARWIN-64-STATIC-LABEL: har00: 6715; DARWIN-64-STATIC: ## %bb.0: ## %entry 6716; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6717; DARWIN-64-STATIC-NEXT: retq 6718; 6719; DARWIN-64-DYNAMIC-LABEL: har00: 6720; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6721; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6722; DARWIN-64-DYNAMIC-NEXT: retq 6723; 6724; DARWIN-64-PIC-LABEL: har00: 6725; DARWIN-64-PIC: ## %bb.0: ## %entry 6726; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6727; DARWIN-64-PIC-NEXT: retq 6728 6729entry: 6730 ret i8* bitcast ([131072 x i32]* @src to i8*) 6731} 6732 6733define i8* @hxr00() nounwind { 6734; LINUX-64-STATIC-LABEL: hxr00: 6735; LINUX-64-STATIC: # %bb.0: # %entry 6736; LINUX-64-STATIC-NEXT: movl $xsrc, %eax 6737; LINUX-64-STATIC-NEXT: retq 6738; 6739; LINUX-32-STATIC-LABEL: hxr00: 6740; LINUX-32-STATIC: # %bb.0: # %entry 6741; LINUX-32-STATIC-NEXT: movl $xsrc, %eax 6742; LINUX-32-STATIC-NEXT: retl 6743; 6744; LINUX-32-PIC-LABEL: hxr00: 6745; LINUX-32-PIC: # %bb.0: # %entry 6746; LINUX-32-PIC-NEXT: calll .L78$pb 6747; LINUX-32-PIC-NEXT: .L78$pb: 6748; LINUX-32-PIC-NEXT: popl %eax 6749; LINUX-32-PIC-NEXT: .Ltmp78: 6750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax 6751; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 6752; LINUX-32-PIC-NEXT: retl 6753; 6754; LINUX-64-PIC-LABEL: hxr00: 6755; LINUX-64-PIC: # %bb.0: # %entry 6756; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6757; LINUX-64-PIC-NEXT: retq 6758; 6759; DARWIN-32-STATIC-LABEL: hxr00: 6760; DARWIN-32-STATIC: ## %bb.0: ## %entry 6761; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax 6762; DARWIN-32-STATIC-NEXT: retl 6763; 6764; DARWIN-32-DYNAMIC-LABEL: hxr00: 6765; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6766; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 6767; DARWIN-32-DYNAMIC-NEXT: retl 6768; 6769; DARWIN-32-PIC-LABEL: hxr00: 6770; DARWIN-32-PIC: ## %bb.0: ## %entry 6771; DARWIN-32-PIC-NEXT: calll L78$pb 6772; DARWIN-32-PIC-NEXT: L78$pb: 6773; DARWIN-32-PIC-NEXT: popl %eax 6774; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax 6775; DARWIN-32-PIC-NEXT: retl 6776; 6777; DARWIN-64-STATIC-LABEL: hxr00: 6778; DARWIN-64-STATIC: ## %bb.0: ## %entry 6779; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6780; DARWIN-64-STATIC-NEXT: retq 6781; 6782; DARWIN-64-DYNAMIC-LABEL: hxr00: 6783; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6784; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6785; DARWIN-64-DYNAMIC-NEXT: retq 6786; 6787; DARWIN-64-PIC-LABEL: hxr00: 6788; DARWIN-64-PIC: ## %bb.0: ## %entry 6789; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6790; DARWIN-64-PIC-NEXT: retq 6791 6792entry: 6793 ret i8* bitcast ([32 x i32]* @xsrc to i8*) 6794} 6795 6796define i8* @har01() nounwind { 6797; LINUX-64-STATIC-LABEL: har01: 6798; LINUX-64-STATIC: # %bb.0: # %entry 6799; LINUX-64-STATIC-NEXT: movl $dst, %eax 6800; LINUX-64-STATIC-NEXT: retq 6801; 6802; LINUX-32-STATIC-LABEL: har01: 6803; LINUX-32-STATIC: # %bb.0: # %entry 6804; LINUX-32-STATIC-NEXT: movl $dst, %eax 6805; LINUX-32-STATIC-NEXT: retl 6806; 6807; LINUX-32-PIC-LABEL: har01: 6808; LINUX-32-PIC: # %bb.0: # %entry 6809; LINUX-32-PIC-NEXT: calll .L79$pb 6810; LINUX-32-PIC-NEXT: .L79$pb: 6811; LINUX-32-PIC-NEXT: popl %eax 6812; LINUX-32-PIC-NEXT: .Ltmp79: 6813; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax 6814; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 6815; LINUX-32-PIC-NEXT: retl 6816; 6817; LINUX-64-PIC-LABEL: har01: 6818; LINUX-64-PIC: # %bb.0: # %entry 6819; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6820; LINUX-64-PIC-NEXT: retq 6821; 6822; DARWIN-32-STATIC-LABEL: har01: 6823; DARWIN-32-STATIC: ## %bb.0: ## %entry 6824; DARWIN-32-STATIC-NEXT: movl $_dst, %eax 6825; DARWIN-32-STATIC-NEXT: retl 6826; 6827; DARWIN-32-DYNAMIC-LABEL: har01: 6828; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6829; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 6830; DARWIN-32-DYNAMIC-NEXT: retl 6831; 6832; DARWIN-32-PIC-LABEL: har01: 6833; DARWIN-32-PIC: ## %bb.0: ## %entry 6834; DARWIN-32-PIC-NEXT: calll L79$pb 6835; DARWIN-32-PIC-NEXT: L79$pb: 6836; DARWIN-32-PIC-NEXT: popl %eax 6837; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax 6838; DARWIN-32-PIC-NEXT: retl 6839; 6840; DARWIN-64-STATIC-LABEL: har01: 6841; DARWIN-64-STATIC: ## %bb.0: ## %entry 6842; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6843; DARWIN-64-STATIC-NEXT: retq 6844; 6845; DARWIN-64-DYNAMIC-LABEL: har01: 6846; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6847; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6848; DARWIN-64-DYNAMIC-NEXT: retq 6849; 6850; DARWIN-64-PIC-LABEL: har01: 6851; DARWIN-64-PIC: ## %bb.0: ## %entry 6852; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6853; DARWIN-64-PIC-NEXT: retq 6854 6855entry: 6856 ret i8* bitcast ([131072 x i32]* @dst to i8*) 6857} 6858 6859define i8* @hxr01() nounwind { 6860; LINUX-64-STATIC-LABEL: hxr01: 6861; LINUX-64-STATIC: # %bb.0: # %entry 6862; LINUX-64-STATIC-NEXT: movl $xdst, %eax 6863; LINUX-64-STATIC-NEXT: retq 6864; 6865; LINUX-32-STATIC-LABEL: hxr01: 6866; LINUX-32-STATIC: # %bb.0: # %entry 6867; LINUX-32-STATIC-NEXT: movl $xdst, %eax 6868; LINUX-32-STATIC-NEXT: retl 6869; 6870; LINUX-32-PIC-LABEL: hxr01: 6871; LINUX-32-PIC: # %bb.0: # %entry 6872; LINUX-32-PIC-NEXT: calll .L80$pb 6873; LINUX-32-PIC-NEXT: .L80$pb: 6874; LINUX-32-PIC-NEXT: popl %eax 6875; LINUX-32-PIC-NEXT: .Ltmp80: 6876; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax 6877; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 6878; LINUX-32-PIC-NEXT: retl 6879; 6880; LINUX-64-PIC-LABEL: hxr01: 6881; LINUX-64-PIC: # %bb.0: # %entry 6882; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6883; LINUX-64-PIC-NEXT: retq 6884; 6885; DARWIN-32-STATIC-LABEL: hxr01: 6886; DARWIN-32-STATIC: ## %bb.0: ## %entry 6887; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax 6888; DARWIN-32-STATIC-NEXT: retl 6889; 6890; DARWIN-32-DYNAMIC-LABEL: hxr01: 6891; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6892; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 6893; DARWIN-32-DYNAMIC-NEXT: retl 6894; 6895; DARWIN-32-PIC-LABEL: hxr01: 6896; DARWIN-32-PIC: ## %bb.0: ## %entry 6897; DARWIN-32-PIC-NEXT: calll L80$pb 6898; DARWIN-32-PIC-NEXT: L80$pb: 6899; DARWIN-32-PIC-NEXT: popl %eax 6900; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax 6901; DARWIN-32-PIC-NEXT: retl 6902; 6903; DARWIN-64-STATIC-LABEL: hxr01: 6904; DARWIN-64-STATIC: ## %bb.0: ## %entry 6905; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6906; DARWIN-64-STATIC-NEXT: retq 6907; 6908; DARWIN-64-DYNAMIC-LABEL: hxr01: 6909; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6910; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6911; DARWIN-64-DYNAMIC-NEXT: retq 6912; 6913; DARWIN-64-PIC-LABEL: hxr01: 6914; DARWIN-64-PIC: ## %bb.0: ## %entry 6915; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6916; DARWIN-64-PIC-NEXT: retq 6917 6918entry: 6919 ret i8* bitcast ([32 x i32]* @xdst to i8*) 6920} 6921 6922define i8* @har02() nounwind { 6923; LINUX-64-STATIC-LABEL: har02: 6924; LINUX-64-STATIC: # %bb.0: # %entry 6925; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax 6926; LINUX-64-STATIC-NEXT: retq 6927; 6928; LINUX-32-STATIC-LABEL: har02: 6929; LINUX-32-STATIC: # %bb.0: # %entry 6930; LINUX-32-STATIC-NEXT: movl ptr, %eax 6931; LINUX-32-STATIC-NEXT: retl 6932; 6933; LINUX-32-PIC-LABEL: har02: 6934; LINUX-32-PIC: # %bb.0: # %entry 6935; LINUX-32-PIC-NEXT: calll .L81$pb 6936; LINUX-32-PIC-NEXT: .L81$pb: 6937; LINUX-32-PIC-NEXT: popl %eax 6938; LINUX-32-PIC-NEXT: .Ltmp81: 6939; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax 6940; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 6941; LINUX-32-PIC-NEXT: movl (%eax), %eax 6942; LINUX-32-PIC-NEXT: retl 6943; 6944; LINUX-64-PIC-LABEL: har02: 6945; LINUX-64-PIC: # %bb.0: # %entry 6946; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6947; LINUX-64-PIC-NEXT: movq (%rax), %rax 6948; LINUX-64-PIC-NEXT: retq 6949; 6950; DARWIN-32-STATIC-LABEL: har02: 6951; DARWIN-32-STATIC: ## %bb.0: ## %entry 6952; DARWIN-32-STATIC-NEXT: movl _ptr, %eax 6953; DARWIN-32-STATIC-NEXT: retl 6954; 6955; DARWIN-32-DYNAMIC-LABEL: har02: 6956; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6957; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 6958; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 6959; DARWIN-32-DYNAMIC-NEXT: retl 6960; 6961; DARWIN-32-PIC-LABEL: har02: 6962; DARWIN-32-PIC: ## %bb.0: ## %entry 6963; DARWIN-32-PIC-NEXT: calll L81$pb 6964; DARWIN-32-PIC-NEXT: L81$pb: 6965; DARWIN-32-PIC-NEXT: popl %eax 6966; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax 6967; DARWIN-32-PIC-NEXT: movl (%eax), %eax 6968; DARWIN-32-PIC-NEXT: retl 6969; 6970; DARWIN-64-STATIC-LABEL: har02: 6971; DARWIN-64-STATIC: ## %bb.0: ## %entry 6972; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6973; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 6974; DARWIN-64-STATIC-NEXT: retq 6975; 6976; DARWIN-64-DYNAMIC-LABEL: har02: 6977; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6978; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6979; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 6980; DARWIN-64-DYNAMIC-NEXT: retq 6981; 6982; DARWIN-64-PIC-LABEL: har02: 6983; DARWIN-64-PIC: ## %bb.0: ## %entry 6984; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6985; DARWIN-64-PIC-NEXT: movq (%rax), %rax 6986; DARWIN-64-PIC-NEXT: retq 6987 6988entry: 6989 %0 = load i32*, i32** @ptr, align 8 6990 %1 = bitcast i32* %0 to i8* 6991 ret i8* %1 6992} 6993 6994define i8* @har03() nounwind { 6995; LINUX-64-STATIC-LABEL: har03: 6996; LINUX-64-STATIC: # %bb.0: # %entry 6997; LINUX-64-STATIC-NEXT: movl $dsrc, %eax 6998; LINUX-64-STATIC-NEXT: retq 6999; 7000; LINUX-32-STATIC-LABEL: har03: 7001; LINUX-32-STATIC: # %bb.0: # %entry 7002; LINUX-32-STATIC-NEXT: movl $dsrc, %eax 7003; LINUX-32-STATIC-NEXT: retl 7004; 7005; LINUX-32-PIC-LABEL: har03: 7006; LINUX-32-PIC: # %bb.0: # %entry 7007; LINUX-32-PIC-NEXT: calll .L82$pb 7008; LINUX-32-PIC-NEXT: .L82$pb: 7009; LINUX-32-PIC-NEXT: popl %eax 7010; LINUX-32-PIC-NEXT: .Ltmp82: 7011; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax 7012; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax 7013; LINUX-32-PIC-NEXT: retl 7014; 7015; LINUX-64-PIC-LABEL: har03: 7016; LINUX-64-PIC: # %bb.0: # %entry 7017; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 7018; LINUX-64-PIC-NEXT: retq 7019; 7020; DARWIN-32-STATIC-LABEL: har03: 7021; DARWIN-32-STATIC: ## %bb.0: ## %entry 7022; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax 7023; DARWIN-32-STATIC-NEXT: retl 7024; 7025; DARWIN-32-DYNAMIC-LABEL: har03: 7026; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7027; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax 7028; DARWIN-32-DYNAMIC-NEXT: retl 7029; 7030; DARWIN-32-PIC-LABEL: har03: 7031; DARWIN-32-PIC: ## %bb.0: ## %entry 7032; DARWIN-32-PIC-NEXT: calll L82$pb 7033; DARWIN-32-PIC-NEXT: L82$pb: 7034; DARWIN-32-PIC-NEXT: popl %eax 7035; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb(%eax), %eax 7036; DARWIN-32-PIC-NEXT: retl 7037; 7038; DARWIN-64-STATIC-LABEL: har03: 7039; DARWIN-64-STATIC: ## %bb.0: ## %entry 7040; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 7041; DARWIN-64-STATIC-NEXT: retq 7042; 7043; DARWIN-64-DYNAMIC-LABEL: har03: 7044; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7045; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 7046; DARWIN-64-DYNAMIC-NEXT: retq 7047; 7048; DARWIN-64-PIC-LABEL: har03: 7049; DARWIN-64-PIC: ## %bb.0: ## %entry 7050; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 7051; DARWIN-64-PIC-NEXT: retq 7052 7053entry: 7054 ret i8* bitcast ([131072 x i32]* @dsrc to i8*) 7055} 7056 7057define i8* @har04() nounwind { 7058; LINUX-64-STATIC-LABEL: har04: 7059; LINUX-64-STATIC: # %bb.0: # %entry 7060; LINUX-64-STATIC-NEXT: movl $ddst, %eax 7061; LINUX-64-STATIC-NEXT: retq 7062; 7063; LINUX-32-STATIC-LABEL: har04: 7064; LINUX-32-STATIC: # %bb.0: # %entry 7065; LINUX-32-STATIC-NEXT: movl $ddst, %eax 7066; LINUX-32-STATIC-NEXT: retl 7067; 7068; LINUX-32-PIC-LABEL: har04: 7069; LINUX-32-PIC: # %bb.0: # %entry 7070; LINUX-32-PIC-NEXT: calll .L83$pb 7071; LINUX-32-PIC-NEXT: .L83$pb: 7072; LINUX-32-PIC-NEXT: popl %eax 7073; LINUX-32-PIC-NEXT: .Ltmp83: 7074; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax 7075; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 7076; LINUX-32-PIC-NEXT: retl 7077; 7078; LINUX-64-PIC-LABEL: har04: 7079; LINUX-64-PIC: # %bb.0: # %entry 7080; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 7081; LINUX-64-PIC-NEXT: retq 7082; 7083; DARWIN-32-STATIC-LABEL: har04: 7084; DARWIN-32-STATIC: ## %bb.0: ## %entry 7085; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax 7086; DARWIN-32-STATIC-NEXT: retl 7087; 7088; DARWIN-32-DYNAMIC-LABEL: har04: 7089; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7090; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax 7091; DARWIN-32-DYNAMIC-NEXT: retl 7092; 7093; DARWIN-32-PIC-LABEL: har04: 7094; DARWIN-32-PIC: ## %bb.0: ## %entry 7095; DARWIN-32-PIC-NEXT: calll L83$pb 7096; DARWIN-32-PIC-NEXT: L83$pb: 7097; DARWIN-32-PIC-NEXT: popl %eax 7098; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb(%eax), %eax 7099; DARWIN-32-PIC-NEXT: retl 7100; 7101; DARWIN-64-STATIC-LABEL: har04: 7102; DARWIN-64-STATIC: ## %bb.0: ## %entry 7103; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 7104; DARWIN-64-STATIC-NEXT: retq 7105; 7106; DARWIN-64-DYNAMIC-LABEL: har04: 7107; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7108; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 7109; DARWIN-64-DYNAMIC-NEXT: retq 7110; 7111; DARWIN-64-PIC-LABEL: har04: 7112; DARWIN-64-PIC: ## %bb.0: ## %entry 7113; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 7114; DARWIN-64-PIC-NEXT: retq 7115 7116entry: 7117 ret i8* bitcast ([131072 x i32]* @ddst to i8*) 7118} 7119 7120define i8* @har05() nounwind { 7121; LINUX-64-STATIC-LABEL: har05: 7122; LINUX-64-STATIC: # %bb.0: # %entry 7123; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 7124; LINUX-64-STATIC-NEXT: retq 7125; 7126; LINUX-32-STATIC-LABEL: har05: 7127; LINUX-32-STATIC: # %bb.0: # %entry 7128; LINUX-32-STATIC-NEXT: movl dptr, %eax 7129; LINUX-32-STATIC-NEXT: retl 7130; 7131; LINUX-32-PIC-LABEL: har05: 7132; LINUX-32-PIC: # %bb.0: # %entry 7133; LINUX-32-PIC-NEXT: calll .L84$pb 7134; LINUX-32-PIC-NEXT: .L84$pb: 7135; LINUX-32-PIC-NEXT: popl %eax 7136; LINUX-32-PIC-NEXT: .Ltmp84: 7137; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax 7138; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 7139; LINUX-32-PIC-NEXT: movl (%eax), %eax 7140; LINUX-32-PIC-NEXT: retl 7141; 7142; LINUX-64-PIC-LABEL: har05: 7143; LINUX-64-PIC: # %bb.0: # %entry 7144; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax 7145; LINUX-64-PIC-NEXT: movq (%rax), %rax 7146; LINUX-64-PIC-NEXT: retq 7147; 7148; DARWIN-32-STATIC-LABEL: har05: 7149; DARWIN-32-STATIC: ## %bb.0: ## %entry 7150; DARWIN-32-STATIC-NEXT: movl _dptr, %eax 7151; DARWIN-32-STATIC-NEXT: retl 7152; 7153; DARWIN-32-DYNAMIC-LABEL: har05: 7154; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7155; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax 7156; DARWIN-32-DYNAMIC-NEXT: retl 7157; 7158; DARWIN-32-PIC-LABEL: har05: 7159; DARWIN-32-PIC: ## %bb.0: ## %entry 7160; DARWIN-32-PIC-NEXT: calll L84$pb 7161; DARWIN-32-PIC-NEXT: L84$pb: 7162; DARWIN-32-PIC-NEXT: popl %eax 7163; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb(%eax), %eax 7164; DARWIN-32-PIC-NEXT: retl 7165; 7166; DARWIN-64-STATIC-LABEL: har05: 7167; DARWIN-64-STATIC: ## %bb.0: ## %entry 7168; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 7169; DARWIN-64-STATIC-NEXT: retq 7170; 7171; DARWIN-64-DYNAMIC-LABEL: har05: 7172; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7173; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 7174; DARWIN-64-DYNAMIC-NEXT: retq 7175; 7176; DARWIN-64-PIC-LABEL: har05: 7177; DARWIN-64-PIC: ## %bb.0: ## %entry 7178; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 7179; DARWIN-64-PIC-NEXT: retq 7180 7181entry: 7182 %0 = load i32*, i32** @dptr, align 8 7183 %1 = bitcast i32* %0 to i8* 7184 ret i8* %1 7185} 7186 7187define i8* @har06() nounwind { 7188; LINUX-64-STATIC-LABEL: har06: 7189; LINUX-64-STATIC: # %bb.0: # %entry 7190; LINUX-64-STATIC-NEXT: movl $lsrc, %eax 7191; LINUX-64-STATIC-NEXT: retq 7192; 7193; LINUX-32-STATIC-LABEL: har06: 7194; LINUX-32-STATIC: # %bb.0: # %entry 7195; LINUX-32-STATIC-NEXT: movl $lsrc, %eax 7196; LINUX-32-STATIC-NEXT: retl 7197; 7198; LINUX-32-PIC-LABEL: har06: 7199; LINUX-32-PIC: # %bb.0: # %entry 7200; LINUX-32-PIC-NEXT: calll .L85$pb 7201; LINUX-32-PIC-NEXT: .L85$pb: 7202; LINUX-32-PIC-NEXT: popl %eax 7203; LINUX-32-PIC-NEXT: .Ltmp85: 7204; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax 7205; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax 7206; LINUX-32-PIC-NEXT: retl 7207; 7208; LINUX-64-PIC-LABEL: har06: 7209; LINUX-64-PIC: # %bb.0: # %entry 7210; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 7211; LINUX-64-PIC-NEXT: retq 7212; 7213; DARWIN-32-STATIC-LABEL: har06: 7214; DARWIN-32-STATIC: ## %bb.0: ## %entry 7215; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax 7216; DARWIN-32-STATIC-NEXT: retl 7217; 7218; DARWIN-32-DYNAMIC-LABEL: har06: 7219; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7220; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax 7221; DARWIN-32-DYNAMIC-NEXT: retl 7222; 7223; DARWIN-32-PIC-LABEL: har06: 7224; DARWIN-32-PIC: ## %bb.0: ## %entry 7225; DARWIN-32-PIC-NEXT: calll L85$pb 7226; DARWIN-32-PIC-NEXT: L85$pb: 7227; DARWIN-32-PIC-NEXT: popl %eax 7228; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb(%eax), %eax 7229; DARWIN-32-PIC-NEXT: retl 7230; 7231; DARWIN-64-STATIC-LABEL: har06: 7232; DARWIN-64-STATIC: ## %bb.0: ## %entry 7233; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 7234; DARWIN-64-STATIC-NEXT: retq 7235; 7236; DARWIN-64-DYNAMIC-LABEL: har06: 7237; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7238; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 7239; DARWIN-64-DYNAMIC-NEXT: retq 7240; 7241; DARWIN-64-PIC-LABEL: har06: 7242; DARWIN-64-PIC: ## %bb.0: ## %entry 7243; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 7244; DARWIN-64-PIC-NEXT: retq 7245 7246entry: 7247 ret i8* bitcast ([131072 x i32]* @lsrc to i8*) 7248} 7249 7250define i8* @har07() nounwind { 7251; LINUX-64-STATIC-LABEL: har07: 7252; LINUX-64-STATIC: # %bb.0: # %entry 7253; LINUX-64-STATIC-NEXT: movl $ldst, %eax 7254; LINUX-64-STATIC-NEXT: retq 7255; 7256; LINUX-32-STATIC-LABEL: har07: 7257; LINUX-32-STATIC: # %bb.0: # %entry 7258; LINUX-32-STATIC-NEXT: movl $ldst, %eax 7259; LINUX-32-STATIC-NEXT: retl 7260; 7261; LINUX-32-PIC-LABEL: har07: 7262; LINUX-32-PIC: # %bb.0: # %entry 7263; LINUX-32-PIC-NEXT: calll .L86$pb 7264; LINUX-32-PIC-NEXT: .L86$pb: 7265; LINUX-32-PIC-NEXT: popl %eax 7266; LINUX-32-PIC-NEXT: .Ltmp86: 7267; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax 7268; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax 7269; LINUX-32-PIC-NEXT: retl 7270; 7271; LINUX-64-PIC-LABEL: har07: 7272; LINUX-64-PIC: # %bb.0: # %entry 7273; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 7274; LINUX-64-PIC-NEXT: retq 7275; 7276; DARWIN-32-STATIC-LABEL: har07: 7277; DARWIN-32-STATIC: ## %bb.0: ## %entry 7278; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax 7279; DARWIN-32-STATIC-NEXT: retl 7280; 7281; DARWIN-32-DYNAMIC-LABEL: har07: 7282; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7283; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax 7284; DARWIN-32-DYNAMIC-NEXT: retl 7285; 7286; DARWIN-32-PIC-LABEL: har07: 7287; DARWIN-32-PIC: ## %bb.0: ## %entry 7288; DARWIN-32-PIC-NEXT: calll L86$pb 7289; DARWIN-32-PIC-NEXT: L86$pb: 7290; DARWIN-32-PIC-NEXT: popl %eax 7291; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb(%eax), %eax 7292; DARWIN-32-PIC-NEXT: retl 7293; 7294; DARWIN-64-STATIC-LABEL: har07: 7295; DARWIN-64-STATIC: ## %bb.0: ## %entry 7296; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 7297; DARWIN-64-STATIC-NEXT: retq 7298; 7299; DARWIN-64-DYNAMIC-LABEL: har07: 7300; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7301; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 7302; DARWIN-64-DYNAMIC-NEXT: retq 7303; 7304; DARWIN-64-PIC-LABEL: har07: 7305; DARWIN-64-PIC: ## %bb.0: ## %entry 7306; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 7307; DARWIN-64-PIC-NEXT: retq 7308 7309entry: 7310 ret i8* bitcast ([131072 x i32]* @ldst to i8*) 7311} 7312 7313define i8* @har08() nounwind { 7314; LINUX-64-STATIC-LABEL: har08: 7315; LINUX-64-STATIC: # %bb.0: # %entry 7316; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 7317; LINUX-64-STATIC-NEXT: retq 7318; 7319; LINUX-32-STATIC-LABEL: har08: 7320; LINUX-32-STATIC: # %bb.0: # %entry 7321; LINUX-32-STATIC-NEXT: movl lptr, %eax 7322; LINUX-32-STATIC-NEXT: retl 7323; 7324; LINUX-32-PIC-LABEL: har08: 7325; LINUX-32-PIC: # %bb.0: # %entry 7326; LINUX-32-PIC-NEXT: calll .L87$pb 7327; LINUX-32-PIC-NEXT: .L87$pb: 7328; LINUX-32-PIC-NEXT: popl %eax 7329; LINUX-32-PIC-NEXT: .Ltmp87: 7330; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax 7331; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 7332; LINUX-32-PIC-NEXT: retl 7333; 7334; LINUX-64-PIC-LABEL: har08: 7335; LINUX-64-PIC: # %bb.0: # %entry 7336; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 7337; LINUX-64-PIC-NEXT: retq 7338; 7339; DARWIN-32-STATIC-LABEL: har08: 7340; DARWIN-32-STATIC: ## %bb.0: ## %entry 7341; DARWIN-32-STATIC-NEXT: movl _lptr, %eax 7342; DARWIN-32-STATIC-NEXT: retl 7343; 7344; DARWIN-32-DYNAMIC-LABEL: har08: 7345; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7346; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax 7347; DARWIN-32-DYNAMIC-NEXT: retl 7348; 7349; DARWIN-32-PIC-LABEL: har08: 7350; DARWIN-32-PIC: ## %bb.0: ## %entry 7351; DARWIN-32-PIC-NEXT: calll L87$pb 7352; DARWIN-32-PIC-NEXT: L87$pb: 7353; DARWIN-32-PIC-NEXT: popl %eax 7354; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb(%eax), %eax 7355; DARWIN-32-PIC-NEXT: retl 7356; 7357; DARWIN-64-STATIC-LABEL: har08: 7358; DARWIN-64-STATIC: ## %bb.0: ## %entry 7359; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 7360; DARWIN-64-STATIC-NEXT: retq 7361; 7362; DARWIN-64-DYNAMIC-LABEL: har08: 7363; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7364; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 7365; DARWIN-64-DYNAMIC-NEXT: retq 7366; 7367; DARWIN-64-PIC-LABEL: har08: 7368; DARWIN-64-PIC: ## %bb.0: ## %entry 7369; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 7370; DARWIN-64-PIC-NEXT: retq 7371 7372entry: 7373 %0 = load i32*, i32** @lptr, align 8 7374 %1 = bitcast i32* %0 to i8* 7375 ret i8* %1 7376} 7377 7378define i8* @bat00() nounwind { 7379; LINUX-64-STATIC-LABEL: bat00: 7380; LINUX-64-STATIC: # %bb.0: # %entry 7381; LINUX-64-STATIC-NEXT: movl $src+64, %eax 7382; LINUX-64-STATIC-NEXT: retq 7383; 7384; LINUX-32-STATIC-LABEL: bat00: 7385; LINUX-32-STATIC: # %bb.0: # %entry 7386; LINUX-32-STATIC-NEXT: movl $src+64, %eax 7387; LINUX-32-STATIC-NEXT: retl 7388; 7389; LINUX-32-PIC-LABEL: bat00: 7390; LINUX-32-PIC: # %bb.0: # %entry 7391; LINUX-32-PIC-NEXT: calll .L88$pb 7392; LINUX-32-PIC-NEXT: .L88$pb: 7393; LINUX-32-PIC-NEXT: popl %eax 7394; LINUX-32-PIC-NEXT: .Ltmp88: 7395; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax 7396; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 7397; LINUX-32-PIC-NEXT: addl $64, %eax 7398; LINUX-32-PIC-NEXT: retl 7399; 7400; LINUX-64-PIC-LABEL: bat00: 7401; LINUX-64-PIC: # %bb.0: # %entry 7402; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 7403; LINUX-64-PIC-NEXT: addq $64, %rax 7404; LINUX-64-PIC-NEXT: retq 7405; 7406; DARWIN-32-STATIC-LABEL: bat00: 7407; DARWIN-32-STATIC: ## %bb.0: ## %entry 7408; DARWIN-32-STATIC-NEXT: movl $_src+64, %eax 7409; DARWIN-32-STATIC-NEXT: retl 7410; 7411; DARWIN-32-DYNAMIC-LABEL: bat00: 7412; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7413; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 7414; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7415; DARWIN-32-DYNAMIC-NEXT: retl 7416; 7417; DARWIN-32-PIC-LABEL: bat00: 7418; DARWIN-32-PIC: ## %bb.0: ## %entry 7419; DARWIN-32-PIC-NEXT: calll L88$pb 7420; DARWIN-32-PIC-NEXT: L88$pb: 7421; DARWIN-32-PIC-NEXT: popl %eax 7422; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb(%eax), %eax 7423; DARWIN-32-PIC-NEXT: addl $64, %eax 7424; DARWIN-32-PIC-NEXT: retl 7425; 7426; DARWIN-64-STATIC-LABEL: bat00: 7427; DARWIN-64-STATIC: ## %bb.0: ## %entry 7428; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7429; DARWIN-64-STATIC-NEXT: addq $64, %rax 7430; DARWIN-64-STATIC-NEXT: retq 7431; 7432; DARWIN-64-DYNAMIC-LABEL: bat00: 7433; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7434; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7435; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7436; DARWIN-64-DYNAMIC-NEXT: retq 7437; 7438; DARWIN-64-PIC-LABEL: bat00: 7439; DARWIN-64-PIC: ## %bb.0: ## %entry 7440; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7441; DARWIN-64-PIC-NEXT: addq $64, %rax 7442; DARWIN-64-PIC-NEXT: retq 7443 7444entry: 7445 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 16) to i8*) 7446} 7447 7448define i8* @bxt00() nounwind { 7449; LINUX-64-STATIC-LABEL: bxt00: 7450; LINUX-64-STATIC: # %bb.0: # %entry 7451; LINUX-64-STATIC-NEXT: movl $xsrc+64, %eax 7452; LINUX-64-STATIC-NEXT: retq 7453; 7454; LINUX-32-STATIC-LABEL: bxt00: 7455; LINUX-32-STATIC: # %bb.0: # %entry 7456; LINUX-32-STATIC-NEXT: movl $xsrc+64, %eax 7457; LINUX-32-STATIC-NEXT: retl 7458; 7459; LINUX-32-PIC-LABEL: bxt00: 7460; LINUX-32-PIC: # %bb.0: # %entry 7461; LINUX-32-PIC-NEXT: calll .L89$pb 7462; LINUX-32-PIC-NEXT: .L89$pb: 7463; LINUX-32-PIC-NEXT: popl %eax 7464; LINUX-32-PIC-NEXT: .Ltmp89: 7465; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax 7466; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 7467; LINUX-32-PIC-NEXT: addl $64, %eax 7468; LINUX-32-PIC-NEXT: retl 7469; 7470; LINUX-64-PIC-LABEL: bxt00: 7471; LINUX-64-PIC: # %bb.0: # %entry 7472; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 7473; LINUX-64-PIC-NEXT: addq $64, %rax 7474; LINUX-64-PIC-NEXT: retq 7475; 7476; DARWIN-32-STATIC-LABEL: bxt00: 7477; DARWIN-32-STATIC: ## %bb.0: ## %entry 7478; DARWIN-32-STATIC-NEXT: movl $_xsrc+64, %eax 7479; DARWIN-32-STATIC-NEXT: retl 7480; 7481; DARWIN-32-DYNAMIC-LABEL: bxt00: 7482; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7483; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 7484; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7485; DARWIN-32-DYNAMIC-NEXT: retl 7486; 7487; DARWIN-32-PIC-LABEL: bxt00: 7488; DARWIN-32-PIC: ## %bb.0: ## %entry 7489; DARWIN-32-PIC-NEXT: calll L89$pb 7490; DARWIN-32-PIC-NEXT: L89$pb: 7491; DARWIN-32-PIC-NEXT: popl %eax 7492; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax 7493; DARWIN-32-PIC-NEXT: addl $64, %eax 7494; DARWIN-32-PIC-NEXT: retl 7495; 7496; DARWIN-64-STATIC-LABEL: bxt00: 7497; DARWIN-64-STATIC: ## %bb.0: ## %entry 7498; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7499; DARWIN-64-STATIC-NEXT: addq $64, %rax 7500; DARWIN-64-STATIC-NEXT: retq 7501; 7502; DARWIN-64-DYNAMIC-LABEL: bxt00: 7503; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7504; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7505; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7506; DARWIN-64-DYNAMIC-NEXT: retq 7507; 7508; DARWIN-64-PIC-LABEL: bxt00: 7509; DARWIN-64-PIC: ## %bb.0: ## %entry 7510; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7511; DARWIN-64-PIC-NEXT: addq $64, %rax 7512; DARWIN-64-PIC-NEXT: retq 7513 7514entry: 7515 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xsrc, i32 0, i64 16) to i8*) 7516} 7517 7518define i8* @bat01() nounwind { 7519; LINUX-64-STATIC-LABEL: bat01: 7520; LINUX-64-STATIC: # %bb.0: # %entry 7521; LINUX-64-STATIC-NEXT: movl $dst+64, %eax 7522; LINUX-64-STATIC-NEXT: retq 7523; 7524; LINUX-32-STATIC-LABEL: bat01: 7525; LINUX-32-STATIC: # %bb.0: # %entry 7526; LINUX-32-STATIC-NEXT: movl $dst+64, %eax 7527; LINUX-32-STATIC-NEXT: retl 7528; 7529; LINUX-32-PIC-LABEL: bat01: 7530; LINUX-32-PIC: # %bb.0: # %entry 7531; LINUX-32-PIC-NEXT: calll .L90$pb 7532; LINUX-32-PIC-NEXT: .L90$pb: 7533; LINUX-32-PIC-NEXT: popl %eax 7534; LINUX-32-PIC-NEXT: .Ltmp90: 7535; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax 7536; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 7537; LINUX-32-PIC-NEXT: addl $64, %eax 7538; LINUX-32-PIC-NEXT: retl 7539; 7540; LINUX-64-PIC-LABEL: bat01: 7541; LINUX-64-PIC: # %bb.0: # %entry 7542; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 7543; LINUX-64-PIC-NEXT: addq $64, %rax 7544; LINUX-64-PIC-NEXT: retq 7545; 7546; DARWIN-32-STATIC-LABEL: bat01: 7547; DARWIN-32-STATIC: ## %bb.0: ## %entry 7548; DARWIN-32-STATIC-NEXT: movl $_dst+64, %eax 7549; DARWIN-32-STATIC-NEXT: retl 7550; 7551; DARWIN-32-DYNAMIC-LABEL: bat01: 7552; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7553; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 7554; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7555; DARWIN-32-DYNAMIC-NEXT: retl 7556; 7557; DARWIN-32-PIC-LABEL: bat01: 7558; DARWIN-32-PIC: ## %bb.0: ## %entry 7559; DARWIN-32-PIC-NEXT: calll L90$pb 7560; DARWIN-32-PIC-NEXT: L90$pb: 7561; DARWIN-32-PIC-NEXT: popl %eax 7562; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax 7563; DARWIN-32-PIC-NEXT: addl $64, %eax 7564; DARWIN-32-PIC-NEXT: retl 7565; 7566; DARWIN-64-STATIC-LABEL: bat01: 7567; DARWIN-64-STATIC: ## %bb.0: ## %entry 7568; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7569; DARWIN-64-STATIC-NEXT: addq $64, %rax 7570; DARWIN-64-STATIC-NEXT: retq 7571; 7572; DARWIN-64-DYNAMIC-LABEL: bat01: 7573; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7574; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7575; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7576; DARWIN-64-DYNAMIC-NEXT: retq 7577; 7578; DARWIN-64-PIC-LABEL: bat01: 7579; DARWIN-64-PIC: ## %bb.0: ## %entry 7580; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7581; DARWIN-64-PIC-NEXT: addq $64, %rax 7582; DARWIN-64-PIC-NEXT: retq 7583 7584entry: 7585 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 16) to i8*) 7586} 7587 7588define i8* @bxt01() nounwind { 7589; LINUX-64-STATIC-LABEL: bxt01: 7590; LINUX-64-STATIC: # %bb.0: # %entry 7591; LINUX-64-STATIC-NEXT: movl $xdst+64, %eax 7592; LINUX-64-STATIC-NEXT: retq 7593; 7594; LINUX-32-STATIC-LABEL: bxt01: 7595; LINUX-32-STATIC: # %bb.0: # %entry 7596; LINUX-32-STATIC-NEXT: movl $xdst+64, %eax 7597; LINUX-32-STATIC-NEXT: retl 7598; 7599; LINUX-32-PIC-LABEL: bxt01: 7600; LINUX-32-PIC: # %bb.0: # %entry 7601; LINUX-32-PIC-NEXT: calll .L91$pb 7602; LINUX-32-PIC-NEXT: .L91$pb: 7603; LINUX-32-PIC-NEXT: popl %eax 7604; LINUX-32-PIC-NEXT: .Ltmp91: 7605; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax 7606; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 7607; LINUX-32-PIC-NEXT: addl $64, %eax 7608; LINUX-32-PIC-NEXT: retl 7609; 7610; LINUX-64-PIC-LABEL: bxt01: 7611; LINUX-64-PIC: # %bb.0: # %entry 7612; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 7613; LINUX-64-PIC-NEXT: addq $64, %rax 7614; LINUX-64-PIC-NEXT: retq 7615; 7616; DARWIN-32-STATIC-LABEL: bxt01: 7617; DARWIN-32-STATIC: ## %bb.0: ## %entry 7618; DARWIN-32-STATIC-NEXT: movl $_xdst+64, %eax 7619; DARWIN-32-STATIC-NEXT: retl 7620; 7621; DARWIN-32-DYNAMIC-LABEL: bxt01: 7622; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7623; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 7624; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7625; DARWIN-32-DYNAMIC-NEXT: retl 7626; 7627; DARWIN-32-PIC-LABEL: bxt01: 7628; DARWIN-32-PIC: ## %bb.0: ## %entry 7629; DARWIN-32-PIC-NEXT: calll L91$pb 7630; DARWIN-32-PIC-NEXT: L91$pb: 7631; DARWIN-32-PIC-NEXT: popl %eax 7632; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax 7633; DARWIN-32-PIC-NEXT: addl $64, %eax 7634; DARWIN-32-PIC-NEXT: retl 7635; 7636; DARWIN-64-STATIC-LABEL: bxt01: 7637; DARWIN-64-STATIC: ## %bb.0: ## %entry 7638; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7639; DARWIN-64-STATIC-NEXT: addq $64, %rax 7640; DARWIN-64-STATIC-NEXT: retq 7641; 7642; DARWIN-64-DYNAMIC-LABEL: bxt01: 7643; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7644; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7645; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7646; DARWIN-64-DYNAMIC-NEXT: retq 7647; 7648; DARWIN-64-PIC-LABEL: bxt01: 7649; DARWIN-64-PIC: ## %bb.0: ## %entry 7650; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7651; DARWIN-64-PIC-NEXT: addq $64, %rax 7652; DARWIN-64-PIC-NEXT: retq 7653 7654entry: 7655 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 16) to i8*) 7656} 7657 7658define i8* @bat02() nounwind { 7659; LINUX-64-STATIC-LABEL: bat02: 7660; LINUX-64-STATIC: # %bb.0: # %entry 7661; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax 7662; LINUX-64-STATIC-NEXT: addq $64, %rax 7663; LINUX-64-STATIC-NEXT: retq 7664; 7665; LINUX-32-STATIC-LABEL: bat02: 7666; LINUX-32-STATIC: # %bb.0: # %entry 7667; LINUX-32-STATIC-NEXT: movl ptr, %eax 7668; LINUX-32-STATIC-NEXT: addl $64, %eax 7669; LINUX-32-STATIC-NEXT: retl 7670; 7671; LINUX-32-PIC-LABEL: bat02: 7672; LINUX-32-PIC: # %bb.0: # %entry 7673; LINUX-32-PIC-NEXT: calll .L92$pb 7674; LINUX-32-PIC-NEXT: .L92$pb: 7675; LINUX-32-PIC-NEXT: popl %eax 7676; LINUX-32-PIC-NEXT: .Ltmp92: 7677; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax 7678; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 7679; LINUX-32-PIC-NEXT: movl (%eax), %eax 7680; LINUX-32-PIC-NEXT: addl $64, %eax 7681; LINUX-32-PIC-NEXT: retl 7682; 7683; LINUX-64-PIC-LABEL: bat02: 7684; LINUX-64-PIC: # %bb.0: # %entry 7685; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 7686; LINUX-64-PIC-NEXT: movq (%rax), %rax 7687; LINUX-64-PIC-NEXT: addq $64, %rax 7688; LINUX-64-PIC-NEXT: retq 7689; 7690; DARWIN-32-STATIC-LABEL: bat02: 7691; DARWIN-32-STATIC: ## %bb.0: ## %entry 7692; DARWIN-32-STATIC-NEXT: movl _ptr, %eax 7693; DARWIN-32-STATIC-NEXT: addl $64, %eax 7694; DARWIN-32-STATIC-NEXT: retl 7695; 7696; DARWIN-32-DYNAMIC-LABEL: bat02: 7697; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7698; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 7699; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 7700; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7701; DARWIN-32-DYNAMIC-NEXT: retl 7702; 7703; DARWIN-32-PIC-LABEL: bat02: 7704; DARWIN-32-PIC: ## %bb.0: ## %entry 7705; DARWIN-32-PIC-NEXT: calll L92$pb 7706; DARWIN-32-PIC-NEXT: L92$pb: 7707; DARWIN-32-PIC-NEXT: popl %eax 7708; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax 7709; DARWIN-32-PIC-NEXT: movl (%eax), %eax 7710; DARWIN-32-PIC-NEXT: addl $64, %eax 7711; DARWIN-32-PIC-NEXT: retl 7712; 7713; DARWIN-64-STATIC-LABEL: bat02: 7714; DARWIN-64-STATIC: ## %bb.0: ## %entry 7715; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7716; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 7717; DARWIN-64-STATIC-NEXT: addq $64, %rax 7718; DARWIN-64-STATIC-NEXT: retq 7719; 7720; DARWIN-64-DYNAMIC-LABEL: bat02: 7721; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7722; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7723; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 7724; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7725; DARWIN-64-DYNAMIC-NEXT: retq 7726; 7727; DARWIN-64-PIC-LABEL: bat02: 7728; DARWIN-64-PIC: ## %bb.0: ## %entry 7729; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7730; DARWIN-64-PIC-NEXT: movq (%rax), %rax 7731; DARWIN-64-PIC-NEXT: addq $64, %rax 7732; DARWIN-64-PIC-NEXT: retq 7733 7734entry: 7735 %0 = load i32*, i32** @ptr, align 8 7736 %1 = getelementptr i32, i32* %0, i64 16 7737 %2 = bitcast i32* %1 to i8* 7738 ret i8* %2 7739} 7740 7741define i8* @bat03() nounwind { 7742; LINUX-64-STATIC-LABEL: bat03: 7743; LINUX-64-STATIC: # %bb.0: # %entry 7744; LINUX-64-STATIC-NEXT: movl $dsrc+64, %eax 7745; LINUX-64-STATIC-NEXT: retq 7746; 7747; LINUX-32-STATIC-LABEL: bat03: 7748; LINUX-32-STATIC: # %bb.0: # %entry 7749; LINUX-32-STATIC-NEXT: movl $dsrc+64, %eax 7750; LINUX-32-STATIC-NEXT: retl 7751; 7752; LINUX-32-PIC-LABEL: bat03: 7753; LINUX-32-PIC: # %bb.0: # %entry 7754; LINUX-32-PIC-NEXT: calll .L93$pb 7755; LINUX-32-PIC-NEXT: .L93$pb: 7756; LINUX-32-PIC-NEXT: popl %eax 7757; LINUX-32-PIC-NEXT: .Ltmp93: 7758; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax 7759; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax 7760; LINUX-32-PIC-NEXT: addl $64, %eax 7761; LINUX-32-PIC-NEXT: retl 7762; 7763; LINUX-64-PIC-LABEL: bat03: 7764; LINUX-64-PIC: # %bb.0: # %entry 7765; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 7766; LINUX-64-PIC-NEXT: addq $64, %rax 7767; LINUX-64-PIC-NEXT: retq 7768; 7769; DARWIN-32-STATIC-LABEL: bat03: 7770; DARWIN-32-STATIC: ## %bb.0: ## %entry 7771; DARWIN-32-STATIC-NEXT: movl $_dsrc+64, %eax 7772; DARWIN-32-STATIC-NEXT: retl 7773; 7774; DARWIN-32-DYNAMIC-LABEL: bat03: 7775; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7776; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+64, %eax 7777; DARWIN-32-DYNAMIC-NEXT: retl 7778; 7779; DARWIN-32-PIC-LABEL: bat03: 7780; DARWIN-32-PIC: ## %bb.0: ## %entry 7781; DARWIN-32-PIC-NEXT: calll L93$pb 7782; DARWIN-32-PIC-NEXT: L93$pb: 7783; DARWIN-32-PIC-NEXT: popl %eax 7784; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64(%eax), %eax 7785; DARWIN-32-PIC-NEXT: retl 7786; 7787; DARWIN-64-STATIC-LABEL: bat03: 7788; DARWIN-64-STATIC: ## %bb.0: ## %entry 7789; DARWIN-64-STATIC-NEXT: leaq _dsrc+64(%rip), %rax 7790; DARWIN-64-STATIC-NEXT: retq 7791; 7792; DARWIN-64-DYNAMIC-LABEL: bat03: 7793; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7794; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+64(%rip), %rax 7795; DARWIN-64-DYNAMIC-NEXT: retq 7796; 7797; DARWIN-64-PIC-LABEL: bat03: 7798; DARWIN-64-PIC: ## %bb.0: ## %entry 7799; DARWIN-64-PIC-NEXT: leaq _dsrc+64(%rip), %rax 7800; DARWIN-64-PIC-NEXT: retq 7801 7802entry: 7803 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 16) to i8*) 7804} 7805 7806define i8* @bat04() nounwind { 7807; LINUX-64-STATIC-LABEL: bat04: 7808; LINUX-64-STATIC: # %bb.0: # %entry 7809; LINUX-64-STATIC-NEXT: movl $ddst+64, %eax 7810; LINUX-64-STATIC-NEXT: retq 7811; 7812; LINUX-32-STATIC-LABEL: bat04: 7813; LINUX-32-STATIC: # %bb.0: # %entry 7814; LINUX-32-STATIC-NEXT: movl $ddst+64, %eax 7815; LINUX-32-STATIC-NEXT: retl 7816; 7817; LINUX-32-PIC-LABEL: bat04: 7818; LINUX-32-PIC: # %bb.0: # %entry 7819; LINUX-32-PIC-NEXT: calll .L94$pb 7820; LINUX-32-PIC-NEXT: .L94$pb: 7821; LINUX-32-PIC-NEXT: popl %eax 7822; LINUX-32-PIC-NEXT: .Ltmp94: 7823; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax 7824; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 7825; LINUX-32-PIC-NEXT: addl $64, %eax 7826; LINUX-32-PIC-NEXT: retl 7827; 7828; LINUX-64-PIC-LABEL: bat04: 7829; LINUX-64-PIC: # %bb.0: # %entry 7830; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 7831; LINUX-64-PIC-NEXT: addq $64, %rax 7832; LINUX-64-PIC-NEXT: retq 7833; 7834; DARWIN-32-STATIC-LABEL: bat04: 7835; DARWIN-32-STATIC: ## %bb.0: ## %entry 7836; DARWIN-32-STATIC-NEXT: movl $_ddst+64, %eax 7837; DARWIN-32-STATIC-NEXT: retl 7838; 7839; DARWIN-32-DYNAMIC-LABEL: bat04: 7840; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7841; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, %eax 7842; DARWIN-32-DYNAMIC-NEXT: retl 7843; 7844; DARWIN-32-PIC-LABEL: bat04: 7845; DARWIN-32-PIC: ## %bb.0: ## %entry 7846; DARWIN-32-PIC-NEXT: calll L94$pb 7847; DARWIN-32-PIC-NEXT: L94$pb: 7848; DARWIN-32-PIC-NEXT: popl %eax 7849; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64(%eax), %eax 7850; DARWIN-32-PIC-NEXT: retl 7851; 7852; DARWIN-64-STATIC-LABEL: bat04: 7853; DARWIN-64-STATIC: ## %bb.0: ## %entry 7854; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax 7855; DARWIN-64-STATIC-NEXT: retq 7856; 7857; DARWIN-64-DYNAMIC-LABEL: bat04: 7858; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7859; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax 7860; DARWIN-64-DYNAMIC-NEXT: retq 7861; 7862; DARWIN-64-PIC-LABEL: bat04: 7863; DARWIN-64-PIC: ## %bb.0: ## %entry 7864; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax 7865; DARWIN-64-PIC-NEXT: retq 7866 7867entry: 7868 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 16) to i8*) 7869} 7870 7871define i8* @bat05() nounwind { 7872; LINUX-64-STATIC-LABEL: bat05: 7873; LINUX-64-STATIC: # %bb.0: # %entry 7874; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 7875; LINUX-64-STATIC-NEXT: addq $64, %rax 7876; LINUX-64-STATIC-NEXT: retq 7877; 7878; LINUX-32-STATIC-LABEL: bat05: 7879; LINUX-32-STATIC: # %bb.0: # %entry 7880; LINUX-32-STATIC-NEXT: movl dptr, %eax 7881; LINUX-32-STATIC-NEXT: addl $64, %eax 7882; LINUX-32-STATIC-NEXT: retl 7883; 7884; LINUX-32-PIC-LABEL: bat05: 7885; LINUX-32-PIC: # %bb.0: # %entry 7886; LINUX-32-PIC-NEXT: calll .L95$pb 7887; LINUX-32-PIC-NEXT: .L95$pb: 7888; LINUX-32-PIC-NEXT: popl %eax 7889; LINUX-32-PIC-NEXT: .Ltmp95: 7890; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax 7891; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 7892; LINUX-32-PIC-NEXT: movl (%eax), %eax 7893; LINUX-32-PIC-NEXT: addl $64, %eax 7894; LINUX-32-PIC-NEXT: retl 7895; 7896; LINUX-64-PIC-LABEL: bat05: 7897; LINUX-64-PIC: # %bb.0: # %entry 7898; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax 7899; LINUX-64-PIC-NEXT: movq (%rax), %rax 7900; LINUX-64-PIC-NEXT: addq $64, %rax 7901; LINUX-64-PIC-NEXT: retq 7902; 7903; DARWIN-32-STATIC-LABEL: bat05: 7904; DARWIN-32-STATIC: ## %bb.0: ## %entry 7905; DARWIN-32-STATIC-NEXT: movl _dptr, %eax 7906; DARWIN-32-STATIC-NEXT: addl $64, %eax 7907; DARWIN-32-STATIC-NEXT: retl 7908; 7909; DARWIN-32-DYNAMIC-LABEL: bat05: 7910; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7911; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax 7912; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7913; DARWIN-32-DYNAMIC-NEXT: retl 7914; 7915; DARWIN-32-PIC-LABEL: bat05: 7916; DARWIN-32-PIC: ## %bb.0: ## %entry 7917; DARWIN-32-PIC-NEXT: calll L95$pb 7918; DARWIN-32-PIC-NEXT: L95$pb: 7919; DARWIN-32-PIC-NEXT: popl %eax 7920; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb(%eax), %eax 7921; DARWIN-32-PIC-NEXT: addl $64, %eax 7922; DARWIN-32-PIC-NEXT: retl 7923; 7924; DARWIN-64-STATIC-LABEL: bat05: 7925; DARWIN-64-STATIC: ## %bb.0: ## %entry 7926; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 7927; DARWIN-64-STATIC-NEXT: addq $64, %rax 7928; DARWIN-64-STATIC-NEXT: retq 7929; 7930; DARWIN-64-DYNAMIC-LABEL: bat05: 7931; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7932; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 7933; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7934; DARWIN-64-DYNAMIC-NEXT: retq 7935; 7936; DARWIN-64-PIC-LABEL: bat05: 7937; DARWIN-64-PIC: ## %bb.0: ## %entry 7938; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 7939; DARWIN-64-PIC-NEXT: addq $64, %rax 7940; DARWIN-64-PIC-NEXT: retq 7941 7942entry: 7943 %0 = load i32*, i32** @dptr, align 8 7944 %1 = getelementptr i32, i32* %0, i64 16 7945 %2 = bitcast i32* %1 to i8* 7946 ret i8* %2 7947} 7948 7949define i8* @bat06() nounwind { 7950; LINUX-64-STATIC-LABEL: bat06: 7951; LINUX-64-STATIC: # %bb.0: # %entry 7952; LINUX-64-STATIC-NEXT: movl $lsrc+64, %eax 7953; LINUX-64-STATIC-NEXT: retq 7954; 7955; LINUX-32-STATIC-LABEL: bat06: 7956; LINUX-32-STATIC: # %bb.0: # %entry 7957; LINUX-32-STATIC-NEXT: movl $lsrc+64, %eax 7958; LINUX-32-STATIC-NEXT: retl 7959; 7960; LINUX-32-PIC-LABEL: bat06: 7961; LINUX-32-PIC: # %bb.0: # %entry 7962; LINUX-32-PIC-NEXT: calll .L96$pb 7963; LINUX-32-PIC-NEXT: .L96$pb: 7964; LINUX-32-PIC-NEXT: popl %eax 7965; LINUX-32-PIC-NEXT: .Ltmp96: 7966; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax 7967; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax), %eax 7968; LINUX-32-PIC-NEXT: retl 7969; 7970; LINUX-64-PIC-LABEL: bat06: 7971; LINUX-64-PIC: # %bb.0: # %entry 7972; LINUX-64-PIC-NEXT: leaq lsrc+64(%rip), %rax 7973; LINUX-64-PIC-NEXT: retq 7974; 7975; DARWIN-32-STATIC-LABEL: bat06: 7976; DARWIN-32-STATIC: ## %bb.0: ## %entry 7977; DARWIN-32-STATIC-NEXT: movl $_lsrc+64, %eax 7978; DARWIN-32-STATIC-NEXT: retl 7979; 7980; DARWIN-32-DYNAMIC-LABEL: bat06: 7981; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7982; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+64, %eax 7983; DARWIN-32-DYNAMIC-NEXT: retl 7984; 7985; DARWIN-32-PIC-LABEL: bat06: 7986; DARWIN-32-PIC: ## %bb.0: ## %entry 7987; DARWIN-32-PIC-NEXT: calll L96$pb 7988; DARWIN-32-PIC-NEXT: L96$pb: 7989; DARWIN-32-PIC-NEXT: popl %eax 7990; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64(%eax), %eax 7991; DARWIN-32-PIC-NEXT: retl 7992; 7993; DARWIN-64-STATIC-LABEL: bat06: 7994; DARWIN-64-STATIC: ## %bb.0: ## %entry 7995; DARWIN-64-STATIC-NEXT: leaq _lsrc+64(%rip), %rax 7996; DARWIN-64-STATIC-NEXT: retq 7997; 7998; DARWIN-64-DYNAMIC-LABEL: bat06: 7999; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8000; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+64(%rip), %rax 8001; DARWIN-64-DYNAMIC-NEXT: retq 8002; 8003; DARWIN-64-PIC-LABEL: bat06: 8004; DARWIN-64-PIC: ## %bb.0: ## %entry 8005; DARWIN-64-PIC-NEXT: leaq _lsrc+64(%rip), %rax 8006; DARWIN-64-PIC-NEXT: retq 8007 8008entry: 8009 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 16) to i8*) 8010} 8011 8012define i8* @bat07() nounwind { 8013; LINUX-64-STATIC-LABEL: bat07: 8014; LINUX-64-STATIC: # %bb.0: # %entry 8015; LINUX-64-STATIC-NEXT: movl $ldst+64, %eax 8016; LINUX-64-STATIC-NEXT: retq 8017; 8018; LINUX-32-STATIC-LABEL: bat07: 8019; LINUX-32-STATIC: # %bb.0: # %entry 8020; LINUX-32-STATIC-NEXT: movl $ldst+64, %eax 8021; LINUX-32-STATIC-NEXT: retl 8022; 8023; LINUX-32-PIC-LABEL: bat07: 8024; LINUX-32-PIC: # %bb.0: # %entry 8025; LINUX-32-PIC-NEXT: calll .L97$pb 8026; LINUX-32-PIC-NEXT: .L97$pb: 8027; LINUX-32-PIC-NEXT: popl %eax 8028; LINUX-32-PIC-NEXT: .Ltmp97: 8029; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax 8030; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %eax 8031; LINUX-32-PIC-NEXT: retl 8032; 8033; LINUX-64-PIC-LABEL: bat07: 8034; LINUX-64-PIC: # %bb.0: # %entry 8035; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax 8036; LINUX-64-PIC-NEXT: retq 8037; 8038; DARWIN-32-STATIC-LABEL: bat07: 8039; DARWIN-32-STATIC: ## %bb.0: ## %entry 8040; DARWIN-32-STATIC-NEXT: movl $_ldst+64, %eax 8041; DARWIN-32-STATIC-NEXT: retl 8042; 8043; DARWIN-32-DYNAMIC-LABEL: bat07: 8044; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8045; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, %eax 8046; DARWIN-32-DYNAMIC-NEXT: retl 8047; 8048; DARWIN-32-PIC-LABEL: bat07: 8049; DARWIN-32-PIC: ## %bb.0: ## %entry 8050; DARWIN-32-PIC-NEXT: calll L97$pb 8051; DARWIN-32-PIC-NEXT: L97$pb: 8052; DARWIN-32-PIC-NEXT: popl %eax 8053; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64(%eax), %eax 8054; DARWIN-32-PIC-NEXT: retl 8055; 8056; DARWIN-64-STATIC-LABEL: bat07: 8057; DARWIN-64-STATIC: ## %bb.0: ## %entry 8058; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax 8059; DARWIN-64-STATIC-NEXT: retq 8060; 8061; DARWIN-64-DYNAMIC-LABEL: bat07: 8062; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8063; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax 8064; DARWIN-64-DYNAMIC-NEXT: retq 8065; 8066; DARWIN-64-PIC-LABEL: bat07: 8067; DARWIN-64-PIC: ## %bb.0: ## %entry 8068; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax 8069; DARWIN-64-PIC-NEXT: retq 8070 8071entry: 8072 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 16) to i8*) 8073} 8074 8075define i8* @bat08() nounwind { 8076; LINUX-64-STATIC-LABEL: bat08: 8077; LINUX-64-STATIC: # %bb.0: # %entry 8078; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 8079; LINUX-64-STATIC-NEXT: addq $64, %rax 8080; LINUX-64-STATIC-NEXT: retq 8081; 8082; LINUX-32-STATIC-LABEL: bat08: 8083; LINUX-32-STATIC: # %bb.0: # %entry 8084; LINUX-32-STATIC-NEXT: movl lptr, %eax 8085; LINUX-32-STATIC-NEXT: addl $64, %eax 8086; LINUX-32-STATIC-NEXT: retl 8087; 8088; LINUX-32-PIC-LABEL: bat08: 8089; LINUX-32-PIC: # %bb.0: # %entry 8090; LINUX-32-PIC-NEXT: calll .L98$pb 8091; LINUX-32-PIC-NEXT: .L98$pb: 8092; LINUX-32-PIC-NEXT: popl %eax 8093; LINUX-32-PIC-NEXT: .Ltmp98: 8094; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax 8095; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 8096; LINUX-32-PIC-NEXT: addl $64, %eax 8097; LINUX-32-PIC-NEXT: retl 8098; 8099; LINUX-64-PIC-LABEL: bat08: 8100; LINUX-64-PIC: # %bb.0: # %entry 8101; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 8102; LINUX-64-PIC-NEXT: addq $64, %rax 8103; LINUX-64-PIC-NEXT: retq 8104; 8105; DARWIN-32-STATIC-LABEL: bat08: 8106; DARWIN-32-STATIC: ## %bb.0: ## %entry 8107; DARWIN-32-STATIC-NEXT: movl _lptr, %eax 8108; DARWIN-32-STATIC-NEXT: addl $64, %eax 8109; DARWIN-32-STATIC-NEXT: retl 8110; 8111; DARWIN-32-DYNAMIC-LABEL: bat08: 8112; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8113; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax 8114; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 8115; DARWIN-32-DYNAMIC-NEXT: retl 8116; 8117; DARWIN-32-PIC-LABEL: bat08: 8118; DARWIN-32-PIC: ## %bb.0: ## %entry 8119; DARWIN-32-PIC-NEXT: calll L98$pb 8120; DARWIN-32-PIC-NEXT: L98$pb: 8121; DARWIN-32-PIC-NEXT: popl %eax 8122; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb(%eax), %eax 8123; DARWIN-32-PIC-NEXT: addl $64, %eax 8124; DARWIN-32-PIC-NEXT: retl 8125; 8126; DARWIN-64-STATIC-LABEL: bat08: 8127; DARWIN-64-STATIC: ## %bb.0: ## %entry 8128; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 8129; DARWIN-64-STATIC-NEXT: addq $64, %rax 8130; DARWIN-64-STATIC-NEXT: retq 8131; 8132; DARWIN-64-DYNAMIC-LABEL: bat08: 8133; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8134; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 8135; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 8136; DARWIN-64-DYNAMIC-NEXT: retq 8137; 8138; DARWIN-64-PIC-LABEL: bat08: 8139; DARWIN-64-PIC: ## %bb.0: ## %entry 8140; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 8141; DARWIN-64-PIC-NEXT: addq $64, %rax 8142; DARWIN-64-PIC-NEXT: retq 8143 8144entry: 8145 %0 = load i32*, i32** @lptr, align 8 8146 %1 = getelementptr i32, i32* %0, i64 16 8147 %2 = bitcast i32* %1 to i8* 8148 ret i8* %2 8149} 8150 8151define i8* @bam00() nounwind { 8152; LINUX-64-STATIC-LABEL: bam00: 8153; LINUX-64-STATIC: # %bb.0: # %entry 8154; LINUX-64-STATIC-NEXT: movl $src+262144, %eax 8155; LINUX-64-STATIC-NEXT: retq 8156; 8157; LINUX-32-STATIC-LABEL: bam00: 8158; LINUX-32-STATIC: # %bb.0: # %entry 8159; LINUX-32-STATIC-NEXT: movl $src+262144, %eax 8160; LINUX-32-STATIC-NEXT: retl 8161; 8162; LINUX-32-PIC-LABEL: bam00: 8163; LINUX-32-PIC: # %bb.0: # %entry 8164; LINUX-32-PIC-NEXT: calll .L99$pb 8165; LINUX-32-PIC-NEXT: .L99$pb: 8166; LINUX-32-PIC-NEXT: popl %ecx 8167; LINUX-32-PIC-NEXT: .Ltmp99: 8168; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx 8169; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8170; LINUX-32-PIC-NEXT: addl src@GOT(%ecx), %eax 8171; LINUX-32-PIC-NEXT: retl 8172; 8173; LINUX-64-PIC-LABEL: bam00: 8174; LINUX-64-PIC: # %bb.0: # %entry 8175; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8176; LINUX-64-PIC-NEXT: addq src@GOTPCREL(%rip), %rax 8177; LINUX-64-PIC-NEXT: retq 8178; 8179; DARWIN-32-STATIC-LABEL: bam00: 8180; DARWIN-32-STATIC: ## %bb.0: ## %entry 8181; DARWIN-32-STATIC-NEXT: movl $_src+262144, %eax 8182; DARWIN-32-STATIC-NEXT: retl 8183; 8184; DARWIN-32-DYNAMIC-LABEL: bam00: 8185; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8186; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8187; DARWIN-32-DYNAMIC-NEXT: addl L_src$non_lazy_ptr, %eax 8188; DARWIN-32-DYNAMIC-NEXT: retl 8189; 8190; DARWIN-32-PIC-LABEL: bam00: 8191; DARWIN-32-PIC: ## %bb.0: ## %entry 8192; DARWIN-32-PIC-NEXT: calll L99$pb 8193; DARWIN-32-PIC-NEXT: L99$pb: 8194; DARWIN-32-PIC-NEXT: popl %ecx 8195; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8196; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax 8197; DARWIN-32-PIC-NEXT: retl 8198; 8199; DARWIN-64-STATIC-LABEL: bam00: 8200; DARWIN-64-STATIC: ## %bb.0: ## %entry 8201; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8202; DARWIN-64-STATIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8203; DARWIN-64-STATIC-NEXT: retq 8204; 8205; DARWIN-64-DYNAMIC-LABEL: bam00: 8206; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8207; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8208; DARWIN-64-DYNAMIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8209; DARWIN-64-DYNAMIC-NEXT: retq 8210; 8211; DARWIN-64-PIC-LABEL: bam00: 8212; DARWIN-64-PIC: ## %bb.0: ## %entry 8213; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8214; DARWIN-64-PIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8215; DARWIN-64-PIC-NEXT: retq 8216 8217entry: 8218 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @src, i32 0, i64 65536) to i8*) 8219} 8220 8221define i8* @bam01() nounwind { 8222; LINUX-64-STATIC-LABEL: bam01: 8223; LINUX-64-STATIC: # %bb.0: # %entry 8224; LINUX-64-STATIC-NEXT: movl $dst+262144, %eax 8225; LINUX-64-STATIC-NEXT: retq 8226; 8227; LINUX-32-STATIC-LABEL: bam01: 8228; LINUX-32-STATIC: # %bb.0: # %entry 8229; LINUX-32-STATIC-NEXT: movl $dst+262144, %eax 8230; LINUX-32-STATIC-NEXT: retl 8231; 8232; LINUX-32-PIC-LABEL: bam01: 8233; LINUX-32-PIC: # %bb.0: # %entry 8234; LINUX-32-PIC-NEXT: calll .L100$pb 8235; LINUX-32-PIC-NEXT: .L100$pb: 8236; LINUX-32-PIC-NEXT: popl %ecx 8237; LINUX-32-PIC-NEXT: .Ltmp100: 8238; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx 8239; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8240; LINUX-32-PIC-NEXT: addl dst@GOT(%ecx), %eax 8241; LINUX-32-PIC-NEXT: retl 8242; 8243; LINUX-64-PIC-LABEL: bam01: 8244; LINUX-64-PIC: # %bb.0: # %entry 8245; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8246; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax 8247; LINUX-64-PIC-NEXT: retq 8248; 8249; DARWIN-32-STATIC-LABEL: bam01: 8250; DARWIN-32-STATIC: ## %bb.0: ## %entry 8251; DARWIN-32-STATIC-NEXT: movl $_dst+262144, %eax 8252; DARWIN-32-STATIC-NEXT: retl 8253; 8254; DARWIN-32-DYNAMIC-LABEL: bam01: 8255; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8256; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8257; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 8258; DARWIN-32-DYNAMIC-NEXT: retl 8259; 8260; DARWIN-32-PIC-LABEL: bam01: 8261; DARWIN-32-PIC: ## %bb.0: ## %entry 8262; DARWIN-32-PIC-NEXT: calll L100$pb 8263; DARWIN-32-PIC-NEXT: L100$pb: 8264; DARWIN-32-PIC-NEXT: popl %ecx 8265; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8266; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax 8267; DARWIN-32-PIC-NEXT: retl 8268; 8269; DARWIN-64-STATIC-LABEL: bam01: 8270; DARWIN-64-STATIC: ## %bb.0: ## %entry 8271; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8272; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8273; DARWIN-64-STATIC-NEXT: retq 8274; 8275; DARWIN-64-DYNAMIC-LABEL: bam01: 8276; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8277; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8278; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8279; DARWIN-64-DYNAMIC-NEXT: retq 8280; 8281; DARWIN-64-PIC-LABEL: bam01: 8282; DARWIN-64-PIC: ## %bb.0: ## %entry 8283; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8284; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8285; DARWIN-64-PIC-NEXT: retq 8286 8287entry: 8288 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dst, i32 0, i64 65536) to i8*) 8289} 8290 8291define i8* @bxm01() nounwind { 8292; LINUX-64-STATIC-LABEL: bxm01: 8293; LINUX-64-STATIC: # %bb.0: # %entry 8294; LINUX-64-STATIC-NEXT: movl $xdst+262144, %eax 8295; LINUX-64-STATIC-NEXT: retq 8296; 8297; LINUX-32-STATIC-LABEL: bxm01: 8298; LINUX-32-STATIC: # %bb.0: # %entry 8299; LINUX-32-STATIC-NEXT: movl $xdst+262144, %eax 8300; LINUX-32-STATIC-NEXT: retl 8301; 8302; LINUX-32-PIC-LABEL: bxm01: 8303; LINUX-32-PIC: # %bb.0: # %entry 8304; LINUX-32-PIC-NEXT: calll .L101$pb 8305; LINUX-32-PIC-NEXT: .L101$pb: 8306; LINUX-32-PIC-NEXT: popl %ecx 8307; LINUX-32-PIC-NEXT: .Ltmp101: 8308; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx 8309; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8310; LINUX-32-PIC-NEXT: addl xdst@GOT(%ecx), %eax 8311; LINUX-32-PIC-NEXT: retl 8312; 8313; LINUX-64-PIC-LABEL: bxm01: 8314; LINUX-64-PIC: # %bb.0: # %entry 8315; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8316; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rax 8317; LINUX-64-PIC-NEXT: retq 8318; 8319; DARWIN-32-STATIC-LABEL: bxm01: 8320; DARWIN-32-STATIC: ## %bb.0: ## %entry 8321; DARWIN-32-STATIC-NEXT: movl $_xdst+262144, %eax 8322; DARWIN-32-STATIC-NEXT: retl 8323; 8324; DARWIN-32-DYNAMIC-LABEL: bxm01: 8325; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8326; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8327; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax 8328; DARWIN-32-DYNAMIC-NEXT: retl 8329; 8330; DARWIN-32-PIC-LABEL: bxm01: 8331; DARWIN-32-PIC: ## %bb.0: ## %entry 8332; DARWIN-32-PIC-NEXT: calll L101$pb 8333; DARWIN-32-PIC-NEXT: L101$pb: 8334; DARWIN-32-PIC-NEXT: popl %ecx 8335; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8336; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax 8337; DARWIN-32-PIC-NEXT: retl 8338; 8339; DARWIN-64-STATIC-LABEL: bxm01: 8340; DARWIN-64-STATIC: ## %bb.0: ## %entry 8341; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8342; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8343; DARWIN-64-STATIC-NEXT: retq 8344; 8345; DARWIN-64-DYNAMIC-LABEL: bxm01: 8346; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8347; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8348; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8349; DARWIN-64-DYNAMIC-NEXT: retq 8350; 8351; DARWIN-64-PIC-LABEL: bxm01: 8352; DARWIN-64-PIC: ## %bb.0: ## %entry 8353; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8354; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8355; DARWIN-64-PIC-NEXT: retq 8356 8357entry: 8358 ret i8* bitcast (i32* getelementptr ([32 x i32], [32 x i32]* @xdst, i32 0, i64 65536) to i8*) 8359} 8360 8361define i8* @bam02() nounwind { 8362; LINUX-64-STATIC-LABEL: bam02: 8363; LINUX-64-STATIC: # %bb.0: # %entry 8364; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8365; LINUX-64-STATIC-NEXT: addq ptr(%rip), %rax 8366; LINUX-64-STATIC-NEXT: retq 8367; 8368; LINUX-32-STATIC-LABEL: bam02: 8369; LINUX-32-STATIC: # %bb.0: # %entry 8370; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8371; LINUX-32-STATIC-NEXT: addl ptr, %eax 8372; LINUX-32-STATIC-NEXT: retl 8373; 8374; LINUX-32-PIC-LABEL: bam02: 8375; LINUX-32-PIC: # %bb.0: # %entry 8376; LINUX-32-PIC-NEXT: calll .L102$pb 8377; LINUX-32-PIC-NEXT: .L102$pb: 8378; LINUX-32-PIC-NEXT: popl %eax 8379; LINUX-32-PIC-NEXT: .Ltmp102: 8380; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax 8381; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %ecx 8382; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8383; LINUX-32-PIC-NEXT: addl (%ecx), %eax 8384; LINUX-32-PIC-NEXT: retl 8385; 8386; LINUX-64-PIC-LABEL: bam02: 8387; LINUX-64-PIC: # %bb.0: # %entry 8388; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 8389; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8390; LINUX-64-PIC-NEXT: addq (%rcx), %rax 8391; LINUX-64-PIC-NEXT: retq 8392; 8393; DARWIN-32-STATIC-LABEL: bam02: 8394; DARWIN-32-STATIC: ## %bb.0: ## %entry 8395; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8396; DARWIN-32-STATIC-NEXT: addl _ptr, %eax 8397; DARWIN-32-STATIC-NEXT: retl 8398; 8399; DARWIN-32-DYNAMIC-LABEL: bam02: 8400; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8401; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 8402; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8403; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax 8404; DARWIN-32-DYNAMIC-NEXT: retl 8405; 8406; DARWIN-32-PIC-LABEL: bam02: 8407; DARWIN-32-PIC: ## %bb.0: ## %entry 8408; DARWIN-32-PIC-NEXT: calll L102$pb 8409; DARWIN-32-PIC-NEXT: L102$pb: 8410; DARWIN-32-PIC-NEXT: popl %eax 8411; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx 8412; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8413; DARWIN-32-PIC-NEXT: addl (%ecx), %eax 8414; DARWIN-32-PIC-NEXT: retl 8415; 8416; DARWIN-64-STATIC-LABEL: bam02: 8417; DARWIN-64-STATIC: ## %bb.0: ## %entry 8418; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8419; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8420; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax 8421; DARWIN-64-STATIC-NEXT: retq 8422; 8423; DARWIN-64-DYNAMIC-LABEL: bam02: 8424; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8425; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8426; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8427; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax 8428; DARWIN-64-DYNAMIC-NEXT: retq 8429; 8430; DARWIN-64-PIC-LABEL: bam02: 8431; DARWIN-64-PIC: ## %bb.0: ## %entry 8432; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8433; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8434; DARWIN-64-PIC-NEXT: addq (%rcx), %rax 8435; DARWIN-64-PIC-NEXT: retq 8436 8437entry: 8438 %0 = load i32*, i32** @ptr, align 8 8439 %1 = getelementptr i32, i32* %0, i64 65536 8440 %2 = bitcast i32* %1 to i8* 8441 ret i8* %2 8442} 8443 8444define i8* @bam03() nounwind { 8445; LINUX-64-STATIC-LABEL: bam03: 8446; LINUX-64-STATIC: # %bb.0: # %entry 8447; LINUX-64-STATIC-NEXT: movl $dsrc+262144, %eax 8448; LINUX-64-STATIC-NEXT: retq 8449; 8450; LINUX-32-STATIC-LABEL: bam03: 8451; LINUX-32-STATIC: # %bb.0: # %entry 8452; LINUX-32-STATIC-NEXT: movl $dsrc+262144, %eax 8453; LINUX-32-STATIC-NEXT: retl 8454; 8455; LINUX-32-PIC-LABEL: bam03: 8456; LINUX-32-PIC: # %bb.0: # %entry 8457; LINUX-32-PIC-NEXT: calll .L103$pb 8458; LINUX-32-PIC-NEXT: .L103$pb: 8459; LINUX-32-PIC-NEXT: popl %ecx 8460; LINUX-32-PIC-NEXT: .Ltmp103: 8461; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %ecx 8462; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8463; LINUX-32-PIC-NEXT: addl dsrc@GOT(%ecx), %eax 8464; LINUX-32-PIC-NEXT: retl 8465; 8466; LINUX-64-PIC-LABEL: bam03: 8467; LINUX-64-PIC: # %bb.0: # %entry 8468; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8469; LINUX-64-PIC-NEXT: addq dsrc@GOTPCREL(%rip), %rax 8470; LINUX-64-PIC-NEXT: retq 8471; 8472; DARWIN-32-STATIC-LABEL: bam03: 8473; DARWIN-32-STATIC: ## %bb.0: ## %entry 8474; DARWIN-32-STATIC-NEXT: movl $_dsrc+262144, %eax 8475; DARWIN-32-STATIC-NEXT: retl 8476; 8477; DARWIN-32-DYNAMIC-LABEL: bam03: 8478; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8479; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+262144, %eax 8480; DARWIN-32-DYNAMIC-NEXT: retl 8481; 8482; DARWIN-32-PIC-LABEL: bam03: 8483; DARWIN-32-PIC: ## %bb.0: ## %entry 8484; DARWIN-32-PIC-NEXT: calll L103$pb 8485; DARWIN-32-PIC-NEXT: L103$pb: 8486; DARWIN-32-PIC-NEXT: popl %eax 8487; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144(%eax), %eax 8488; DARWIN-32-PIC-NEXT: retl 8489; 8490; DARWIN-64-STATIC-LABEL: bam03: 8491; DARWIN-64-STATIC: ## %bb.0: ## %entry 8492; DARWIN-64-STATIC-NEXT: leaq _dsrc+262144(%rip), %rax 8493; DARWIN-64-STATIC-NEXT: retq 8494; 8495; DARWIN-64-DYNAMIC-LABEL: bam03: 8496; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8497; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+262144(%rip), %rax 8498; DARWIN-64-DYNAMIC-NEXT: retq 8499; 8500; DARWIN-64-PIC-LABEL: bam03: 8501; DARWIN-64-PIC: ## %bb.0: ## %entry 8502; DARWIN-64-PIC-NEXT: leaq _dsrc+262144(%rip), %rax 8503; DARWIN-64-PIC-NEXT: retq 8504 8505entry: 8506 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @dsrc, i32 0, i64 65536) to i8*) 8507} 8508 8509define i8* @bam04() nounwind { 8510; LINUX-64-STATIC-LABEL: bam04: 8511; LINUX-64-STATIC: # %bb.0: # %entry 8512; LINUX-64-STATIC-NEXT: movl $ddst+262144, %eax 8513; LINUX-64-STATIC-NEXT: retq 8514; 8515; LINUX-32-STATIC-LABEL: bam04: 8516; LINUX-32-STATIC: # %bb.0: # %entry 8517; LINUX-32-STATIC-NEXT: movl $ddst+262144, %eax 8518; LINUX-32-STATIC-NEXT: retl 8519; 8520; LINUX-32-PIC-LABEL: bam04: 8521; LINUX-32-PIC: # %bb.0: # %entry 8522; LINUX-32-PIC-NEXT: calll .L104$pb 8523; LINUX-32-PIC-NEXT: .L104$pb: 8524; LINUX-32-PIC-NEXT: popl %ecx 8525; LINUX-32-PIC-NEXT: .Ltmp104: 8526; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %ecx 8527; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8528; LINUX-32-PIC-NEXT: addl ddst@GOT(%ecx), %eax 8529; LINUX-32-PIC-NEXT: retl 8530; 8531; LINUX-64-PIC-LABEL: bam04: 8532; LINUX-64-PIC: # %bb.0: # %entry 8533; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8534; LINUX-64-PIC-NEXT: addq ddst@GOTPCREL(%rip), %rax 8535; LINUX-64-PIC-NEXT: retq 8536; 8537; DARWIN-32-STATIC-LABEL: bam04: 8538; DARWIN-32-STATIC: ## %bb.0: ## %entry 8539; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, %eax 8540; DARWIN-32-STATIC-NEXT: retl 8541; 8542; DARWIN-32-DYNAMIC-LABEL: bam04: 8543; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8544; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, %eax 8545; DARWIN-32-DYNAMIC-NEXT: retl 8546; 8547; DARWIN-32-PIC-LABEL: bam04: 8548; DARWIN-32-PIC: ## %bb.0: ## %entry 8549; DARWIN-32-PIC-NEXT: calll L104$pb 8550; DARWIN-32-PIC-NEXT: L104$pb: 8551; DARWIN-32-PIC-NEXT: popl %eax 8552; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144(%eax), %eax 8553; DARWIN-32-PIC-NEXT: retl 8554; 8555; DARWIN-64-STATIC-LABEL: bam04: 8556; DARWIN-64-STATIC: ## %bb.0: ## %entry 8557; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax 8558; DARWIN-64-STATIC-NEXT: retq 8559; 8560; DARWIN-64-DYNAMIC-LABEL: bam04: 8561; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8562; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax 8563; DARWIN-64-DYNAMIC-NEXT: retq 8564; 8565; DARWIN-64-PIC-LABEL: bam04: 8566; DARWIN-64-PIC: ## %bb.0: ## %entry 8567; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax 8568; DARWIN-64-PIC-NEXT: retq 8569 8570entry: 8571 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ddst, i32 0, i64 65536) to i8*) 8572} 8573 8574define i8* @bam05() nounwind { 8575; LINUX-64-STATIC-LABEL: bam05: 8576; LINUX-64-STATIC: # %bb.0: # %entry 8577; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8578; LINUX-64-STATIC-NEXT: addq dptr(%rip), %rax 8579; LINUX-64-STATIC-NEXT: retq 8580; 8581; LINUX-32-STATIC-LABEL: bam05: 8582; LINUX-32-STATIC: # %bb.0: # %entry 8583; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8584; LINUX-32-STATIC-NEXT: addl dptr, %eax 8585; LINUX-32-STATIC-NEXT: retl 8586; 8587; LINUX-32-PIC-LABEL: bam05: 8588; LINUX-32-PIC: # %bb.0: # %entry 8589; LINUX-32-PIC-NEXT: calll .L105$pb 8590; LINUX-32-PIC-NEXT: .L105$pb: 8591; LINUX-32-PIC-NEXT: popl %eax 8592; LINUX-32-PIC-NEXT: .Ltmp105: 8593; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %eax 8594; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %ecx 8595; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8596; LINUX-32-PIC-NEXT: addl (%ecx), %eax 8597; LINUX-32-PIC-NEXT: retl 8598; 8599; LINUX-64-PIC-LABEL: bam05: 8600; LINUX-64-PIC: # %bb.0: # %entry 8601; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rcx 8602; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8603; LINUX-64-PIC-NEXT: addq (%rcx), %rax 8604; LINUX-64-PIC-NEXT: retq 8605; 8606; DARWIN-32-STATIC-LABEL: bam05: 8607; DARWIN-32-STATIC: ## %bb.0: ## %entry 8608; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8609; DARWIN-32-STATIC-NEXT: addl _dptr, %eax 8610; DARWIN-32-STATIC-NEXT: retl 8611; 8612; DARWIN-32-DYNAMIC-LABEL: bam05: 8613; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8614; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8615; DARWIN-32-DYNAMIC-NEXT: addl _dptr, %eax 8616; DARWIN-32-DYNAMIC-NEXT: retl 8617; 8618; DARWIN-32-PIC-LABEL: bam05: 8619; DARWIN-32-PIC: ## %bb.0: ## %entry 8620; DARWIN-32-PIC-NEXT: calll L105$pb 8621; DARWIN-32-PIC-NEXT: L105$pb: 8622; DARWIN-32-PIC-NEXT: popl %ecx 8623; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8624; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb(%ecx), %eax 8625; DARWIN-32-PIC-NEXT: retl 8626; 8627; DARWIN-64-STATIC-LABEL: bam05: 8628; DARWIN-64-STATIC: ## %bb.0: ## %entry 8629; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8630; DARWIN-64-STATIC-NEXT: addq _dptr(%rip), %rax 8631; DARWIN-64-STATIC-NEXT: retq 8632; 8633; DARWIN-64-DYNAMIC-LABEL: bam05: 8634; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8635; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8636; DARWIN-64-DYNAMIC-NEXT: addq _dptr(%rip), %rax 8637; DARWIN-64-DYNAMIC-NEXT: retq 8638; 8639; DARWIN-64-PIC-LABEL: bam05: 8640; DARWIN-64-PIC: ## %bb.0: ## %entry 8641; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8642; DARWIN-64-PIC-NEXT: addq _dptr(%rip), %rax 8643; DARWIN-64-PIC-NEXT: retq 8644 8645entry: 8646 %0 = load i32*, i32** @dptr, align 8 8647 %1 = getelementptr i32, i32* %0, i64 65536 8648 %2 = bitcast i32* %1 to i8* 8649 ret i8* %2 8650} 8651 8652define i8* @bam06() nounwind { 8653; LINUX-64-STATIC-LABEL: bam06: 8654; LINUX-64-STATIC: # %bb.0: # %entry 8655; LINUX-64-STATIC-NEXT: movl $lsrc+262144, %eax 8656; LINUX-64-STATIC-NEXT: retq 8657; 8658; LINUX-32-STATIC-LABEL: bam06: 8659; LINUX-32-STATIC: # %bb.0: # %entry 8660; LINUX-32-STATIC-NEXT: movl $lsrc+262144, %eax 8661; LINUX-32-STATIC-NEXT: retl 8662; 8663; LINUX-32-PIC-LABEL: bam06: 8664; LINUX-32-PIC: # %bb.0: # %entry 8665; LINUX-32-PIC-NEXT: calll .L106$pb 8666; LINUX-32-PIC-NEXT: .L106$pb: 8667; LINUX-32-PIC-NEXT: popl %eax 8668; LINUX-32-PIC-NEXT: .Ltmp106: 8669; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax 8670; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax), %eax 8671; LINUX-32-PIC-NEXT: retl 8672; 8673; LINUX-64-PIC-LABEL: bam06: 8674; LINUX-64-PIC: # %bb.0: # %entry 8675; LINUX-64-PIC-NEXT: leaq lsrc+262144(%rip), %rax 8676; LINUX-64-PIC-NEXT: retq 8677; 8678; DARWIN-32-STATIC-LABEL: bam06: 8679; DARWIN-32-STATIC: ## %bb.0: ## %entry 8680; DARWIN-32-STATIC-NEXT: movl $_lsrc+262144, %eax 8681; DARWIN-32-STATIC-NEXT: retl 8682; 8683; DARWIN-32-DYNAMIC-LABEL: bam06: 8684; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8685; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+262144, %eax 8686; DARWIN-32-DYNAMIC-NEXT: retl 8687; 8688; DARWIN-32-PIC-LABEL: bam06: 8689; DARWIN-32-PIC: ## %bb.0: ## %entry 8690; DARWIN-32-PIC-NEXT: calll L106$pb 8691; DARWIN-32-PIC-NEXT: L106$pb: 8692; DARWIN-32-PIC-NEXT: popl %eax 8693; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144(%eax), %eax 8694; DARWIN-32-PIC-NEXT: retl 8695; 8696; DARWIN-64-STATIC-LABEL: bam06: 8697; DARWIN-64-STATIC: ## %bb.0: ## %entry 8698; DARWIN-64-STATIC-NEXT: leaq _lsrc+262144(%rip), %rax 8699; DARWIN-64-STATIC-NEXT: retq 8700; 8701; DARWIN-64-DYNAMIC-LABEL: bam06: 8702; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8703; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+262144(%rip), %rax 8704; DARWIN-64-DYNAMIC-NEXT: retq 8705; 8706; DARWIN-64-PIC-LABEL: bam06: 8707; DARWIN-64-PIC: ## %bb.0: ## %entry 8708; DARWIN-64-PIC-NEXT: leaq _lsrc+262144(%rip), %rax 8709; DARWIN-64-PIC-NEXT: retq 8710 8711entry: 8712 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @lsrc, i32 0, i64 65536) to i8*) 8713} 8714 8715define i8* @bam07() nounwind { 8716; LINUX-64-STATIC-LABEL: bam07: 8717; LINUX-64-STATIC: # %bb.0: # %entry 8718; LINUX-64-STATIC-NEXT: movl $ldst+262144, %eax 8719; LINUX-64-STATIC-NEXT: retq 8720; 8721; LINUX-32-STATIC-LABEL: bam07: 8722; LINUX-32-STATIC: # %bb.0: # %entry 8723; LINUX-32-STATIC-NEXT: movl $ldst+262144, %eax 8724; LINUX-32-STATIC-NEXT: retl 8725; 8726; LINUX-32-PIC-LABEL: bam07: 8727; LINUX-32-PIC: # %bb.0: # %entry 8728; LINUX-32-PIC-NEXT: calll .L107$pb 8729; LINUX-32-PIC-NEXT: .L107$pb: 8730; LINUX-32-PIC-NEXT: popl %eax 8731; LINUX-32-PIC-NEXT: .Ltmp107: 8732; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax 8733; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %eax 8734; LINUX-32-PIC-NEXT: retl 8735; 8736; LINUX-64-PIC-LABEL: bam07: 8737; LINUX-64-PIC: # %bb.0: # %entry 8738; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax 8739; LINUX-64-PIC-NEXT: retq 8740; 8741; DARWIN-32-STATIC-LABEL: bam07: 8742; DARWIN-32-STATIC: ## %bb.0: ## %entry 8743; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, %eax 8744; DARWIN-32-STATIC-NEXT: retl 8745; 8746; DARWIN-32-DYNAMIC-LABEL: bam07: 8747; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8748; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, %eax 8749; DARWIN-32-DYNAMIC-NEXT: retl 8750; 8751; DARWIN-32-PIC-LABEL: bam07: 8752; DARWIN-32-PIC: ## %bb.0: ## %entry 8753; DARWIN-32-PIC-NEXT: calll L107$pb 8754; DARWIN-32-PIC-NEXT: L107$pb: 8755; DARWIN-32-PIC-NEXT: popl %eax 8756; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144(%eax), %eax 8757; DARWIN-32-PIC-NEXT: retl 8758; 8759; DARWIN-64-STATIC-LABEL: bam07: 8760; DARWIN-64-STATIC: ## %bb.0: ## %entry 8761; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax 8762; DARWIN-64-STATIC-NEXT: retq 8763; 8764; DARWIN-64-DYNAMIC-LABEL: bam07: 8765; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8766; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax 8767; DARWIN-64-DYNAMIC-NEXT: retq 8768; 8769; DARWIN-64-PIC-LABEL: bam07: 8770; DARWIN-64-PIC: ## %bb.0: ## %entry 8771; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax 8772; DARWIN-64-PIC-NEXT: retq 8773 8774entry: 8775 ret i8* bitcast (i32* getelementptr ([131072 x i32], [131072 x i32]* @ldst, i32 0, i64 65536) to i8*) 8776} 8777 8778define i8* @bam08() nounwind { 8779; LINUX-64-STATIC-LABEL: bam08: 8780; LINUX-64-STATIC: # %bb.0: # %entry 8781; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8782; LINUX-64-STATIC-NEXT: addq lptr(%rip), %rax 8783; LINUX-64-STATIC-NEXT: retq 8784; 8785; LINUX-32-STATIC-LABEL: bam08: 8786; LINUX-32-STATIC: # %bb.0: # %entry 8787; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8788; LINUX-32-STATIC-NEXT: addl lptr, %eax 8789; LINUX-32-STATIC-NEXT: retl 8790; 8791; LINUX-32-PIC-LABEL: bam08: 8792; LINUX-32-PIC: # %bb.0: # %entry 8793; LINUX-32-PIC-NEXT: calll .L108$pb 8794; LINUX-32-PIC-NEXT: .L108$pb: 8795; LINUX-32-PIC-NEXT: popl %ecx 8796; LINUX-32-PIC-NEXT: .Ltmp108: 8797; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx 8798; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8799; LINUX-32-PIC-NEXT: addl lptr@GOTOFF(%ecx), %eax 8800; LINUX-32-PIC-NEXT: retl 8801; 8802; LINUX-64-PIC-LABEL: bam08: 8803; LINUX-64-PIC: # %bb.0: # %entry 8804; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8805; LINUX-64-PIC-NEXT: addq lptr(%rip), %rax 8806; LINUX-64-PIC-NEXT: retq 8807; 8808; DARWIN-32-STATIC-LABEL: bam08: 8809; DARWIN-32-STATIC: ## %bb.0: ## %entry 8810; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8811; DARWIN-32-STATIC-NEXT: addl _lptr, %eax 8812; DARWIN-32-STATIC-NEXT: retl 8813; 8814; DARWIN-32-DYNAMIC-LABEL: bam08: 8815; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8816; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8817; DARWIN-32-DYNAMIC-NEXT: addl _lptr, %eax 8818; DARWIN-32-DYNAMIC-NEXT: retl 8819; 8820; DARWIN-32-PIC-LABEL: bam08: 8821; DARWIN-32-PIC: ## %bb.0: ## %entry 8822; DARWIN-32-PIC-NEXT: calll L108$pb 8823; DARWIN-32-PIC-NEXT: L108$pb: 8824; DARWIN-32-PIC-NEXT: popl %ecx 8825; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8826; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb(%ecx), %eax 8827; DARWIN-32-PIC-NEXT: retl 8828; 8829; DARWIN-64-STATIC-LABEL: bam08: 8830; DARWIN-64-STATIC: ## %bb.0: ## %entry 8831; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8832; DARWIN-64-STATIC-NEXT: addq _lptr(%rip), %rax 8833; DARWIN-64-STATIC-NEXT: retq 8834; 8835; DARWIN-64-DYNAMIC-LABEL: bam08: 8836; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8837; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8838; DARWIN-64-DYNAMIC-NEXT: addq _lptr(%rip), %rax 8839; DARWIN-64-DYNAMIC-NEXT: retq 8840; 8841; DARWIN-64-PIC-LABEL: bam08: 8842; DARWIN-64-PIC: ## %bb.0: ## %entry 8843; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8844; DARWIN-64-PIC-NEXT: addq _lptr(%rip), %rax 8845; DARWIN-64-PIC-NEXT: retq 8846 8847entry: 8848 %0 = load i32*, i32** @lptr, align 8 8849 %1 = getelementptr i32, i32* %0, i64 65536 8850 %2 = bitcast i32* %1 to i8* 8851 ret i8* %2 8852} 8853 8854define i8* @cat00(i64 %i) nounwind { 8855; LINUX-64-STATIC-LABEL: cat00: 8856; LINUX-64-STATIC: # %bb.0: # %entry 8857; LINUX-64-STATIC-NEXT: leaq src+64(,%rdi,4), %rax 8858; LINUX-64-STATIC-NEXT: retq 8859; 8860; LINUX-32-STATIC-LABEL: cat00: 8861; LINUX-32-STATIC: # %bb.0: # %entry 8862; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8863; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax 8864; LINUX-32-STATIC-NEXT: retl 8865; 8866; LINUX-32-PIC-LABEL: cat00: 8867; LINUX-32-PIC: # %bb.0: # %entry 8868; LINUX-32-PIC-NEXT: calll .L109$pb 8869; LINUX-32-PIC-NEXT: .L109$pb: 8870; LINUX-32-PIC-NEXT: popl %eax 8871; LINUX-32-PIC-NEXT: .Ltmp109: 8872; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax 8873; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8874; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 8875; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8876; LINUX-32-PIC-NEXT: retl 8877; 8878; LINUX-64-PIC-LABEL: cat00: 8879; LINUX-64-PIC: # %bb.0: # %entry 8880; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 8881; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8882; LINUX-64-PIC-NEXT: retq 8883; 8884; DARWIN-32-STATIC-LABEL: cat00: 8885; DARWIN-32-STATIC: ## %bb.0: ## %entry 8886; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8887; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax 8888; DARWIN-32-STATIC-NEXT: retl 8889; 8890; DARWIN-32-DYNAMIC-LABEL: cat00: 8891; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8892; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8893; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 8894; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 8895; DARWIN-32-DYNAMIC-NEXT: retl 8896; 8897; DARWIN-32-PIC-LABEL: cat00: 8898; DARWIN-32-PIC: ## %bb.0: ## %entry 8899; DARWIN-32-PIC-NEXT: calll L109$pb 8900; DARWIN-32-PIC-NEXT: L109$pb: 8901; DARWIN-32-PIC-NEXT: popl %eax 8902; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8903; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb(%eax), %eax 8904; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8905; DARWIN-32-PIC-NEXT: retl 8906; 8907; DARWIN-64-STATIC-LABEL: cat00: 8908; DARWIN-64-STATIC: ## %bb.0: ## %entry 8909; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8910; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8911; DARWIN-64-STATIC-NEXT: retq 8912; 8913; DARWIN-64-DYNAMIC-LABEL: cat00: 8914; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8915; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8916; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8917; DARWIN-64-DYNAMIC-NEXT: retq 8918; 8919; DARWIN-64-PIC-LABEL: cat00: 8920; DARWIN-64-PIC: ## %bb.0: ## %entry 8921; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8922; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8923; DARWIN-64-PIC-NEXT: retq 8924 8925entry: 8926 %0 = add i64 %i, 16 8927 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 8928 %2 = bitcast i32* %1 to i8* 8929 ret i8* %2 8930} 8931 8932define i8* @cxt00(i64 %i) nounwind { 8933; LINUX-64-STATIC-LABEL: cxt00: 8934; LINUX-64-STATIC: # %bb.0: # %entry 8935; LINUX-64-STATIC-NEXT: leaq xsrc+64(,%rdi,4), %rax 8936; LINUX-64-STATIC-NEXT: retq 8937; 8938; LINUX-32-STATIC-LABEL: cxt00: 8939; LINUX-32-STATIC: # %bb.0: # %entry 8940; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8941; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax 8942; LINUX-32-STATIC-NEXT: retl 8943; 8944; LINUX-32-PIC-LABEL: cxt00: 8945; LINUX-32-PIC: # %bb.0: # %entry 8946; LINUX-32-PIC-NEXT: calll .L110$pb 8947; LINUX-32-PIC-NEXT: .L110$pb: 8948; LINUX-32-PIC-NEXT: popl %eax 8949; LINUX-32-PIC-NEXT: .Ltmp110: 8950; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax 8951; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8952; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 8953; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8954; LINUX-32-PIC-NEXT: retl 8955; 8956; LINUX-64-PIC-LABEL: cxt00: 8957; LINUX-64-PIC: # %bb.0: # %entry 8958; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 8959; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8960; LINUX-64-PIC-NEXT: retq 8961; 8962; DARWIN-32-STATIC-LABEL: cxt00: 8963; DARWIN-32-STATIC: ## %bb.0: ## %entry 8964; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8965; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax 8966; DARWIN-32-STATIC-NEXT: retl 8967; 8968; DARWIN-32-DYNAMIC-LABEL: cxt00: 8969; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8970; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8971; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 8972; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 8973; DARWIN-32-DYNAMIC-NEXT: retl 8974; 8975; DARWIN-32-PIC-LABEL: cxt00: 8976; DARWIN-32-PIC: ## %bb.0: ## %entry 8977; DARWIN-32-PIC-NEXT: calll L110$pb 8978; DARWIN-32-PIC-NEXT: L110$pb: 8979; DARWIN-32-PIC-NEXT: popl %eax 8980; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8981; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax 8982; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8983; DARWIN-32-PIC-NEXT: retl 8984; 8985; DARWIN-64-STATIC-LABEL: cxt00: 8986; DARWIN-64-STATIC: ## %bb.0: ## %entry 8987; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 8988; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8989; DARWIN-64-STATIC-NEXT: retq 8990; 8991; DARWIN-64-DYNAMIC-LABEL: cxt00: 8992; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8993; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 8994; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8995; DARWIN-64-DYNAMIC-NEXT: retq 8996; 8997; DARWIN-64-PIC-LABEL: cxt00: 8998; DARWIN-64-PIC: ## %bb.0: ## %entry 8999; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9000; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9001; DARWIN-64-PIC-NEXT: retq 9002 9003entry: 9004 %0 = add i64 %i, 16 9005 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 9006 %2 = bitcast i32* %1 to i8* 9007 ret i8* %2 9008} 9009 9010define i8* @cat01(i64 %i) nounwind { 9011; LINUX-64-STATIC-LABEL: cat01: 9012; LINUX-64-STATIC: # %bb.0: # %entry 9013; LINUX-64-STATIC-NEXT: leaq dst+64(,%rdi,4), %rax 9014; LINUX-64-STATIC-NEXT: retq 9015; 9016; LINUX-32-STATIC-LABEL: cat01: 9017; LINUX-32-STATIC: # %bb.0: # %entry 9018; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9019; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax 9020; LINUX-32-STATIC-NEXT: retl 9021; 9022; LINUX-32-PIC-LABEL: cat01: 9023; LINUX-32-PIC: # %bb.0: # %entry 9024; LINUX-32-PIC-NEXT: calll .L111$pb 9025; LINUX-32-PIC-NEXT: .L111$pb: 9026; LINUX-32-PIC-NEXT: popl %eax 9027; LINUX-32-PIC-NEXT: .Ltmp111: 9028; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax 9029; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9030; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 9031; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9032; LINUX-32-PIC-NEXT: retl 9033; 9034; LINUX-64-PIC-LABEL: cat01: 9035; LINUX-64-PIC: # %bb.0: # %entry 9036; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9037; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9038; LINUX-64-PIC-NEXT: retq 9039; 9040; DARWIN-32-STATIC-LABEL: cat01: 9041; DARWIN-32-STATIC: ## %bb.0: ## %entry 9042; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9043; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax 9044; DARWIN-32-STATIC-NEXT: retl 9045; 9046; DARWIN-32-DYNAMIC-LABEL: cat01: 9047; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9048; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9049; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 9050; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9051; DARWIN-32-DYNAMIC-NEXT: retl 9052; 9053; DARWIN-32-PIC-LABEL: cat01: 9054; DARWIN-32-PIC: ## %bb.0: ## %entry 9055; DARWIN-32-PIC-NEXT: calll L111$pb 9056; DARWIN-32-PIC-NEXT: L111$pb: 9057; DARWIN-32-PIC-NEXT: popl %eax 9058; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9059; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax 9060; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9061; DARWIN-32-PIC-NEXT: retl 9062; 9063; DARWIN-64-STATIC-LABEL: cat01: 9064; DARWIN-64-STATIC: ## %bb.0: ## %entry 9065; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9066; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9067; DARWIN-64-STATIC-NEXT: retq 9068; 9069; DARWIN-64-DYNAMIC-LABEL: cat01: 9070; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9071; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9072; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9073; DARWIN-64-DYNAMIC-NEXT: retq 9074; 9075; DARWIN-64-PIC-LABEL: cat01: 9076; DARWIN-64-PIC: ## %bb.0: ## %entry 9077; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9078; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9079; DARWIN-64-PIC-NEXT: retq 9080 9081entry: 9082 %0 = add i64 %i, 16 9083 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 9084 %2 = bitcast i32* %1 to i8* 9085 ret i8* %2 9086} 9087 9088define i8* @cxt01(i64 %i) nounwind { 9089; LINUX-64-STATIC-LABEL: cxt01: 9090; LINUX-64-STATIC: # %bb.0: # %entry 9091; LINUX-64-STATIC-NEXT: leaq xdst+64(,%rdi,4), %rax 9092; LINUX-64-STATIC-NEXT: retq 9093; 9094; LINUX-32-STATIC-LABEL: cxt01: 9095; LINUX-32-STATIC: # %bb.0: # %entry 9096; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9097; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax 9098; LINUX-32-STATIC-NEXT: retl 9099; 9100; LINUX-32-PIC-LABEL: cxt01: 9101; LINUX-32-PIC: # %bb.0: # %entry 9102; LINUX-32-PIC-NEXT: calll .L112$pb 9103; LINUX-32-PIC-NEXT: .L112$pb: 9104; LINUX-32-PIC-NEXT: popl %eax 9105; LINUX-32-PIC-NEXT: .Ltmp112: 9106; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax 9107; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9108; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 9109; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9110; LINUX-32-PIC-NEXT: retl 9111; 9112; LINUX-64-PIC-LABEL: cxt01: 9113; LINUX-64-PIC: # %bb.0: # %entry 9114; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9115; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9116; LINUX-64-PIC-NEXT: retq 9117; 9118; DARWIN-32-STATIC-LABEL: cxt01: 9119; DARWIN-32-STATIC: ## %bb.0: ## %entry 9120; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9121; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax 9122; DARWIN-32-STATIC-NEXT: retl 9123; 9124; DARWIN-32-DYNAMIC-LABEL: cxt01: 9125; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9126; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9127; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 9128; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9129; DARWIN-32-DYNAMIC-NEXT: retl 9130; 9131; DARWIN-32-PIC-LABEL: cxt01: 9132; DARWIN-32-PIC: ## %bb.0: ## %entry 9133; DARWIN-32-PIC-NEXT: calll L112$pb 9134; DARWIN-32-PIC-NEXT: L112$pb: 9135; DARWIN-32-PIC-NEXT: popl %eax 9136; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9137; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax 9138; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9139; DARWIN-32-PIC-NEXT: retl 9140; 9141; DARWIN-64-STATIC-LABEL: cxt01: 9142; DARWIN-64-STATIC: ## %bb.0: ## %entry 9143; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9144; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9145; DARWIN-64-STATIC-NEXT: retq 9146; 9147; DARWIN-64-DYNAMIC-LABEL: cxt01: 9148; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9149; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9150; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9151; DARWIN-64-DYNAMIC-NEXT: retq 9152; 9153; DARWIN-64-PIC-LABEL: cxt01: 9154; DARWIN-64-PIC: ## %bb.0: ## %entry 9155; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9156; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9157; DARWIN-64-PIC-NEXT: retq 9158 9159entry: 9160 %0 = add i64 %i, 16 9161 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 9162 %2 = bitcast i32* %1 to i8* 9163 ret i8* %2 9164} 9165 9166define i8* @cat02(i64 %i) nounwind { 9167; LINUX-64-STATIC-LABEL: cat02: 9168; LINUX-64-STATIC: # %bb.0: # %entry 9169; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax 9170; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9171; LINUX-64-STATIC-NEXT: retq 9172; 9173; LINUX-32-STATIC-LABEL: cat02: 9174; LINUX-32-STATIC: # %bb.0: # %entry 9175; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9176; LINUX-32-STATIC-NEXT: movl ptr, %ecx 9177; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9178; LINUX-32-STATIC-NEXT: retl 9179; 9180; LINUX-32-PIC-LABEL: cat02: 9181; LINUX-32-PIC: # %bb.0: # %entry 9182; LINUX-32-PIC-NEXT: calll .L113$pb 9183; LINUX-32-PIC-NEXT: .L113$pb: 9184; LINUX-32-PIC-NEXT: popl %eax 9185; LINUX-32-PIC-NEXT: .Ltmp113: 9186; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax 9187; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 9188; LINUX-32-PIC-NEXT: movl (%eax), %eax 9189; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9190; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9191; LINUX-32-PIC-NEXT: retl 9192; 9193; LINUX-64-PIC-LABEL: cat02: 9194; LINUX-64-PIC: # %bb.0: # %entry 9195; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 9196; LINUX-64-PIC-NEXT: movq (%rax), %rax 9197; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9198; LINUX-64-PIC-NEXT: retq 9199; 9200; DARWIN-32-STATIC-LABEL: cat02: 9201; DARWIN-32-STATIC: ## %bb.0: ## %entry 9202; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9203; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 9204; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9205; DARWIN-32-STATIC-NEXT: retl 9206; 9207; DARWIN-32-DYNAMIC-LABEL: cat02: 9208; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9209; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 9210; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 9211; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9212; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax 9213; DARWIN-32-DYNAMIC-NEXT: retl 9214; 9215; DARWIN-32-PIC-LABEL: cat02: 9216; DARWIN-32-PIC: ## %bb.0: ## %entry 9217; DARWIN-32-PIC-NEXT: calll L113$pb 9218; DARWIN-32-PIC-NEXT: L113$pb: 9219; DARWIN-32-PIC-NEXT: popl %eax 9220; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax 9221; DARWIN-32-PIC-NEXT: movl (%eax), %eax 9222; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9223; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9224; DARWIN-32-PIC-NEXT: retl 9225; 9226; DARWIN-64-STATIC-LABEL: cat02: 9227; DARWIN-64-STATIC: ## %bb.0: ## %entry 9228; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9229; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 9230; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9231; DARWIN-64-STATIC-NEXT: retq 9232; 9233; DARWIN-64-DYNAMIC-LABEL: cat02: 9234; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9235; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9236; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 9237; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9238; DARWIN-64-DYNAMIC-NEXT: retq 9239; 9240; DARWIN-64-PIC-LABEL: cat02: 9241; DARWIN-64-PIC: ## %bb.0: ## %entry 9242; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9243; DARWIN-64-PIC-NEXT: movq (%rax), %rax 9244; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9245; DARWIN-64-PIC-NEXT: retq 9246 9247entry: 9248 %0 = load i32*, i32** @ptr, align 8 9249 %1 = add i64 %i, 16 9250 %2 = getelementptr i32, i32* %0, i64 %1 9251 %3 = bitcast i32* %2 to i8* 9252 ret i8* %3 9253} 9254 9255define i8* @cat03(i64 %i) nounwind { 9256; LINUX-64-STATIC-LABEL: cat03: 9257; LINUX-64-STATIC: # %bb.0: # %entry 9258; LINUX-64-STATIC-NEXT: leaq dsrc+64(,%rdi,4), %rax 9259; LINUX-64-STATIC-NEXT: retq 9260; 9261; LINUX-32-STATIC-LABEL: cat03: 9262; LINUX-32-STATIC: # %bb.0: # %entry 9263; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9264; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax 9265; LINUX-32-STATIC-NEXT: retl 9266; 9267; LINUX-32-PIC-LABEL: cat03: 9268; LINUX-32-PIC: # %bb.0: # %entry 9269; LINUX-32-PIC-NEXT: calll .L114$pb 9270; LINUX-32-PIC-NEXT: .L114$pb: 9271; LINUX-32-PIC-NEXT: popl %eax 9272; LINUX-32-PIC-NEXT: .Ltmp114: 9273; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax 9274; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9275; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax 9276; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9277; LINUX-32-PIC-NEXT: retl 9278; 9279; LINUX-64-PIC-LABEL: cat03: 9280; LINUX-64-PIC: # %bb.0: # %entry 9281; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 9282; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9283; LINUX-64-PIC-NEXT: retq 9284; 9285; DARWIN-32-STATIC-LABEL: cat03: 9286; DARWIN-32-STATIC: ## %bb.0: ## %entry 9287; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9288; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax 9289; DARWIN-32-STATIC-NEXT: retl 9290; 9291; DARWIN-32-DYNAMIC-LABEL: cat03: 9292; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9293; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9294; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax 9295; DARWIN-32-DYNAMIC-NEXT: retl 9296; 9297; DARWIN-32-PIC-LABEL: cat03: 9298; DARWIN-32-PIC: ## %bb.0: ## %entry 9299; DARWIN-32-PIC-NEXT: calll L114$pb 9300; DARWIN-32-PIC-NEXT: L114$pb: 9301; DARWIN-32-PIC-NEXT: popl %eax 9302; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9303; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax 9304; DARWIN-32-PIC-NEXT: retl 9305; 9306; DARWIN-64-STATIC-LABEL: cat03: 9307; DARWIN-64-STATIC: ## %bb.0: ## %entry 9308; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 9309; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9310; DARWIN-64-STATIC-NEXT: retq 9311; 9312; DARWIN-64-DYNAMIC-LABEL: cat03: 9313; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9314; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 9315; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9316; DARWIN-64-DYNAMIC-NEXT: retq 9317; 9318; DARWIN-64-PIC-LABEL: cat03: 9319; DARWIN-64-PIC: ## %bb.0: ## %entry 9320; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 9321; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9322; DARWIN-64-PIC-NEXT: retq 9323 9324entry: 9325 %0 = add i64 %i, 16 9326 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 9327 %2 = bitcast i32* %1 to i8* 9328 ret i8* %2 9329} 9330 9331define i8* @cat04(i64 %i) nounwind { 9332; LINUX-64-STATIC-LABEL: cat04: 9333; LINUX-64-STATIC: # %bb.0: # %entry 9334; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax 9335; LINUX-64-STATIC-NEXT: retq 9336; 9337; LINUX-32-STATIC-LABEL: cat04: 9338; LINUX-32-STATIC: # %bb.0: # %entry 9339; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9340; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax 9341; LINUX-32-STATIC-NEXT: retl 9342; 9343; LINUX-32-PIC-LABEL: cat04: 9344; LINUX-32-PIC: # %bb.0: # %entry 9345; LINUX-32-PIC-NEXT: calll .L115$pb 9346; LINUX-32-PIC-NEXT: .L115$pb: 9347; LINUX-32-PIC-NEXT: popl %eax 9348; LINUX-32-PIC-NEXT: .Ltmp115: 9349; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax 9350; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9351; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 9352; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9353; LINUX-32-PIC-NEXT: retl 9354; 9355; LINUX-64-PIC-LABEL: cat04: 9356; LINUX-64-PIC: # %bb.0: # %entry 9357; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 9358; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9359; LINUX-64-PIC-NEXT: retq 9360; 9361; DARWIN-32-STATIC-LABEL: cat04: 9362; DARWIN-32-STATIC: ## %bb.0: ## %entry 9363; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9364; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax 9365; DARWIN-32-STATIC-NEXT: retl 9366; 9367; DARWIN-32-DYNAMIC-LABEL: cat04: 9368; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9369; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9370; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax 9371; DARWIN-32-DYNAMIC-NEXT: retl 9372; 9373; DARWIN-32-PIC-LABEL: cat04: 9374; DARWIN-32-PIC: ## %bb.0: ## %entry 9375; DARWIN-32-PIC-NEXT: calll L115$pb 9376; DARWIN-32-PIC-NEXT: L115$pb: 9377; DARWIN-32-PIC-NEXT: popl %eax 9378; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9379; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax 9380; DARWIN-32-PIC-NEXT: retl 9381; 9382; DARWIN-64-STATIC-LABEL: cat04: 9383; DARWIN-64-STATIC: ## %bb.0: ## %entry 9384; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 9385; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9386; DARWIN-64-STATIC-NEXT: retq 9387; 9388; DARWIN-64-DYNAMIC-LABEL: cat04: 9389; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9390; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 9391; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9392; DARWIN-64-DYNAMIC-NEXT: retq 9393; 9394; DARWIN-64-PIC-LABEL: cat04: 9395; DARWIN-64-PIC: ## %bb.0: ## %entry 9396; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 9397; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9398; DARWIN-64-PIC-NEXT: retq 9399 9400entry: 9401 %0 = add i64 %i, 16 9402 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 9403 %2 = bitcast i32* %1 to i8* 9404 ret i8* %2 9405} 9406 9407define i8* @cat05(i64 %i) nounwind { 9408; LINUX-64-STATIC-LABEL: cat05: 9409; LINUX-64-STATIC: # %bb.0: # %entry 9410; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 9411; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9412; LINUX-64-STATIC-NEXT: retq 9413; 9414; LINUX-32-STATIC-LABEL: cat05: 9415; LINUX-32-STATIC: # %bb.0: # %entry 9416; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9417; LINUX-32-STATIC-NEXT: movl dptr, %ecx 9418; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9419; LINUX-32-STATIC-NEXT: retl 9420; 9421; LINUX-32-PIC-LABEL: cat05: 9422; LINUX-32-PIC: # %bb.0: # %entry 9423; LINUX-32-PIC-NEXT: calll .L116$pb 9424; LINUX-32-PIC-NEXT: .L116$pb: 9425; LINUX-32-PIC-NEXT: popl %eax 9426; LINUX-32-PIC-NEXT: .Ltmp116: 9427; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax 9428; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 9429; LINUX-32-PIC-NEXT: movl (%eax), %eax 9430; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9431; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9432; LINUX-32-PIC-NEXT: retl 9433; 9434; LINUX-64-PIC-LABEL: cat05: 9435; LINUX-64-PIC: # %bb.0: # %entry 9436; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax 9437; LINUX-64-PIC-NEXT: movq (%rax), %rax 9438; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9439; LINUX-64-PIC-NEXT: retq 9440; 9441; DARWIN-32-STATIC-LABEL: cat05: 9442; DARWIN-32-STATIC: ## %bb.0: ## %entry 9443; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9444; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 9445; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9446; DARWIN-32-STATIC-NEXT: retl 9447; 9448; DARWIN-32-DYNAMIC-LABEL: cat05: 9449; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9450; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9451; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 9452; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9453; DARWIN-32-DYNAMIC-NEXT: retl 9454; 9455; DARWIN-32-PIC-LABEL: cat05: 9456; DARWIN-32-PIC: ## %bb.0: ## %entry 9457; DARWIN-32-PIC-NEXT: calll L116$pb 9458; DARWIN-32-PIC-NEXT: L116$pb: 9459; DARWIN-32-PIC-NEXT: popl %eax 9460; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9461; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb(%eax), %eax 9462; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9463; DARWIN-32-PIC-NEXT: retl 9464; 9465; DARWIN-64-STATIC-LABEL: cat05: 9466; DARWIN-64-STATIC: ## %bb.0: ## %entry 9467; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 9468; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9469; DARWIN-64-STATIC-NEXT: retq 9470; 9471; DARWIN-64-DYNAMIC-LABEL: cat05: 9472; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9473; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 9474; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9475; DARWIN-64-DYNAMIC-NEXT: retq 9476; 9477; DARWIN-64-PIC-LABEL: cat05: 9478; DARWIN-64-PIC: ## %bb.0: ## %entry 9479; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 9480; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9481; DARWIN-64-PIC-NEXT: retq 9482 9483entry: 9484 %0 = load i32*, i32** @dptr, align 8 9485 %1 = add i64 %i, 16 9486 %2 = getelementptr i32, i32* %0, i64 %1 9487 %3 = bitcast i32* %2 to i8* 9488 ret i8* %3 9489} 9490 9491define i8* @cat06(i64 %i) nounwind { 9492; LINUX-64-STATIC-LABEL: cat06: 9493; LINUX-64-STATIC: # %bb.0: # %entry 9494; LINUX-64-STATIC-NEXT: leaq lsrc+64(,%rdi,4), %rax 9495; LINUX-64-STATIC-NEXT: retq 9496; 9497; LINUX-32-STATIC-LABEL: cat06: 9498; LINUX-32-STATIC: # %bb.0: # %entry 9499; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9500; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax 9501; LINUX-32-STATIC-NEXT: retl 9502; 9503; LINUX-32-PIC-LABEL: cat06: 9504; LINUX-32-PIC: # %bb.0: # %entry 9505; LINUX-32-PIC-NEXT: calll .L117$pb 9506; LINUX-32-PIC-NEXT: .L117$pb: 9507; LINUX-32-PIC-NEXT: popl %eax 9508; LINUX-32-PIC-NEXT: .Ltmp117: 9509; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax 9510; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9511; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax 9512; LINUX-32-PIC-NEXT: retl 9513; 9514; LINUX-64-PIC-LABEL: cat06: 9515; LINUX-64-PIC: # %bb.0: # %entry 9516; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 9517; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9518; LINUX-64-PIC-NEXT: retq 9519; 9520; DARWIN-32-STATIC-LABEL: cat06: 9521; DARWIN-32-STATIC: ## %bb.0: ## %entry 9522; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9523; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax 9524; DARWIN-32-STATIC-NEXT: retl 9525; 9526; DARWIN-32-DYNAMIC-LABEL: cat06: 9527; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9528; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9529; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax 9530; DARWIN-32-DYNAMIC-NEXT: retl 9531; 9532; DARWIN-32-PIC-LABEL: cat06: 9533; DARWIN-32-PIC: ## %bb.0: ## %entry 9534; DARWIN-32-PIC-NEXT: calll L117$pb 9535; DARWIN-32-PIC-NEXT: L117$pb: 9536; DARWIN-32-PIC-NEXT: popl %eax 9537; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9538; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax 9539; DARWIN-32-PIC-NEXT: retl 9540; 9541; DARWIN-64-STATIC-LABEL: cat06: 9542; DARWIN-64-STATIC: ## %bb.0: ## %entry 9543; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 9544; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9545; DARWIN-64-STATIC-NEXT: retq 9546; 9547; DARWIN-64-DYNAMIC-LABEL: cat06: 9548; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9549; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 9550; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9551; DARWIN-64-DYNAMIC-NEXT: retq 9552; 9553; DARWIN-64-PIC-LABEL: cat06: 9554; DARWIN-64-PIC: ## %bb.0: ## %entry 9555; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 9556; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9557; DARWIN-64-PIC-NEXT: retq 9558 9559entry: 9560 %0 = add i64 %i, 16 9561 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 9562 %2 = bitcast i32* %1 to i8* 9563 ret i8* %2 9564} 9565 9566define i8* @cat07(i64 %i) nounwind { 9567; LINUX-64-STATIC-LABEL: cat07: 9568; LINUX-64-STATIC: # %bb.0: # %entry 9569; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax 9570; LINUX-64-STATIC-NEXT: retq 9571; 9572; LINUX-32-STATIC-LABEL: cat07: 9573; LINUX-32-STATIC: # %bb.0: # %entry 9574; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9575; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax 9576; LINUX-32-STATIC-NEXT: retl 9577; 9578; LINUX-32-PIC-LABEL: cat07: 9579; LINUX-32-PIC: # %bb.0: # %entry 9580; LINUX-32-PIC-NEXT: calll .L118$pb 9581; LINUX-32-PIC-NEXT: .L118$pb: 9582; LINUX-32-PIC-NEXT: popl %eax 9583; LINUX-32-PIC-NEXT: .Ltmp118: 9584; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax 9585; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9586; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %eax 9587; LINUX-32-PIC-NEXT: retl 9588; 9589; LINUX-64-PIC-LABEL: cat07: 9590; LINUX-64-PIC: # %bb.0: # %entry 9591; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 9592; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9593; LINUX-64-PIC-NEXT: retq 9594; 9595; DARWIN-32-STATIC-LABEL: cat07: 9596; DARWIN-32-STATIC: ## %bb.0: ## %entry 9597; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9598; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax 9599; DARWIN-32-STATIC-NEXT: retl 9600; 9601; DARWIN-32-DYNAMIC-LABEL: cat07: 9602; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9603; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9604; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax 9605; DARWIN-32-DYNAMIC-NEXT: retl 9606; 9607; DARWIN-32-PIC-LABEL: cat07: 9608; DARWIN-32-PIC: ## %bb.0: ## %entry 9609; DARWIN-32-PIC-NEXT: calll L118$pb 9610; DARWIN-32-PIC-NEXT: L118$pb: 9611; DARWIN-32-PIC-NEXT: popl %eax 9612; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9613; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax 9614; DARWIN-32-PIC-NEXT: retl 9615; 9616; DARWIN-64-STATIC-LABEL: cat07: 9617; DARWIN-64-STATIC: ## %bb.0: ## %entry 9618; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 9619; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9620; DARWIN-64-STATIC-NEXT: retq 9621; 9622; DARWIN-64-DYNAMIC-LABEL: cat07: 9623; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9624; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 9625; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9626; DARWIN-64-DYNAMIC-NEXT: retq 9627; 9628; DARWIN-64-PIC-LABEL: cat07: 9629; DARWIN-64-PIC: ## %bb.0: ## %entry 9630; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 9631; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9632; DARWIN-64-PIC-NEXT: retq 9633 9634entry: 9635 %0 = add i64 %i, 16 9636 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 9637 %2 = bitcast i32* %1 to i8* 9638 ret i8* %2 9639} 9640 9641define i8* @cat08(i64 %i) nounwind { 9642; LINUX-64-STATIC-LABEL: cat08: 9643; LINUX-64-STATIC: # %bb.0: # %entry 9644; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 9645; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9646; LINUX-64-STATIC-NEXT: retq 9647; 9648; LINUX-32-STATIC-LABEL: cat08: 9649; LINUX-32-STATIC: # %bb.0: # %entry 9650; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9651; LINUX-32-STATIC-NEXT: movl lptr, %ecx 9652; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9653; LINUX-32-STATIC-NEXT: retl 9654; 9655; LINUX-32-PIC-LABEL: cat08: 9656; LINUX-32-PIC: # %bb.0: # %entry 9657; LINUX-32-PIC-NEXT: calll .L119$pb 9658; LINUX-32-PIC-NEXT: .L119$pb: 9659; LINUX-32-PIC-NEXT: popl %eax 9660; LINUX-32-PIC-NEXT: .Ltmp119: 9661; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax 9662; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9663; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 9664; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9665; LINUX-32-PIC-NEXT: retl 9666; 9667; LINUX-64-PIC-LABEL: cat08: 9668; LINUX-64-PIC: # %bb.0: # %entry 9669; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 9670; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9671; LINUX-64-PIC-NEXT: retq 9672; 9673; DARWIN-32-STATIC-LABEL: cat08: 9674; DARWIN-32-STATIC: ## %bb.0: ## %entry 9675; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9676; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 9677; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9678; DARWIN-32-STATIC-NEXT: retl 9679; 9680; DARWIN-32-DYNAMIC-LABEL: cat08: 9681; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9682; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9683; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 9684; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9685; DARWIN-32-DYNAMIC-NEXT: retl 9686; 9687; DARWIN-32-PIC-LABEL: cat08: 9688; DARWIN-32-PIC: ## %bb.0: ## %entry 9689; DARWIN-32-PIC-NEXT: calll L119$pb 9690; DARWIN-32-PIC-NEXT: L119$pb: 9691; DARWIN-32-PIC-NEXT: popl %eax 9692; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9693; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb(%eax), %eax 9694; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9695; DARWIN-32-PIC-NEXT: retl 9696; 9697; DARWIN-64-STATIC-LABEL: cat08: 9698; DARWIN-64-STATIC: ## %bb.0: ## %entry 9699; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 9700; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9701; DARWIN-64-STATIC-NEXT: retq 9702; 9703; DARWIN-64-DYNAMIC-LABEL: cat08: 9704; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9705; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 9706; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9707; DARWIN-64-DYNAMIC-NEXT: retq 9708; 9709; DARWIN-64-PIC-LABEL: cat08: 9710; DARWIN-64-PIC: ## %bb.0: ## %entry 9711; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 9712; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9713; DARWIN-64-PIC-NEXT: retq 9714 9715entry: 9716 %0 = load i32*, i32** @lptr, align 8 9717 %1 = add i64 %i, 16 9718 %2 = getelementptr i32, i32* %0, i64 %1 9719 %3 = bitcast i32* %2 to i8* 9720 ret i8* %3 9721} 9722 9723define i8* @cam00(i64 %i) nounwind { 9724; LINUX-64-STATIC-LABEL: cam00: 9725; LINUX-64-STATIC: # %bb.0: # %entry 9726; LINUX-64-STATIC-NEXT: leaq src+262144(,%rdi,4), %rax 9727; LINUX-64-STATIC-NEXT: retq 9728; 9729; LINUX-32-STATIC-LABEL: cam00: 9730; LINUX-32-STATIC: # %bb.0: # %entry 9731; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9732; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax 9733; LINUX-32-STATIC-NEXT: retl 9734; 9735; LINUX-32-PIC-LABEL: cam00: 9736; LINUX-32-PIC: # %bb.0: # %entry 9737; LINUX-32-PIC-NEXT: calll .L120$pb 9738; LINUX-32-PIC-NEXT: .L120$pb: 9739; LINUX-32-PIC-NEXT: popl %eax 9740; LINUX-32-PIC-NEXT: .Ltmp120: 9741; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax 9742; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9743; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 9744; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9745; LINUX-32-PIC-NEXT: retl 9746; 9747; LINUX-64-PIC-LABEL: cam00: 9748; LINUX-64-PIC: # %bb.0: # %entry 9749; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 9750; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9751; LINUX-64-PIC-NEXT: retq 9752; 9753; DARWIN-32-STATIC-LABEL: cam00: 9754; DARWIN-32-STATIC: ## %bb.0: ## %entry 9755; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9756; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax 9757; DARWIN-32-STATIC-NEXT: retl 9758; 9759; DARWIN-32-DYNAMIC-LABEL: cam00: 9760; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9761; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9762; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 9763; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9764; DARWIN-32-DYNAMIC-NEXT: retl 9765; 9766; DARWIN-32-PIC-LABEL: cam00: 9767; DARWIN-32-PIC: ## %bb.0: ## %entry 9768; DARWIN-32-PIC-NEXT: calll L120$pb 9769; DARWIN-32-PIC-NEXT: L120$pb: 9770; DARWIN-32-PIC-NEXT: popl %eax 9771; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9772; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb(%eax), %eax 9773; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9774; DARWIN-32-PIC-NEXT: retl 9775; 9776; DARWIN-64-STATIC-LABEL: cam00: 9777; DARWIN-64-STATIC: ## %bb.0: ## %entry 9778; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9779; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9780; DARWIN-64-STATIC-NEXT: retq 9781; 9782; DARWIN-64-DYNAMIC-LABEL: cam00: 9783; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9784; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9785; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9786; DARWIN-64-DYNAMIC-NEXT: retq 9787; 9788; DARWIN-64-PIC-LABEL: cam00: 9789; DARWIN-64-PIC: ## %bb.0: ## %entry 9790; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9791; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9792; DARWIN-64-PIC-NEXT: retq 9793 9794entry: 9795 %0 = add i64 %i, 65536 9796 %1 = getelementptr [131072 x i32], [131072 x i32]* @src, i64 0, i64 %0 9797 %2 = bitcast i32* %1 to i8* 9798 ret i8* %2 9799} 9800 9801define i8* @cxm00(i64 %i) nounwind { 9802; LINUX-64-STATIC-LABEL: cxm00: 9803; LINUX-64-STATIC: # %bb.0: # %entry 9804; LINUX-64-STATIC-NEXT: leaq xsrc+262144(,%rdi,4), %rax 9805; LINUX-64-STATIC-NEXT: retq 9806; 9807; LINUX-32-STATIC-LABEL: cxm00: 9808; LINUX-32-STATIC: # %bb.0: # %entry 9809; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9810; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax 9811; LINUX-32-STATIC-NEXT: retl 9812; 9813; LINUX-32-PIC-LABEL: cxm00: 9814; LINUX-32-PIC: # %bb.0: # %entry 9815; LINUX-32-PIC-NEXT: calll .L121$pb 9816; LINUX-32-PIC-NEXT: .L121$pb: 9817; LINUX-32-PIC-NEXT: popl %eax 9818; LINUX-32-PIC-NEXT: .Ltmp121: 9819; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax 9820; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9821; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 9822; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9823; LINUX-32-PIC-NEXT: retl 9824; 9825; LINUX-64-PIC-LABEL: cxm00: 9826; LINUX-64-PIC: # %bb.0: # %entry 9827; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 9828; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9829; LINUX-64-PIC-NEXT: retq 9830; 9831; DARWIN-32-STATIC-LABEL: cxm00: 9832; DARWIN-32-STATIC: ## %bb.0: ## %entry 9833; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9834; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax 9835; DARWIN-32-STATIC-NEXT: retl 9836; 9837; DARWIN-32-DYNAMIC-LABEL: cxm00: 9838; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9839; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9840; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 9841; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9842; DARWIN-32-DYNAMIC-NEXT: retl 9843; 9844; DARWIN-32-PIC-LABEL: cxm00: 9845; DARWIN-32-PIC: ## %bb.0: ## %entry 9846; DARWIN-32-PIC-NEXT: calll L121$pb 9847; DARWIN-32-PIC-NEXT: L121$pb: 9848; DARWIN-32-PIC-NEXT: popl %eax 9849; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9850; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax 9851; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9852; DARWIN-32-PIC-NEXT: retl 9853; 9854; DARWIN-64-STATIC-LABEL: cxm00: 9855; DARWIN-64-STATIC: ## %bb.0: ## %entry 9856; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9857; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9858; DARWIN-64-STATIC-NEXT: retq 9859; 9860; DARWIN-64-DYNAMIC-LABEL: cxm00: 9861; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9862; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9863; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9864; DARWIN-64-DYNAMIC-NEXT: retq 9865; 9866; DARWIN-64-PIC-LABEL: cxm00: 9867; DARWIN-64-PIC: ## %bb.0: ## %entry 9868; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9869; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9870; DARWIN-64-PIC-NEXT: retq 9871 9872entry: 9873 %0 = add i64 %i, 65536 9874 %1 = getelementptr [32 x i32], [32 x i32]* @xsrc, i64 0, i64 %0 9875 %2 = bitcast i32* %1 to i8* 9876 ret i8* %2 9877} 9878 9879define i8* @cam01(i64 %i) nounwind { 9880; LINUX-64-STATIC-LABEL: cam01: 9881; LINUX-64-STATIC: # %bb.0: # %entry 9882; LINUX-64-STATIC-NEXT: leaq dst+262144(,%rdi,4), %rax 9883; LINUX-64-STATIC-NEXT: retq 9884; 9885; LINUX-32-STATIC-LABEL: cam01: 9886; LINUX-32-STATIC: # %bb.0: # %entry 9887; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9888; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax 9889; LINUX-32-STATIC-NEXT: retl 9890; 9891; LINUX-32-PIC-LABEL: cam01: 9892; LINUX-32-PIC: # %bb.0: # %entry 9893; LINUX-32-PIC-NEXT: calll .L122$pb 9894; LINUX-32-PIC-NEXT: .L122$pb: 9895; LINUX-32-PIC-NEXT: popl %eax 9896; LINUX-32-PIC-NEXT: .Ltmp122: 9897; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax 9898; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9899; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 9900; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9901; LINUX-32-PIC-NEXT: retl 9902; 9903; LINUX-64-PIC-LABEL: cam01: 9904; LINUX-64-PIC: # %bb.0: # %entry 9905; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9906; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9907; LINUX-64-PIC-NEXT: retq 9908; 9909; DARWIN-32-STATIC-LABEL: cam01: 9910; DARWIN-32-STATIC: ## %bb.0: ## %entry 9911; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9912; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax 9913; DARWIN-32-STATIC-NEXT: retl 9914; 9915; DARWIN-32-DYNAMIC-LABEL: cam01: 9916; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9917; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9918; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 9919; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9920; DARWIN-32-DYNAMIC-NEXT: retl 9921; 9922; DARWIN-32-PIC-LABEL: cam01: 9923; DARWIN-32-PIC: ## %bb.0: ## %entry 9924; DARWIN-32-PIC-NEXT: calll L122$pb 9925; DARWIN-32-PIC-NEXT: L122$pb: 9926; DARWIN-32-PIC-NEXT: popl %eax 9927; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9928; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax 9929; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9930; DARWIN-32-PIC-NEXT: retl 9931; 9932; DARWIN-64-STATIC-LABEL: cam01: 9933; DARWIN-64-STATIC: ## %bb.0: ## %entry 9934; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9935; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9936; DARWIN-64-STATIC-NEXT: retq 9937; 9938; DARWIN-64-DYNAMIC-LABEL: cam01: 9939; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9940; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9941; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9942; DARWIN-64-DYNAMIC-NEXT: retq 9943; 9944; DARWIN-64-PIC-LABEL: cam01: 9945; DARWIN-64-PIC: ## %bb.0: ## %entry 9946; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9947; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9948; DARWIN-64-PIC-NEXT: retq 9949 9950entry: 9951 %0 = add i64 %i, 65536 9952 %1 = getelementptr [131072 x i32], [131072 x i32]* @dst, i64 0, i64 %0 9953 %2 = bitcast i32* %1 to i8* 9954 ret i8* %2 9955} 9956 9957define i8* @cxm01(i64 %i) nounwind { 9958; LINUX-64-STATIC-LABEL: cxm01: 9959; LINUX-64-STATIC: # %bb.0: # %entry 9960; LINUX-64-STATIC-NEXT: leaq xdst+262144(,%rdi,4), %rax 9961; LINUX-64-STATIC-NEXT: retq 9962; 9963; LINUX-32-STATIC-LABEL: cxm01: 9964; LINUX-32-STATIC: # %bb.0: # %entry 9965; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9966; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax 9967; LINUX-32-STATIC-NEXT: retl 9968; 9969; LINUX-32-PIC-LABEL: cxm01: 9970; LINUX-32-PIC: # %bb.0: # %entry 9971; LINUX-32-PIC-NEXT: calll .L123$pb 9972; LINUX-32-PIC-NEXT: .L123$pb: 9973; LINUX-32-PIC-NEXT: popl %eax 9974; LINUX-32-PIC-NEXT: .Ltmp123: 9975; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax 9976; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9977; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 9978; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9979; LINUX-32-PIC-NEXT: retl 9980; 9981; LINUX-64-PIC-LABEL: cxm01: 9982; LINUX-64-PIC: # %bb.0: # %entry 9983; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9984; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9985; LINUX-64-PIC-NEXT: retq 9986; 9987; DARWIN-32-STATIC-LABEL: cxm01: 9988; DARWIN-32-STATIC: ## %bb.0: ## %entry 9989; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9990; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax 9991; DARWIN-32-STATIC-NEXT: retl 9992; 9993; DARWIN-32-DYNAMIC-LABEL: cxm01: 9994; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9995; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9996; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 9997; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9998; DARWIN-32-DYNAMIC-NEXT: retl 9999; 10000; DARWIN-32-PIC-LABEL: cxm01: 10001; DARWIN-32-PIC: ## %bb.0: ## %entry 10002; DARWIN-32-PIC-NEXT: calll L123$pb 10003; DARWIN-32-PIC-NEXT: L123$pb: 10004; DARWIN-32-PIC-NEXT: popl %eax 10005; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10006; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax 10007; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10008; DARWIN-32-PIC-NEXT: retl 10009; 10010; DARWIN-64-STATIC-LABEL: cxm01: 10011; DARWIN-64-STATIC: ## %bb.0: ## %entry 10012; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10013; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10014; DARWIN-64-STATIC-NEXT: retq 10015; 10016; DARWIN-64-DYNAMIC-LABEL: cxm01: 10017; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10018; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10019; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10020; DARWIN-64-DYNAMIC-NEXT: retq 10021; 10022; DARWIN-64-PIC-LABEL: cxm01: 10023; DARWIN-64-PIC: ## %bb.0: ## %entry 10024; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10025; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10026; DARWIN-64-PIC-NEXT: retq 10027 10028entry: 10029 %0 = add i64 %i, 65536 10030 %1 = getelementptr [32 x i32], [32 x i32]* @xdst, i64 0, i64 %0 10031 %2 = bitcast i32* %1 to i8* 10032 ret i8* %2 10033} 10034 10035define i8* @cam02(i64 %i) nounwind { 10036; LINUX-64-STATIC-LABEL: cam02: 10037; LINUX-64-STATIC: # %bb.0: # %entry 10038; LINUX-64-STATIC-NEXT: movq ptr(%rip), %rax 10039; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10040; LINUX-64-STATIC-NEXT: retq 10041; 10042; LINUX-32-STATIC-LABEL: cam02: 10043; LINUX-32-STATIC: # %bb.0: # %entry 10044; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10045; LINUX-32-STATIC-NEXT: movl ptr, %ecx 10046; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10047; LINUX-32-STATIC-NEXT: retl 10048; 10049; LINUX-32-PIC-LABEL: cam02: 10050; LINUX-32-PIC: # %bb.0: # %entry 10051; LINUX-32-PIC-NEXT: calll .L124$pb 10052; LINUX-32-PIC-NEXT: .L124$pb: 10053; LINUX-32-PIC-NEXT: popl %eax 10054; LINUX-32-PIC-NEXT: .Ltmp124: 10055; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax 10056; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 10057; LINUX-32-PIC-NEXT: movl (%eax), %eax 10058; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10059; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10060; LINUX-32-PIC-NEXT: retl 10061; 10062; LINUX-64-PIC-LABEL: cam02: 10063; LINUX-64-PIC: # %bb.0: # %entry 10064; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 10065; LINUX-64-PIC-NEXT: movq (%rax), %rax 10066; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10067; LINUX-64-PIC-NEXT: retq 10068; 10069; DARWIN-32-STATIC-LABEL: cam02: 10070; DARWIN-32-STATIC: ## %bb.0: ## %entry 10071; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10072; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 10073; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10074; DARWIN-32-STATIC-NEXT: retl 10075; 10076; DARWIN-32-DYNAMIC-LABEL: cam02: 10077; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10078; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 10079; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 10080; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10081; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10082; DARWIN-32-DYNAMIC-NEXT: retl 10083; 10084; DARWIN-32-PIC-LABEL: cam02: 10085; DARWIN-32-PIC: ## %bb.0: ## %entry 10086; DARWIN-32-PIC-NEXT: calll L124$pb 10087; DARWIN-32-PIC-NEXT: L124$pb: 10088; DARWIN-32-PIC-NEXT: popl %eax 10089; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax 10090; DARWIN-32-PIC-NEXT: movl (%eax), %eax 10091; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10092; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10093; DARWIN-32-PIC-NEXT: retl 10094; 10095; DARWIN-64-STATIC-LABEL: cam02: 10096; DARWIN-64-STATIC: ## %bb.0: ## %entry 10097; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10098; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 10099; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10100; DARWIN-64-STATIC-NEXT: retq 10101; 10102; DARWIN-64-DYNAMIC-LABEL: cam02: 10103; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10104; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10105; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 10106; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10107; DARWIN-64-DYNAMIC-NEXT: retq 10108; 10109; DARWIN-64-PIC-LABEL: cam02: 10110; DARWIN-64-PIC: ## %bb.0: ## %entry 10111; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10112; DARWIN-64-PIC-NEXT: movq (%rax), %rax 10113; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10114; DARWIN-64-PIC-NEXT: retq 10115 10116entry: 10117 %0 = load i32*, i32** @ptr, align 8 10118 %1 = add i64 %i, 65536 10119 %2 = getelementptr i32, i32* %0, i64 %1 10120 %3 = bitcast i32* %2 to i8* 10121 ret i8* %3 10122} 10123 10124define i8* @cam03(i64 %i) nounwind { 10125; LINUX-64-STATIC-LABEL: cam03: 10126; LINUX-64-STATIC: # %bb.0: # %entry 10127; LINUX-64-STATIC-NEXT: leaq dsrc+262144(,%rdi,4), %rax 10128; LINUX-64-STATIC-NEXT: retq 10129; 10130; LINUX-32-STATIC-LABEL: cam03: 10131; LINUX-32-STATIC: # %bb.0: # %entry 10132; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10133; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax 10134; LINUX-32-STATIC-NEXT: retl 10135; 10136; LINUX-32-PIC-LABEL: cam03: 10137; LINUX-32-PIC: # %bb.0: # %entry 10138; LINUX-32-PIC-NEXT: calll .L125$pb 10139; LINUX-32-PIC-NEXT: .L125$pb: 10140; LINUX-32-PIC-NEXT: popl %eax 10141; LINUX-32-PIC-NEXT: .Ltmp125: 10142; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax 10143; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10144; LINUX-32-PIC-NEXT: movl dsrc@GOT(%eax), %eax 10145; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10146; LINUX-32-PIC-NEXT: retl 10147; 10148; LINUX-64-PIC-LABEL: cam03: 10149; LINUX-64-PIC: # %bb.0: # %entry 10150; LINUX-64-PIC-NEXT: movq dsrc@GOTPCREL(%rip), %rax 10151; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10152; LINUX-64-PIC-NEXT: retq 10153; 10154; DARWIN-32-STATIC-LABEL: cam03: 10155; DARWIN-32-STATIC: ## %bb.0: ## %entry 10156; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10157; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax 10158; DARWIN-32-STATIC-NEXT: retl 10159; 10160; DARWIN-32-DYNAMIC-LABEL: cam03: 10161; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10162; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10163; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax 10164; DARWIN-32-DYNAMIC-NEXT: retl 10165; 10166; DARWIN-32-PIC-LABEL: cam03: 10167; DARWIN-32-PIC: ## %bb.0: ## %entry 10168; DARWIN-32-PIC-NEXT: calll L125$pb 10169; DARWIN-32-PIC-NEXT: L125$pb: 10170; DARWIN-32-PIC-NEXT: popl %eax 10171; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10172; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax 10173; DARWIN-32-PIC-NEXT: retl 10174; 10175; DARWIN-64-STATIC-LABEL: cam03: 10176; DARWIN-64-STATIC: ## %bb.0: ## %entry 10177; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 10178; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10179; DARWIN-64-STATIC-NEXT: retq 10180; 10181; DARWIN-64-DYNAMIC-LABEL: cam03: 10182; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10183; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 10184; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10185; DARWIN-64-DYNAMIC-NEXT: retq 10186; 10187; DARWIN-64-PIC-LABEL: cam03: 10188; DARWIN-64-PIC: ## %bb.0: ## %entry 10189; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 10190; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10191; DARWIN-64-PIC-NEXT: retq 10192 10193entry: 10194 %0 = add i64 %i, 65536 10195 %1 = getelementptr [131072 x i32], [131072 x i32]* @dsrc, i64 0, i64 %0 10196 %2 = bitcast i32* %1 to i8* 10197 ret i8* %2 10198} 10199 10200define i8* @cam04(i64 %i) nounwind { 10201; LINUX-64-STATIC-LABEL: cam04: 10202; LINUX-64-STATIC: # %bb.0: # %entry 10203; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax 10204; LINUX-64-STATIC-NEXT: retq 10205; 10206; LINUX-32-STATIC-LABEL: cam04: 10207; LINUX-32-STATIC: # %bb.0: # %entry 10208; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10209; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax 10210; LINUX-32-STATIC-NEXT: retl 10211; 10212; LINUX-32-PIC-LABEL: cam04: 10213; LINUX-32-PIC: # %bb.0: # %entry 10214; LINUX-32-PIC-NEXT: calll .L126$pb 10215; LINUX-32-PIC-NEXT: .L126$pb: 10216; LINUX-32-PIC-NEXT: popl %eax 10217; LINUX-32-PIC-NEXT: .Ltmp126: 10218; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax 10219; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10220; LINUX-32-PIC-NEXT: movl ddst@GOT(%eax), %eax 10221; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10222; LINUX-32-PIC-NEXT: retl 10223; 10224; LINUX-64-PIC-LABEL: cam04: 10225; LINUX-64-PIC: # %bb.0: # %entry 10226; LINUX-64-PIC-NEXT: movq ddst@GOTPCREL(%rip), %rax 10227; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10228; LINUX-64-PIC-NEXT: retq 10229; 10230; DARWIN-32-STATIC-LABEL: cam04: 10231; DARWIN-32-STATIC: ## %bb.0: ## %entry 10232; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10233; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax 10234; DARWIN-32-STATIC-NEXT: retl 10235; 10236; DARWIN-32-DYNAMIC-LABEL: cam04: 10237; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10238; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10239; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax 10240; DARWIN-32-DYNAMIC-NEXT: retl 10241; 10242; DARWIN-32-PIC-LABEL: cam04: 10243; DARWIN-32-PIC: ## %bb.0: ## %entry 10244; DARWIN-32-PIC-NEXT: calll L126$pb 10245; DARWIN-32-PIC-NEXT: L126$pb: 10246; DARWIN-32-PIC-NEXT: popl %eax 10247; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10248; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax 10249; DARWIN-32-PIC-NEXT: retl 10250; 10251; DARWIN-64-STATIC-LABEL: cam04: 10252; DARWIN-64-STATIC: ## %bb.0: ## %entry 10253; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 10254; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10255; DARWIN-64-STATIC-NEXT: retq 10256; 10257; DARWIN-64-DYNAMIC-LABEL: cam04: 10258; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10259; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 10260; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10261; DARWIN-64-DYNAMIC-NEXT: retq 10262; 10263; DARWIN-64-PIC-LABEL: cam04: 10264; DARWIN-64-PIC: ## %bb.0: ## %entry 10265; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 10266; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10267; DARWIN-64-PIC-NEXT: retq 10268 10269entry: 10270 %0 = add i64 %i, 65536 10271 %1 = getelementptr [131072 x i32], [131072 x i32]* @ddst, i64 0, i64 %0 10272 %2 = bitcast i32* %1 to i8* 10273 ret i8* %2 10274} 10275 10276define i8* @cam05(i64 %i) nounwind { 10277; LINUX-64-STATIC-LABEL: cam05: 10278; LINUX-64-STATIC: # %bb.0: # %entry 10279; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 10280; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10281; LINUX-64-STATIC-NEXT: retq 10282; 10283; LINUX-32-STATIC-LABEL: cam05: 10284; LINUX-32-STATIC: # %bb.0: # %entry 10285; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10286; LINUX-32-STATIC-NEXT: movl dptr, %ecx 10287; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10288; LINUX-32-STATIC-NEXT: retl 10289; 10290; LINUX-32-PIC-LABEL: cam05: 10291; LINUX-32-PIC: # %bb.0: # %entry 10292; LINUX-32-PIC-NEXT: calll .L127$pb 10293; LINUX-32-PIC-NEXT: .L127$pb: 10294; LINUX-32-PIC-NEXT: popl %eax 10295; LINUX-32-PIC-NEXT: .Ltmp127: 10296; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax 10297; LINUX-32-PIC-NEXT: movl dptr@GOT(%eax), %eax 10298; LINUX-32-PIC-NEXT: movl (%eax), %eax 10299; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10300; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10301; LINUX-32-PIC-NEXT: retl 10302; 10303; LINUX-64-PIC-LABEL: cam05: 10304; LINUX-64-PIC: # %bb.0: # %entry 10305; LINUX-64-PIC-NEXT: movq dptr@GOTPCREL(%rip), %rax 10306; LINUX-64-PIC-NEXT: movq (%rax), %rax 10307; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10308; LINUX-64-PIC-NEXT: retq 10309; 10310; DARWIN-32-STATIC-LABEL: cam05: 10311; DARWIN-32-STATIC: ## %bb.0: ## %entry 10312; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10313; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 10314; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10315; DARWIN-32-STATIC-NEXT: retl 10316; 10317; DARWIN-32-DYNAMIC-LABEL: cam05: 10318; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10319; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10320; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 10321; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10322; DARWIN-32-DYNAMIC-NEXT: retl 10323; 10324; DARWIN-32-PIC-LABEL: cam05: 10325; DARWIN-32-PIC: ## %bb.0: ## %entry 10326; DARWIN-32-PIC-NEXT: calll L127$pb 10327; DARWIN-32-PIC-NEXT: L127$pb: 10328; DARWIN-32-PIC-NEXT: popl %eax 10329; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10330; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb(%eax), %eax 10331; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10332; DARWIN-32-PIC-NEXT: retl 10333; 10334; DARWIN-64-STATIC-LABEL: cam05: 10335; DARWIN-64-STATIC: ## %bb.0: ## %entry 10336; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 10337; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10338; DARWIN-64-STATIC-NEXT: retq 10339; 10340; DARWIN-64-DYNAMIC-LABEL: cam05: 10341; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10342; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 10343; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10344; DARWIN-64-DYNAMIC-NEXT: retq 10345; 10346; DARWIN-64-PIC-LABEL: cam05: 10347; DARWIN-64-PIC: ## %bb.0: ## %entry 10348; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 10349; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10350; DARWIN-64-PIC-NEXT: retq 10351 10352entry: 10353 %0 = load i32*, i32** @dptr, align 8 10354 %1 = add i64 %i, 65536 10355 %2 = getelementptr i32, i32* %0, i64 %1 10356 %3 = bitcast i32* %2 to i8* 10357 ret i8* %3 10358} 10359 10360define i8* @cam06(i64 %i) nounwind { 10361; LINUX-64-STATIC-LABEL: cam06: 10362; LINUX-64-STATIC: # %bb.0: # %entry 10363; LINUX-64-STATIC-NEXT: leaq lsrc+262144(,%rdi,4), %rax 10364; LINUX-64-STATIC-NEXT: retq 10365; 10366; LINUX-32-STATIC-LABEL: cam06: 10367; LINUX-32-STATIC: # %bb.0: # %entry 10368; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10369; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax 10370; LINUX-32-STATIC-NEXT: retl 10371; 10372; LINUX-32-PIC-LABEL: cam06: 10373; LINUX-32-PIC: # %bb.0: # %entry 10374; LINUX-32-PIC-NEXT: calll .L128$pb 10375; LINUX-32-PIC-NEXT: .L128$pb: 10376; LINUX-32-PIC-NEXT: popl %eax 10377; LINUX-32-PIC-NEXT: .Ltmp128: 10378; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax 10379; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10380; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax 10381; LINUX-32-PIC-NEXT: retl 10382; 10383; LINUX-64-PIC-LABEL: cam06: 10384; LINUX-64-PIC: # %bb.0: # %entry 10385; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 10386; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10387; LINUX-64-PIC-NEXT: retq 10388; 10389; DARWIN-32-STATIC-LABEL: cam06: 10390; DARWIN-32-STATIC: ## %bb.0: ## %entry 10391; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10392; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax 10393; DARWIN-32-STATIC-NEXT: retl 10394; 10395; DARWIN-32-DYNAMIC-LABEL: cam06: 10396; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10397; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10398; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax 10399; DARWIN-32-DYNAMIC-NEXT: retl 10400; 10401; DARWIN-32-PIC-LABEL: cam06: 10402; DARWIN-32-PIC: ## %bb.0: ## %entry 10403; DARWIN-32-PIC-NEXT: calll L128$pb 10404; DARWIN-32-PIC-NEXT: L128$pb: 10405; DARWIN-32-PIC-NEXT: popl %eax 10406; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10407; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax 10408; DARWIN-32-PIC-NEXT: retl 10409; 10410; DARWIN-64-STATIC-LABEL: cam06: 10411; DARWIN-64-STATIC: ## %bb.0: ## %entry 10412; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 10413; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10414; DARWIN-64-STATIC-NEXT: retq 10415; 10416; DARWIN-64-DYNAMIC-LABEL: cam06: 10417; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10418; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 10419; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10420; DARWIN-64-DYNAMIC-NEXT: retq 10421; 10422; DARWIN-64-PIC-LABEL: cam06: 10423; DARWIN-64-PIC: ## %bb.0: ## %entry 10424; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 10425; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10426; DARWIN-64-PIC-NEXT: retq 10427 10428entry: 10429 %0 = add i64 %i, 65536 10430 %1 = getelementptr [131072 x i32], [131072 x i32]* @lsrc, i64 0, i64 %0 10431 %2 = bitcast i32* %1 to i8* 10432 ret i8* %2 10433} 10434 10435define i8* @cam07(i64 %i) nounwind { 10436; LINUX-64-STATIC-LABEL: cam07: 10437; LINUX-64-STATIC: # %bb.0: # %entry 10438; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax 10439; LINUX-64-STATIC-NEXT: retq 10440; 10441; LINUX-32-STATIC-LABEL: cam07: 10442; LINUX-32-STATIC: # %bb.0: # %entry 10443; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10444; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax 10445; LINUX-32-STATIC-NEXT: retl 10446; 10447; LINUX-32-PIC-LABEL: cam07: 10448; LINUX-32-PIC: # %bb.0: # %entry 10449; LINUX-32-PIC-NEXT: calll .L129$pb 10450; LINUX-32-PIC-NEXT: .L129$pb: 10451; LINUX-32-PIC-NEXT: popl %eax 10452; LINUX-32-PIC-NEXT: .Ltmp129: 10453; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax 10454; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10455; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax 10456; LINUX-32-PIC-NEXT: retl 10457; 10458; LINUX-64-PIC-LABEL: cam07: 10459; LINUX-64-PIC: # %bb.0: # %entry 10460; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 10461; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10462; LINUX-64-PIC-NEXT: retq 10463; 10464; DARWIN-32-STATIC-LABEL: cam07: 10465; DARWIN-32-STATIC: ## %bb.0: ## %entry 10466; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10467; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax 10468; DARWIN-32-STATIC-NEXT: retl 10469; 10470; DARWIN-32-DYNAMIC-LABEL: cam07: 10471; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10472; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10473; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax 10474; DARWIN-32-DYNAMIC-NEXT: retl 10475; 10476; DARWIN-32-PIC-LABEL: cam07: 10477; DARWIN-32-PIC: ## %bb.0: ## %entry 10478; DARWIN-32-PIC-NEXT: calll L129$pb 10479; DARWIN-32-PIC-NEXT: L129$pb: 10480; DARWIN-32-PIC-NEXT: popl %eax 10481; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10482; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax 10483; DARWIN-32-PIC-NEXT: retl 10484; 10485; DARWIN-64-STATIC-LABEL: cam07: 10486; DARWIN-64-STATIC: ## %bb.0: ## %entry 10487; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 10488; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10489; DARWIN-64-STATIC-NEXT: retq 10490; 10491; DARWIN-64-DYNAMIC-LABEL: cam07: 10492; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10493; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 10494; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10495; DARWIN-64-DYNAMIC-NEXT: retq 10496; 10497; DARWIN-64-PIC-LABEL: cam07: 10498; DARWIN-64-PIC: ## %bb.0: ## %entry 10499; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 10500; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10501; DARWIN-64-PIC-NEXT: retq 10502 10503entry: 10504 %0 = add i64 %i, 65536 10505 %1 = getelementptr [131072 x i32], [131072 x i32]* @ldst, i64 0, i64 %0 10506 %2 = bitcast i32* %1 to i8* 10507 ret i8* %2 10508} 10509 10510define i8* @cam08(i64 %i) nounwind { 10511; LINUX-64-STATIC-LABEL: cam08: 10512; LINUX-64-STATIC: # %bb.0: # %entry 10513; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 10514; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10515; LINUX-64-STATIC-NEXT: retq 10516; 10517; LINUX-32-STATIC-LABEL: cam08: 10518; LINUX-32-STATIC: # %bb.0: # %entry 10519; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10520; LINUX-32-STATIC-NEXT: movl lptr, %ecx 10521; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10522; LINUX-32-STATIC-NEXT: retl 10523; 10524; LINUX-32-PIC-LABEL: cam08: 10525; LINUX-32-PIC: # %bb.0: # %entry 10526; LINUX-32-PIC-NEXT: calll .L130$pb 10527; LINUX-32-PIC-NEXT: .L130$pb: 10528; LINUX-32-PIC-NEXT: popl %eax 10529; LINUX-32-PIC-NEXT: .Ltmp130: 10530; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax 10531; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10532; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 10533; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10534; LINUX-32-PIC-NEXT: retl 10535; 10536; LINUX-64-PIC-LABEL: cam08: 10537; LINUX-64-PIC: # %bb.0: # %entry 10538; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 10539; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10540; LINUX-64-PIC-NEXT: retq 10541; 10542; DARWIN-32-STATIC-LABEL: cam08: 10543; DARWIN-32-STATIC: ## %bb.0: ## %entry 10544; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10545; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 10546; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10547; DARWIN-32-STATIC-NEXT: retl 10548; 10549; DARWIN-32-DYNAMIC-LABEL: cam08: 10550; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10551; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10552; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 10553; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10554; DARWIN-32-DYNAMIC-NEXT: retl 10555; 10556; DARWIN-32-PIC-LABEL: cam08: 10557; DARWIN-32-PIC: ## %bb.0: ## %entry 10558; DARWIN-32-PIC-NEXT: calll L130$pb 10559; DARWIN-32-PIC-NEXT: L130$pb: 10560; DARWIN-32-PIC-NEXT: popl %eax 10561; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10562; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb(%eax), %eax 10563; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10564; DARWIN-32-PIC-NEXT: retl 10565; 10566; DARWIN-64-STATIC-LABEL: cam08: 10567; DARWIN-64-STATIC: ## %bb.0: ## %entry 10568; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 10569; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10570; DARWIN-64-STATIC-NEXT: retq 10571; 10572; DARWIN-64-DYNAMIC-LABEL: cam08: 10573; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10574; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 10575; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10576; DARWIN-64-DYNAMIC-NEXT: retq 10577; 10578; DARWIN-64-PIC-LABEL: cam08: 10579; DARWIN-64-PIC: ## %bb.0: ## %entry 10580; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 10581; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10582; DARWIN-64-PIC-NEXT: retq 10583 10584entry: 10585 %0 = load i32*, i32** @lptr, align 8 10586 %1 = add i64 %i, 65536 10587 %2 = getelementptr i32, i32* %0, i64 %1 10588 %3 = bitcast i32* %2 to i8* 10589 ret i8* %3 10590} 10591 10592define void @lcallee() nounwind { 10593; LINUX-64-STATIC-LABEL: lcallee: 10594; LINUX-64-STATIC: # %bb.0: # %entry 10595; LINUX-64-STATIC-NEXT: pushq %rax 10596; LINUX-64-STATIC-NEXT: callq x 10597; LINUX-64-STATIC-NEXT: callq x 10598; LINUX-64-STATIC-NEXT: callq x 10599; LINUX-64-STATIC-NEXT: callq x 10600; LINUX-64-STATIC-NEXT: callq x 10601; LINUX-64-STATIC-NEXT: callq x 10602; LINUX-64-STATIC-NEXT: callq x 10603; LINUX-64-STATIC-NEXT: popq %rax 10604; LINUX-64-STATIC-NEXT: retq 10605; 10606; LINUX-32-STATIC-LABEL: lcallee: 10607; LINUX-32-STATIC: # %bb.0: # %entry 10608; LINUX-32-STATIC-NEXT: subl $12, %esp 10609; LINUX-32-STATIC-NEXT: calll x 10610; LINUX-32-STATIC-NEXT: calll x 10611; LINUX-32-STATIC-NEXT: calll x 10612; LINUX-32-STATIC-NEXT: calll x 10613; LINUX-32-STATIC-NEXT: calll x 10614; LINUX-32-STATIC-NEXT: calll x 10615; LINUX-32-STATIC-NEXT: calll x 10616; LINUX-32-STATIC-NEXT: addl $12, %esp 10617; LINUX-32-STATIC-NEXT: retl 10618; 10619; LINUX-32-PIC-LABEL: lcallee: 10620; LINUX-32-PIC: # %bb.0: # %entry 10621; LINUX-32-PIC-NEXT: pushl %ebx 10622; LINUX-32-PIC-NEXT: subl $8, %esp 10623; LINUX-32-PIC-NEXT: calll .L131$pb 10624; LINUX-32-PIC-NEXT: .L131$pb: 10625; LINUX-32-PIC-NEXT: popl %ebx 10626; LINUX-32-PIC-NEXT: .Ltmp131: 10627; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx 10628; LINUX-32-PIC-NEXT: calll x@PLT 10629; LINUX-32-PIC-NEXT: calll x@PLT 10630; LINUX-32-PIC-NEXT: calll x@PLT 10631; LINUX-32-PIC-NEXT: calll x@PLT 10632; LINUX-32-PIC-NEXT: calll x@PLT 10633; LINUX-32-PIC-NEXT: calll x@PLT 10634; LINUX-32-PIC-NEXT: calll x@PLT 10635; LINUX-32-PIC-NEXT: addl $8, %esp 10636; LINUX-32-PIC-NEXT: popl %ebx 10637; LINUX-32-PIC-NEXT: retl 10638; 10639; LINUX-64-PIC-LABEL: lcallee: 10640; LINUX-64-PIC: # %bb.0: # %entry 10641; LINUX-64-PIC-NEXT: pushq %rax 10642; LINUX-64-PIC-NEXT: callq x@PLT 10643; LINUX-64-PIC-NEXT: callq x@PLT 10644; LINUX-64-PIC-NEXT: callq x@PLT 10645; LINUX-64-PIC-NEXT: callq x@PLT 10646; LINUX-64-PIC-NEXT: callq x@PLT 10647; LINUX-64-PIC-NEXT: callq x@PLT 10648; LINUX-64-PIC-NEXT: callq x@PLT 10649; LINUX-64-PIC-NEXT: popq %rax 10650; LINUX-64-PIC-NEXT: retq 10651; 10652; DARWIN-32-STATIC-LABEL: lcallee: 10653; DARWIN-32-STATIC: ## %bb.0: ## %entry 10654; DARWIN-32-STATIC-NEXT: subl $12, %esp 10655; DARWIN-32-STATIC-NEXT: calll _x 10656; DARWIN-32-STATIC-NEXT: calll _x 10657; DARWIN-32-STATIC-NEXT: calll _x 10658; DARWIN-32-STATIC-NEXT: calll _x 10659; DARWIN-32-STATIC-NEXT: calll _x 10660; DARWIN-32-STATIC-NEXT: calll _x 10661; DARWIN-32-STATIC-NEXT: calll _x 10662; DARWIN-32-STATIC-NEXT: addl $12, %esp 10663; DARWIN-32-STATIC-NEXT: retl 10664; 10665; DARWIN-32-DYNAMIC-LABEL: lcallee: 10666; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10667; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 10668; DARWIN-32-DYNAMIC-NEXT: calll _x 10669; DARWIN-32-DYNAMIC-NEXT: calll _x 10670; DARWIN-32-DYNAMIC-NEXT: calll _x 10671; DARWIN-32-DYNAMIC-NEXT: calll _x 10672; DARWIN-32-DYNAMIC-NEXT: calll _x 10673; DARWIN-32-DYNAMIC-NEXT: calll _x 10674; DARWIN-32-DYNAMIC-NEXT: calll _x 10675; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 10676; DARWIN-32-DYNAMIC-NEXT: retl 10677; 10678; DARWIN-32-PIC-LABEL: lcallee: 10679; DARWIN-32-PIC: ## %bb.0: ## %entry 10680; DARWIN-32-PIC-NEXT: subl $12, %esp 10681; DARWIN-32-PIC-NEXT: calll _x 10682; DARWIN-32-PIC-NEXT: calll _x 10683; DARWIN-32-PIC-NEXT: calll _x 10684; DARWIN-32-PIC-NEXT: calll _x 10685; DARWIN-32-PIC-NEXT: calll _x 10686; DARWIN-32-PIC-NEXT: calll _x 10687; DARWIN-32-PIC-NEXT: calll _x 10688; DARWIN-32-PIC-NEXT: addl $12, %esp 10689; DARWIN-32-PIC-NEXT: retl 10690; 10691; DARWIN-64-STATIC-LABEL: lcallee: 10692; DARWIN-64-STATIC: ## %bb.0: ## %entry 10693; DARWIN-64-STATIC-NEXT: pushq %rax 10694; DARWIN-64-STATIC-NEXT: callq _x 10695; DARWIN-64-STATIC-NEXT: callq _x 10696; DARWIN-64-STATIC-NEXT: callq _x 10697; DARWIN-64-STATIC-NEXT: callq _x 10698; DARWIN-64-STATIC-NEXT: callq _x 10699; DARWIN-64-STATIC-NEXT: callq _x 10700; DARWIN-64-STATIC-NEXT: callq _x 10701; DARWIN-64-STATIC-NEXT: popq %rax 10702; DARWIN-64-STATIC-NEXT: retq 10703; 10704; DARWIN-64-DYNAMIC-LABEL: lcallee: 10705; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10706; DARWIN-64-DYNAMIC-NEXT: pushq %rax 10707; DARWIN-64-DYNAMIC-NEXT: callq _x 10708; DARWIN-64-DYNAMIC-NEXT: callq _x 10709; DARWIN-64-DYNAMIC-NEXT: callq _x 10710; DARWIN-64-DYNAMIC-NEXT: callq _x 10711; DARWIN-64-DYNAMIC-NEXT: callq _x 10712; DARWIN-64-DYNAMIC-NEXT: callq _x 10713; DARWIN-64-DYNAMIC-NEXT: callq _x 10714; DARWIN-64-DYNAMIC-NEXT: popq %rax 10715; DARWIN-64-DYNAMIC-NEXT: retq 10716; 10717; DARWIN-64-PIC-LABEL: lcallee: 10718; DARWIN-64-PIC: ## %bb.0: ## %entry 10719; DARWIN-64-PIC-NEXT: pushq %rax 10720; DARWIN-64-PIC-NEXT: callq _x 10721; DARWIN-64-PIC-NEXT: callq _x 10722; DARWIN-64-PIC-NEXT: callq _x 10723; DARWIN-64-PIC-NEXT: callq _x 10724; DARWIN-64-PIC-NEXT: callq _x 10725; DARWIN-64-PIC-NEXT: callq _x 10726; DARWIN-64-PIC-NEXT: callq _x 10727; DARWIN-64-PIC-NEXT: popq %rax 10728; DARWIN-64-PIC-NEXT: retq 10729 10730entry: 10731 call void @x() nounwind 10732 call void @x() nounwind 10733 call void @x() nounwind 10734 call void @x() nounwind 10735 call void @x() nounwind 10736 call void @x() nounwind 10737 call void @x() nounwind 10738 ret void 10739} 10740 10741declare void @x() 10742 10743define internal void @dcallee() nounwind { 10744; LINUX-64-STATIC-LABEL: dcallee: 10745; LINUX-64-STATIC: # %bb.0: # %entry 10746; LINUX-64-STATIC-NEXT: pushq %rax 10747; LINUX-64-STATIC-NEXT: callq y 10748; LINUX-64-STATIC-NEXT: callq y 10749; LINUX-64-STATIC-NEXT: callq y 10750; LINUX-64-STATIC-NEXT: callq y 10751; LINUX-64-STATIC-NEXT: callq y 10752; LINUX-64-STATIC-NEXT: callq y 10753; LINUX-64-STATIC-NEXT: callq y 10754; LINUX-64-STATIC-NEXT: popq %rax 10755; LINUX-64-STATIC-NEXT: retq 10756; 10757; LINUX-32-STATIC-LABEL: dcallee: 10758; LINUX-32-STATIC: # %bb.0: # %entry 10759; LINUX-32-STATIC-NEXT: subl $12, %esp 10760; LINUX-32-STATIC-NEXT: calll y 10761; LINUX-32-STATIC-NEXT: calll y 10762; LINUX-32-STATIC-NEXT: calll y 10763; LINUX-32-STATIC-NEXT: calll y 10764; LINUX-32-STATIC-NEXT: calll y 10765; LINUX-32-STATIC-NEXT: calll y 10766; LINUX-32-STATIC-NEXT: calll y 10767; LINUX-32-STATIC-NEXT: addl $12, %esp 10768; LINUX-32-STATIC-NEXT: retl 10769; 10770; LINUX-32-PIC-LABEL: dcallee: 10771; LINUX-32-PIC: # %bb.0: # %entry 10772; LINUX-32-PIC-NEXT: pushl %ebx 10773; LINUX-32-PIC-NEXT: subl $8, %esp 10774; LINUX-32-PIC-NEXT: calll .L132$pb 10775; LINUX-32-PIC-NEXT: .L132$pb: 10776; LINUX-32-PIC-NEXT: popl %ebx 10777; LINUX-32-PIC-NEXT: .Ltmp132: 10778; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx 10779; LINUX-32-PIC-NEXT: calll y@PLT 10780; LINUX-32-PIC-NEXT: calll y@PLT 10781; LINUX-32-PIC-NEXT: calll y@PLT 10782; LINUX-32-PIC-NEXT: calll y@PLT 10783; LINUX-32-PIC-NEXT: calll y@PLT 10784; LINUX-32-PIC-NEXT: calll y@PLT 10785; LINUX-32-PIC-NEXT: calll y@PLT 10786; LINUX-32-PIC-NEXT: addl $8, %esp 10787; LINUX-32-PIC-NEXT: popl %ebx 10788; LINUX-32-PIC-NEXT: retl 10789; 10790; LINUX-64-PIC-LABEL: dcallee: 10791; LINUX-64-PIC: # %bb.0: # %entry 10792; LINUX-64-PIC-NEXT: pushq %rax 10793; LINUX-64-PIC-NEXT: callq y@PLT 10794; LINUX-64-PIC-NEXT: callq y@PLT 10795; LINUX-64-PIC-NEXT: callq y@PLT 10796; LINUX-64-PIC-NEXT: callq y@PLT 10797; LINUX-64-PIC-NEXT: callq y@PLT 10798; LINUX-64-PIC-NEXT: callq y@PLT 10799; LINUX-64-PIC-NEXT: callq y@PLT 10800; LINUX-64-PIC-NEXT: popq %rax 10801; LINUX-64-PIC-NEXT: retq 10802; 10803; DARWIN-32-STATIC-LABEL: dcallee: 10804; DARWIN-32-STATIC: ## %bb.0: ## %entry 10805; DARWIN-32-STATIC-NEXT: subl $12, %esp 10806; DARWIN-32-STATIC-NEXT: calll _y 10807; DARWIN-32-STATIC-NEXT: calll _y 10808; DARWIN-32-STATIC-NEXT: calll _y 10809; DARWIN-32-STATIC-NEXT: calll _y 10810; DARWIN-32-STATIC-NEXT: calll _y 10811; DARWIN-32-STATIC-NEXT: calll _y 10812; DARWIN-32-STATIC-NEXT: calll _y 10813; DARWIN-32-STATIC-NEXT: addl $12, %esp 10814; DARWIN-32-STATIC-NEXT: retl 10815; 10816; DARWIN-32-DYNAMIC-LABEL: dcallee: 10817; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10818; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 10819; DARWIN-32-DYNAMIC-NEXT: calll _y 10820; DARWIN-32-DYNAMIC-NEXT: calll _y 10821; DARWIN-32-DYNAMIC-NEXT: calll _y 10822; DARWIN-32-DYNAMIC-NEXT: calll _y 10823; DARWIN-32-DYNAMIC-NEXT: calll _y 10824; DARWIN-32-DYNAMIC-NEXT: calll _y 10825; DARWIN-32-DYNAMIC-NEXT: calll _y 10826; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 10827; DARWIN-32-DYNAMIC-NEXT: retl 10828; 10829; DARWIN-32-PIC-LABEL: dcallee: 10830; DARWIN-32-PIC: ## %bb.0: ## %entry 10831; DARWIN-32-PIC-NEXT: subl $12, %esp 10832; DARWIN-32-PIC-NEXT: calll _y 10833; DARWIN-32-PIC-NEXT: calll _y 10834; DARWIN-32-PIC-NEXT: calll _y 10835; DARWIN-32-PIC-NEXT: calll _y 10836; DARWIN-32-PIC-NEXT: calll _y 10837; DARWIN-32-PIC-NEXT: calll _y 10838; DARWIN-32-PIC-NEXT: calll _y 10839; DARWIN-32-PIC-NEXT: addl $12, %esp 10840; DARWIN-32-PIC-NEXT: retl 10841; 10842; DARWIN-64-STATIC-LABEL: dcallee: 10843; DARWIN-64-STATIC: ## %bb.0: ## %entry 10844; DARWIN-64-STATIC-NEXT: pushq %rax 10845; DARWIN-64-STATIC-NEXT: callq _y 10846; DARWIN-64-STATIC-NEXT: callq _y 10847; DARWIN-64-STATIC-NEXT: callq _y 10848; DARWIN-64-STATIC-NEXT: callq _y 10849; DARWIN-64-STATIC-NEXT: callq _y 10850; DARWIN-64-STATIC-NEXT: callq _y 10851; DARWIN-64-STATIC-NEXT: callq _y 10852; DARWIN-64-STATIC-NEXT: popq %rax 10853; DARWIN-64-STATIC-NEXT: retq 10854; 10855; DARWIN-64-DYNAMIC-LABEL: dcallee: 10856; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10857; DARWIN-64-DYNAMIC-NEXT: pushq %rax 10858; DARWIN-64-DYNAMIC-NEXT: callq _y 10859; DARWIN-64-DYNAMIC-NEXT: callq _y 10860; DARWIN-64-DYNAMIC-NEXT: callq _y 10861; DARWIN-64-DYNAMIC-NEXT: callq _y 10862; DARWIN-64-DYNAMIC-NEXT: callq _y 10863; DARWIN-64-DYNAMIC-NEXT: callq _y 10864; DARWIN-64-DYNAMIC-NEXT: callq _y 10865; DARWIN-64-DYNAMIC-NEXT: popq %rax 10866; DARWIN-64-DYNAMIC-NEXT: retq 10867; 10868; DARWIN-64-PIC-LABEL: dcallee: 10869; DARWIN-64-PIC: ## %bb.0: ## %entry 10870; DARWIN-64-PIC-NEXT: pushq %rax 10871; DARWIN-64-PIC-NEXT: callq _y 10872; DARWIN-64-PIC-NEXT: callq _y 10873; DARWIN-64-PIC-NEXT: callq _y 10874; DARWIN-64-PIC-NEXT: callq _y 10875; DARWIN-64-PIC-NEXT: callq _y 10876; DARWIN-64-PIC-NEXT: callq _y 10877; DARWIN-64-PIC-NEXT: callq _y 10878; DARWIN-64-PIC-NEXT: popq %rax 10879; DARWIN-64-PIC-NEXT: retq 10880 10881entry: 10882 call void @y() nounwind 10883 call void @y() nounwind 10884 call void @y() nounwind 10885 call void @y() nounwind 10886 call void @y() nounwind 10887 call void @y() nounwind 10888 call void @y() nounwind 10889 ret void 10890} 10891 10892declare void @y() 10893 10894define void ()* @address() nounwind { 10895; LINUX-64-STATIC-LABEL: address: 10896; LINUX-64-STATIC: # %bb.0: # %entry 10897; LINUX-64-STATIC-NEXT: movl $callee, %eax 10898; LINUX-64-STATIC-NEXT: retq 10899; 10900; LINUX-32-STATIC-LABEL: address: 10901; LINUX-32-STATIC: # %bb.0: # %entry 10902; LINUX-32-STATIC-NEXT: movl $callee, %eax 10903; LINUX-32-STATIC-NEXT: retl 10904; 10905; LINUX-32-PIC-LABEL: address: 10906; LINUX-32-PIC: # %bb.0: # %entry 10907; LINUX-32-PIC-NEXT: calll .L133$pb 10908; LINUX-32-PIC-NEXT: .L133$pb: 10909; LINUX-32-PIC-NEXT: popl %eax 10910; LINUX-32-PIC-NEXT: .Ltmp133: 10911; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax 10912; LINUX-32-PIC-NEXT: movl callee@GOT(%eax), %eax 10913; LINUX-32-PIC-NEXT: retl 10914; 10915; LINUX-64-PIC-LABEL: address: 10916; LINUX-64-PIC: # %bb.0: # %entry 10917; LINUX-64-PIC-NEXT: movq callee@GOTPCREL(%rip), %rax 10918; LINUX-64-PIC-NEXT: retq 10919; 10920; DARWIN-32-STATIC-LABEL: address: 10921; DARWIN-32-STATIC: ## %bb.0: ## %entry 10922; DARWIN-32-STATIC-NEXT: movl $_callee, %eax 10923; DARWIN-32-STATIC-NEXT: retl 10924; 10925; DARWIN-32-DYNAMIC-LABEL: address: 10926; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10927; DARWIN-32-DYNAMIC-NEXT: movl L_callee$non_lazy_ptr, %eax 10928; DARWIN-32-DYNAMIC-NEXT: retl 10929; 10930; DARWIN-32-PIC-LABEL: address: 10931; DARWIN-32-PIC: ## %bb.0: ## %entry 10932; DARWIN-32-PIC-NEXT: calll L133$pb 10933; DARWIN-32-PIC-NEXT: L133$pb: 10934; DARWIN-32-PIC-NEXT: popl %eax 10935; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax 10936; DARWIN-32-PIC-NEXT: retl 10937; 10938; DARWIN-64-STATIC-LABEL: address: 10939; DARWIN-64-STATIC: ## %bb.0: ## %entry 10940; DARWIN-64-STATIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10941; DARWIN-64-STATIC-NEXT: retq 10942; 10943; DARWIN-64-DYNAMIC-LABEL: address: 10944; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10945; DARWIN-64-DYNAMIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10946; DARWIN-64-DYNAMIC-NEXT: retq 10947; 10948; DARWIN-64-PIC-LABEL: address: 10949; DARWIN-64-PIC: ## %bb.0: ## %entry 10950; DARWIN-64-PIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10951; DARWIN-64-PIC-NEXT: retq 10952 10953entry: 10954 ret void ()* @callee 10955} 10956 10957declare void @callee() 10958 10959define void ()* @laddress() nounwind { 10960; LINUX-64-STATIC-LABEL: laddress: 10961; LINUX-64-STATIC: # %bb.0: # %entry 10962; LINUX-64-STATIC-NEXT: movl $lcallee, %eax 10963; LINUX-64-STATIC-NEXT: retq 10964; 10965; LINUX-32-STATIC-LABEL: laddress: 10966; LINUX-32-STATIC: # %bb.0: # %entry 10967; LINUX-32-STATIC-NEXT: movl $lcallee, %eax 10968; LINUX-32-STATIC-NEXT: retl 10969; 10970; LINUX-32-PIC-LABEL: laddress: 10971; LINUX-32-PIC: # %bb.0: # %entry 10972; LINUX-32-PIC-NEXT: calll .L134$pb 10973; LINUX-32-PIC-NEXT: .L134$pb: 10974; LINUX-32-PIC-NEXT: popl %eax 10975; LINUX-32-PIC-NEXT: .Ltmp134: 10976; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax 10977; LINUX-32-PIC-NEXT: movl lcallee@GOT(%eax), %eax 10978; LINUX-32-PIC-NEXT: retl 10979; 10980; LINUX-64-PIC-LABEL: laddress: 10981; LINUX-64-PIC: # %bb.0: # %entry 10982; LINUX-64-PIC-NEXT: movq lcallee@GOTPCREL(%rip), %rax 10983; LINUX-64-PIC-NEXT: retq 10984; 10985; DARWIN-32-STATIC-LABEL: laddress: 10986; DARWIN-32-STATIC: ## %bb.0: ## %entry 10987; DARWIN-32-STATIC-NEXT: movl $_lcallee, %eax 10988; DARWIN-32-STATIC-NEXT: retl 10989; 10990; DARWIN-32-DYNAMIC-LABEL: laddress: 10991; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10992; DARWIN-32-DYNAMIC-NEXT: movl $_lcallee, %eax 10993; DARWIN-32-DYNAMIC-NEXT: retl 10994; 10995; DARWIN-32-PIC-LABEL: laddress: 10996; DARWIN-32-PIC: ## %bb.0: ## %entry 10997; DARWIN-32-PIC-NEXT: calll L134$pb 10998; DARWIN-32-PIC-NEXT: L134$pb: 10999; DARWIN-32-PIC-NEXT: popl %eax 11000; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb(%eax), %eax 11001; DARWIN-32-PIC-NEXT: retl 11002; 11003; DARWIN-64-STATIC-LABEL: laddress: 11004; DARWIN-64-STATIC: ## %bb.0: ## %entry 11005; DARWIN-64-STATIC-NEXT: leaq _lcallee(%rip), %rax 11006; DARWIN-64-STATIC-NEXT: retq 11007; 11008; DARWIN-64-DYNAMIC-LABEL: laddress: 11009; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11010; DARWIN-64-DYNAMIC-NEXT: leaq _lcallee(%rip), %rax 11011; DARWIN-64-DYNAMIC-NEXT: retq 11012; 11013; DARWIN-64-PIC-LABEL: laddress: 11014; DARWIN-64-PIC: ## %bb.0: ## %entry 11015; DARWIN-64-PIC-NEXT: leaq _lcallee(%rip), %rax 11016; DARWIN-64-PIC-NEXT: retq 11017 11018entry: 11019 ret void ()* @lcallee 11020} 11021 11022define void ()* @daddress() nounwind { 11023; LINUX-64-STATIC-LABEL: daddress: 11024; LINUX-64-STATIC: # %bb.0: # %entry 11025; LINUX-64-STATIC-NEXT: movl $dcallee, %eax 11026; LINUX-64-STATIC-NEXT: retq 11027; 11028; LINUX-32-STATIC-LABEL: daddress: 11029; LINUX-32-STATIC: # %bb.0: # %entry 11030; LINUX-32-STATIC-NEXT: movl $dcallee, %eax 11031; LINUX-32-STATIC-NEXT: retl 11032; 11033; LINUX-32-PIC-LABEL: daddress: 11034; LINUX-32-PIC: # %bb.0: # %entry 11035; LINUX-32-PIC-NEXT: calll .L135$pb 11036; LINUX-32-PIC-NEXT: .L135$pb: 11037; LINUX-32-PIC-NEXT: popl %eax 11038; LINUX-32-PIC-NEXT: .Ltmp135: 11039; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax 11040; LINUX-32-PIC-NEXT: leal dcallee@GOTOFF(%eax), %eax 11041; LINUX-32-PIC-NEXT: retl 11042; 11043; LINUX-64-PIC-LABEL: daddress: 11044; LINUX-64-PIC: # %bb.0: # %entry 11045; LINUX-64-PIC-NEXT: leaq dcallee(%rip), %rax 11046; LINUX-64-PIC-NEXT: retq 11047; 11048; DARWIN-32-STATIC-LABEL: daddress: 11049; DARWIN-32-STATIC: ## %bb.0: ## %entry 11050; DARWIN-32-STATIC-NEXT: movl $_dcallee, %eax 11051; DARWIN-32-STATIC-NEXT: retl 11052; 11053; DARWIN-32-DYNAMIC-LABEL: daddress: 11054; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11055; DARWIN-32-DYNAMIC-NEXT: movl $_dcallee, %eax 11056; DARWIN-32-DYNAMIC-NEXT: retl 11057; 11058; DARWIN-32-PIC-LABEL: daddress: 11059; DARWIN-32-PIC: ## %bb.0: ## %entry 11060; DARWIN-32-PIC-NEXT: calll L135$pb 11061; DARWIN-32-PIC-NEXT: L135$pb: 11062; DARWIN-32-PIC-NEXT: popl %eax 11063; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb(%eax), %eax 11064; DARWIN-32-PIC-NEXT: retl 11065; 11066; DARWIN-64-STATIC-LABEL: daddress: 11067; DARWIN-64-STATIC: ## %bb.0: ## %entry 11068; DARWIN-64-STATIC-NEXT: leaq _dcallee(%rip), %rax 11069; DARWIN-64-STATIC-NEXT: retq 11070; 11071; DARWIN-64-DYNAMIC-LABEL: daddress: 11072; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11073; DARWIN-64-DYNAMIC-NEXT: leaq _dcallee(%rip), %rax 11074; DARWIN-64-DYNAMIC-NEXT: retq 11075; 11076; DARWIN-64-PIC-LABEL: daddress: 11077; DARWIN-64-PIC: ## %bb.0: ## %entry 11078; DARWIN-64-PIC-NEXT: leaq _dcallee(%rip), %rax 11079; DARWIN-64-PIC-NEXT: retq 11080 11081entry: 11082 ret void ()* @dcallee 11083} 11084 11085define void @caller() nounwind { 11086; LINUX-64-STATIC-LABEL: caller: 11087; LINUX-64-STATIC: # %bb.0: # %entry 11088; LINUX-64-STATIC-NEXT: pushq %rax 11089; LINUX-64-STATIC-NEXT: callq callee 11090; LINUX-64-STATIC-NEXT: callq callee 11091; LINUX-64-STATIC-NEXT: popq %rax 11092; LINUX-64-STATIC-NEXT: retq 11093; 11094; LINUX-32-STATIC-LABEL: caller: 11095; LINUX-32-STATIC: # %bb.0: # %entry 11096; LINUX-32-STATIC-NEXT: subl $12, %esp 11097; LINUX-32-STATIC-NEXT: calll callee 11098; LINUX-32-STATIC-NEXT: calll callee 11099; LINUX-32-STATIC-NEXT: addl $12, %esp 11100; LINUX-32-STATIC-NEXT: retl 11101; 11102; LINUX-32-PIC-LABEL: caller: 11103; LINUX-32-PIC: # %bb.0: # %entry 11104; LINUX-32-PIC-NEXT: pushl %ebx 11105; LINUX-32-PIC-NEXT: subl $8, %esp 11106; LINUX-32-PIC-NEXT: calll .L136$pb 11107; LINUX-32-PIC-NEXT: .L136$pb: 11108; LINUX-32-PIC-NEXT: popl %ebx 11109; LINUX-32-PIC-NEXT: .Ltmp136: 11110; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx 11111; LINUX-32-PIC-NEXT: calll callee@PLT 11112; LINUX-32-PIC-NEXT: calll callee@PLT 11113; LINUX-32-PIC-NEXT: addl $8, %esp 11114; LINUX-32-PIC-NEXT: popl %ebx 11115; LINUX-32-PIC-NEXT: retl 11116; 11117; LINUX-64-PIC-LABEL: caller: 11118; LINUX-64-PIC: # %bb.0: # %entry 11119; LINUX-64-PIC-NEXT: pushq %rax 11120; LINUX-64-PIC-NEXT: callq callee@PLT 11121; LINUX-64-PIC-NEXT: callq callee@PLT 11122; LINUX-64-PIC-NEXT: popq %rax 11123; LINUX-64-PIC-NEXT: retq 11124; 11125; DARWIN-32-STATIC-LABEL: caller: 11126; DARWIN-32-STATIC: ## %bb.0: ## %entry 11127; DARWIN-32-STATIC-NEXT: subl $12, %esp 11128; DARWIN-32-STATIC-NEXT: calll _callee 11129; DARWIN-32-STATIC-NEXT: calll _callee 11130; DARWIN-32-STATIC-NEXT: addl $12, %esp 11131; DARWIN-32-STATIC-NEXT: retl 11132; 11133; DARWIN-32-DYNAMIC-LABEL: caller: 11134; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11135; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11136; DARWIN-32-DYNAMIC-NEXT: calll _callee 11137; DARWIN-32-DYNAMIC-NEXT: calll _callee 11138; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11139; DARWIN-32-DYNAMIC-NEXT: retl 11140; 11141; DARWIN-32-PIC-LABEL: caller: 11142; DARWIN-32-PIC: ## %bb.0: ## %entry 11143; DARWIN-32-PIC-NEXT: subl $12, %esp 11144; DARWIN-32-PIC-NEXT: calll _callee 11145; DARWIN-32-PIC-NEXT: calll _callee 11146; DARWIN-32-PIC-NEXT: addl $12, %esp 11147; DARWIN-32-PIC-NEXT: retl 11148; 11149; DARWIN-64-STATIC-LABEL: caller: 11150; DARWIN-64-STATIC: ## %bb.0: ## %entry 11151; DARWIN-64-STATIC-NEXT: pushq %rax 11152; DARWIN-64-STATIC-NEXT: callq _callee 11153; DARWIN-64-STATIC-NEXT: callq _callee 11154; DARWIN-64-STATIC-NEXT: popq %rax 11155; DARWIN-64-STATIC-NEXT: retq 11156; 11157; DARWIN-64-DYNAMIC-LABEL: caller: 11158; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11159; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11160; DARWIN-64-DYNAMIC-NEXT: callq _callee 11161; DARWIN-64-DYNAMIC-NEXT: callq _callee 11162; DARWIN-64-DYNAMIC-NEXT: popq %rax 11163; DARWIN-64-DYNAMIC-NEXT: retq 11164; 11165; DARWIN-64-PIC-LABEL: caller: 11166; DARWIN-64-PIC: ## %bb.0: ## %entry 11167; DARWIN-64-PIC-NEXT: pushq %rax 11168; DARWIN-64-PIC-NEXT: callq _callee 11169; DARWIN-64-PIC-NEXT: callq _callee 11170; DARWIN-64-PIC-NEXT: popq %rax 11171; DARWIN-64-PIC-NEXT: retq 11172 11173entry: 11174 call void @callee() nounwind 11175 call void @callee() nounwind 11176 ret void 11177} 11178 11179define void @dcaller() nounwind { 11180; LINUX-64-STATIC-LABEL: dcaller: 11181; LINUX-64-STATIC: # %bb.0: # %entry 11182; LINUX-64-STATIC-NEXT: pushq %rax 11183; LINUX-64-STATIC-NEXT: callq dcallee 11184; LINUX-64-STATIC-NEXT: callq dcallee 11185; LINUX-64-STATIC-NEXT: popq %rax 11186; LINUX-64-STATIC-NEXT: retq 11187; 11188; LINUX-32-STATIC-LABEL: dcaller: 11189; LINUX-32-STATIC: # %bb.0: # %entry 11190; LINUX-32-STATIC-NEXT: subl $12, %esp 11191; LINUX-32-STATIC-NEXT: calll dcallee 11192; LINUX-32-STATIC-NEXT: calll dcallee 11193; LINUX-32-STATIC-NEXT: addl $12, %esp 11194; LINUX-32-STATIC-NEXT: retl 11195; 11196; LINUX-32-PIC-LABEL: dcaller: 11197; LINUX-32-PIC: # %bb.0: # %entry 11198; LINUX-32-PIC-NEXT: pushl %ebx 11199; LINUX-32-PIC-NEXT: subl $8, %esp 11200; LINUX-32-PIC-NEXT: calll .L137$pb 11201; LINUX-32-PIC-NEXT: .L137$pb: 11202; LINUX-32-PIC-NEXT: popl %ebx 11203; LINUX-32-PIC-NEXT: .Ltmp137: 11204; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx 11205; LINUX-32-PIC-NEXT: calll dcallee 11206; LINUX-32-PIC-NEXT: calll dcallee 11207; LINUX-32-PIC-NEXT: addl $8, %esp 11208; LINUX-32-PIC-NEXT: popl %ebx 11209; LINUX-32-PIC-NEXT: retl 11210; 11211; LINUX-64-PIC-LABEL: dcaller: 11212; LINUX-64-PIC: # %bb.0: # %entry 11213; LINUX-64-PIC-NEXT: pushq %rax 11214; LINUX-64-PIC-NEXT: callq dcallee 11215; LINUX-64-PIC-NEXT: callq dcallee 11216; LINUX-64-PIC-NEXT: popq %rax 11217; LINUX-64-PIC-NEXT: retq 11218; 11219; DARWIN-32-STATIC-LABEL: dcaller: 11220; DARWIN-32-STATIC: ## %bb.0: ## %entry 11221; DARWIN-32-STATIC-NEXT: subl $12, %esp 11222; DARWIN-32-STATIC-NEXT: calll _dcallee 11223; DARWIN-32-STATIC-NEXT: calll _dcallee 11224; DARWIN-32-STATIC-NEXT: addl $12, %esp 11225; DARWIN-32-STATIC-NEXT: retl 11226; 11227; DARWIN-32-DYNAMIC-LABEL: dcaller: 11228; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11229; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11230; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11231; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11232; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11233; DARWIN-32-DYNAMIC-NEXT: retl 11234; 11235; DARWIN-32-PIC-LABEL: dcaller: 11236; DARWIN-32-PIC: ## %bb.0: ## %entry 11237; DARWIN-32-PIC-NEXT: subl $12, %esp 11238; DARWIN-32-PIC-NEXT: calll _dcallee 11239; DARWIN-32-PIC-NEXT: calll _dcallee 11240; DARWIN-32-PIC-NEXT: addl $12, %esp 11241; DARWIN-32-PIC-NEXT: retl 11242; 11243; DARWIN-64-STATIC-LABEL: dcaller: 11244; DARWIN-64-STATIC: ## %bb.0: ## %entry 11245; DARWIN-64-STATIC-NEXT: pushq %rax 11246; DARWIN-64-STATIC-NEXT: callq _dcallee 11247; DARWIN-64-STATIC-NEXT: callq _dcallee 11248; DARWIN-64-STATIC-NEXT: popq %rax 11249; DARWIN-64-STATIC-NEXT: retq 11250; 11251; DARWIN-64-DYNAMIC-LABEL: dcaller: 11252; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11253; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11254; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11255; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11256; DARWIN-64-DYNAMIC-NEXT: popq %rax 11257; DARWIN-64-DYNAMIC-NEXT: retq 11258; 11259; DARWIN-64-PIC-LABEL: dcaller: 11260; DARWIN-64-PIC: ## %bb.0: ## %entry 11261; DARWIN-64-PIC-NEXT: pushq %rax 11262; DARWIN-64-PIC-NEXT: callq _dcallee 11263; DARWIN-64-PIC-NEXT: callq _dcallee 11264; DARWIN-64-PIC-NEXT: popq %rax 11265; DARWIN-64-PIC-NEXT: retq 11266 11267entry: 11268 call void @dcallee() nounwind 11269 call void @dcallee() nounwind 11270 ret void 11271} 11272 11273define void @lcaller() nounwind { 11274; LINUX-64-STATIC-LABEL: lcaller: 11275; LINUX-64-STATIC: # %bb.0: # %entry 11276; LINUX-64-STATIC-NEXT: pushq %rax 11277; LINUX-64-STATIC-NEXT: callq lcallee 11278; LINUX-64-STATIC-NEXT: callq lcallee 11279; LINUX-64-STATIC-NEXT: popq %rax 11280; LINUX-64-STATIC-NEXT: retq 11281; 11282; LINUX-32-STATIC-LABEL: lcaller: 11283; LINUX-32-STATIC: # %bb.0: # %entry 11284; LINUX-32-STATIC-NEXT: subl $12, %esp 11285; LINUX-32-STATIC-NEXT: calll lcallee 11286; LINUX-32-STATIC-NEXT: calll lcallee 11287; LINUX-32-STATIC-NEXT: addl $12, %esp 11288; LINUX-32-STATIC-NEXT: retl 11289; 11290; LINUX-32-PIC-LABEL: lcaller: 11291; LINUX-32-PIC: # %bb.0: # %entry 11292; LINUX-32-PIC-NEXT: pushl %ebx 11293; LINUX-32-PIC-NEXT: subl $8, %esp 11294; LINUX-32-PIC-NEXT: calll .L138$pb 11295; LINUX-32-PIC-NEXT: .L138$pb: 11296; LINUX-32-PIC-NEXT: popl %ebx 11297; LINUX-32-PIC-NEXT: .Ltmp138: 11298; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx 11299; LINUX-32-PIC-NEXT: calll lcallee@PLT 11300; LINUX-32-PIC-NEXT: calll lcallee@PLT 11301; LINUX-32-PIC-NEXT: addl $8, %esp 11302; LINUX-32-PIC-NEXT: popl %ebx 11303; LINUX-32-PIC-NEXT: retl 11304; 11305; LINUX-64-PIC-LABEL: lcaller: 11306; LINUX-64-PIC: # %bb.0: # %entry 11307; LINUX-64-PIC-NEXT: pushq %rax 11308; LINUX-64-PIC-NEXT: callq lcallee@PLT 11309; LINUX-64-PIC-NEXT: callq lcallee@PLT 11310; LINUX-64-PIC-NEXT: popq %rax 11311; LINUX-64-PIC-NEXT: retq 11312; 11313; DARWIN-32-STATIC-LABEL: lcaller: 11314; DARWIN-32-STATIC: ## %bb.0: ## %entry 11315; DARWIN-32-STATIC-NEXT: subl $12, %esp 11316; DARWIN-32-STATIC-NEXT: calll _lcallee 11317; DARWIN-32-STATIC-NEXT: calll _lcallee 11318; DARWIN-32-STATIC-NEXT: addl $12, %esp 11319; DARWIN-32-STATIC-NEXT: retl 11320; 11321; DARWIN-32-DYNAMIC-LABEL: lcaller: 11322; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11323; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11324; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11325; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11326; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11327; DARWIN-32-DYNAMIC-NEXT: retl 11328; 11329; DARWIN-32-PIC-LABEL: lcaller: 11330; DARWIN-32-PIC: ## %bb.0: ## %entry 11331; DARWIN-32-PIC-NEXT: subl $12, %esp 11332; DARWIN-32-PIC-NEXT: calll _lcallee 11333; DARWIN-32-PIC-NEXT: calll _lcallee 11334; DARWIN-32-PIC-NEXT: addl $12, %esp 11335; DARWIN-32-PIC-NEXT: retl 11336; 11337; DARWIN-64-STATIC-LABEL: lcaller: 11338; DARWIN-64-STATIC: ## %bb.0: ## %entry 11339; DARWIN-64-STATIC-NEXT: pushq %rax 11340; DARWIN-64-STATIC-NEXT: callq _lcallee 11341; DARWIN-64-STATIC-NEXT: callq _lcallee 11342; DARWIN-64-STATIC-NEXT: popq %rax 11343; DARWIN-64-STATIC-NEXT: retq 11344; 11345; DARWIN-64-DYNAMIC-LABEL: lcaller: 11346; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11347; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11348; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11349; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11350; DARWIN-64-DYNAMIC-NEXT: popq %rax 11351; DARWIN-64-DYNAMIC-NEXT: retq 11352; 11353; DARWIN-64-PIC-LABEL: lcaller: 11354; DARWIN-64-PIC: ## %bb.0: ## %entry 11355; DARWIN-64-PIC-NEXT: pushq %rax 11356; DARWIN-64-PIC-NEXT: callq _lcallee 11357; DARWIN-64-PIC-NEXT: callq _lcallee 11358; DARWIN-64-PIC-NEXT: popq %rax 11359; DARWIN-64-PIC-NEXT: retq 11360 11361entry: 11362 call void @lcallee() nounwind 11363 call void @lcallee() nounwind 11364 ret void 11365} 11366 11367define void @tailcaller() nounwind { 11368; LINUX-64-STATIC-LABEL: tailcaller: 11369; LINUX-64-STATIC: # %bb.0: # %entry 11370; LINUX-64-STATIC-NEXT: pushq %rax 11371; LINUX-64-STATIC-NEXT: callq callee 11372; LINUX-64-STATIC-NEXT: popq %rax 11373; LINUX-64-STATIC-NEXT: retq 11374; 11375; LINUX-32-STATIC-LABEL: tailcaller: 11376; LINUX-32-STATIC: # %bb.0: # %entry 11377; LINUX-32-STATIC-NEXT: subl $12, %esp 11378; LINUX-32-STATIC-NEXT: calll callee 11379; LINUX-32-STATIC-NEXT: addl $12, %esp 11380; LINUX-32-STATIC-NEXT: retl 11381; 11382; LINUX-32-PIC-LABEL: tailcaller: 11383; LINUX-32-PIC: # %bb.0: # %entry 11384; LINUX-32-PIC-NEXT: pushl %ebx 11385; LINUX-32-PIC-NEXT: subl $8, %esp 11386; LINUX-32-PIC-NEXT: calll .L139$pb 11387; LINUX-32-PIC-NEXT: .L139$pb: 11388; LINUX-32-PIC-NEXT: popl %ebx 11389; LINUX-32-PIC-NEXT: .Ltmp139: 11390; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx 11391; LINUX-32-PIC-NEXT: calll callee@PLT 11392; LINUX-32-PIC-NEXT: addl $8, %esp 11393; LINUX-32-PIC-NEXT: popl %ebx 11394; LINUX-32-PIC-NEXT: retl 11395; 11396; LINUX-64-PIC-LABEL: tailcaller: 11397; LINUX-64-PIC: # %bb.0: # %entry 11398; LINUX-64-PIC-NEXT: pushq %rax 11399; LINUX-64-PIC-NEXT: callq callee@PLT 11400; LINUX-64-PIC-NEXT: popq %rax 11401; LINUX-64-PIC-NEXT: retq 11402; 11403; DARWIN-32-STATIC-LABEL: tailcaller: 11404; DARWIN-32-STATIC: ## %bb.0: ## %entry 11405; DARWIN-32-STATIC-NEXT: subl $12, %esp 11406; DARWIN-32-STATIC-NEXT: calll _callee 11407; DARWIN-32-STATIC-NEXT: addl $12, %esp 11408; DARWIN-32-STATIC-NEXT: retl 11409; 11410; DARWIN-32-DYNAMIC-LABEL: tailcaller: 11411; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11412; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11413; DARWIN-32-DYNAMIC-NEXT: calll _callee 11414; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11415; DARWIN-32-DYNAMIC-NEXT: retl 11416; 11417; DARWIN-32-PIC-LABEL: tailcaller: 11418; DARWIN-32-PIC: ## %bb.0: ## %entry 11419; DARWIN-32-PIC-NEXT: subl $12, %esp 11420; DARWIN-32-PIC-NEXT: calll _callee 11421; DARWIN-32-PIC-NEXT: addl $12, %esp 11422; DARWIN-32-PIC-NEXT: retl 11423; 11424; DARWIN-64-STATIC-LABEL: tailcaller: 11425; DARWIN-64-STATIC: ## %bb.0: ## %entry 11426; DARWIN-64-STATIC-NEXT: pushq %rax 11427; DARWIN-64-STATIC-NEXT: callq _callee 11428; DARWIN-64-STATIC-NEXT: popq %rax 11429; DARWIN-64-STATIC-NEXT: retq 11430; 11431; DARWIN-64-DYNAMIC-LABEL: tailcaller: 11432; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11433; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11434; DARWIN-64-DYNAMIC-NEXT: callq _callee 11435; DARWIN-64-DYNAMIC-NEXT: popq %rax 11436; DARWIN-64-DYNAMIC-NEXT: retq 11437; 11438; DARWIN-64-PIC-LABEL: tailcaller: 11439; DARWIN-64-PIC: ## %bb.0: ## %entry 11440; DARWIN-64-PIC-NEXT: pushq %rax 11441; DARWIN-64-PIC-NEXT: callq _callee 11442; DARWIN-64-PIC-NEXT: popq %rax 11443; DARWIN-64-PIC-NEXT: retq 11444 11445entry: 11446 call void @callee() nounwind 11447 ret void 11448} 11449 11450define void @dtailcaller() nounwind { 11451; LINUX-64-STATIC-LABEL: dtailcaller: 11452; LINUX-64-STATIC: # %bb.0: # %entry 11453; LINUX-64-STATIC-NEXT: pushq %rax 11454; LINUX-64-STATIC-NEXT: callq dcallee 11455; LINUX-64-STATIC-NEXT: popq %rax 11456; LINUX-64-STATIC-NEXT: retq 11457; 11458; LINUX-32-STATIC-LABEL: dtailcaller: 11459; LINUX-32-STATIC: # %bb.0: # %entry 11460; LINUX-32-STATIC-NEXT: subl $12, %esp 11461; LINUX-32-STATIC-NEXT: calll dcallee 11462; LINUX-32-STATIC-NEXT: addl $12, %esp 11463; LINUX-32-STATIC-NEXT: retl 11464; 11465; LINUX-32-PIC-LABEL: dtailcaller: 11466; LINUX-32-PIC: # %bb.0: # %entry 11467; LINUX-32-PIC-NEXT: pushl %ebx 11468; LINUX-32-PIC-NEXT: subl $8, %esp 11469; LINUX-32-PIC-NEXT: calll .L140$pb 11470; LINUX-32-PIC-NEXT: .L140$pb: 11471; LINUX-32-PIC-NEXT: popl %ebx 11472; LINUX-32-PIC-NEXT: .Ltmp140: 11473; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx 11474; LINUX-32-PIC-NEXT: calll dcallee 11475; LINUX-32-PIC-NEXT: addl $8, %esp 11476; LINUX-32-PIC-NEXT: popl %ebx 11477; LINUX-32-PIC-NEXT: retl 11478; 11479; LINUX-64-PIC-LABEL: dtailcaller: 11480; LINUX-64-PIC: # %bb.0: # %entry 11481; LINUX-64-PIC-NEXT: pushq %rax 11482; LINUX-64-PIC-NEXT: callq dcallee 11483; LINUX-64-PIC-NEXT: popq %rax 11484; LINUX-64-PIC-NEXT: retq 11485; 11486; DARWIN-32-STATIC-LABEL: dtailcaller: 11487; DARWIN-32-STATIC: ## %bb.0: ## %entry 11488; DARWIN-32-STATIC-NEXT: subl $12, %esp 11489; DARWIN-32-STATIC-NEXT: calll _dcallee 11490; DARWIN-32-STATIC-NEXT: addl $12, %esp 11491; DARWIN-32-STATIC-NEXT: retl 11492; 11493; DARWIN-32-DYNAMIC-LABEL: dtailcaller: 11494; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11495; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11496; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11497; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11498; DARWIN-32-DYNAMIC-NEXT: retl 11499; 11500; DARWIN-32-PIC-LABEL: dtailcaller: 11501; DARWIN-32-PIC: ## %bb.0: ## %entry 11502; DARWIN-32-PIC-NEXT: subl $12, %esp 11503; DARWIN-32-PIC-NEXT: calll _dcallee 11504; DARWIN-32-PIC-NEXT: addl $12, %esp 11505; DARWIN-32-PIC-NEXT: retl 11506; 11507; DARWIN-64-STATIC-LABEL: dtailcaller: 11508; DARWIN-64-STATIC: ## %bb.0: ## %entry 11509; DARWIN-64-STATIC-NEXT: pushq %rax 11510; DARWIN-64-STATIC-NEXT: callq _dcallee 11511; DARWIN-64-STATIC-NEXT: popq %rax 11512; DARWIN-64-STATIC-NEXT: retq 11513; 11514; DARWIN-64-DYNAMIC-LABEL: dtailcaller: 11515; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11516; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11517; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11518; DARWIN-64-DYNAMIC-NEXT: popq %rax 11519; DARWIN-64-DYNAMIC-NEXT: retq 11520; 11521; DARWIN-64-PIC-LABEL: dtailcaller: 11522; DARWIN-64-PIC: ## %bb.0: ## %entry 11523; DARWIN-64-PIC-NEXT: pushq %rax 11524; DARWIN-64-PIC-NEXT: callq _dcallee 11525; DARWIN-64-PIC-NEXT: popq %rax 11526; DARWIN-64-PIC-NEXT: retq 11527 11528entry: 11529 call void @dcallee() nounwind 11530 ret void 11531} 11532 11533define void @ltailcaller() nounwind { 11534; LINUX-64-STATIC-LABEL: ltailcaller: 11535; LINUX-64-STATIC: # %bb.0: # %entry 11536; LINUX-64-STATIC-NEXT: pushq %rax 11537; LINUX-64-STATIC-NEXT: callq lcallee 11538; LINUX-64-STATIC-NEXT: popq %rax 11539; LINUX-64-STATIC-NEXT: retq 11540; 11541; LINUX-32-STATIC-LABEL: ltailcaller: 11542; LINUX-32-STATIC: # %bb.0: # %entry 11543; LINUX-32-STATIC-NEXT: subl $12, %esp 11544; LINUX-32-STATIC-NEXT: calll lcallee 11545; LINUX-32-STATIC-NEXT: addl $12, %esp 11546; LINUX-32-STATIC-NEXT: retl 11547; 11548; LINUX-32-PIC-LABEL: ltailcaller: 11549; LINUX-32-PIC: # %bb.0: # %entry 11550; LINUX-32-PIC-NEXT: pushl %ebx 11551; LINUX-32-PIC-NEXT: subl $8, %esp 11552; LINUX-32-PIC-NEXT: calll .L141$pb 11553; LINUX-32-PIC-NEXT: .L141$pb: 11554; LINUX-32-PIC-NEXT: popl %ebx 11555; LINUX-32-PIC-NEXT: .Ltmp141: 11556; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx 11557; LINUX-32-PIC-NEXT: calll lcallee@PLT 11558; LINUX-32-PIC-NEXT: addl $8, %esp 11559; LINUX-32-PIC-NEXT: popl %ebx 11560; LINUX-32-PIC-NEXT: retl 11561; 11562; LINUX-64-PIC-LABEL: ltailcaller: 11563; LINUX-64-PIC: # %bb.0: # %entry 11564; LINUX-64-PIC-NEXT: pushq %rax 11565; LINUX-64-PIC-NEXT: callq lcallee@PLT 11566; LINUX-64-PIC-NEXT: popq %rax 11567; LINUX-64-PIC-NEXT: retq 11568; 11569; DARWIN-32-STATIC-LABEL: ltailcaller: 11570; DARWIN-32-STATIC: ## %bb.0: ## %entry 11571; DARWIN-32-STATIC-NEXT: subl $12, %esp 11572; DARWIN-32-STATIC-NEXT: calll _lcallee 11573; DARWIN-32-STATIC-NEXT: addl $12, %esp 11574; DARWIN-32-STATIC-NEXT: retl 11575; 11576; DARWIN-32-DYNAMIC-LABEL: ltailcaller: 11577; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11578; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11579; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11580; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11581; DARWIN-32-DYNAMIC-NEXT: retl 11582; 11583; DARWIN-32-PIC-LABEL: ltailcaller: 11584; DARWIN-32-PIC: ## %bb.0: ## %entry 11585; DARWIN-32-PIC-NEXT: subl $12, %esp 11586; DARWIN-32-PIC-NEXT: calll _lcallee 11587; DARWIN-32-PIC-NEXT: addl $12, %esp 11588; DARWIN-32-PIC-NEXT: retl 11589; 11590; DARWIN-64-STATIC-LABEL: ltailcaller: 11591; DARWIN-64-STATIC: ## %bb.0: ## %entry 11592; DARWIN-64-STATIC-NEXT: pushq %rax 11593; DARWIN-64-STATIC-NEXT: callq _lcallee 11594; DARWIN-64-STATIC-NEXT: popq %rax 11595; DARWIN-64-STATIC-NEXT: retq 11596; 11597; DARWIN-64-DYNAMIC-LABEL: ltailcaller: 11598; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11599; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11600; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11601; DARWIN-64-DYNAMIC-NEXT: popq %rax 11602; DARWIN-64-DYNAMIC-NEXT: retq 11603; 11604; DARWIN-64-PIC-LABEL: ltailcaller: 11605; DARWIN-64-PIC: ## %bb.0: ## %entry 11606; DARWIN-64-PIC-NEXT: pushq %rax 11607; DARWIN-64-PIC-NEXT: callq _lcallee 11608; DARWIN-64-PIC-NEXT: popq %rax 11609; DARWIN-64-PIC-NEXT: retq 11610 11611entry: 11612 call void @lcallee() nounwind 11613 ret void 11614} 11615 11616define void @icaller() nounwind { 11617; LINUX-64-STATIC-LABEL: icaller: 11618; LINUX-64-STATIC: # %bb.0: # %entry 11619; LINUX-64-STATIC-NEXT: pushq %rax 11620; LINUX-64-STATIC-NEXT: callq *ifunc(%rip) 11621; LINUX-64-STATIC-NEXT: callq *ifunc(%rip) 11622; LINUX-64-STATIC-NEXT: popq %rax 11623; LINUX-64-STATIC-NEXT: retq 11624; 11625; LINUX-32-STATIC-LABEL: icaller: 11626; LINUX-32-STATIC: # %bb.0: # %entry 11627; LINUX-32-STATIC-NEXT: subl $12, %esp 11628; LINUX-32-STATIC-NEXT: calll *ifunc 11629; LINUX-32-STATIC-NEXT: calll *ifunc 11630; LINUX-32-STATIC-NEXT: addl $12, %esp 11631; LINUX-32-STATIC-NEXT: retl 11632; 11633; LINUX-32-PIC-LABEL: icaller: 11634; LINUX-32-PIC: # %bb.0: # %entry 11635; LINUX-32-PIC-NEXT: pushl %ebx 11636; LINUX-32-PIC-NEXT: pushl %esi 11637; LINUX-32-PIC-NEXT: pushl %eax 11638; LINUX-32-PIC-NEXT: calll .L142$pb 11639; LINUX-32-PIC-NEXT: .L142$pb: 11640; LINUX-32-PIC-NEXT: popl %ebx 11641; LINUX-32-PIC-NEXT: .Ltmp142: 11642; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx 11643; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi 11644; LINUX-32-PIC-NEXT: calll *(%esi) 11645; LINUX-32-PIC-NEXT: calll *(%esi) 11646; LINUX-32-PIC-NEXT: addl $4, %esp 11647; LINUX-32-PIC-NEXT: popl %esi 11648; LINUX-32-PIC-NEXT: popl %ebx 11649; LINUX-32-PIC-NEXT: retl 11650; 11651; LINUX-64-PIC-LABEL: icaller: 11652; LINUX-64-PIC: # %bb.0: # %entry 11653; LINUX-64-PIC-NEXT: pushq %rbx 11654; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11655; LINUX-64-PIC-NEXT: callq *(%rbx) 11656; LINUX-64-PIC-NEXT: callq *(%rbx) 11657; LINUX-64-PIC-NEXT: popq %rbx 11658; LINUX-64-PIC-NEXT: retq 11659; 11660; DARWIN-32-STATIC-LABEL: icaller: 11661; DARWIN-32-STATIC: ## %bb.0: ## %entry 11662; DARWIN-32-STATIC-NEXT: subl $12, %esp 11663; DARWIN-32-STATIC-NEXT: calll *_ifunc 11664; DARWIN-32-STATIC-NEXT: calll *_ifunc 11665; DARWIN-32-STATIC-NEXT: addl $12, %esp 11666; DARWIN-32-STATIC-NEXT: retl 11667; 11668; DARWIN-32-DYNAMIC-LABEL: icaller: 11669; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11670; DARWIN-32-DYNAMIC-NEXT: pushl %esi 11671; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp 11672; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi 11673; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11674; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11675; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp 11676; DARWIN-32-DYNAMIC-NEXT: popl %esi 11677; DARWIN-32-DYNAMIC-NEXT: retl 11678; 11679; DARWIN-32-PIC-LABEL: icaller: 11680; DARWIN-32-PIC: ## %bb.0: ## %entry 11681; DARWIN-32-PIC-NEXT: pushl %esi 11682; DARWIN-32-PIC-NEXT: subl $8, %esp 11683; DARWIN-32-PIC-NEXT: calll L142$pb 11684; DARWIN-32-PIC-NEXT: L142$pb: 11685; DARWIN-32-PIC-NEXT: popl %eax 11686; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi 11687; DARWIN-32-PIC-NEXT: calll *(%esi) 11688; DARWIN-32-PIC-NEXT: calll *(%esi) 11689; DARWIN-32-PIC-NEXT: addl $8, %esp 11690; DARWIN-32-PIC-NEXT: popl %esi 11691; DARWIN-32-PIC-NEXT: retl 11692; 11693; DARWIN-64-STATIC-LABEL: icaller: 11694; DARWIN-64-STATIC: ## %bb.0: ## %entry 11695; DARWIN-64-STATIC-NEXT: pushq %rbx 11696; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11697; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11698; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11699; DARWIN-64-STATIC-NEXT: popq %rbx 11700; DARWIN-64-STATIC-NEXT: retq 11701; 11702; DARWIN-64-DYNAMIC-LABEL: icaller: 11703; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11704; DARWIN-64-DYNAMIC-NEXT: pushq %rbx 11705; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11706; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11707; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11708; DARWIN-64-DYNAMIC-NEXT: popq %rbx 11709; DARWIN-64-DYNAMIC-NEXT: retq 11710; 11711; DARWIN-64-PIC-LABEL: icaller: 11712; DARWIN-64-PIC: ## %bb.0: ## %entry 11713; DARWIN-64-PIC-NEXT: pushq %rbx 11714; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11715; DARWIN-64-PIC-NEXT: callq *(%rbx) 11716; DARWIN-64-PIC-NEXT: callq *(%rbx) 11717; DARWIN-64-PIC-NEXT: popq %rbx 11718; DARWIN-64-PIC-NEXT: retq 11719 11720entry: 11721 %0 = load void ()*, void ()** @ifunc, align 8 11722 call void %0() nounwind 11723 %1 = load void ()*, void ()** @ifunc, align 8 11724 call void %1() nounwind 11725 ret void 11726} 11727 11728define void @dicaller() nounwind { 11729; LINUX-64-STATIC-LABEL: dicaller: 11730; LINUX-64-STATIC: # %bb.0: # %entry 11731; LINUX-64-STATIC-NEXT: pushq %rax 11732; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 11733; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 11734; LINUX-64-STATIC-NEXT: popq %rax 11735; LINUX-64-STATIC-NEXT: retq 11736; 11737; LINUX-32-STATIC-LABEL: dicaller: 11738; LINUX-32-STATIC: # %bb.0: # %entry 11739; LINUX-32-STATIC-NEXT: subl $12, %esp 11740; LINUX-32-STATIC-NEXT: calll *difunc 11741; LINUX-32-STATIC-NEXT: calll *difunc 11742; LINUX-32-STATIC-NEXT: addl $12, %esp 11743; LINUX-32-STATIC-NEXT: retl 11744; 11745; LINUX-32-PIC-LABEL: dicaller: 11746; LINUX-32-PIC: # %bb.0: # %entry 11747; LINUX-32-PIC-NEXT: pushl %ebx 11748; LINUX-32-PIC-NEXT: pushl %esi 11749; LINUX-32-PIC-NEXT: pushl %eax 11750; LINUX-32-PIC-NEXT: calll .L143$pb 11751; LINUX-32-PIC-NEXT: .L143$pb: 11752; LINUX-32-PIC-NEXT: popl %ebx 11753; LINUX-32-PIC-NEXT: .Ltmp143: 11754; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx 11755; LINUX-32-PIC-NEXT: movl difunc@GOT(%ebx), %esi 11756; LINUX-32-PIC-NEXT: calll *(%esi) 11757; LINUX-32-PIC-NEXT: calll *(%esi) 11758; LINUX-32-PIC-NEXT: addl $4, %esp 11759; LINUX-32-PIC-NEXT: popl %esi 11760; LINUX-32-PIC-NEXT: popl %ebx 11761; LINUX-32-PIC-NEXT: retl 11762; 11763; LINUX-64-PIC-LABEL: dicaller: 11764; LINUX-64-PIC: # %bb.0: # %entry 11765; LINUX-64-PIC-NEXT: pushq %rbx 11766; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rbx 11767; LINUX-64-PIC-NEXT: callq *(%rbx) 11768; LINUX-64-PIC-NEXT: callq *(%rbx) 11769; LINUX-64-PIC-NEXT: popq %rbx 11770; LINUX-64-PIC-NEXT: retq 11771; 11772; DARWIN-32-STATIC-LABEL: dicaller: 11773; DARWIN-32-STATIC: ## %bb.0: ## %entry 11774; DARWIN-32-STATIC-NEXT: subl $12, %esp 11775; DARWIN-32-STATIC-NEXT: calll *_difunc 11776; DARWIN-32-STATIC-NEXT: calll *_difunc 11777; DARWIN-32-STATIC-NEXT: addl $12, %esp 11778; DARWIN-32-STATIC-NEXT: retl 11779; 11780; DARWIN-32-DYNAMIC-LABEL: dicaller: 11781; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11782; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11783; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 11784; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 11785; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11786; DARWIN-32-DYNAMIC-NEXT: retl 11787; 11788; DARWIN-32-PIC-LABEL: dicaller: 11789; DARWIN-32-PIC: ## %bb.0: ## %entry 11790; DARWIN-32-PIC-NEXT: pushl %esi 11791; DARWIN-32-PIC-NEXT: subl $8, %esp 11792; DARWIN-32-PIC-NEXT: calll L143$pb 11793; DARWIN-32-PIC-NEXT: L143$pb: 11794; DARWIN-32-PIC-NEXT: popl %esi 11795; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi) 11796; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi) 11797; DARWIN-32-PIC-NEXT: addl $8, %esp 11798; DARWIN-32-PIC-NEXT: popl %esi 11799; DARWIN-32-PIC-NEXT: retl 11800; 11801; DARWIN-64-STATIC-LABEL: dicaller: 11802; DARWIN-64-STATIC: ## %bb.0: ## %entry 11803; DARWIN-64-STATIC-NEXT: pushq %rax 11804; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 11805; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 11806; DARWIN-64-STATIC-NEXT: popq %rax 11807; DARWIN-64-STATIC-NEXT: retq 11808; 11809; DARWIN-64-DYNAMIC-LABEL: dicaller: 11810; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11811; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11812; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 11813; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 11814; DARWIN-64-DYNAMIC-NEXT: popq %rax 11815; DARWIN-64-DYNAMIC-NEXT: retq 11816; 11817; DARWIN-64-PIC-LABEL: dicaller: 11818; DARWIN-64-PIC: ## %bb.0: ## %entry 11819; DARWIN-64-PIC-NEXT: pushq %rax 11820; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 11821; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 11822; DARWIN-64-PIC-NEXT: popq %rax 11823; DARWIN-64-PIC-NEXT: retq 11824 11825entry: 11826 %0 = load void ()*, void ()** @difunc, align 8 11827 call void %0() nounwind 11828 %1 = load void ()*, void ()** @difunc, align 8 11829 call void %1() nounwind 11830 ret void 11831} 11832 11833define void @licaller() nounwind { 11834; LINUX-64-STATIC-LABEL: licaller: 11835; LINUX-64-STATIC: # %bb.0: # %entry 11836; LINUX-64-STATIC-NEXT: pushq %rax 11837; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 11838; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 11839; LINUX-64-STATIC-NEXT: popq %rax 11840; LINUX-64-STATIC-NEXT: retq 11841; 11842; LINUX-32-STATIC-LABEL: licaller: 11843; LINUX-32-STATIC: # %bb.0: # %entry 11844; LINUX-32-STATIC-NEXT: subl $12, %esp 11845; LINUX-32-STATIC-NEXT: calll *lifunc 11846; LINUX-32-STATIC-NEXT: calll *lifunc 11847; LINUX-32-STATIC-NEXT: addl $12, %esp 11848; LINUX-32-STATIC-NEXT: retl 11849; 11850; LINUX-32-PIC-LABEL: licaller: 11851; LINUX-32-PIC: # %bb.0: # %entry 11852; LINUX-32-PIC-NEXT: pushl %ebx 11853; LINUX-32-PIC-NEXT: subl $8, %esp 11854; LINUX-32-PIC-NEXT: calll .L144$pb 11855; LINUX-32-PIC-NEXT: .L144$pb: 11856; LINUX-32-PIC-NEXT: popl %ebx 11857; LINUX-32-PIC-NEXT: .Ltmp144: 11858; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx 11859; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 11860; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 11861; LINUX-32-PIC-NEXT: addl $8, %esp 11862; LINUX-32-PIC-NEXT: popl %ebx 11863; LINUX-32-PIC-NEXT: retl 11864; 11865; LINUX-64-PIC-LABEL: licaller: 11866; LINUX-64-PIC: # %bb.0: # %entry 11867; LINUX-64-PIC-NEXT: pushq %rax 11868; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 11869; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 11870; LINUX-64-PIC-NEXT: popq %rax 11871; LINUX-64-PIC-NEXT: retq 11872; 11873; DARWIN-32-STATIC-LABEL: licaller: 11874; DARWIN-32-STATIC: ## %bb.0: ## %entry 11875; DARWIN-32-STATIC-NEXT: subl $12, %esp 11876; DARWIN-32-STATIC-NEXT: calll *_lifunc 11877; DARWIN-32-STATIC-NEXT: calll *_lifunc 11878; DARWIN-32-STATIC-NEXT: addl $12, %esp 11879; DARWIN-32-STATIC-NEXT: retl 11880; 11881; DARWIN-32-DYNAMIC-LABEL: licaller: 11882; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11883; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11884; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 11885; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 11886; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11887; DARWIN-32-DYNAMIC-NEXT: retl 11888; 11889; DARWIN-32-PIC-LABEL: licaller: 11890; DARWIN-32-PIC: ## %bb.0: ## %entry 11891; DARWIN-32-PIC-NEXT: pushl %esi 11892; DARWIN-32-PIC-NEXT: subl $8, %esp 11893; DARWIN-32-PIC-NEXT: calll L144$pb 11894; DARWIN-32-PIC-NEXT: L144$pb: 11895; DARWIN-32-PIC-NEXT: popl %esi 11896; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi) 11897; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi) 11898; DARWIN-32-PIC-NEXT: addl $8, %esp 11899; DARWIN-32-PIC-NEXT: popl %esi 11900; DARWIN-32-PIC-NEXT: retl 11901; 11902; DARWIN-64-STATIC-LABEL: licaller: 11903; DARWIN-64-STATIC: ## %bb.0: ## %entry 11904; DARWIN-64-STATIC-NEXT: pushq %rax 11905; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 11906; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 11907; DARWIN-64-STATIC-NEXT: popq %rax 11908; DARWIN-64-STATIC-NEXT: retq 11909; 11910; DARWIN-64-DYNAMIC-LABEL: licaller: 11911; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11912; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11913; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 11914; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 11915; DARWIN-64-DYNAMIC-NEXT: popq %rax 11916; DARWIN-64-DYNAMIC-NEXT: retq 11917; 11918; DARWIN-64-PIC-LABEL: licaller: 11919; DARWIN-64-PIC: ## %bb.0: ## %entry 11920; DARWIN-64-PIC-NEXT: pushq %rax 11921; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 11922; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 11923; DARWIN-64-PIC-NEXT: popq %rax 11924; DARWIN-64-PIC-NEXT: retq 11925 11926entry: 11927 %0 = load void ()*, void ()** @lifunc, align 8 11928 call void %0() nounwind 11929 %1 = load void ()*, void ()** @lifunc, align 8 11930 call void %1() nounwind 11931 ret void 11932} 11933 11934define void @itailcaller() nounwind { 11935; LINUX-64-STATIC-LABEL: itailcaller: 11936; LINUX-64-STATIC: # %bb.0: # %entry 11937; LINUX-64-STATIC-NEXT: pushq %rax 11938; LINUX-64-STATIC-NEXT: callq *ifunc(%rip) 11939; LINUX-64-STATIC-NEXT: callq *ifunc(%rip) 11940; LINUX-64-STATIC-NEXT: popq %rax 11941; LINUX-64-STATIC-NEXT: retq 11942; 11943; LINUX-32-STATIC-LABEL: itailcaller: 11944; LINUX-32-STATIC: # %bb.0: # %entry 11945; LINUX-32-STATIC-NEXT: subl $12, %esp 11946; LINUX-32-STATIC-NEXT: calll *ifunc 11947; LINUX-32-STATIC-NEXT: calll *ifunc 11948; LINUX-32-STATIC-NEXT: addl $12, %esp 11949; LINUX-32-STATIC-NEXT: retl 11950; 11951; LINUX-32-PIC-LABEL: itailcaller: 11952; LINUX-32-PIC: # %bb.0: # %entry 11953; LINUX-32-PIC-NEXT: pushl %ebx 11954; LINUX-32-PIC-NEXT: pushl %esi 11955; LINUX-32-PIC-NEXT: pushl %eax 11956; LINUX-32-PIC-NEXT: calll .L145$pb 11957; LINUX-32-PIC-NEXT: .L145$pb: 11958; LINUX-32-PIC-NEXT: popl %ebx 11959; LINUX-32-PIC-NEXT: .Ltmp145: 11960; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx 11961; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi 11962; LINUX-32-PIC-NEXT: calll *(%esi) 11963; LINUX-32-PIC-NEXT: calll *(%esi) 11964; LINUX-32-PIC-NEXT: addl $4, %esp 11965; LINUX-32-PIC-NEXT: popl %esi 11966; LINUX-32-PIC-NEXT: popl %ebx 11967; LINUX-32-PIC-NEXT: retl 11968; 11969; LINUX-64-PIC-LABEL: itailcaller: 11970; LINUX-64-PIC: # %bb.0: # %entry 11971; LINUX-64-PIC-NEXT: pushq %rbx 11972; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11973; LINUX-64-PIC-NEXT: callq *(%rbx) 11974; LINUX-64-PIC-NEXT: callq *(%rbx) 11975; LINUX-64-PIC-NEXT: popq %rbx 11976; LINUX-64-PIC-NEXT: retq 11977; 11978; DARWIN-32-STATIC-LABEL: itailcaller: 11979; DARWIN-32-STATIC: ## %bb.0: ## %entry 11980; DARWIN-32-STATIC-NEXT: subl $12, %esp 11981; DARWIN-32-STATIC-NEXT: calll *_ifunc 11982; DARWIN-32-STATIC-NEXT: calll *_ifunc 11983; DARWIN-32-STATIC-NEXT: addl $12, %esp 11984; DARWIN-32-STATIC-NEXT: retl 11985; 11986; DARWIN-32-DYNAMIC-LABEL: itailcaller: 11987; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11988; DARWIN-32-DYNAMIC-NEXT: pushl %esi 11989; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp 11990; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi 11991; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11992; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11993; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp 11994; DARWIN-32-DYNAMIC-NEXT: popl %esi 11995; DARWIN-32-DYNAMIC-NEXT: retl 11996; 11997; DARWIN-32-PIC-LABEL: itailcaller: 11998; DARWIN-32-PIC: ## %bb.0: ## %entry 11999; DARWIN-32-PIC-NEXT: pushl %esi 12000; DARWIN-32-PIC-NEXT: subl $8, %esp 12001; DARWIN-32-PIC-NEXT: calll L145$pb 12002; DARWIN-32-PIC-NEXT: L145$pb: 12003; DARWIN-32-PIC-NEXT: popl %eax 12004; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi 12005; DARWIN-32-PIC-NEXT: calll *(%esi) 12006; DARWIN-32-PIC-NEXT: calll *(%esi) 12007; DARWIN-32-PIC-NEXT: addl $8, %esp 12008; DARWIN-32-PIC-NEXT: popl %esi 12009; DARWIN-32-PIC-NEXT: retl 12010; 12011; DARWIN-64-STATIC-LABEL: itailcaller: 12012; DARWIN-64-STATIC: ## %bb.0: ## %entry 12013; DARWIN-64-STATIC-NEXT: pushq %rbx 12014; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12015; DARWIN-64-STATIC-NEXT: callq *(%rbx) 12016; DARWIN-64-STATIC-NEXT: callq *(%rbx) 12017; DARWIN-64-STATIC-NEXT: popq %rbx 12018; DARWIN-64-STATIC-NEXT: retq 12019; 12020; DARWIN-64-DYNAMIC-LABEL: itailcaller: 12021; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12022; DARWIN-64-DYNAMIC-NEXT: pushq %rbx 12023; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12024; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 12025; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 12026; DARWIN-64-DYNAMIC-NEXT: popq %rbx 12027; DARWIN-64-DYNAMIC-NEXT: retq 12028; 12029; DARWIN-64-PIC-LABEL: itailcaller: 12030; DARWIN-64-PIC: ## %bb.0: ## %entry 12031; DARWIN-64-PIC-NEXT: pushq %rbx 12032; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12033; DARWIN-64-PIC-NEXT: callq *(%rbx) 12034; DARWIN-64-PIC-NEXT: callq *(%rbx) 12035; DARWIN-64-PIC-NEXT: popq %rbx 12036; DARWIN-64-PIC-NEXT: retq 12037 12038entry: 12039 %0 = load void ()*, void ()** @ifunc, align 8 12040 call void %0() nounwind 12041 %1 = load void ()*, void ()** @ifunc, align 8 12042 call void %1() nounwind 12043 ret void 12044} 12045 12046define void @ditailcaller() nounwind { 12047; LINUX-64-STATIC-LABEL: ditailcaller: 12048; LINUX-64-STATIC: # %bb.0: # %entry 12049; LINUX-64-STATIC-NEXT: pushq %rax 12050; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 12051; LINUX-64-STATIC-NEXT: popq %rax 12052; LINUX-64-STATIC-NEXT: retq 12053; 12054; LINUX-32-STATIC-LABEL: ditailcaller: 12055; LINUX-32-STATIC: # %bb.0: # %entry 12056; LINUX-32-STATIC-NEXT: subl $12, %esp 12057; LINUX-32-STATIC-NEXT: calll *difunc 12058; LINUX-32-STATIC-NEXT: addl $12, %esp 12059; LINUX-32-STATIC-NEXT: retl 12060; 12061; LINUX-32-PIC-LABEL: ditailcaller: 12062; LINUX-32-PIC: # %bb.0: # %entry 12063; LINUX-32-PIC-NEXT: pushl %ebx 12064; LINUX-32-PIC-NEXT: subl $8, %esp 12065; LINUX-32-PIC-NEXT: calll .L146$pb 12066; LINUX-32-PIC-NEXT: .L146$pb: 12067; LINUX-32-PIC-NEXT: popl %ebx 12068; LINUX-32-PIC-NEXT: .Ltmp146: 12069; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx 12070; LINUX-32-PIC-NEXT: movl difunc@GOT(%ebx), %eax 12071; LINUX-32-PIC-NEXT: calll *(%eax) 12072; LINUX-32-PIC-NEXT: addl $8, %esp 12073; LINUX-32-PIC-NEXT: popl %ebx 12074; LINUX-32-PIC-NEXT: retl 12075; 12076; LINUX-64-PIC-LABEL: ditailcaller: 12077; LINUX-64-PIC: # %bb.0: # %entry 12078; LINUX-64-PIC-NEXT: pushq %rax 12079; LINUX-64-PIC-NEXT: movq difunc@GOTPCREL(%rip), %rax 12080; LINUX-64-PIC-NEXT: callq *(%rax) 12081; LINUX-64-PIC-NEXT: popq %rax 12082; LINUX-64-PIC-NEXT: retq 12083; 12084; DARWIN-32-STATIC-LABEL: ditailcaller: 12085; DARWIN-32-STATIC: ## %bb.0: ## %entry 12086; DARWIN-32-STATIC-NEXT: subl $12, %esp 12087; DARWIN-32-STATIC-NEXT: calll *_difunc 12088; DARWIN-32-STATIC-NEXT: addl $12, %esp 12089; DARWIN-32-STATIC-NEXT: retl 12090; 12091; DARWIN-32-DYNAMIC-LABEL: ditailcaller: 12092; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 12093; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 12094; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 12095; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 12096; DARWIN-32-DYNAMIC-NEXT: retl 12097; 12098; DARWIN-32-PIC-LABEL: ditailcaller: 12099; DARWIN-32-PIC: ## %bb.0: ## %entry 12100; DARWIN-32-PIC-NEXT: subl $12, %esp 12101; DARWIN-32-PIC-NEXT: calll L146$pb 12102; DARWIN-32-PIC-NEXT: L146$pb: 12103; DARWIN-32-PIC-NEXT: popl %eax 12104; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb(%eax) 12105; DARWIN-32-PIC-NEXT: addl $12, %esp 12106; DARWIN-32-PIC-NEXT: retl 12107; 12108; DARWIN-64-STATIC-LABEL: ditailcaller: 12109; DARWIN-64-STATIC: ## %bb.0: ## %entry 12110; DARWIN-64-STATIC-NEXT: pushq %rax 12111; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 12112; DARWIN-64-STATIC-NEXT: popq %rax 12113; DARWIN-64-STATIC-NEXT: retq 12114; 12115; DARWIN-64-DYNAMIC-LABEL: ditailcaller: 12116; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12117; DARWIN-64-DYNAMIC-NEXT: pushq %rax 12118; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 12119; DARWIN-64-DYNAMIC-NEXT: popq %rax 12120; DARWIN-64-DYNAMIC-NEXT: retq 12121; 12122; DARWIN-64-PIC-LABEL: ditailcaller: 12123; DARWIN-64-PIC: ## %bb.0: ## %entry 12124; DARWIN-64-PIC-NEXT: pushq %rax 12125; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 12126; DARWIN-64-PIC-NEXT: popq %rax 12127; DARWIN-64-PIC-NEXT: retq 12128 12129entry: 12130 %0 = load void ()*, void ()** @difunc, align 8 12131 call void %0() nounwind 12132 ret void 12133} 12134 12135define void @litailcaller() nounwind { 12136; LINUX-64-STATIC-LABEL: litailcaller: 12137; LINUX-64-STATIC: # %bb.0: # %entry 12138; LINUX-64-STATIC-NEXT: pushq %rax 12139; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 12140; LINUX-64-STATIC-NEXT: popq %rax 12141; LINUX-64-STATIC-NEXT: retq 12142; 12143; LINUX-32-STATIC-LABEL: litailcaller: 12144; LINUX-32-STATIC: # %bb.0: # %entry 12145; LINUX-32-STATIC-NEXT: subl $12, %esp 12146; LINUX-32-STATIC-NEXT: calll *lifunc 12147; LINUX-32-STATIC-NEXT: addl $12, %esp 12148; LINUX-32-STATIC-NEXT: retl 12149; 12150; LINUX-32-PIC-LABEL: litailcaller: 12151; LINUX-32-PIC: # %bb.0: # %entry 12152; LINUX-32-PIC-NEXT: pushl %ebx 12153; LINUX-32-PIC-NEXT: subl $8, %esp 12154; LINUX-32-PIC-NEXT: calll .L147$pb 12155; LINUX-32-PIC-NEXT: .L147$pb: 12156; LINUX-32-PIC-NEXT: popl %ebx 12157; LINUX-32-PIC-NEXT: .Ltmp147: 12158; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx 12159; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 12160; LINUX-32-PIC-NEXT: addl $8, %esp 12161; LINUX-32-PIC-NEXT: popl %ebx 12162; LINUX-32-PIC-NEXT: retl 12163; 12164; LINUX-64-PIC-LABEL: litailcaller: 12165; LINUX-64-PIC: # %bb.0: # %entry 12166; LINUX-64-PIC-NEXT: pushq %rax 12167; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 12168; LINUX-64-PIC-NEXT: popq %rax 12169; LINUX-64-PIC-NEXT: retq 12170; 12171; DARWIN-32-STATIC-LABEL: litailcaller: 12172; DARWIN-32-STATIC: ## %bb.0: ## %entry 12173; DARWIN-32-STATIC-NEXT: subl $12, %esp 12174; DARWIN-32-STATIC-NEXT: calll *_lifunc 12175; DARWIN-32-STATIC-NEXT: addl $12, %esp 12176; DARWIN-32-STATIC-NEXT: retl 12177; 12178; DARWIN-32-DYNAMIC-LABEL: litailcaller: 12179; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 12180; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 12181; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 12182; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 12183; DARWIN-32-DYNAMIC-NEXT: retl 12184; 12185; DARWIN-32-PIC-LABEL: litailcaller: 12186; DARWIN-32-PIC: ## %bb.0: ## %entry 12187; DARWIN-32-PIC-NEXT: subl $12, %esp 12188; DARWIN-32-PIC-NEXT: calll L147$pb 12189; DARWIN-32-PIC-NEXT: L147$pb: 12190; DARWIN-32-PIC-NEXT: popl %eax 12191; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb(%eax) 12192; DARWIN-32-PIC-NEXT: addl $12, %esp 12193; DARWIN-32-PIC-NEXT: retl 12194; 12195; DARWIN-64-STATIC-LABEL: litailcaller: 12196; DARWIN-64-STATIC: ## %bb.0: ## %entry 12197; DARWIN-64-STATIC-NEXT: pushq %rax 12198; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 12199; DARWIN-64-STATIC-NEXT: popq %rax 12200; DARWIN-64-STATIC-NEXT: retq 12201; 12202; DARWIN-64-DYNAMIC-LABEL: litailcaller: 12203; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12204; DARWIN-64-DYNAMIC-NEXT: pushq %rax 12205; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 12206; DARWIN-64-DYNAMIC-NEXT: popq %rax 12207; DARWIN-64-DYNAMIC-NEXT: retq 12208; 12209; DARWIN-64-PIC-LABEL: litailcaller: 12210; DARWIN-64-PIC: ## %bb.0: ## %entry 12211; DARWIN-64-PIC-NEXT: pushq %rax 12212; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 12213; DARWIN-64-PIC-NEXT: popq %rax 12214; DARWIN-64-PIC-NEXT: retq 12215 12216entry: 12217 %0 = load void ()*, void ()** @lifunc, align 8 12218 call void %0() nounwind 12219 ret void 12220} 12221