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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 ptr 22@dsrc = dso_local global [131072 x i32] zeroinitializer, align 32 23@ddst = dso_local global [131072 x i32] zeroinitializer, align 32 24@dptr = dso_local global ptr null 25@lsrc = internal global [131072 x i32] zeroinitializer 26@ldst = internal global [131072 x i32] zeroinitializer 27@lptr = internal global ptr null 28@ifunc = external global ptr 29@difunc = dso_local global ptr null 30@lifunc = internal global ptr null 31@lxsrc = internal global [32 x i32] zeroinitializer, align 32 32@lxdst = internal global [32 x i32] zeroinitializer, align 32 33@dxsrc = dso_local global [32 x i32] zeroinitializer, align 32 34@dxdst = dso_local global [32 x i32] zeroinitializer, align 32 35 36define dso_local void @foo00() nounwind { 37; LINUX-64-STATIC-LABEL: foo00: 38; LINUX-64-STATIC: # %bb.0: # %entry 39; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 40; LINUX-64-STATIC-NEXT: movl (%rax), %eax 41; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 42; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 43; LINUX-64-STATIC-NEXT: retq 44; 45; LINUX-32-STATIC-LABEL: foo00: 46; LINUX-32-STATIC: # %bb.0: # %entry 47; LINUX-32-STATIC-NEXT: movl src, %eax 48; LINUX-32-STATIC-NEXT: movl %eax, dst 49; LINUX-32-STATIC-NEXT: retl 50; 51; LINUX-32-PIC-LABEL: foo00: 52; LINUX-32-PIC: # %bb.0: # %entry 53; LINUX-32-PIC-NEXT: calll .L0$pb 54; LINUX-32-PIC-NEXT: .L0$pb: 55; LINUX-32-PIC-NEXT: popl %eax 56; LINUX-32-PIC-NEXT: .Ltmp0: 57; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp0-.L0$pb), %eax 58; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 59; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 60; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 61; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 62; LINUX-32-PIC-NEXT: retl 63; 64; LINUX-64-PIC-LABEL: foo00: 65; LINUX-64-PIC: # %bb.0: # %entry 66; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 67; LINUX-64-PIC-NEXT: movl (%rax), %eax 68; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 69; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 70; LINUX-64-PIC-NEXT: retq 71; 72; DARWIN-32-STATIC-LABEL: foo00: 73; DARWIN-32-STATIC: ## %bb.0: ## %entry 74; DARWIN-32-STATIC-NEXT: movl _src, %eax 75; DARWIN-32-STATIC-NEXT: movl %eax, _dst 76; DARWIN-32-STATIC-NEXT: retl 77; 78; DARWIN-32-DYNAMIC-LABEL: foo00: 79; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 80; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 81; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 82; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 83; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 84; DARWIN-32-DYNAMIC-NEXT: retl 85; 86; DARWIN-32-PIC-LABEL: foo00: 87; DARWIN-32-PIC: ## %bb.0: ## %entry 88; DARWIN-32-PIC-NEXT: calll L0$pb 89; DARWIN-32-PIC-NEXT: L0$pb: 90; DARWIN-32-PIC-NEXT: popl %eax 91; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L0$pb(%eax), %ecx 92; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 93; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L0$pb(%eax), %eax 94; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 95; DARWIN-32-PIC-NEXT: retl 96; 97; DARWIN-64-STATIC-LABEL: foo00: 98; DARWIN-64-STATIC: ## %bb.0: ## %entry 99; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 100; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 101; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 102; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 103; DARWIN-64-STATIC-NEXT: retq 104; 105; DARWIN-64-DYNAMIC-LABEL: foo00: 106; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 107; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 108; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 109; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 110; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 111; DARWIN-64-DYNAMIC-NEXT: retq 112; 113; DARWIN-64-PIC-LABEL: foo00: 114; DARWIN-64-PIC: ## %bb.0: ## %entry 115; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 116; DARWIN-64-PIC-NEXT: movl (%rax), %eax 117; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 118; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 119; DARWIN-64-PIC-NEXT: retq 120 121entry: 122 %0 = load i32, ptr @src, align 4 123 store i32 %0, ptr @dst, align 4 124 ret void 125 126} 127 128define dso_local void @fxo00() nounwind { 129; LINUX-64-STATIC-LABEL: fxo00: 130; LINUX-64-STATIC: # %bb.0: # %entry 131; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 132; LINUX-64-STATIC-NEXT: movl (%rax), %eax 133; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 134; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 135; LINUX-64-STATIC-NEXT: retq 136; 137; LINUX-32-STATIC-LABEL: fxo00: 138; LINUX-32-STATIC: # %bb.0: # %entry 139; LINUX-32-STATIC-NEXT: movl xsrc, %eax 140; LINUX-32-STATIC-NEXT: movl %eax, xdst 141; LINUX-32-STATIC-NEXT: retl 142; 143; LINUX-32-PIC-LABEL: fxo00: 144; LINUX-32-PIC: # %bb.0: # %entry 145; LINUX-32-PIC-NEXT: calll .L1$pb 146; LINUX-32-PIC-NEXT: .L1$pb: 147; LINUX-32-PIC-NEXT: popl %eax 148; LINUX-32-PIC-NEXT: .Ltmp1: 149; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp1-.L1$pb), %eax 150; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 151; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 152; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 153; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 154; LINUX-32-PIC-NEXT: retl 155; 156; LINUX-64-PIC-LABEL: fxo00: 157; LINUX-64-PIC: # %bb.0: # %entry 158; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 159; LINUX-64-PIC-NEXT: movl (%rax), %eax 160; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 161; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 162; LINUX-64-PIC-NEXT: retq 163; 164; DARWIN-32-STATIC-LABEL: fxo00: 165; DARWIN-32-STATIC: ## %bb.0: ## %entry 166; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax 167; DARWIN-32-STATIC-NEXT: movl %eax, _xdst 168; DARWIN-32-STATIC-NEXT: retl 169; 170; DARWIN-32-DYNAMIC-LABEL: fxo00: 171; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 172; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 173; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 174; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 175; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 176; DARWIN-32-DYNAMIC-NEXT: retl 177; 178; DARWIN-32-PIC-LABEL: fxo00: 179; DARWIN-32-PIC: ## %bb.0: ## %entry 180; DARWIN-32-PIC-NEXT: calll L1$pb 181; DARWIN-32-PIC-NEXT: L1$pb: 182; DARWIN-32-PIC-NEXT: popl %eax 183; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L1$pb(%eax), %ecx 184; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 185; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L1$pb(%eax), %eax 186; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 187; DARWIN-32-PIC-NEXT: retl 188; 189; DARWIN-64-STATIC-LABEL: fxo00: 190; DARWIN-64-STATIC: ## %bb.0: ## %entry 191; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 192; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 193; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 194; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 195; DARWIN-64-STATIC-NEXT: retq 196; 197; DARWIN-64-DYNAMIC-LABEL: fxo00: 198; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 199; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 200; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 201; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 202; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 203; DARWIN-64-DYNAMIC-NEXT: retq 204; 205; DARWIN-64-PIC-LABEL: fxo00: 206; DARWIN-64-PIC: ## %bb.0: ## %entry 207; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 208; DARWIN-64-PIC-NEXT: movl (%rax), %eax 209; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 210; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 211; DARWIN-64-PIC-NEXT: retq 212 213entry: 214 %0 = load i32, ptr @xsrc, align 4 215 store i32 %0, ptr @xdst, align 4 216 ret void 217 218} 219 220define dso_local void @foo01() nounwind { 221; LINUX-64-STATIC-LABEL: foo01: 222; LINUX-64-STATIC: # %bb.0: # %entry 223; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 224; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 225; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 226; LINUX-64-STATIC-NEXT: retq 227; 228; LINUX-32-STATIC-LABEL: foo01: 229; LINUX-32-STATIC: # %bb.0: # %entry 230; LINUX-32-STATIC-NEXT: movl $dst, ptr 231; LINUX-32-STATIC-NEXT: retl 232; 233; LINUX-32-PIC-LABEL: foo01: 234; LINUX-32-PIC: # %bb.0: # %entry 235; LINUX-32-PIC-NEXT: calll .L2$pb 236; LINUX-32-PIC-NEXT: .L2$pb: 237; LINUX-32-PIC-NEXT: popl %eax 238; LINUX-32-PIC-NEXT: .Ltmp2: 239; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp2-.L2$pb), %eax 240; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx 241; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 242; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 243; LINUX-32-PIC-NEXT: retl 244; 245; LINUX-64-PIC-LABEL: foo01: 246; LINUX-64-PIC: # %bb.0: # %entry 247; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 248; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 249; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 250; LINUX-64-PIC-NEXT: retq 251; 252; DARWIN-32-STATIC-LABEL: foo01: 253; DARWIN-32-STATIC: ## %bb.0: ## %entry 254; DARWIN-32-STATIC-NEXT: movl $_dst, _ptr 255; DARWIN-32-STATIC-NEXT: retl 256; 257; DARWIN-32-DYNAMIC-LABEL: foo01: 258; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 259; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 260; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 261; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 262; DARWIN-32-DYNAMIC-NEXT: retl 263; 264; DARWIN-32-PIC-LABEL: foo01: 265; DARWIN-32-PIC: ## %bb.0: ## %entry 266; DARWIN-32-PIC-NEXT: calll L2$pb 267; DARWIN-32-PIC-NEXT: L2$pb: 268; DARWIN-32-PIC-NEXT: popl %eax 269; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L2$pb(%eax), %ecx 270; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L2$pb(%eax), %eax 271; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 272; DARWIN-32-PIC-NEXT: retl 273; 274; DARWIN-64-STATIC-LABEL: foo01: 275; DARWIN-64-STATIC: ## %bb.0: ## %entry 276; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 277; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 278; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 279; DARWIN-64-STATIC-NEXT: retq 280; 281; DARWIN-64-DYNAMIC-LABEL: foo01: 282; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 283; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 284; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 285; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 286; DARWIN-64-DYNAMIC-NEXT: retq 287; 288; DARWIN-64-PIC-LABEL: foo01: 289; DARWIN-64-PIC: ## %bb.0: ## %entry 290; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 291; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 292; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 293; DARWIN-64-PIC-NEXT: retq 294 295entry: 296 store ptr @dst, ptr @ptr, align 8 297 ret void 298} 299 300define dso_local void @fxo01() nounwind { 301; LINUX-64-STATIC-LABEL: fxo01: 302; LINUX-64-STATIC: # %bb.0: # %entry 303; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 304; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 305; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 306; LINUX-64-STATIC-NEXT: retq 307; 308; LINUX-32-STATIC-LABEL: fxo01: 309; LINUX-32-STATIC: # %bb.0: # %entry 310; LINUX-32-STATIC-NEXT: movl $xdst, ptr 311; LINUX-32-STATIC-NEXT: retl 312; 313; LINUX-32-PIC-LABEL: fxo01: 314; LINUX-32-PIC: # %bb.0: # %entry 315; LINUX-32-PIC-NEXT: calll .L3$pb 316; LINUX-32-PIC-NEXT: .L3$pb: 317; LINUX-32-PIC-NEXT: popl %eax 318; LINUX-32-PIC-NEXT: .Ltmp3: 319; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp3-.L3$pb), %eax 320; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx 321; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 322; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 323; LINUX-32-PIC-NEXT: retl 324; 325; LINUX-64-PIC-LABEL: fxo01: 326; LINUX-64-PIC: # %bb.0: # %entry 327; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 328; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 329; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 330; LINUX-64-PIC-NEXT: retq 331; 332; DARWIN-32-STATIC-LABEL: fxo01: 333; DARWIN-32-STATIC: ## %bb.0: ## %entry 334; DARWIN-32-STATIC-NEXT: movl $_xdst, _ptr 335; DARWIN-32-STATIC-NEXT: retl 336; 337; DARWIN-32-DYNAMIC-LABEL: fxo01: 338; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 339; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 340; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 341; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 342; DARWIN-32-DYNAMIC-NEXT: retl 343; 344; DARWIN-32-PIC-LABEL: fxo01: 345; DARWIN-32-PIC: ## %bb.0: ## %entry 346; DARWIN-32-PIC-NEXT: calll L3$pb 347; DARWIN-32-PIC-NEXT: L3$pb: 348; DARWIN-32-PIC-NEXT: popl %eax 349; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L3$pb(%eax), %ecx 350; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L3$pb(%eax), %eax 351; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 352; DARWIN-32-PIC-NEXT: retl 353; 354; DARWIN-64-STATIC-LABEL: fxo01: 355; DARWIN-64-STATIC: ## %bb.0: ## %entry 356; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 357; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 358; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 359; DARWIN-64-STATIC-NEXT: retq 360; 361; DARWIN-64-DYNAMIC-LABEL: fxo01: 362; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 363; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 364; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 365; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 366; DARWIN-64-DYNAMIC-NEXT: retq 367; 368; DARWIN-64-PIC-LABEL: fxo01: 369; DARWIN-64-PIC: ## %bb.0: ## %entry 370; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 371; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 372; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 373; DARWIN-64-PIC-NEXT: retq 374 375entry: 376 store ptr @xdst, ptr @ptr, align 8 377 ret void 378} 379 380define dso_local void @foo02() nounwind { 381; LINUX-64-STATIC-LABEL: foo02: 382; LINUX-64-STATIC: # %bb.0: # %entry 383; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 384; LINUX-64-STATIC-NEXT: movl (%rax), %eax 385; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 386; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 387; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 388; LINUX-64-STATIC-NEXT: retq 389; 390; LINUX-32-STATIC-LABEL: foo02: 391; LINUX-32-STATIC: # %bb.0: # %entry 392; LINUX-32-STATIC-NEXT: movl src, %eax 393; LINUX-32-STATIC-NEXT: movl ptr, %ecx 394; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 395; LINUX-32-STATIC-NEXT: retl 396; 397; LINUX-32-PIC-LABEL: foo02: 398; LINUX-32-PIC: # %bb.0: # %entry 399; LINUX-32-PIC-NEXT: calll .L4$pb 400; LINUX-32-PIC-NEXT: .L4$pb: 401; LINUX-32-PIC-NEXT: popl %eax 402; LINUX-32-PIC-NEXT: .Ltmp4: 403; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp4-.L4$pb), %eax 404; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 405; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 406; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 407; LINUX-32-PIC-NEXT: movl (%eax), %eax 408; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 409; LINUX-32-PIC-NEXT: retl 410; 411; LINUX-64-PIC-LABEL: foo02: 412; LINUX-64-PIC: # %bb.0: # %entry 413; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 414; LINUX-64-PIC-NEXT: movl (%rax), %eax 415; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 416; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 417; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 418; LINUX-64-PIC-NEXT: retq 419; 420; DARWIN-32-STATIC-LABEL: foo02: 421; DARWIN-32-STATIC: ## %bb.0: ## %entry 422; DARWIN-32-STATIC-NEXT: movl _src, %eax 423; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 424; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 425; DARWIN-32-STATIC-NEXT: retl 426; 427; DARWIN-32-DYNAMIC-LABEL: foo02: 428; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 429; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 430; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 431; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 432; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 433; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 434; DARWIN-32-DYNAMIC-NEXT: retl 435; 436; DARWIN-32-PIC-LABEL: foo02: 437; DARWIN-32-PIC: ## %bb.0: ## %entry 438; DARWIN-32-PIC-NEXT: calll L4$pb 439; DARWIN-32-PIC-NEXT: L4$pb: 440; DARWIN-32-PIC-NEXT: popl %eax 441; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L4$pb(%eax), %ecx 442; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 443; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L4$pb(%eax), %eax 444; DARWIN-32-PIC-NEXT: movl (%eax), %eax 445; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 446; DARWIN-32-PIC-NEXT: retl 447; 448; DARWIN-64-STATIC-LABEL: foo02: 449; DARWIN-64-STATIC: ## %bb.0: ## %entry 450; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 451; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 452; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 453; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 454; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 455; DARWIN-64-STATIC-NEXT: retq 456; 457; DARWIN-64-DYNAMIC-LABEL: foo02: 458; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 459; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 460; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 461; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 462; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 463; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 464; DARWIN-64-DYNAMIC-NEXT: retq 465; 466; DARWIN-64-PIC-LABEL: foo02: 467; DARWIN-64-PIC: ## %bb.0: ## %entry 468; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 469; DARWIN-64-PIC-NEXT: movl (%rax), %eax 470; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 471; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 472; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 473; DARWIN-64-PIC-NEXT: retq 474 475entry: 476 %0 = load ptr, ptr @ptr, align 8 477 %1 = load i32, ptr @src, align 4 478 store i32 %1, ptr %0, align 4 479 ret void 480} 481 482define dso_local void @fxo02() nounwind { 483; LINUX-64-STATIC-LABEL: fxo02: 484; LINUX-64-STATIC: # %bb.0: # %entry 485; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 486; LINUX-64-STATIC-NEXT: movl (%rax), %eax 487; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 488; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 489; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 490; LINUX-64-STATIC-NEXT: retq 491; 492; LINUX-32-STATIC-LABEL: fxo02: 493; LINUX-32-STATIC: # %bb.0: # %entry 494; LINUX-32-STATIC-NEXT: movl xsrc, %eax 495; LINUX-32-STATIC-NEXT: movl ptr, %ecx 496; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 497; LINUX-32-STATIC-NEXT: retl 498; 499; LINUX-32-PIC-LABEL: fxo02: 500; LINUX-32-PIC: # %bb.0: # %entry 501; LINUX-32-PIC-NEXT: calll .L5$pb 502; LINUX-32-PIC-NEXT: .L5$pb: 503; LINUX-32-PIC-NEXT: popl %eax 504; LINUX-32-PIC-NEXT: .Ltmp5: 505; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.L5$pb), %eax 506; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 507; LINUX-32-PIC-NEXT: movl (%ecx), %ecx 508; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 509; LINUX-32-PIC-NEXT: movl (%eax), %eax 510; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 511; LINUX-32-PIC-NEXT: retl 512; 513; LINUX-64-PIC-LABEL: fxo02: 514; LINUX-64-PIC: # %bb.0: # %entry 515; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 516; LINUX-64-PIC-NEXT: movl (%rax), %eax 517; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 518; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 519; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 520; LINUX-64-PIC-NEXT: retq 521; 522; DARWIN-32-STATIC-LABEL: fxo02: 523; DARWIN-32-STATIC: ## %bb.0: ## %entry 524; DARWIN-32-STATIC-NEXT: movl _xsrc, %eax 525; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 526; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 527; DARWIN-32-STATIC-NEXT: retl 528; 529; DARWIN-32-DYNAMIC-LABEL: fxo02: 530; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 531; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 532; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 533; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 534; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 535; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 536; DARWIN-32-DYNAMIC-NEXT: retl 537; 538; DARWIN-32-PIC-LABEL: fxo02: 539; DARWIN-32-PIC: ## %bb.0: ## %entry 540; DARWIN-32-PIC-NEXT: calll L5$pb 541; DARWIN-32-PIC-NEXT: L5$pb: 542; DARWIN-32-PIC-NEXT: popl %eax 543; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L5$pb(%eax), %ecx 544; DARWIN-32-PIC-NEXT: movl (%ecx), %ecx 545; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L5$pb(%eax), %eax 546; DARWIN-32-PIC-NEXT: movl (%eax), %eax 547; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 548; DARWIN-32-PIC-NEXT: retl 549; 550; DARWIN-64-STATIC-LABEL: fxo02: 551; DARWIN-64-STATIC: ## %bb.0: ## %entry 552; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 553; DARWIN-64-STATIC-NEXT: movl (%rax), %eax 554; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 555; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 556; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 557; DARWIN-64-STATIC-NEXT: retq 558; 559; DARWIN-64-DYNAMIC-LABEL: fxo02: 560; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 561; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 562; DARWIN-64-DYNAMIC-NEXT: movl (%rax), %eax 563; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 564; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 565; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 566; DARWIN-64-DYNAMIC-NEXT: retq 567; 568; DARWIN-64-PIC-LABEL: fxo02: 569; DARWIN-64-PIC: ## %bb.0: ## %entry 570; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 571; DARWIN-64-PIC-NEXT: movl (%rax), %eax 572; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 573; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 574; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 575; DARWIN-64-PIC-NEXT: retq 576 577entry: 578 %0 = load ptr, ptr @ptr, align 8 579 %1 = load i32, ptr @xsrc, align 4 580 store i32 %1, ptr %0, align 4 581 ret void 582} 583 584define dso_local void @foo03() nounwind { 585; LINUX-64-STATIC-LABEL: foo03: 586; LINUX-64-STATIC: # %bb.0: # %entry 587; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax 588; LINUX-64-STATIC-NEXT: movl %eax, ddst(%rip) 589; LINUX-64-STATIC-NEXT: retq 590; 591; LINUX-32-STATIC-LABEL: foo03: 592; LINUX-32-STATIC: # %bb.0: # %entry 593; LINUX-32-STATIC-NEXT: movl dsrc, %eax 594; LINUX-32-STATIC-NEXT: movl %eax, ddst 595; LINUX-32-STATIC-NEXT: retl 596; 597; LINUX-32-PIC-LABEL: foo03: 598; LINUX-32-PIC: # %bb.0: # %entry 599; LINUX-32-PIC-NEXT: calll .L6$pb 600; LINUX-32-PIC-NEXT: .L6$pb: 601; LINUX-32-PIC-NEXT: popl %eax 602; LINUX-32-PIC-NEXT: .Ltmp6: 603; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.L6$pb), %eax 604; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax), %ecx 605; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF(%eax) 606; LINUX-32-PIC-NEXT: retl 607; 608; LINUX-64-PIC-LABEL: foo03: 609; LINUX-64-PIC: # %bb.0: # %entry 610; LINUX-64-PIC-NEXT: movl .Ldsrc$local(%rip), %eax 611; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local(%rip) 612; LINUX-64-PIC-NEXT: retq 613; 614; DARWIN-32-STATIC-LABEL: foo03: 615; DARWIN-32-STATIC: ## %bb.0: ## %entry 616; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax 617; DARWIN-32-STATIC-NEXT: movl %eax, _ddst 618; DARWIN-32-STATIC-NEXT: retl 619; 620; DARWIN-32-DYNAMIC-LABEL: foo03: 621; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 622; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax 623; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst 624; DARWIN-32-DYNAMIC-NEXT: retl 625; 626; DARWIN-32-PIC-LABEL: foo03: 627; DARWIN-32-PIC: ## %bb.0: ## %entry 628; DARWIN-32-PIC-NEXT: calll L6$pb 629; DARWIN-32-PIC-NEXT: L6$pb: 630; DARWIN-32-PIC-NEXT: popl %eax 631; DARWIN-32-PIC-NEXT: movl _dsrc-L6$pb(%eax), %ecx 632; DARWIN-32-PIC-NEXT: movl %ecx, _ddst-L6$pb(%eax) 633; DARWIN-32-PIC-NEXT: retl 634; 635; DARWIN-64-STATIC-LABEL: foo03: 636; DARWIN-64-STATIC: ## %bb.0: ## %entry 637; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax 638; DARWIN-64-STATIC-NEXT: movl %eax, _ddst(%rip) 639; DARWIN-64-STATIC-NEXT: retq 640; 641; DARWIN-64-DYNAMIC-LABEL: foo03: 642; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 643; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax 644; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst(%rip) 645; DARWIN-64-DYNAMIC-NEXT: retq 646; 647; DARWIN-64-PIC-LABEL: foo03: 648; DARWIN-64-PIC: ## %bb.0: ## %entry 649; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax 650; DARWIN-64-PIC-NEXT: movl %eax, _ddst(%rip) 651; DARWIN-64-PIC-NEXT: retq 652 653entry: 654 %0 = load i32, ptr @dsrc, align 32 655 store i32 %0, ptr @ddst, align 32 656 ret void 657} 658 659define dso_local void @foo04() nounwind { 660; LINUX-64-STATIC-LABEL: foo04: 661; LINUX-64-STATIC: # %bb.0: # %entry 662; LINUX-64-STATIC-NEXT: movq $ddst, dptr(%rip) 663; LINUX-64-STATIC-NEXT: retq 664; 665; LINUX-32-STATIC-LABEL: foo04: 666; LINUX-32-STATIC: # %bb.0: # %entry 667; LINUX-32-STATIC-NEXT: movl $ddst, dptr 668; LINUX-32-STATIC-NEXT: retl 669; 670; LINUX-32-PIC-LABEL: foo04: 671; LINUX-32-PIC: # %bb.0: # %entry 672; LINUX-32-PIC-NEXT: calll .L7$pb 673; LINUX-32-PIC-NEXT: .L7$pb: 674; LINUX-32-PIC-NEXT: popl %eax 675; LINUX-32-PIC-NEXT: .Ltmp7: 676; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp7-.L7$pb), %eax 677; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %ecx 678; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 679; LINUX-32-PIC-NEXT: retl 680; 681; LINUX-64-PIC-LABEL: foo04: 682; LINUX-64-PIC: # %bb.0: # %entry 683; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 684; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 685; LINUX-64-PIC-NEXT: retq 686; 687; DARWIN-32-STATIC-LABEL: foo04: 688; DARWIN-32-STATIC: ## %bb.0: ## %entry 689; DARWIN-32-STATIC-NEXT: movl $_ddst, _dptr 690; DARWIN-32-STATIC-NEXT: retl 691; 692; DARWIN-32-DYNAMIC-LABEL: foo04: 693; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 694; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, _dptr 695; DARWIN-32-DYNAMIC-NEXT: retl 696; 697; DARWIN-32-PIC-LABEL: foo04: 698; DARWIN-32-PIC: ## %bb.0: ## %entry 699; DARWIN-32-PIC-NEXT: calll L7$pb 700; DARWIN-32-PIC-NEXT: L7$pb: 701; DARWIN-32-PIC-NEXT: popl %eax 702; DARWIN-32-PIC-NEXT: leal _ddst-L7$pb(%eax), %ecx 703; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L7$pb(%eax) 704; DARWIN-32-PIC-NEXT: retl 705; 706; DARWIN-64-STATIC-LABEL: foo04: 707; DARWIN-64-STATIC: ## %bb.0: ## %entry 708; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 709; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 710; DARWIN-64-STATIC-NEXT: retq 711; 712; DARWIN-64-DYNAMIC-LABEL: foo04: 713; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 714; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 715; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 716; DARWIN-64-DYNAMIC-NEXT: retq 717; 718; DARWIN-64-PIC-LABEL: foo04: 719; DARWIN-64-PIC: ## %bb.0: ## %entry 720; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 721; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 722; DARWIN-64-PIC-NEXT: retq 723 724entry: 725 store ptr @ddst, ptr @dptr, align 8 726 ret void 727} 728 729define dso_local void @foo05() nounwind { 730; LINUX-64-STATIC-LABEL: foo05: 731; LINUX-64-STATIC: # %bb.0: # %entry 732; LINUX-64-STATIC-NEXT: movl dsrc(%rip), %eax 733; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 734; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 735; LINUX-64-STATIC-NEXT: retq 736; 737; LINUX-32-STATIC-LABEL: foo05: 738; LINUX-32-STATIC: # %bb.0: # %entry 739; LINUX-32-STATIC-NEXT: movl dsrc, %eax 740; LINUX-32-STATIC-NEXT: movl dptr, %ecx 741; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 742; LINUX-32-STATIC-NEXT: retl 743; 744; LINUX-32-PIC-LABEL: foo05: 745; LINUX-32-PIC: # %bb.0: # %entry 746; LINUX-32-PIC-NEXT: calll .L8$pb 747; LINUX-32-PIC-NEXT: .L8$pb: 748; LINUX-32-PIC-NEXT: popl %eax 749; LINUX-32-PIC-NEXT: .Ltmp8: 750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp8-.L8$pb), %eax 751; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax), %ecx 752; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 753; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 754; LINUX-32-PIC-NEXT: retl 755; 756; LINUX-64-PIC-LABEL: foo05: 757; LINUX-64-PIC: # %bb.0: # %entry 758; LINUX-64-PIC-NEXT: movl .Ldsrc$local(%rip), %eax 759; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 760; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 761; LINUX-64-PIC-NEXT: retq 762; 763; DARWIN-32-STATIC-LABEL: foo05: 764; DARWIN-32-STATIC: ## %bb.0: ## %entry 765; DARWIN-32-STATIC-NEXT: movl _dsrc, %eax 766; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 767; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 768; DARWIN-32-STATIC-NEXT: retl 769; 770; DARWIN-32-DYNAMIC-LABEL: foo05: 771; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 772; DARWIN-32-DYNAMIC-NEXT: movl _dsrc, %eax 773; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 774; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 775; DARWIN-32-DYNAMIC-NEXT: retl 776; 777; DARWIN-32-PIC-LABEL: foo05: 778; DARWIN-32-PIC: ## %bb.0: ## %entry 779; DARWIN-32-PIC-NEXT: calll L8$pb 780; DARWIN-32-PIC-NEXT: L8$pb: 781; DARWIN-32-PIC-NEXT: popl %eax 782; DARWIN-32-PIC-NEXT: movl _dsrc-L8$pb(%eax), %ecx 783; DARWIN-32-PIC-NEXT: movl _dptr-L8$pb(%eax), %eax 784; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 785; DARWIN-32-PIC-NEXT: retl 786; 787; DARWIN-64-STATIC-LABEL: foo05: 788; DARWIN-64-STATIC: ## %bb.0: ## %entry 789; DARWIN-64-STATIC-NEXT: movl _dsrc(%rip), %eax 790; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 791; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 792; DARWIN-64-STATIC-NEXT: retq 793; 794; DARWIN-64-DYNAMIC-LABEL: foo05: 795; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 796; DARWIN-64-DYNAMIC-NEXT: movl _dsrc(%rip), %eax 797; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 798; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 799; DARWIN-64-DYNAMIC-NEXT: retq 800; 801; DARWIN-64-PIC-LABEL: foo05: 802; DARWIN-64-PIC: ## %bb.0: ## %entry 803; DARWIN-64-PIC-NEXT: movl _dsrc(%rip), %eax 804; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 805; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 806; DARWIN-64-PIC-NEXT: retq 807 808entry: 809 %0 = load ptr, ptr @dptr, align 8 810 %1 = load i32, ptr @dsrc, align 32 811 store i32 %1, ptr %0, align 4 812 ret void 813} 814 815define dso_local void @foo06() nounwind { 816; LINUX-64-STATIC-LABEL: foo06: 817; LINUX-64-STATIC: # %bb.0: # %entry 818; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax 819; LINUX-64-STATIC-NEXT: movl %eax, ldst(%rip) 820; LINUX-64-STATIC-NEXT: retq 821; 822; LINUX-32-STATIC-LABEL: foo06: 823; LINUX-32-STATIC: # %bb.0: # %entry 824; LINUX-32-STATIC-NEXT: movl lsrc, %eax 825; LINUX-32-STATIC-NEXT: movl %eax, ldst 826; LINUX-32-STATIC-NEXT: retl 827; 828; LINUX-32-PIC-LABEL: foo06: 829; LINUX-32-PIC: # %bb.0: # %entry 830; LINUX-32-PIC-NEXT: calll .L9$pb 831; LINUX-32-PIC-NEXT: .L9$pb: 832; LINUX-32-PIC-NEXT: popl %eax 833; LINUX-32-PIC-NEXT: .Ltmp9: 834; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp9-.L9$pb), %eax 835; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx 836; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF(%eax) 837; LINUX-32-PIC-NEXT: retl 838; 839; LINUX-64-PIC-LABEL: foo06: 840; LINUX-64-PIC: # %bb.0: # %entry 841; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax 842; LINUX-64-PIC-NEXT: movl %eax, ldst(%rip) 843; LINUX-64-PIC-NEXT: retq 844; 845; DARWIN-32-STATIC-LABEL: foo06: 846; DARWIN-32-STATIC: ## %bb.0: ## %entry 847; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax 848; DARWIN-32-STATIC-NEXT: movl %eax, _ldst 849; DARWIN-32-STATIC-NEXT: retl 850; 851; DARWIN-32-DYNAMIC-LABEL: foo06: 852; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 853; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax 854; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst 855; DARWIN-32-DYNAMIC-NEXT: retl 856; 857; DARWIN-32-PIC-LABEL: foo06: 858; DARWIN-32-PIC: ## %bb.0: ## %entry 859; DARWIN-32-PIC-NEXT: calll L9$pb 860; DARWIN-32-PIC-NEXT: L9$pb: 861; DARWIN-32-PIC-NEXT: popl %eax 862; DARWIN-32-PIC-NEXT: movl _lsrc-L9$pb(%eax), %ecx 863; DARWIN-32-PIC-NEXT: movl %ecx, _ldst-L9$pb(%eax) 864; DARWIN-32-PIC-NEXT: retl 865; 866; DARWIN-64-STATIC-LABEL: foo06: 867; DARWIN-64-STATIC: ## %bb.0: ## %entry 868; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax 869; DARWIN-64-STATIC-NEXT: movl %eax, _ldst(%rip) 870; DARWIN-64-STATIC-NEXT: retq 871; 872; DARWIN-64-DYNAMIC-LABEL: foo06: 873; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 874; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax 875; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst(%rip) 876; DARWIN-64-DYNAMIC-NEXT: retq 877; 878; DARWIN-64-PIC-LABEL: foo06: 879; DARWIN-64-PIC: ## %bb.0: ## %entry 880; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax 881; DARWIN-64-PIC-NEXT: movl %eax, _ldst(%rip) 882; DARWIN-64-PIC-NEXT: retq 883 884entry: 885 %0 = load i32, ptr @lsrc, align 4 886 store i32 %0, ptr @ldst, align 4 887 ret void 888} 889 890define dso_local void @foo07() nounwind { 891; LINUX-64-STATIC-LABEL: foo07: 892; LINUX-64-STATIC: # %bb.0: # %entry 893; LINUX-64-STATIC-NEXT: movq $ldst, lptr(%rip) 894; LINUX-64-STATIC-NEXT: retq 895; 896; LINUX-32-STATIC-LABEL: foo07: 897; LINUX-32-STATIC: # %bb.0: # %entry 898; LINUX-32-STATIC-NEXT: movl $ldst, lptr 899; LINUX-32-STATIC-NEXT: retl 900; 901; LINUX-32-PIC-LABEL: foo07: 902; LINUX-32-PIC: # %bb.0: # %entry 903; LINUX-32-PIC-NEXT: calll .L10$pb 904; LINUX-32-PIC-NEXT: .L10$pb: 905; LINUX-32-PIC-NEXT: popl %eax 906; LINUX-32-PIC-NEXT: .Ltmp10: 907; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp10-.L10$pb), %eax 908; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %ecx 909; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 910; LINUX-32-PIC-NEXT: retl 911; 912; LINUX-64-PIC-LABEL: foo07: 913; LINUX-64-PIC: # %bb.0: # %entry 914; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 915; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 916; LINUX-64-PIC-NEXT: retq 917; 918; DARWIN-32-STATIC-LABEL: foo07: 919; DARWIN-32-STATIC: ## %bb.0: ## %entry 920; DARWIN-32-STATIC-NEXT: movl $_ldst, _lptr 921; DARWIN-32-STATIC-NEXT: retl 922; 923; DARWIN-32-DYNAMIC-LABEL: foo07: 924; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 925; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, _lptr 926; DARWIN-32-DYNAMIC-NEXT: retl 927; 928; DARWIN-32-PIC-LABEL: foo07: 929; DARWIN-32-PIC: ## %bb.0: ## %entry 930; DARWIN-32-PIC-NEXT: calll L10$pb 931; DARWIN-32-PIC-NEXT: L10$pb: 932; DARWIN-32-PIC-NEXT: popl %eax 933; DARWIN-32-PIC-NEXT: leal _ldst-L10$pb(%eax), %ecx 934; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L10$pb(%eax) 935; DARWIN-32-PIC-NEXT: retl 936; 937; DARWIN-64-STATIC-LABEL: foo07: 938; DARWIN-64-STATIC: ## %bb.0: ## %entry 939; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 940; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 941; DARWIN-64-STATIC-NEXT: retq 942; 943; DARWIN-64-DYNAMIC-LABEL: foo07: 944; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 945; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 946; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 947; DARWIN-64-DYNAMIC-NEXT: retq 948; 949; DARWIN-64-PIC-LABEL: foo07: 950; DARWIN-64-PIC: ## %bb.0: ## %entry 951; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 952; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 953; DARWIN-64-PIC-NEXT: retq 954 955entry: 956 store ptr @ldst, ptr @lptr, align 8 957 ret void 958} 959 960define dso_local void @foo08() nounwind { 961; LINUX-64-STATIC-LABEL: foo08: 962; LINUX-64-STATIC: # %bb.0: # %entry 963; LINUX-64-STATIC-NEXT: movl lsrc(%rip), %eax 964; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 965; LINUX-64-STATIC-NEXT: movl %eax, (%rcx) 966; LINUX-64-STATIC-NEXT: retq 967; 968; LINUX-32-STATIC-LABEL: foo08: 969; LINUX-32-STATIC: # %bb.0: # %entry 970; LINUX-32-STATIC-NEXT: movl lsrc, %eax 971; LINUX-32-STATIC-NEXT: movl lptr, %ecx 972; LINUX-32-STATIC-NEXT: movl %eax, (%ecx) 973; LINUX-32-STATIC-NEXT: retl 974; 975; LINUX-32-PIC-LABEL: foo08: 976; LINUX-32-PIC: # %bb.0: # %entry 977; LINUX-32-PIC-NEXT: calll .L11$pb 978; LINUX-32-PIC-NEXT: .L11$pb: 979; LINUX-32-PIC-NEXT: popl %eax 980; LINUX-32-PIC-NEXT: .Ltmp11: 981; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp11-.L11$pb), %eax 982; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax), %ecx 983; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 984; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 985; LINUX-32-PIC-NEXT: retl 986; 987; LINUX-64-PIC-LABEL: foo08: 988; LINUX-64-PIC: # %bb.0: # %entry 989; LINUX-64-PIC-NEXT: movl lsrc(%rip), %eax 990; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 991; LINUX-64-PIC-NEXT: movl %eax, (%rcx) 992; LINUX-64-PIC-NEXT: retq 993; 994; DARWIN-32-STATIC-LABEL: foo08: 995; DARWIN-32-STATIC: ## %bb.0: ## %entry 996; DARWIN-32-STATIC-NEXT: movl _lsrc, %eax 997; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 998; DARWIN-32-STATIC-NEXT: movl %eax, (%ecx) 999; DARWIN-32-STATIC-NEXT: retl 1000; 1001; DARWIN-32-DYNAMIC-LABEL: foo08: 1002; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1003; DARWIN-32-DYNAMIC-NEXT: movl _lsrc, %eax 1004; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 1005; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1006; DARWIN-32-DYNAMIC-NEXT: retl 1007; 1008; DARWIN-32-PIC-LABEL: foo08: 1009; DARWIN-32-PIC: ## %bb.0: ## %entry 1010; DARWIN-32-PIC-NEXT: calll L11$pb 1011; DARWIN-32-PIC-NEXT: L11$pb: 1012; DARWIN-32-PIC-NEXT: popl %eax 1013; DARWIN-32-PIC-NEXT: movl _lsrc-L11$pb(%eax), %ecx 1014; DARWIN-32-PIC-NEXT: movl _lptr-L11$pb(%eax), %eax 1015; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1016; DARWIN-32-PIC-NEXT: retl 1017; 1018; DARWIN-64-STATIC-LABEL: foo08: 1019; DARWIN-64-STATIC: ## %bb.0: ## %entry 1020; DARWIN-64-STATIC-NEXT: movl _lsrc(%rip), %eax 1021; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 1022; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx) 1023; DARWIN-64-STATIC-NEXT: retq 1024; 1025; DARWIN-64-DYNAMIC-LABEL: foo08: 1026; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1027; DARWIN-64-DYNAMIC-NEXT: movl _lsrc(%rip), %eax 1028; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 1029; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx) 1030; DARWIN-64-DYNAMIC-NEXT: retq 1031; 1032; DARWIN-64-PIC-LABEL: foo08: 1033; DARWIN-64-PIC: ## %bb.0: ## %entry 1034; DARWIN-64-PIC-NEXT: movl _lsrc(%rip), %eax 1035; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 1036; DARWIN-64-PIC-NEXT: movl %eax, (%rcx) 1037; DARWIN-64-PIC-NEXT: retq 1038 1039entry: 1040 %0 = load ptr, ptr @lptr, align 8 1041 %1 = load i32, ptr @lsrc, align 4 1042 store i32 %1, ptr %0, align 4 1043 ret void 1044} 1045 1046define dso_local void @qux00() nounwind { 1047; LINUX-64-STATIC-LABEL: qux00: 1048; LINUX-64-STATIC: # %bb.0: # %entry 1049; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 1050; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1051; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 1052; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1053; LINUX-64-STATIC-NEXT: retq 1054; 1055; LINUX-32-STATIC-LABEL: qux00: 1056; LINUX-32-STATIC: # %bb.0: # %entry 1057; LINUX-32-STATIC-NEXT: movl src+64, %eax 1058; LINUX-32-STATIC-NEXT: movl %eax, dst+64 1059; LINUX-32-STATIC-NEXT: retl 1060; 1061; LINUX-32-PIC-LABEL: qux00: 1062; LINUX-32-PIC: # %bb.0: # %entry 1063; LINUX-32-PIC-NEXT: calll .L12$pb 1064; LINUX-32-PIC-NEXT: .L12$pb: 1065; LINUX-32-PIC-NEXT: popl %eax 1066; LINUX-32-PIC-NEXT: .Ltmp12: 1067; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp12-.L12$pb), %eax 1068; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 1069; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1070; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 1071; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1072; LINUX-32-PIC-NEXT: retl 1073; 1074; LINUX-64-PIC-LABEL: qux00: 1075; LINUX-64-PIC: # %bb.0: # %entry 1076; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 1077; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1078; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 1079; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1080; LINUX-64-PIC-NEXT: retq 1081; 1082; DARWIN-32-STATIC-LABEL: qux00: 1083; DARWIN-32-STATIC: ## %bb.0: ## %entry 1084; DARWIN-32-STATIC-NEXT: movl _src+64, %eax 1085; DARWIN-32-STATIC-NEXT: movl %eax, _dst+64 1086; DARWIN-32-STATIC-NEXT: retl 1087; 1088; DARWIN-32-DYNAMIC-LABEL: qux00: 1089; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1090; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 1091; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1092; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 1093; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1094; DARWIN-32-DYNAMIC-NEXT: retl 1095; 1096; DARWIN-32-PIC-LABEL: qux00: 1097; DARWIN-32-PIC: ## %bb.0: ## %entry 1098; DARWIN-32-PIC-NEXT: calll L12$pb 1099; DARWIN-32-PIC-NEXT: L12$pb: 1100; DARWIN-32-PIC-NEXT: popl %eax 1101; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L12$pb(%eax), %ecx 1102; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1103; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L12$pb(%eax), %eax 1104; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1105; DARWIN-32-PIC-NEXT: retl 1106; 1107; DARWIN-64-STATIC-LABEL: qux00: 1108; DARWIN-64-STATIC: ## %bb.0: ## %entry 1109; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1110; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1111; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1112; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1113; DARWIN-64-STATIC-NEXT: retq 1114; 1115; DARWIN-64-DYNAMIC-LABEL: qux00: 1116; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1117; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1118; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1119; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1120; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1121; DARWIN-64-DYNAMIC-NEXT: retq 1122; 1123; DARWIN-64-PIC-LABEL: qux00: 1124; DARWIN-64-PIC: ## %bb.0: ## %entry 1125; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1126; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1127; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 1128; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1129; DARWIN-64-PIC-NEXT: retq 1130 1131entry: 1132 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16), align 4 1133 store i32 %0, ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16), align 4 1134 ret void 1135} 1136 1137define dso_local void @qxx00() nounwind { 1138; LINUX-64-STATIC-LABEL: qxx00: 1139; LINUX-64-STATIC: # %bb.0: # %entry 1140; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1141; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1142; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 1143; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1144; LINUX-64-STATIC-NEXT: retq 1145; 1146; LINUX-32-STATIC-LABEL: qxx00: 1147; LINUX-32-STATIC: # %bb.0: # %entry 1148; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax 1149; LINUX-32-STATIC-NEXT: movl %eax, xdst+64 1150; LINUX-32-STATIC-NEXT: retl 1151; 1152; LINUX-32-PIC-LABEL: qxx00: 1153; LINUX-32-PIC: # %bb.0: # %entry 1154; LINUX-32-PIC-NEXT: calll .L13$pb 1155; LINUX-32-PIC-NEXT: .L13$pb: 1156; LINUX-32-PIC-NEXT: popl %eax 1157; LINUX-32-PIC-NEXT: .Ltmp13: 1158; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp13-.L13$pb), %eax 1159; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 1160; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1161; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 1162; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1163; LINUX-32-PIC-NEXT: retl 1164; 1165; LINUX-64-PIC-LABEL: qxx00: 1166; LINUX-64-PIC: # %bb.0: # %entry 1167; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1168; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1169; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 1170; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1171; LINUX-64-PIC-NEXT: retq 1172; 1173; DARWIN-32-STATIC-LABEL: qxx00: 1174; DARWIN-32-STATIC: ## %bb.0: ## %entry 1175; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax 1176; DARWIN-32-STATIC-NEXT: movl %eax, _xdst+64 1177; DARWIN-32-STATIC-NEXT: retl 1178; 1179; DARWIN-32-DYNAMIC-LABEL: qxx00: 1180; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1181; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 1182; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1183; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 1184; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1185; DARWIN-32-DYNAMIC-NEXT: retl 1186; 1187; DARWIN-32-PIC-LABEL: qxx00: 1188; DARWIN-32-PIC: ## %bb.0: ## %entry 1189; DARWIN-32-PIC-NEXT: calll L13$pb 1190; DARWIN-32-PIC-NEXT: L13$pb: 1191; DARWIN-32-PIC-NEXT: popl %eax 1192; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L13$pb(%eax), %ecx 1193; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1194; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L13$pb(%eax), %eax 1195; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1196; DARWIN-32-PIC-NEXT: retl 1197; 1198; DARWIN-64-STATIC-LABEL: qxx00: 1199; DARWIN-64-STATIC: ## %bb.0: ## %entry 1200; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1201; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1202; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1203; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1204; DARWIN-64-STATIC-NEXT: retq 1205; 1206; DARWIN-64-DYNAMIC-LABEL: qxx00: 1207; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1208; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1209; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1210; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1211; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1212; DARWIN-64-DYNAMIC-NEXT: retq 1213; 1214; DARWIN-64-PIC-LABEL: qxx00: 1215; DARWIN-64-PIC: ## %bb.0: ## %entry 1216; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1217; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1218; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 1219; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1220; DARWIN-64-PIC-NEXT: retq 1221 1222entry: 1223 %0 = load i32, ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16), align 4 1224 store i32 %0, ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16), align 4 1225 ret void 1226} 1227 1228define dso_local void @qux01() nounwind { 1229; LINUX-64-STATIC-LABEL: qux01: 1230; LINUX-64-STATIC: # %bb.0: # %entry 1231; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 1232; LINUX-64-STATIC-NEXT: addq $64, %rax 1233; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1234; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 1235; LINUX-64-STATIC-NEXT: retq 1236; 1237; LINUX-32-STATIC-LABEL: qux01: 1238; LINUX-32-STATIC: # %bb.0: # %entry 1239; LINUX-32-STATIC-NEXT: leal dst+64, %eax 1240; LINUX-32-STATIC-NEXT: movl %eax, ptr 1241; LINUX-32-STATIC-NEXT: retl 1242; 1243; LINUX-32-PIC-LABEL: qux01: 1244; LINUX-32-PIC: # %bb.0: # %entry 1245; LINUX-32-PIC-NEXT: calll .L14$pb 1246; LINUX-32-PIC-NEXT: .L14$pb: 1247; LINUX-32-PIC-NEXT: popl %eax 1248; LINUX-32-PIC-NEXT: .Ltmp14: 1249; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp14-.L14$pb), %eax 1250; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %ecx 1251; LINUX-32-PIC-NEXT: addl $64, %ecx 1252; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1253; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1254; LINUX-32-PIC-NEXT: retl 1255; 1256; LINUX-64-PIC-LABEL: qux01: 1257; LINUX-64-PIC: # %bb.0: # %entry 1258; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 1259; LINUX-64-PIC-NEXT: addq $64, %rax 1260; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1261; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1262; LINUX-64-PIC-NEXT: retq 1263; 1264; DARWIN-32-STATIC-LABEL: qux01: 1265; DARWIN-32-STATIC: ## %bb.0: ## %entry 1266; DARWIN-32-STATIC-NEXT: movl $_dst+64, _ptr 1267; DARWIN-32-STATIC-NEXT: retl 1268; 1269; DARWIN-32-DYNAMIC-LABEL: qux01: 1270; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1271; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 1272; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 1273; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1274; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1275; DARWIN-32-DYNAMIC-NEXT: retl 1276; 1277; DARWIN-32-PIC-LABEL: qux01: 1278; DARWIN-32-PIC: ## %bb.0: ## %entry 1279; DARWIN-32-PIC-NEXT: calll L14$pb 1280; DARWIN-32-PIC-NEXT: L14$pb: 1281; DARWIN-32-PIC-NEXT: popl %eax 1282; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L14$pb(%eax), %ecx 1283; DARWIN-32-PIC-NEXT: addl $64, %ecx 1284; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L14$pb(%eax), %eax 1285; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1286; DARWIN-32-PIC-NEXT: retl 1287; 1288; DARWIN-64-STATIC-LABEL: qux01: 1289; DARWIN-64-STATIC: ## %bb.0: ## %entry 1290; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1291; DARWIN-64-STATIC-NEXT: addq $64, %rax 1292; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1293; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 1294; DARWIN-64-STATIC-NEXT: retq 1295; 1296; DARWIN-64-DYNAMIC-LABEL: qux01: 1297; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1298; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1299; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 1300; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1301; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 1302; DARWIN-64-DYNAMIC-NEXT: retq 1303; 1304; DARWIN-64-PIC-LABEL: qux01: 1305; DARWIN-64-PIC: ## %bb.0: ## %entry 1306; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 1307; DARWIN-64-PIC-NEXT: addq $64, %rax 1308; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1309; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 1310; DARWIN-64-PIC-NEXT: retq 1311 1312entry: 1313 store ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16), ptr @ptr, align 8 1314 ret void 1315} 1316 1317define dso_local void @qxx01() nounwind { 1318; LINUX-64-STATIC-LABEL: qxx01: 1319; LINUX-64-STATIC: # %bb.0: # %entry 1320; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 1321; LINUX-64-STATIC-NEXT: addq $64, %rax 1322; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1323; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 1324; LINUX-64-STATIC-NEXT: retq 1325; 1326; LINUX-32-STATIC-LABEL: qxx01: 1327; LINUX-32-STATIC: # %bb.0: # %entry 1328; LINUX-32-STATIC-NEXT: leal xdst+64, %eax 1329; LINUX-32-STATIC-NEXT: movl %eax, ptr 1330; LINUX-32-STATIC-NEXT: retl 1331; 1332; LINUX-32-PIC-LABEL: qxx01: 1333; LINUX-32-PIC: # %bb.0: # %entry 1334; LINUX-32-PIC-NEXT: calll .L15$pb 1335; LINUX-32-PIC-NEXT: .L15$pb: 1336; LINUX-32-PIC-NEXT: popl %eax 1337; LINUX-32-PIC-NEXT: .Ltmp15: 1338; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp15-.L15$pb), %eax 1339; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %ecx 1340; LINUX-32-PIC-NEXT: addl $64, %ecx 1341; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1342; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 1343; LINUX-32-PIC-NEXT: retl 1344; 1345; LINUX-64-PIC-LABEL: qxx01: 1346; LINUX-64-PIC: # %bb.0: # %entry 1347; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 1348; LINUX-64-PIC-NEXT: addq $64, %rax 1349; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1350; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 1351; LINUX-64-PIC-NEXT: retq 1352; 1353; DARWIN-32-STATIC-LABEL: qxx01: 1354; DARWIN-32-STATIC: ## %bb.0: ## %entry 1355; DARWIN-32-STATIC-NEXT: movl $_xdst+64, _ptr 1356; DARWIN-32-STATIC-NEXT: retl 1357; 1358; DARWIN-32-DYNAMIC-LABEL: qxx01: 1359; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1360; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 1361; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 1362; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1363; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 1364; DARWIN-32-DYNAMIC-NEXT: retl 1365; 1366; DARWIN-32-PIC-LABEL: qxx01: 1367; DARWIN-32-PIC: ## %bb.0: ## %entry 1368; DARWIN-32-PIC-NEXT: calll L15$pb 1369; DARWIN-32-PIC-NEXT: L15$pb: 1370; DARWIN-32-PIC-NEXT: popl %eax 1371; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L15$pb(%eax), %ecx 1372; DARWIN-32-PIC-NEXT: addl $64, %ecx 1373; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L15$pb(%eax), %eax 1374; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 1375; DARWIN-32-PIC-NEXT: retl 1376; 1377; DARWIN-64-STATIC-LABEL: qxx01: 1378; DARWIN-64-STATIC: ## %bb.0: ## %entry 1379; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1380; DARWIN-64-STATIC-NEXT: addq $64, %rax 1381; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1382; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 1383; DARWIN-64-STATIC-NEXT: retq 1384; 1385; DARWIN-64-DYNAMIC-LABEL: qxx01: 1386; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1387; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1388; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 1389; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1390; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 1391; DARWIN-64-DYNAMIC-NEXT: retq 1392; 1393; DARWIN-64-PIC-LABEL: qxx01: 1394; DARWIN-64-PIC: ## %bb.0: ## %entry 1395; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 1396; DARWIN-64-PIC-NEXT: addq $64, %rax 1397; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1398; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 1399; DARWIN-64-PIC-NEXT: retq 1400 1401entry: 1402 store ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16), ptr @ptr, align 8 1403 ret void 1404} 1405 1406define dso_local void @qux02() nounwind { 1407; LINUX-64-STATIC-LABEL: qux02: 1408; LINUX-64-STATIC: # %bb.0: # %entry 1409; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 1410; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1411; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1412; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 1413; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1414; LINUX-64-STATIC-NEXT: retq 1415; 1416; LINUX-32-STATIC-LABEL: qux02: 1417; LINUX-32-STATIC: # %bb.0: # %entry 1418; LINUX-32-STATIC-NEXT: movl src+64, %eax 1419; LINUX-32-STATIC-NEXT: movl ptr, %ecx 1420; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1421; LINUX-32-STATIC-NEXT: retl 1422; 1423; LINUX-32-PIC-LABEL: qux02: 1424; LINUX-32-PIC: # %bb.0: # %entry 1425; LINUX-32-PIC-NEXT: calll .L16$pb 1426; LINUX-32-PIC-NEXT: .L16$pb: 1427; LINUX-32-PIC-NEXT: popl %eax 1428; LINUX-32-PIC-NEXT: .Ltmp16: 1429; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp16-.L16$pb), %eax 1430; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 1431; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1432; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1433; LINUX-32-PIC-NEXT: movl (%eax), %eax 1434; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1435; LINUX-32-PIC-NEXT: retl 1436; 1437; LINUX-64-PIC-LABEL: qux02: 1438; LINUX-64-PIC: # %bb.0: # %entry 1439; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 1440; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1441; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1442; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1443; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1444; LINUX-64-PIC-NEXT: retq 1445; 1446; DARWIN-32-STATIC-LABEL: qux02: 1447; DARWIN-32-STATIC: ## %bb.0: ## %entry 1448; DARWIN-32-STATIC-NEXT: movl _src+64, %eax 1449; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 1450; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1451; DARWIN-32-STATIC-NEXT: retl 1452; 1453; DARWIN-32-DYNAMIC-LABEL: qux02: 1454; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1455; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 1456; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1457; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1458; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 1459; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1460; DARWIN-32-DYNAMIC-NEXT: retl 1461; 1462; DARWIN-32-PIC-LABEL: qux02: 1463; DARWIN-32-PIC: ## %bb.0: ## %entry 1464; DARWIN-32-PIC-NEXT: calll L16$pb 1465; DARWIN-32-PIC-NEXT: L16$pb: 1466; DARWIN-32-PIC-NEXT: popl %eax 1467; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L16$pb(%eax), %ecx 1468; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1469; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L16$pb(%eax), %eax 1470; DARWIN-32-PIC-NEXT: movl (%eax), %eax 1471; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1472; DARWIN-32-PIC-NEXT: retl 1473; 1474; DARWIN-64-STATIC-LABEL: qux02: 1475; DARWIN-64-STATIC: ## %bb.0: ## %entry 1476; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1477; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1478; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1479; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 1480; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1481; DARWIN-64-STATIC-NEXT: retq 1482; 1483; DARWIN-64-DYNAMIC-LABEL: qux02: 1484; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1485; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1486; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1487; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1488; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 1489; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1490; DARWIN-64-DYNAMIC-NEXT: retq 1491; 1492; DARWIN-64-PIC-LABEL: qux02: 1493; DARWIN-64-PIC: ## %bb.0: ## %entry 1494; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 1495; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1496; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1497; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 1498; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1499; DARWIN-64-PIC-NEXT: retq 1500 1501entry: 1502 %0 = load ptr, ptr @ptr, align 8 1503 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16), align 4 1504 %2 = getelementptr i32, ptr %0, i64 16 1505 store i32 %1, ptr %2, align 4 1506 ret void 1507} 1508 1509define dso_local void @qxx02() nounwind { 1510; LINUX-64-STATIC-LABEL: qxx02: 1511; LINUX-64-STATIC: # %bb.0: # %entry 1512; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1513; LINUX-64-STATIC-NEXT: movl 64(%rax), %eax 1514; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1515; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 1516; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1517; LINUX-64-STATIC-NEXT: retq 1518; 1519; LINUX-32-STATIC-LABEL: qxx02: 1520; LINUX-32-STATIC: # %bb.0: # %entry 1521; LINUX-32-STATIC-NEXT: movl xsrc+64, %eax 1522; LINUX-32-STATIC-NEXT: movl ptr, %ecx 1523; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1524; LINUX-32-STATIC-NEXT: retl 1525; 1526; LINUX-32-PIC-LABEL: qxx02: 1527; LINUX-32-PIC: # %bb.0: # %entry 1528; LINUX-32-PIC-NEXT: calll .L17$pb 1529; LINUX-32-PIC-NEXT: .L17$pb: 1530; LINUX-32-PIC-NEXT: popl %eax 1531; LINUX-32-PIC-NEXT: .Ltmp17: 1532; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp17-.L17$pb), %eax 1533; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %ecx 1534; LINUX-32-PIC-NEXT: movl 64(%ecx), %ecx 1535; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 1536; LINUX-32-PIC-NEXT: movl (%eax), %eax 1537; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1538; LINUX-32-PIC-NEXT: retl 1539; 1540; LINUX-64-PIC-LABEL: qxx02: 1541; LINUX-64-PIC: # %bb.0: # %entry 1542; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 1543; LINUX-64-PIC-NEXT: movl 64(%rax), %eax 1544; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 1545; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 1546; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1547; LINUX-64-PIC-NEXT: retq 1548; 1549; DARWIN-32-STATIC-LABEL: qxx02: 1550; DARWIN-32-STATIC: ## %bb.0: ## %entry 1551; DARWIN-32-STATIC-NEXT: movl _xsrc+64, %eax 1552; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 1553; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1554; DARWIN-32-STATIC-NEXT: retl 1555; 1556; DARWIN-32-DYNAMIC-LABEL: qxx02: 1557; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1558; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 1559; DARWIN-32-DYNAMIC-NEXT: movl 64(%eax), %eax 1560; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 1561; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 1562; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1563; DARWIN-32-DYNAMIC-NEXT: retl 1564; 1565; DARWIN-32-PIC-LABEL: qxx02: 1566; DARWIN-32-PIC: ## %bb.0: ## %entry 1567; DARWIN-32-PIC-NEXT: calll L17$pb 1568; DARWIN-32-PIC-NEXT: L17$pb: 1569; DARWIN-32-PIC-NEXT: popl %eax 1570; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L17$pb(%eax), %ecx 1571; DARWIN-32-PIC-NEXT: movl 64(%ecx), %ecx 1572; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L17$pb(%eax), %eax 1573; DARWIN-32-PIC-NEXT: movl (%eax), %eax 1574; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1575; DARWIN-32-PIC-NEXT: retl 1576; 1577; DARWIN-64-STATIC-LABEL: qxx02: 1578; DARWIN-64-STATIC: ## %bb.0: ## %entry 1579; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1580; DARWIN-64-STATIC-NEXT: movl 64(%rax), %eax 1581; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1582; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 1583; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1584; DARWIN-64-STATIC-NEXT: retq 1585; 1586; DARWIN-64-DYNAMIC-LABEL: qxx02: 1587; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1588; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1589; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax), %eax 1590; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1591; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 1592; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1593; DARWIN-64-DYNAMIC-NEXT: retq 1594; 1595; DARWIN-64-PIC-LABEL: qxx02: 1596; DARWIN-64-PIC: ## %bb.0: ## %entry 1597; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 1598; DARWIN-64-PIC-NEXT: movl 64(%rax), %eax 1599; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 1600; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 1601; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1602; DARWIN-64-PIC-NEXT: retq 1603 1604entry: 1605 %0 = load ptr, ptr @ptr, align 8 1606 %1 = load i32, ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16), align 4 1607 %2 = getelementptr i32, ptr %0, i64 16 1608 store i32 %1, ptr %2, align 4 1609 ret void 1610} 1611 1612define dso_local void @qux03() nounwind { 1613; LINUX-64-STATIC-LABEL: qux03: 1614; LINUX-64-STATIC: # %bb.0: # %entry 1615; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax 1616; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(%rip) 1617; LINUX-64-STATIC-NEXT: retq 1618; 1619; LINUX-32-STATIC-LABEL: qux03: 1620; LINUX-32-STATIC: # %bb.0: # %entry 1621; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax 1622; LINUX-32-STATIC-NEXT: movl %eax, ddst+64 1623; LINUX-32-STATIC-NEXT: retl 1624; 1625; LINUX-32-PIC-LABEL: qux03: 1626; LINUX-32-PIC: # %bb.0: # %entry 1627; LINUX-32-PIC-NEXT: calll .L18$pb 1628; LINUX-32-PIC-NEXT: .L18$pb: 1629; LINUX-32-PIC-NEXT: popl %eax 1630; LINUX-32-PIC-NEXT: .Ltmp18: 1631; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp18-.L18$pb), %eax 1632; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax), %ecx 1633; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF+64(%eax) 1634; LINUX-32-PIC-NEXT: retl 1635; 1636; LINUX-64-PIC-LABEL: qux03: 1637; LINUX-64-PIC: # %bb.0: # %entry 1638; LINUX-64-PIC-NEXT: movl .Ldsrc$local+64(%rip), %eax 1639; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local+64(%rip) 1640; LINUX-64-PIC-NEXT: retq 1641; 1642; DARWIN-32-STATIC-LABEL: qux03: 1643; DARWIN-32-STATIC: ## %bb.0: ## %entry 1644; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax 1645; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+64 1646; DARWIN-32-STATIC-NEXT: retl 1647; 1648; DARWIN-32-DYNAMIC-LABEL: qux03: 1649; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1650; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax 1651; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+64 1652; DARWIN-32-DYNAMIC-NEXT: retl 1653; 1654; DARWIN-32-PIC-LABEL: qux03: 1655; DARWIN-32-PIC: ## %bb.0: ## %entry 1656; DARWIN-32-PIC-NEXT: calll L18$pb 1657; DARWIN-32-PIC-NEXT: L18$pb: 1658; DARWIN-32-PIC-NEXT: popl %eax 1659; DARWIN-32-PIC-NEXT: movl (_dsrc-L18$pb)+64(%eax), %ecx 1660; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L18$pb)+64(%eax) 1661; DARWIN-32-PIC-NEXT: retl 1662; 1663; DARWIN-64-STATIC-LABEL: qux03: 1664; DARWIN-64-STATIC: ## %bb.0: ## %entry 1665; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax 1666; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+64(%rip) 1667; DARWIN-64-STATIC-NEXT: retq 1668; 1669; DARWIN-64-DYNAMIC-LABEL: qux03: 1670; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1671; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax 1672; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+64(%rip) 1673; DARWIN-64-DYNAMIC-NEXT: retq 1674; 1675; DARWIN-64-PIC-LABEL: qux03: 1676; DARWIN-64-PIC: ## %bb.0: ## %entry 1677; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax 1678; DARWIN-64-PIC-NEXT: movl %eax, _ddst+64(%rip) 1679; DARWIN-64-PIC-NEXT: retq 1680 1681entry: 1682 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16), align 32 1683 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16), align 32 1684 ret void 1685} 1686 1687define dso_local void @qux04() nounwind { 1688; LINUX-64-STATIC-LABEL: qux04: 1689; LINUX-64-STATIC: # %bb.0: # %entry 1690; LINUX-64-STATIC-NEXT: movq $ddst+64, dptr(%rip) 1691; LINUX-64-STATIC-NEXT: retq 1692; 1693; LINUX-32-STATIC-LABEL: qux04: 1694; LINUX-32-STATIC: # %bb.0: # %entry 1695; LINUX-32-STATIC-NEXT: movl $ddst+64, dptr 1696; LINUX-32-STATIC-NEXT: retl 1697; 1698; LINUX-32-PIC-LABEL: qux04: 1699; LINUX-32-PIC: # %bb.0: # %entry 1700; LINUX-32-PIC-NEXT: calll .L19$pb 1701; LINUX-32-PIC-NEXT: .L19$pb: 1702; LINUX-32-PIC-NEXT: popl %eax 1703; LINUX-32-PIC-NEXT: .Ltmp19: 1704; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp19-.L19$pb), %eax 1705; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax), %ecx 1706; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 1707; LINUX-32-PIC-NEXT: retl 1708; 1709; LINUX-64-PIC-LABEL: qux04: 1710; LINUX-64-PIC: # %bb.0: # %entry 1711; LINUX-64-PIC-NEXT: leaq .Lddst$local+64(%rip), %rax 1712; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 1713; LINUX-64-PIC-NEXT: retq 1714; 1715; DARWIN-32-STATIC-LABEL: qux04: 1716; DARWIN-32-STATIC: ## %bb.0: ## %entry 1717; DARWIN-32-STATIC-NEXT: movl $_ddst+64, _dptr 1718; DARWIN-32-STATIC-NEXT: retl 1719; 1720; DARWIN-32-DYNAMIC-LABEL: qux04: 1721; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1722; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, _dptr 1723; DARWIN-32-DYNAMIC-NEXT: retl 1724; 1725; DARWIN-32-PIC-LABEL: qux04: 1726; DARWIN-32-PIC: ## %bb.0: ## %entry 1727; DARWIN-32-PIC-NEXT: calll L19$pb 1728; DARWIN-32-PIC-NEXT: L19$pb: 1729; DARWIN-32-PIC-NEXT: popl %eax 1730; DARWIN-32-PIC-NEXT: leal (_ddst-L19$pb)+64(%eax), %ecx 1731; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L19$pb(%eax) 1732; DARWIN-32-PIC-NEXT: retl 1733; 1734; DARWIN-64-STATIC-LABEL: qux04: 1735; DARWIN-64-STATIC: ## %bb.0: ## %entry 1736; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax 1737; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 1738; DARWIN-64-STATIC-NEXT: retq 1739; 1740; DARWIN-64-DYNAMIC-LABEL: qux04: 1741; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1742; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax 1743; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 1744; DARWIN-64-DYNAMIC-NEXT: retq 1745; 1746; DARWIN-64-PIC-LABEL: qux04: 1747; DARWIN-64-PIC: ## %bb.0: ## %entry 1748; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax 1749; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 1750; DARWIN-64-PIC-NEXT: retq 1751 1752entry: 1753 store ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16), ptr @dptr, align 8 1754 ret void 1755} 1756 1757define dso_local void @qux05() nounwind { 1758; LINUX-64-STATIC-LABEL: qux05: 1759; LINUX-64-STATIC: # %bb.0: # %entry 1760; LINUX-64-STATIC-NEXT: movl dsrc+64(%rip), %eax 1761; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 1762; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1763; LINUX-64-STATIC-NEXT: retq 1764; 1765; LINUX-32-STATIC-LABEL: qux05: 1766; LINUX-32-STATIC: # %bb.0: # %entry 1767; LINUX-32-STATIC-NEXT: movl dsrc+64, %eax 1768; LINUX-32-STATIC-NEXT: movl dptr, %ecx 1769; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 1770; LINUX-32-STATIC-NEXT: retl 1771; 1772; LINUX-32-PIC-LABEL: qux05: 1773; LINUX-32-PIC: # %bb.0: # %entry 1774; LINUX-32-PIC-NEXT: calll .L20$pb 1775; LINUX-32-PIC-NEXT: .L20$pb: 1776; LINUX-32-PIC-NEXT: popl %eax 1777; LINUX-32-PIC-NEXT: .Ltmp20: 1778; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp20-.L20$pb), %eax 1779; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax), %ecx 1780; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 1781; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 1782; LINUX-32-PIC-NEXT: retl 1783; 1784; LINUX-64-PIC-LABEL: qux05: 1785; LINUX-64-PIC: # %bb.0: # %entry 1786; LINUX-64-PIC-NEXT: movl .Ldsrc$local+64(%rip), %eax 1787; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 1788; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 1789; LINUX-64-PIC-NEXT: retq 1790; 1791; DARWIN-32-STATIC-LABEL: qux05: 1792; DARWIN-32-STATIC: ## %bb.0: ## %entry 1793; DARWIN-32-STATIC-NEXT: movl _dsrc+64, %eax 1794; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 1795; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 1796; DARWIN-32-STATIC-NEXT: retl 1797; 1798; DARWIN-32-DYNAMIC-LABEL: qux05: 1799; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1800; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64, %eax 1801; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 1802; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 1803; DARWIN-32-DYNAMIC-NEXT: retl 1804; 1805; DARWIN-32-PIC-LABEL: qux05: 1806; DARWIN-32-PIC: ## %bb.0: ## %entry 1807; DARWIN-32-PIC-NEXT: calll L20$pb 1808; DARWIN-32-PIC-NEXT: L20$pb: 1809; DARWIN-32-PIC-NEXT: popl %eax 1810; DARWIN-32-PIC-NEXT: movl (_dsrc-L20$pb)+64(%eax), %ecx 1811; DARWIN-32-PIC-NEXT: movl _dptr-L20$pb(%eax), %eax 1812; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 1813; DARWIN-32-PIC-NEXT: retl 1814; 1815; DARWIN-64-STATIC-LABEL: qux05: 1816; DARWIN-64-STATIC: ## %bb.0: ## %entry 1817; DARWIN-64-STATIC-NEXT: movl _dsrc+64(%rip), %eax 1818; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 1819; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 1820; DARWIN-64-STATIC-NEXT: retq 1821; 1822; DARWIN-64-DYNAMIC-LABEL: qux05: 1823; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1824; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+64(%rip), %eax 1825; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 1826; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 1827; DARWIN-64-DYNAMIC-NEXT: retq 1828; 1829; DARWIN-64-PIC-LABEL: qux05: 1830; DARWIN-64-PIC: ## %bb.0: ## %entry 1831; DARWIN-64-PIC-NEXT: movl _dsrc+64(%rip), %eax 1832; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 1833; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 1834; DARWIN-64-PIC-NEXT: retq 1835 1836entry: 1837 %0 = load ptr, ptr @dptr, align 8 1838 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16), align 32 1839 %2 = getelementptr i32, ptr %0, i64 16 1840 store i32 %1, ptr %2, align 4 1841 ret void 1842} 1843 1844define dso_local void @qux06() nounwind { 1845; LINUX-64-STATIC-LABEL: qux06: 1846; LINUX-64-STATIC: # %bb.0: # %entry 1847; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax 1848; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(%rip) 1849; LINUX-64-STATIC-NEXT: retq 1850; 1851; LINUX-32-STATIC-LABEL: qux06: 1852; LINUX-32-STATIC: # %bb.0: # %entry 1853; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax 1854; LINUX-32-STATIC-NEXT: movl %eax, ldst+64 1855; LINUX-32-STATIC-NEXT: retl 1856; 1857; LINUX-32-PIC-LABEL: qux06: 1858; LINUX-32-PIC: # %bb.0: # %entry 1859; LINUX-32-PIC-NEXT: calll .L21$pb 1860; LINUX-32-PIC-NEXT: .L21$pb: 1861; LINUX-32-PIC-NEXT: popl %eax 1862; LINUX-32-PIC-NEXT: .Ltmp21: 1863; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp21-.L21$pb), %eax 1864; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx 1865; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+64(%eax) 1866; LINUX-32-PIC-NEXT: retl 1867; 1868; LINUX-64-PIC-LABEL: qux06: 1869; LINUX-64-PIC: # %bb.0: # %entry 1870; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax 1871; LINUX-64-PIC-NEXT: movl %eax, ldst+64(%rip) 1872; LINUX-64-PIC-NEXT: retq 1873; 1874; DARWIN-32-STATIC-LABEL: qux06: 1875; DARWIN-32-STATIC: ## %bb.0: ## %entry 1876; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax 1877; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+64 1878; DARWIN-32-STATIC-NEXT: retl 1879; 1880; DARWIN-32-DYNAMIC-LABEL: qux06: 1881; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1882; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax 1883; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+64 1884; DARWIN-32-DYNAMIC-NEXT: retl 1885; 1886; DARWIN-32-PIC-LABEL: qux06: 1887; DARWIN-32-PIC: ## %bb.0: ## %entry 1888; DARWIN-32-PIC-NEXT: calll L21$pb 1889; DARWIN-32-PIC-NEXT: L21$pb: 1890; DARWIN-32-PIC-NEXT: popl %eax 1891; DARWIN-32-PIC-NEXT: movl (_lsrc-L21$pb)+64(%eax), %ecx 1892; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L21$pb)+64(%eax) 1893; DARWIN-32-PIC-NEXT: retl 1894; 1895; DARWIN-64-STATIC-LABEL: qux06: 1896; DARWIN-64-STATIC: ## %bb.0: ## %entry 1897; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax 1898; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+64(%rip) 1899; DARWIN-64-STATIC-NEXT: retq 1900; 1901; DARWIN-64-DYNAMIC-LABEL: qux06: 1902; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1903; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax 1904; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+64(%rip) 1905; DARWIN-64-DYNAMIC-NEXT: retq 1906; 1907; DARWIN-64-PIC-LABEL: qux06: 1908; DARWIN-64-PIC: ## %bb.0: ## %entry 1909; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax 1910; DARWIN-64-PIC-NEXT: movl %eax, _ldst+64(%rip) 1911; DARWIN-64-PIC-NEXT: retq 1912 1913entry: 1914 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16), align 4 1915 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16), align 4 1916 ret void 1917} 1918 1919define dso_local void @qux07() nounwind { 1920; LINUX-64-STATIC-LABEL: qux07: 1921; LINUX-64-STATIC: # %bb.0: # %entry 1922; LINUX-64-STATIC-NEXT: movq $ldst+64, lptr(%rip) 1923; LINUX-64-STATIC-NEXT: retq 1924; 1925; LINUX-32-STATIC-LABEL: qux07: 1926; LINUX-32-STATIC: # %bb.0: # %entry 1927; LINUX-32-STATIC-NEXT: movl $ldst+64, lptr 1928; LINUX-32-STATIC-NEXT: retl 1929; 1930; LINUX-32-PIC-LABEL: qux07: 1931; LINUX-32-PIC: # %bb.0: # %entry 1932; LINUX-32-PIC-NEXT: calll .L22$pb 1933; LINUX-32-PIC-NEXT: .L22$pb: 1934; LINUX-32-PIC-NEXT: popl %eax 1935; LINUX-32-PIC-NEXT: .Ltmp22: 1936; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp22-.L22$pb), %eax 1937; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %ecx 1938; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 1939; LINUX-32-PIC-NEXT: retl 1940; 1941; LINUX-64-PIC-LABEL: qux07: 1942; LINUX-64-PIC: # %bb.0: # %entry 1943; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax 1944; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 1945; LINUX-64-PIC-NEXT: retq 1946; 1947; DARWIN-32-STATIC-LABEL: qux07: 1948; DARWIN-32-STATIC: ## %bb.0: ## %entry 1949; DARWIN-32-STATIC-NEXT: movl $_ldst+64, _lptr 1950; DARWIN-32-STATIC-NEXT: retl 1951; 1952; DARWIN-32-DYNAMIC-LABEL: qux07: 1953; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 1954; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, _lptr 1955; DARWIN-32-DYNAMIC-NEXT: retl 1956; 1957; DARWIN-32-PIC-LABEL: qux07: 1958; DARWIN-32-PIC: ## %bb.0: ## %entry 1959; DARWIN-32-PIC-NEXT: calll L22$pb 1960; DARWIN-32-PIC-NEXT: L22$pb: 1961; DARWIN-32-PIC-NEXT: popl %eax 1962; DARWIN-32-PIC-NEXT: leal (_ldst-L22$pb)+64(%eax), %ecx 1963; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L22$pb(%eax) 1964; DARWIN-32-PIC-NEXT: retl 1965; 1966; DARWIN-64-STATIC-LABEL: qux07: 1967; DARWIN-64-STATIC: ## %bb.0: ## %entry 1968; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax 1969; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 1970; DARWIN-64-STATIC-NEXT: retq 1971; 1972; DARWIN-64-DYNAMIC-LABEL: qux07: 1973; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 1974; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax 1975; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 1976; DARWIN-64-DYNAMIC-NEXT: retq 1977; 1978; DARWIN-64-PIC-LABEL: qux07: 1979; DARWIN-64-PIC: ## %bb.0: ## %entry 1980; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax 1981; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 1982; DARWIN-64-PIC-NEXT: retq 1983 1984entry: 1985 store ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16), ptr @lptr, align 8 1986 ret void 1987} 1988 1989define dso_local void @qux08() nounwind { 1990; LINUX-64-STATIC-LABEL: qux08: 1991; LINUX-64-STATIC: # %bb.0: # %entry 1992; LINUX-64-STATIC-NEXT: movl lsrc+64(%rip), %eax 1993; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 1994; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx) 1995; LINUX-64-STATIC-NEXT: retq 1996; 1997; LINUX-32-STATIC-LABEL: qux08: 1998; LINUX-32-STATIC: # %bb.0: # %entry 1999; LINUX-32-STATIC-NEXT: movl lsrc+64, %eax 2000; LINUX-32-STATIC-NEXT: movl lptr, %ecx 2001; LINUX-32-STATIC-NEXT: movl %eax, 64(%ecx) 2002; LINUX-32-STATIC-NEXT: retl 2003; 2004; LINUX-32-PIC-LABEL: qux08: 2005; LINUX-32-PIC: # %bb.0: # %entry 2006; LINUX-32-PIC-NEXT: calll .L23$pb 2007; LINUX-32-PIC-NEXT: .L23$pb: 2008; LINUX-32-PIC-NEXT: popl %eax 2009; LINUX-32-PIC-NEXT: .Ltmp23: 2010; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp23-.L23$pb), %eax 2011; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax), %ecx 2012; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 2013; LINUX-32-PIC-NEXT: movl %ecx, 64(%eax) 2014; LINUX-32-PIC-NEXT: retl 2015; 2016; LINUX-64-PIC-LABEL: qux08: 2017; LINUX-64-PIC: # %bb.0: # %entry 2018; LINUX-64-PIC-NEXT: movl lsrc+64(%rip), %eax 2019; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 2020; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx) 2021; LINUX-64-PIC-NEXT: retq 2022; 2023; DARWIN-32-STATIC-LABEL: qux08: 2024; DARWIN-32-STATIC: ## %bb.0: ## %entry 2025; DARWIN-32-STATIC-NEXT: movl _lsrc+64, %eax 2026; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 2027; DARWIN-32-STATIC-NEXT: movl %eax, 64(%ecx) 2028; DARWIN-32-STATIC-NEXT: retl 2029; 2030; DARWIN-32-DYNAMIC-LABEL: qux08: 2031; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2032; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64, %eax 2033; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 2034; DARWIN-32-DYNAMIC-NEXT: movl %eax, 64(%ecx) 2035; DARWIN-32-DYNAMIC-NEXT: retl 2036; 2037; DARWIN-32-PIC-LABEL: qux08: 2038; DARWIN-32-PIC: ## %bb.0: ## %entry 2039; DARWIN-32-PIC-NEXT: calll L23$pb 2040; DARWIN-32-PIC-NEXT: L23$pb: 2041; DARWIN-32-PIC-NEXT: popl %eax 2042; DARWIN-32-PIC-NEXT: movl (_lsrc-L23$pb)+64(%eax), %ecx 2043; DARWIN-32-PIC-NEXT: movl _lptr-L23$pb(%eax), %eax 2044; DARWIN-32-PIC-NEXT: movl %ecx, 64(%eax) 2045; DARWIN-32-PIC-NEXT: retl 2046; 2047; DARWIN-64-STATIC-LABEL: qux08: 2048; DARWIN-64-STATIC: ## %bb.0: ## %entry 2049; DARWIN-64-STATIC-NEXT: movl _lsrc+64(%rip), %eax 2050; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 2051; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx) 2052; DARWIN-64-STATIC-NEXT: retq 2053; 2054; DARWIN-64-DYNAMIC-LABEL: qux08: 2055; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2056; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+64(%rip), %eax 2057; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 2058; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx) 2059; DARWIN-64-DYNAMIC-NEXT: retq 2060; 2061; DARWIN-64-PIC-LABEL: qux08: 2062; DARWIN-64-PIC: ## %bb.0: ## %entry 2063; DARWIN-64-PIC-NEXT: movl _lsrc+64(%rip), %eax 2064; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 2065; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx) 2066; DARWIN-64-PIC-NEXT: retq 2067 2068entry: 2069 %0 = load ptr, ptr @lptr, align 8 2070 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16), align 4 2071 %2 = getelementptr i32, ptr %0, i64 16 2072 store i32 %1, ptr %2, align 4 2073 ret void 2074} 2075 2076define dso_local void @ind00(i64 %i) nounwind { 2077; LINUX-64-STATIC-LABEL: ind00: 2078; LINUX-64-STATIC: # %bb.0: # %entry 2079; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 2080; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2081; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 2082; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2083; LINUX-64-STATIC-NEXT: retq 2084; 2085; LINUX-32-STATIC-LABEL: ind00: 2086; LINUX-32-STATIC: # %bb.0: # %entry 2087; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2088; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx 2089; LINUX-32-STATIC-NEXT: movl %ecx, dst(,%eax,4) 2090; LINUX-32-STATIC-NEXT: retl 2091; 2092; LINUX-32-PIC-LABEL: ind00: 2093; LINUX-32-PIC: # %bb.0: # %entry 2094; LINUX-32-PIC-NEXT: calll .L24$pb 2095; LINUX-32-PIC-NEXT: .L24$pb: 2096; LINUX-32-PIC-NEXT: popl %eax 2097; LINUX-32-PIC-NEXT: .Ltmp24: 2098; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp24-.L24$pb), %eax 2099; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2100; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 2101; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2102; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 2103; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2104; LINUX-32-PIC-NEXT: retl 2105; 2106; LINUX-64-PIC-LABEL: ind00: 2107; LINUX-64-PIC: # %bb.0: # %entry 2108; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 2109; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2110; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 2111; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2112; LINUX-64-PIC-NEXT: retq 2113; 2114; DARWIN-32-STATIC-LABEL: ind00: 2115; DARWIN-32-STATIC: ## %bb.0: ## %entry 2116; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2117; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx 2118; DARWIN-32-STATIC-NEXT: movl %ecx, _dst(,%eax,4) 2119; DARWIN-32-STATIC-NEXT: retl 2120; 2121; DARWIN-32-DYNAMIC-LABEL: ind00: 2122; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2123; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2124; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 2125; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2126; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 2127; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2128; DARWIN-32-DYNAMIC-NEXT: retl 2129; 2130; DARWIN-32-PIC-LABEL: ind00: 2131; DARWIN-32-PIC: ## %bb.0: ## %entry 2132; DARWIN-32-PIC-NEXT: calll L24$pb 2133; DARWIN-32-PIC-NEXT: L24$pb: 2134; DARWIN-32-PIC-NEXT: popl %eax 2135; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2136; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L24$pb(%eax), %edx 2137; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2138; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L24$pb(%eax), %eax 2139; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2140; DARWIN-32-PIC-NEXT: retl 2141; 2142; DARWIN-64-STATIC-LABEL: ind00: 2143; DARWIN-64-STATIC: ## %bb.0: ## %entry 2144; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2145; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2146; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2147; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2148; DARWIN-64-STATIC-NEXT: retq 2149; 2150; DARWIN-64-DYNAMIC-LABEL: ind00: 2151; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2152; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2153; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2154; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2155; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2156; DARWIN-64-DYNAMIC-NEXT: retq 2157; 2158; DARWIN-64-PIC-LABEL: ind00: 2159; DARWIN-64-PIC: ## %bb.0: ## %entry 2160; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2161; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2162; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 2163; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2164; DARWIN-64-PIC-NEXT: retq 2165 2166entry: 2167 %0 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %i 2168 %1 = load i32, ptr %0, align 4 2169 %2 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %i 2170 store i32 %1, ptr %2, align 4 2171 ret void 2172} 2173 2174define dso_local void @ixd00(i64 %i) nounwind { 2175; LINUX-64-STATIC-LABEL: ixd00: 2176; LINUX-64-STATIC: # %bb.0: # %entry 2177; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2178; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2179; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 2180; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2181; LINUX-64-STATIC-NEXT: retq 2182; 2183; LINUX-32-STATIC-LABEL: ixd00: 2184; LINUX-32-STATIC: # %bb.0: # %entry 2185; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2186; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx 2187; LINUX-32-STATIC-NEXT: movl %ecx, xdst(,%eax,4) 2188; LINUX-32-STATIC-NEXT: retl 2189; 2190; LINUX-32-PIC-LABEL: ixd00: 2191; LINUX-32-PIC: # %bb.0: # %entry 2192; LINUX-32-PIC-NEXT: calll .L25$pb 2193; LINUX-32-PIC-NEXT: .L25$pb: 2194; LINUX-32-PIC-NEXT: popl %eax 2195; LINUX-32-PIC-NEXT: .Ltmp25: 2196; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp25-.L25$pb), %eax 2197; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2198; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 2199; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2200; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 2201; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2202; LINUX-32-PIC-NEXT: retl 2203; 2204; LINUX-64-PIC-LABEL: ixd00: 2205; LINUX-64-PIC: # %bb.0: # %entry 2206; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2207; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2208; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 2209; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2210; LINUX-64-PIC-NEXT: retq 2211; 2212; DARWIN-32-STATIC-LABEL: ixd00: 2213; DARWIN-32-STATIC: ## %bb.0: ## %entry 2214; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2215; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx 2216; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst(,%eax,4) 2217; DARWIN-32-STATIC-NEXT: retl 2218; 2219; DARWIN-32-DYNAMIC-LABEL: ixd00: 2220; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2221; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2222; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 2223; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2224; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx 2225; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2226; DARWIN-32-DYNAMIC-NEXT: retl 2227; 2228; DARWIN-32-PIC-LABEL: ixd00: 2229; DARWIN-32-PIC: ## %bb.0: ## %entry 2230; DARWIN-32-PIC-NEXT: calll L25$pb 2231; DARWIN-32-PIC-NEXT: L25$pb: 2232; DARWIN-32-PIC-NEXT: popl %eax 2233; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2234; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L25$pb(%eax), %edx 2235; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2236; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L25$pb(%eax), %eax 2237; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2238; DARWIN-32-PIC-NEXT: retl 2239; 2240; DARWIN-64-STATIC-LABEL: ixd00: 2241; DARWIN-64-STATIC: ## %bb.0: ## %entry 2242; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2243; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2244; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2245; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2246; DARWIN-64-STATIC-NEXT: retq 2247; 2248; DARWIN-64-DYNAMIC-LABEL: ixd00: 2249; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2250; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2251; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2252; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2253; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2254; DARWIN-64-DYNAMIC-NEXT: retq 2255; 2256; DARWIN-64-PIC-LABEL: ixd00: 2257; DARWIN-64-PIC: ## %bb.0: ## %entry 2258; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2259; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2260; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 2261; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2262; DARWIN-64-PIC-NEXT: retq 2263 2264entry: 2265 %0 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %i 2266 %1 = load i32, ptr %0, align 4 2267 %2 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %i 2268 store i32 %1, ptr %2, align 4 2269 ret void 2270} 2271 2272define dso_local void @ind01(i64 %i) nounwind { 2273; LINUX-64-STATIC-LABEL: ind01: 2274; LINUX-64-STATIC: # %bb.0: # %entry 2275; LINUX-64-STATIC-NEXT: shlq $2, %rdi 2276; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rdi 2277; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2278; LINUX-64-STATIC-NEXT: movq %rdi, (%rax) 2279; LINUX-64-STATIC-NEXT: retq 2280; 2281; LINUX-32-STATIC-LABEL: ind01: 2282; LINUX-32-STATIC: # %bb.0: # %entry 2283; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2284; LINUX-32-STATIC-NEXT: leal dst(,%eax,4), %eax 2285; LINUX-32-STATIC-NEXT: movl %eax, ptr 2286; LINUX-32-STATIC-NEXT: retl 2287; 2288; LINUX-32-PIC-LABEL: ind01: 2289; LINUX-32-PIC: # %bb.0: # %entry 2290; LINUX-32-PIC-NEXT: calll .L26$pb 2291; LINUX-32-PIC-NEXT: .L26$pb: 2292; LINUX-32-PIC-NEXT: popl %eax 2293; LINUX-32-PIC-NEXT: .Ltmp26: 2294; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp26-.L26$pb), %eax 2295; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2296; LINUX-32-PIC-NEXT: shll $2, %ecx 2297; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx 2298; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2299; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2300; LINUX-32-PIC-NEXT: retl 2301; 2302; LINUX-64-PIC-LABEL: ind01: 2303; LINUX-64-PIC: # %bb.0: # %entry 2304; LINUX-64-PIC-NEXT: shlq $2, %rdi 2305; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rdi 2306; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2307; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2308; LINUX-64-PIC-NEXT: retq 2309; 2310; DARWIN-32-STATIC-LABEL: ind01: 2311; DARWIN-32-STATIC: ## %bb.0: ## %entry 2312; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2313; DARWIN-32-STATIC-NEXT: leal _dst(,%eax,4), %eax 2314; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 2315; DARWIN-32-STATIC-NEXT: retl 2316; 2317; DARWIN-32-DYNAMIC-LABEL: ind01: 2318; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2319; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2320; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax 2321; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 2322; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 2323; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 2324; DARWIN-32-DYNAMIC-NEXT: retl 2325; 2326; DARWIN-32-PIC-LABEL: ind01: 2327; DARWIN-32-PIC: ## %bb.0: ## %entry 2328; DARWIN-32-PIC-NEXT: calll L26$pb 2329; DARWIN-32-PIC-NEXT: L26$pb: 2330; DARWIN-32-PIC-NEXT: popl %eax 2331; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2332; DARWIN-32-PIC-NEXT: shll $2, %ecx 2333; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L26$pb(%eax), %ecx 2334; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L26$pb(%eax), %eax 2335; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 2336; DARWIN-32-PIC-NEXT: retl 2337; 2338; DARWIN-64-STATIC-LABEL: ind01: 2339; DARWIN-64-STATIC: ## %bb.0: ## %entry 2340; DARWIN-64-STATIC-NEXT: shlq $2, %rdi 2341; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2342; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2343; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax) 2344; DARWIN-64-STATIC-NEXT: retq 2345; 2346; DARWIN-64-DYNAMIC-LABEL: ind01: 2347; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2348; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi 2349; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2350; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2351; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax) 2352; DARWIN-64-DYNAMIC-NEXT: retq 2353; 2354; DARWIN-64-PIC-LABEL: ind01: 2355; DARWIN-64-PIC: ## %bb.0: ## %entry 2356; DARWIN-64-PIC-NEXT: shlq $2, %rdi 2357; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rdi 2358; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2359; DARWIN-64-PIC-NEXT: movq %rdi, (%rax) 2360; DARWIN-64-PIC-NEXT: retq 2361 2362entry: 2363 %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %i 2364 store ptr %0, ptr @ptr, align 8 2365 ret void 2366} 2367 2368define dso_local void @ixd01(i64 %i) nounwind { 2369; LINUX-64-STATIC-LABEL: ixd01: 2370; LINUX-64-STATIC: # %bb.0: # %entry 2371; LINUX-64-STATIC-NEXT: shlq $2, %rdi 2372; LINUX-64-STATIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi 2373; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2374; LINUX-64-STATIC-NEXT: movq %rdi, (%rax) 2375; LINUX-64-STATIC-NEXT: retq 2376; 2377; LINUX-32-STATIC-LABEL: ixd01: 2378; LINUX-32-STATIC: # %bb.0: # %entry 2379; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2380; LINUX-32-STATIC-NEXT: leal xdst(,%eax,4), %eax 2381; LINUX-32-STATIC-NEXT: movl %eax, ptr 2382; LINUX-32-STATIC-NEXT: retl 2383; 2384; LINUX-32-PIC-LABEL: ixd01: 2385; LINUX-32-PIC: # %bb.0: # %entry 2386; LINUX-32-PIC-NEXT: calll .L27$pb 2387; LINUX-32-PIC-NEXT: .L27$pb: 2388; LINUX-32-PIC-NEXT: popl %eax 2389; LINUX-32-PIC-NEXT: .Ltmp27: 2390; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp27-.L27$pb), %eax 2391; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2392; LINUX-32-PIC-NEXT: shll $2, %ecx 2393; LINUX-32-PIC-NEXT: addl xdst@GOT(%eax), %ecx 2394; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2395; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 2396; LINUX-32-PIC-NEXT: retl 2397; 2398; LINUX-64-PIC-LABEL: ixd01: 2399; LINUX-64-PIC: # %bb.0: # %entry 2400; LINUX-64-PIC-NEXT: shlq $2, %rdi 2401; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rdi 2402; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 2403; LINUX-64-PIC-NEXT: movq %rdi, (%rax) 2404; LINUX-64-PIC-NEXT: retq 2405; 2406; DARWIN-32-STATIC-LABEL: ixd01: 2407; DARWIN-32-STATIC: ## %bb.0: ## %entry 2408; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2409; DARWIN-32-STATIC-NEXT: leal _xdst(,%eax,4), %eax 2410; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 2411; DARWIN-32-STATIC-NEXT: retl 2412; 2413; DARWIN-32-DYNAMIC-LABEL: ixd01: 2414; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2415; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2416; DARWIN-32-DYNAMIC-NEXT: shll $2, %eax 2417; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax 2418; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 2419; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 2420; DARWIN-32-DYNAMIC-NEXT: retl 2421; 2422; DARWIN-32-PIC-LABEL: ixd01: 2423; DARWIN-32-PIC: ## %bb.0: ## %entry 2424; DARWIN-32-PIC-NEXT: calll L27$pb 2425; DARWIN-32-PIC-NEXT: L27$pb: 2426; DARWIN-32-PIC-NEXT: popl %eax 2427; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2428; DARWIN-32-PIC-NEXT: shll $2, %ecx 2429; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L27$pb(%eax), %ecx 2430; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L27$pb(%eax), %eax 2431; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 2432; DARWIN-32-PIC-NEXT: retl 2433; 2434; DARWIN-64-STATIC-LABEL: ixd01: 2435; DARWIN-64-STATIC: ## %bb.0: ## %entry 2436; DARWIN-64-STATIC-NEXT: shlq $2, %rdi 2437; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2438; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2439; DARWIN-64-STATIC-NEXT: movq %rdi, (%rax) 2440; DARWIN-64-STATIC-NEXT: retq 2441; 2442; DARWIN-64-DYNAMIC-LABEL: ixd01: 2443; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2444; DARWIN-64-DYNAMIC-NEXT: shlq $2, %rdi 2445; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2446; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2447; DARWIN-64-DYNAMIC-NEXT: movq %rdi, (%rax) 2448; DARWIN-64-DYNAMIC-NEXT: retq 2449; 2450; DARWIN-64-PIC-LABEL: ixd01: 2451; DARWIN-64-PIC: ## %bb.0: ## %entry 2452; DARWIN-64-PIC-NEXT: shlq $2, %rdi 2453; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rdi 2454; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 2455; DARWIN-64-PIC-NEXT: movq %rdi, (%rax) 2456; DARWIN-64-PIC-NEXT: retq 2457 2458entry: 2459 %0 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %i 2460 store ptr %0, ptr @ptr, align 8 2461 ret void 2462} 2463 2464define dso_local void @ind02(i64 %i) nounwind { 2465; LINUX-64-STATIC-LABEL: ind02: 2466; LINUX-64-STATIC: # %bb.0: # %entry 2467; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 2468; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2469; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2470; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 2471; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2472; LINUX-64-STATIC-NEXT: retq 2473; 2474; LINUX-32-STATIC-LABEL: ind02: 2475; LINUX-32-STATIC: # %bb.0: # %entry 2476; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2477; LINUX-32-STATIC-NEXT: movl src(,%eax,4), %ecx 2478; LINUX-32-STATIC-NEXT: movl ptr, %edx 2479; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2480; LINUX-32-STATIC-NEXT: retl 2481; 2482; LINUX-32-PIC-LABEL: ind02: 2483; LINUX-32-PIC: # %bb.0: # %entry 2484; LINUX-32-PIC-NEXT: calll .L28$pb 2485; LINUX-32-PIC-NEXT: .L28$pb: 2486; LINUX-32-PIC-NEXT: popl %eax 2487; LINUX-32-PIC-NEXT: .Ltmp28: 2488; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp28-.L28$pb), %eax 2489; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2490; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 2491; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2492; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2493; LINUX-32-PIC-NEXT: movl (%eax), %eax 2494; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2495; LINUX-32-PIC-NEXT: retl 2496; 2497; LINUX-64-PIC-LABEL: ind02: 2498; LINUX-64-PIC: # %bb.0: # %entry 2499; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 2500; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2501; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2502; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2503; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2504; LINUX-64-PIC-NEXT: retq 2505; 2506; DARWIN-32-STATIC-LABEL: ind02: 2507; DARWIN-32-STATIC: ## %bb.0: ## %entry 2508; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2509; DARWIN-32-STATIC-NEXT: movl _src(,%eax,4), %ecx 2510; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 2511; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2512; DARWIN-32-STATIC-NEXT: retl 2513; 2514; DARWIN-32-DYNAMIC-LABEL: ind02: 2515; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2516; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2517; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 2518; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2519; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 2520; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 2521; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2522; DARWIN-32-DYNAMIC-NEXT: retl 2523; 2524; DARWIN-32-PIC-LABEL: ind02: 2525; DARWIN-32-PIC: ## %bb.0: ## %entry 2526; DARWIN-32-PIC-NEXT: calll L28$pb 2527; DARWIN-32-PIC-NEXT: L28$pb: 2528; DARWIN-32-PIC-NEXT: popl %eax 2529; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2530; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L28$pb(%eax), %edx 2531; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2532; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L28$pb(%eax), %eax 2533; DARWIN-32-PIC-NEXT: movl (%eax), %eax 2534; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2535; DARWIN-32-PIC-NEXT: retl 2536; 2537; DARWIN-64-STATIC-LABEL: ind02: 2538; DARWIN-64-STATIC: ## %bb.0: ## %entry 2539; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2540; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2541; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2542; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 2543; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2544; DARWIN-64-STATIC-NEXT: retq 2545; 2546; DARWIN-64-DYNAMIC-LABEL: ind02: 2547; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2548; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2549; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2550; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2551; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 2552; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2553; DARWIN-64-DYNAMIC-NEXT: retq 2554; 2555; DARWIN-64-PIC-LABEL: ind02: 2556; DARWIN-64-PIC: ## %bb.0: ## %entry 2557; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 2558; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2559; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2560; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 2561; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2562; DARWIN-64-PIC-NEXT: retq 2563 2564entry: 2565 %0 = load ptr, ptr @ptr, align 8 2566 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %i 2567 %2 = load i32, ptr %1, align 4 2568 %3 = getelementptr i32, ptr %0, i64 %i 2569 store i32 %2, ptr %3, align 4 2570 ret void 2571} 2572 2573define dso_local void @ixd02(i64 %i) nounwind { 2574; LINUX-64-STATIC-LABEL: ixd02: 2575; LINUX-64-STATIC: # %bb.0: # %entry 2576; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2577; LINUX-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2578; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2579; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 2580; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2581; LINUX-64-STATIC-NEXT: retq 2582; 2583; LINUX-32-STATIC-LABEL: ixd02: 2584; LINUX-32-STATIC: # %bb.0: # %entry 2585; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2586; LINUX-32-STATIC-NEXT: movl xsrc(,%eax,4), %ecx 2587; LINUX-32-STATIC-NEXT: movl ptr, %edx 2588; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2589; LINUX-32-STATIC-NEXT: retl 2590; 2591; LINUX-32-PIC-LABEL: ixd02: 2592; LINUX-32-PIC: # %bb.0: # %entry 2593; LINUX-32-PIC-NEXT: calll .L29$pb 2594; LINUX-32-PIC-NEXT: .L29$pb: 2595; LINUX-32-PIC-NEXT: popl %eax 2596; LINUX-32-PIC-NEXT: .Ltmp29: 2597; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp29-.L29$pb), %eax 2598; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2599; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 2600; LINUX-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2601; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 2602; LINUX-32-PIC-NEXT: movl (%eax), %eax 2603; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2604; LINUX-32-PIC-NEXT: retl 2605; 2606; LINUX-64-PIC-LABEL: ixd02: 2607; LINUX-64-PIC: # %bb.0: # %entry 2608; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 2609; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2610; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 2611; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 2612; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2613; LINUX-64-PIC-NEXT: retq 2614; 2615; DARWIN-32-STATIC-LABEL: ixd02: 2616; DARWIN-32-STATIC: ## %bb.0: ## %entry 2617; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2618; DARWIN-32-STATIC-NEXT: movl _xsrc(,%eax,4), %ecx 2619; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 2620; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2621; DARWIN-32-STATIC-NEXT: retl 2622; 2623; DARWIN-32-DYNAMIC-LABEL: ixd02: 2624; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2625; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2626; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 2627; DARWIN-32-DYNAMIC-NEXT: movl (%ecx,%eax,4), %ecx 2628; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 2629; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 2630; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2631; DARWIN-32-DYNAMIC-NEXT: retl 2632; 2633; DARWIN-32-PIC-LABEL: ixd02: 2634; DARWIN-32-PIC: ## %bb.0: ## %entry 2635; DARWIN-32-PIC-NEXT: calll L29$pb 2636; DARWIN-32-PIC-NEXT: L29$pb: 2637; DARWIN-32-PIC-NEXT: popl %eax 2638; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2639; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L29$pb(%eax), %edx 2640; DARWIN-32-PIC-NEXT: movl (%edx,%ecx,4), %edx 2641; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L29$pb(%eax), %eax 2642; DARWIN-32-PIC-NEXT: movl (%eax), %eax 2643; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2644; DARWIN-32-PIC-NEXT: retl 2645; 2646; DARWIN-64-STATIC-LABEL: ixd02: 2647; DARWIN-64-STATIC: ## %bb.0: ## %entry 2648; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2649; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2650; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2651; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 2652; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2653; DARWIN-64-STATIC-NEXT: retq 2654; 2655; DARWIN-64-DYNAMIC-LABEL: ixd02: 2656; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2657; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2658; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2659; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2660; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 2661; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2662; DARWIN-64-DYNAMIC-NEXT: retq 2663; 2664; DARWIN-64-PIC-LABEL: ixd02: 2665; DARWIN-64-PIC: ## %bb.0: ## %entry 2666; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 2667; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2668; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 2669; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 2670; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2671; DARWIN-64-PIC-NEXT: retq 2672 2673entry: 2674 %0 = load ptr, ptr @ptr, align 8 2675 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %i 2676 %2 = load i32, ptr %1, align 4 2677 %3 = getelementptr i32, ptr %0, i64 %i 2678 store i32 %2, ptr %3, align 4 2679 ret void 2680} 2681 2682define dso_local void @ind03(i64 %i) nounwind { 2683; LINUX-64-STATIC-LABEL: ind03: 2684; LINUX-64-STATIC: # %bb.0: # %entry 2685; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax 2686; LINUX-64-STATIC-NEXT: movl %eax, ddst(,%rdi,4) 2687; LINUX-64-STATIC-NEXT: retq 2688; 2689; LINUX-32-STATIC-LABEL: ind03: 2690; LINUX-32-STATIC: # %bb.0: # %entry 2691; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2692; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx 2693; LINUX-32-STATIC-NEXT: movl %ecx, ddst(,%eax,4) 2694; LINUX-32-STATIC-NEXT: retl 2695; 2696; LINUX-32-PIC-LABEL: ind03: 2697; LINUX-32-PIC: # %bb.0: # %entry 2698; LINUX-32-PIC-NEXT: calll .L30$pb 2699; LINUX-32-PIC-NEXT: .L30$pb: 2700; LINUX-32-PIC-NEXT: popl %eax 2701; LINUX-32-PIC-NEXT: .Ltmp30: 2702; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp30-.L30$pb), %eax 2703; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2704; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx 2705; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF(%eax,%ecx,4) 2706; LINUX-32-PIC-NEXT: retl 2707; 2708; LINUX-64-PIC-LABEL: ind03: 2709; LINUX-64-PIC: # %bb.0: # %entry 2710; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 2711; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2712; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx 2713; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2714; LINUX-64-PIC-NEXT: retq 2715; 2716; DARWIN-32-STATIC-LABEL: ind03: 2717; DARWIN-32-STATIC: ## %bb.0: ## %entry 2718; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2719; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx 2720; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst(,%eax,4) 2721; DARWIN-32-STATIC-NEXT: retl 2722; 2723; DARWIN-32-DYNAMIC-LABEL: ind03: 2724; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2725; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2726; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx 2727; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst(,%eax,4) 2728; DARWIN-32-DYNAMIC-NEXT: retl 2729; 2730; DARWIN-32-PIC-LABEL: ind03: 2731; DARWIN-32-PIC: ## %bb.0: ## %entry 2732; DARWIN-32-PIC-NEXT: calll L30$pb 2733; DARWIN-32-PIC-NEXT: L30$pb: 2734; DARWIN-32-PIC-NEXT: popl %eax 2735; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2736; DARWIN-32-PIC-NEXT: movl _dsrc-L30$pb(%eax,%ecx,4), %edx 2737; DARWIN-32-PIC-NEXT: movl %edx, _ddst-L30$pb(%eax,%ecx,4) 2738; DARWIN-32-PIC-NEXT: retl 2739; 2740; DARWIN-64-STATIC-LABEL: ind03: 2741; DARWIN-64-STATIC: ## %bb.0: ## %entry 2742; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 2743; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2744; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 2745; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2746; DARWIN-64-STATIC-NEXT: retq 2747; 2748; DARWIN-64-DYNAMIC-LABEL: ind03: 2749; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2750; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 2751; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2752; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 2753; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2754; DARWIN-64-DYNAMIC-NEXT: retq 2755; 2756; DARWIN-64-PIC-LABEL: ind03: 2757; DARWIN-64-PIC: ## %bb.0: ## %entry 2758; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 2759; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2760; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 2761; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2762; DARWIN-64-PIC-NEXT: retq 2763 2764entry: 2765 %0 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %i 2766 %1 = load i32, ptr %0, align 4 2767 %2 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %i 2768 store i32 %1, ptr %2, align 4 2769 ret void 2770} 2771 2772define dso_local void @ind04(i64 %i) nounwind { 2773; LINUX-64-STATIC-LABEL: ind04: 2774; LINUX-64-STATIC: # %bb.0: # %entry 2775; LINUX-64-STATIC-NEXT: leaq ddst(,%rdi,4), %rax 2776; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 2777; LINUX-64-STATIC-NEXT: retq 2778; 2779; LINUX-32-STATIC-LABEL: ind04: 2780; LINUX-32-STATIC: # %bb.0: # %entry 2781; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2782; LINUX-32-STATIC-NEXT: leal ddst(,%eax,4), %eax 2783; LINUX-32-STATIC-NEXT: movl %eax, dptr 2784; LINUX-32-STATIC-NEXT: retl 2785; 2786; LINUX-32-PIC-LABEL: ind04: 2787; LINUX-32-PIC: # %bb.0: # %entry 2788; LINUX-32-PIC-NEXT: calll .L31$pb 2789; LINUX-32-PIC-NEXT: .L31$pb: 2790; LINUX-32-PIC-NEXT: popl %eax 2791; LINUX-32-PIC-NEXT: .Ltmp31: 2792; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp31-.L31$pb), %eax 2793; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2794; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax,%ecx,4), %ecx 2795; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 2796; LINUX-32-PIC-NEXT: retl 2797; 2798; LINUX-64-PIC-LABEL: ind04: 2799; LINUX-64-PIC: # %bb.0: # %entry 2800; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 2801; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 2802; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 2803; LINUX-64-PIC-NEXT: retq 2804; 2805; DARWIN-32-STATIC-LABEL: ind04: 2806; DARWIN-32-STATIC: ## %bb.0: ## %entry 2807; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2808; DARWIN-32-STATIC-NEXT: leal _ddst(,%eax,4), %eax 2809; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 2810; DARWIN-32-STATIC-NEXT: retl 2811; 2812; DARWIN-32-DYNAMIC-LABEL: ind04: 2813; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2814; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2815; DARWIN-32-DYNAMIC-NEXT: leal _ddst(,%eax,4), %eax 2816; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 2817; DARWIN-32-DYNAMIC-NEXT: retl 2818; 2819; DARWIN-32-PIC-LABEL: ind04: 2820; DARWIN-32-PIC: ## %bb.0: ## %entry 2821; DARWIN-32-PIC-NEXT: calll L31$pb 2822; DARWIN-32-PIC-NEXT: L31$pb: 2823; DARWIN-32-PIC-NEXT: popl %eax 2824; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2825; DARWIN-32-PIC-NEXT: leal _ddst-L31$pb(%eax,%ecx,4), %ecx 2826; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L31$pb(%eax) 2827; DARWIN-32-PIC-NEXT: retl 2828; 2829; DARWIN-64-STATIC-LABEL: ind04: 2830; DARWIN-64-STATIC: ## %bb.0: ## %entry 2831; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 2832; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax 2833; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 2834; DARWIN-64-STATIC-NEXT: retq 2835; 2836; DARWIN-64-DYNAMIC-LABEL: ind04: 2837; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2838; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 2839; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax 2840; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 2841; DARWIN-64-DYNAMIC-NEXT: retq 2842; 2843; DARWIN-64-PIC-LABEL: ind04: 2844; DARWIN-64-PIC: ## %bb.0: ## %entry 2845; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 2846; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 2847; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 2848; DARWIN-64-PIC-NEXT: retq 2849 2850entry: 2851 %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %i 2852 store ptr %0, ptr @dptr, align 8 2853 ret void 2854} 2855 2856define dso_local void @ind05(i64 %i) nounwind { 2857; LINUX-64-STATIC-LABEL: ind05: 2858; LINUX-64-STATIC: # %bb.0: # %entry 2859; LINUX-64-STATIC-NEXT: movl dsrc(,%rdi,4), %eax 2860; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 2861; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2862; LINUX-64-STATIC-NEXT: retq 2863; 2864; LINUX-32-STATIC-LABEL: ind05: 2865; LINUX-32-STATIC: # %bb.0: # %entry 2866; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2867; LINUX-32-STATIC-NEXT: movl dsrc(,%eax,4), %ecx 2868; LINUX-32-STATIC-NEXT: movl dptr, %edx 2869; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2870; LINUX-32-STATIC-NEXT: retl 2871; 2872; LINUX-32-PIC-LABEL: ind05: 2873; LINUX-32-PIC: # %bb.0: # %entry 2874; LINUX-32-PIC-NEXT: calll .L32$pb 2875; LINUX-32-PIC-NEXT: .L32$pb: 2876; LINUX-32-PIC-NEXT: popl %eax 2877; LINUX-32-PIC-NEXT: .Ltmp32: 2878; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp32-.L32$pb), %eax 2879; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2880; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF(%eax,%ecx,4), %edx 2881; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 2882; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2883; LINUX-32-PIC-NEXT: retl 2884; 2885; LINUX-64-PIC-LABEL: ind05: 2886; LINUX-64-PIC: # %bb.0: # %entry 2887; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 2888; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2889; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 2890; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2891; LINUX-64-PIC-NEXT: retq 2892; 2893; DARWIN-32-STATIC-LABEL: ind05: 2894; DARWIN-32-STATIC: ## %bb.0: ## %entry 2895; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2896; DARWIN-32-STATIC-NEXT: movl _dsrc(,%eax,4), %ecx 2897; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 2898; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 2899; DARWIN-32-STATIC-NEXT: retl 2900; 2901; DARWIN-32-DYNAMIC-LABEL: ind05: 2902; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2903; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2904; DARWIN-32-DYNAMIC-NEXT: movl _dsrc(,%eax,4), %ecx 2905; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 2906; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 2907; DARWIN-32-DYNAMIC-NEXT: retl 2908; 2909; DARWIN-32-PIC-LABEL: ind05: 2910; DARWIN-32-PIC: ## %bb.0: ## %entry 2911; DARWIN-32-PIC-NEXT: calll L32$pb 2912; DARWIN-32-PIC-NEXT: L32$pb: 2913; DARWIN-32-PIC-NEXT: popl %eax 2914; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2915; DARWIN-32-PIC-NEXT: movl _dsrc-L32$pb(%eax,%ecx,4), %edx 2916; DARWIN-32-PIC-NEXT: movl _dptr-L32$pb(%eax), %eax 2917; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 2918; DARWIN-32-PIC-NEXT: retl 2919; 2920; DARWIN-64-STATIC-LABEL: ind05: 2921; DARWIN-64-STATIC: ## %bb.0: ## %entry 2922; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 2923; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 2924; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 2925; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 2926; DARWIN-64-STATIC-NEXT: retq 2927; 2928; DARWIN-64-DYNAMIC-LABEL: ind05: 2929; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 2930; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 2931; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 2932; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 2933; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 2934; DARWIN-64-DYNAMIC-NEXT: retq 2935; 2936; DARWIN-64-PIC-LABEL: ind05: 2937; DARWIN-64-PIC: ## %bb.0: ## %entry 2938; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 2939; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2940; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 2941; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2942; DARWIN-64-PIC-NEXT: retq 2943 2944entry: 2945 %0 = load ptr, ptr @dptr, align 8 2946 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %i 2947 %2 = load i32, ptr %1, align 4 2948 %3 = getelementptr i32, ptr %0, i64 %i 2949 store i32 %2, ptr %3, align 4 2950 ret void 2951} 2952 2953define dso_local void @ind06(i64 %i) nounwind { 2954; LINUX-64-STATIC-LABEL: ind06: 2955; LINUX-64-STATIC: # %bb.0: # %entry 2956; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax 2957; LINUX-64-STATIC-NEXT: movl %eax, ldst(,%rdi,4) 2958; LINUX-64-STATIC-NEXT: retq 2959; 2960; LINUX-32-STATIC-LABEL: ind06: 2961; LINUX-32-STATIC: # %bb.0: # %entry 2962; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2963; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx 2964; LINUX-32-STATIC-NEXT: movl %ecx, ldst(,%eax,4) 2965; LINUX-32-STATIC-NEXT: retl 2966; 2967; LINUX-32-PIC-LABEL: ind06: 2968; LINUX-32-PIC: # %bb.0: # %entry 2969; LINUX-32-PIC-NEXT: calll .L33$pb 2970; LINUX-32-PIC-NEXT: .L33$pb: 2971; LINUX-32-PIC-NEXT: popl %eax 2972; LINUX-32-PIC-NEXT: .Ltmp33: 2973; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp33-.L33$pb), %eax 2974; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 2975; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx 2976; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF(%eax,%ecx,4) 2977; LINUX-32-PIC-NEXT: retl 2978; 2979; LINUX-64-PIC-LABEL: ind06: 2980; LINUX-64-PIC: # %bb.0: # %entry 2981; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 2982; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 2983; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 2984; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 2985; LINUX-64-PIC-NEXT: retq 2986; 2987; DARWIN-32-STATIC-LABEL: ind06: 2988; DARWIN-32-STATIC: ## %bb.0: ## %entry 2989; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2990; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx 2991; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst(,%eax,4) 2992; DARWIN-32-STATIC-NEXT: retl 2993; 2994; DARWIN-32-DYNAMIC-LABEL: ind06: 2995; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 2996; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 2997; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx 2998; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst(,%eax,4) 2999; DARWIN-32-DYNAMIC-NEXT: retl 3000; 3001; DARWIN-32-PIC-LABEL: ind06: 3002; DARWIN-32-PIC: ## %bb.0: ## %entry 3003; DARWIN-32-PIC-NEXT: calll L33$pb 3004; DARWIN-32-PIC-NEXT: L33$pb: 3005; DARWIN-32-PIC-NEXT: popl %eax 3006; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3007; DARWIN-32-PIC-NEXT: movl _lsrc-L33$pb(%eax,%ecx,4), %edx 3008; DARWIN-32-PIC-NEXT: movl %edx, _ldst-L33$pb(%eax,%ecx,4) 3009; DARWIN-32-PIC-NEXT: retl 3010; 3011; DARWIN-64-STATIC-LABEL: ind06: 3012; DARWIN-64-STATIC: ## %bb.0: ## %entry 3013; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 3014; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 3015; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 3016; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3017; DARWIN-64-STATIC-NEXT: retq 3018; 3019; DARWIN-64-DYNAMIC-LABEL: ind06: 3020; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3021; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 3022; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 3023; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 3024; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 3025; DARWIN-64-DYNAMIC-NEXT: retq 3026; 3027; DARWIN-64-PIC-LABEL: ind06: 3028; DARWIN-64-PIC: ## %bb.0: ## %entry 3029; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 3030; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3031; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 3032; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3033; DARWIN-64-PIC-NEXT: retq 3034 3035entry: 3036 %0 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %i 3037 %1 = load i32, ptr %0, align 4 3038 %2 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %i 3039 store i32 %1, ptr %2, align 4 3040 ret void 3041} 3042 3043define dso_local void @ind07(i64 %i) nounwind { 3044; LINUX-64-STATIC-LABEL: ind07: 3045; LINUX-64-STATIC: # %bb.0: # %entry 3046; LINUX-64-STATIC-NEXT: leaq ldst(,%rdi,4), %rax 3047; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 3048; LINUX-64-STATIC-NEXT: retq 3049; 3050; LINUX-32-STATIC-LABEL: ind07: 3051; LINUX-32-STATIC: # %bb.0: # %entry 3052; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3053; LINUX-32-STATIC-NEXT: leal ldst(,%eax,4), %eax 3054; LINUX-32-STATIC-NEXT: movl %eax, lptr 3055; LINUX-32-STATIC-NEXT: retl 3056; 3057; LINUX-32-PIC-LABEL: ind07: 3058; LINUX-32-PIC: # %bb.0: # %entry 3059; LINUX-32-PIC-NEXT: calll .L34$pb 3060; LINUX-32-PIC-NEXT: .L34$pb: 3061; LINUX-32-PIC-NEXT: popl %eax 3062; LINUX-32-PIC-NEXT: .Ltmp34: 3063; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp34-.L34$pb), %eax 3064; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3065; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax,%ecx,4), %ecx 3066; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 3067; LINUX-32-PIC-NEXT: retl 3068; 3069; LINUX-64-PIC-LABEL: ind07: 3070; LINUX-64-PIC: # %bb.0: # %entry 3071; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 3072; LINUX-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 3073; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 3074; LINUX-64-PIC-NEXT: retq 3075; 3076; DARWIN-32-STATIC-LABEL: ind07: 3077; DARWIN-32-STATIC: ## %bb.0: ## %entry 3078; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3079; DARWIN-32-STATIC-NEXT: leal _ldst(,%eax,4), %eax 3080; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 3081; DARWIN-32-STATIC-NEXT: retl 3082; 3083; DARWIN-32-DYNAMIC-LABEL: ind07: 3084; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3085; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3086; DARWIN-32-DYNAMIC-NEXT: leal _ldst(,%eax,4), %eax 3087; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 3088; DARWIN-32-DYNAMIC-NEXT: retl 3089; 3090; DARWIN-32-PIC-LABEL: ind07: 3091; DARWIN-32-PIC: ## %bb.0: ## %entry 3092; DARWIN-32-PIC-NEXT: calll L34$pb 3093; DARWIN-32-PIC-NEXT: L34$pb: 3094; DARWIN-32-PIC-NEXT: popl %eax 3095; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3096; DARWIN-32-PIC-NEXT: leal _ldst-L34$pb(%eax,%ecx,4), %ecx 3097; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L34$pb(%eax) 3098; DARWIN-32-PIC-NEXT: retl 3099; 3100; DARWIN-64-STATIC-LABEL: ind07: 3101; DARWIN-64-STATIC: ## %bb.0: ## %entry 3102; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 3103; DARWIN-64-STATIC-NEXT: leaq (%rax,%rdi,4), %rax 3104; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 3105; DARWIN-64-STATIC-NEXT: retq 3106; 3107; DARWIN-64-DYNAMIC-LABEL: ind07: 3108; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3109; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 3110; DARWIN-64-DYNAMIC-NEXT: leaq (%rax,%rdi,4), %rax 3111; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 3112; DARWIN-64-DYNAMIC-NEXT: retq 3113; 3114; DARWIN-64-PIC-LABEL: ind07: 3115; DARWIN-64-PIC: ## %bb.0: ## %entry 3116; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 3117; DARWIN-64-PIC-NEXT: leaq (%rax,%rdi,4), %rax 3118; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 3119; DARWIN-64-PIC-NEXT: retq 3120 3121entry: 3122 %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %i 3123 store ptr %0, ptr @lptr, align 8 3124 ret void 3125} 3126 3127define dso_local void @ind08(i64 %i) nounwind { 3128; LINUX-64-STATIC-LABEL: ind08: 3129; LINUX-64-STATIC: # %bb.0: # %entry 3130; LINUX-64-STATIC-NEXT: movl lsrc(,%rdi,4), %eax 3131; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 3132; LINUX-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3133; LINUX-64-STATIC-NEXT: retq 3134; 3135; LINUX-32-STATIC-LABEL: ind08: 3136; LINUX-32-STATIC: # %bb.0: # %entry 3137; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3138; LINUX-32-STATIC-NEXT: movl lsrc(,%eax,4), %ecx 3139; LINUX-32-STATIC-NEXT: movl lptr, %edx 3140; LINUX-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 3141; LINUX-32-STATIC-NEXT: retl 3142; 3143; LINUX-32-PIC-LABEL: ind08: 3144; LINUX-32-PIC: # %bb.0: # %entry 3145; LINUX-32-PIC-NEXT: calll .L35$pb 3146; LINUX-32-PIC-NEXT: .L35$pb: 3147; LINUX-32-PIC-NEXT: popl %eax 3148; LINUX-32-PIC-NEXT: .Ltmp35: 3149; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp35-.L35$pb), %eax 3150; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3151; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF(%eax,%ecx,4), %edx 3152; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 3153; LINUX-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 3154; LINUX-32-PIC-NEXT: retl 3155; 3156; LINUX-64-PIC-LABEL: ind08: 3157; LINUX-64-PIC: # %bb.0: # %entry 3158; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 3159; LINUX-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3160; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 3161; LINUX-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3162; LINUX-64-PIC-NEXT: retq 3163; 3164; DARWIN-32-STATIC-LABEL: ind08: 3165; DARWIN-32-STATIC: ## %bb.0: ## %entry 3166; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3167; DARWIN-32-STATIC-NEXT: movl _lsrc(,%eax,4), %ecx 3168; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 3169; DARWIN-32-STATIC-NEXT: movl %ecx, (%edx,%eax,4) 3170; DARWIN-32-STATIC-NEXT: retl 3171; 3172; DARWIN-32-DYNAMIC-LABEL: ind08: 3173; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3174; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3175; DARWIN-32-DYNAMIC-NEXT: movl _lsrc(,%eax,4), %ecx 3176; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 3177; DARWIN-32-DYNAMIC-NEXT: movl %ecx, (%edx,%eax,4) 3178; DARWIN-32-DYNAMIC-NEXT: retl 3179; 3180; DARWIN-32-PIC-LABEL: ind08: 3181; DARWIN-32-PIC: ## %bb.0: ## %entry 3182; DARWIN-32-PIC-NEXT: calll L35$pb 3183; DARWIN-32-PIC-NEXT: L35$pb: 3184; DARWIN-32-PIC-NEXT: popl %eax 3185; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3186; DARWIN-32-PIC-NEXT: movl _lsrc-L35$pb(%eax,%ecx,4), %edx 3187; DARWIN-32-PIC-NEXT: movl _lptr-L35$pb(%eax), %eax 3188; DARWIN-32-PIC-NEXT: movl %edx, (%eax,%ecx,4) 3189; DARWIN-32-PIC-NEXT: retl 3190; 3191; DARWIN-64-STATIC-LABEL: ind08: 3192; DARWIN-64-STATIC: ## %bb.0: ## %entry 3193; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 3194; DARWIN-64-STATIC-NEXT: movl (%rax,%rdi,4), %eax 3195; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 3196; DARWIN-64-STATIC-NEXT: movl %eax, (%rcx,%rdi,4) 3197; DARWIN-64-STATIC-NEXT: retq 3198; 3199; DARWIN-64-DYNAMIC-LABEL: ind08: 3200; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3201; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 3202; DARWIN-64-DYNAMIC-NEXT: movl (%rax,%rdi,4), %eax 3203; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 3204; DARWIN-64-DYNAMIC-NEXT: movl %eax, (%rcx,%rdi,4) 3205; DARWIN-64-DYNAMIC-NEXT: retq 3206; 3207; DARWIN-64-PIC-LABEL: ind08: 3208; DARWIN-64-PIC: ## %bb.0: ## %entry 3209; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 3210; DARWIN-64-PIC-NEXT: movl (%rax,%rdi,4), %eax 3211; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 3212; DARWIN-64-PIC-NEXT: movl %eax, (%rcx,%rdi,4) 3213; DARWIN-64-PIC-NEXT: retq 3214 3215entry: 3216 %0 = load ptr, ptr @lptr, align 8 3217 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %i 3218 %2 = load i32, ptr %1, align 4 3219 %3 = getelementptr i32, ptr %0, i64 %i 3220 store i32 %2, ptr %3, align 4 3221 ret void 3222} 3223 3224define dso_local void @off00(i64 %i) nounwind { 3225; LINUX-64-STATIC-LABEL: off00: 3226; LINUX-64-STATIC: # %bb.0: # %entry 3227; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 3228; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3229; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 3230; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3231; LINUX-64-STATIC-NEXT: retq 3232; 3233; LINUX-32-STATIC-LABEL: off00: 3234; LINUX-32-STATIC: # %bb.0: # %entry 3235; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3236; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx 3237; LINUX-32-STATIC-NEXT: movl %ecx, dst+64(,%eax,4) 3238; LINUX-32-STATIC-NEXT: retl 3239; 3240; LINUX-32-PIC-LABEL: off00: 3241; LINUX-32-PIC: # %bb.0: # %entry 3242; LINUX-32-PIC-NEXT: calll .L36$pb 3243; LINUX-32-PIC-NEXT: .L36$pb: 3244; LINUX-32-PIC-NEXT: popl %eax 3245; LINUX-32-PIC-NEXT: .Ltmp36: 3246; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp36-.L36$pb), %eax 3247; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3248; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 3249; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3250; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 3251; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3252; LINUX-32-PIC-NEXT: retl 3253; 3254; LINUX-64-PIC-LABEL: off00: 3255; LINUX-64-PIC: # %bb.0: # %entry 3256; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 3257; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3258; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 3259; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3260; LINUX-64-PIC-NEXT: retq 3261; 3262; DARWIN-32-STATIC-LABEL: off00: 3263; DARWIN-32-STATIC: ## %bb.0: ## %entry 3264; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3265; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx 3266; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+64(,%eax,4) 3267; DARWIN-32-STATIC-NEXT: retl 3268; 3269; DARWIN-32-DYNAMIC-LABEL: off00: 3270; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3271; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3272; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 3273; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3274; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 3275; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3276; DARWIN-32-DYNAMIC-NEXT: retl 3277; 3278; DARWIN-32-PIC-LABEL: off00: 3279; DARWIN-32-PIC: ## %bb.0: ## %entry 3280; DARWIN-32-PIC-NEXT: calll L36$pb 3281; DARWIN-32-PIC-NEXT: L36$pb: 3282; DARWIN-32-PIC-NEXT: popl %eax 3283; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3284; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L36$pb(%eax), %edx 3285; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3286; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L36$pb(%eax), %eax 3287; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3288; DARWIN-32-PIC-NEXT: retl 3289; 3290; DARWIN-64-STATIC-LABEL: off00: 3291; DARWIN-64-STATIC: ## %bb.0: ## %entry 3292; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3293; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3294; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3295; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3296; DARWIN-64-STATIC-NEXT: retq 3297; 3298; DARWIN-64-DYNAMIC-LABEL: off00: 3299; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3300; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3301; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3302; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3303; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3304; DARWIN-64-DYNAMIC-NEXT: retq 3305; 3306; DARWIN-64-PIC-LABEL: off00: 3307; DARWIN-64-PIC: ## %bb.0: ## %entry 3308; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3309; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3310; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 3311; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3312; DARWIN-64-PIC-NEXT: retq 3313 3314entry: 3315 %0 = add i64 %i, 16 3316 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0 3317 %2 = load i32, ptr %1, align 4 3318 %3 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0 3319 store i32 %2, ptr %3, align 4 3320 ret void 3321} 3322 3323define dso_local void @oxf00(i64 %i) nounwind { 3324; LINUX-64-STATIC-LABEL: oxf00: 3325; LINUX-64-STATIC: # %bb.0: # %entry 3326; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3327; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3328; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 3329; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3330; LINUX-64-STATIC-NEXT: retq 3331; 3332; LINUX-32-STATIC-LABEL: oxf00: 3333; LINUX-32-STATIC: # %bb.0: # %entry 3334; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3335; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx 3336; LINUX-32-STATIC-NEXT: movl %ecx, xdst+64(,%eax,4) 3337; LINUX-32-STATIC-NEXT: retl 3338; 3339; LINUX-32-PIC-LABEL: oxf00: 3340; LINUX-32-PIC: # %bb.0: # %entry 3341; LINUX-32-PIC-NEXT: calll .L37$pb 3342; LINUX-32-PIC-NEXT: .L37$pb: 3343; LINUX-32-PIC-NEXT: popl %eax 3344; LINUX-32-PIC-NEXT: .Ltmp37: 3345; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp37-.L37$pb), %eax 3346; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3347; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 3348; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3349; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 3350; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3351; LINUX-32-PIC-NEXT: retl 3352; 3353; LINUX-64-PIC-LABEL: oxf00: 3354; LINUX-64-PIC: # %bb.0: # %entry 3355; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3356; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3357; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rcx 3358; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3359; LINUX-64-PIC-NEXT: retq 3360; 3361; DARWIN-32-STATIC-LABEL: oxf00: 3362; DARWIN-32-STATIC: ## %bb.0: ## %entry 3363; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3364; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx 3365; DARWIN-32-STATIC-NEXT: movl %ecx, _xdst+64(,%eax,4) 3366; DARWIN-32-STATIC-NEXT: retl 3367; 3368; DARWIN-32-DYNAMIC-LABEL: oxf00: 3369; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3370; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3371; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 3372; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3373; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %edx 3374; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3375; DARWIN-32-DYNAMIC-NEXT: retl 3376; 3377; DARWIN-32-PIC-LABEL: oxf00: 3378; DARWIN-32-PIC: ## %bb.0: ## %entry 3379; DARWIN-32-PIC-NEXT: calll L37$pb 3380; DARWIN-32-PIC-NEXT: L37$pb: 3381; DARWIN-32-PIC-NEXT: popl %eax 3382; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3383; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L37$pb(%eax), %edx 3384; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3385; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L37$pb(%eax), %eax 3386; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3387; DARWIN-32-PIC-NEXT: retl 3388; 3389; DARWIN-64-STATIC-LABEL: oxf00: 3390; DARWIN-64-STATIC: ## %bb.0: ## %entry 3391; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3392; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3393; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3394; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3395; DARWIN-64-STATIC-NEXT: retq 3396; 3397; DARWIN-64-DYNAMIC-LABEL: oxf00: 3398; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3399; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3400; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3401; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3402; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3403; DARWIN-64-DYNAMIC-NEXT: retq 3404; 3405; DARWIN-64-PIC-LABEL: oxf00: 3406; DARWIN-64-PIC: ## %bb.0: ## %entry 3407; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3408; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3409; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rcx 3410; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3411; DARWIN-64-PIC-NEXT: retq 3412 3413entry: 3414 %0 = add i64 %i, 16 3415 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %0 3416 %2 = load i32, ptr %1, align 4 3417 %3 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %0 3418 store i32 %2, ptr %3, align 4 3419 ret void 3420} 3421 3422define dso_local void @off01(i64 %i) nounwind { 3423; LINUX-64-STATIC-LABEL: off01: 3424; LINUX-64-STATIC: # %bb.0: # %entry 3425; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 3426; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3427; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3428; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 3429; LINUX-64-STATIC-NEXT: retq 3430; 3431; LINUX-32-STATIC-LABEL: off01: 3432; LINUX-32-STATIC: # %bb.0: # %entry 3433; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3434; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax 3435; LINUX-32-STATIC-NEXT: movl %eax, ptr 3436; LINUX-32-STATIC-NEXT: retl 3437; 3438; LINUX-32-PIC-LABEL: off01: 3439; LINUX-32-PIC: # %bb.0: # %entry 3440; LINUX-32-PIC-NEXT: calll .L38$pb 3441; LINUX-32-PIC-NEXT: .L38$pb: 3442; LINUX-32-PIC-NEXT: popl %eax 3443; LINUX-32-PIC-NEXT: .Ltmp38: 3444; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp38-.L38$pb), %eax 3445; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3446; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx 3447; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3448; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3449; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3450; LINUX-32-PIC-NEXT: retl 3451; 3452; LINUX-64-PIC-LABEL: off01: 3453; LINUX-64-PIC: # %bb.0: # %entry 3454; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 3455; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3456; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3457; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3458; LINUX-64-PIC-NEXT: retq 3459; 3460; DARWIN-32-STATIC-LABEL: off01: 3461; DARWIN-32-STATIC: ## %bb.0: ## %entry 3462; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3463; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax 3464; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 3465; DARWIN-32-STATIC-NEXT: retl 3466; 3467; DARWIN-32-DYNAMIC-LABEL: off01: 3468; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3469; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3470; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 3471; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 3472; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 3473; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 3474; DARWIN-32-DYNAMIC-NEXT: retl 3475; 3476; DARWIN-32-PIC-LABEL: off01: 3477; DARWIN-32-PIC: ## %bb.0: ## %entry 3478; DARWIN-32-PIC-NEXT: calll L38$pb 3479; DARWIN-32-PIC-NEXT: L38$pb: 3480; DARWIN-32-PIC-NEXT: popl %eax 3481; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3482; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L38$pb(%eax), %edx 3483; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3484; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L38$pb(%eax), %eax 3485; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 3486; DARWIN-32-PIC-NEXT: retl 3487; 3488; DARWIN-64-STATIC-LABEL: off01: 3489; DARWIN-64-STATIC: ## %bb.0: ## %entry 3490; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3491; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3492; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3493; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 3494; DARWIN-64-STATIC-NEXT: retq 3495; 3496; DARWIN-64-DYNAMIC-LABEL: off01: 3497; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3498; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3499; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3500; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3501; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 3502; DARWIN-64-DYNAMIC-NEXT: retq 3503; 3504; DARWIN-64-PIC-LABEL: off01: 3505; DARWIN-64-PIC: ## %bb.0: ## %entry 3506; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 3507; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3508; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3509; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 3510; DARWIN-64-PIC-NEXT: retq 3511 3512entry: 3513 %.sum = add i64 %i, 16 3514 %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %.sum 3515 store ptr %0, ptr @ptr, align 8 3516 ret void 3517} 3518 3519define dso_local void @oxf01(i64 %i) nounwind { 3520; LINUX-64-STATIC-LABEL: oxf01: 3521; LINUX-64-STATIC: # %bb.0: # %entry 3522; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 3523; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3524; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3525; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 3526; LINUX-64-STATIC-NEXT: retq 3527; 3528; LINUX-32-STATIC-LABEL: oxf01: 3529; LINUX-32-STATIC: # %bb.0: # %entry 3530; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3531; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax 3532; LINUX-32-STATIC-NEXT: movl %eax, ptr 3533; LINUX-32-STATIC-NEXT: retl 3534; 3535; LINUX-32-PIC-LABEL: oxf01: 3536; LINUX-32-PIC: # %bb.0: # %entry 3537; LINUX-32-PIC-NEXT: calll .L39$pb 3538; LINUX-32-PIC-NEXT: .L39$pb: 3539; LINUX-32-PIC-NEXT: popl %eax 3540; LINUX-32-PIC-NEXT: .Ltmp39: 3541; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp39-.L39$pb), %eax 3542; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3543; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %edx 3544; LINUX-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3545; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3546; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 3547; LINUX-32-PIC-NEXT: retl 3548; 3549; LINUX-64-PIC-LABEL: oxf01: 3550; LINUX-64-PIC: # %bb.0: # %entry 3551; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 3552; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3553; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3554; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 3555; LINUX-64-PIC-NEXT: retq 3556; 3557; DARWIN-32-STATIC-LABEL: oxf01: 3558; DARWIN-32-STATIC: ## %bb.0: ## %entry 3559; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3560; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax 3561; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 3562; DARWIN-32-STATIC-NEXT: retl 3563; 3564; DARWIN-32-DYNAMIC-LABEL: oxf01: 3565; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3566; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3567; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 3568; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 3569; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 3570; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 3571; DARWIN-32-DYNAMIC-NEXT: retl 3572; 3573; DARWIN-32-PIC-LABEL: oxf01: 3574; DARWIN-32-PIC: ## %bb.0: ## %entry 3575; DARWIN-32-PIC-NEXT: calll L39$pb 3576; DARWIN-32-PIC-NEXT: L39$pb: 3577; DARWIN-32-PIC-NEXT: popl %eax 3578; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3579; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L39$pb(%eax), %edx 3580; DARWIN-32-PIC-NEXT: leal 64(%edx,%ecx,4), %ecx 3581; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L39$pb(%eax), %eax 3582; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 3583; DARWIN-32-PIC-NEXT: retl 3584; 3585; DARWIN-64-STATIC-LABEL: oxf01: 3586; DARWIN-64-STATIC: ## %bb.0: ## %entry 3587; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3588; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3589; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3590; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 3591; DARWIN-64-STATIC-NEXT: retq 3592; 3593; DARWIN-64-DYNAMIC-LABEL: oxf01: 3594; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3595; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3596; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3597; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3598; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 3599; DARWIN-64-DYNAMIC-NEXT: retq 3600; 3601; DARWIN-64-PIC-LABEL: oxf01: 3602; DARWIN-64-PIC: ## %bb.0: ## %entry 3603; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 3604; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3605; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3606; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 3607; DARWIN-64-PIC-NEXT: retq 3608 3609entry: 3610 %.sum = add i64 %i, 16 3611 %0 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %.sum 3612 store ptr %0, ptr @ptr, align 8 3613 ret void 3614} 3615 3616define dso_local void @off02(i64 %i) nounwind { 3617; LINUX-64-STATIC-LABEL: off02: 3618; LINUX-64-STATIC: # %bb.0: # %entry 3619; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 3620; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3621; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3622; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 3623; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3624; LINUX-64-STATIC-NEXT: retq 3625; 3626; LINUX-32-STATIC-LABEL: off02: 3627; LINUX-32-STATIC: # %bb.0: # %entry 3628; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3629; LINUX-32-STATIC-NEXT: movl src+64(,%eax,4), %ecx 3630; LINUX-32-STATIC-NEXT: movl ptr, %edx 3631; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3632; LINUX-32-STATIC-NEXT: retl 3633; 3634; LINUX-32-PIC-LABEL: off02: 3635; LINUX-32-PIC: # %bb.0: # %entry 3636; LINUX-32-PIC-NEXT: calll .L40$pb 3637; LINUX-32-PIC-NEXT: .L40$pb: 3638; LINUX-32-PIC-NEXT: popl %eax 3639; LINUX-32-PIC-NEXT: .Ltmp40: 3640; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp40-.L40$pb), %eax 3641; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3642; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 3643; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3644; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3645; LINUX-32-PIC-NEXT: movl (%eax), %eax 3646; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3647; LINUX-32-PIC-NEXT: retl 3648; 3649; LINUX-64-PIC-LABEL: off02: 3650; LINUX-64-PIC: # %bb.0: # %entry 3651; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 3652; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3653; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3654; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 3655; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3656; LINUX-64-PIC-NEXT: retq 3657; 3658; DARWIN-32-STATIC-LABEL: off02: 3659; DARWIN-32-STATIC: ## %bb.0: ## %entry 3660; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3661; DARWIN-32-STATIC-NEXT: movl _src+64(,%eax,4), %ecx 3662; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 3663; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3664; DARWIN-32-STATIC-NEXT: retl 3665; 3666; DARWIN-32-DYNAMIC-LABEL: off02: 3667; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3668; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3669; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 3670; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3671; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 3672; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 3673; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3674; DARWIN-32-DYNAMIC-NEXT: retl 3675; 3676; DARWIN-32-PIC-LABEL: off02: 3677; DARWIN-32-PIC: ## %bb.0: ## %entry 3678; DARWIN-32-PIC-NEXT: calll L40$pb 3679; DARWIN-32-PIC-NEXT: L40$pb: 3680; DARWIN-32-PIC-NEXT: popl %eax 3681; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3682; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L40$pb(%eax), %edx 3683; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3684; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L40$pb(%eax), %eax 3685; DARWIN-32-PIC-NEXT: movl (%eax), %eax 3686; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3687; DARWIN-32-PIC-NEXT: retl 3688; 3689; DARWIN-64-STATIC-LABEL: off02: 3690; DARWIN-64-STATIC: ## %bb.0: ## %entry 3691; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3692; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3693; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3694; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 3695; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3696; DARWIN-64-STATIC-NEXT: retq 3697; 3698; DARWIN-64-DYNAMIC-LABEL: off02: 3699; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3700; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3701; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3702; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3703; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 3704; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3705; DARWIN-64-DYNAMIC-NEXT: retq 3706; 3707; DARWIN-64-PIC-LABEL: off02: 3708; DARWIN-64-PIC: ## %bb.0: ## %entry 3709; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 3710; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3711; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3712; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 3713; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3714; DARWIN-64-PIC-NEXT: retq 3715 3716entry: 3717 %0 = load ptr, ptr @ptr, align 8 3718 %1 = add i64 %i, 16 3719 %2 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %1 3720 %3 = load i32, ptr %2, align 4 3721 %4 = getelementptr i32, ptr %0, i64 %1 3722 store i32 %3, ptr %4, align 4 3723 ret void 3724} 3725 3726define dso_local void @oxf02(i64 %i) nounwind { 3727; LINUX-64-STATIC-LABEL: oxf02: 3728; LINUX-64-STATIC: # %bb.0: # %entry 3729; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3730; LINUX-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3731; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3732; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 3733; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3734; LINUX-64-STATIC-NEXT: retq 3735; 3736; LINUX-32-STATIC-LABEL: oxf02: 3737; LINUX-32-STATIC: # %bb.0: # %entry 3738; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3739; LINUX-32-STATIC-NEXT: movl xsrc+64(,%eax,4), %ecx 3740; LINUX-32-STATIC-NEXT: movl ptr, %edx 3741; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3742; LINUX-32-STATIC-NEXT: retl 3743; 3744; LINUX-32-PIC-LABEL: oxf02: 3745; LINUX-32-PIC: # %bb.0: # %entry 3746; LINUX-32-PIC-NEXT: calll .L41$pb 3747; LINUX-32-PIC-NEXT: .L41$pb: 3748; LINUX-32-PIC-NEXT: popl %eax 3749; LINUX-32-PIC-NEXT: .Ltmp41: 3750; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp41-.L41$pb), %eax 3751; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3752; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %edx 3753; LINUX-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3754; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 3755; LINUX-32-PIC-NEXT: movl (%eax), %eax 3756; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3757; LINUX-32-PIC-NEXT: retl 3758; 3759; LINUX-64-PIC-LABEL: oxf02: 3760; LINUX-64-PIC: # %bb.0: # %entry 3761; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 3762; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3763; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 3764; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 3765; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3766; LINUX-64-PIC-NEXT: retq 3767; 3768; DARWIN-32-STATIC-LABEL: oxf02: 3769; DARWIN-32-STATIC: ## %bb.0: ## %entry 3770; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3771; DARWIN-32-STATIC-NEXT: movl _xsrc+64(,%eax,4), %ecx 3772; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 3773; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3774; DARWIN-32-STATIC-NEXT: retl 3775; 3776; DARWIN-32-DYNAMIC-LABEL: oxf02: 3777; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3778; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3779; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 3780; DARWIN-32-DYNAMIC-NEXT: movl 64(%ecx,%eax,4), %ecx 3781; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 3782; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 3783; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 3784; DARWIN-32-DYNAMIC-NEXT: retl 3785; 3786; DARWIN-32-PIC-LABEL: oxf02: 3787; DARWIN-32-PIC: ## %bb.0: ## %entry 3788; DARWIN-32-PIC-NEXT: calll L41$pb 3789; DARWIN-32-PIC-NEXT: L41$pb: 3790; DARWIN-32-PIC-NEXT: popl %eax 3791; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3792; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L41$pb(%eax), %edx 3793; DARWIN-32-PIC-NEXT: movl 64(%edx,%ecx,4), %edx 3794; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L41$pb(%eax), %eax 3795; DARWIN-32-PIC-NEXT: movl (%eax), %eax 3796; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 3797; DARWIN-32-PIC-NEXT: retl 3798; 3799; DARWIN-64-STATIC-LABEL: oxf02: 3800; DARWIN-64-STATIC: ## %bb.0: ## %entry 3801; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3802; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3803; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3804; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 3805; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3806; DARWIN-64-STATIC-NEXT: retq 3807; 3808; DARWIN-64-DYNAMIC-LABEL: oxf02: 3809; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3810; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3811; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3812; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3813; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 3814; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3815; DARWIN-64-DYNAMIC-NEXT: retq 3816; 3817; DARWIN-64-PIC-LABEL: oxf02: 3818; DARWIN-64-PIC: ## %bb.0: ## %entry 3819; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 3820; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3821; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 3822; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 3823; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3824; DARWIN-64-PIC-NEXT: retq 3825 3826entry: 3827 %0 = load ptr, ptr @ptr, align 8 3828 %1 = add i64 %i, 16 3829 %2 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %1 3830 %3 = load i32, ptr %2, align 4 3831 %4 = getelementptr i32, ptr %0, i64 %1 3832 store i32 %3, ptr %4, align 4 3833 ret void 3834} 3835 3836define dso_local void @off03(i64 %i) nounwind { 3837; LINUX-64-STATIC-LABEL: off03: 3838; LINUX-64-STATIC: # %bb.0: # %entry 3839; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax 3840; LINUX-64-STATIC-NEXT: movl %eax, ddst+64(,%rdi,4) 3841; LINUX-64-STATIC-NEXT: retq 3842; 3843; LINUX-32-STATIC-LABEL: off03: 3844; LINUX-32-STATIC: # %bb.0: # %entry 3845; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3846; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx 3847; LINUX-32-STATIC-NEXT: movl %ecx, ddst+64(,%eax,4) 3848; LINUX-32-STATIC-NEXT: retl 3849; 3850; LINUX-32-PIC-LABEL: off03: 3851; LINUX-32-PIC: # %bb.0: # %entry 3852; LINUX-32-PIC-NEXT: calll .L42$pb 3853; LINUX-32-PIC-NEXT: .L42$pb: 3854; LINUX-32-PIC-NEXT: popl %eax 3855; LINUX-32-PIC-NEXT: .Ltmp42: 3856; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp42-.L42$pb), %eax 3857; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3858; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx 3859; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF+64(%eax,%ecx,4) 3860; LINUX-32-PIC-NEXT: retl 3861; 3862; LINUX-64-PIC-LABEL: off03: 3863; LINUX-64-PIC: # %bb.0: # %entry 3864; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 3865; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3866; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx 3867; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3868; LINUX-64-PIC-NEXT: retq 3869; 3870; DARWIN-32-STATIC-LABEL: off03: 3871; DARWIN-32-STATIC: ## %bb.0: ## %entry 3872; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3873; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 3874; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+64(,%eax,4) 3875; DARWIN-32-STATIC-NEXT: retl 3876; 3877; DARWIN-32-DYNAMIC-LABEL: off03: 3878; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3879; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3880; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 3881; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+64(,%eax,4) 3882; DARWIN-32-DYNAMIC-NEXT: retl 3883; 3884; DARWIN-32-PIC-LABEL: off03: 3885; DARWIN-32-PIC: ## %bb.0: ## %entry 3886; DARWIN-32-PIC-NEXT: calll L42$pb 3887; DARWIN-32-PIC-NEXT: L42$pb: 3888; DARWIN-32-PIC-NEXT: popl %eax 3889; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3890; DARWIN-32-PIC-NEXT: movl (_dsrc-L42$pb)+64(%eax,%ecx,4), %edx 3891; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L42$pb)+64(%eax,%ecx,4) 3892; DARWIN-32-PIC-NEXT: retl 3893; 3894; DARWIN-64-STATIC-LABEL: off03: 3895; DARWIN-64-STATIC: ## %bb.0: ## %entry 3896; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 3897; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 3898; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 3899; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3900; DARWIN-64-STATIC-NEXT: retq 3901; 3902; DARWIN-64-DYNAMIC-LABEL: off03: 3903; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3904; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 3905; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 3906; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 3907; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3908; DARWIN-64-DYNAMIC-NEXT: retq 3909; 3910; DARWIN-64-PIC-LABEL: off03: 3911; DARWIN-64-PIC: ## %bb.0: ## %entry 3912; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 3913; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 3914; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 3915; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 3916; DARWIN-64-PIC-NEXT: retq 3917 3918entry: 3919 %0 = add i64 %i, 16 3920 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0 3921 %2 = load i32, ptr %1, align 4 3922 %3 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0 3923 store i32 %2, ptr %3, align 4 3924 ret void 3925} 3926 3927define dso_local void @off04(i64 %i) nounwind { 3928; LINUX-64-STATIC-LABEL: off04: 3929; LINUX-64-STATIC: # %bb.0: # %entry 3930; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax 3931; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 3932; LINUX-64-STATIC-NEXT: retq 3933; 3934; LINUX-32-STATIC-LABEL: off04: 3935; LINUX-32-STATIC: # %bb.0: # %entry 3936; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3937; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax 3938; LINUX-32-STATIC-NEXT: movl %eax, dptr 3939; LINUX-32-STATIC-NEXT: retl 3940; 3941; LINUX-32-PIC-LABEL: off04: 3942; LINUX-32-PIC: # %bb.0: # %entry 3943; LINUX-32-PIC-NEXT: calll .L43$pb 3944; LINUX-32-PIC-NEXT: .L43$pb: 3945; LINUX-32-PIC-NEXT: popl %eax 3946; LINUX-32-PIC-NEXT: .Ltmp43: 3947; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp43-.L43$pb), %eax 3948; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3949; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %ecx 3950; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 3951; LINUX-32-PIC-NEXT: retl 3952; 3953; LINUX-64-PIC-LABEL: off04: 3954; LINUX-64-PIC: # %bb.0: # %entry 3955; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 3956; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3957; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 3958; LINUX-64-PIC-NEXT: retq 3959; 3960; DARWIN-32-STATIC-LABEL: off04: 3961; DARWIN-32-STATIC: ## %bb.0: ## %entry 3962; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3963; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax 3964; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 3965; DARWIN-32-STATIC-NEXT: retl 3966; 3967; DARWIN-32-DYNAMIC-LABEL: off04: 3968; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 3969; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 3970; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax 3971; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 3972; DARWIN-32-DYNAMIC-NEXT: retl 3973; 3974; DARWIN-32-PIC-LABEL: off04: 3975; DARWIN-32-PIC: ## %bb.0: ## %entry 3976; DARWIN-32-PIC-NEXT: calll L43$pb 3977; DARWIN-32-PIC-NEXT: L43$pb: 3978; DARWIN-32-PIC-NEXT: popl %eax 3979; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 3980; DARWIN-32-PIC-NEXT: leal (_ddst-L43$pb)+64(%eax,%ecx,4), %ecx 3981; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L43$pb(%eax) 3982; DARWIN-32-PIC-NEXT: retl 3983; 3984; DARWIN-64-STATIC-LABEL: off04: 3985; DARWIN-64-STATIC: ## %bb.0: ## %entry 3986; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 3987; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3988; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 3989; DARWIN-64-STATIC-NEXT: retq 3990; 3991; DARWIN-64-DYNAMIC-LABEL: off04: 3992; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 3993; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 3994; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 3995; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 3996; DARWIN-64-DYNAMIC-NEXT: retq 3997; 3998; DARWIN-64-PIC-LABEL: off04: 3999; DARWIN-64-PIC: ## %bb.0: ## %entry 4000; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 4001; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4002; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 4003; DARWIN-64-PIC-NEXT: retq 4004 4005entry: 4006 %.sum = add i64 %i, 16 4007 %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %.sum 4008 store ptr %0, ptr @dptr, align 8 4009 ret void 4010} 4011 4012define dso_local void @off05(i64 %i) nounwind { 4013; LINUX-64-STATIC-LABEL: off05: 4014; LINUX-64-STATIC: # %bb.0: # %entry 4015; LINUX-64-STATIC-NEXT: movl dsrc+64(,%rdi,4), %eax 4016; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 4017; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4018; LINUX-64-STATIC-NEXT: retq 4019; 4020; LINUX-32-STATIC-LABEL: off05: 4021; LINUX-32-STATIC: # %bb.0: # %entry 4022; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4023; LINUX-32-STATIC-NEXT: movl dsrc+64(,%eax,4), %ecx 4024; LINUX-32-STATIC-NEXT: movl dptr, %edx 4025; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4026; LINUX-32-STATIC-NEXT: retl 4027; 4028; LINUX-32-PIC-LABEL: off05: 4029; LINUX-32-PIC: # %bb.0: # %entry 4030; LINUX-32-PIC-NEXT: calll .L44$pb 4031; LINUX-32-PIC-NEXT: .L44$pb: 4032; LINUX-32-PIC-NEXT: popl %eax 4033; LINUX-32-PIC-NEXT: .Ltmp44: 4034; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp44-.L44$pb), %eax 4035; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4036; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %edx 4037; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 4038; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4039; LINUX-32-PIC-NEXT: retl 4040; 4041; LINUX-64-PIC-LABEL: off05: 4042; LINUX-64-PIC: # %bb.0: # %entry 4043; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 4044; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4045; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 4046; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4047; LINUX-64-PIC-NEXT: retq 4048; 4049; DARWIN-32-STATIC-LABEL: off05: 4050; DARWIN-32-STATIC: ## %bb.0: ## %entry 4051; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4052; DARWIN-32-STATIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 4053; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 4054; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4055; DARWIN-32-STATIC-NEXT: retl 4056; 4057; DARWIN-32-DYNAMIC-LABEL: off05: 4058; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4059; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4060; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+64(,%eax,4), %ecx 4061; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 4062; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4063; DARWIN-32-DYNAMIC-NEXT: retl 4064; 4065; DARWIN-32-PIC-LABEL: off05: 4066; DARWIN-32-PIC: ## %bb.0: ## %entry 4067; DARWIN-32-PIC-NEXT: calll L44$pb 4068; DARWIN-32-PIC-NEXT: L44$pb: 4069; DARWIN-32-PIC-NEXT: popl %eax 4070; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4071; DARWIN-32-PIC-NEXT: movl (_dsrc-L44$pb)+64(%eax,%ecx,4), %edx 4072; DARWIN-32-PIC-NEXT: movl _dptr-L44$pb(%eax), %eax 4073; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4074; DARWIN-32-PIC-NEXT: retl 4075; 4076; DARWIN-64-STATIC-LABEL: off05: 4077; DARWIN-64-STATIC: ## %bb.0: ## %entry 4078; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 4079; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4080; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 4081; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4082; DARWIN-64-STATIC-NEXT: retq 4083; 4084; DARWIN-64-DYNAMIC-LABEL: off05: 4085; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4086; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 4087; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4088; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 4089; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4090; DARWIN-64-DYNAMIC-NEXT: retq 4091; 4092; DARWIN-64-PIC-LABEL: off05: 4093; DARWIN-64-PIC: ## %bb.0: ## %entry 4094; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 4095; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4096; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 4097; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4098; DARWIN-64-PIC-NEXT: retq 4099 4100entry: 4101 %0 = load ptr, ptr @dptr, align 8 4102 %1 = add i64 %i, 16 4103 %2 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %1 4104 %3 = load i32, ptr %2, align 4 4105 %4 = getelementptr i32, ptr %0, i64 %1 4106 store i32 %3, ptr %4, align 4 4107 ret void 4108} 4109 4110define dso_local void @off06(i64 %i) nounwind { 4111; LINUX-64-STATIC-LABEL: off06: 4112; LINUX-64-STATIC: # %bb.0: # %entry 4113; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax 4114; LINUX-64-STATIC-NEXT: movl %eax, ldst+64(,%rdi,4) 4115; LINUX-64-STATIC-NEXT: retq 4116; 4117; LINUX-32-STATIC-LABEL: off06: 4118; LINUX-32-STATIC: # %bb.0: # %entry 4119; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4120; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx 4121; LINUX-32-STATIC-NEXT: movl %ecx, ldst+64(,%eax,4) 4122; LINUX-32-STATIC-NEXT: retl 4123; 4124; LINUX-32-PIC-LABEL: off06: 4125; LINUX-32-PIC: # %bb.0: # %entry 4126; LINUX-32-PIC-NEXT: calll .L45$pb 4127; LINUX-32-PIC-NEXT: .L45$pb: 4128; LINUX-32-PIC-NEXT: popl %eax 4129; LINUX-32-PIC-NEXT: .Ltmp45: 4130; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp45-.L45$pb), %eax 4131; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4132; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx 4133; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+64(%eax,%ecx,4) 4134; LINUX-32-PIC-NEXT: retl 4135; 4136; LINUX-64-PIC-LABEL: off06: 4137; LINUX-64-PIC: # %bb.0: # %entry 4138; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 4139; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4140; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 4141; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4142; LINUX-64-PIC-NEXT: retq 4143; 4144; DARWIN-32-STATIC-LABEL: off06: 4145; DARWIN-32-STATIC: ## %bb.0: ## %entry 4146; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4147; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4148; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+64(,%eax,4) 4149; DARWIN-32-STATIC-NEXT: retl 4150; 4151; DARWIN-32-DYNAMIC-LABEL: off06: 4152; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4153; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4154; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4155; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+64(,%eax,4) 4156; DARWIN-32-DYNAMIC-NEXT: retl 4157; 4158; DARWIN-32-PIC-LABEL: off06: 4159; DARWIN-32-PIC: ## %bb.0: ## %entry 4160; DARWIN-32-PIC-NEXT: calll L45$pb 4161; DARWIN-32-PIC-NEXT: L45$pb: 4162; DARWIN-32-PIC-NEXT: popl %eax 4163; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4164; DARWIN-32-PIC-NEXT: movl (_lsrc-L45$pb)+64(%eax,%ecx,4), %edx 4165; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L45$pb)+64(%eax,%ecx,4) 4166; DARWIN-32-PIC-NEXT: retl 4167; 4168; DARWIN-64-STATIC-LABEL: off06: 4169; DARWIN-64-STATIC: ## %bb.0: ## %entry 4170; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 4171; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4172; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 4173; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4174; DARWIN-64-STATIC-NEXT: retq 4175; 4176; DARWIN-64-DYNAMIC-LABEL: off06: 4177; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4178; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 4179; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4180; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 4181; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4182; DARWIN-64-DYNAMIC-NEXT: retq 4183; 4184; DARWIN-64-PIC-LABEL: off06: 4185; DARWIN-64-PIC: ## %bb.0: ## %entry 4186; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 4187; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4188; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 4189; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4190; DARWIN-64-PIC-NEXT: retq 4191 4192entry: 4193 %0 = add i64 %i, 16 4194 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0 4195 %2 = load i32, ptr %1, align 4 4196 %3 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0 4197 store i32 %2, ptr %3, align 4 4198 ret void 4199} 4200 4201define dso_local void @off07(i64 %i) nounwind { 4202; LINUX-64-STATIC-LABEL: off07: 4203; LINUX-64-STATIC: # %bb.0: # %entry 4204; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax 4205; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 4206; LINUX-64-STATIC-NEXT: retq 4207; 4208; LINUX-32-STATIC-LABEL: off07: 4209; LINUX-32-STATIC: # %bb.0: # %entry 4210; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4211; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax 4212; LINUX-32-STATIC-NEXT: movl %eax, lptr 4213; LINUX-32-STATIC-NEXT: retl 4214; 4215; LINUX-32-PIC-LABEL: off07: 4216; LINUX-32-PIC: # %bb.0: # %entry 4217; LINUX-32-PIC-NEXT: calll .L46$pb 4218; LINUX-32-PIC-NEXT: .L46$pb: 4219; LINUX-32-PIC-NEXT: popl %eax 4220; LINUX-32-PIC-NEXT: .Ltmp46: 4221; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp46-.L46$pb), %eax 4222; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4223; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %ecx 4224; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 4225; LINUX-32-PIC-NEXT: retl 4226; 4227; LINUX-64-PIC-LABEL: off07: 4228; LINUX-64-PIC: # %bb.0: # %entry 4229; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 4230; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4231; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 4232; LINUX-64-PIC-NEXT: retq 4233; 4234; DARWIN-32-STATIC-LABEL: off07: 4235; DARWIN-32-STATIC: ## %bb.0: ## %entry 4236; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4237; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax 4238; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 4239; DARWIN-32-STATIC-NEXT: retl 4240; 4241; DARWIN-32-DYNAMIC-LABEL: off07: 4242; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4243; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4244; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax 4245; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 4246; DARWIN-32-DYNAMIC-NEXT: retl 4247; 4248; DARWIN-32-PIC-LABEL: off07: 4249; DARWIN-32-PIC: ## %bb.0: ## %entry 4250; DARWIN-32-PIC-NEXT: calll L46$pb 4251; DARWIN-32-PIC-NEXT: L46$pb: 4252; DARWIN-32-PIC-NEXT: popl %eax 4253; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4254; DARWIN-32-PIC-NEXT: leal (_ldst-L46$pb)+64(%eax,%ecx,4), %ecx 4255; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L46$pb(%eax) 4256; DARWIN-32-PIC-NEXT: retl 4257; 4258; DARWIN-64-STATIC-LABEL: off07: 4259; DARWIN-64-STATIC: ## %bb.0: ## %entry 4260; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 4261; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4262; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 4263; DARWIN-64-STATIC-NEXT: retq 4264; 4265; DARWIN-64-DYNAMIC-LABEL: off07: 4266; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4267; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 4268; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4269; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 4270; DARWIN-64-DYNAMIC-NEXT: retq 4271; 4272; DARWIN-64-PIC-LABEL: off07: 4273; DARWIN-64-PIC: ## %bb.0: ## %entry 4274; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 4275; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 4276; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 4277; DARWIN-64-PIC-NEXT: retq 4278 4279entry: 4280 %.sum = add i64 %i, 16 4281 %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %.sum 4282 store ptr %0, ptr @lptr, align 8 4283 ret void 4284} 4285 4286define dso_local void @off08(i64 %i) nounwind { 4287; LINUX-64-STATIC-LABEL: off08: 4288; LINUX-64-STATIC: # %bb.0: # %entry 4289; LINUX-64-STATIC-NEXT: movl lsrc+64(,%rdi,4), %eax 4290; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 4291; LINUX-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4292; LINUX-64-STATIC-NEXT: retq 4293; 4294; LINUX-32-STATIC-LABEL: off08: 4295; LINUX-32-STATIC: # %bb.0: # %entry 4296; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4297; LINUX-32-STATIC-NEXT: movl lsrc+64(,%eax,4), %ecx 4298; LINUX-32-STATIC-NEXT: movl lptr, %edx 4299; LINUX-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4300; LINUX-32-STATIC-NEXT: retl 4301; 4302; LINUX-32-PIC-LABEL: off08: 4303; LINUX-32-PIC: # %bb.0: # %entry 4304; LINUX-32-PIC-NEXT: calll .L47$pb 4305; LINUX-32-PIC-NEXT: .L47$pb: 4306; LINUX-32-PIC-NEXT: popl %eax 4307; LINUX-32-PIC-NEXT: .Ltmp47: 4308; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp47-.L47$pb), %eax 4309; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4310; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+64(%eax,%ecx,4), %edx 4311; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 4312; LINUX-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4313; LINUX-32-PIC-NEXT: retl 4314; 4315; LINUX-64-PIC-LABEL: off08: 4316; LINUX-64-PIC: # %bb.0: # %entry 4317; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 4318; LINUX-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4319; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 4320; LINUX-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4321; LINUX-64-PIC-NEXT: retq 4322; 4323; DARWIN-32-STATIC-LABEL: off08: 4324; DARWIN-32-STATIC: ## %bb.0: ## %entry 4325; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4326; DARWIN-32-STATIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4327; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 4328; DARWIN-32-STATIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4329; DARWIN-32-STATIC-NEXT: retl 4330; 4331; DARWIN-32-DYNAMIC-LABEL: off08: 4332; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4333; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 4334; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+64(,%eax,4), %ecx 4335; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 4336; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 64(%edx,%eax,4) 4337; DARWIN-32-DYNAMIC-NEXT: retl 4338; 4339; DARWIN-32-PIC-LABEL: off08: 4340; DARWIN-32-PIC: ## %bb.0: ## %entry 4341; DARWIN-32-PIC-NEXT: calll L47$pb 4342; DARWIN-32-PIC-NEXT: L47$pb: 4343; DARWIN-32-PIC-NEXT: popl %eax 4344; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 4345; DARWIN-32-PIC-NEXT: movl (_lsrc-L47$pb)+64(%eax,%ecx,4), %edx 4346; DARWIN-32-PIC-NEXT: movl _lptr-L47$pb(%eax), %eax 4347; DARWIN-32-PIC-NEXT: movl %edx, 64(%eax,%ecx,4) 4348; DARWIN-32-PIC-NEXT: retl 4349; 4350; DARWIN-64-STATIC-LABEL: off08: 4351; DARWIN-64-STATIC: ## %bb.0: ## %entry 4352; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 4353; DARWIN-64-STATIC-NEXT: movl 64(%rax,%rdi,4), %eax 4354; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 4355; DARWIN-64-STATIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4356; DARWIN-64-STATIC-NEXT: retq 4357; 4358; DARWIN-64-DYNAMIC-LABEL: off08: 4359; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4360; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 4361; DARWIN-64-DYNAMIC-NEXT: movl 64(%rax,%rdi,4), %eax 4362; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 4363; DARWIN-64-DYNAMIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4364; DARWIN-64-DYNAMIC-NEXT: retq 4365; 4366; DARWIN-64-PIC-LABEL: off08: 4367; DARWIN-64-PIC: ## %bb.0: ## %entry 4368; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 4369; DARWIN-64-PIC-NEXT: movl 64(%rax,%rdi,4), %eax 4370; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 4371; DARWIN-64-PIC-NEXT: movl %eax, 64(%rcx,%rdi,4) 4372; DARWIN-64-PIC-NEXT: retq 4373 4374entry: 4375 %0 = load ptr, ptr @lptr, align 8 4376 %1 = add i64 %i, 16 4377 %2 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %1 4378 %3 = load i32, ptr %2, align 4 4379 %4 = getelementptr i32, ptr %0, i64 %1 4380 store i32 %3, ptr %4, align 4 4381 ret void 4382} 4383 4384define dso_local void @moo00(i64 %i) nounwind { 4385; LINUX-64-STATIC-LABEL: moo00: 4386; LINUX-64-STATIC: # %bb.0: # %entry 4387; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 4388; LINUX-64-STATIC-NEXT: movl 262144(%rax), %eax 4389; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 4390; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4391; LINUX-64-STATIC-NEXT: retq 4392; 4393; LINUX-32-STATIC-LABEL: moo00: 4394; LINUX-32-STATIC: # %bb.0: # %entry 4395; LINUX-32-STATIC-NEXT: movl src+262144, %eax 4396; LINUX-32-STATIC-NEXT: movl %eax, dst+262144 4397; LINUX-32-STATIC-NEXT: retl 4398; 4399; LINUX-32-PIC-LABEL: moo00: 4400; LINUX-32-PIC: # %bb.0: # %entry 4401; LINUX-32-PIC-NEXT: calll .L48$pb 4402; LINUX-32-PIC-NEXT: .L48$pb: 4403; LINUX-32-PIC-NEXT: popl %eax 4404; LINUX-32-PIC-NEXT: .Ltmp48: 4405; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp48-.L48$pb), %eax 4406; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 4407; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4408; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 4409; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4410; LINUX-32-PIC-NEXT: retl 4411; 4412; LINUX-64-PIC-LABEL: moo00: 4413; LINUX-64-PIC: # %bb.0: # %entry 4414; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 4415; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4416; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 4417; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4418; LINUX-64-PIC-NEXT: retq 4419; 4420; DARWIN-32-STATIC-LABEL: moo00: 4421; DARWIN-32-STATIC: ## %bb.0: ## %entry 4422; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax 4423; DARWIN-32-STATIC-NEXT: movl %eax, _dst+262144 4424; DARWIN-32-STATIC-NEXT: retl 4425; 4426; DARWIN-32-DYNAMIC-LABEL: moo00: 4427; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4428; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 4429; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax 4430; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 4431; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4432; DARWIN-32-DYNAMIC-NEXT: retl 4433; 4434; DARWIN-32-PIC-LABEL: moo00: 4435; DARWIN-32-PIC: ## %bb.0: ## %entry 4436; DARWIN-32-PIC-NEXT: calll L48$pb 4437; DARWIN-32-PIC-NEXT: L48$pb: 4438; DARWIN-32-PIC-NEXT: popl %eax 4439; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L48$pb(%eax), %ecx 4440; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx 4441; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L48$pb(%eax), %eax 4442; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4443; DARWIN-32-PIC-NEXT: retl 4444; 4445; DARWIN-64-STATIC-LABEL: moo00: 4446; DARWIN-64-STATIC: ## %bb.0: ## %entry 4447; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4448; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax 4449; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4450; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4451; DARWIN-64-STATIC-NEXT: retq 4452; 4453; DARWIN-64-DYNAMIC-LABEL: moo00: 4454; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4455; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4456; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax 4457; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4458; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4459; DARWIN-64-DYNAMIC-NEXT: retq 4460; 4461; DARWIN-64-PIC-LABEL: moo00: 4462; DARWIN-64-PIC: ## %bb.0: ## %entry 4463; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4464; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax 4465; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 4466; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4467; DARWIN-64-PIC-NEXT: retq 4468 4469entry: 4470 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536), align 4 4471 store i32 %0, ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536), align 4 4472 ret void 4473} 4474 4475define dso_local void @moo01(i64 %i) nounwind { 4476; LINUX-64-STATIC-LABEL: moo01: 4477; LINUX-64-STATIC: # %bb.0: # %entry 4478; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 4479; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rax 4480; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4481; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 4482; LINUX-64-STATIC-NEXT: retq 4483; 4484; LINUX-32-STATIC-LABEL: moo01: 4485; LINUX-32-STATIC: # %bb.0: # %entry 4486; LINUX-32-STATIC-NEXT: leal dst+262144, %eax 4487; LINUX-32-STATIC-NEXT: movl %eax, ptr 4488; LINUX-32-STATIC-NEXT: retl 4489; 4490; LINUX-32-PIC-LABEL: moo01: 4491; LINUX-32-PIC: # %bb.0: # %entry 4492; LINUX-32-PIC-NEXT: calll .L49$pb 4493; LINUX-32-PIC-NEXT: .L49$pb: 4494; LINUX-32-PIC-NEXT: popl %eax 4495; LINUX-32-PIC-NEXT: .Ltmp49: 4496; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp49-.L49$pb), %eax 4497; LINUX-32-PIC-NEXT: movl $262144, %ecx # imm = 0x40000 4498; LINUX-32-PIC-NEXT: addl dst@GOT(%eax), %ecx 4499; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 4500; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 4501; LINUX-32-PIC-NEXT: retl 4502; 4503; LINUX-64-PIC-LABEL: moo01: 4504; LINUX-64-PIC: # %bb.0: # %entry 4505; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 4506; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax 4507; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4508; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 4509; LINUX-64-PIC-NEXT: retq 4510; 4511; DARWIN-32-STATIC-LABEL: moo01: 4512; DARWIN-32-STATIC: ## %bb.0: ## %entry 4513; DARWIN-32-STATIC-NEXT: movl $_dst+262144, _ptr 4514; DARWIN-32-STATIC-NEXT: retl 4515; 4516; DARWIN-32-DYNAMIC-LABEL: moo01: 4517; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4518; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 4519; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 4520; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 4521; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 4522; DARWIN-32-DYNAMIC-NEXT: retl 4523; 4524; DARWIN-32-PIC-LABEL: moo01: 4525; DARWIN-32-PIC: ## %bb.0: ## %entry 4526; DARWIN-32-PIC-NEXT: calll L49$pb 4527; DARWIN-32-PIC-NEXT: L49$pb: 4528; DARWIN-32-PIC-NEXT: popl %eax 4529; DARWIN-32-PIC-NEXT: movl $262144, %ecx ## imm = 0x40000 4530; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L49$pb(%eax), %ecx 4531; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L49$pb(%eax), %eax 4532; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 4533; DARWIN-32-PIC-NEXT: retl 4534; 4535; DARWIN-64-STATIC-LABEL: moo01: 4536; DARWIN-64-STATIC: ## %bb.0: ## %entry 4537; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 4538; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4539; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4540; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 4541; DARWIN-64-STATIC-NEXT: retq 4542; 4543; DARWIN-64-DYNAMIC-LABEL: moo01: 4544; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4545; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 4546; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4547; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4548; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 4549; DARWIN-64-DYNAMIC-NEXT: retq 4550; 4551; DARWIN-64-PIC-LABEL: moo01: 4552; DARWIN-64-PIC: ## %bb.0: ## %entry 4553; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 4554; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 4555; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4556; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 4557; DARWIN-64-PIC-NEXT: retq 4558 4559entry: 4560 store ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536), ptr @ptr, align 8 4561 ret void 4562} 4563 4564define dso_local void @moo02(i64 %i) nounwind { 4565; LINUX-64-STATIC-LABEL: moo02: 4566; LINUX-64-STATIC: # %bb.0: # %entry 4567; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 4568; LINUX-64-STATIC-NEXT: movl 262144(%rax), %eax 4569; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4570; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 4571; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4572; LINUX-64-STATIC-NEXT: retq 4573; 4574; LINUX-32-STATIC-LABEL: moo02: 4575; LINUX-32-STATIC: # %bb.0: # %entry 4576; LINUX-32-STATIC-NEXT: movl src+262144, %eax 4577; LINUX-32-STATIC-NEXT: movl ptr, %ecx 4578; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4579; LINUX-32-STATIC-NEXT: retl 4580; 4581; LINUX-32-PIC-LABEL: moo02: 4582; LINUX-32-PIC: # %bb.0: # %entry 4583; LINUX-32-PIC-NEXT: calll .L50$pb 4584; LINUX-32-PIC-NEXT: .L50$pb: 4585; LINUX-32-PIC-NEXT: popl %eax 4586; LINUX-32-PIC-NEXT: .Ltmp50: 4587; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp50-.L50$pb), %eax 4588; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %ecx 4589; LINUX-32-PIC-NEXT: movl 262144(%ecx), %ecx 4590; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 4591; LINUX-32-PIC-NEXT: movl (%eax), %eax 4592; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4593; LINUX-32-PIC-NEXT: retl 4594; 4595; LINUX-64-PIC-LABEL: moo02: 4596; LINUX-64-PIC: # %bb.0: # %entry 4597; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 4598; LINUX-64-PIC-NEXT: movl 262144(%rax), %eax 4599; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 4600; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 4601; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4602; LINUX-64-PIC-NEXT: retq 4603; 4604; DARWIN-32-STATIC-LABEL: moo02: 4605; DARWIN-32-STATIC: ## %bb.0: ## %entry 4606; DARWIN-32-STATIC-NEXT: movl _src+262144, %eax 4607; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 4608; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4609; DARWIN-32-STATIC-NEXT: retl 4610; 4611; DARWIN-32-DYNAMIC-LABEL: moo02: 4612; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4613; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 4614; DARWIN-32-DYNAMIC-NEXT: movl 262144(%eax), %eax 4615; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 4616; DARWIN-32-DYNAMIC-NEXT: movl (%ecx), %ecx 4617; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4618; DARWIN-32-DYNAMIC-NEXT: retl 4619; 4620; DARWIN-32-PIC-LABEL: moo02: 4621; DARWIN-32-PIC: ## %bb.0: ## %entry 4622; DARWIN-32-PIC-NEXT: calll L50$pb 4623; DARWIN-32-PIC-NEXT: L50$pb: 4624; DARWIN-32-PIC-NEXT: popl %eax 4625; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L50$pb(%eax), %ecx 4626; DARWIN-32-PIC-NEXT: movl 262144(%ecx), %ecx 4627; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L50$pb(%eax), %eax 4628; DARWIN-32-PIC-NEXT: movl (%eax), %eax 4629; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4630; DARWIN-32-PIC-NEXT: retl 4631; 4632; DARWIN-64-STATIC-LABEL: moo02: 4633; DARWIN-64-STATIC: ## %bb.0: ## %entry 4634; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4635; DARWIN-64-STATIC-NEXT: movl 262144(%rax), %eax 4636; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4637; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 4638; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4639; DARWIN-64-STATIC-NEXT: retq 4640; 4641; DARWIN-64-DYNAMIC-LABEL: moo02: 4642; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4643; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4644; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax), %eax 4645; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4646; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 4647; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4648; DARWIN-64-DYNAMIC-NEXT: retq 4649; 4650; DARWIN-64-PIC-LABEL: moo02: 4651; DARWIN-64-PIC: ## %bb.0: ## %entry 4652; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 4653; DARWIN-64-PIC-NEXT: movl 262144(%rax), %eax 4654; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 4655; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 4656; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4657; DARWIN-64-PIC-NEXT: retq 4658 4659entry: 4660 %0 = load ptr, ptr @ptr, align 8 4661 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536), align 4 4662 %2 = getelementptr i32, ptr %0, i64 65536 4663 store i32 %1, ptr %2, align 4 4664 ret void 4665} 4666 4667define dso_local void @moo03(i64 %i) nounwind { 4668; LINUX-64-STATIC-LABEL: moo03: 4669; LINUX-64-STATIC: # %bb.0: # %entry 4670; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax 4671; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(%rip) 4672; LINUX-64-STATIC-NEXT: retq 4673; 4674; LINUX-32-STATIC-LABEL: moo03: 4675; LINUX-32-STATIC: # %bb.0: # %entry 4676; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax 4677; LINUX-32-STATIC-NEXT: movl %eax, ddst+262144 4678; LINUX-32-STATIC-NEXT: retl 4679; 4680; LINUX-32-PIC-LABEL: moo03: 4681; LINUX-32-PIC: # %bb.0: # %entry 4682; LINUX-32-PIC-NEXT: calll .L51$pb 4683; LINUX-32-PIC-NEXT: .L51$pb: 4684; LINUX-32-PIC-NEXT: popl %eax 4685; LINUX-32-PIC-NEXT: .Ltmp51: 4686; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp51-.L51$pb), %eax 4687; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx 4688; LINUX-32-PIC-NEXT: movl %ecx, .Lddst$local@GOTOFF+262144(%eax) 4689; LINUX-32-PIC-NEXT: retl 4690; 4691; LINUX-64-PIC-LABEL: moo03: 4692; LINUX-64-PIC: # %bb.0: # %entry 4693; LINUX-64-PIC-NEXT: movl .Ldsrc$local+262144(%rip), %eax 4694; LINUX-64-PIC-NEXT: movl %eax, .Lddst$local+262144(%rip) 4695; LINUX-64-PIC-NEXT: retq 4696; 4697; DARWIN-32-STATIC-LABEL: moo03: 4698; DARWIN-32-STATIC: ## %bb.0: ## %entry 4699; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax 4700; DARWIN-32-STATIC-NEXT: movl %eax, _ddst+262144 4701; DARWIN-32-STATIC-NEXT: retl 4702; 4703; DARWIN-32-DYNAMIC-LABEL: moo03: 4704; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4705; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax 4706; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ddst+262144 4707; DARWIN-32-DYNAMIC-NEXT: retl 4708; 4709; DARWIN-32-PIC-LABEL: moo03: 4710; DARWIN-32-PIC: ## %bb.0: ## %entry 4711; DARWIN-32-PIC-NEXT: calll L51$pb 4712; DARWIN-32-PIC-NEXT: L51$pb: 4713; DARWIN-32-PIC-NEXT: popl %eax 4714; DARWIN-32-PIC-NEXT: movl (_dsrc-L51$pb)+262144(%eax), %ecx 4715; DARWIN-32-PIC-NEXT: movl %ecx, (_ddst-L51$pb)+262144(%eax) 4716; DARWIN-32-PIC-NEXT: retl 4717; 4718; DARWIN-64-STATIC-LABEL: moo03: 4719; DARWIN-64-STATIC: ## %bb.0: ## %entry 4720; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax 4721; DARWIN-64-STATIC-NEXT: movl %eax, _ddst+262144(%rip) 4722; DARWIN-64-STATIC-NEXT: retq 4723; 4724; DARWIN-64-DYNAMIC-LABEL: moo03: 4725; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4726; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax 4727; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ddst+262144(%rip) 4728; DARWIN-64-DYNAMIC-NEXT: retq 4729; 4730; DARWIN-64-PIC-LABEL: moo03: 4731; DARWIN-64-PIC: ## %bb.0: ## %entry 4732; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax 4733; DARWIN-64-PIC-NEXT: movl %eax, _ddst+262144(%rip) 4734; DARWIN-64-PIC-NEXT: retq 4735 4736entry: 4737 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536), align 32 4738 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536), align 32 4739 ret void 4740} 4741 4742define dso_local void @moo04(i64 %i) nounwind { 4743; LINUX-64-STATIC-LABEL: moo04: 4744; LINUX-64-STATIC: # %bb.0: # %entry 4745; LINUX-64-STATIC-NEXT: movq $ddst+262144, dptr(%rip) 4746; LINUX-64-STATIC-NEXT: retq 4747; 4748; LINUX-32-STATIC-LABEL: moo04: 4749; LINUX-32-STATIC: # %bb.0: # %entry 4750; LINUX-32-STATIC-NEXT: movl $ddst+262144, dptr 4751; LINUX-32-STATIC-NEXT: retl 4752; 4753; LINUX-32-PIC-LABEL: moo04: 4754; LINUX-32-PIC: # %bb.0: # %entry 4755; LINUX-32-PIC-NEXT: calll .L52$pb 4756; LINUX-32-PIC-NEXT: .L52$pb: 4757; LINUX-32-PIC-NEXT: popl %eax 4758; LINUX-32-PIC-NEXT: .Ltmp52: 4759; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp52-.L52$pb), %eax 4760; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax), %ecx 4761; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 4762; LINUX-32-PIC-NEXT: retl 4763; 4764; LINUX-64-PIC-LABEL: moo04: 4765; LINUX-64-PIC: # %bb.0: # %entry 4766; LINUX-64-PIC-NEXT: leaq .Lddst$local+262144(%rip), %rax 4767; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 4768; LINUX-64-PIC-NEXT: retq 4769; 4770; DARWIN-32-STATIC-LABEL: moo04: 4771; DARWIN-32-STATIC: ## %bb.0: ## %entry 4772; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, _dptr 4773; DARWIN-32-STATIC-NEXT: retl 4774; 4775; DARWIN-32-DYNAMIC-LABEL: moo04: 4776; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4777; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, _dptr 4778; DARWIN-32-DYNAMIC-NEXT: retl 4779; 4780; DARWIN-32-PIC-LABEL: moo04: 4781; DARWIN-32-PIC: ## %bb.0: ## %entry 4782; DARWIN-32-PIC-NEXT: calll L52$pb 4783; DARWIN-32-PIC-NEXT: L52$pb: 4784; DARWIN-32-PIC-NEXT: popl %eax 4785; DARWIN-32-PIC-NEXT: leal (_ddst-L52$pb)+262144(%eax), %ecx 4786; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L52$pb(%eax) 4787; DARWIN-32-PIC-NEXT: retl 4788; 4789; DARWIN-64-STATIC-LABEL: moo04: 4790; DARWIN-64-STATIC: ## %bb.0: ## %entry 4791; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax 4792; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 4793; DARWIN-64-STATIC-NEXT: retq 4794; 4795; DARWIN-64-DYNAMIC-LABEL: moo04: 4796; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4797; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax 4798; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 4799; DARWIN-64-DYNAMIC-NEXT: retq 4800; 4801; DARWIN-64-PIC-LABEL: moo04: 4802; DARWIN-64-PIC: ## %bb.0: ## %entry 4803; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax 4804; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 4805; DARWIN-64-PIC-NEXT: retq 4806 4807entry: 4808 store ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536), ptr @dptr, align 8 4809 ret void 4810} 4811 4812define dso_local void @moo05(i64 %i) nounwind { 4813; LINUX-64-STATIC-LABEL: moo05: 4814; LINUX-64-STATIC: # %bb.0: # %entry 4815; LINUX-64-STATIC-NEXT: movl dsrc+262144(%rip), %eax 4816; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 4817; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4818; LINUX-64-STATIC-NEXT: retq 4819; 4820; LINUX-32-STATIC-LABEL: moo05: 4821; LINUX-32-STATIC: # %bb.0: # %entry 4822; LINUX-32-STATIC-NEXT: movl dsrc+262144, %eax 4823; LINUX-32-STATIC-NEXT: movl dptr, %ecx 4824; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4825; LINUX-32-STATIC-NEXT: retl 4826; 4827; LINUX-32-PIC-LABEL: moo05: 4828; LINUX-32-PIC: # %bb.0: # %entry 4829; LINUX-32-PIC-NEXT: calll .L53$pb 4830; LINUX-32-PIC-NEXT: .L53$pb: 4831; LINUX-32-PIC-NEXT: popl %eax 4832; LINUX-32-PIC-NEXT: .Ltmp53: 4833; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp53-.L53$pb), %eax 4834; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax), %ecx 4835; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 4836; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 4837; LINUX-32-PIC-NEXT: retl 4838; 4839; LINUX-64-PIC-LABEL: moo05: 4840; LINUX-64-PIC: # %bb.0: # %entry 4841; LINUX-64-PIC-NEXT: movl .Ldsrc$local+262144(%rip), %eax 4842; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 4843; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 4844; LINUX-64-PIC-NEXT: retq 4845; 4846; DARWIN-32-STATIC-LABEL: moo05: 4847; DARWIN-32-STATIC: ## %bb.0: ## %entry 4848; DARWIN-32-STATIC-NEXT: movl _dsrc+262144, %eax 4849; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 4850; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 4851; DARWIN-32-STATIC-NEXT: retl 4852; 4853; DARWIN-32-DYNAMIC-LABEL: moo05: 4854; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4855; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144, %eax 4856; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 4857; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 4858; DARWIN-32-DYNAMIC-NEXT: retl 4859; 4860; DARWIN-32-PIC-LABEL: moo05: 4861; DARWIN-32-PIC: ## %bb.0: ## %entry 4862; DARWIN-32-PIC-NEXT: calll L53$pb 4863; DARWIN-32-PIC-NEXT: L53$pb: 4864; DARWIN-32-PIC-NEXT: popl %eax 4865; DARWIN-32-PIC-NEXT: movl (_dsrc-L53$pb)+262144(%eax), %ecx 4866; DARWIN-32-PIC-NEXT: movl _dptr-L53$pb(%eax), %eax 4867; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 4868; DARWIN-32-PIC-NEXT: retl 4869; 4870; DARWIN-64-STATIC-LABEL: moo05: 4871; DARWIN-64-STATIC: ## %bb.0: ## %entry 4872; DARWIN-64-STATIC-NEXT: movl _dsrc+262144(%rip), %eax 4873; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 4874; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 4875; DARWIN-64-STATIC-NEXT: retq 4876; 4877; DARWIN-64-DYNAMIC-LABEL: moo05: 4878; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4879; DARWIN-64-DYNAMIC-NEXT: movl _dsrc+262144(%rip), %eax 4880; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 4881; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 4882; DARWIN-64-DYNAMIC-NEXT: retq 4883; 4884; DARWIN-64-PIC-LABEL: moo05: 4885; DARWIN-64-PIC: ## %bb.0: ## %entry 4886; DARWIN-64-PIC-NEXT: movl _dsrc+262144(%rip), %eax 4887; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 4888; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 4889; DARWIN-64-PIC-NEXT: retq 4890 4891entry: 4892 %0 = load ptr, ptr @dptr, align 8 4893 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536), align 32 4894 %2 = getelementptr i32, ptr %0, i64 65536 4895 store i32 %1, ptr %2, align 4 4896 ret void 4897} 4898 4899define dso_local void @moo06(i64 %i) nounwind { 4900; LINUX-64-STATIC-LABEL: moo06: 4901; LINUX-64-STATIC: # %bb.0: # %entry 4902; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax 4903; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(%rip) 4904; LINUX-64-STATIC-NEXT: retq 4905; 4906; LINUX-32-STATIC-LABEL: moo06: 4907; LINUX-32-STATIC: # %bb.0: # %entry 4908; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax 4909; LINUX-32-STATIC-NEXT: movl %eax, ldst+262144 4910; LINUX-32-STATIC-NEXT: retl 4911; 4912; LINUX-32-PIC-LABEL: moo06: 4913; LINUX-32-PIC: # %bb.0: # %entry 4914; LINUX-32-PIC-NEXT: calll .L54$pb 4915; LINUX-32-PIC-NEXT: .L54$pb: 4916; LINUX-32-PIC-NEXT: popl %eax 4917; LINUX-32-PIC-NEXT: .Ltmp54: 4918; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp54-.L54$pb), %eax 4919; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx 4920; LINUX-32-PIC-NEXT: movl %ecx, ldst@GOTOFF+262144(%eax) 4921; LINUX-32-PIC-NEXT: retl 4922; 4923; LINUX-64-PIC-LABEL: moo06: 4924; LINUX-64-PIC: # %bb.0: # %entry 4925; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax 4926; LINUX-64-PIC-NEXT: movl %eax, ldst+262144(%rip) 4927; LINUX-64-PIC-NEXT: retq 4928; 4929; DARWIN-32-STATIC-LABEL: moo06: 4930; DARWIN-32-STATIC: ## %bb.0: ## %entry 4931; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax 4932; DARWIN-32-STATIC-NEXT: movl %eax, _ldst+262144 4933; DARWIN-32-STATIC-NEXT: retl 4934; 4935; DARWIN-32-DYNAMIC-LABEL: moo06: 4936; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 4937; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax 4938; DARWIN-32-DYNAMIC-NEXT: movl %eax, _ldst+262144 4939; DARWIN-32-DYNAMIC-NEXT: retl 4940; 4941; DARWIN-32-PIC-LABEL: moo06: 4942; DARWIN-32-PIC: ## %bb.0: ## %entry 4943; DARWIN-32-PIC-NEXT: calll L54$pb 4944; DARWIN-32-PIC-NEXT: L54$pb: 4945; DARWIN-32-PIC-NEXT: popl %eax 4946; DARWIN-32-PIC-NEXT: movl (_lsrc-L54$pb)+262144(%eax), %ecx 4947; DARWIN-32-PIC-NEXT: movl %ecx, (_ldst-L54$pb)+262144(%eax) 4948; DARWIN-32-PIC-NEXT: retl 4949; 4950; DARWIN-64-STATIC-LABEL: moo06: 4951; DARWIN-64-STATIC: ## %bb.0: ## %entry 4952; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax 4953; DARWIN-64-STATIC-NEXT: movl %eax, _ldst+262144(%rip) 4954; DARWIN-64-STATIC-NEXT: retq 4955; 4956; DARWIN-64-DYNAMIC-LABEL: moo06: 4957; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 4958; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax 4959; DARWIN-64-DYNAMIC-NEXT: movl %eax, _ldst+262144(%rip) 4960; DARWIN-64-DYNAMIC-NEXT: retq 4961; 4962; DARWIN-64-PIC-LABEL: moo06: 4963; DARWIN-64-PIC: ## %bb.0: ## %entry 4964; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax 4965; DARWIN-64-PIC-NEXT: movl %eax, _ldst+262144(%rip) 4966; DARWIN-64-PIC-NEXT: retq 4967 4968entry: 4969 %0 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536), align 4 4970 store i32 %0, ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536), align 4 4971 ret void 4972} 4973 4974define dso_local void @moo07(i64 %i) nounwind { 4975; LINUX-64-STATIC-LABEL: moo07: 4976; LINUX-64-STATIC: # %bb.0: # %entry 4977; LINUX-64-STATIC-NEXT: movq $ldst+262144, lptr(%rip) 4978; LINUX-64-STATIC-NEXT: retq 4979; 4980; LINUX-32-STATIC-LABEL: moo07: 4981; LINUX-32-STATIC: # %bb.0: # %entry 4982; LINUX-32-STATIC-NEXT: movl $ldst+262144, lptr 4983; LINUX-32-STATIC-NEXT: retl 4984; 4985; LINUX-32-PIC-LABEL: moo07: 4986; LINUX-32-PIC: # %bb.0: # %entry 4987; LINUX-32-PIC-NEXT: calll .L55$pb 4988; LINUX-32-PIC-NEXT: .L55$pb: 4989; LINUX-32-PIC-NEXT: popl %eax 4990; LINUX-32-PIC-NEXT: .Ltmp55: 4991; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp55-.L55$pb), %eax 4992; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %ecx 4993; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 4994; LINUX-32-PIC-NEXT: retl 4995; 4996; LINUX-64-PIC-LABEL: moo07: 4997; LINUX-64-PIC: # %bb.0: # %entry 4998; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax 4999; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 5000; LINUX-64-PIC-NEXT: retq 5001; 5002; DARWIN-32-STATIC-LABEL: moo07: 5003; DARWIN-32-STATIC: ## %bb.0: ## %entry 5004; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, _lptr 5005; DARWIN-32-STATIC-NEXT: retl 5006; 5007; DARWIN-32-DYNAMIC-LABEL: moo07: 5008; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5009; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, _lptr 5010; DARWIN-32-DYNAMIC-NEXT: retl 5011; 5012; DARWIN-32-PIC-LABEL: moo07: 5013; DARWIN-32-PIC: ## %bb.0: ## %entry 5014; DARWIN-32-PIC-NEXT: calll L55$pb 5015; DARWIN-32-PIC-NEXT: L55$pb: 5016; DARWIN-32-PIC-NEXT: popl %eax 5017; DARWIN-32-PIC-NEXT: leal (_ldst-L55$pb)+262144(%eax), %ecx 5018; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L55$pb(%eax) 5019; DARWIN-32-PIC-NEXT: retl 5020; 5021; DARWIN-64-STATIC-LABEL: moo07: 5022; DARWIN-64-STATIC: ## %bb.0: ## %entry 5023; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax 5024; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 5025; DARWIN-64-STATIC-NEXT: retq 5026; 5027; DARWIN-64-DYNAMIC-LABEL: moo07: 5028; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5029; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax 5030; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 5031; DARWIN-64-DYNAMIC-NEXT: retq 5032; 5033; DARWIN-64-PIC-LABEL: moo07: 5034; DARWIN-64-PIC: ## %bb.0: ## %entry 5035; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax 5036; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 5037; DARWIN-64-PIC-NEXT: retq 5038 5039entry: 5040 store ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536), ptr @lptr, align 8 5041 ret void 5042} 5043 5044define dso_local void @moo08(i64 %i) nounwind { 5045; LINUX-64-STATIC-LABEL: moo08: 5046; LINUX-64-STATIC: # %bb.0: # %entry 5047; LINUX-64-STATIC-NEXT: movl lsrc+262144(%rip), %eax 5048; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 5049; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx) 5050; LINUX-64-STATIC-NEXT: retq 5051; 5052; LINUX-32-STATIC-LABEL: moo08: 5053; LINUX-32-STATIC: # %bb.0: # %entry 5054; LINUX-32-STATIC-NEXT: movl lsrc+262144, %eax 5055; LINUX-32-STATIC-NEXT: movl lptr, %ecx 5056; LINUX-32-STATIC-NEXT: movl %eax, 262144(%ecx) 5057; LINUX-32-STATIC-NEXT: retl 5058; 5059; LINUX-32-PIC-LABEL: moo08: 5060; LINUX-32-PIC: # %bb.0: # %entry 5061; LINUX-32-PIC-NEXT: calll .L56$pb 5062; LINUX-32-PIC-NEXT: .L56$pb: 5063; LINUX-32-PIC-NEXT: popl %eax 5064; LINUX-32-PIC-NEXT: .Ltmp56: 5065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp56-.L56$pb), %eax 5066; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax), %ecx 5067; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 5068; LINUX-32-PIC-NEXT: movl %ecx, 262144(%eax) 5069; LINUX-32-PIC-NEXT: retl 5070; 5071; LINUX-64-PIC-LABEL: moo08: 5072; LINUX-64-PIC: # %bb.0: # %entry 5073; LINUX-64-PIC-NEXT: movl lsrc+262144(%rip), %eax 5074; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 5075; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx) 5076; LINUX-64-PIC-NEXT: retq 5077; 5078; DARWIN-32-STATIC-LABEL: moo08: 5079; DARWIN-32-STATIC: ## %bb.0: ## %entry 5080; DARWIN-32-STATIC-NEXT: movl _lsrc+262144, %eax 5081; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 5082; DARWIN-32-STATIC-NEXT: movl %eax, 262144(%ecx) 5083; DARWIN-32-STATIC-NEXT: retl 5084; 5085; DARWIN-32-DYNAMIC-LABEL: moo08: 5086; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5087; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144, %eax 5088; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 5089; DARWIN-32-DYNAMIC-NEXT: movl %eax, 262144(%ecx) 5090; DARWIN-32-DYNAMIC-NEXT: retl 5091; 5092; DARWIN-32-PIC-LABEL: moo08: 5093; DARWIN-32-PIC: ## %bb.0: ## %entry 5094; DARWIN-32-PIC-NEXT: calll L56$pb 5095; DARWIN-32-PIC-NEXT: L56$pb: 5096; DARWIN-32-PIC-NEXT: popl %eax 5097; DARWIN-32-PIC-NEXT: movl (_lsrc-L56$pb)+262144(%eax), %ecx 5098; DARWIN-32-PIC-NEXT: movl _lptr-L56$pb(%eax), %eax 5099; DARWIN-32-PIC-NEXT: movl %ecx, 262144(%eax) 5100; DARWIN-32-PIC-NEXT: retl 5101; 5102; DARWIN-64-STATIC-LABEL: moo08: 5103; DARWIN-64-STATIC: ## %bb.0: ## %entry 5104; DARWIN-64-STATIC-NEXT: movl _lsrc+262144(%rip), %eax 5105; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 5106; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx) 5107; DARWIN-64-STATIC-NEXT: retq 5108; 5109; DARWIN-64-DYNAMIC-LABEL: moo08: 5110; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5111; DARWIN-64-DYNAMIC-NEXT: movl _lsrc+262144(%rip), %eax 5112; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 5113; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx) 5114; DARWIN-64-DYNAMIC-NEXT: retq 5115; 5116; DARWIN-64-PIC-LABEL: moo08: 5117; DARWIN-64-PIC: ## %bb.0: ## %entry 5118; DARWIN-64-PIC-NEXT: movl _lsrc+262144(%rip), %eax 5119; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 5120; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx) 5121; DARWIN-64-PIC-NEXT: retq 5122 5123entry: 5124 %0 = load ptr, ptr @lptr, align 8 5125 %1 = load i32, ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536), align 4 5126 %2 = getelementptr i32, ptr %0, i64 65536 5127 store i32 %1, ptr %2, align 4 5128 ret void 5129} 5130 5131define dso_local void @big00(i64 %i) nounwind { 5132; LINUX-64-STATIC-LABEL: big00: 5133; LINUX-64-STATIC: # %bb.0: # %entry 5134; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 5135; LINUX-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5136; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 5137; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5138; LINUX-64-STATIC-NEXT: retq 5139; 5140; LINUX-32-STATIC-LABEL: big00: 5141; LINUX-32-STATIC: # %bb.0: # %entry 5142; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5143; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx 5144; LINUX-32-STATIC-NEXT: movl %ecx, dst+262144(,%eax,4) 5145; LINUX-32-STATIC-NEXT: retl 5146; 5147; LINUX-32-PIC-LABEL: big00: 5148; LINUX-32-PIC: # %bb.0: # %entry 5149; LINUX-32-PIC-NEXT: calll .L57$pb 5150; LINUX-32-PIC-NEXT: .L57$pb: 5151; LINUX-32-PIC-NEXT: popl %eax 5152; LINUX-32-PIC-NEXT: .Ltmp57: 5153; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp57-.L57$pb), %eax 5154; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5155; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 5156; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5157; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 5158; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5159; LINUX-32-PIC-NEXT: retl 5160; 5161; LINUX-64-PIC-LABEL: big00: 5162; LINUX-64-PIC: # %bb.0: # %entry 5163; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 5164; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5165; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rcx 5166; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5167; LINUX-64-PIC-NEXT: retq 5168; 5169; DARWIN-32-STATIC-LABEL: big00: 5170; DARWIN-32-STATIC: ## %bb.0: ## %entry 5171; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5172; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx 5173; DARWIN-32-STATIC-NEXT: movl %ecx, _dst+262144(,%eax,4) 5174; DARWIN-32-STATIC-NEXT: retl 5175; 5176; DARWIN-32-DYNAMIC-LABEL: big00: 5177; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5178; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5179; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 5180; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx 5181; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %edx 5182; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5183; DARWIN-32-DYNAMIC-NEXT: retl 5184; 5185; DARWIN-32-PIC-LABEL: big00: 5186; DARWIN-32-PIC: ## %bb.0: ## %entry 5187; DARWIN-32-PIC-NEXT: calll L57$pb 5188; DARWIN-32-PIC-NEXT: L57$pb: 5189; DARWIN-32-PIC-NEXT: popl %eax 5190; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5191; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L57$pb(%eax), %edx 5192; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5193; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L57$pb(%eax), %eax 5194; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5195; DARWIN-32-PIC-NEXT: retl 5196; 5197; DARWIN-64-STATIC-LABEL: big00: 5198; DARWIN-64-STATIC: ## %bb.0: ## %entry 5199; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5200; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5201; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5202; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5203; DARWIN-64-STATIC-NEXT: retq 5204; 5205; DARWIN-64-DYNAMIC-LABEL: big00: 5206; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5207; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5208; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5209; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5210; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5211; DARWIN-64-DYNAMIC-NEXT: retq 5212; 5213; DARWIN-64-PIC-LABEL: big00: 5214; DARWIN-64-PIC: ## %bb.0: ## %entry 5215; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5216; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5217; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rcx 5218; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5219; DARWIN-64-PIC-NEXT: retq 5220 5221entry: 5222 %0 = add i64 %i, 65536 5223 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0 5224 %2 = load i32, ptr %1, align 4 5225 %3 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0 5226 store i32 %2, ptr %3, align 4 5227 ret void 5228} 5229 5230define dso_local void @big01(i64 %i) nounwind { 5231; LINUX-64-STATIC-LABEL: big01: 5232; LINUX-64-STATIC: # %bb.0: # %entry 5233; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 5234; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5235; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5236; LINUX-64-STATIC-NEXT: movq %rax, (%rcx) 5237; LINUX-64-STATIC-NEXT: retq 5238; 5239; LINUX-32-STATIC-LABEL: big01: 5240; LINUX-32-STATIC: # %bb.0: # %entry 5241; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5242; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax 5243; LINUX-32-STATIC-NEXT: movl %eax, ptr 5244; LINUX-32-STATIC-NEXT: retl 5245; 5246; LINUX-32-PIC-LABEL: big01: 5247; LINUX-32-PIC: # %bb.0: # %entry 5248; LINUX-32-PIC-NEXT: calll .L58$pb 5249; LINUX-32-PIC-NEXT: .L58$pb: 5250; LINUX-32-PIC-NEXT: popl %eax 5251; LINUX-32-PIC-NEXT: .Ltmp58: 5252; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp58-.L58$pb), %eax 5253; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5254; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %edx 5255; LINUX-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5256; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 5257; LINUX-32-PIC-NEXT: movl %ecx, (%eax) 5258; LINUX-32-PIC-NEXT: retl 5259; 5260; LINUX-64-PIC-LABEL: big01: 5261; LINUX-64-PIC: # %bb.0: # %entry 5262; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 5263; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5264; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5265; LINUX-64-PIC-NEXT: movq %rax, (%rcx) 5266; LINUX-64-PIC-NEXT: retq 5267; 5268; DARWIN-32-STATIC-LABEL: big01: 5269; DARWIN-32-STATIC: ## %bb.0: ## %entry 5270; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5271; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax 5272; DARWIN-32-STATIC-NEXT: movl %eax, _ptr 5273; DARWIN-32-STATIC-NEXT: retl 5274; 5275; DARWIN-32-DYNAMIC-LABEL: big01: 5276; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5277; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5278; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 5279; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 5280; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 5281; DARWIN-32-DYNAMIC-NEXT: movl %eax, (%ecx) 5282; DARWIN-32-DYNAMIC-NEXT: retl 5283; 5284; DARWIN-32-PIC-LABEL: big01: 5285; DARWIN-32-PIC: ## %bb.0: ## %entry 5286; DARWIN-32-PIC-NEXT: calll L58$pb 5287; DARWIN-32-PIC-NEXT: L58$pb: 5288; DARWIN-32-PIC-NEXT: popl %eax 5289; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5290; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L58$pb(%eax), %edx 5291; DARWIN-32-PIC-NEXT: leal 262144(%edx,%ecx,4), %ecx 5292; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L58$pb(%eax), %eax 5293; DARWIN-32-PIC-NEXT: movl %ecx, (%eax) 5294; DARWIN-32-PIC-NEXT: retl 5295; 5296; DARWIN-64-STATIC-LABEL: big01: 5297; DARWIN-64-STATIC: ## %bb.0: ## %entry 5298; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5299; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5300; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5301; DARWIN-64-STATIC-NEXT: movq %rax, (%rcx) 5302; DARWIN-64-STATIC-NEXT: retq 5303; 5304; DARWIN-64-DYNAMIC-LABEL: big01: 5305; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5306; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5307; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5308; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5309; DARWIN-64-DYNAMIC-NEXT: movq %rax, (%rcx) 5310; DARWIN-64-DYNAMIC-NEXT: retq 5311; 5312; DARWIN-64-PIC-LABEL: big01: 5313; DARWIN-64-PIC: ## %bb.0: ## %entry 5314; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 5315; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5316; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5317; DARWIN-64-PIC-NEXT: movq %rax, (%rcx) 5318; DARWIN-64-PIC-NEXT: retq 5319 5320entry: 5321 %.sum = add i64 %i, 65536 5322 %0 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %.sum 5323 store ptr %0, ptr @ptr, align 8 5324 ret void 5325} 5326 5327define dso_local void @big02(i64 %i) nounwind { 5328; LINUX-64-STATIC-LABEL: big02: 5329; LINUX-64-STATIC: # %bb.0: # %entry 5330; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 5331; LINUX-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5332; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5333; LINUX-64-STATIC-NEXT: movq (%rcx), %rcx 5334; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5335; LINUX-64-STATIC-NEXT: retq 5336; 5337; LINUX-32-STATIC-LABEL: big02: 5338; LINUX-32-STATIC: # %bb.0: # %entry 5339; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5340; LINUX-32-STATIC-NEXT: movl src+262144(,%eax,4), %ecx 5341; LINUX-32-STATIC-NEXT: movl ptr, %edx 5342; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5343; LINUX-32-STATIC-NEXT: retl 5344; 5345; LINUX-32-PIC-LABEL: big02: 5346; LINUX-32-PIC: # %bb.0: # %entry 5347; LINUX-32-PIC-NEXT: calll .L59$pb 5348; LINUX-32-PIC-NEXT: .L59$pb: 5349; LINUX-32-PIC-NEXT: popl %eax 5350; LINUX-32-PIC-NEXT: .Ltmp59: 5351; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp59-.L59$pb), %eax 5352; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5353; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %edx 5354; LINUX-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5355; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 5356; LINUX-32-PIC-NEXT: movl (%eax), %eax 5357; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5358; LINUX-32-PIC-NEXT: retl 5359; 5360; LINUX-64-PIC-LABEL: big02: 5361; LINUX-64-PIC: # %bb.0: # %entry 5362; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 5363; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5364; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 5365; LINUX-64-PIC-NEXT: movq (%rcx), %rcx 5366; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5367; LINUX-64-PIC-NEXT: retq 5368; 5369; DARWIN-32-STATIC-LABEL: big02: 5370; DARWIN-32-STATIC: ## %bb.0: ## %entry 5371; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5372; DARWIN-32-STATIC-NEXT: movl _src+262144(,%eax,4), %ecx 5373; DARWIN-32-STATIC-NEXT: movl _ptr, %edx 5374; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5375; DARWIN-32-STATIC-NEXT: retl 5376; 5377; DARWIN-32-DYNAMIC-LABEL: big02: 5378; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5379; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5380; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 5381; DARWIN-32-DYNAMIC-NEXT: movl 262144(%ecx,%eax,4), %ecx 5382; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %edx 5383; DARWIN-32-DYNAMIC-NEXT: movl (%edx), %edx 5384; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5385; DARWIN-32-DYNAMIC-NEXT: retl 5386; 5387; DARWIN-32-PIC-LABEL: big02: 5388; DARWIN-32-PIC: ## %bb.0: ## %entry 5389; DARWIN-32-PIC-NEXT: calll L59$pb 5390; DARWIN-32-PIC-NEXT: L59$pb: 5391; DARWIN-32-PIC-NEXT: popl %eax 5392; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5393; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L59$pb(%eax), %edx 5394; DARWIN-32-PIC-NEXT: movl 262144(%edx,%ecx,4), %edx 5395; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L59$pb(%eax), %eax 5396; DARWIN-32-PIC-NEXT: movl (%eax), %eax 5397; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5398; DARWIN-32-PIC-NEXT: retl 5399; 5400; DARWIN-64-STATIC-LABEL: big02: 5401; DARWIN-64-STATIC: ## %bb.0: ## %entry 5402; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5403; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5404; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5405; DARWIN-64-STATIC-NEXT: movq (%rcx), %rcx 5406; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5407; DARWIN-64-STATIC-NEXT: retq 5408; 5409; DARWIN-64-DYNAMIC-LABEL: big02: 5410; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5411; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5412; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5413; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5414; DARWIN-64-DYNAMIC-NEXT: movq (%rcx), %rcx 5415; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5416; DARWIN-64-DYNAMIC-NEXT: retq 5417; 5418; DARWIN-64-PIC-LABEL: big02: 5419; DARWIN-64-PIC: ## %bb.0: ## %entry 5420; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 5421; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5422; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 5423; DARWIN-64-PIC-NEXT: movq (%rcx), %rcx 5424; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5425; DARWIN-64-PIC-NEXT: retq 5426 5427entry: 5428 %0 = load ptr, ptr @ptr, align 8 5429 %1 = add i64 %i, 65536 5430 %2 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %1 5431 %3 = load i32, ptr %2, align 4 5432 %4 = getelementptr i32, ptr %0, i64 %1 5433 store i32 %3, ptr %4, align 4 5434 ret void 5435} 5436 5437define dso_local void @big03(i64 %i) nounwind { 5438; LINUX-64-STATIC-LABEL: big03: 5439; LINUX-64-STATIC: # %bb.0: # %entry 5440; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax 5441; LINUX-64-STATIC-NEXT: movl %eax, ddst+262144(,%rdi,4) 5442; LINUX-64-STATIC-NEXT: retq 5443; 5444; LINUX-32-STATIC-LABEL: big03: 5445; LINUX-32-STATIC: # %bb.0: # %entry 5446; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5447; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx 5448; LINUX-32-STATIC-NEXT: movl %ecx, ddst+262144(,%eax,4) 5449; LINUX-32-STATIC-NEXT: retl 5450; 5451; LINUX-32-PIC-LABEL: big03: 5452; LINUX-32-PIC: # %bb.0: # %entry 5453; LINUX-32-PIC-NEXT: calll .L60$pb 5454; LINUX-32-PIC-NEXT: .L60$pb: 5455; LINUX-32-PIC-NEXT: popl %eax 5456; LINUX-32-PIC-NEXT: .Ltmp60: 5457; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp60-.L60$pb), %eax 5458; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5459; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx 5460; LINUX-32-PIC-NEXT: movl %edx, .Lddst$local@GOTOFF+262144(%eax,%ecx,4) 5461; LINUX-32-PIC-NEXT: retl 5462; 5463; LINUX-64-PIC-LABEL: big03: 5464; LINUX-64-PIC: # %bb.0: # %entry 5465; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 5466; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5467; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rcx 5468; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5469; LINUX-64-PIC-NEXT: retq 5470; 5471; DARWIN-32-STATIC-LABEL: big03: 5472; DARWIN-32-STATIC: ## %bb.0: ## %entry 5473; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5474; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5475; DARWIN-32-STATIC-NEXT: movl %ecx, _ddst+262144(,%eax,4) 5476; DARWIN-32-STATIC-NEXT: retl 5477; 5478; DARWIN-32-DYNAMIC-LABEL: big03: 5479; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5480; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5481; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5482; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ddst+262144(,%eax,4) 5483; DARWIN-32-DYNAMIC-NEXT: retl 5484; 5485; DARWIN-32-PIC-LABEL: big03: 5486; DARWIN-32-PIC: ## %bb.0: ## %entry 5487; DARWIN-32-PIC-NEXT: calll L60$pb 5488; DARWIN-32-PIC-NEXT: L60$pb: 5489; DARWIN-32-PIC-NEXT: popl %eax 5490; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5491; DARWIN-32-PIC-NEXT: movl (_dsrc-L60$pb)+262144(%eax,%ecx,4), %edx 5492; DARWIN-32-PIC-NEXT: movl %edx, (_ddst-L60$pb)+262144(%eax,%ecx,4) 5493; DARWIN-32-PIC-NEXT: retl 5494; 5495; DARWIN-64-STATIC-LABEL: big03: 5496; DARWIN-64-STATIC: ## %bb.0: ## %entry 5497; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 5498; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5499; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rcx 5500; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5501; DARWIN-64-STATIC-NEXT: retq 5502; 5503; DARWIN-64-DYNAMIC-LABEL: big03: 5504; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5505; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 5506; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5507; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rcx 5508; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5509; DARWIN-64-DYNAMIC-NEXT: retq 5510; 5511; DARWIN-64-PIC-LABEL: big03: 5512; DARWIN-64-PIC: ## %bb.0: ## %entry 5513; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 5514; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5515; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rcx 5516; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5517; DARWIN-64-PIC-NEXT: retq 5518 5519entry: 5520 %0 = add i64 %i, 65536 5521 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0 5522 %2 = load i32, ptr %1, align 4 5523 %3 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0 5524 store i32 %2, ptr %3, align 4 5525 ret void 5526} 5527 5528define dso_local void @big04(i64 %i) nounwind { 5529; LINUX-64-STATIC-LABEL: big04: 5530; LINUX-64-STATIC: # %bb.0: # %entry 5531; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax 5532; LINUX-64-STATIC-NEXT: movq %rax, dptr(%rip) 5533; LINUX-64-STATIC-NEXT: retq 5534; 5535; LINUX-32-STATIC-LABEL: big04: 5536; LINUX-32-STATIC: # %bb.0: # %entry 5537; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5538; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax 5539; LINUX-32-STATIC-NEXT: movl %eax, dptr 5540; LINUX-32-STATIC-NEXT: retl 5541; 5542; LINUX-32-PIC-LABEL: big04: 5543; LINUX-32-PIC: # %bb.0: # %entry 5544; LINUX-32-PIC-NEXT: calll .L61$pb 5545; LINUX-32-PIC-NEXT: .L61$pb: 5546; LINUX-32-PIC-NEXT: popl %eax 5547; LINUX-32-PIC-NEXT: .Ltmp61: 5548; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp61-.L61$pb), %eax 5549; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5550; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %ecx 5551; LINUX-32-PIC-NEXT: movl %ecx, .Ldptr$local@GOTOFF(%eax) 5552; LINUX-32-PIC-NEXT: retl 5553; 5554; LINUX-64-PIC-LABEL: big04: 5555; LINUX-64-PIC: # %bb.0: # %entry 5556; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 5557; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5558; LINUX-64-PIC-NEXT: movq %rax, .Ldptr$local(%rip) 5559; LINUX-64-PIC-NEXT: retq 5560; 5561; DARWIN-32-STATIC-LABEL: big04: 5562; DARWIN-32-STATIC: ## %bb.0: ## %entry 5563; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5564; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax 5565; DARWIN-32-STATIC-NEXT: movl %eax, _dptr 5566; DARWIN-32-STATIC-NEXT: retl 5567; 5568; DARWIN-32-DYNAMIC-LABEL: big04: 5569; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5570; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5571; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax 5572; DARWIN-32-DYNAMIC-NEXT: movl %eax, _dptr 5573; DARWIN-32-DYNAMIC-NEXT: retl 5574; 5575; DARWIN-32-PIC-LABEL: big04: 5576; DARWIN-32-PIC: ## %bb.0: ## %entry 5577; DARWIN-32-PIC-NEXT: calll L61$pb 5578; DARWIN-32-PIC-NEXT: L61$pb: 5579; DARWIN-32-PIC-NEXT: popl %eax 5580; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5581; DARWIN-32-PIC-NEXT: leal (_ddst-L61$pb)+262144(%eax,%ecx,4), %ecx 5582; DARWIN-32-PIC-NEXT: movl %ecx, _dptr-L61$pb(%eax) 5583; DARWIN-32-PIC-NEXT: retl 5584; 5585; DARWIN-64-STATIC-LABEL: big04: 5586; DARWIN-64-STATIC: ## %bb.0: ## %entry 5587; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 5588; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5589; DARWIN-64-STATIC-NEXT: movq %rax, _dptr(%rip) 5590; DARWIN-64-STATIC-NEXT: retq 5591; 5592; DARWIN-64-DYNAMIC-LABEL: big04: 5593; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5594; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 5595; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5596; DARWIN-64-DYNAMIC-NEXT: movq %rax, _dptr(%rip) 5597; DARWIN-64-DYNAMIC-NEXT: retq 5598; 5599; DARWIN-64-PIC-LABEL: big04: 5600; DARWIN-64-PIC: ## %bb.0: ## %entry 5601; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 5602; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5603; DARWIN-64-PIC-NEXT: movq %rax, _dptr(%rip) 5604; DARWIN-64-PIC-NEXT: retq 5605 5606entry: 5607 %.sum = add i64 %i, 65536 5608 %0 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %.sum 5609 store ptr %0, ptr @dptr, align 8 5610 ret void 5611} 5612 5613define dso_local void @big05(i64 %i) nounwind { 5614; LINUX-64-STATIC-LABEL: big05: 5615; LINUX-64-STATIC: # %bb.0: # %entry 5616; LINUX-64-STATIC-NEXT: movl dsrc+262144(,%rdi,4), %eax 5617; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rcx 5618; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5619; LINUX-64-STATIC-NEXT: retq 5620; 5621; LINUX-32-STATIC-LABEL: big05: 5622; LINUX-32-STATIC: # %bb.0: # %entry 5623; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5624; LINUX-32-STATIC-NEXT: movl dsrc+262144(,%eax,4), %ecx 5625; LINUX-32-STATIC-NEXT: movl dptr, %edx 5626; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5627; LINUX-32-STATIC-NEXT: retl 5628; 5629; LINUX-32-PIC-LABEL: big05: 5630; LINUX-32-PIC: # %bb.0: # %entry 5631; LINUX-32-PIC-NEXT: calll .L62$pb 5632; LINUX-32-PIC-NEXT: .L62$pb: 5633; LINUX-32-PIC-NEXT: popl %eax 5634; LINUX-32-PIC-NEXT: .Ltmp62: 5635; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp62-.L62$pb), %eax 5636; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5637; LINUX-32-PIC-NEXT: movl .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %edx 5638; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 5639; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5640; LINUX-32-PIC-NEXT: retl 5641; 5642; LINUX-64-PIC-LABEL: big05: 5643; LINUX-64-PIC: # %bb.0: # %entry 5644; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 5645; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5646; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rcx 5647; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5648; LINUX-64-PIC-NEXT: retq 5649; 5650; DARWIN-32-STATIC-LABEL: big05: 5651; DARWIN-32-STATIC: ## %bb.0: ## %entry 5652; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5653; DARWIN-32-STATIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5654; DARWIN-32-STATIC-NEXT: movl _dptr, %edx 5655; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5656; DARWIN-32-STATIC-NEXT: retl 5657; 5658; DARWIN-32-DYNAMIC-LABEL: big05: 5659; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5660; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5661; DARWIN-32-DYNAMIC-NEXT: movl _dsrc+262144(,%eax,4), %ecx 5662; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %edx 5663; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5664; DARWIN-32-DYNAMIC-NEXT: retl 5665; 5666; DARWIN-32-PIC-LABEL: big05: 5667; DARWIN-32-PIC: ## %bb.0: ## %entry 5668; DARWIN-32-PIC-NEXT: calll L62$pb 5669; DARWIN-32-PIC-NEXT: L62$pb: 5670; DARWIN-32-PIC-NEXT: popl %eax 5671; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5672; DARWIN-32-PIC-NEXT: movl (_dsrc-L62$pb)+262144(%eax,%ecx,4), %edx 5673; DARWIN-32-PIC-NEXT: movl _dptr-L62$pb(%eax), %eax 5674; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5675; DARWIN-32-PIC-NEXT: retl 5676; 5677; DARWIN-64-STATIC-LABEL: big05: 5678; DARWIN-64-STATIC: ## %bb.0: ## %entry 5679; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 5680; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5681; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rcx 5682; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5683; DARWIN-64-STATIC-NEXT: retq 5684; 5685; DARWIN-64-DYNAMIC-LABEL: big05: 5686; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5687; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 5688; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5689; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rcx 5690; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5691; DARWIN-64-DYNAMIC-NEXT: retq 5692; 5693; DARWIN-64-PIC-LABEL: big05: 5694; DARWIN-64-PIC: ## %bb.0: ## %entry 5695; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 5696; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5697; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rcx 5698; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5699; DARWIN-64-PIC-NEXT: retq 5700 5701entry: 5702 %0 = load ptr, ptr @dptr, align 8 5703 %1 = add i64 %i, 65536 5704 %2 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %1 5705 %3 = load i32, ptr %2, align 4 5706 %4 = getelementptr i32, ptr %0, i64 %1 5707 store i32 %3, ptr %4, align 4 5708 ret void 5709} 5710 5711define dso_local void @big06(i64 %i) nounwind { 5712; LINUX-64-STATIC-LABEL: big06: 5713; LINUX-64-STATIC: # %bb.0: # %entry 5714; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax 5715; LINUX-64-STATIC-NEXT: movl %eax, ldst+262144(,%rdi,4) 5716; LINUX-64-STATIC-NEXT: retq 5717; 5718; LINUX-32-STATIC-LABEL: big06: 5719; LINUX-32-STATIC: # %bb.0: # %entry 5720; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5721; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx 5722; LINUX-32-STATIC-NEXT: movl %ecx, ldst+262144(,%eax,4) 5723; LINUX-32-STATIC-NEXT: retl 5724; 5725; LINUX-32-PIC-LABEL: big06: 5726; LINUX-32-PIC: # %bb.0: # %entry 5727; LINUX-32-PIC-NEXT: calll .L63$pb 5728; LINUX-32-PIC-NEXT: .L63$pb: 5729; LINUX-32-PIC-NEXT: popl %eax 5730; LINUX-32-PIC-NEXT: .Ltmp63: 5731; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp63-.L63$pb), %eax 5732; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5733; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx 5734; LINUX-32-PIC-NEXT: movl %edx, ldst@GOTOFF+262144(%eax,%ecx,4) 5735; LINUX-32-PIC-NEXT: retl 5736; 5737; LINUX-64-PIC-LABEL: big06: 5738; LINUX-64-PIC: # %bb.0: # %entry 5739; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 5740; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5741; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rcx 5742; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5743; LINUX-64-PIC-NEXT: retq 5744; 5745; DARWIN-32-STATIC-LABEL: big06: 5746; DARWIN-32-STATIC: ## %bb.0: ## %entry 5747; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5748; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5749; DARWIN-32-STATIC-NEXT: movl %ecx, _ldst+262144(,%eax,4) 5750; DARWIN-32-STATIC-NEXT: retl 5751; 5752; DARWIN-32-DYNAMIC-LABEL: big06: 5753; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5754; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5755; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5756; DARWIN-32-DYNAMIC-NEXT: movl %ecx, _ldst+262144(,%eax,4) 5757; DARWIN-32-DYNAMIC-NEXT: retl 5758; 5759; DARWIN-32-PIC-LABEL: big06: 5760; DARWIN-32-PIC: ## %bb.0: ## %entry 5761; DARWIN-32-PIC-NEXT: calll L63$pb 5762; DARWIN-32-PIC-NEXT: L63$pb: 5763; DARWIN-32-PIC-NEXT: popl %eax 5764; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5765; DARWIN-32-PIC-NEXT: movl (_lsrc-L63$pb)+262144(%eax,%ecx,4), %edx 5766; DARWIN-32-PIC-NEXT: movl %edx, (_ldst-L63$pb)+262144(%eax,%ecx,4) 5767; DARWIN-32-PIC-NEXT: retl 5768; 5769; DARWIN-64-STATIC-LABEL: big06: 5770; DARWIN-64-STATIC: ## %bb.0: ## %entry 5771; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 5772; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5773; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rcx 5774; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5775; DARWIN-64-STATIC-NEXT: retq 5776; 5777; DARWIN-64-DYNAMIC-LABEL: big06: 5778; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5779; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 5780; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5781; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rcx 5782; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5783; DARWIN-64-DYNAMIC-NEXT: retq 5784; 5785; DARWIN-64-PIC-LABEL: big06: 5786; DARWIN-64-PIC: ## %bb.0: ## %entry 5787; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 5788; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5789; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rcx 5790; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5791; DARWIN-64-PIC-NEXT: retq 5792 5793entry: 5794 %0 = add i64 %i, 65536 5795 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0 5796 %2 = load i32, ptr %1, align 4 5797 %3 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0 5798 store i32 %2, ptr %3, align 4 5799 ret void 5800} 5801 5802define dso_local void @big07(i64 %i) nounwind { 5803; LINUX-64-STATIC-LABEL: big07: 5804; LINUX-64-STATIC: # %bb.0: # %entry 5805; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax 5806; LINUX-64-STATIC-NEXT: movq %rax, lptr(%rip) 5807; LINUX-64-STATIC-NEXT: retq 5808; 5809; LINUX-32-STATIC-LABEL: big07: 5810; LINUX-32-STATIC: # %bb.0: # %entry 5811; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5812; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax 5813; LINUX-32-STATIC-NEXT: movl %eax, lptr 5814; LINUX-32-STATIC-NEXT: retl 5815; 5816; LINUX-32-PIC-LABEL: big07: 5817; LINUX-32-PIC: # %bb.0: # %entry 5818; LINUX-32-PIC-NEXT: calll .L64$pb 5819; LINUX-32-PIC-NEXT: .L64$pb: 5820; LINUX-32-PIC-NEXT: popl %eax 5821; LINUX-32-PIC-NEXT: .Ltmp64: 5822; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp64-.L64$pb), %eax 5823; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5824; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %ecx 5825; LINUX-32-PIC-NEXT: movl %ecx, lptr@GOTOFF(%eax) 5826; LINUX-32-PIC-NEXT: retl 5827; 5828; LINUX-64-PIC-LABEL: big07: 5829; LINUX-64-PIC: # %bb.0: # %entry 5830; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 5831; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5832; LINUX-64-PIC-NEXT: movq %rax, lptr(%rip) 5833; LINUX-64-PIC-NEXT: retq 5834; 5835; DARWIN-32-STATIC-LABEL: big07: 5836; DARWIN-32-STATIC: ## %bb.0: ## %entry 5837; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5838; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax 5839; DARWIN-32-STATIC-NEXT: movl %eax, _lptr 5840; DARWIN-32-STATIC-NEXT: retl 5841; 5842; DARWIN-32-DYNAMIC-LABEL: big07: 5843; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5844; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5845; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax 5846; DARWIN-32-DYNAMIC-NEXT: movl %eax, _lptr 5847; DARWIN-32-DYNAMIC-NEXT: retl 5848; 5849; DARWIN-32-PIC-LABEL: big07: 5850; DARWIN-32-PIC: ## %bb.0: ## %entry 5851; DARWIN-32-PIC-NEXT: calll L64$pb 5852; DARWIN-32-PIC-NEXT: L64$pb: 5853; DARWIN-32-PIC-NEXT: popl %eax 5854; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5855; DARWIN-32-PIC-NEXT: leal (_ldst-L64$pb)+262144(%eax,%ecx,4), %ecx 5856; DARWIN-32-PIC-NEXT: movl %ecx, _lptr-L64$pb(%eax) 5857; DARWIN-32-PIC-NEXT: retl 5858; 5859; DARWIN-64-STATIC-LABEL: big07: 5860; DARWIN-64-STATIC: ## %bb.0: ## %entry 5861; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 5862; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5863; DARWIN-64-STATIC-NEXT: movq %rax, _lptr(%rip) 5864; DARWIN-64-STATIC-NEXT: retq 5865; 5866; DARWIN-64-DYNAMIC-LABEL: big07: 5867; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5868; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 5869; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5870; DARWIN-64-DYNAMIC-NEXT: movq %rax, _lptr(%rip) 5871; DARWIN-64-DYNAMIC-NEXT: retq 5872; 5873; DARWIN-64-PIC-LABEL: big07: 5874; DARWIN-64-PIC: ## %bb.0: ## %entry 5875; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 5876; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 5877; DARWIN-64-PIC-NEXT: movq %rax, _lptr(%rip) 5878; DARWIN-64-PIC-NEXT: retq 5879 5880entry: 5881 %.sum = add i64 %i, 65536 5882 %0 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %.sum 5883 store ptr %0, ptr @lptr, align 8 5884 ret void 5885} 5886 5887define dso_local void @big08(i64 %i) nounwind { 5888; LINUX-64-STATIC-LABEL: big08: 5889; LINUX-64-STATIC: # %bb.0: # %entry 5890; LINUX-64-STATIC-NEXT: movl lsrc+262144(,%rdi,4), %eax 5891; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rcx 5892; LINUX-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5893; LINUX-64-STATIC-NEXT: retq 5894; 5895; LINUX-32-STATIC-LABEL: big08: 5896; LINUX-32-STATIC: # %bb.0: # %entry 5897; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5898; LINUX-32-STATIC-NEXT: movl lsrc+262144(,%eax,4), %ecx 5899; LINUX-32-STATIC-NEXT: movl lptr, %edx 5900; LINUX-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5901; LINUX-32-STATIC-NEXT: retl 5902; 5903; LINUX-32-PIC-LABEL: big08: 5904; LINUX-32-PIC: # %bb.0: # %entry 5905; LINUX-32-PIC-NEXT: calll .L65$pb 5906; LINUX-32-PIC-NEXT: .L65$pb: 5907; LINUX-32-PIC-NEXT: popl %eax 5908; LINUX-32-PIC-NEXT: .Ltmp65: 5909; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp65-.L65$pb), %eax 5910; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5911; LINUX-32-PIC-NEXT: movl lsrc@GOTOFF+262144(%eax,%ecx,4), %edx 5912; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 5913; LINUX-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5914; LINUX-32-PIC-NEXT: retl 5915; 5916; LINUX-64-PIC-LABEL: big08: 5917; LINUX-64-PIC: # %bb.0: # %entry 5918; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 5919; LINUX-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5920; LINUX-64-PIC-NEXT: movq lptr(%rip), %rcx 5921; LINUX-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5922; LINUX-64-PIC-NEXT: retq 5923; 5924; DARWIN-32-STATIC-LABEL: big08: 5925; DARWIN-32-STATIC: ## %bb.0: ## %entry 5926; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5927; DARWIN-32-STATIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5928; DARWIN-32-STATIC-NEXT: movl _lptr, %edx 5929; DARWIN-32-STATIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5930; DARWIN-32-STATIC-NEXT: retl 5931; 5932; DARWIN-32-DYNAMIC-LABEL: big08: 5933; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 5934; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 5935; DARWIN-32-DYNAMIC-NEXT: movl _lsrc+262144(,%eax,4), %ecx 5936; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %edx 5937; DARWIN-32-DYNAMIC-NEXT: movl %ecx, 262144(%edx,%eax,4) 5938; DARWIN-32-DYNAMIC-NEXT: retl 5939; 5940; DARWIN-32-PIC-LABEL: big08: 5941; DARWIN-32-PIC: ## %bb.0: ## %entry 5942; DARWIN-32-PIC-NEXT: calll L65$pb 5943; DARWIN-32-PIC-NEXT: L65$pb: 5944; DARWIN-32-PIC-NEXT: popl %eax 5945; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 5946; DARWIN-32-PIC-NEXT: movl (_lsrc-L65$pb)+262144(%eax,%ecx,4), %edx 5947; DARWIN-32-PIC-NEXT: movl _lptr-L65$pb(%eax), %eax 5948; DARWIN-32-PIC-NEXT: movl %edx, 262144(%eax,%ecx,4) 5949; DARWIN-32-PIC-NEXT: retl 5950; 5951; DARWIN-64-STATIC-LABEL: big08: 5952; DARWIN-64-STATIC: ## %bb.0: ## %entry 5953; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 5954; DARWIN-64-STATIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5955; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rcx 5956; DARWIN-64-STATIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5957; DARWIN-64-STATIC-NEXT: retq 5958; 5959; DARWIN-64-DYNAMIC-LABEL: big08: 5960; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 5961; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 5962; DARWIN-64-DYNAMIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5963; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rcx 5964; DARWIN-64-DYNAMIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5965; DARWIN-64-DYNAMIC-NEXT: retq 5966; 5967; DARWIN-64-PIC-LABEL: big08: 5968; DARWIN-64-PIC: ## %bb.0: ## %entry 5969; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 5970; DARWIN-64-PIC-NEXT: movl 262144(%rax,%rdi,4), %eax 5971; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rcx 5972; DARWIN-64-PIC-NEXT: movl %eax, 262144(%rcx,%rdi,4) 5973; DARWIN-64-PIC-NEXT: retq 5974 5975entry: 5976 %0 = load ptr, ptr @lptr, align 8 5977 %1 = add i64 %i, 65536 5978 %2 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %1 5979 %3 = load i32, ptr %2, align 4 5980 %4 = getelementptr i32, ptr %0, i64 %1 5981 store i32 %3, ptr %4, align 4 5982 ret void 5983} 5984 5985define dso_local ptr @bar00() nounwind { 5986; LINUX-64-STATIC-LABEL: bar00: 5987; LINUX-64-STATIC: # %bb.0: # %entry 5988; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 5989; LINUX-64-STATIC-NEXT: retq 5990; 5991; LINUX-32-STATIC-LABEL: bar00: 5992; LINUX-32-STATIC: # %bb.0: # %entry 5993; LINUX-32-STATIC-NEXT: movl $src, %eax 5994; LINUX-32-STATIC-NEXT: retl 5995; 5996; LINUX-32-PIC-LABEL: bar00: 5997; LINUX-32-PIC: # %bb.0: # %entry 5998; LINUX-32-PIC-NEXT: calll .L66$pb 5999; LINUX-32-PIC-NEXT: .L66$pb: 6000; LINUX-32-PIC-NEXT: popl %eax 6001; LINUX-32-PIC-NEXT: .Ltmp66: 6002; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp66-.L66$pb), %eax 6003; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 6004; LINUX-32-PIC-NEXT: retl 6005; 6006; LINUX-64-PIC-LABEL: bar00: 6007; LINUX-64-PIC: # %bb.0: # %entry 6008; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 6009; LINUX-64-PIC-NEXT: retq 6010; 6011; DARWIN-32-STATIC-LABEL: bar00: 6012; DARWIN-32-STATIC: ## %bb.0: ## %entry 6013; DARWIN-32-STATIC-NEXT: movl $_src, %eax 6014; DARWIN-32-STATIC-NEXT: retl 6015; 6016; DARWIN-32-DYNAMIC-LABEL: bar00: 6017; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6018; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 6019; DARWIN-32-DYNAMIC-NEXT: retl 6020; 6021; DARWIN-32-PIC-LABEL: bar00: 6022; DARWIN-32-PIC: ## %bb.0: ## %entry 6023; DARWIN-32-PIC-NEXT: calll L66$pb 6024; DARWIN-32-PIC-NEXT: L66$pb: 6025; DARWIN-32-PIC-NEXT: popl %eax 6026; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L66$pb(%eax), %eax 6027; DARWIN-32-PIC-NEXT: retl 6028; 6029; DARWIN-64-STATIC-LABEL: bar00: 6030; DARWIN-64-STATIC: ## %bb.0: ## %entry 6031; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6032; DARWIN-64-STATIC-NEXT: retq 6033; 6034; DARWIN-64-DYNAMIC-LABEL: bar00: 6035; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6036; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6037; DARWIN-64-DYNAMIC-NEXT: retq 6038; 6039; DARWIN-64-PIC-LABEL: bar00: 6040; DARWIN-64-PIC: ## %bb.0: ## %entry 6041; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6042; DARWIN-64-PIC-NEXT: retq 6043 6044entry: 6045 ret ptr @src 6046} 6047 6048define dso_local ptr @bxr00() nounwind { 6049; LINUX-64-STATIC-LABEL: bxr00: 6050; LINUX-64-STATIC: # %bb.0: # %entry 6051; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6052; LINUX-64-STATIC-NEXT: retq 6053; 6054; LINUX-32-STATIC-LABEL: bxr00: 6055; LINUX-32-STATIC: # %bb.0: # %entry 6056; LINUX-32-STATIC-NEXT: movl $xsrc, %eax 6057; LINUX-32-STATIC-NEXT: retl 6058; 6059; LINUX-32-PIC-LABEL: bxr00: 6060; LINUX-32-PIC: # %bb.0: # %entry 6061; LINUX-32-PIC-NEXT: calll .L67$pb 6062; LINUX-32-PIC-NEXT: .L67$pb: 6063; LINUX-32-PIC-NEXT: popl %eax 6064; LINUX-32-PIC-NEXT: .Ltmp67: 6065; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp67-.L67$pb), %eax 6066; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 6067; LINUX-32-PIC-NEXT: retl 6068; 6069; LINUX-64-PIC-LABEL: bxr00: 6070; LINUX-64-PIC: # %bb.0: # %entry 6071; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6072; LINUX-64-PIC-NEXT: retq 6073; 6074; DARWIN-32-STATIC-LABEL: bxr00: 6075; DARWIN-32-STATIC: ## %bb.0: ## %entry 6076; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax 6077; DARWIN-32-STATIC-NEXT: retl 6078; 6079; DARWIN-32-DYNAMIC-LABEL: bxr00: 6080; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6081; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 6082; DARWIN-32-DYNAMIC-NEXT: retl 6083; 6084; DARWIN-32-PIC-LABEL: bxr00: 6085; DARWIN-32-PIC: ## %bb.0: ## %entry 6086; DARWIN-32-PIC-NEXT: calll L67$pb 6087; DARWIN-32-PIC-NEXT: L67$pb: 6088; DARWIN-32-PIC-NEXT: popl %eax 6089; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L67$pb(%eax), %eax 6090; DARWIN-32-PIC-NEXT: retl 6091; 6092; DARWIN-64-STATIC-LABEL: bxr00: 6093; DARWIN-64-STATIC: ## %bb.0: ## %entry 6094; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6095; DARWIN-64-STATIC-NEXT: retq 6096; 6097; DARWIN-64-DYNAMIC-LABEL: bxr00: 6098; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6099; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6100; DARWIN-64-DYNAMIC-NEXT: retq 6101; 6102; DARWIN-64-PIC-LABEL: bxr00: 6103; DARWIN-64-PIC: ## %bb.0: ## %entry 6104; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6105; DARWIN-64-PIC-NEXT: retq 6106 6107entry: 6108 ret ptr @xsrc 6109} 6110 6111define dso_local ptr @bar01() nounwind { 6112; LINUX-64-STATIC-LABEL: bar01: 6113; LINUX-64-STATIC: # %bb.0: # %entry 6114; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6115; LINUX-64-STATIC-NEXT: retq 6116; 6117; LINUX-32-STATIC-LABEL: bar01: 6118; LINUX-32-STATIC: # %bb.0: # %entry 6119; LINUX-32-STATIC-NEXT: movl $dst, %eax 6120; LINUX-32-STATIC-NEXT: retl 6121; 6122; LINUX-32-PIC-LABEL: bar01: 6123; LINUX-32-PIC: # %bb.0: # %entry 6124; LINUX-32-PIC-NEXT: calll .L68$pb 6125; LINUX-32-PIC-NEXT: .L68$pb: 6126; LINUX-32-PIC-NEXT: popl %eax 6127; LINUX-32-PIC-NEXT: .Ltmp68: 6128; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp68-.L68$pb), %eax 6129; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 6130; LINUX-32-PIC-NEXT: retl 6131; 6132; LINUX-64-PIC-LABEL: bar01: 6133; LINUX-64-PIC: # %bb.0: # %entry 6134; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6135; LINUX-64-PIC-NEXT: retq 6136; 6137; DARWIN-32-STATIC-LABEL: bar01: 6138; DARWIN-32-STATIC: ## %bb.0: ## %entry 6139; DARWIN-32-STATIC-NEXT: movl $_dst, %eax 6140; DARWIN-32-STATIC-NEXT: retl 6141; 6142; DARWIN-32-DYNAMIC-LABEL: bar01: 6143; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6144; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 6145; DARWIN-32-DYNAMIC-NEXT: retl 6146; 6147; DARWIN-32-PIC-LABEL: bar01: 6148; DARWIN-32-PIC: ## %bb.0: ## %entry 6149; DARWIN-32-PIC-NEXT: calll L68$pb 6150; DARWIN-32-PIC-NEXT: L68$pb: 6151; DARWIN-32-PIC-NEXT: popl %eax 6152; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L68$pb(%eax), %eax 6153; DARWIN-32-PIC-NEXT: retl 6154; 6155; DARWIN-64-STATIC-LABEL: bar01: 6156; DARWIN-64-STATIC: ## %bb.0: ## %entry 6157; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6158; DARWIN-64-STATIC-NEXT: retq 6159; 6160; DARWIN-64-DYNAMIC-LABEL: bar01: 6161; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6162; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6163; DARWIN-64-DYNAMIC-NEXT: retq 6164; 6165; DARWIN-64-PIC-LABEL: bar01: 6166; DARWIN-64-PIC: ## %bb.0: ## %entry 6167; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6168; DARWIN-64-PIC-NEXT: retq 6169 6170entry: 6171 ret ptr @dst 6172} 6173 6174define dso_local ptr @bxr01() nounwind { 6175; LINUX-64-STATIC-LABEL: bxr01: 6176; LINUX-64-STATIC: # %bb.0: # %entry 6177; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6178; LINUX-64-STATIC-NEXT: retq 6179; 6180; LINUX-32-STATIC-LABEL: bxr01: 6181; LINUX-32-STATIC: # %bb.0: # %entry 6182; LINUX-32-STATIC-NEXT: movl $xdst, %eax 6183; LINUX-32-STATIC-NEXT: retl 6184; 6185; LINUX-32-PIC-LABEL: bxr01: 6186; LINUX-32-PIC: # %bb.0: # %entry 6187; LINUX-32-PIC-NEXT: calll .L69$pb 6188; LINUX-32-PIC-NEXT: .L69$pb: 6189; LINUX-32-PIC-NEXT: popl %eax 6190; LINUX-32-PIC-NEXT: .Ltmp69: 6191; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp69-.L69$pb), %eax 6192; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 6193; LINUX-32-PIC-NEXT: retl 6194; 6195; LINUX-64-PIC-LABEL: bxr01: 6196; LINUX-64-PIC: # %bb.0: # %entry 6197; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6198; LINUX-64-PIC-NEXT: retq 6199; 6200; DARWIN-32-STATIC-LABEL: bxr01: 6201; DARWIN-32-STATIC: ## %bb.0: ## %entry 6202; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax 6203; DARWIN-32-STATIC-NEXT: retl 6204; 6205; DARWIN-32-DYNAMIC-LABEL: bxr01: 6206; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6207; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 6208; DARWIN-32-DYNAMIC-NEXT: retl 6209; 6210; DARWIN-32-PIC-LABEL: bxr01: 6211; DARWIN-32-PIC: ## %bb.0: ## %entry 6212; DARWIN-32-PIC-NEXT: calll L69$pb 6213; DARWIN-32-PIC-NEXT: L69$pb: 6214; DARWIN-32-PIC-NEXT: popl %eax 6215; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L69$pb(%eax), %eax 6216; DARWIN-32-PIC-NEXT: retl 6217; 6218; DARWIN-64-STATIC-LABEL: bxr01: 6219; DARWIN-64-STATIC: ## %bb.0: ## %entry 6220; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6221; DARWIN-64-STATIC-NEXT: retq 6222; 6223; DARWIN-64-DYNAMIC-LABEL: bxr01: 6224; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6225; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6226; DARWIN-64-DYNAMIC-NEXT: retq 6227; 6228; DARWIN-64-PIC-LABEL: bxr01: 6229; DARWIN-64-PIC: ## %bb.0: ## %entry 6230; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6231; DARWIN-64-PIC-NEXT: retq 6232 6233entry: 6234 ret ptr @xdst 6235} 6236 6237define dso_local ptr @bar02() nounwind { 6238; LINUX-64-STATIC-LABEL: bar02: 6239; LINUX-64-STATIC: # %bb.0: # %entry 6240; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6241; LINUX-64-STATIC-NEXT: retq 6242; 6243; LINUX-32-STATIC-LABEL: bar02: 6244; LINUX-32-STATIC: # %bb.0: # %entry 6245; LINUX-32-STATIC-NEXT: movl $ptr, %eax 6246; LINUX-32-STATIC-NEXT: retl 6247; 6248; LINUX-32-PIC-LABEL: bar02: 6249; LINUX-32-PIC: # %bb.0: # %entry 6250; LINUX-32-PIC-NEXT: calll .L70$pb 6251; LINUX-32-PIC-NEXT: .L70$pb: 6252; LINUX-32-PIC-NEXT: popl %eax 6253; LINUX-32-PIC-NEXT: .Ltmp70: 6254; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp70-.L70$pb), %eax 6255; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 6256; LINUX-32-PIC-NEXT: retl 6257; 6258; LINUX-64-PIC-LABEL: bar02: 6259; LINUX-64-PIC: # %bb.0: # %entry 6260; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6261; LINUX-64-PIC-NEXT: retq 6262; 6263; DARWIN-32-STATIC-LABEL: bar02: 6264; DARWIN-32-STATIC: ## %bb.0: ## %entry 6265; DARWIN-32-STATIC-NEXT: movl $_ptr, %eax 6266; DARWIN-32-STATIC-NEXT: retl 6267; 6268; DARWIN-32-DYNAMIC-LABEL: bar02: 6269; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6270; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 6271; DARWIN-32-DYNAMIC-NEXT: retl 6272; 6273; DARWIN-32-PIC-LABEL: bar02: 6274; DARWIN-32-PIC: ## %bb.0: ## %entry 6275; DARWIN-32-PIC-NEXT: calll L70$pb 6276; DARWIN-32-PIC-NEXT: L70$pb: 6277; DARWIN-32-PIC-NEXT: popl %eax 6278; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L70$pb(%eax), %eax 6279; DARWIN-32-PIC-NEXT: retl 6280; 6281; DARWIN-64-STATIC-LABEL: bar02: 6282; DARWIN-64-STATIC: ## %bb.0: ## %entry 6283; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6284; DARWIN-64-STATIC-NEXT: retq 6285; 6286; DARWIN-64-DYNAMIC-LABEL: bar02: 6287; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6288; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6289; DARWIN-64-DYNAMIC-NEXT: retq 6290; 6291; DARWIN-64-PIC-LABEL: bar02: 6292; DARWIN-64-PIC: ## %bb.0: ## %entry 6293; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6294; DARWIN-64-PIC-NEXT: retq 6295 6296entry: 6297 ret ptr @ptr 6298} 6299 6300define dso_local ptr @bar03() nounwind { 6301; LINUX-64-STATIC-LABEL: bar03: 6302; LINUX-64-STATIC: # %bb.0: # %entry 6303; LINUX-64-STATIC-NEXT: movl $dsrc, %eax 6304; LINUX-64-STATIC-NEXT: retq 6305; 6306; LINUX-32-STATIC-LABEL: bar03: 6307; LINUX-32-STATIC: # %bb.0: # %entry 6308; LINUX-32-STATIC-NEXT: movl $dsrc, %eax 6309; LINUX-32-STATIC-NEXT: retl 6310; 6311; LINUX-32-PIC-LABEL: bar03: 6312; LINUX-32-PIC: # %bb.0: # %entry 6313; LINUX-32-PIC-NEXT: calll .L71$pb 6314; LINUX-32-PIC-NEXT: .L71$pb: 6315; LINUX-32-PIC-NEXT: popl %eax 6316; LINUX-32-PIC-NEXT: .Ltmp71: 6317; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp71-.L71$pb), %eax 6318; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF(%eax), %eax 6319; LINUX-32-PIC-NEXT: retl 6320; 6321; LINUX-64-PIC-LABEL: bar03: 6322; LINUX-64-PIC: # %bb.0: # %entry 6323; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 6324; LINUX-64-PIC-NEXT: retq 6325; 6326; DARWIN-32-STATIC-LABEL: bar03: 6327; DARWIN-32-STATIC: ## %bb.0: ## %entry 6328; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax 6329; DARWIN-32-STATIC-NEXT: retl 6330; 6331; DARWIN-32-DYNAMIC-LABEL: bar03: 6332; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6333; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax 6334; DARWIN-32-DYNAMIC-NEXT: retl 6335; 6336; DARWIN-32-PIC-LABEL: bar03: 6337; DARWIN-32-PIC: ## %bb.0: ## %entry 6338; DARWIN-32-PIC-NEXT: calll L71$pb 6339; DARWIN-32-PIC-NEXT: L71$pb: 6340; DARWIN-32-PIC-NEXT: popl %eax 6341; DARWIN-32-PIC-NEXT: leal _dsrc-L71$pb(%eax), %eax 6342; DARWIN-32-PIC-NEXT: retl 6343; 6344; DARWIN-64-STATIC-LABEL: bar03: 6345; DARWIN-64-STATIC: ## %bb.0: ## %entry 6346; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 6347; DARWIN-64-STATIC-NEXT: retq 6348; 6349; DARWIN-64-DYNAMIC-LABEL: bar03: 6350; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6351; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 6352; DARWIN-64-DYNAMIC-NEXT: retq 6353; 6354; DARWIN-64-PIC-LABEL: bar03: 6355; DARWIN-64-PIC: ## %bb.0: ## %entry 6356; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 6357; DARWIN-64-PIC-NEXT: retq 6358 6359entry: 6360 ret ptr @dsrc 6361} 6362 6363define dso_local ptr @bar04() nounwind { 6364; LINUX-64-STATIC-LABEL: bar04: 6365; LINUX-64-STATIC: # %bb.0: # %entry 6366; LINUX-64-STATIC-NEXT: movl $ddst, %eax 6367; LINUX-64-STATIC-NEXT: retq 6368; 6369; LINUX-32-STATIC-LABEL: bar04: 6370; LINUX-32-STATIC: # %bb.0: # %entry 6371; LINUX-32-STATIC-NEXT: movl $ddst, %eax 6372; LINUX-32-STATIC-NEXT: retl 6373; 6374; LINUX-32-PIC-LABEL: bar04: 6375; LINUX-32-PIC: # %bb.0: # %entry 6376; LINUX-32-PIC-NEXT: calll .L72$pb 6377; LINUX-32-PIC-NEXT: .L72$pb: 6378; LINUX-32-PIC-NEXT: popl %eax 6379; LINUX-32-PIC-NEXT: .Ltmp72: 6380; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp72-.L72$pb), %eax 6381; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %eax 6382; LINUX-32-PIC-NEXT: retl 6383; 6384; LINUX-64-PIC-LABEL: bar04: 6385; LINUX-64-PIC: # %bb.0: # %entry 6386; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 6387; LINUX-64-PIC-NEXT: retq 6388; 6389; DARWIN-32-STATIC-LABEL: bar04: 6390; DARWIN-32-STATIC: ## %bb.0: ## %entry 6391; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax 6392; DARWIN-32-STATIC-NEXT: retl 6393; 6394; DARWIN-32-DYNAMIC-LABEL: bar04: 6395; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6396; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax 6397; DARWIN-32-DYNAMIC-NEXT: retl 6398; 6399; DARWIN-32-PIC-LABEL: bar04: 6400; DARWIN-32-PIC: ## %bb.0: ## %entry 6401; DARWIN-32-PIC-NEXT: calll L72$pb 6402; DARWIN-32-PIC-NEXT: L72$pb: 6403; DARWIN-32-PIC-NEXT: popl %eax 6404; DARWIN-32-PIC-NEXT: leal _ddst-L72$pb(%eax), %eax 6405; DARWIN-32-PIC-NEXT: retl 6406; 6407; DARWIN-64-STATIC-LABEL: bar04: 6408; DARWIN-64-STATIC: ## %bb.0: ## %entry 6409; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 6410; DARWIN-64-STATIC-NEXT: retq 6411; 6412; DARWIN-64-DYNAMIC-LABEL: bar04: 6413; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6414; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 6415; DARWIN-64-DYNAMIC-NEXT: retq 6416; 6417; DARWIN-64-PIC-LABEL: bar04: 6418; DARWIN-64-PIC: ## %bb.0: ## %entry 6419; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 6420; DARWIN-64-PIC-NEXT: retq 6421 6422entry: 6423 ret ptr @ddst 6424} 6425 6426define dso_local ptr @bar05() nounwind { 6427; LINUX-64-STATIC-LABEL: bar05: 6428; LINUX-64-STATIC: # %bb.0: # %entry 6429; LINUX-64-STATIC-NEXT: movl $dptr, %eax 6430; LINUX-64-STATIC-NEXT: retq 6431; 6432; LINUX-32-STATIC-LABEL: bar05: 6433; LINUX-32-STATIC: # %bb.0: # %entry 6434; LINUX-32-STATIC-NEXT: movl $dptr, %eax 6435; LINUX-32-STATIC-NEXT: retl 6436; 6437; LINUX-32-PIC-LABEL: bar05: 6438; LINUX-32-PIC: # %bb.0: # %entry 6439; LINUX-32-PIC-NEXT: calll .L73$pb 6440; LINUX-32-PIC-NEXT: .L73$pb: 6441; LINUX-32-PIC-NEXT: popl %eax 6442; LINUX-32-PIC-NEXT: .Ltmp73: 6443; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp73-.L73$pb), %eax 6444; LINUX-32-PIC-NEXT: leal .Ldptr$local@GOTOFF(%eax), %eax 6445; LINUX-32-PIC-NEXT: retl 6446; 6447; LINUX-64-PIC-LABEL: bar05: 6448; LINUX-64-PIC: # %bb.0: # %entry 6449; LINUX-64-PIC-NEXT: leaq .Ldptr$local(%rip), %rax 6450; LINUX-64-PIC-NEXT: retq 6451; 6452; DARWIN-32-STATIC-LABEL: bar05: 6453; DARWIN-32-STATIC: ## %bb.0: ## %entry 6454; DARWIN-32-STATIC-NEXT: movl $_dptr, %eax 6455; DARWIN-32-STATIC-NEXT: retl 6456; 6457; DARWIN-32-DYNAMIC-LABEL: bar05: 6458; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6459; DARWIN-32-DYNAMIC-NEXT: movl $_dptr, %eax 6460; DARWIN-32-DYNAMIC-NEXT: retl 6461; 6462; DARWIN-32-PIC-LABEL: bar05: 6463; DARWIN-32-PIC: ## %bb.0: ## %entry 6464; DARWIN-32-PIC-NEXT: calll L73$pb 6465; DARWIN-32-PIC-NEXT: L73$pb: 6466; DARWIN-32-PIC-NEXT: popl %eax 6467; DARWIN-32-PIC-NEXT: leal _dptr-L73$pb(%eax), %eax 6468; DARWIN-32-PIC-NEXT: retl 6469; 6470; DARWIN-64-STATIC-LABEL: bar05: 6471; DARWIN-64-STATIC: ## %bb.0: ## %entry 6472; DARWIN-64-STATIC-NEXT: leaq _dptr(%rip), %rax 6473; DARWIN-64-STATIC-NEXT: retq 6474; 6475; DARWIN-64-DYNAMIC-LABEL: bar05: 6476; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6477; DARWIN-64-DYNAMIC-NEXT: leaq _dptr(%rip), %rax 6478; DARWIN-64-DYNAMIC-NEXT: retq 6479; 6480; DARWIN-64-PIC-LABEL: bar05: 6481; DARWIN-64-PIC: ## %bb.0: ## %entry 6482; DARWIN-64-PIC-NEXT: leaq _dptr(%rip), %rax 6483; DARWIN-64-PIC-NEXT: retq 6484 6485entry: 6486 ret ptr @dptr 6487} 6488 6489define dso_local ptr @bar06() nounwind { 6490; LINUX-64-STATIC-LABEL: bar06: 6491; LINUX-64-STATIC: # %bb.0: # %entry 6492; LINUX-64-STATIC-NEXT: movl $lsrc, %eax 6493; LINUX-64-STATIC-NEXT: retq 6494; 6495; LINUX-32-STATIC-LABEL: bar06: 6496; LINUX-32-STATIC: # %bb.0: # %entry 6497; LINUX-32-STATIC-NEXT: movl $lsrc, %eax 6498; LINUX-32-STATIC-NEXT: retl 6499; 6500; LINUX-32-PIC-LABEL: bar06: 6501; LINUX-32-PIC: # %bb.0: # %entry 6502; LINUX-32-PIC-NEXT: calll .L74$pb 6503; LINUX-32-PIC-NEXT: .L74$pb: 6504; LINUX-32-PIC-NEXT: popl %eax 6505; LINUX-32-PIC-NEXT: .Ltmp74: 6506; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp74-.L74$pb), %eax 6507; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax 6508; LINUX-32-PIC-NEXT: retl 6509; 6510; LINUX-64-PIC-LABEL: bar06: 6511; LINUX-64-PIC: # %bb.0: # %entry 6512; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 6513; LINUX-64-PIC-NEXT: retq 6514; 6515; DARWIN-32-STATIC-LABEL: bar06: 6516; DARWIN-32-STATIC: ## %bb.0: ## %entry 6517; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax 6518; DARWIN-32-STATIC-NEXT: retl 6519; 6520; DARWIN-32-DYNAMIC-LABEL: bar06: 6521; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6522; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax 6523; DARWIN-32-DYNAMIC-NEXT: retl 6524; 6525; DARWIN-32-PIC-LABEL: bar06: 6526; DARWIN-32-PIC: ## %bb.0: ## %entry 6527; DARWIN-32-PIC-NEXT: calll L74$pb 6528; DARWIN-32-PIC-NEXT: L74$pb: 6529; DARWIN-32-PIC-NEXT: popl %eax 6530; DARWIN-32-PIC-NEXT: leal _lsrc-L74$pb(%eax), %eax 6531; DARWIN-32-PIC-NEXT: retl 6532; 6533; DARWIN-64-STATIC-LABEL: bar06: 6534; DARWIN-64-STATIC: ## %bb.0: ## %entry 6535; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 6536; DARWIN-64-STATIC-NEXT: retq 6537; 6538; DARWIN-64-DYNAMIC-LABEL: bar06: 6539; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6540; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 6541; DARWIN-64-DYNAMIC-NEXT: retq 6542; 6543; DARWIN-64-PIC-LABEL: bar06: 6544; DARWIN-64-PIC: ## %bb.0: ## %entry 6545; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 6546; DARWIN-64-PIC-NEXT: retq 6547 6548entry: 6549 ret ptr @lsrc 6550} 6551 6552define dso_local ptr @bar07() nounwind { 6553; LINUX-64-STATIC-LABEL: bar07: 6554; LINUX-64-STATIC: # %bb.0: # %entry 6555; LINUX-64-STATIC-NEXT: movl $ldst, %eax 6556; LINUX-64-STATIC-NEXT: retq 6557; 6558; LINUX-32-STATIC-LABEL: bar07: 6559; LINUX-32-STATIC: # %bb.0: # %entry 6560; LINUX-32-STATIC-NEXT: movl $ldst, %eax 6561; LINUX-32-STATIC-NEXT: retl 6562; 6563; LINUX-32-PIC-LABEL: bar07: 6564; LINUX-32-PIC: # %bb.0: # %entry 6565; LINUX-32-PIC-NEXT: calll .L75$pb 6566; LINUX-32-PIC-NEXT: .L75$pb: 6567; LINUX-32-PIC-NEXT: popl %eax 6568; LINUX-32-PIC-NEXT: .Ltmp75: 6569; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp75-.L75$pb), %eax 6570; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax 6571; LINUX-32-PIC-NEXT: retl 6572; 6573; LINUX-64-PIC-LABEL: bar07: 6574; LINUX-64-PIC: # %bb.0: # %entry 6575; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 6576; LINUX-64-PIC-NEXT: retq 6577; 6578; DARWIN-32-STATIC-LABEL: bar07: 6579; DARWIN-32-STATIC: ## %bb.0: ## %entry 6580; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax 6581; DARWIN-32-STATIC-NEXT: retl 6582; 6583; DARWIN-32-DYNAMIC-LABEL: bar07: 6584; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6585; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax 6586; DARWIN-32-DYNAMIC-NEXT: retl 6587; 6588; DARWIN-32-PIC-LABEL: bar07: 6589; DARWIN-32-PIC: ## %bb.0: ## %entry 6590; DARWIN-32-PIC-NEXT: calll L75$pb 6591; DARWIN-32-PIC-NEXT: L75$pb: 6592; DARWIN-32-PIC-NEXT: popl %eax 6593; DARWIN-32-PIC-NEXT: leal _ldst-L75$pb(%eax), %eax 6594; DARWIN-32-PIC-NEXT: retl 6595; 6596; DARWIN-64-STATIC-LABEL: bar07: 6597; DARWIN-64-STATIC: ## %bb.0: ## %entry 6598; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 6599; DARWIN-64-STATIC-NEXT: retq 6600; 6601; DARWIN-64-DYNAMIC-LABEL: bar07: 6602; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6603; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 6604; DARWIN-64-DYNAMIC-NEXT: retq 6605; 6606; DARWIN-64-PIC-LABEL: bar07: 6607; DARWIN-64-PIC: ## %bb.0: ## %entry 6608; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 6609; DARWIN-64-PIC-NEXT: retq 6610 6611entry: 6612 ret ptr @ldst 6613} 6614 6615define dso_local ptr @bar08() nounwind { 6616; LINUX-64-STATIC-LABEL: bar08: 6617; LINUX-64-STATIC: # %bb.0: # %entry 6618; LINUX-64-STATIC-NEXT: movl $lptr, %eax 6619; LINUX-64-STATIC-NEXT: retq 6620; 6621; LINUX-32-STATIC-LABEL: bar08: 6622; LINUX-32-STATIC: # %bb.0: # %entry 6623; LINUX-32-STATIC-NEXT: movl $lptr, %eax 6624; LINUX-32-STATIC-NEXT: retl 6625; 6626; LINUX-32-PIC-LABEL: bar08: 6627; LINUX-32-PIC: # %bb.0: # %entry 6628; LINUX-32-PIC-NEXT: calll .L76$pb 6629; LINUX-32-PIC-NEXT: .L76$pb: 6630; LINUX-32-PIC-NEXT: popl %eax 6631; LINUX-32-PIC-NEXT: .Ltmp76: 6632; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp76-.L76$pb), %eax 6633; LINUX-32-PIC-NEXT: leal lptr@GOTOFF(%eax), %eax 6634; LINUX-32-PIC-NEXT: retl 6635; 6636; LINUX-64-PIC-LABEL: bar08: 6637; LINUX-64-PIC: # %bb.0: # %entry 6638; LINUX-64-PIC-NEXT: leaq lptr(%rip), %rax 6639; LINUX-64-PIC-NEXT: retq 6640; 6641; DARWIN-32-STATIC-LABEL: bar08: 6642; DARWIN-32-STATIC: ## %bb.0: ## %entry 6643; DARWIN-32-STATIC-NEXT: movl $_lptr, %eax 6644; DARWIN-32-STATIC-NEXT: retl 6645; 6646; DARWIN-32-DYNAMIC-LABEL: bar08: 6647; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6648; DARWIN-32-DYNAMIC-NEXT: movl $_lptr, %eax 6649; DARWIN-32-DYNAMIC-NEXT: retl 6650; 6651; DARWIN-32-PIC-LABEL: bar08: 6652; DARWIN-32-PIC: ## %bb.0: ## %entry 6653; DARWIN-32-PIC-NEXT: calll L76$pb 6654; DARWIN-32-PIC-NEXT: L76$pb: 6655; DARWIN-32-PIC-NEXT: popl %eax 6656; DARWIN-32-PIC-NEXT: leal _lptr-L76$pb(%eax), %eax 6657; DARWIN-32-PIC-NEXT: retl 6658; 6659; DARWIN-64-STATIC-LABEL: bar08: 6660; DARWIN-64-STATIC: ## %bb.0: ## %entry 6661; DARWIN-64-STATIC-NEXT: leaq _lptr(%rip), %rax 6662; DARWIN-64-STATIC-NEXT: retq 6663; 6664; DARWIN-64-DYNAMIC-LABEL: bar08: 6665; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6666; DARWIN-64-DYNAMIC-NEXT: leaq _lptr(%rip), %rax 6667; DARWIN-64-DYNAMIC-NEXT: retq 6668; 6669; DARWIN-64-PIC-LABEL: bar08: 6670; DARWIN-64-PIC: ## %bb.0: ## %entry 6671; DARWIN-64-PIC-NEXT: leaq _lptr(%rip), %rax 6672; DARWIN-64-PIC-NEXT: retq 6673 6674entry: 6675 ret ptr @lptr 6676} 6677 6678define dso_local ptr @har00() nounwind { 6679; LINUX-64-STATIC-LABEL: har00: 6680; LINUX-64-STATIC: # %bb.0: # %entry 6681; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 6682; LINUX-64-STATIC-NEXT: retq 6683; 6684; LINUX-32-STATIC-LABEL: har00: 6685; LINUX-32-STATIC: # %bb.0: # %entry 6686; LINUX-32-STATIC-NEXT: movl $src, %eax 6687; LINUX-32-STATIC-NEXT: retl 6688; 6689; LINUX-32-PIC-LABEL: har00: 6690; LINUX-32-PIC: # %bb.0: # %entry 6691; LINUX-32-PIC-NEXT: calll .L77$pb 6692; LINUX-32-PIC-NEXT: .L77$pb: 6693; LINUX-32-PIC-NEXT: popl %eax 6694; LINUX-32-PIC-NEXT: .Ltmp77: 6695; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp77-.L77$pb), %eax 6696; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 6697; LINUX-32-PIC-NEXT: retl 6698; 6699; LINUX-64-PIC-LABEL: har00: 6700; LINUX-64-PIC: # %bb.0: # %entry 6701; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 6702; LINUX-64-PIC-NEXT: retq 6703; 6704; DARWIN-32-STATIC-LABEL: har00: 6705; DARWIN-32-STATIC: ## %bb.0: ## %entry 6706; DARWIN-32-STATIC-NEXT: movl $_src, %eax 6707; DARWIN-32-STATIC-NEXT: retl 6708; 6709; DARWIN-32-DYNAMIC-LABEL: har00: 6710; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6711; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 6712; DARWIN-32-DYNAMIC-NEXT: retl 6713; 6714; DARWIN-32-PIC-LABEL: har00: 6715; DARWIN-32-PIC: ## %bb.0: ## %entry 6716; DARWIN-32-PIC-NEXT: calll L77$pb 6717; DARWIN-32-PIC-NEXT: L77$pb: 6718; DARWIN-32-PIC-NEXT: popl %eax 6719; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L77$pb(%eax), %eax 6720; DARWIN-32-PIC-NEXT: retl 6721; 6722; DARWIN-64-STATIC-LABEL: har00: 6723; DARWIN-64-STATIC: ## %bb.0: ## %entry 6724; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6725; DARWIN-64-STATIC-NEXT: retq 6726; 6727; DARWIN-64-DYNAMIC-LABEL: har00: 6728; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6729; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6730; DARWIN-64-DYNAMIC-NEXT: retq 6731; 6732; DARWIN-64-PIC-LABEL: har00: 6733; DARWIN-64-PIC: ## %bb.0: ## %entry 6734; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 6735; DARWIN-64-PIC-NEXT: retq 6736 6737entry: 6738 ret ptr @src 6739} 6740 6741define dso_local ptr @hxr00() nounwind { 6742; LINUX-64-STATIC-LABEL: hxr00: 6743; LINUX-64-STATIC: # %bb.0: # %entry 6744; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6745; LINUX-64-STATIC-NEXT: retq 6746; 6747; LINUX-32-STATIC-LABEL: hxr00: 6748; LINUX-32-STATIC: # %bb.0: # %entry 6749; LINUX-32-STATIC-NEXT: movl $xsrc, %eax 6750; LINUX-32-STATIC-NEXT: retl 6751; 6752; LINUX-32-PIC-LABEL: hxr00: 6753; LINUX-32-PIC: # %bb.0: # %entry 6754; LINUX-32-PIC-NEXT: calll .L78$pb 6755; LINUX-32-PIC-NEXT: .L78$pb: 6756; LINUX-32-PIC-NEXT: popl %eax 6757; LINUX-32-PIC-NEXT: .Ltmp78: 6758; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp78-.L78$pb), %eax 6759; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 6760; LINUX-32-PIC-NEXT: retl 6761; 6762; LINUX-64-PIC-LABEL: hxr00: 6763; LINUX-64-PIC: # %bb.0: # %entry 6764; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 6765; LINUX-64-PIC-NEXT: retq 6766; 6767; DARWIN-32-STATIC-LABEL: hxr00: 6768; DARWIN-32-STATIC: ## %bb.0: ## %entry 6769; DARWIN-32-STATIC-NEXT: movl $_xsrc, %eax 6770; DARWIN-32-STATIC-NEXT: retl 6771; 6772; DARWIN-32-DYNAMIC-LABEL: hxr00: 6773; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6774; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 6775; DARWIN-32-DYNAMIC-NEXT: retl 6776; 6777; DARWIN-32-PIC-LABEL: hxr00: 6778; DARWIN-32-PIC: ## %bb.0: ## %entry 6779; DARWIN-32-PIC-NEXT: calll L78$pb 6780; DARWIN-32-PIC-NEXT: L78$pb: 6781; DARWIN-32-PIC-NEXT: popl %eax 6782; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L78$pb(%eax), %eax 6783; DARWIN-32-PIC-NEXT: retl 6784; 6785; DARWIN-64-STATIC-LABEL: hxr00: 6786; DARWIN-64-STATIC: ## %bb.0: ## %entry 6787; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6788; DARWIN-64-STATIC-NEXT: retq 6789; 6790; DARWIN-64-DYNAMIC-LABEL: hxr00: 6791; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6792; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6793; DARWIN-64-DYNAMIC-NEXT: retq 6794; 6795; DARWIN-64-PIC-LABEL: hxr00: 6796; DARWIN-64-PIC: ## %bb.0: ## %entry 6797; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 6798; DARWIN-64-PIC-NEXT: retq 6799 6800entry: 6801 ret ptr @xsrc 6802} 6803 6804define dso_local ptr @har01() nounwind { 6805; LINUX-64-STATIC-LABEL: har01: 6806; LINUX-64-STATIC: # %bb.0: # %entry 6807; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6808; LINUX-64-STATIC-NEXT: retq 6809; 6810; LINUX-32-STATIC-LABEL: har01: 6811; LINUX-32-STATIC: # %bb.0: # %entry 6812; LINUX-32-STATIC-NEXT: movl $dst, %eax 6813; LINUX-32-STATIC-NEXT: retl 6814; 6815; LINUX-32-PIC-LABEL: har01: 6816; LINUX-32-PIC: # %bb.0: # %entry 6817; LINUX-32-PIC-NEXT: calll .L79$pb 6818; LINUX-32-PIC-NEXT: .L79$pb: 6819; LINUX-32-PIC-NEXT: popl %eax 6820; LINUX-32-PIC-NEXT: .Ltmp79: 6821; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp79-.L79$pb), %eax 6822; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 6823; LINUX-32-PIC-NEXT: retl 6824; 6825; LINUX-64-PIC-LABEL: har01: 6826; LINUX-64-PIC: # %bb.0: # %entry 6827; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 6828; LINUX-64-PIC-NEXT: retq 6829; 6830; DARWIN-32-STATIC-LABEL: har01: 6831; DARWIN-32-STATIC: ## %bb.0: ## %entry 6832; DARWIN-32-STATIC-NEXT: movl $_dst, %eax 6833; DARWIN-32-STATIC-NEXT: retl 6834; 6835; DARWIN-32-DYNAMIC-LABEL: har01: 6836; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6837; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 6838; DARWIN-32-DYNAMIC-NEXT: retl 6839; 6840; DARWIN-32-PIC-LABEL: har01: 6841; DARWIN-32-PIC: ## %bb.0: ## %entry 6842; DARWIN-32-PIC-NEXT: calll L79$pb 6843; DARWIN-32-PIC-NEXT: L79$pb: 6844; DARWIN-32-PIC-NEXT: popl %eax 6845; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L79$pb(%eax), %eax 6846; DARWIN-32-PIC-NEXT: retl 6847; 6848; DARWIN-64-STATIC-LABEL: har01: 6849; DARWIN-64-STATIC: ## %bb.0: ## %entry 6850; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6851; DARWIN-64-STATIC-NEXT: retq 6852; 6853; DARWIN-64-DYNAMIC-LABEL: har01: 6854; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6855; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6856; DARWIN-64-DYNAMIC-NEXT: retq 6857; 6858; DARWIN-64-PIC-LABEL: har01: 6859; DARWIN-64-PIC: ## %bb.0: ## %entry 6860; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 6861; DARWIN-64-PIC-NEXT: retq 6862 6863entry: 6864 ret ptr @dst 6865} 6866 6867define dso_local ptr @hxr01() nounwind { 6868; LINUX-64-STATIC-LABEL: hxr01: 6869; LINUX-64-STATIC: # %bb.0: # %entry 6870; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6871; LINUX-64-STATIC-NEXT: retq 6872; 6873; LINUX-32-STATIC-LABEL: hxr01: 6874; LINUX-32-STATIC: # %bb.0: # %entry 6875; LINUX-32-STATIC-NEXT: movl $xdst, %eax 6876; LINUX-32-STATIC-NEXT: retl 6877; 6878; LINUX-32-PIC-LABEL: hxr01: 6879; LINUX-32-PIC: # %bb.0: # %entry 6880; LINUX-32-PIC-NEXT: calll .L80$pb 6881; LINUX-32-PIC-NEXT: .L80$pb: 6882; LINUX-32-PIC-NEXT: popl %eax 6883; LINUX-32-PIC-NEXT: .Ltmp80: 6884; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp80-.L80$pb), %eax 6885; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 6886; LINUX-32-PIC-NEXT: retl 6887; 6888; LINUX-64-PIC-LABEL: hxr01: 6889; LINUX-64-PIC: # %bb.0: # %entry 6890; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 6891; LINUX-64-PIC-NEXT: retq 6892; 6893; DARWIN-32-STATIC-LABEL: hxr01: 6894; DARWIN-32-STATIC: ## %bb.0: ## %entry 6895; DARWIN-32-STATIC-NEXT: movl $_xdst, %eax 6896; DARWIN-32-STATIC-NEXT: retl 6897; 6898; DARWIN-32-DYNAMIC-LABEL: hxr01: 6899; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6900; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 6901; DARWIN-32-DYNAMIC-NEXT: retl 6902; 6903; DARWIN-32-PIC-LABEL: hxr01: 6904; DARWIN-32-PIC: ## %bb.0: ## %entry 6905; DARWIN-32-PIC-NEXT: calll L80$pb 6906; DARWIN-32-PIC-NEXT: L80$pb: 6907; DARWIN-32-PIC-NEXT: popl %eax 6908; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L80$pb(%eax), %eax 6909; DARWIN-32-PIC-NEXT: retl 6910; 6911; DARWIN-64-STATIC-LABEL: hxr01: 6912; DARWIN-64-STATIC: ## %bb.0: ## %entry 6913; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6914; DARWIN-64-STATIC-NEXT: retq 6915; 6916; DARWIN-64-DYNAMIC-LABEL: hxr01: 6917; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6918; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6919; DARWIN-64-DYNAMIC-NEXT: retq 6920; 6921; DARWIN-64-PIC-LABEL: hxr01: 6922; DARWIN-64-PIC: ## %bb.0: ## %entry 6923; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 6924; DARWIN-64-PIC-NEXT: retq 6925 6926entry: 6927 ret ptr @xdst 6928} 6929 6930define dso_local ptr @har02() nounwind { 6931; LINUX-64-STATIC-LABEL: har02: 6932; LINUX-64-STATIC: # %bb.0: # %entry 6933; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6934; LINUX-64-STATIC-NEXT: movq (%rax), %rax 6935; LINUX-64-STATIC-NEXT: retq 6936; 6937; LINUX-32-STATIC-LABEL: har02: 6938; LINUX-32-STATIC: # %bb.0: # %entry 6939; LINUX-32-STATIC-NEXT: movl ptr, %eax 6940; LINUX-32-STATIC-NEXT: retl 6941; 6942; LINUX-32-PIC-LABEL: har02: 6943; LINUX-32-PIC: # %bb.0: # %entry 6944; LINUX-32-PIC-NEXT: calll .L81$pb 6945; LINUX-32-PIC-NEXT: .L81$pb: 6946; LINUX-32-PIC-NEXT: popl %eax 6947; LINUX-32-PIC-NEXT: .Ltmp81: 6948; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp81-.L81$pb), %eax 6949; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 6950; LINUX-32-PIC-NEXT: movl (%eax), %eax 6951; LINUX-32-PIC-NEXT: retl 6952; 6953; LINUX-64-PIC-LABEL: har02: 6954; LINUX-64-PIC: # %bb.0: # %entry 6955; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 6956; LINUX-64-PIC-NEXT: movq (%rax), %rax 6957; LINUX-64-PIC-NEXT: retq 6958; 6959; DARWIN-32-STATIC-LABEL: har02: 6960; DARWIN-32-STATIC: ## %bb.0: ## %entry 6961; DARWIN-32-STATIC-NEXT: movl _ptr, %eax 6962; DARWIN-32-STATIC-NEXT: retl 6963; 6964; DARWIN-32-DYNAMIC-LABEL: har02: 6965; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 6966; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 6967; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 6968; DARWIN-32-DYNAMIC-NEXT: retl 6969; 6970; DARWIN-32-PIC-LABEL: har02: 6971; DARWIN-32-PIC: ## %bb.0: ## %entry 6972; DARWIN-32-PIC-NEXT: calll L81$pb 6973; DARWIN-32-PIC-NEXT: L81$pb: 6974; DARWIN-32-PIC-NEXT: popl %eax 6975; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L81$pb(%eax), %eax 6976; DARWIN-32-PIC-NEXT: movl (%eax), %eax 6977; DARWIN-32-PIC-NEXT: retl 6978; 6979; DARWIN-64-STATIC-LABEL: har02: 6980; DARWIN-64-STATIC: ## %bb.0: ## %entry 6981; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6982; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 6983; DARWIN-64-STATIC-NEXT: retq 6984; 6985; DARWIN-64-DYNAMIC-LABEL: har02: 6986; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 6987; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6988; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 6989; DARWIN-64-DYNAMIC-NEXT: retq 6990; 6991; DARWIN-64-PIC-LABEL: har02: 6992; DARWIN-64-PIC: ## %bb.0: ## %entry 6993; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 6994; DARWIN-64-PIC-NEXT: movq (%rax), %rax 6995; DARWIN-64-PIC-NEXT: retq 6996 6997entry: 6998 %0 = load ptr, ptr @ptr, align 8 6999 ret ptr %0 7000} 7001 7002define dso_local ptr @har03() nounwind { 7003; LINUX-64-STATIC-LABEL: har03: 7004; LINUX-64-STATIC: # %bb.0: # %entry 7005; LINUX-64-STATIC-NEXT: movl $dsrc, %eax 7006; LINUX-64-STATIC-NEXT: retq 7007; 7008; LINUX-32-STATIC-LABEL: har03: 7009; LINUX-32-STATIC: # %bb.0: # %entry 7010; LINUX-32-STATIC-NEXT: movl $dsrc, %eax 7011; LINUX-32-STATIC-NEXT: retl 7012; 7013; LINUX-32-PIC-LABEL: har03: 7014; LINUX-32-PIC: # %bb.0: # %entry 7015; LINUX-32-PIC-NEXT: calll .L82$pb 7016; LINUX-32-PIC-NEXT: .L82$pb: 7017; LINUX-32-PIC-NEXT: popl %eax 7018; LINUX-32-PIC-NEXT: .Ltmp82: 7019; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp82-.L82$pb), %eax 7020; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF(%eax), %eax 7021; LINUX-32-PIC-NEXT: retl 7022; 7023; LINUX-64-PIC-LABEL: har03: 7024; LINUX-64-PIC: # %bb.0: # %entry 7025; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 7026; LINUX-64-PIC-NEXT: retq 7027; 7028; DARWIN-32-STATIC-LABEL: har03: 7029; DARWIN-32-STATIC: ## %bb.0: ## %entry 7030; DARWIN-32-STATIC-NEXT: movl $_dsrc, %eax 7031; DARWIN-32-STATIC-NEXT: retl 7032; 7033; DARWIN-32-DYNAMIC-LABEL: har03: 7034; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7035; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc, %eax 7036; DARWIN-32-DYNAMIC-NEXT: retl 7037; 7038; DARWIN-32-PIC-LABEL: har03: 7039; DARWIN-32-PIC: ## %bb.0: ## %entry 7040; DARWIN-32-PIC-NEXT: calll L82$pb 7041; DARWIN-32-PIC-NEXT: L82$pb: 7042; DARWIN-32-PIC-NEXT: popl %eax 7043; DARWIN-32-PIC-NEXT: leal _dsrc-L82$pb(%eax), %eax 7044; DARWIN-32-PIC-NEXT: retl 7045; 7046; DARWIN-64-STATIC-LABEL: har03: 7047; DARWIN-64-STATIC: ## %bb.0: ## %entry 7048; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 7049; DARWIN-64-STATIC-NEXT: retq 7050; 7051; DARWIN-64-DYNAMIC-LABEL: har03: 7052; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7053; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 7054; DARWIN-64-DYNAMIC-NEXT: retq 7055; 7056; DARWIN-64-PIC-LABEL: har03: 7057; DARWIN-64-PIC: ## %bb.0: ## %entry 7058; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 7059; DARWIN-64-PIC-NEXT: retq 7060 7061entry: 7062 ret ptr @dsrc 7063} 7064 7065define dso_local ptr @har04() nounwind { 7066; LINUX-64-STATIC-LABEL: har04: 7067; LINUX-64-STATIC: # %bb.0: # %entry 7068; LINUX-64-STATIC-NEXT: movl $ddst, %eax 7069; LINUX-64-STATIC-NEXT: retq 7070; 7071; LINUX-32-STATIC-LABEL: har04: 7072; LINUX-32-STATIC: # %bb.0: # %entry 7073; LINUX-32-STATIC-NEXT: movl $ddst, %eax 7074; LINUX-32-STATIC-NEXT: retl 7075; 7076; LINUX-32-PIC-LABEL: har04: 7077; LINUX-32-PIC: # %bb.0: # %entry 7078; LINUX-32-PIC-NEXT: calll .L83$pb 7079; LINUX-32-PIC-NEXT: .L83$pb: 7080; LINUX-32-PIC-NEXT: popl %eax 7081; LINUX-32-PIC-NEXT: .Ltmp83: 7082; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp83-.L83$pb), %eax 7083; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF(%eax), %eax 7084; LINUX-32-PIC-NEXT: retl 7085; 7086; LINUX-64-PIC-LABEL: har04: 7087; LINUX-64-PIC: # %bb.0: # %entry 7088; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 7089; LINUX-64-PIC-NEXT: retq 7090; 7091; DARWIN-32-STATIC-LABEL: har04: 7092; DARWIN-32-STATIC: ## %bb.0: ## %entry 7093; DARWIN-32-STATIC-NEXT: movl $_ddst, %eax 7094; DARWIN-32-STATIC-NEXT: retl 7095; 7096; DARWIN-32-DYNAMIC-LABEL: har04: 7097; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7098; DARWIN-32-DYNAMIC-NEXT: movl $_ddst, %eax 7099; DARWIN-32-DYNAMIC-NEXT: retl 7100; 7101; DARWIN-32-PIC-LABEL: har04: 7102; DARWIN-32-PIC: ## %bb.0: ## %entry 7103; DARWIN-32-PIC-NEXT: calll L83$pb 7104; DARWIN-32-PIC-NEXT: L83$pb: 7105; DARWIN-32-PIC-NEXT: popl %eax 7106; DARWIN-32-PIC-NEXT: leal _ddst-L83$pb(%eax), %eax 7107; DARWIN-32-PIC-NEXT: retl 7108; 7109; DARWIN-64-STATIC-LABEL: har04: 7110; DARWIN-64-STATIC: ## %bb.0: ## %entry 7111; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 7112; DARWIN-64-STATIC-NEXT: retq 7113; 7114; DARWIN-64-DYNAMIC-LABEL: har04: 7115; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7116; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 7117; DARWIN-64-DYNAMIC-NEXT: retq 7118; 7119; DARWIN-64-PIC-LABEL: har04: 7120; DARWIN-64-PIC: ## %bb.0: ## %entry 7121; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 7122; DARWIN-64-PIC-NEXT: retq 7123 7124entry: 7125 ret ptr @ddst 7126} 7127 7128define dso_local ptr @har05() nounwind { 7129; LINUX-64-STATIC-LABEL: har05: 7130; LINUX-64-STATIC: # %bb.0: # %entry 7131; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 7132; LINUX-64-STATIC-NEXT: retq 7133; 7134; LINUX-32-STATIC-LABEL: har05: 7135; LINUX-32-STATIC: # %bb.0: # %entry 7136; LINUX-32-STATIC-NEXT: movl dptr, %eax 7137; LINUX-32-STATIC-NEXT: retl 7138; 7139; LINUX-32-PIC-LABEL: har05: 7140; LINUX-32-PIC: # %bb.0: # %entry 7141; LINUX-32-PIC-NEXT: calll .L84$pb 7142; LINUX-32-PIC-NEXT: .L84$pb: 7143; LINUX-32-PIC-NEXT: popl %eax 7144; LINUX-32-PIC-NEXT: .Ltmp84: 7145; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp84-.L84$pb), %eax 7146; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 7147; LINUX-32-PIC-NEXT: retl 7148; 7149; LINUX-64-PIC-LABEL: har05: 7150; LINUX-64-PIC: # %bb.0: # %entry 7151; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 7152; LINUX-64-PIC-NEXT: retq 7153; 7154; DARWIN-32-STATIC-LABEL: har05: 7155; DARWIN-32-STATIC: ## %bb.0: ## %entry 7156; DARWIN-32-STATIC-NEXT: movl _dptr, %eax 7157; DARWIN-32-STATIC-NEXT: retl 7158; 7159; DARWIN-32-DYNAMIC-LABEL: har05: 7160; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7161; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax 7162; DARWIN-32-DYNAMIC-NEXT: retl 7163; 7164; DARWIN-32-PIC-LABEL: har05: 7165; DARWIN-32-PIC: ## %bb.0: ## %entry 7166; DARWIN-32-PIC-NEXT: calll L84$pb 7167; DARWIN-32-PIC-NEXT: L84$pb: 7168; DARWIN-32-PIC-NEXT: popl %eax 7169; DARWIN-32-PIC-NEXT: movl _dptr-L84$pb(%eax), %eax 7170; DARWIN-32-PIC-NEXT: retl 7171; 7172; DARWIN-64-STATIC-LABEL: har05: 7173; DARWIN-64-STATIC: ## %bb.0: ## %entry 7174; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 7175; DARWIN-64-STATIC-NEXT: retq 7176; 7177; DARWIN-64-DYNAMIC-LABEL: har05: 7178; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7179; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 7180; DARWIN-64-DYNAMIC-NEXT: retq 7181; 7182; DARWIN-64-PIC-LABEL: har05: 7183; DARWIN-64-PIC: ## %bb.0: ## %entry 7184; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 7185; DARWIN-64-PIC-NEXT: retq 7186 7187entry: 7188 %0 = load ptr, ptr @dptr, align 8 7189 ret ptr %0 7190} 7191 7192define dso_local ptr @har06() nounwind { 7193; LINUX-64-STATIC-LABEL: har06: 7194; LINUX-64-STATIC: # %bb.0: # %entry 7195; LINUX-64-STATIC-NEXT: movl $lsrc, %eax 7196; LINUX-64-STATIC-NEXT: retq 7197; 7198; LINUX-32-STATIC-LABEL: har06: 7199; LINUX-32-STATIC: # %bb.0: # %entry 7200; LINUX-32-STATIC-NEXT: movl $lsrc, %eax 7201; LINUX-32-STATIC-NEXT: retl 7202; 7203; LINUX-32-PIC-LABEL: har06: 7204; LINUX-32-PIC: # %bb.0: # %entry 7205; LINUX-32-PIC-NEXT: calll .L85$pb 7206; LINUX-32-PIC-NEXT: .L85$pb: 7207; LINUX-32-PIC-NEXT: popl %eax 7208; LINUX-32-PIC-NEXT: .Ltmp85: 7209; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp85-.L85$pb), %eax 7210; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF(%eax), %eax 7211; LINUX-32-PIC-NEXT: retl 7212; 7213; LINUX-64-PIC-LABEL: har06: 7214; LINUX-64-PIC: # %bb.0: # %entry 7215; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 7216; LINUX-64-PIC-NEXT: retq 7217; 7218; DARWIN-32-STATIC-LABEL: har06: 7219; DARWIN-32-STATIC: ## %bb.0: ## %entry 7220; DARWIN-32-STATIC-NEXT: movl $_lsrc, %eax 7221; DARWIN-32-STATIC-NEXT: retl 7222; 7223; DARWIN-32-DYNAMIC-LABEL: har06: 7224; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7225; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc, %eax 7226; DARWIN-32-DYNAMIC-NEXT: retl 7227; 7228; DARWIN-32-PIC-LABEL: har06: 7229; DARWIN-32-PIC: ## %bb.0: ## %entry 7230; DARWIN-32-PIC-NEXT: calll L85$pb 7231; DARWIN-32-PIC-NEXT: L85$pb: 7232; DARWIN-32-PIC-NEXT: popl %eax 7233; DARWIN-32-PIC-NEXT: leal _lsrc-L85$pb(%eax), %eax 7234; DARWIN-32-PIC-NEXT: retl 7235; 7236; DARWIN-64-STATIC-LABEL: har06: 7237; DARWIN-64-STATIC: ## %bb.0: ## %entry 7238; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 7239; DARWIN-64-STATIC-NEXT: retq 7240; 7241; DARWIN-64-DYNAMIC-LABEL: har06: 7242; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7243; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 7244; DARWIN-64-DYNAMIC-NEXT: retq 7245; 7246; DARWIN-64-PIC-LABEL: har06: 7247; DARWIN-64-PIC: ## %bb.0: ## %entry 7248; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 7249; DARWIN-64-PIC-NEXT: retq 7250 7251entry: 7252 ret ptr @lsrc 7253} 7254 7255define dso_local ptr @har07() nounwind { 7256; LINUX-64-STATIC-LABEL: har07: 7257; LINUX-64-STATIC: # %bb.0: # %entry 7258; LINUX-64-STATIC-NEXT: movl $ldst, %eax 7259; LINUX-64-STATIC-NEXT: retq 7260; 7261; LINUX-32-STATIC-LABEL: har07: 7262; LINUX-32-STATIC: # %bb.0: # %entry 7263; LINUX-32-STATIC-NEXT: movl $ldst, %eax 7264; LINUX-32-STATIC-NEXT: retl 7265; 7266; LINUX-32-PIC-LABEL: har07: 7267; LINUX-32-PIC: # %bb.0: # %entry 7268; LINUX-32-PIC-NEXT: calll .L86$pb 7269; LINUX-32-PIC-NEXT: .L86$pb: 7270; LINUX-32-PIC-NEXT: popl %eax 7271; LINUX-32-PIC-NEXT: .Ltmp86: 7272; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp86-.L86$pb), %eax 7273; LINUX-32-PIC-NEXT: leal ldst@GOTOFF(%eax), %eax 7274; LINUX-32-PIC-NEXT: retl 7275; 7276; LINUX-64-PIC-LABEL: har07: 7277; LINUX-64-PIC: # %bb.0: # %entry 7278; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 7279; LINUX-64-PIC-NEXT: retq 7280; 7281; DARWIN-32-STATIC-LABEL: har07: 7282; DARWIN-32-STATIC: ## %bb.0: ## %entry 7283; DARWIN-32-STATIC-NEXT: movl $_ldst, %eax 7284; DARWIN-32-STATIC-NEXT: retl 7285; 7286; DARWIN-32-DYNAMIC-LABEL: har07: 7287; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7288; DARWIN-32-DYNAMIC-NEXT: movl $_ldst, %eax 7289; DARWIN-32-DYNAMIC-NEXT: retl 7290; 7291; DARWIN-32-PIC-LABEL: har07: 7292; DARWIN-32-PIC: ## %bb.0: ## %entry 7293; DARWIN-32-PIC-NEXT: calll L86$pb 7294; DARWIN-32-PIC-NEXT: L86$pb: 7295; DARWIN-32-PIC-NEXT: popl %eax 7296; DARWIN-32-PIC-NEXT: leal _ldst-L86$pb(%eax), %eax 7297; DARWIN-32-PIC-NEXT: retl 7298; 7299; DARWIN-64-STATIC-LABEL: har07: 7300; DARWIN-64-STATIC: ## %bb.0: ## %entry 7301; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 7302; DARWIN-64-STATIC-NEXT: retq 7303; 7304; DARWIN-64-DYNAMIC-LABEL: har07: 7305; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7306; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 7307; DARWIN-64-DYNAMIC-NEXT: retq 7308; 7309; DARWIN-64-PIC-LABEL: har07: 7310; DARWIN-64-PIC: ## %bb.0: ## %entry 7311; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 7312; DARWIN-64-PIC-NEXT: retq 7313 7314entry: 7315 ret ptr @ldst 7316} 7317 7318define dso_local ptr @har08() nounwind { 7319; LINUX-64-STATIC-LABEL: har08: 7320; LINUX-64-STATIC: # %bb.0: # %entry 7321; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 7322; LINUX-64-STATIC-NEXT: retq 7323; 7324; LINUX-32-STATIC-LABEL: har08: 7325; LINUX-32-STATIC: # %bb.0: # %entry 7326; LINUX-32-STATIC-NEXT: movl lptr, %eax 7327; LINUX-32-STATIC-NEXT: retl 7328; 7329; LINUX-32-PIC-LABEL: har08: 7330; LINUX-32-PIC: # %bb.0: # %entry 7331; LINUX-32-PIC-NEXT: calll .L87$pb 7332; LINUX-32-PIC-NEXT: .L87$pb: 7333; LINUX-32-PIC-NEXT: popl %eax 7334; LINUX-32-PIC-NEXT: .Ltmp87: 7335; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp87-.L87$pb), %eax 7336; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 7337; LINUX-32-PIC-NEXT: retl 7338; 7339; LINUX-64-PIC-LABEL: har08: 7340; LINUX-64-PIC: # %bb.0: # %entry 7341; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 7342; LINUX-64-PIC-NEXT: retq 7343; 7344; DARWIN-32-STATIC-LABEL: har08: 7345; DARWIN-32-STATIC: ## %bb.0: ## %entry 7346; DARWIN-32-STATIC-NEXT: movl _lptr, %eax 7347; DARWIN-32-STATIC-NEXT: retl 7348; 7349; DARWIN-32-DYNAMIC-LABEL: har08: 7350; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7351; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax 7352; DARWIN-32-DYNAMIC-NEXT: retl 7353; 7354; DARWIN-32-PIC-LABEL: har08: 7355; DARWIN-32-PIC: ## %bb.0: ## %entry 7356; DARWIN-32-PIC-NEXT: calll L87$pb 7357; DARWIN-32-PIC-NEXT: L87$pb: 7358; DARWIN-32-PIC-NEXT: popl %eax 7359; DARWIN-32-PIC-NEXT: movl _lptr-L87$pb(%eax), %eax 7360; DARWIN-32-PIC-NEXT: retl 7361; 7362; DARWIN-64-STATIC-LABEL: har08: 7363; DARWIN-64-STATIC: ## %bb.0: ## %entry 7364; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 7365; DARWIN-64-STATIC-NEXT: retq 7366; 7367; DARWIN-64-DYNAMIC-LABEL: har08: 7368; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7369; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 7370; DARWIN-64-DYNAMIC-NEXT: retq 7371; 7372; DARWIN-64-PIC-LABEL: har08: 7373; DARWIN-64-PIC: ## %bb.0: ## %entry 7374; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 7375; DARWIN-64-PIC-NEXT: retq 7376 7377entry: 7378 %0 = load ptr, ptr @lptr, align 8 7379 ret ptr %0 7380} 7381 7382define dso_local ptr @bat00() nounwind { 7383; LINUX-64-STATIC-LABEL: bat00: 7384; LINUX-64-STATIC: # %bb.0: # %entry 7385; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 7386; LINUX-64-STATIC-NEXT: addq $64, %rax 7387; LINUX-64-STATIC-NEXT: retq 7388; 7389; LINUX-32-STATIC-LABEL: bat00: 7390; LINUX-32-STATIC: # %bb.0: # %entry 7391; LINUX-32-STATIC-NEXT: leal src+64, %eax 7392; LINUX-32-STATIC-NEXT: retl 7393; 7394; LINUX-32-PIC-LABEL: bat00: 7395; LINUX-32-PIC: # %bb.0: # %entry 7396; LINUX-32-PIC-NEXT: calll .L88$pb 7397; LINUX-32-PIC-NEXT: .L88$pb: 7398; LINUX-32-PIC-NEXT: popl %eax 7399; LINUX-32-PIC-NEXT: .Ltmp88: 7400; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp88-.L88$pb), %eax 7401; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 7402; LINUX-32-PIC-NEXT: addl $64, %eax 7403; LINUX-32-PIC-NEXT: retl 7404; 7405; LINUX-64-PIC-LABEL: bat00: 7406; LINUX-64-PIC: # %bb.0: # %entry 7407; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 7408; LINUX-64-PIC-NEXT: addq $64, %rax 7409; LINUX-64-PIC-NEXT: retq 7410; 7411; DARWIN-32-STATIC-LABEL: bat00: 7412; DARWIN-32-STATIC: ## %bb.0: ## %entry 7413; DARWIN-32-STATIC-NEXT: movl $_src+64, %eax 7414; DARWIN-32-STATIC-NEXT: retl 7415; 7416; DARWIN-32-DYNAMIC-LABEL: bat00: 7417; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7418; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %eax 7419; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7420; DARWIN-32-DYNAMIC-NEXT: retl 7421; 7422; DARWIN-32-PIC-LABEL: bat00: 7423; DARWIN-32-PIC: ## %bb.0: ## %entry 7424; DARWIN-32-PIC-NEXT: calll L88$pb 7425; DARWIN-32-PIC-NEXT: L88$pb: 7426; DARWIN-32-PIC-NEXT: popl %eax 7427; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L88$pb(%eax), %eax 7428; DARWIN-32-PIC-NEXT: addl $64, %eax 7429; DARWIN-32-PIC-NEXT: retl 7430; 7431; DARWIN-64-STATIC-LABEL: bat00: 7432; DARWIN-64-STATIC: ## %bb.0: ## %entry 7433; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7434; DARWIN-64-STATIC-NEXT: addq $64, %rax 7435; DARWIN-64-STATIC-NEXT: retq 7436; 7437; DARWIN-64-DYNAMIC-LABEL: bat00: 7438; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7439; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7440; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7441; DARWIN-64-DYNAMIC-NEXT: retq 7442; 7443; DARWIN-64-PIC-LABEL: bat00: 7444; DARWIN-64-PIC: ## %bb.0: ## %entry 7445; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 7446; DARWIN-64-PIC-NEXT: addq $64, %rax 7447; DARWIN-64-PIC-NEXT: retq 7448 7449entry: 7450 ret ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 16) 7451} 7452 7453define dso_local ptr @bxt00() nounwind { 7454; LINUX-64-STATIC-LABEL: bxt00: 7455; LINUX-64-STATIC: # %bb.0: # %entry 7456; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 7457; LINUX-64-STATIC-NEXT: addq $64, %rax 7458; LINUX-64-STATIC-NEXT: retq 7459; 7460; LINUX-32-STATIC-LABEL: bxt00: 7461; LINUX-32-STATIC: # %bb.0: # %entry 7462; LINUX-32-STATIC-NEXT: leal xsrc+64, %eax 7463; LINUX-32-STATIC-NEXT: retl 7464; 7465; LINUX-32-PIC-LABEL: bxt00: 7466; LINUX-32-PIC: # %bb.0: # %entry 7467; LINUX-32-PIC-NEXT: calll .L89$pb 7468; LINUX-32-PIC-NEXT: .L89$pb: 7469; LINUX-32-PIC-NEXT: popl %eax 7470; LINUX-32-PIC-NEXT: .Ltmp89: 7471; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp89-.L89$pb), %eax 7472; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 7473; LINUX-32-PIC-NEXT: addl $64, %eax 7474; LINUX-32-PIC-NEXT: retl 7475; 7476; LINUX-64-PIC-LABEL: bxt00: 7477; LINUX-64-PIC: # %bb.0: # %entry 7478; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 7479; LINUX-64-PIC-NEXT: addq $64, %rax 7480; LINUX-64-PIC-NEXT: retq 7481; 7482; DARWIN-32-STATIC-LABEL: bxt00: 7483; DARWIN-32-STATIC: ## %bb.0: ## %entry 7484; DARWIN-32-STATIC-NEXT: movl $_xsrc+64, %eax 7485; DARWIN-32-STATIC-NEXT: retl 7486; 7487; DARWIN-32-DYNAMIC-LABEL: bxt00: 7488; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7489; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %eax 7490; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7491; DARWIN-32-DYNAMIC-NEXT: retl 7492; 7493; DARWIN-32-PIC-LABEL: bxt00: 7494; DARWIN-32-PIC: ## %bb.0: ## %entry 7495; DARWIN-32-PIC-NEXT: calll L89$pb 7496; DARWIN-32-PIC-NEXT: L89$pb: 7497; DARWIN-32-PIC-NEXT: popl %eax 7498; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L89$pb(%eax), %eax 7499; DARWIN-32-PIC-NEXT: addl $64, %eax 7500; DARWIN-32-PIC-NEXT: retl 7501; 7502; DARWIN-64-STATIC-LABEL: bxt00: 7503; DARWIN-64-STATIC: ## %bb.0: ## %entry 7504; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7505; DARWIN-64-STATIC-NEXT: addq $64, %rax 7506; DARWIN-64-STATIC-NEXT: retq 7507; 7508; DARWIN-64-DYNAMIC-LABEL: bxt00: 7509; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7510; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7511; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7512; DARWIN-64-DYNAMIC-NEXT: retq 7513; 7514; DARWIN-64-PIC-LABEL: bxt00: 7515; DARWIN-64-PIC: ## %bb.0: ## %entry 7516; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 7517; DARWIN-64-PIC-NEXT: addq $64, %rax 7518; DARWIN-64-PIC-NEXT: retq 7519 7520entry: 7521 ret ptr getelementptr ([32 x i32], ptr @xsrc, i32 0, i64 16) 7522} 7523 7524define dso_local ptr @bat01() nounwind { 7525; LINUX-64-STATIC-LABEL: bat01: 7526; LINUX-64-STATIC: # %bb.0: # %entry 7527; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 7528; LINUX-64-STATIC-NEXT: addq $64, %rax 7529; LINUX-64-STATIC-NEXT: retq 7530; 7531; LINUX-32-STATIC-LABEL: bat01: 7532; LINUX-32-STATIC: # %bb.0: # %entry 7533; LINUX-32-STATIC-NEXT: leal dst+64, %eax 7534; LINUX-32-STATIC-NEXT: retl 7535; 7536; LINUX-32-PIC-LABEL: bat01: 7537; LINUX-32-PIC: # %bb.0: # %entry 7538; LINUX-32-PIC-NEXT: calll .L90$pb 7539; LINUX-32-PIC-NEXT: .L90$pb: 7540; LINUX-32-PIC-NEXT: popl %eax 7541; LINUX-32-PIC-NEXT: .Ltmp90: 7542; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp90-.L90$pb), %eax 7543; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 7544; LINUX-32-PIC-NEXT: addl $64, %eax 7545; LINUX-32-PIC-NEXT: retl 7546; 7547; LINUX-64-PIC-LABEL: bat01: 7548; LINUX-64-PIC: # %bb.0: # %entry 7549; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 7550; LINUX-64-PIC-NEXT: addq $64, %rax 7551; LINUX-64-PIC-NEXT: retq 7552; 7553; DARWIN-32-STATIC-LABEL: bat01: 7554; DARWIN-32-STATIC: ## %bb.0: ## %entry 7555; DARWIN-32-STATIC-NEXT: movl $_dst+64, %eax 7556; DARWIN-32-STATIC-NEXT: retl 7557; 7558; DARWIN-32-DYNAMIC-LABEL: bat01: 7559; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7560; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %eax 7561; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7562; DARWIN-32-DYNAMIC-NEXT: retl 7563; 7564; DARWIN-32-PIC-LABEL: bat01: 7565; DARWIN-32-PIC: ## %bb.0: ## %entry 7566; DARWIN-32-PIC-NEXT: calll L90$pb 7567; DARWIN-32-PIC-NEXT: L90$pb: 7568; DARWIN-32-PIC-NEXT: popl %eax 7569; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L90$pb(%eax), %eax 7570; DARWIN-32-PIC-NEXT: addl $64, %eax 7571; DARWIN-32-PIC-NEXT: retl 7572; 7573; DARWIN-64-STATIC-LABEL: bat01: 7574; DARWIN-64-STATIC: ## %bb.0: ## %entry 7575; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7576; DARWIN-64-STATIC-NEXT: addq $64, %rax 7577; DARWIN-64-STATIC-NEXT: retq 7578; 7579; DARWIN-64-DYNAMIC-LABEL: bat01: 7580; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7581; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7582; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7583; DARWIN-64-DYNAMIC-NEXT: retq 7584; 7585; DARWIN-64-PIC-LABEL: bat01: 7586; DARWIN-64-PIC: ## %bb.0: ## %entry 7587; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 7588; DARWIN-64-PIC-NEXT: addq $64, %rax 7589; DARWIN-64-PIC-NEXT: retq 7590 7591entry: 7592 ret ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 16) 7593} 7594 7595define dso_local ptr @bxt01() nounwind { 7596; LINUX-64-STATIC-LABEL: bxt01: 7597; LINUX-64-STATIC: # %bb.0: # %entry 7598; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 7599; LINUX-64-STATIC-NEXT: addq $64, %rax 7600; LINUX-64-STATIC-NEXT: retq 7601; 7602; LINUX-32-STATIC-LABEL: bxt01: 7603; LINUX-32-STATIC: # %bb.0: # %entry 7604; LINUX-32-STATIC-NEXT: leal xdst+64, %eax 7605; LINUX-32-STATIC-NEXT: retl 7606; 7607; LINUX-32-PIC-LABEL: bxt01: 7608; LINUX-32-PIC: # %bb.0: # %entry 7609; LINUX-32-PIC-NEXT: calll .L91$pb 7610; LINUX-32-PIC-NEXT: .L91$pb: 7611; LINUX-32-PIC-NEXT: popl %eax 7612; LINUX-32-PIC-NEXT: .Ltmp91: 7613; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp91-.L91$pb), %eax 7614; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 7615; LINUX-32-PIC-NEXT: addl $64, %eax 7616; LINUX-32-PIC-NEXT: retl 7617; 7618; LINUX-64-PIC-LABEL: bxt01: 7619; LINUX-64-PIC: # %bb.0: # %entry 7620; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 7621; LINUX-64-PIC-NEXT: addq $64, %rax 7622; LINUX-64-PIC-NEXT: retq 7623; 7624; DARWIN-32-STATIC-LABEL: bxt01: 7625; DARWIN-32-STATIC: ## %bb.0: ## %entry 7626; DARWIN-32-STATIC-NEXT: movl $_xdst+64, %eax 7627; DARWIN-32-STATIC-NEXT: retl 7628; 7629; DARWIN-32-DYNAMIC-LABEL: bxt01: 7630; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7631; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %eax 7632; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7633; DARWIN-32-DYNAMIC-NEXT: retl 7634; 7635; DARWIN-32-PIC-LABEL: bxt01: 7636; DARWIN-32-PIC: ## %bb.0: ## %entry 7637; DARWIN-32-PIC-NEXT: calll L91$pb 7638; DARWIN-32-PIC-NEXT: L91$pb: 7639; DARWIN-32-PIC-NEXT: popl %eax 7640; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L91$pb(%eax), %eax 7641; DARWIN-32-PIC-NEXT: addl $64, %eax 7642; DARWIN-32-PIC-NEXT: retl 7643; 7644; DARWIN-64-STATIC-LABEL: bxt01: 7645; DARWIN-64-STATIC: ## %bb.0: ## %entry 7646; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7647; DARWIN-64-STATIC-NEXT: addq $64, %rax 7648; DARWIN-64-STATIC-NEXT: retq 7649; 7650; DARWIN-64-DYNAMIC-LABEL: bxt01: 7651; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7652; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7653; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7654; DARWIN-64-DYNAMIC-NEXT: retq 7655; 7656; DARWIN-64-PIC-LABEL: bxt01: 7657; DARWIN-64-PIC: ## %bb.0: ## %entry 7658; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 7659; DARWIN-64-PIC-NEXT: addq $64, %rax 7660; DARWIN-64-PIC-NEXT: retq 7661 7662entry: 7663 ret ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 16) 7664} 7665 7666define dso_local ptr @bat02() nounwind { 7667; LINUX-64-STATIC-LABEL: bat02: 7668; LINUX-64-STATIC: # %bb.0: # %entry 7669; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 7670; LINUX-64-STATIC-NEXT: movq (%rax), %rax 7671; LINUX-64-STATIC-NEXT: addq $64, %rax 7672; LINUX-64-STATIC-NEXT: retq 7673; 7674; LINUX-32-STATIC-LABEL: bat02: 7675; LINUX-32-STATIC: # %bb.0: # %entry 7676; LINUX-32-STATIC-NEXT: movl ptr, %eax 7677; LINUX-32-STATIC-NEXT: addl $64, %eax 7678; LINUX-32-STATIC-NEXT: retl 7679; 7680; LINUX-32-PIC-LABEL: bat02: 7681; LINUX-32-PIC: # %bb.0: # %entry 7682; LINUX-32-PIC-NEXT: calll .L92$pb 7683; LINUX-32-PIC-NEXT: .L92$pb: 7684; LINUX-32-PIC-NEXT: popl %eax 7685; LINUX-32-PIC-NEXT: .Ltmp92: 7686; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp92-.L92$pb), %eax 7687; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 7688; LINUX-32-PIC-NEXT: movl (%eax), %eax 7689; LINUX-32-PIC-NEXT: addl $64, %eax 7690; LINUX-32-PIC-NEXT: retl 7691; 7692; LINUX-64-PIC-LABEL: bat02: 7693; LINUX-64-PIC: # %bb.0: # %entry 7694; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 7695; LINUX-64-PIC-NEXT: movq (%rax), %rax 7696; LINUX-64-PIC-NEXT: addq $64, %rax 7697; LINUX-64-PIC-NEXT: retq 7698; 7699; DARWIN-32-STATIC-LABEL: bat02: 7700; DARWIN-32-STATIC: ## %bb.0: ## %entry 7701; DARWIN-32-STATIC-NEXT: movl _ptr, %eax 7702; DARWIN-32-STATIC-NEXT: addl $64, %eax 7703; DARWIN-32-STATIC-NEXT: retl 7704; 7705; DARWIN-32-DYNAMIC-LABEL: bat02: 7706; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7707; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 7708; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 7709; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7710; DARWIN-32-DYNAMIC-NEXT: retl 7711; 7712; DARWIN-32-PIC-LABEL: bat02: 7713; DARWIN-32-PIC: ## %bb.0: ## %entry 7714; DARWIN-32-PIC-NEXT: calll L92$pb 7715; DARWIN-32-PIC-NEXT: L92$pb: 7716; DARWIN-32-PIC-NEXT: popl %eax 7717; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L92$pb(%eax), %eax 7718; DARWIN-32-PIC-NEXT: movl (%eax), %eax 7719; DARWIN-32-PIC-NEXT: addl $64, %eax 7720; DARWIN-32-PIC-NEXT: retl 7721; 7722; DARWIN-64-STATIC-LABEL: bat02: 7723; DARWIN-64-STATIC: ## %bb.0: ## %entry 7724; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7725; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 7726; DARWIN-64-STATIC-NEXT: addq $64, %rax 7727; DARWIN-64-STATIC-NEXT: retq 7728; 7729; DARWIN-64-DYNAMIC-LABEL: bat02: 7730; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7731; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7732; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 7733; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7734; DARWIN-64-DYNAMIC-NEXT: retq 7735; 7736; DARWIN-64-PIC-LABEL: bat02: 7737; DARWIN-64-PIC: ## %bb.0: ## %entry 7738; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 7739; DARWIN-64-PIC-NEXT: movq (%rax), %rax 7740; DARWIN-64-PIC-NEXT: addq $64, %rax 7741; DARWIN-64-PIC-NEXT: retq 7742 7743entry: 7744 %0 = load ptr, ptr @ptr, align 8 7745 %1 = getelementptr i32, ptr %0, i64 16 7746 ret ptr %1 7747} 7748 7749define dso_local ptr @bat03() nounwind { 7750; LINUX-64-STATIC-LABEL: bat03: 7751; LINUX-64-STATIC: # %bb.0: # %entry 7752; LINUX-64-STATIC-NEXT: movl $dsrc+64, %eax 7753; LINUX-64-STATIC-NEXT: retq 7754; 7755; LINUX-32-STATIC-LABEL: bat03: 7756; LINUX-32-STATIC: # %bb.0: # %entry 7757; LINUX-32-STATIC-NEXT: movl $dsrc+64, %eax 7758; LINUX-32-STATIC-NEXT: retl 7759; 7760; LINUX-32-PIC-LABEL: bat03: 7761; LINUX-32-PIC: # %bb.0: # %entry 7762; LINUX-32-PIC-NEXT: calll .L93$pb 7763; LINUX-32-PIC-NEXT: .L93$pb: 7764; LINUX-32-PIC-NEXT: popl %eax 7765; LINUX-32-PIC-NEXT: .Ltmp93: 7766; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp93-.L93$pb), %eax 7767; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+64(%eax), %eax 7768; LINUX-32-PIC-NEXT: retl 7769; 7770; LINUX-64-PIC-LABEL: bat03: 7771; LINUX-64-PIC: # %bb.0: # %entry 7772; LINUX-64-PIC-NEXT: leaq .Ldsrc$local+64(%rip), %rax 7773; LINUX-64-PIC-NEXT: retq 7774; 7775; DARWIN-32-STATIC-LABEL: bat03: 7776; DARWIN-32-STATIC: ## %bb.0: ## %entry 7777; DARWIN-32-STATIC-NEXT: movl $_dsrc+64, %eax 7778; DARWIN-32-STATIC-NEXT: retl 7779; 7780; DARWIN-32-DYNAMIC-LABEL: bat03: 7781; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7782; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+64, %eax 7783; DARWIN-32-DYNAMIC-NEXT: retl 7784; 7785; DARWIN-32-PIC-LABEL: bat03: 7786; DARWIN-32-PIC: ## %bb.0: ## %entry 7787; DARWIN-32-PIC-NEXT: calll L93$pb 7788; DARWIN-32-PIC-NEXT: L93$pb: 7789; DARWIN-32-PIC-NEXT: popl %eax 7790; DARWIN-32-PIC-NEXT: leal (_dsrc-L93$pb)+64(%eax), %eax 7791; DARWIN-32-PIC-NEXT: retl 7792; 7793; DARWIN-64-STATIC-LABEL: bat03: 7794; DARWIN-64-STATIC: ## %bb.0: ## %entry 7795; DARWIN-64-STATIC-NEXT: leaq _dsrc+64(%rip), %rax 7796; DARWIN-64-STATIC-NEXT: retq 7797; 7798; DARWIN-64-DYNAMIC-LABEL: bat03: 7799; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7800; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+64(%rip), %rax 7801; DARWIN-64-DYNAMIC-NEXT: retq 7802; 7803; DARWIN-64-PIC-LABEL: bat03: 7804; DARWIN-64-PIC: ## %bb.0: ## %entry 7805; DARWIN-64-PIC-NEXT: leaq _dsrc+64(%rip), %rax 7806; DARWIN-64-PIC-NEXT: retq 7807 7808entry: 7809 ret ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 16) 7810} 7811 7812define dso_local ptr @bat04() nounwind { 7813; LINUX-64-STATIC-LABEL: bat04: 7814; LINUX-64-STATIC: # %bb.0: # %entry 7815; LINUX-64-STATIC-NEXT: movl $ddst+64, %eax 7816; LINUX-64-STATIC-NEXT: retq 7817; 7818; LINUX-32-STATIC-LABEL: bat04: 7819; LINUX-32-STATIC: # %bb.0: # %entry 7820; LINUX-32-STATIC-NEXT: movl $ddst+64, %eax 7821; LINUX-32-STATIC-NEXT: retl 7822; 7823; LINUX-32-PIC-LABEL: bat04: 7824; LINUX-32-PIC: # %bb.0: # %entry 7825; LINUX-32-PIC-NEXT: calll .L94$pb 7826; LINUX-32-PIC-NEXT: .L94$pb: 7827; LINUX-32-PIC-NEXT: popl %eax 7828; LINUX-32-PIC-NEXT: .Ltmp94: 7829; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp94-.L94$pb), %eax 7830; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax), %eax 7831; LINUX-32-PIC-NEXT: retl 7832; 7833; LINUX-64-PIC-LABEL: bat04: 7834; LINUX-64-PIC: # %bb.0: # %entry 7835; LINUX-64-PIC-NEXT: leaq .Lddst$local+64(%rip), %rax 7836; LINUX-64-PIC-NEXT: retq 7837; 7838; DARWIN-32-STATIC-LABEL: bat04: 7839; DARWIN-32-STATIC: ## %bb.0: ## %entry 7840; DARWIN-32-STATIC-NEXT: movl $_ddst+64, %eax 7841; DARWIN-32-STATIC-NEXT: retl 7842; 7843; DARWIN-32-DYNAMIC-LABEL: bat04: 7844; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7845; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+64, %eax 7846; DARWIN-32-DYNAMIC-NEXT: retl 7847; 7848; DARWIN-32-PIC-LABEL: bat04: 7849; DARWIN-32-PIC: ## %bb.0: ## %entry 7850; DARWIN-32-PIC-NEXT: calll L94$pb 7851; DARWIN-32-PIC-NEXT: L94$pb: 7852; DARWIN-32-PIC-NEXT: popl %eax 7853; DARWIN-32-PIC-NEXT: leal (_ddst-L94$pb)+64(%eax), %eax 7854; DARWIN-32-PIC-NEXT: retl 7855; 7856; DARWIN-64-STATIC-LABEL: bat04: 7857; DARWIN-64-STATIC: ## %bb.0: ## %entry 7858; DARWIN-64-STATIC-NEXT: leaq _ddst+64(%rip), %rax 7859; DARWIN-64-STATIC-NEXT: retq 7860; 7861; DARWIN-64-DYNAMIC-LABEL: bat04: 7862; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7863; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+64(%rip), %rax 7864; DARWIN-64-DYNAMIC-NEXT: retq 7865; 7866; DARWIN-64-PIC-LABEL: bat04: 7867; DARWIN-64-PIC: ## %bb.0: ## %entry 7868; DARWIN-64-PIC-NEXT: leaq _ddst+64(%rip), %rax 7869; DARWIN-64-PIC-NEXT: retq 7870 7871entry: 7872 ret ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 16) 7873} 7874 7875define dso_local ptr @bat05() nounwind { 7876; LINUX-64-STATIC-LABEL: bat05: 7877; LINUX-64-STATIC: # %bb.0: # %entry 7878; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 7879; LINUX-64-STATIC-NEXT: addq $64, %rax 7880; LINUX-64-STATIC-NEXT: retq 7881; 7882; LINUX-32-STATIC-LABEL: bat05: 7883; LINUX-32-STATIC: # %bb.0: # %entry 7884; LINUX-32-STATIC-NEXT: movl dptr, %eax 7885; LINUX-32-STATIC-NEXT: addl $64, %eax 7886; LINUX-32-STATIC-NEXT: retl 7887; 7888; LINUX-32-PIC-LABEL: bat05: 7889; LINUX-32-PIC: # %bb.0: # %entry 7890; LINUX-32-PIC-NEXT: calll .L95$pb 7891; LINUX-32-PIC-NEXT: .L95$pb: 7892; LINUX-32-PIC-NEXT: popl %eax 7893; LINUX-32-PIC-NEXT: .Ltmp95: 7894; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp95-.L95$pb), %eax 7895; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 7896; LINUX-32-PIC-NEXT: addl $64, %eax 7897; LINUX-32-PIC-NEXT: retl 7898; 7899; LINUX-64-PIC-LABEL: bat05: 7900; LINUX-64-PIC: # %bb.0: # %entry 7901; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 7902; LINUX-64-PIC-NEXT: addq $64, %rax 7903; LINUX-64-PIC-NEXT: retq 7904; 7905; DARWIN-32-STATIC-LABEL: bat05: 7906; DARWIN-32-STATIC: ## %bb.0: ## %entry 7907; DARWIN-32-STATIC-NEXT: movl _dptr, %eax 7908; DARWIN-32-STATIC-NEXT: addl $64, %eax 7909; DARWIN-32-STATIC-NEXT: retl 7910; 7911; DARWIN-32-DYNAMIC-LABEL: bat05: 7912; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7913; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %eax 7914; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 7915; DARWIN-32-DYNAMIC-NEXT: retl 7916; 7917; DARWIN-32-PIC-LABEL: bat05: 7918; DARWIN-32-PIC: ## %bb.0: ## %entry 7919; DARWIN-32-PIC-NEXT: calll L95$pb 7920; DARWIN-32-PIC-NEXT: L95$pb: 7921; DARWIN-32-PIC-NEXT: popl %eax 7922; DARWIN-32-PIC-NEXT: movl _dptr-L95$pb(%eax), %eax 7923; DARWIN-32-PIC-NEXT: addl $64, %eax 7924; DARWIN-32-PIC-NEXT: retl 7925; 7926; DARWIN-64-STATIC-LABEL: bat05: 7927; DARWIN-64-STATIC: ## %bb.0: ## %entry 7928; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 7929; DARWIN-64-STATIC-NEXT: addq $64, %rax 7930; DARWIN-64-STATIC-NEXT: retq 7931; 7932; DARWIN-64-DYNAMIC-LABEL: bat05: 7933; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 7934; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 7935; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 7936; DARWIN-64-DYNAMIC-NEXT: retq 7937; 7938; DARWIN-64-PIC-LABEL: bat05: 7939; DARWIN-64-PIC: ## %bb.0: ## %entry 7940; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 7941; DARWIN-64-PIC-NEXT: addq $64, %rax 7942; DARWIN-64-PIC-NEXT: retq 7943 7944entry: 7945 %0 = load ptr, ptr @dptr, align 8 7946 %1 = getelementptr i32, ptr %0, i64 16 7947 ret ptr %1 7948} 7949 7950define dso_local ptr @bat06() nounwind { 7951; LINUX-64-STATIC-LABEL: bat06: 7952; LINUX-64-STATIC: # %bb.0: # %entry 7953; LINUX-64-STATIC-NEXT: movl $lsrc+64, %eax 7954; LINUX-64-STATIC-NEXT: retq 7955; 7956; LINUX-32-STATIC-LABEL: bat06: 7957; LINUX-32-STATIC: # %bb.0: # %entry 7958; LINUX-32-STATIC-NEXT: movl $lsrc+64, %eax 7959; LINUX-32-STATIC-NEXT: retl 7960; 7961; LINUX-32-PIC-LABEL: bat06: 7962; LINUX-32-PIC: # %bb.0: # %entry 7963; LINUX-32-PIC-NEXT: calll .L96$pb 7964; LINUX-32-PIC-NEXT: .L96$pb: 7965; LINUX-32-PIC-NEXT: popl %eax 7966; LINUX-32-PIC-NEXT: .Ltmp96: 7967; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp96-.L96$pb), %eax 7968; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax), %eax 7969; LINUX-32-PIC-NEXT: retl 7970; 7971; LINUX-64-PIC-LABEL: bat06: 7972; LINUX-64-PIC: # %bb.0: # %entry 7973; LINUX-64-PIC-NEXT: leaq lsrc+64(%rip), %rax 7974; LINUX-64-PIC-NEXT: retq 7975; 7976; DARWIN-32-STATIC-LABEL: bat06: 7977; DARWIN-32-STATIC: ## %bb.0: ## %entry 7978; DARWIN-32-STATIC-NEXT: movl $_lsrc+64, %eax 7979; DARWIN-32-STATIC-NEXT: retl 7980; 7981; DARWIN-32-DYNAMIC-LABEL: bat06: 7982; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 7983; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+64, %eax 7984; DARWIN-32-DYNAMIC-NEXT: retl 7985; 7986; DARWIN-32-PIC-LABEL: bat06: 7987; DARWIN-32-PIC: ## %bb.0: ## %entry 7988; DARWIN-32-PIC-NEXT: calll L96$pb 7989; DARWIN-32-PIC-NEXT: L96$pb: 7990; DARWIN-32-PIC-NEXT: popl %eax 7991; DARWIN-32-PIC-NEXT: leal (_lsrc-L96$pb)+64(%eax), %eax 7992; DARWIN-32-PIC-NEXT: retl 7993; 7994; DARWIN-64-STATIC-LABEL: bat06: 7995; DARWIN-64-STATIC: ## %bb.0: ## %entry 7996; DARWIN-64-STATIC-NEXT: leaq _lsrc+64(%rip), %rax 7997; DARWIN-64-STATIC-NEXT: retq 7998; 7999; DARWIN-64-DYNAMIC-LABEL: bat06: 8000; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8001; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+64(%rip), %rax 8002; DARWIN-64-DYNAMIC-NEXT: retq 8003; 8004; DARWIN-64-PIC-LABEL: bat06: 8005; DARWIN-64-PIC: ## %bb.0: ## %entry 8006; DARWIN-64-PIC-NEXT: leaq _lsrc+64(%rip), %rax 8007; DARWIN-64-PIC-NEXT: retq 8008 8009entry: 8010 ret ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 16) 8011} 8012 8013define dso_local ptr @bat07() nounwind { 8014; LINUX-64-STATIC-LABEL: bat07: 8015; LINUX-64-STATIC: # %bb.0: # %entry 8016; LINUX-64-STATIC-NEXT: movl $ldst+64, %eax 8017; LINUX-64-STATIC-NEXT: retq 8018; 8019; LINUX-32-STATIC-LABEL: bat07: 8020; LINUX-32-STATIC: # %bb.0: # %entry 8021; LINUX-32-STATIC-NEXT: movl $ldst+64, %eax 8022; LINUX-32-STATIC-NEXT: retl 8023; 8024; LINUX-32-PIC-LABEL: bat07: 8025; LINUX-32-PIC: # %bb.0: # %entry 8026; LINUX-32-PIC-NEXT: calll .L97$pb 8027; LINUX-32-PIC-NEXT: .L97$pb: 8028; LINUX-32-PIC-NEXT: popl %eax 8029; LINUX-32-PIC-NEXT: .Ltmp97: 8030; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp97-.L97$pb), %eax 8031; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax), %eax 8032; LINUX-32-PIC-NEXT: retl 8033; 8034; LINUX-64-PIC-LABEL: bat07: 8035; LINUX-64-PIC: # %bb.0: # %entry 8036; LINUX-64-PIC-NEXT: leaq ldst+64(%rip), %rax 8037; LINUX-64-PIC-NEXT: retq 8038; 8039; DARWIN-32-STATIC-LABEL: bat07: 8040; DARWIN-32-STATIC: ## %bb.0: ## %entry 8041; DARWIN-32-STATIC-NEXT: movl $_ldst+64, %eax 8042; DARWIN-32-STATIC-NEXT: retl 8043; 8044; DARWIN-32-DYNAMIC-LABEL: bat07: 8045; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8046; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+64, %eax 8047; DARWIN-32-DYNAMIC-NEXT: retl 8048; 8049; DARWIN-32-PIC-LABEL: bat07: 8050; DARWIN-32-PIC: ## %bb.0: ## %entry 8051; DARWIN-32-PIC-NEXT: calll L97$pb 8052; DARWIN-32-PIC-NEXT: L97$pb: 8053; DARWIN-32-PIC-NEXT: popl %eax 8054; DARWIN-32-PIC-NEXT: leal (_ldst-L97$pb)+64(%eax), %eax 8055; DARWIN-32-PIC-NEXT: retl 8056; 8057; DARWIN-64-STATIC-LABEL: bat07: 8058; DARWIN-64-STATIC: ## %bb.0: ## %entry 8059; DARWIN-64-STATIC-NEXT: leaq _ldst+64(%rip), %rax 8060; DARWIN-64-STATIC-NEXT: retq 8061; 8062; DARWIN-64-DYNAMIC-LABEL: bat07: 8063; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8064; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+64(%rip), %rax 8065; DARWIN-64-DYNAMIC-NEXT: retq 8066; 8067; DARWIN-64-PIC-LABEL: bat07: 8068; DARWIN-64-PIC: ## %bb.0: ## %entry 8069; DARWIN-64-PIC-NEXT: leaq _ldst+64(%rip), %rax 8070; DARWIN-64-PIC-NEXT: retq 8071 8072entry: 8073 ret ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 16) 8074} 8075 8076define dso_local ptr @bat08() nounwind { 8077; LINUX-64-STATIC-LABEL: bat08: 8078; LINUX-64-STATIC: # %bb.0: # %entry 8079; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 8080; LINUX-64-STATIC-NEXT: addq $64, %rax 8081; LINUX-64-STATIC-NEXT: retq 8082; 8083; LINUX-32-STATIC-LABEL: bat08: 8084; LINUX-32-STATIC: # %bb.0: # %entry 8085; LINUX-32-STATIC-NEXT: movl lptr, %eax 8086; LINUX-32-STATIC-NEXT: addl $64, %eax 8087; LINUX-32-STATIC-NEXT: retl 8088; 8089; LINUX-32-PIC-LABEL: bat08: 8090; LINUX-32-PIC: # %bb.0: # %entry 8091; LINUX-32-PIC-NEXT: calll .L98$pb 8092; LINUX-32-PIC-NEXT: .L98$pb: 8093; LINUX-32-PIC-NEXT: popl %eax 8094; LINUX-32-PIC-NEXT: .Ltmp98: 8095; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp98-.L98$pb), %eax 8096; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 8097; LINUX-32-PIC-NEXT: addl $64, %eax 8098; LINUX-32-PIC-NEXT: retl 8099; 8100; LINUX-64-PIC-LABEL: bat08: 8101; LINUX-64-PIC: # %bb.0: # %entry 8102; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 8103; LINUX-64-PIC-NEXT: addq $64, %rax 8104; LINUX-64-PIC-NEXT: retq 8105; 8106; DARWIN-32-STATIC-LABEL: bat08: 8107; DARWIN-32-STATIC: ## %bb.0: ## %entry 8108; DARWIN-32-STATIC-NEXT: movl _lptr, %eax 8109; DARWIN-32-STATIC-NEXT: addl $64, %eax 8110; DARWIN-32-STATIC-NEXT: retl 8111; 8112; DARWIN-32-DYNAMIC-LABEL: bat08: 8113; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8114; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %eax 8115; DARWIN-32-DYNAMIC-NEXT: addl $64, %eax 8116; DARWIN-32-DYNAMIC-NEXT: retl 8117; 8118; DARWIN-32-PIC-LABEL: bat08: 8119; DARWIN-32-PIC: ## %bb.0: ## %entry 8120; DARWIN-32-PIC-NEXT: calll L98$pb 8121; DARWIN-32-PIC-NEXT: L98$pb: 8122; DARWIN-32-PIC-NEXT: popl %eax 8123; DARWIN-32-PIC-NEXT: movl _lptr-L98$pb(%eax), %eax 8124; DARWIN-32-PIC-NEXT: addl $64, %eax 8125; DARWIN-32-PIC-NEXT: retl 8126; 8127; DARWIN-64-STATIC-LABEL: bat08: 8128; DARWIN-64-STATIC: ## %bb.0: ## %entry 8129; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 8130; DARWIN-64-STATIC-NEXT: addq $64, %rax 8131; DARWIN-64-STATIC-NEXT: retq 8132; 8133; DARWIN-64-DYNAMIC-LABEL: bat08: 8134; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8135; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 8136; DARWIN-64-DYNAMIC-NEXT: addq $64, %rax 8137; DARWIN-64-DYNAMIC-NEXT: retq 8138; 8139; DARWIN-64-PIC-LABEL: bat08: 8140; DARWIN-64-PIC: ## %bb.0: ## %entry 8141; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 8142; DARWIN-64-PIC-NEXT: addq $64, %rax 8143; DARWIN-64-PIC-NEXT: retq 8144 8145entry: 8146 %0 = load ptr, ptr @lptr, align 8 8147 %1 = getelementptr i32, ptr %0, i64 16 8148 ret ptr %1 8149} 8150 8151define dso_local ptr @bam00() nounwind { 8152; LINUX-64-STATIC-LABEL: bam00: 8153; LINUX-64-STATIC: # %bb.0: # %entry 8154; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8155; LINUX-64-STATIC-NEXT: addq src@GOTPCREL(%rip), %rax 8156; LINUX-64-STATIC-NEXT: retq 8157; 8158; LINUX-32-STATIC-LABEL: bam00: 8159; LINUX-32-STATIC: # %bb.0: # %entry 8160; LINUX-32-STATIC-NEXT: leal src+262144, %eax 8161; LINUX-32-STATIC-NEXT: retl 8162; 8163; LINUX-32-PIC-LABEL: bam00: 8164; LINUX-32-PIC: # %bb.0: # %entry 8165; LINUX-32-PIC-NEXT: calll .L99$pb 8166; LINUX-32-PIC-NEXT: .L99$pb: 8167; LINUX-32-PIC-NEXT: popl %ecx 8168; LINUX-32-PIC-NEXT: .Ltmp99: 8169; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp99-.L99$pb), %ecx 8170; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8171; LINUX-32-PIC-NEXT: addl src@GOT(%ecx), %eax 8172; LINUX-32-PIC-NEXT: retl 8173; 8174; LINUX-64-PIC-LABEL: bam00: 8175; LINUX-64-PIC: # %bb.0: # %entry 8176; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8177; LINUX-64-PIC-NEXT: addq src@GOTPCREL(%rip), %rax 8178; LINUX-64-PIC-NEXT: retq 8179; 8180; DARWIN-32-STATIC-LABEL: bam00: 8181; DARWIN-32-STATIC: ## %bb.0: ## %entry 8182; DARWIN-32-STATIC-NEXT: movl $_src+262144, %eax 8183; DARWIN-32-STATIC-NEXT: retl 8184; 8185; DARWIN-32-DYNAMIC-LABEL: bam00: 8186; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8187; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8188; DARWIN-32-DYNAMIC-NEXT: addl L_src$non_lazy_ptr, %eax 8189; DARWIN-32-DYNAMIC-NEXT: retl 8190; 8191; DARWIN-32-PIC-LABEL: bam00: 8192; DARWIN-32-PIC: ## %bb.0: ## %entry 8193; DARWIN-32-PIC-NEXT: calll L99$pb 8194; DARWIN-32-PIC-NEXT: L99$pb: 8195; DARWIN-32-PIC-NEXT: popl %ecx 8196; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8197; DARWIN-32-PIC-NEXT: addl L_src$non_lazy_ptr-L99$pb(%ecx), %eax 8198; DARWIN-32-PIC-NEXT: retl 8199; 8200; DARWIN-64-STATIC-LABEL: bam00: 8201; DARWIN-64-STATIC: ## %bb.0: ## %entry 8202; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8203; DARWIN-64-STATIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8204; DARWIN-64-STATIC-NEXT: retq 8205; 8206; DARWIN-64-DYNAMIC-LABEL: bam00: 8207; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8208; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8209; DARWIN-64-DYNAMIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8210; DARWIN-64-DYNAMIC-NEXT: retq 8211; 8212; DARWIN-64-PIC-LABEL: bam00: 8213; DARWIN-64-PIC: ## %bb.0: ## %entry 8214; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8215; DARWIN-64-PIC-NEXT: addq _src@GOTPCREL(%rip), %rax 8216; DARWIN-64-PIC-NEXT: retq 8217 8218entry: 8219 ret ptr getelementptr ([131072 x i32], ptr @src, i32 0, i64 65536) 8220} 8221 8222define dso_local ptr @bam01() nounwind { 8223; LINUX-64-STATIC-LABEL: bam01: 8224; LINUX-64-STATIC: # %bb.0: # %entry 8225; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8226; LINUX-64-STATIC-NEXT: addq dst@GOTPCREL(%rip), %rax 8227; LINUX-64-STATIC-NEXT: retq 8228; 8229; LINUX-32-STATIC-LABEL: bam01: 8230; LINUX-32-STATIC: # %bb.0: # %entry 8231; LINUX-32-STATIC-NEXT: leal dst+262144, %eax 8232; LINUX-32-STATIC-NEXT: retl 8233; 8234; LINUX-32-PIC-LABEL: bam01: 8235; LINUX-32-PIC: # %bb.0: # %entry 8236; LINUX-32-PIC-NEXT: calll .L100$pb 8237; LINUX-32-PIC-NEXT: .L100$pb: 8238; LINUX-32-PIC-NEXT: popl %ecx 8239; LINUX-32-PIC-NEXT: .Ltmp100: 8240; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp100-.L100$pb), %ecx 8241; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8242; LINUX-32-PIC-NEXT: addl dst@GOT(%ecx), %eax 8243; LINUX-32-PIC-NEXT: retl 8244; 8245; LINUX-64-PIC-LABEL: bam01: 8246; LINUX-64-PIC: # %bb.0: # %entry 8247; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8248; LINUX-64-PIC-NEXT: addq dst@GOTPCREL(%rip), %rax 8249; LINUX-64-PIC-NEXT: retq 8250; 8251; DARWIN-32-STATIC-LABEL: bam01: 8252; DARWIN-32-STATIC: ## %bb.0: ## %entry 8253; DARWIN-32-STATIC-NEXT: movl $_dst+262144, %eax 8254; DARWIN-32-STATIC-NEXT: retl 8255; 8256; DARWIN-32-DYNAMIC-LABEL: bam01: 8257; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8258; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8259; DARWIN-32-DYNAMIC-NEXT: addl L_dst$non_lazy_ptr, %eax 8260; DARWIN-32-DYNAMIC-NEXT: retl 8261; 8262; DARWIN-32-PIC-LABEL: bam01: 8263; DARWIN-32-PIC: ## %bb.0: ## %entry 8264; DARWIN-32-PIC-NEXT: calll L100$pb 8265; DARWIN-32-PIC-NEXT: L100$pb: 8266; DARWIN-32-PIC-NEXT: popl %ecx 8267; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8268; DARWIN-32-PIC-NEXT: addl L_dst$non_lazy_ptr-L100$pb(%ecx), %eax 8269; DARWIN-32-PIC-NEXT: retl 8270; 8271; DARWIN-64-STATIC-LABEL: bam01: 8272; DARWIN-64-STATIC: ## %bb.0: ## %entry 8273; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8274; DARWIN-64-STATIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8275; DARWIN-64-STATIC-NEXT: retq 8276; 8277; DARWIN-64-DYNAMIC-LABEL: bam01: 8278; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8279; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8280; DARWIN-64-DYNAMIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8281; DARWIN-64-DYNAMIC-NEXT: retq 8282; 8283; DARWIN-64-PIC-LABEL: bam01: 8284; DARWIN-64-PIC: ## %bb.0: ## %entry 8285; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8286; DARWIN-64-PIC-NEXT: addq _dst@GOTPCREL(%rip), %rax 8287; DARWIN-64-PIC-NEXT: retq 8288 8289entry: 8290 ret ptr getelementptr ([131072 x i32], ptr @dst, i32 0, i64 65536) 8291} 8292 8293define dso_local ptr @bxm01() nounwind { 8294; LINUX-64-STATIC-LABEL: bxm01: 8295; LINUX-64-STATIC: # %bb.0: # %entry 8296; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8297; LINUX-64-STATIC-NEXT: addq xdst@GOTPCREL(%rip), %rax 8298; LINUX-64-STATIC-NEXT: retq 8299; 8300; LINUX-32-STATIC-LABEL: bxm01: 8301; LINUX-32-STATIC: # %bb.0: # %entry 8302; LINUX-32-STATIC-NEXT: leal xdst+262144, %eax 8303; LINUX-32-STATIC-NEXT: retl 8304; 8305; LINUX-32-PIC-LABEL: bxm01: 8306; LINUX-32-PIC: # %bb.0: # %entry 8307; LINUX-32-PIC-NEXT: calll .L101$pb 8308; LINUX-32-PIC-NEXT: .L101$pb: 8309; LINUX-32-PIC-NEXT: popl %ecx 8310; LINUX-32-PIC-NEXT: .Ltmp101: 8311; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp101-.L101$pb), %ecx 8312; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8313; LINUX-32-PIC-NEXT: addl xdst@GOT(%ecx), %eax 8314; LINUX-32-PIC-NEXT: retl 8315; 8316; LINUX-64-PIC-LABEL: bxm01: 8317; LINUX-64-PIC: # %bb.0: # %entry 8318; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8319; LINUX-64-PIC-NEXT: addq xdst@GOTPCREL(%rip), %rax 8320; LINUX-64-PIC-NEXT: retq 8321; 8322; DARWIN-32-STATIC-LABEL: bxm01: 8323; DARWIN-32-STATIC: ## %bb.0: ## %entry 8324; DARWIN-32-STATIC-NEXT: movl $_xdst+262144, %eax 8325; DARWIN-32-STATIC-NEXT: retl 8326; 8327; DARWIN-32-DYNAMIC-LABEL: bxm01: 8328; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8329; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8330; DARWIN-32-DYNAMIC-NEXT: addl L_xdst$non_lazy_ptr, %eax 8331; DARWIN-32-DYNAMIC-NEXT: retl 8332; 8333; DARWIN-32-PIC-LABEL: bxm01: 8334; DARWIN-32-PIC: ## %bb.0: ## %entry 8335; DARWIN-32-PIC-NEXT: calll L101$pb 8336; DARWIN-32-PIC-NEXT: L101$pb: 8337; DARWIN-32-PIC-NEXT: popl %ecx 8338; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8339; DARWIN-32-PIC-NEXT: addl L_xdst$non_lazy_ptr-L101$pb(%ecx), %eax 8340; DARWIN-32-PIC-NEXT: retl 8341; 8342; DARWIN-64-STATIC-LABEL: bxm01: 8343; DARWIN-64-STATIC: ## %bb.0: ## %entry 8344; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8345; DARWIN-64-STATIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8346; DARWIN-64-STATIC-NEXT: retq 8347; 8348; DARWIN-64-DYNAMIC-LABEL: bxm01: 8349; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8350; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8351; DARWIN-64-DYNAMIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8352; DARWIN-64-DYNAMIC-NEXT: retq 8353; 8354; DARWIN-64-PIC-LABEL: bxm01: 8355; DARWIN-64-PIC: ## %bb.0: ## %entry 8356; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8357; DARWIN-64-PIC-NEXT: addq _xdst@GOTPCREL(%rip), %rax 8358; DARWIN-64-PIC-NEXT: retq 8359 8360entry: 8361 ret ptr getelementptr ([32 x i32], ptr @xdst, i32 0, i64 65536) 8362} 8363 8364define dso_local ptr @bam02() nounwind { 8365; LINUX-64-STATIC-LABEL: bam02: 8366; LINUX-64-STATIC: # %bb.0: # %entry 8367; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 8368; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8369; LINUX-64-STATIC-NEXT: addq (%rcx), %rax 8370; LINUX-64-STATIC-NEXT: retq 8371; 8372; LINUX-32-STATIC-LABEL: bam02: 8373; LINUX-32-STATIC: # %bb.0: # %entry 8374; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8375; LINUX-32-STATIC-NEXT: addl ptr, %eax 8376; LINUX-32-STATIC-NEXT: retl 8377; 8378; LINUX-32-PIC-LABEL: bam02: 8379; LINUX-32-PIC: # %bb.0: # %entry 8380; LINUX-32-PIC-NEXT: calll .L102$pb 8381; LINUX-32-PIC-NEXT: .L102$pb: 8382; LINUX-32-PIC-NEXT: popl %eax 8383; LINUX-32-PIC-NEXT: .Ltmp102: 8384; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp102-.L102$pb), %eax 8385; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %ecx 8386; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8387; LINUX-32-PIC-NEXT: addl (%ecx), %eax 8388; LINUX-32-PIC-NEXT: retl 8389; 8390; LINUX-64-PIC-LABEL: bam02: 8391; LINUX-64-PIC: # %bb.0: # %entry 8392; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rcx 8393; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8394; LINUX-64-PIC-NEXT: addq (%rcx), %rax 8395; LINUX-64-PIC-NEXT: retq 8396; 8397; DARWIN-32-STATIC-LABEL: bam02: 8398; DARWIN-32-STATIC: ## %bb.0: ## %entry 8399; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8400; DARWIN-32-STATIC-NEXT: addl _ptr, %eax 8401; DARWIN-32-STATIC-NEXT: retl 8402; 8403; DARWIN-32-DYNAMIC-LABEL: bam02: 8404; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8405; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %ecx 8406; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8407; DARWIN-32-DYNAMIC-NEXT: addl (%ecx), %eax 8408; DARWIN-32-DYNAMIC-NEXT: retl 8409; 8410; DARWIN-32-PIC-LABEL: bam02: 8411; DARWIN-32-PIC: ## %bb.0: ## %entry 8412; DARWIN-32-PIC-NEXT: calll L102$pb 8413; DARWIN-32-PIC-NEXT: L102$pb: 8414; DARWIN-32-PIC-NEXT: popl %eax 8415; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L102$pb(%eax), %ecx 8416; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8417; DARWIN-32-PIC-NEXT: addl (%ecx), %eax 8418; DARWIN-32-PIC-NEXT: retl 8419; 8420; DARWIN-64-STATIC-LABEL: bam02: 8421; DARWIN-64-STATIC: ## %bb.0: ## %entry 8422; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8423; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8424; DARWIN-64-STATIC-NEXT: addq (%rcx), %rax 8425; DARWIN-64-STATIC-NEXT: retq 8426; 8427; DARWIN-64-DYNAMIC-LABEL: bam02: 8428; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8429; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8430; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8431; DARWIN-64-DYNAMIC-NEXT: addq (%rcx), %rax 8432; DARWIN-64-DYNAMIC-NEXT: retq 8433; 8434; DARWIN-64-PIC-LABEL: bam02: 8435; DARWIN-64-PIC: ## %bb.0: ## %entry 8436; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rcx 8437; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8438; DARWIN-64-PIC-NEXT: addq (%rcx), %rax 8439; DARWIN-64-PIC-NEXT: retq 8440 8441entry: 8442 %0 = load ptr, ptr @ptr, align 8 8443 %1 = getelementptr i32, ptr %0, i64 65536 8444 ret ptr %1 8445} 8446 8447define dso_local ptr @bam03() nounwind { 8448; LINUX-64-STATIC-LABEL: bam03: 8449; LINUX-64-STATIC: # %bb.0: # %entry 8450; LINUX-64-STATIC-NEXT: movl $dsrc+262144, %eax 8451; LINUX-64-STATIC-NEXT: retq 8452; 8453; LINUX-32-STATIC-LABEL: bam03: 8454; LINUX-32-STATIC: # %bb.0: # %entry 8455; LINUX-32-STATIC-NEXT: movl $dsrc+262144, %eax 8456; LINUX-32-STATIC-NEXT: retl 8457; 8458; LINUX-32-PIC-LABEL: bam03: 8459; LINUX-32-PIC: # %bb.0: # %entry 8460; LINUX-32-PIC-NEXT: calll .L103$pb 8461; LINUX-32-PIC-NEXT: .L103$pb: 8462; LINUX-32-PIC-NEXT: popl %eax 8463; LINUX-32-PIC-NEXT: .Ltmp103: 8464; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp103-.L103$pb), %eax 8465; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+262144(%eax), %eax 8466; LINUX-32-PIC-NEXT: retl 8467; 8468; LINUX-64-PIC-LABEL: bam03: 8469; LINUX-64-PIC: # %bb.0: # %entry 8470; LINUX-64-PIC-NEXT: leaq .Ldsrc$local+262144(%rip), %rax 8471; LINUX-64-PIC-NEXT: retq 8472; 8473; DARWIN-32-STATIC-LABEL: bam03: 8474; DARWIN-32-STATIC: ## %bb.0: ## %entry 8475; DARWIN-32-STATIC-NEXT: movl $_dsrc+262144, %eax 8476; DARWIN-32-STATIC-NEXT: retl 8477; 8478; DARWIN-32-DYNAMIC-LABEL: bam03: 8479; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8480; DARWIN-32-DYNAMIC-NEXT: movl $_dsrc+262144, %eax 8481; DARWIN-32-DYNAMIC-NEXT: retl 8482; 8483; DARWIN-32-PIC-LABEL: bam03: 8484; DARWIN-32-PIC: ## %bb.0: ## %entry 8485; DARWIN-32-PIC-NEXT: calll L103$pb 8486; DARWIN-32-PIC-NEXT: L103$pb: 8487; DARWIN-32-PIC-NEXT: popl %eax 8488; DARWIN-32-PIC-NEXT: leal (_dsrc-L103$pb)+262144(%eax), %eax 8489; DARWIN-32-PIC-NEXT: retl 8490; 8491; DARWIN-64-STATIC-LABEL: bam03: 8492; DARWIN-64-STATIC: ## %bb.0: ## %entry 8493; DARWIN-64-STATIC-NEXT: leaq _dsrc+262144(%rip), %rax 8494; DARWIN-64-STATIC-NEXT: retq 8495; 8496; DARWIN-64-DYNAMIC-LABEL: bam03: 8497; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8498; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc+262144(%rip), %rax 8499; DARWIN-64-DYNAMIC-NEXT: retq 8500; 8501; DARWIN-64-PIC-LABEL: bam03: 8502; DARWIN-64-PIC: ## %bb.0: ## %entry 8503; DARWIN-64-PIC-NEXT: leaq _dsrc+262144(%rip), %rax 8504; DARWIN-64-PIC-NEXT: retq 8505 8506entry: 8507 ret ptr getelementptr ([131072 x i32], ptr @dsrc, i32 0, i64 65536) 8508} 8509 8510define dso_local ptr @bam04() nounwind { 8511; LINUX-64-STATIC-LABEL: bam04: 8512; LINUX-64-STATIC: # %bb.0: # %entry 8513; LINUX-64-STATIC-NEXT: movl $ddst+262144, %eax 8514; LINUX-64-STATIC-NEXT: retq 8515; 8516; LINUX-32-STATIC-LABEL: bam04: 8517; LINUX-32-STATIC: # %bb.0: # %entry 8518; LINUX-32-STATIC-NEXT: movl $ddst+262144, %eax 8519; LINUX-32-STATIC-NEXT: retl 8520; 8521; LINUX-32-PIC-LABEL: bam04: 8522; LINUX-32-PIC: # %bb.0: # %entry 8523; LINUX-32-PIC-NEXT: calll .L104$pb 8524; LINUX-32-PIC-NEXT: .L104$pb: 8525; LINUX-32-PIC-NEXT: popl %eax 8526; LINUX-32-PIC-NEXT: .Ltmp104: 8527; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp104-.L104$pb), %eax 8528; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax), %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: leaq .Lddst$local+262144(%rip), %rax 8534; LINUX-64-PIC-NEXT: retq 8535; 8536; DARWIN-32-STATIC-LABEL: bam04: 8537; DARWIN-32-STATIC: ## %bb.0: ## %entry 8538; DARWIN-32-STATIC-NEXT: movl $_ddst+262144, %eax 8539; DARWIN-32-STATIC-NEXT: retl 8540; 8541; DARWIN-32-DYNAMIC-LABEL: bam04: 8542; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8543; DARWIN-32-DYNAMIC-NEXT: movl $_ddst+262144, %eax 8544; DARWIN-32-DYNAMIC-NEXT: retl 8545; 8546; DARWIN-32-PIC-LABEL: bam04: 8547; DARWIN-32-PIC: ## %bb.0: ## %entry 8548; DARWIN-32-PIC-NEXT: calll L104$pb 8549; DARWIN-32-PIC-NEXT: L104$pb: 8550; DARWIN-32-PIC-NEXT: popl %eax 8551; DARWIN-32-PIC-NEXT: leal (_ddst-L104$pb)+262144(%eax), %eax 8552; DARWIN-32-PIC-NEXT: retl 8553; 8554; DARWIN-64-STATIC-LABEL: bam04: 8555; DARWIN-64-STATIC: ## %bb.0: ## %entry 8556; DARWIN-64-STATIC-NEXT: leaq _ddst+262144(%rip), %rax 8557; DARWIN-64-STATIC-NEXT: retq 8558; 8559; DARWIN-64-DYNAMIC-LABEL: bam04: 8560; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8561; DARWIN-64-DYNAMIC-NEXT: leaq _ddst+262144(%rip), %rax 8562; DARWIN-64-DYNAMIC-NEXT: retq 8563; 8564; DARWIN-64-PIC-LABEL: bam04: 8565; DARWIN-64-PIC: ## %bb.0: ## %entry 8566; DARWIN-64-PIC-NEXT: leaq _ddst+262144(%rip), %rax 8567; DARWIN-64-PIC-NEXT: retq 8568 8569entry: 8570 ret ptr getelementptr ([131072 x i32], ptr @ddst, i32 0, i64 65536) 8571} 8572 8573define dso_local ptr @bam05() nounwind { 8574; LINUX-64-STATIC-LABEL: bam05: 8575; LINUX-64-STATIC: # %bb.0: # %entry 8576; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8577; LINUX-64-STATIC-NEXT: addq dptr(%rip), %rax 8578; LINUX-64-STATIC-NEXT: retq 8579; 8580; LINUX-32-STATIC-LABEL: bam05: 8581; LINUX-32-STATIC: # %bb.0: # %entry 8582; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8583; LINUX-32-STATIC-NEXT: addl dptr, %eax 8584; LINUX-32-STATIC-NEXT: retl 8585; 8586; LINUX-32-PIC-LABEL: bam05: 8587; LINUX-32-PIC: # %bb.0: # %entry 8588; LINUX-32-PIC-NEXT: calll .L105$pb 8589; LINUX-32-PIC-NEXT: .L105$pb: 8590; LINUX-32-PIC-NEXT: popl %ecx 8591; LINUX-32-PIC-NEXT: .Ltmp105: 8592; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp105-.L105$pb), %ecx 8593; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8594; LINUX-32-PIC-NEXT: addl .Ldptr$local@GOTOFF(%ecx), %eax 8595; LINUX-32-PIC-NEXT: retl 8596; 8597; LINUX-64-PIC-LABEL: bam05: 8598; LINUX-64-PIC: # %bb.0: # %entry 8599; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8600; LINUX-64-PIC-NEXT: addq .Ldptr$local(%rip), %rax 8601; LINUX-64-PIC-NEXT: retq 8602; 8603; DARWIN-32-STATIC-LABEL: bam05: 8604; DARWIN-32-STATIC: ## %bb.0: ## %entry 8605; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8606; DARWIN-32-STATIC-NEXT: addl _dptr, %eax 8607; DARWIN-32-STATIC-NEXT: retl 8608; 8609; DARWIN-32-DYNAMIC-LABEL: bam05: 8610; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8611; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8612; DARWIN-32-DYNAMIC-NEXT: addl _dptr, %eax 8613; DARWIN-32-DYNAMIC-NEXT: retl 8614; 8615; DARWIN-32-PIC-LABEL: bam05: 8616; DARWIN-32-PIC: ## %bb.0: ## %entry 8617; DARWIN-32-PIC-NEXT: calll L105$pb 8618; DARWIN-32-PIC-NEXT: L105$pb: 8619; DARWIN-32-PIC-NEXT: popl %ecx 8620; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8621; DARWIN-32-PIC-NEXT: addl _dptr-L105$pb(%ecx), %eax 8622; DARWIN-32-PIC-NEXT: retl 8623; 8624; DARWIN-64-STATIC-LABEL: bam05: 8625; DARWIN-64-STATIC: ## %bb.0: ## %entry 8626; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8627; DARWIN-64-STATIC-NEXT: addq _dptr(%rip), %rax 8628; DARWIN-64-STATIC-NEXT: retq 8629; 8630; DARWIN-64-DYNAMIC-LABEL: bam05: 8631; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8632; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8633; DARWIN-64-DYNAMIC-NEXT: addq _dptr(%rip), %rax 8634; DARWIN-64-DYNAMIC-NEXT: retq 8635; 8636; DARWIN-64-PIC-LABEL: bam05: 8637; DARWIN-64-PIC: ## %bb.0: ## %entry 8638; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8639; DARWIN-64-PIC-NEXT: addq _dptr(%rip), %rax 8640; DARWIN-64-PIC-NEXT: retq 8641 8642entry: 8643 %0 = load ptr, ptr @dptr, align 8 8644 %1 = getelementptr i32, ptr %0, i64 65536 8645 ret ptr %1 8646} 8647 8648define dso_local ptr @bam06() nounwind { 8649; LINUX-64-STATIC-LABEL: bam06: 8650; LINUX-64-STATIC: # %bb.0: # %entry 8651; LINUX-64-STATIC-NEXT: movl $lsrc+262144, %eax 8652; LINUX-64-STATIC-NEXT: retq 8653; 8654; LINUX-32-STATIC-LABEL: bam06: 8655; LINUX-32-STATIC: # %bb.0: # %entry 8656; LINUX-32-STATIC-NEXT: movl $lsrc+262144, %eax 8657; LINUX-32-STATIC-NEXT: retl 8658; 8659; LINUX-32-PIC-LABEL: bam06: 8660; LINUX-32-PIC: # %bb.0: # %entry 8661; LINUX-32-PIC-NEXT: calll .L106$pb 8662; LINUX-32-PIC-NEXT: .L106$pb: 8663; LINUX-32-PIC-NEXT: popl %eax 8664; LINUX-32-PIC-NEXT: .Ltmp106: 8665; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp106-.L106$pb), %eax 8666; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax), %eax 8667; LINUX-32-PIC-NEXT: retl 8668; 8669; LINUX-64-PIC-LABEL: bam06: 8670; LINUX-64-PIC: # %bb.0: # %entry 8671; LINUX-64-PIC-NEXT: leaq lsrc+262144(%rip), %rax 8672; LINUX-64-PIC-NEXT: retq 8673; 8674; DARWIN-32-STATIC-LABEL: bam06: 8675; DARWIN-32-STATIC: ## %bb.0: ## %entry 8676; DARWIN-32-STATIC-NEXT: movl $_lsrc+262144, %eax 8677; DARWIN-32-STATIC-NEXT: retl 8678; 8679; DARWIN-32-DYNAMIC-LABEL: bam06: 8680; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8681; DARWIN-32-DYNAMIC-NEXT: movl $_lsrc+262144, %eax 8682; DARWIN-32-DYNAMIC-NEXT: retl 8683; 8684; DARWIN-32-PIC-LABEL: bam06: 8685; DARWIN-32-PIC: ## %bb.0: ## %entry 8686; DARWIN-32-PIC-NEXT: calll L106$pb 8687; DARWIN-32-PIC-NEXT: L106$pb: 8688; DARWIN-32-PIC-NEXT: popl %eax 8689; DARWIN-32-PIC-NEXT: leal (_lsrc-L106$pb)+262144(%eax), %eax 8690; DARWIN-32-PIC-NEXT: retl 8691; 8692; DARWIN-64-STATIC-LABEL: bam06: 8693; DARWIN-64-STATIC: ## %bb.0: ## %entry 8694; DARWIN-64-STATIC-NEXT: leaq _lsrc+262144(%rip), %rax 8695; DARWIN-64-STATIC-NEXT: retq 8696; 8697; DARWIN-64-DYNAMIC-LABEL: bam06: 8698; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8699; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc+262144(%rip), %rax 8700; DARWIN-64-DYNAMIC-NEXT: retq 8701; 8702; DARWIN-64-PIC-LABEL: bam06: 8703; DARWIN-64-PIC: ## %bb.0: ## %entry 8704; DARWIN-64-PIC-NEXT: leaq _lsrc+262144(%rip), %rax 8705; DARWIN-64-PIC-NEXT: retq 8706 8707entry: 8708 ret ptr getelementptr ([131072 x i32], ptr @lsrc, i32 0, i64 65536) 8709} 8710 8711define dso_local ptr @bam07() nounwind { 8712; LINUX-64-STATIC-LABEL: bam07: 8713; LINUX-64-STATIC: # %bb.0: # %entry 8714; LINUX-64-STATIC-NEXT: movl $ldst+262144, %eax 8715; LINUX-64-STATIC-NEXT: retq 8716; 8717; LINUX-32-STATIC-LABEL: bam07: 8718; LINUX-32-STATIC: # %bb.0: # %entry 8719; LINUX-32-STATIC-NEXT: movl $ldst+262144, %eax 8720; LINUX-32-STATIC-NEXT: retl 8721; 8722; LINUX-32-PIC-LABEL: bam07: 8723; LINUX-32-PIC: # %bb.0: # %entry 8724; LINUX-32-PIC-NEXT: calll .L107$pb 8725; LINUX-32-PIC-NEXT: .L107$pb: 8726; LINUX-32-PIC-NEXT: popl %eax 8727; LINUX-32-PIC-NEXT: .Ltmp107: 8728; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp107-.L107$pb), %eax 8729; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax), %eax 8730; LINUX-32-PIC-NEXT: retl 8731; 8732; LINUX-64-PIC-LABEL: bam07: 8733; LINUX-64-PIC: # %bb.0: # %entry 8734; LINUX-64-PIC-NEXT: leaq ldst+262144(%rip), %rax 8735; LINUX-64-PIC-NEXT: retq 8736; 8737; DARWIN-32-STATIC-LABEL: bam07: 8738; DARWIN-32-STATIC: ## %bb.0: ## %entry 8739; DARWIN-32-STATIC-NEXT: movl $_ldst+262144, %eax 8740; DARWIN-32-STATIC-NEXT: retl 8741; 8742; DARWIN-32-DYNAMIC-LABEL: bam07: 8743; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8744; DARWIN-32-DYNAMIC-NEXT: movl $_ldst+262144, %eax 8745; DARWIN-32-DYNAMIC-NEXT: retl 8746; 8747; DARWIN-32-PIC-LABEL: bam07: 8748; DARWIN-32-PIC: ## %bb.0: ## %entry 8749; DARWIN-32-PIC-NEXT: calll L107$pb 8750; DARWIN-32-PIC-NEXT: L107$pb: 8751; DARWIN-32-PIC-NEXT: popl %eax 8752; DARWIN-32-PIC-NEXT: leal (_ldst-L107$pb)+262144(%eax), %eax 8753; DARWIN-32-PIC-NEXT: retl 8754; 8755; DARWIN-64-STATIC-LABEL: bam07: 8756; DARWIN-64-STATIC: ## %bb.0: ## %entry 8757; DARWIN-64-STATIC-NEXT: leaq _ldst+262144(%rip), %rax 8758; DARWIN-64-STATIC-NEXT: retq 8759; 8760; DARWIN-64-DYNAMIC-LABEL: bam07: 8761; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8762; DARWIN-64-DYNAMIC-NEXT: leaq _ldst+262144(%rip), %rax 8763; DARWIN-64-DYNAMIC-NEXT: retq 8764; 8765; DARWIN-64-PIC-LABEL: bam07: 8766; DARWIN-64-PIC: ## %bb.0: ## %entry 8767; DARWIN-64-PIC-NEXT: leaq _ldst+262144(%rip), %rax 8768; DARWIN-64-PIC-NEXT: retq 8769 8770entry: 8771 ret ptr getelementptr ([131072 x i32], ptr @ldst, i32 0, i64 65536) 8772} 8773 8774define dso_local ptr @bam08() nounwind { 8775; LINUX-64-STATIC-LABEL: bam08: 8776; LINUX-64-STATIC: # %bb.0: # %entry 8777; LINUX-64-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8778; LINUX-64-STATIC-NEXT: addq lptr(%rip), %rax 8779; LINUX-64-STATIC-NEXT: retq 8780; 8781; LINUX-32-STATIC-LABEL: bam08: 8782; LINUX-32-STATIC: # %bb.0: # %entry 8783; LINUX-32-STATIC-NEXT: movl $262144, %eax # imm = 0x40000 8784; LINUX-32-STATIC-NEXT: addl lptr, %eax 8785; LINUX-32-STATIC-NEXT: retl 8786; 8787; LINUX-32-PIC-LABEL: bam08: 8788; LINUX-32-PIC: # %bb.0: # %entry 8789; LINUX-32-PIC-NEXT: calll .L108$pb 8790; LINUX-32-PIC-NEXT: .L108$pb: 8791; LINUX-32-PIC-NEXT: popl %ecx 8792; LINUX-32-PIC-NEXT: .Ltmp108: 8793; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp108-.L108$pb), %ecx 8794; LINUX-32-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8795; LINUX-32-PIC-NEXT: addl lptr@GOTOFF(%ecx), %eax 8796; LINUX-32-PIC-NEXT: retl 8797; 8798; LINUX-64-PIC-LABEL: bam08: 8799; LINUX-64-PIC: # %bb.0: # %entry 8800; LINUX-64-PIC-NEXT: movl $262144, %eax # imm = 0x40000 8801; LINUX-64-PIC-NEXT: addq lptr(%rip), %rax 8802; LINUX-64-PIC-NEXT: retq 8803; 8804; DARWIN-32-STATIC-LABEL: bam08: 8805; DARWIN-32-STATIC: ## %bb.0: ## %entry 8806; DARWIN-32-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8807; DARWIN-32-STATIC-NEXT: addl _lptr, %eax 8808; DARWIN-32-STATIC-NEXT: retl 8809; 8810; DARWIN-32-DYNAMIC-LABEL: bam08: 8811; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8812; DARWIN-32-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8813; DARWIN-32-DYNAMIC-NEXT: addl _lptr, %eax 8814; DARWIN-32-DYNAMIC-NEXT: retl 8815; 8816; DARWIN-32-PIC-LABEL: bam08: 8817; DARWIN-32-PIC: ## %bb.0: ## %entry 8818; DARWIN-32-PIC-NEXT: calll L108$pb 8819; DARWIN-32-PIC-NEXT: L108$pb: 8820; DARWIN-32-PIC-NEXT: popl %ecx 8821; DARWIN-32-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8822; DARWIN-32-PIC-NEXT: addl _lptr-L108$pb(%ecx), %eax 8823; DARWIN-32-PIC-NEXT: retl 8824; 8825; DARWIN-64-STATIC-LABEL: bam08: 8826; DARWIN-64-STATIC: ## %bb.0: ## %entry 8827; DARWIN-64-STATIC-NEXT: movl $262144, %eax ## imm = 0x40000 8828; DARWIN-64-STATIC-NEXT: addq _lptr(%rip), %rax 8829; DARWIN-64-STATIC-NEXT: retq 8830; 8831; DARWIN-64-DYNAMIC-LABEL: bam08: 8832; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8833; DARWIN-64-DYNAMIC-NEXT: movl $262144, %eax ## imm = 0x40000 8834; DARWIN-64-DYNAMIC-NEXT: addq _lptr(%rip), %rax 8835; DARWIN-64-DYNAMIC-NEXT: retq 8836; 8837; DARWIN-64-PIC-LABEL: bam08: 8838; DARWIN-64-PIC: ## %bb.0: ## %entry 8839; DARWIN-64-PIC-NEXT: movl $262144, %eax ## imm = 0x40000 8840; DARWIN-64-PIC-NEXT: addq _lptr(%rip), %rax 8841; DARWIN-64-PIC-NEXT: retq 8842 8843entry: 8844 %0 = load ptr, ptr @lptr, align 8 8845 %1 = getelementptr i32, ptr %0, i64 65536 8846 ret ptr %1 8847} 8848 8849define dso_local ptr @cat00(i64 %i) nounwind { 8850; LINUX-64-STATIC-LABEL: cat00: 8851; LINUX-64-STATIC: # %bb.0: # %entry 8852; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 8853; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8854; LINUX-64-STATIC-NEXT: retq 8855; 8856; LINUX-32-STATIC-LABEL: cat00: 8857; LINUX-32-STATIC: # %bb.0: # %entry 8858; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8859; LINUX-32-STATIC-NEXT: leal src+64(,%eax,4), %eax 8860; LINUX-32-STATIC-NEXT: retl 8861; 8862; LINUX-32-PIC-LABEL: cat00: 8863; LINUX-32-PIC: # %bb.0: # %entry 8864; LINUX-32-PIC-NEXT: calll .L109$pb 8865; LINUX-32-PIC-NEXT: .L109$pb: 8866; LINUX-32-PIC-NEXT: popl %eax 8867; LINUX-32-PIC-NEXT: .Ltmp109: 8868; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp109-.L109$pb), %eax 8869; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8870; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 8871; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8872; LINUX-32-PIC-NEXT: retl 8873; 8874; LINUX-64-PIC-LABEL: cat00: 8875; LINUX-64-PIC: # %bb.0: # %entry 8876; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 8877; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8878; LINUX-64-PIC-NEXT: retq 8879; 8880; DARWIN-32-STATIC-LABEL: cat00: 8881; DARWIN-32-STATIC: ## %bb.0: ## %entry 8882; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8883; DARWIN-32-STATIC-NEXT: leal _src+64(,%eax,4), %eax 8884; DARWIN-32-STATIC-NEXT: retl 8885; 8886; DARWIN-32-DYNAMIC-LABEL: cat00: 8887; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8888; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8889; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 8890; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 8891; DARWIN-32-DYNAMIC-NEXT: retl 8892; 8893; DARWIN-32-PIC-LABEL: cat00: 8894; DARWIN-32-PIC: ## %bb.0: ## %entry 8895; DARWIN-32-PIC-NEXT: calll L109$pb 8896; DARWIN-32-PIC-NEXT: L109$pb: 8897; DARWIN-32-PIC-NEXT: popl %eax 8898; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8899; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L109$pb(%eax), %eax 8900; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8901; DARWIN-32-PIC-NEXT: retl 8902; 8903; DARWIN-64-STATIC-LABEL: cat00: 8904; DARWIN-64-STATIC: ## %bb.0: ## %entry 8905; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8906; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8907; DARWIN-64-STATIC-NEXT: retq 8908; 8909; DARWIN-64-DYNAMIC-LABEL: cat00: 8910; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8911; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8912; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8913; DARWIN-64-DYNAMIC-NEXT: retq 8914; 8915; DARWIN-64-PIC-LABEL: cat00: 8916; DARWIN-64-PIC: ## %bb.0: ## %entry 8917; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 8918; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8919; DARWIN-64-PIC-NEXT: retq 8920 8921entry: 8922 %0 = add i64 %i, 16 8923 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0 8924 ret ptr %1 8925} 8926 8927define dso_local ptr @cxt00(i64 %i) nounwind { 8928; LINUX-64-STATIC-LABEL: cxt00: 8929; LINUX-64-STATIC: # %bb.0: # %entry 8930; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 8931; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8932; LINUX-64-STATIC-NEXT: retq 8933; 8934; LINUX-32-STATIC-LABEL: cxt00: 8935; LINUX-32-STATIC: # %bb.0: # %entry 8936; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8937; LINUX-32-STATIC-NEXT: leal xsrc+64(,%eax,4), %eax 8938; LINUX-32-STATIC-NEXT: retl 8939; 8940; LINUX-32-PIC-LABEL: cxt00: 8941; LINUX-32-PIC: # %bb.0: # %entry 8942; LINUX-32-PIC-NEXT: calll .L110$pb 8943; LINUX-32-PIC-NEXT: .L110$pb: 8944; LINUX-32-PIC-NEXT: popl %eax 8945; LINUX-32-PIC-NEXT: .Ltmp110: 8946; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp110-.L110$pb), %eax 8947; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8948; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 8949; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8950; LINUX-32-PIC-NEXT: retl 8951; 8952; LINUX-64-PIC-LABEL: cxt00: 8953; LINUX-64-PIC: # %bb.0: # %entry 8954; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 8955; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8956; LINUX-64-PIC-NEXT: retq 8957; 8958; DARWIN-32-STATIC-LABEL: cxt00: 8959; DARWIN-32-STATIC: ## %bb.0: ## %entry 8960; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8961; DARWIN-32-STATIC-NEXT: leal _xsrc+64(,%eax,4), %eax 8962; DARWIN-32-STATIC-NEXT: retl 8963; 8964; DARWIN-32-DYNAMIC-LABEL: cxt00: 8965; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 8966; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 8967; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 8968; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 8969; DARWIN-32-DYNAMIC-NEXT: retl 8970; 8971; DARWIN-32-PIC-LABEL: cxt00: 8972; DARWIN-32-PIC: ## %bb.0: ## %entry 8973; DARWIN-32-PIC-NEXT: calll L110$pb 8974; DARWIN-32-PIC-NEXT: L110$pb: 8975; DARWIN-32-PIC-NEXT: popl %eax 8976; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 8977; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L110$pb(%eax), %eax 8978; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 8979; DARWIN-32-PIC-NEXT: retl 8980; 8981; DARWIN-64-STATIC-LABEL: cxt00: 8982; DARWIN-64-STATIC: ## %bb.0: ## %entry 8983; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 8984; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8985; DARWIN-64-STATIC-NEXT: retq 8986; 8987; DARWIN-64-DYNAMIC-LABEL: cxt00: 8988; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 8989; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 8990; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8991; DARWIN-64-DYNAMIC-NEXT: retq 8992; 8993; DARWIN-64-PIC-LABEL: cxt00: 8994; DARWIN-64-PIC: ## %bb.0: ## %entry 8995; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 8996; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 8997; DARWIN-64-PIC-NEXT: retq 8998 8999entry: 9000 %0 = add i64 %i, 16 9001 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %0 9002 ret ptr %1 9003} 9004 9005define dso_local ptr @cat01(i64 %i) nounwind { 9006; LINUX-64-STATIC-LABEL: cat01: 9007; LINUX-64-STATIC: # %bb.0: # %entry 9008; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9009; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9010; LINUX-64-STATIC-NEXT: retq 9011; 9012; LINUX-32-STATIC-LABEL: cat01: 9013; LINUX-32-STATIC: # %bb.0: # %entry 9014; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9015; LINUX-32-STATIC-NEXT: leal dst+64(,%eax,4), %eax 9016; LINUX-32-STATIC-NEXT: retl 9017; 9018; LINUX-32-PIC-LABEL: cat01: 9019; LINUX-32-PIC: # %bb.0: # %entry 9020; LINUX-32-PIC-NEXT: calll .L111$pb 9021; LINUX-32-PIC-NEXT: .L111$pb: 9022; LINUX-32-PIC-NEXT: popl %eax 9023; LINUX-32-PIC-NEXT: .Ltmp111: 9024; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp111-.L111$pb), %eax 9025; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9026; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 9027; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9028; LINUX-32-PIC-NEXT: retl 9029; 9030; LINUX-64-PIC-LABEL: cat01: 9031; LINUX-64-PIC: # %bb.0: # %entry 9032; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9033; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9034; LINUX-64-PIC-NEXT: retq 9035; 9036; DARWIN-32-STATIC-LABEL: cat01: 9037; DARWIN-32-STATIC: ## %bb.0: ## %entry 9038; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9039; DARWIN-32-STATIC-NEXT: leal _dst+64(,%eax,4), %eax 9040; DARWIN-32-STATIC-NEXT: retl 9041; 9042; DARWIN-32-DYNAMIC-LABEL: cat01: 9043; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9044; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9045; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 9046; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9047; DARWIN-32-DYNAMIC-NEXT: retl 9048; 9049; DARWIN-32-PIC-LABEL: cat01: 9050; DARWIN-32-PIC: ## %bb.0: ## %entry 9051; DARWIN-32-PIC-NEXT: calll L111$pb 9052; DARWIN-32-PIC-NEXT: L111$pb: 9053; DARWIN-32-PIC-NEXT: popl %eax 9054; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9055; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L111$pb(%eax), %eax 9056; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9057; DARWIN-32-PIC-NEXT: retl 9058; 9059; DARWIN-64-STATIC-LABEL: cat01: 9060; DARWIN-64-STATIC: ## %bb.0: ## %entry 9061; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9062; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9063; DARWIN-64-STATIC-NEXT: retq 9064; 9065; DARWIN-64-DYNAMIC-LABEL: cat01: 9066; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9067; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9068; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9069; DARWIN-64-DYNAMIC-NEXT: retq 9070; 9071; DARWIN-64-PIC-LABEL: cat01: 9072; DARWIN-64-PIC: ## %bb.0: ## %entry 9073; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9074; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9075; DARWIN-64-PIC-NEXT: retq 9076 9077entry: 9078 %0 = add i64 %i, 16 9079 %1 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0 9080 ret ptr %1 9081} 9082 9083define dso_local ptr @cxt01(i64 %i) nounwind { 9084; LINUX-64-STATIC-LABEL: cxt01: 9085; LINUX-64-STATIC: # %bb.0: # %entry 9086; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9087; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9088; LINUX-64-STATIC-NEXT: retq 9089; 9090; LINUX-32-STATIC-LABEL: cxt01: 9091; LINUX-32-STATIC: # %bb.0: # %entry 9092; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9093; LINUX-32-STATIC-NEXT: leal xdst+64(,%eax,4), %eax 9094; LINUX-32-STATIC-NEXT: retl 9095; 9096; LINUX-32-PIC-LABEL: cxt01: 9097; LINUX-32-PIC: # %bb.0: # %entry 9098; LINUX-32-PIC-NEXT: calll .L112$pb 9099; LINUX-32-PIC-NEXT: .L112$pb: 9100; LINUX-32-PIC-NEXT: popl %eax 9101; LINUX-32-PIC-NEXT: .Ltmp112: 9102; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp112-.L112$pb), %eax 9103; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9104; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 9105; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9106; LINUX-32-PIC-NEXT: retl 9107; 9108; LINUX-64-PIC-LABEL: cxt01: 9109; LINUX-64-PIC: # %bb.0: # %entry 9110; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9111; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9112; LINUX-64-PIC-NEXT: retq 9113; 9114; DARWIN-32-STATIC-LABEL: cxt01: 9115; DARWIN-32-STATIC: ## %bb.0: ## %entry 9116; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9117; DARWIN-32-STATIC-NEXT: leal _xdst+64(,%eax,4), %eax 9118; DARWIN-32-STATIC-NEXT: retl 9119; 9120; DARWIN-32-DYNAMIC-LABEL: cxt01: 9121; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9122; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9123; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 9124; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9125; DARWIN-32-DYNAMIC-NEXT: retl 9126; 9127; DARWIN-32-PIC-LABEL: cxt01: 9128; DARWIN-32-PIC: ## %bb.0: ## %entry 9129; DARWIN-32-PIC-NEXT: calll L112$pb 9130; DARWIN-32-PIC-NEXT: L112$pb: 9131; DARWIN-32-PIC-NEXT: popl %eax 9132; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9133; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L112$pb(%eax), %eax 9134; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9135; DARWIN-32-PIC-NEXT: retl 9136; 9137; DARWIN-64-STATIC-LABEL: cxt01: 9138; DARWIN-64-STATIC: ## %bb.0: ## %entry 9139; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9140; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9141; DARWIN-64-STATIC-NEXT: retq 9142; 9143; DARWIN-64-DYNAMIC-LABEL: cxt01: 9144; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9145; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9146; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9147; DARWIN-64-DYNAMIC-NEXT: retq 9148; 9149; DARWIN-64-PIC-LABEL: cxt01: 9150; DARWIN-64-PIC: ## %bb.0: ## %entry 9151; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9152; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9153; DARWIN-64-PIC-NEXT: retq 9154 9155entry: 9156 %0 = add i64 %i, 16 9157 %1 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %0 9158 ret ptr %1 9159} 9160 9161define dso_local ptr @cat02(i64 %i) nounwind { 9162; LINUX-64-STATIC-LABEL: cat02: 9163; LINUX-64-STATIC: # %bb.0: # %entry 9164; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 9165; LINUX-64-STATIC-NEXT: movq (%rax), %rax 9166; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9167; LINUX-64-STATIC-NEXT: retq 9168; 9169; LINUX-32-STATIC-LABEL: cat02: 9170; LINUX-32-STATIC: # %bb.0: # %entry 9171; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9172; LINUX-32-STATIC-NEXT: movl ptr, %ecx 9173; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9174; LINUX-32-STATIC-NEXT: retl 9175; 9176; LINUX-32-PIC-LABEL: cat02: 9177; LINUX-32-PIC: # %bb.0: # %entry 9178; LINUX-32-PIC-NEXT: calll .L113$pb 9179; LINUX-32-PIC-NEXT: .L113$pb: 9180; LINUX-32-PIC-NEXT: popl %eax 9181; LINUX-32-PIC-NEXT: .Ltmp113: 9182; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp113-.L113$pb), %eax 9183; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 9184; LINUX-32-PIC-NEXT: movl (%eax), %eax 9185; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9186; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9187; LINUX-32-PIC-NEXT: retl 9188; 9189; LINUX-64-PIC-LABEL: cat02: 9190; LINUX-64-PIC: # %bb.0: # %entry 9191; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 9192; LINUX-64-PIC-NEXT: movq (%rax), %rax 9193; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9194; LINUX-64-PIC-NEXT: retq 9195; 9196; DARWIN-32-STATIC-LABEL: cat02: 9197; DARWIN-32-STATIC: ## %bb.0: ## %entry 9198; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9199; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 9200; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9201; DARWIN-32-STATIC-NEXT: retl 9202; 9203; DARWIN-32-DYNAMIC-LABEL: cat02: 9204; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9205; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 9206; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 9207; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9208; DARWIN-32-DYNAMIC-NEXT: leal 64(%eax,%ecx,4), %eax 9209; DARWIN-32-DYNAMIC-NEXT: retl 9210; 9211; DARWIN-32-PIC-LABEL: cat02: 9212; DARWIN-32-PIC: ## %bb.0: ## %entry 9213; DARWIN-32-PIC-NEXT: calll L113$pb 9214; DARWIN-32-PIC-NEXT: L113$pb: 9215; DARWIN-32-PIC-NEXT: popl %eax 9216; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L113$pb(%eax), %eax 9217; DARWIN-32-PIC-NEXT: movl (%eax), %eax 9218; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9219; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9220; DARWIN-32-PIC-NEXT: retl 9221; 9222; DARWIN-64-STATIC-LABEL: cat02: 9223; DARWIN-64-STATIC: ## %bb.0: ## %entry 9224; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9225; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 9226; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9227; DARWIN-64-STATIC-NEXT: retq 9228; 9229; DARWIN-64-DYNAMIC-LABEL: cat02: 9230; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9231; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9232; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 9233; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9234; DARWIN-64-DYNAMIC-NEXT: retq 9235; 9236; DARWIN-64-PIC-LABEL: cat02: 9237; DARWIN-64-PIC: ## %bb.0: ## %entry 9238; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 9239; DARWIN-64-PIC-NEXT: movq (%rax), %rax 9240; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9241; DARWIN-64-PIC-NEXT: retq 9242 9243entry: 9244 %0 = load ptr, ptr @ptr, align 8 9245 %1 = add i64 %i, 16 9246 %2 = getelementptr i32, ptr %0, i64 %1 9247 ret ptr %2 9248} 9249 9250define dso_local ptr @cat03(i64 %i) nounwind { 9251; LINUX-64-STATIC-LABEL: cat03: 9252; LINUX-64-STATIC: # %bb.0: # %entry 9253; LINUX-64-STATIC-NEXT: leaq dsrc+64(,%rdi,4), %rax 9254; LINUX-64-STATIC-NEXT: retq 9255; 9256; LINUX-32-STATIC-LABEL: cat03: 9257; LINUX-32-STATIC: # %bb.0: # %entry 9258; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9259; LINUX-32-STATIC-NEXT: leal dsrc+64(,%eax,4), %eax 9260; LINUX-32-STATIC-NEXT: retl 9261; 9262; LINUX-32-PIC-LABEL: cat03: 9263; LINUX-32-PIC: # %bb.0: # %entry 9264; LINUX-32-PIC-NEXT: calll .L114$pb 9265; LINUX-32-PIC-NEXT: .L114$pb: 9266; LINUX-32-PIC-NEXT: popl %eax 9267; LINUX-32-PIC-NEXT: .Ltmp114: 9268; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp114-.L114$pb), %eax 9269; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9270; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+64(%eax,%ecx,4), %eax 9271; LINUX-32-PIC-NEXT: retl 9272; 9273; LINUX-64-PIC-LABEL: cat03: 9274; LINUX-64-PIC: # %bb.0: # %entry 9275; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 9276; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9277; LINUX-64-PIC-NEXT: retq 9278; 9279; DARWIN-32-STATIC-LABEL: cat03: 9280; DARWIN-32-STATIC: ## %bb.0: ## %entry 9281; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9282; DARWIN-32-STATIC-NEXT: leal _dsrc+64(,%eax,4), %eax 9283; DARWIN-32-STATIC-NEXT: retl 9284; 9285; DARWIN-32-DYNAMIC-LABEL: cat03: 9286; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9287; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9288; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+64(,%eax,4), %eax 9289; DARWIN-32-DYNAMIC-NEXT: retl 9290; 9291; DARWIN-32-PIC-LABEL: cat03: 9292; DARWIN-32-PIC: ## %bb.0: ## %entry 9293; DARWIN-32-PIC-NEXT: calll L114$pb 9294; DARWIN-32-PIC-NEXT: L114$pb: 9295; DARWIN-32-PIC-NEXT: popl %eax 9296; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9297; DARWIN-32-PIC-NEXT: leal (_dsrc-L114$pb)+64(%eax,%ecx,4), %eax 9298; DARWIN-32-PIC-NEXT: retl 9299; 9300; DARWIN-64-STATIC-LABEL: cat03: 9301; DARWIN-64-STATIC: ## %bb.0: ## %entry 9302; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 9303; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9304; DARWIN-64-STATIC-NEXT: retq 9305; 9306; DARWIN-64-DYNAMIC-LABEL: cat03: 9307; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9308; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 9309; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9310; DARWIN-64-DYNAMIC-NEXT: retq 9311; 9312; DARWIN-64-PIC-LABEL: cat03: 9313; DARWIN-64-PIC: ## %bb.0: ## %entry 9314; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 9315; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9316; DARWIN-64-PIC-NEXT: retq 9317 9318entry: 9319 %0 = add i64 %i, 16 9320 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0 9321 ret ptr %1 9322} 9323 9324define dso_local ptr @cat04(i64 %i) nounwind { 9325; LINUX-64-STATIC-LABEL: cat04: 9326; LINUX-64-STATIC: # %bb.0: # %entry 9327; LINUX-64-STATIC-NEXT: leaq ddst+64(,%rdi,4), %rax 9328; LINUX-64-STATIC-NEXT: retq 9329; 9330; LINUX-32-STATIC-LABEL: cat04: 9331; LINUX-32-STATIC: # %bb.0: # %entry 9332; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9333; LINUX-32-STATIC-NEXT: leal ddst+64(,%eax,4), %eax 9334; LINUX-32-STATIC-NEXT: retl 9335; 9336; LINUX-32-PIC-LABEL: cat04: 9337; LINUX-32-PIC: # %bb.0: # %entry 9338; LINUX-32-PIC-NEXT: calll .L115$pb 9339; LINUX-32-PIC-NEXT: .L115$pb: 9340; LINUX-32-PIC-NEXT: popl %eax 9341; LINUX-32-PIC-NEXT: .Ltmp115: 9342; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp115-.L115$pb), %eax 9343; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9344; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+64(%eax,%ecx,4), %eax 9345; LINUX-32-PIC-NEXT: retl 9346; 9347; LINUX-64-PIC-LABEL: cat04: 9348; LINUX-64-PIC: # %bb.0: # %entry 9349; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 9350; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9351; LINUX-64-PIC-NEXT: retq 9352; 9353; DARWIN-32-STATIC-LABEL: cat04: 9354; DARWIN-32-STATIC: ## %bb.0: ## %entry 9355; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9356; DARWIN-32-STATIC-NEXT: leal _ddst+64(,%eax,4), %eax 9357; DARWIN-32-STATIC-NEXT: retl 9358; 9359; DARWIN-32-DYNAMIC-LABEL: cat04: 9360; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9361; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9362; DARWIN-32-DYNAMIC-NEXT: leal _ddst+64(,%eax,4), %eax 9363; DARWIN-32-DYNAMIC-NEXT: retl 9364; 9365; DARWIN-32-PIC-LABEL: cat04: 9366; DARWIN-32-PIC: ## %bb.0: ## %entry 9367; DARWIN-32-PIC-NEXT: calll L115$pb 9368; DARWIN-32-PIC-NEXT: L115$pb: 9369; DARWIN-32-PIC-NEXT: popl %eax 9370; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9371; DARWIN-32-PIC-NEXT: leal (_ddst-L115$pb)+64(%eax,%ecx,4), %eax 9372; DARWIN-32-PIC-NEXT: retl 9373; 9374; DARWIN-64-STATIC-LABEL: cat04: 9375; DARWIN-64-STATIC: ## %bb.0: ## %entry 9376; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 9377; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9378; DARWIN-64-STATIC-NEXT: retq 9379; 9380; DARWIN-64-DYNAMIC-LABEL: cat04: 9381; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9382; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 9383; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9384; DARWIN-64-DYNAMIC-NEXT: retq 9385; 9386; DARWIN-64-PIC-LABEL: cat04: 9387; DARWIN-64-PIC: ## %bb.0: ## %entry 9388; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 9389; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9390; DARWIN-64-PIC-NEXT: retq 9391 9392entry: 9393 %0 = add i64 %i, 16 9394 %1 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0 9395 ret ptr %1 9396} 9397 9398define dso_local ptr @cat05(i64 %i) nounwind { 9399; LINUX-64-STATIC-LABEL: cat05: 9400; LINUX-64-STATIC: # %bb.0: # %entry 9401; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 9402; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9403; LINUX-64-STATIC-NEXT: retq 9404; 9405; LINUX-32-STATIC-LABEL: cat05: 9406; LINUX-32-STATIC: # %bb.0: # %entry 9407; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9408; LINUX-32-STATIC-NEXT: movl dptr, %ecx 9409; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9410; LINUX-32-STATIC-NEXT: retl 9411; 9412; LINUX-32-PIC-LABEL: cat05: 9413; LINUX-32-PIC: # %bb.0: # %entry 9414; LINUX-32-PIC-NEXT: calll .L116$pb 9415; LINUX-32-PIC-NEXT: .L116$pb: 9416; LINUX-32-PIC-NEXT: popl %eax 9417; LINUX-32-PIC-NEXT: .Ltmp116: 9418; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp116-.L116$pb), %eax 9419; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9420; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 9421; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9422; LINUX-32-PIC-NEXT: retl 9423; 9424; LINUX-64-PIC-LABEL: cat05: 9425; LINUX-64-PIC: # %bb.0: # %entry 9426; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 9427; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9428; LINUX-64-PIC-NEXT: retq 9429; 9430; DARWIN-32-STATIC-LABEL: cat05: 9431; DARWIN-32-STATIC: ## %bb.0: ## %entry 9432; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9433; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 9434; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9435; DARWIN-32-STATIC-NEXT: retl 9436; 9437; DARWIN-32-DYNAMIC-LABEL: cat05: 9438; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9439; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9440; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 9441; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9442; DARWIN-32-DYNAMIC-NEXT: retl 9443; 9444; DARWIN-32-PIC-LABEL: cat05: 9445; DARWIN-32-PIC: ## %bb.0: ## %entry 9446; DARWIN-32-PIC-NEXT: calll L116$pb 9447; DARWIN-32-PIC-NEXT: L116$pb: 9448; DARWIN-32-PIC-NEXT: popl %eax 9449; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9450; DARWIN-32-PIC-NEXT: movl _dptr-L116$pb(%eax), %eax 9451; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9452; DARWIN-32-PIC-NEXT: retl 9453; 9454; DARWIN-64-STATIC-LABEL: cat05: 9455; DARWIN-64-STATIC: ## %bb.0: ## %entry 9456; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 9457; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9458; DARWIN-64-STATIC-NEXT: retq 9459; 9460; DARWIN-64-DYNAMIC-LABEL: cat05: 9461; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9462; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 9463; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9464; DARWIN-64-DYNAMIC-NEXT: retq 9465; 9466; DARWIN-64-PIC-LABEL: cat05: 9467; DARWIN-64-PIC: ## %bb.0: ## %entry 9468; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 9469; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9470; DARWIN-64-PIC-NEXT: retq 9471 9472entry: 9473 %0 = load ptr, ptr @dptr, align 8 9474 %1 = add i64 %i, 16 9475 %2 = getelementptr i32, ptr %0, i64 %1 9476 ret ptr %2 9477} 9478 9479define dso_local ptr @cat06(i64 %i) nounwind { 9480; LINUX-64-STATIC-LABEL: cat06: 9481; LINUX-64-STATIC: # %bb.0: # %entry 9482; LINUX-64-STATIC-NEXT: leaq lsrc+64(,%rdi,4), %rax 9483; LINUX-64-STATIC-NEXT: retq 9484; 9485; LINUX-32-STATIC-LABEL: cat06: 9486; LINUX-32-STATIC: # %bb.0: # %entry 9487; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9488; LINUX-32-STATIC-NEXT: leal lsrc+64(,%eax,4), %eax 9489; LINUX-32-STATIC-NEXT: retl 9490; 9491; LINUX-32-PIC-LABEL: cat06: 9492; LINUX-32-PIC: # %bb.0: # %entry 9493; LINUX-32-PIC-NEXT: calll .L117$pb 9494; LINUX-32-PIC-NEXT: .L117$pb: 9495; LINUX-32-PIC-NEXT: popl %eax 9496; LINUX-32-PIC-NEXT: .Ltmp117: 9497; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp117-.L117$pb), %eax 9498; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9499; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+64(%eax,%ecx,4), %eax 9500; LINUX-32-PIC-NEXT: retl 9501; 9502; LINUX-64-PIC-LABEL: cat06: 9503; LINUX-64-PIC: # %bb.0: # %entry 9504; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 9505; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9506; LINUX-64-PIC-NEXT: retq 9507; 9508; DARWIN-32-STATIC-LABEL: cat06: 9509; DARWIN-32-STATIC: ## %bb.0: ## %entry 9510; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9511; DARWIN-32-STATIC-NEXT: leal _lsrc+64(,%eax,4), %eax 9512; DARWIN-32-STATIC-NEXT: retl 9513; 9514; DARWIN-32-DYNAMIC-LABEL: cat06: 9515; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9516; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9517; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+64(,%eax,4), %eax 9518; DARWIN-32-DYNAMIC-NEXT: retl 9519; 9520; DARWIN-32-PIC-LABEL: cat06: 9521; DARWIN-32-PIC: ## %bb.0: ## %entry 9522; DARWIN-32-PIC-NEXT: calll L117$pb 9523; DARWIN-32-PIC-NEXT: L117$pb: 9524; DARWIN-32-PIC-NEXT: popl %eax 9525; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9526; DARWIN-32-PIC-NEXT: leal (_lsrc-L117$pb)+64(%eax,%ecx,4), %eax 9527; DARWIN-32-PIC-NEXT: retl 9528; 9529; DARWIN-64-STATIC-LABEL: cat06: 9530; DARWIN-64-STATIC: ## %bb.0: ## %entry 9531; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 9532; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9533; DARWIN-64-STATIC-NEXT: retq 9534; 9535; DARWIN-64-DYNAMIC-LABEL: cat06: 9536; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9537; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 9538; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9539; DARWIN-64-DYNAMIC-NEXT: retq 9540; 9541; DARWIN-64-PIC-LABEL: cat06: 9542; DARWIN-64-PIC: ## %bb.0: ## %entry 9543; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 9544; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9545; DARWIN-64-PIC-NEXT: retq 9546 9547entry: 9548 %0 = add i64 %i, 16 9549 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0 9550 ret ptr %1 9551} 9552 9553define dso_local ptr @cat07(i64 %i) nounwind { 9554; LINUX-64-STATIC-LABEL: cat07: 9555; LINUX-64-STATIC: # %bb.0: # %entry 9556; LINUX-64-STATIC-NEXT: leaq ldst+64(,%rdi,4), %rax 9557; LINUX-64-STATIC-NEXT: retq 9558; 9559; LINUX-32-STATIC-LABEL: cat07: 9560; LINUX-32-STATIC: # %bb.0: # %entry 9561; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9562; LINUX-32-STATIC-NEXT: leal ldst+64(,%eax,4), %eax 9563; LINUX-32-STATIC-NEXT: retl 9564; 9565; LINUX-32-PIC-LABEL: cat07: 9566; LINUX-32-PIC: # %bb.0: # %entry 9567; LINUX-32-PIC-NEXT: calll .L118$pb 9568; LINUX-32-PIC-NEXT: .L118$pb: 9569; LINUX-32-PIC-NEXT: popl %eax 9570; LINUX-32-PIC-NEXT: .Ltmp118: 9571; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp118-.L118$pb), %eax 9572; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9573; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+64(%eax,%ecx,4), %eax 9574; LINUX-32-PIC-NEXT: retl 9575; 9576; LINUX-64-PIC-LABEL: cat07: 9577; LINUX-64-PIC: # %bb.0: # %entry 9578; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 9579; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9580; LINUX-64-PIC-NEXT: retq 9581; 9582; DARWIN-32-STATIC-LABEL: cat07: 9583; DARWIN-32-STATIC: ## %bb.0: ## %entry 9584; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9585; DARWIN-32-STATIC-NEXT: leal _ldst+64(,%eax,4), %eax 9586; DARWIN-32-STATIC-NEXT: retl 9587; 9588; DARWIN-32-DYNAMIC-LABEL: cat07: 9589; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9590; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9591; DARWIN-32-DYNAMIC-NEXT: leal _ldst+64(,%eax,4), %eax 9592; DARWIN-32-DYNAMIC-NEXT: retl 9593; 9594; DARWIN-32-PIC-LABEL: cat07: 9595; DARWIN-32-PIC: ## %bb.0: ## %entry 9596; DARWIN-32-PIC-NEXT: calll L118$pb 9597; DARWIN-32-PIC-NEXT: L118$pb: 9598; DARWIN-32-PIC-NEXT: popl %eax 9599; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9600; DARWIN-32-PIC-NEXT: leal (_ldst-L118$pb)+64(%eax,%ecx,4), %eax 9601; DARWIN-32-PIC-NEXT: retl 9602; 9603; DARWIN-64-STATIC-LABEL: cat07: 9604; DARWIN-64-STATIC: ## %bb.0: ## %entry 9605; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 9606; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9607; DARWIN-64-STATIC-NEXT: retq 9608; 9609; DARWIN-64-DYNAMIC-LABEL: cat07: 9610; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9611; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 9612; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9613; DARWIN-64-DYNAMIC-NEXT: retq 9614; 9615; DARWIN-64-PIC-LABEL: cat07: 9616; DARWIN-64-PIC: ## %bb.0: ## %entry 9617; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 9618; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9619; DARWIN-64-PIC-NEXT: retq 9620 9621entry: 9622 %0 = add i64 %i, 16 9623 %1 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0 9624 ret ptr %1 9625} 9626 9627define dso_local ptr @cat08(i64 %i) nounwind { 9628; LINUX-64-STATIC-LABEL: cat08: 9629; LINUX-64-STATIC: # %bb.0: # %entry 9630; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 9631; LINUX-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9632; LINUX-64-STATIC-NEXT: retq 9633; 9634; LINUX-32-STATIC-LABEL: cat08: 9635; LINUX-32-STATIC: # %bb.0: # %entry 9636; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9637; LINUX-32-STATIC-NEXT: movl lptr, %ecx 9638; LINUX-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9639; LINUX-32-STATIC-NEXT: retl 9640; 9641; LINUX-32-PIC-LABEL: cat08: 9642; LINUX-32-PIC: # %bb.0: # %entry 9643; LINUX-32-PIC-NEXT: calll .L119$pb 9644; LINUX-32-PIC-NEXT: .L119$pb: 9645; LINUX-32-PIC-NEXT: popl %eax 9646; LINUX-32-PIC-NEXT: .Ltmp119: 9647; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp119-.L119$pb), %eax 9648; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9649; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 9650; LINUX-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9651; LINUX-32-PIC-NEXT: retl 9652; 9653; LINUX-64-PIC-LABEL: cat08: 9654; LINUX-64-PIC: # %bb.0: # %entry 9655; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 9656; LINUX-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9657; LINUX-64-PIC-NEXT: retq 9658; 9659; DARWIN-32-STATIC-LABEL: cat08: 9660; DARWIN-32-STATIC: ## %bb.0: ## %entry 9661; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9662; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 9663; DARWIN-32-STATIC-NEXT: leal 64(%ecx,%eax,4), %eax 9664; DARWIN-32-STATIC-NEXT: retl 9665; 9666; DARWIN-32-DYNAMIC-LABEL: cat08: 9667; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9668; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9669; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 9670; DARWIN-32-DYNAMIC-NEXT: leal 64(%ecx,%eax,4), %eax 9671; DARWIN-32-DYNAMIC-NEXT: retl 9672; 9673; DARWIN-32-PIC-LABEL: cat08: 9674; DARWIN-32-PIC: ## %bb.0: ## %entry 9675; DARWIN-32-PIC-NEXT: calll L119$pb 9676; DARWIN-32-PIC-NEXT: L119$pb: 9677; DARWIN-32-PIC-NEXT: popl %eax 9678; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9679; DARWIN-32-PIC-NEXT: movl _lptr-L119$pb(%eax), %eax 9680; DARWIN-32-PIC-NEXT: leal 64(%eax,%ecx,4), %eax 9681; DARWIN-32-PIC-NEXT: retl 9682; 9683; DARWIN-64-STATIC-LABEL: cat08: 9684; DARWIN-64-STATIC: ## %bb.0: ## %entry 9685; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 9686; DARWIN-64-STATIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9687; DARWIN-64-STATIC-NEXT: retq 9688; 9689; DARWIN-64-DYNAMIC-LABEL: cat08: 9690; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9691; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 9692; DARWIN-64-DYNAMIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9693; DARWIN-64-DYNAMIC-NEXT: retq 9694; 9695; DARWIN-64-PIC-LABEL: cat08: 9696; DARWIN-64-PIC: ## %bb.0: ## %entry 9697; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 9698; DARWIN-64-PIC-NEXT: leaq 64(%rax,%rdi,4), %rax 9699; DARWIN-64-PIC-NEXT: retq 9700 9701entry: 9702 %0 = load ptr, ptr @lptr, align 8 9703 %1 = add i64 %i, 16 9704 %2 = getelementptr i32, ptr %0, i64 %1 9705 ret ptr %2 9706} 9707 9708define dso_local ptr @cam00(i64 %i) nounwind { 9709; LINUX-64-STATIC-LABEL: cam00: 9710; LINUX-64-STATIC: # %bb.0: # %entry 9711; LINUX-64-STATIC-NEXT: movq src@GOTPCREL(%rip), %rax 9712; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9713; LINUX-64-STATIC-NEXT: retq 9714; 9715; LINUX-32-STATIC-LABEL: cam00: 9716; LINUX-32-STATIC: # %bb.0: # %entry 9717; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9718; LINUX-32-STATIC-NEXT: leal src+262144(,%eax,4), %eax 9719; LINUX-32-STATIC-NEXT: retl 9720; 9721; LINUX-32-PIC-LABEL: cam00: 9722; LINUX-32-PIC: # %bb.0: # %entry 9723; LINUX-32-PIC-NEXT: calll .L120$pb 9724; LINUX-32-PIC-NEXT: .L120$pb: 9725; LINUX-32-PIC-NEXT: popl %eax 9726; LINUX-32-PIC-NEXT: .Ltmp120: 9727; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp120-.L120$pb), %eax 9728; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9729; LINUX-32-PIC-NEXT: movl src@GOT(%eax), %eax 9730; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9731; LINUX-32-PIC-NEXT: retl 9732; 9733; LINUX-64-PIC-LABEL: cam00: 9734; LINUX-64-PIC: # %bb.0: # %entry 9735; LINUX-64-PIC-NEXT: movq src@GOTPCREL(%rip), %rax 9736; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9737; LINUX-64-PIC-NEXT: retq 9738; 9739; DARWIN-32-STATIC-LABEL: cam00: 9740; DARWIN-32-STATIC: ## %bb.0: ## %entry 9741; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9742; DARWIN-32-STATIC-NEXT: leal _src+262144(,%eax,4), %eax 9743; DARWIN-32-STATIC-NEXT: retl 9744; 9745; DARWIN-32-DYNAMIC-LABEL: cam00: 9746; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9747; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9748; DARWIN-32-DYNAMIC-NEXT: movl L_src$non_lazy_ptr, %ecx 9749; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9750; DARWIN-32-DYNAMIC-NEXT: retl 9751; 9752; DARWIN-32-PIC-LABEL: cam00: 9753; DARWIN-32-PIC: ## %bb.0: ## %entry 9754; DARWIN-32-PIC-NEXT: calll L120$pb 9755; DARWIN-32-PIC-NEXT: L120$pb: 9756; DARWIN-32-PIC-NEXT: popl %eax 9757; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9758; DARWIN-32-PIC-NEXT: movl L_src$non_lazy_ptr-L120$pb(%eax), %eax 9759; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9760; DARWIN-32-PIC-NEXT: retl 9761; 9762; DARWIN-64-STATIC-LABEL: cam00: 9763; DARWIN-64-STATIC: ## %bb.0: ## %entry 9764; DARWIN-64-STATIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9765; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9766; DARWIN-64-STATIC-NEXT: retq 9767; 9768; DARWIN-64-DYNAMIC-LABEL: cam00: 9769; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9770; DARWIN-64-DYNAMIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9771; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9772; DARWIN-64-DYNAMIC-NEXT: retq 9773; 9774; DARWIN-64-PIC-LABEL: cam00: 9775; DARWIN-64-PIC: ## %bb.0: ## %entry 9776; DARWIN-64-PIC-NEXT: movq _src@GOTPCREL(%rip), %rax 9777; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9778; DARWIN-64-PIC-NEXT: retq 9779 9780entry: 9781 %0 = add i64 %i, 65536 9782 %1 = getelementptr [131072 x i32], ptr @src, i64 0, i64 %0 9783 ret ptr %1 9784} 9785 9786define dso_local ptr @cxm00(i64 %i) nounwind { 9787; LINUX-64-STATIC-LABEL: cxm00: 9788; LINUX-64-STATIC: # %bb.0: # %entry 9789; LINUX-64-STATIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 9790; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9791; LINUX-64-STATIC-NEXT: retq 9792; 9793; LINUX-32-STATIC-LABEL: cxm00: 9794; LINUX-32-STATIC: # %bb.0: # %entry 9795; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9796; LINUX-32-STATIC-NEXT: leal xsrc+262144(,%eax,4), %eax 9797; LINUX-32-STATIC-NEXT: retl 9798; 9799; LINUX-32-PIC-LABEL: cxm00: 9800; LINUX-32-PIC: # %bb.0: # %entry 9801; LINUX-32-PIC-NEXT: calll .L121$pb 9802; LINUX-32-PIC-NEXT: .L121$pb: 9803; LINUX-32-PIC-NEXT: popl %eax 9804; LINUX-32-PIC-NEXT: .Ltmp121: 9805; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp121-.L121$pb), %eax 9806; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9807; LINUX-32-PIC-NEXT: movl xsrc@GOT(%eax), %eax 9808; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9809; LINUX-32-PIC-NEXT: retl 9810; 9811; LINUX-64-PIC-LABEL: cxm00: 9812; LINUX-64-PIC: # %bb.0: # %entry 9813; LINUX-64-PIC-NEXT: movq xsrc@GOTPCREL(%rip), %rax 9814; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9815; LINUX-64-PIC-NEXT: retq 9816; 9817; DARWIN-32-STATIC-LABEL: cxm00: 9818; DARWIN-32-STATIC: ## %bb.0: ## %entry 9819; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9820; DARWIN-32-STATIC-NEXT: leal _xsrc+262144(,%eax,4), %eax 9821; DARWIN-32-STATIC-NEXT: retl 9822; 9823; DARWIN-32-DYNAMIC-LABEL: cxm00: 9824; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9825; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9826; DARWIN-32-DYNAMIC-NEXT: movl L_xsrc$non_lazy_ptr, %ecx 9827; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9828; DARWIN-32-DYNAMIC-NEXT: retl 9829; 9830; DARWIN-32-PIC-LABEL: cxm00: 9831; DARWIN-32-PIC: ## %bb.0: ## %entry 9832; DARWIN-32-PIC-NEXT: calll L121$pb 9833; DARWIN-32-PIC-NEXT: L121$pb: 9834; DARWIN-32-PIC-NEXT: popl %eax 9835; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9836; DARWIN-32-PIC-NEXT: movl L_xsrc$non_lazy_ptr-L121$pb(%eax), %eax 9837; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9838; DARWIN-32-PIC-NEXT: retl 9839; 9840; DARWIN-64-STATIC-LABEL: cxm00: 9841; DARWIN-64-STATIC: ## %bb.0: ## %entry 9842; DARWIN-64-STATIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9843; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9844; DARWIN-64-STATIC-NEXT: retq 9845; 9846; DARWIN-64-DYNAMIC-LABEL: cxm00: 9847; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9848; DARWIN-64-DYNAMIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9849; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9850; DARWIN-64-DYNAMIC-NEXT: retq 9851; 9852; DARWIN-64-PIC-LABEL: cxm00: 9853; DARWIN-64-PIC: ## %bb.0: ## %entry 9854; DARWIN-64-PIC-NEXT: movq _xsrc@GOTPCREL(%rip), %rax 9855; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9856; DARWIN-64-PIC-NEXT: retq 9857 9858entry: 9859 %0 = add i64 %i, 65536 9860 %1 = getelementptr [32 x i32], ptr @xsrc, i64 0, i64 %0 9861 ret ptr %1 9862} 9863 9864define dso_local ptr @cam01(i64 %i) nounwind { 9865; LINUX-64-STATIC-LABEL: cam01: 9866; LINUX-64-STATIC: # %bb.0: # %entry 9867; LINUX-64-STATIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9868; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9869; LINUX-64-STATIC-NEXT: retq 9870; 9871; LINUX-32-STATIC-LABEL: cam01: 9872; LINUX-32-STATIC: # %bb.0: # %entry 9873; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9874; LINUX-32-STATIC-NEXT: leal dst+262144(,%eax,4), %eax 9875; LINUX-32-STATIC-NEXT: retl 9876; 9877; LINUX-32-PIC-LABEL: cam01: 9878; LINUX-32-PIC: # %bb.0: # %entry 9879; LINUX-32-PIC-NEXT: calll .L122$pb 9880; LINUX-32-PIC-NEXT: .L122$pb: 9881; LINUX-32-PIC-NEXT: popl %eax 9882; LINUX-32-PIC-NEXT: .Ltmp122: 9883; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp122-.L122$pb), %eax 9884; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9885; LINUX-32-PIC-NEXT: movl dst@GOT(%eax), %eax 9886; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9887; LINUX-32-PIC-NEXT: retl 9888; 9889; LINUX-64-PIC-LABEL: cam01: 9890; LINUX-64-PIC: # %bb.0: # %entry 9891; LINUX-64-PIC-NEXT: movq dst@GOTPCREL(%rip), %rax 9892; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9893; LINUX-64-PIC-NEXT: retq 9894; 9895; DARWIN-32-STATIC-LABEL: cam01: 9896; DARWIN-32-STATIC: ## %bb.0: ## %entry 9897; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9898; DARWIN-32-STATIC-NEXT: leal _dst+262144(,%eax,4), %eax 9899; DARWIN-32-STATIC-NEXT: retl 9900; 9901; DARWIN-32-DYNAMIC-LABEL: cam01: 9902; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9903; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9904; DARWIN-32-DYNAMIC-NEXT: movl L_dst$non_lazy_ptr, %ecx 9905; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9906; DARWIN-32-DYNAMIC-NEXT: retl 9907; 9908; DARWIN-32-PIC-LABEL: cam01: 9909; DARWIN-32-PIC: ## %bb.0: ## %entry 9910; DARWIN-32-PIC-NEXT: calll L122$pb 9911; DARWIN-32-PIC-NEXT: L122$pb: 9912; DARWIN-32-PIC-NEXT: popl %eax 9913; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9914; DARWIN-32-PIC-NEXT: movl L_dst$non_lazy_ptr-L122$pb(%eax), %eax 9915; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9916; DARWIN-32-PIC-NEXT: retl 9917; 9918; DARWIN-64-STATIC-LABEL: cam01: 9919; DARWIN-64-STATIC: ## %bb.0: ## %entry 9920; DARWIN-64-STATIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9921; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9922; DARWIN-64-STATIC-NEXT: retq 9923; 9924; DARWIN-64-DYNAMIC-LABEL: cam01: 9925; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 9926; DARWIN-64-DYNAMIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9927; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9928; DARWIN-64-DYNAMIC-NEXT: retq 9929; 9930; DARWIN-64-PIC-LABEL: cam01: 9931; DARWIN-64-PIC: ## %bb.0: ## %entry 9932; DARWIN-64-PIC-NEXT: movq _dst@GOTPCREL(%rip), %rax 9933; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9934; DARWIN-64-PIC-NEXT: retq 9935 9936entry: 9937 %0 = add i64 %i, 65536 9938 %1 = getelementptr [131072 x i32], ptr @dst, i64 0, i64 %0 9939 ret ptr %1 9940} 9941 9942define dso_local ptr @cxm01(i64 %i) nounwind { 9943; LINUX-64-STATIC-LABEL: cxm01: 9944; LINUX-64-STATIC: # %bb.0: # %entry 9945; LINUX-64-STATIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9946; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9947; LINUX-64-STATIC-NEXT: retq 9948; 9949; LINUX-32-STATIC-LABEL: cxm01: 9950; LINUX-32-STATIC: # %bb.0: # %entry 9951; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9952; LINUX-32-STATIC-NEXT: leal xdst+262144(,%eax,4), %eax 9953; LINUX-32-STATIC-NEXT: retl 9954; 9955; LINUX-32-PIC-LABEL: cxm01: 9956; LINUX-32-PIC: # %bb.0: # %entry 9957; LINUX-32-PIC-NEXT: calll .L123$pb 9958; LINUX-32-PIC-NEXT: .L123$pb: 9959; LINUX-32-PIC-NEXT: popl %eax 9960; LINUX-32-PIC-NEXT: .Ltmp123: 9961; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp123-.L123$pb), %eax 9962; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9963; LINUX-32-PIC-NEXT: movl xdst@GOT(%eax), %eax 9964; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9965; LINUX-32-PIC-NEXT: retl 9966; 9967; LINUX-64-PIC-LABEL: cxm01: 9968; LINUX-64-PIC: # %bb.0: # %entry 9969; LINUX-64-PIC-NEXT: movq xdst@GOTPCREL(%rip), %rax 9970; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 9971; LINUX-64-PIC-NEXT: retq 9972; 9973; DARWIN-32-STATIC-LABEL: cxm01: 9974; DARWIN-32-STATIC: ## %bb.0: ## %entry 9975; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9976; DARWIN-32-STATIC-NEXT: leal _xdst+262144(,%eax,4), %eax 9977; DARWIN-32-STATIC-NEXT: retl 9978; 9979; DARWIN-32-DYNAMIC-LABEL: cxm01: 9980; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 9981; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 9982; DARWIN-32-DYNAMIC-NEXT: movl L_xdst$non_lazy_ptr, %ecx 9983; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 9984; DARWIN-32-DYNAMIC-NEXT: retl 9985; 9986; DARWIN-32-PIC-LABEL: cxm01: 9987; DARWIN-32-PIC: ## %bb.0: ## %entry 9988; DARWIN-32-PIC-NEXT: calll L123$pb 9989; DARWIN-32-PIC-NEXT: L123$pb: 9990; DARWIN-32-PIC-NEXT: popl %eax 9991; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 9992; DARWIN-32-PIC-NEXT: movl L_xdst$non_lazy_ptr-L123$pb(%eax), %eax 9993; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 9994; DARWIN-32-PIC-NEXT: retl 9995; 9996; DARWIN-64-STATIC-LABEL: cxm01: 9997; DARWIN-64-STATIC: ## %bb.0: ## %entry 9998; DARWIN-64-STATIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 9999; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10000; DARWIN-64-STATIC-NEXT: retq 10001; 10002; DARWIN-64-DYNAMIC-LABEL: cxm01: 10003; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10004; DARWIN-64-DYNAMIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10005; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10006; DARWIN-64-DYNAMIC-NEXT: retq 10007; 10008; DARWIN-64-PIC-LABEL: cxm01: 10009; DARWIN-64-PIC: ## %bb.0: ## %entry 10010; DARWIN-64-PIC-NEXT: movq _xdst@GOTPCREL(%rip), %rax 10011; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10012; DARWIN-64-PIC-NEXT: retq 10013 10014entry: 10015 %0 = add i64 %i, 65536 10016 %1 = getelementptr [32 x i32], ptr @xdst, i64 0, i64 %0 10017 ret ptr %1 10018} 10019 10020define dso_local ptr @cam02(i64 %i) nounwind { 10021; LINUX-64-STATIC-LABEL: cam02: 10022; LINUX-64-STATIC: # %bb.0: # %entry 10023; LINUX-64-STATIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 10024; LINUX-64-STATIC-NEXT: movq (%rax), %rax 10025; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10026; LINUX-64-STATIC-NEXT: retq 10027; 10028; LINUX-32-STATIC-LABEL: cam02: 10029; LINUX-32-STATIC: # %bb.0: # %entry 10030; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10031; LINUX-32-STATIC-NEXT: movl ptr, %ecx 10032; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10033; LINUX-32-STATIC-NEXT: retl 10034; 10035; LINUX-32-PIC-LABEL: cam02: 10036; LINUX-32-PIC: # %bb.0: # %entry 10037; LINUX-32-PIC-NEXT: calll .L124$pb 10038; LINUX-32-PIC-NEXT: .L124$pb: 10039; LINUX-32-PIC-NEXT: popl %eax 10040; LINUX-32-PIC-NEXT: .Ltmp124: 10041; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp124-.L124$pb), %eax 10042; LINUX-32-PIC-NEXT: movl ptr@GOT(%eax), %eax 10043; LINUX-32-PIC-NEXT: movl (%eax), %eax 10044; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10045; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10046; LINUX-32-PIC-NEXT: retl 10047; 10048; LINUX-64-PIC-LABEL: cam02: 10049; LINUX-64-PIC: # %bb.0: # %entry 10050; LINUX-64-PIC-NEXT: movq ptr@GOTPCREL(%rip), %rax 10051; LINUX-64-PIC-NEXT: movq (%rax), %rax 10052; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10053; LINUX-64-PIC-NEXT: retq 10054; 10055; DARWIN-32-STATIC-LABEL: cam02: 10056; DARWIN-32-STATIC: ## %bb.0: ## %entry 10057; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10058; DARWIN-32-STATIC-NEXT: movl _ptr, %ecx 10059; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10060; DARWIN-32-STATIC-NEXT: retl 10061; 10062; DARWIN-32-DYNAMIC-LABEL: cam02: 10063; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10064; DARWIN-32-DYNAMIC-NEXT: movl L_ptr$non_lazy_ptr, %eax 10065; DARWIN-32-DYNAMIC-NEXT: movl (%eax), %eax 10066; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10067; DARWIN-32-DYNAMIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10068; DARWIN-32-DYNAMIC-NEXT: retl 10069; 10070; DARWIN-32-PIC-LABEL: cam02: 10071; DARWIN-32-PIC: ## %bb.0: ## %entry 10072; DARWIN-32-PIC-NEXT: calll L124$pb 10073; DARWIN-32-PIC-NEXT: L124$pb: 10074; DARWIN-32-PIC-NEXT: popl %eax 10075; DARWIN-32-PIC-NEXT: movl L_ptr$non_lazy_ptr-L124$pb(%eax), %eax 10076; DARWIN-32-PIC-NEXT: movl (%eax), %eax 10077; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10078; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10079; DARWIN-32-PIC-NEXT: retl 10080; 10081; DARWIN-64-STATIC-LABEL: cam02: 10082; DARWIN-64-STATIC: ## %bb.0: ## %entry 10083; DARWIN-64-STATIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10084; DARWIN-64-STATIC-NEXT: movq (%rax), %rax 10085; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10086; DARWIN-64-STATIC-NEXT: retq 10087; 10088; DARWIN-64-DYNAMIC-LABEL: cam02: 10089; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10090; DARWIN-64-DYNAMIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10091; DARWIN-64-DYNAMIC-NEXT: movq (%rax), %rax 10092; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10093; DARWIN-64-DYNAMIC-NEXT: retq 10094; 10095; DARWIN-64-PIC-LABEL: cam02: 10096; DARWIN-64-PIC: ## %bb.0: ## %entry 10097; DARWIN-64-PIC-NEXT: movq _ptr@GOTPCREL(%rip), %rax 10098; DARWIN-64-PIC-NEXT: movq (%rax), %rax 10099; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10100; DARWIN-64-PIC-NEXT: retq 10101 10102entry: 10103 %0 = load ptr, ptr @ptr, align 8 10104 %1 = add i64 %i, 65536 10105 %2 = getelementptr i32, ptr %0, i64 %1 10106 ret ptr %2 10107} 10108 10109define dso_local ptr @cam03(i64 %i) nounwind { 10110; LINUX-64-STATIC-LABEL: cam03: 10111; LINUX-64-STATIC: # %bb.0: # %entry 10112; LINUX-64-STATIC-NEXT: leaq dsrc+262144(,%rdi,4), %rax 10113; LINUX-64-STATIC-NEXT: retq 10114; 10115; LINUX-32-STATIC-LABEL: cam03: 10116; LINUX-32-STATIC: # %bb.0: # %entry 10117; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10118; LINUX-32-STATIC-NEXT: leal dsrc+262144(,%eax,4), %eax 10119; LINUX-32-STATIC-NEXT: retl 10120; 10121; LINUX-32-PIC-LABEL: cam03: 10122; LINUX-32-PIC: # %bb.0: # %entry 10123; LINUX-32-PIC-NEXT: calll .L125$pb 10124; LINUX-32-PIC-NEXT: .L125$pb: 10125; LINUX-32-PIC-NEXT: popl %eax 10126; LINUX-32-PIC-NEXT: .Ltmp125: 10127; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp125-.L125$pb), %eax 10128; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10129; LINUX-32-PIC-NEXT: leal .Ldsrc$local@GOTOFF+262144(%eax,%ecx,4), %eax 10130; LINUX-32-PIC-NEXT: retl 10131; 10132; LINUX-64-PIC-LABEL: cam03: 10133; LINUX-64-PIC: # %bb.0: # %entry 10134; LINUX-64-PIC-NEXT: leaq .Ldsrc$local(%rip), %rax 10135; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10136; LINUX-64-PIC-NEXT: retq 10137; 10138; DARWIN-32-STATIC-LABEL: cam03: 10139; DARWIN-32-STATIC: ## %bb.0: ## %entry 10140; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10141; DARWIN-32-STATIC-NEXT: leal _dsrc+262144(,%eax,4), %eax 10142; DARWIN-32-STATIC-NEXT: retl 10143; 10144; DARWIN-32-DYNAMIC-LABEL: cam03: 10145; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10146; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10147; DARWIN-32-DYNAMIC-NEXT: leal _dsrc+262144(,%eax,4), %eax 10148; DARWIN-32-DYNAMIC-NEXT: retl 10149; 10150; DARWIN-32-PIC-LABEL: cam03: 10151; DARWIN-32-PIC: ## %bb.0: ## %entry 10152; DARWIN-32-PIC-NEXT: calll L125$pb 10153; DARWIN-32-PIC-NEXT: L125$pb: 10154; DARWIN-32-PIC-NEXT: popl %eax 10155; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10156; DARWIN-32-PIC-NEXT: leal (_dsrc-L125$pb)+262144(%eax,%ecx,4), %eax 10157; DARWIN-32-PIC-NEXT: retl 10158; 10159; DARWIN-64-STATIC-LABEL: cam03: 10160; DARWIN-64-STATIC: ## %bb.0: ## %entry 10161; DARWIN-64-STATIC-NEXT: leaq _dsrc(%rip), %rax 10162; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10163; DARWIN-64-STATIC-NEXT: retq 10164; 10165; DARWIN-64-DYNAMIC-LABEL: cam03: 10166; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10167; DARWIN-64-DYNAMIC-NEXT: leaq _dsrc(%rip), %rax 10168; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10169; DARWIN-64-DYNAMIC-NEXT: retq 10170; 10171; DARWIN-64-PIC-LABEL: cam03: 10172; DARWIN-64-PIC: ## %bb.0: ## %entry 10173; DARWIN-64-PIC-NEXT: leaq _dsrc(%rip), %rax 10174; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10175; DARWIN-64-PIC-NEXT: retq 10176 10177entry: 10178 %0 = add i64 %i, 65536 10179 %1 = getelementptr [131072 x i32], ptr @dsrc, i64 0, i64 %0 10180 ret ptr %1 10181} 10182 10183define dso_local ptr @cam04(i64 %i) nounwind { 10184; LINUX-64-STATIC-LABEL: cam04: 10185; LINUX-64-STATIC: # %bb.0: # %entry 10186; LINUX-64-STATIC-NEXT: leaq ddst+262144(,%rdi,4), %rax 10187; LINUX-64-STATIC-NEXT: retq 10188; 10189; LINUX-32-STATIC-LABEL: cam04: 10190; LINUX-32-STATIC: # %bb.0: # %entry 10191; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10192; LINUX-32-STATIC-NEXT: leal ddst+262144(,%eax,4), %eax 10193; LINUX-32-STATIC-NEXT: retl 10194; 10195; LINUX-32-PIC-LABEL: cam04: 10196; LINUX-32-PIC: # %bb.0: # %entry 10197; LINUX-32-PIC-NEXT: calll .L126$pb 10198; LINUX-32-PIC-NEXT: .L126$pb: 10199; LINUX-32-PIC-NEXT: popl %eax 10200; LINUX-32-PIC-NEXT: .Ltmp126: 10201; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp126-.L126$pb), %eax 10202; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10203; LINUX-32-PIC-NEXT: leal .Lddst$local@GOTOFF+262144(%eax,%ecx,4), %eax 10204; LINUX-32-PIC-NEXT: retl 10205; 10206; LINUX-64-PIC-LABEL: cam04: 10207; LINUX-64-PIC: # %bb.0: # %entry 10208; LINUX-64-PIC-NEXT: leaq .Lddst$local(%rip), %rax 10209; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10210; LINUX-64-PIC-NEXT: retq 10211; 10212; DARWIN-32-STATIC-LABEL: cam04: 10213; DARWIN-32-STATIC: ## %bb.0: ## %entry 10214; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10215; DARWIN-32-STATIC-NEXT: leal _ddst+262144(,%eax,4), %eax 10216; DARWIN-32-STATIC-NEXT: retl 10217; 10218; DARWIN-32-DYNAMIC-LABEL: cam04: 10219; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10220; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10221; DARWIN-32-DYNAMIC-NEXT: leal _ddst+262144(,%eax,4), %eax 10222; DARWIN-32-DYNAMIC-NEXT: retl 10223; 10224; DARWIN-32-PIC-LABEL: cam04: 10225; DARWIN-32-PIC: ## %bb.0: ## %entry 10226; DARWIN-32-PIC-NEXT: calll L126$pb 10227; DARWIN-32-PIC-NEXT: L126$pb: 10228; DARWIN-32-PIC-NEXT: popl %eax 10229; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10230; DARWIN-32-PIC-NEXT: leal (_ddst-L126$pb)+262144(%eax,%ecx,4), %eax 10231; DARWIN-32-PIC-NEXT: retl 10232; 10233; DARWIN-64-STATIC-LABEL: cam04: 10234; DARWIN-64-STATIC: ## %bb.0: ## %entry 10235; DARWIN-64-STATIC-NEXT: leaq _ddst(%rip), %rax 10236; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10237; DARWIN-64-STATIC-NEXT: retq 10238; 10239; DARWIN-64-DYNAMIC-LABEL: cam04: 10240; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10241; DARWIN-64-DYNAMIC-NEXT: leaq _ddst(%rip), %rax 10242; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10243; DARWIN-64-DYNAMIC-NEXT: retq 10244; 10245; DARWIN-64-PIC-LABEL: cam04: 10246; DARWIN-64-PIC: ## %bb.0: ## %entry 10247; DARWIN-64-PIC-NEXT: leaq _ddst(%rip), %rax 10248; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10249; DARWIN-64-PIC-NEXT: retq 10250 10251entry: 10252 %0 = add i64 %i, 65536 10253 %1 = getelementptr [131072 x i32], ptr @ddst, i64 0, i64 %0 10254 ret ptr %1 10255} 10256 10257define dso_local ptr @cam05(i64 %i) nounwind { 10258; LINUX-64-STATIC-LABEL: cam05: 10259; LINUX-64-STATIC: # %bb.0: # %entry 10260; LINUX-64-STATIC-NEXT: movq dptr(%rip), %rax 10261; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10262; LINUX-64-STATIC-NEXT: retq 10263; 10264; LINUX-32-STATIC-LABEL: cam05: 10265; LINUX-32-STATIC: # %bb.0: # %entry 10266; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10267; LINUX-32-STATIC-NEXT: movl dptr, %ecx 10268; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10269; LINUX-32-STATIC-NEXT: retl 10270; 10271; LINUX-32-PIC-LABEL: cam05: 10272; LINUX-32-PIC: # %bb.0: # %entry 10273; LINUX-32-PIC-NEXT: calll .L127$pb 10274; LINUX-32-PIC-NEXT: .L127$pb: 10275; LINUX-32-PIC-NEXT: popl %eax 10276; LINUX-32-PIC-NEXT: .Ltmp127: 10277; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp127-.L127$pb), %eax 10278; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10279; LINUX-32-PIC-NEXT: movl .Ldptr$local@GOTOFF(%eax), %eax 10280; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10281; LINUX-32-PIC-NEXT: retl 10282; 10283; LINUX-64-PIC-LABEL: cam05: 10284; LINUX-64-PIC: # %bb.0: # %entry 10285; LINUX-64-PIC-NEXT: movq .Ldptr$local(%rip), %rax 10286; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10287; LINUX-64-PIC-NEXT: retq 10288; 10289; DARWIN-32-STATIC-LABEL: cam05: 10290; DARWIN-32-STATIC: ## %bb.0: ## %entry 10291; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10292; DARWIN-32-STATIC-NEXT: movl _dptr, %ecx 10293; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10294; DARWIN-32-STATIC-NEXT: retl 10295; 10296; DARWIN-32-DYNAMIC-LABEL: cam05: 10297; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10298; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10299; DARWIN-32-DYNAMIC-NEXT: movl _dptr, %ecx 10300; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10301; DARWIN-32-DYNAMIC-NEXT: retl 10302; 10303; DARWIN-32-PIC-LABEL: cam05: 10304; DARWIN-32-PIC: ## %bb.0: ## %entry 10305; DARWIN-32-PIC-NEXT: calll L127$pb 10306; DARWIN-32-PIC-NEXT: L127$pb: 10307; DARWIN-32-PIC-NEXT: popl %eax 10308; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10309; DARWIN-32-PIC-NEXT: movl _dptr-L127$pb(%eax), %eax 10310; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10311; DARWIN-32-PIC-NEXT: retl 10312; 10313; DARWIN-64-STATIC-LABEL: cam05: 10314; DARWIN-64-STATIC: ## %bb.0: ## %entry 10315; DARWIN-64-STATIC-NEXT: movq _dptr(%rip), %rax 10316; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10317; DARWIN-64-STATIC-NEXT: retq 10318; 10319; DARWIN-64-DYNAMIC-LABEL: cam05: 10320; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10321; DARWIN-64-DYNAMIC-NEXT: movq _dptr(%rip), %rax 10322; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10323; DARWIN-64-DYNAMIC-NEXT: retq 10324; 10325; DARWIN-64-PIC-LABEL: cam05: 10326; DARWIN-64-PIC: ## %bb.0: ## %entry 10327; DARWIN-64-PIC-NEXT: movq _dptr(%rip), %rax 10328; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10329; DARWIN-64-PIC-NEXT: retq 10330 10331entry: 10332 %0 = load ptr, ptr @dptr, align 8 10333 %1 = add i64 %i, 65536 10334 %2 = getelementptr i32, ptr %0, i64 %1 10335 ret ptr %2 10336} 10337 10338define dso_local ptr @cam06(i64 %i) nounwind { 10339; LINUX-64-STATIC-LABEL: cam06: 10340; LINUX-64-STATIC: # %bb.0: # %entry 10341; LINUX-64-STATIC-NEXT: leaq lsrc+262144(,%rdi,4), %rax 10342; LINUX-64-STATIC-NEXT: retq 10343; 10344; LINUX-32-STATIC-LABEL: cam06: 10345; LINUX-32-STATIC: # %bb.0: # %entry 10346; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10347; LINUX-32-STATIC-NEXT: leal lsrc+262144(,%eax,4), %eax 10348; LINUX-32-STATIC-NEXT: retl 10349; 10350; LINUX-32-PIC-LABEL: cam06: 10351; LINUX-32-PIC: # %bb.0: # %entry 10352; LINUX-32-PIC-NEXT: calll .L128$pb 10353; LINUX-32-PIC-NEXT: .L128$pb: 10354; LINUX-32-PIC-NEXT: popl %eax 10355; LINUX-32-PIC-NEXT: .Ltmp128: 10356; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp128-.L128$pb), %eax 10357; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10358; LINUX-32-PIC-NEXT: leal lsrc@GOTOFF+262144(%eax,%ecx,4), %eax 10359; LINUX-32-PIC-NEXT: retl 10360; 10361; LINUX-64-PIC-LABEL: cam06: 10362; LINUX-64-PIC: # %bb.0: # %entry 10363; LINUX-64-PIC-NEXT: leaq lsrc(%rip), %rax 10364; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10365; LINUX-64-PIC-NEXT: retq 10366; 10367; DARWIN-32-STATIC-LABEL: cam06: 10368; DARWIN-32-STATIC: ## %bb.0: ## %entry 10369; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10370; DARWIN-32-STATIC-NEXT: leal _lsrc+262144(,%eax,4), %eax 10371; DARWIN-32-STATIC-NEXT: retl 10372; 10373; DARWIN-32-DYNAMIC-LABEL: cam06: 10374; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10375; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10376; DARWIN-32-DYNAMIC-NEXT: leal _lsrc+262144(,%eax,4), %eax 10377; DARWIN-32-DYNAMIC-NEXT: retl 10378; 10379; DARWIN-32-PIC-LABEL: cam06: 10380; DARWIN-32-PIC: ## %bb.0: ## %entry 10381; DARWIN-32-PIC-NEXT: calll L128$pb 10382; DARWIN-32-PIC-NEXT: L128$pb: 10383; DARWIN-32-PIC-NEXT: popl %eax 10384; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10385; DARWIN-32-PIC-NEXT: leal (_lsrc-L128$pb)+262144(%eax,%ecx,4), %eax 10386; DARWIN-32-PIC-NEXT: retl 10387; 10388; DARWIN-64-STATIC-LABEL: cam06: 10389; DARWIN-64-STATIC: ## %bb.0: ## %entry 10390; DARWIN-64-STATIC-NEXT: leaq _lsrc(%rip), %rax 10391; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10392; DARWIN-64-STATIC-NEXT: retq 10393; 10394; DARWIN-64-DYNAMIC-LABEL: cam06: 10395; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10396; DARWIN-64-DYNAMIC-NEXT: leaq _lsrc(%rip), %rax 10397; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10398; DARWIN-64-DYNAMIC-NEXT: retq 10399; 10400; DARWIN-64-PIC-LABEL: cam06: 10401; DARWIN-64-PIC: ## %bb.0: ## %entry 10402; DARWIN-64-PIC-NEXT: leaq _lsrc(%rip), %rax 10403; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10404; DARWIN-64-PIC-NEXT: retq 10405 10406entry: 10407 %0 = add i64 %i, 65536 10408 %1 = getelementptr [131072 x i32], ptr @lsrc, i64 0, i64 %0 10409 ret ptr %1 10410} 10411 10412define dso_local ptr @cam07(i64 %i) nounwind { 10413; LINUX-64-STATIC-LABEL: cam07: 10414; LINUX-64-STATIC: # %bb.0: # %entry 10415; LINUX-64-STATIC-NEXT: leaq ldst+262144(,%rdi,4), %rax 10416; LINUX-64-STATIC-NEXT: retq 10417; 10418; LINUX-32-STATIC-LABEL: cam07: 10419; LINUX-32-STATIC: # %bb.0: # %entry 10420; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10421; LINUX-32-STATIC-NEXT: leal ldst+262144(,%eax,4), %eax 10422; LINUX-32-STATIC-NEXT: retl 10423; 10424; LINUX-32-PIC-LABEL: cam07: 10425; LINUX-32-PIC: # %bb.0: # %entry 10426; LINUX-32-PIC-NEXT: calll .L129$pb 10427; LINUX-32-PIC-NEXT: .L129$pb: 10428; LINUX-32-PIC-NEXT: popl %eax 10429; LINUX-32-PIC-NEXT: .Ltmp129: 10430; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp129-.L129$pb), %eax 10431; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10432; LINUX-32-PIC-NEXT: leal ldst@GOTOFF+262144(%eax,%ecx,4), %eax 10433; LINUX-32-PIC-NEXT: retl 10434; 10435; LINUX-64-PIC-LABEL: cam07: 10436; LINUX-64-PIC: # %bb.0: # %entry 10437; LINUX-64-PIC-NEXT: leaq ldst(%rip), %rax 10438; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10439; LINUX-64-PIC-NEXT: retq 10440; 10441; DARWIN-32-STATIC-LABEL: cam07: 10442; DARWIN-32-STATIC: ## %bb.0: ## %entry 10443; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10444; DARWIN-32-STATIC-NEXT: leal _ldst+262144(,%eax,4), %eax 10445; DARWIN-32-STATIC-NEXT: retl 10446; 10447; DARWIN-32-DYNAMIC-LABEL: cam07: 10448; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10449; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10450; DARWIN-32-DYNAMIC-NEXT: leal _ldst+262144(,%eax,4), %eax 10451; DARWIN-32-DYNAMIC-NEXT: retl 10452; 10453; DARWIN-32-PIC-LABEL: cam07: 10454; DARWIN-32-PIC: ## %bb.0: ## %entry 10455; DARWIN-32-PIC-NEXT: calll L129$pb 10456; DARWIN-32-PIC-NEXT: L129$pb: 10457; DARWIN-32-PIC-NEXT: popl %eax 10458; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10459; DARWIN-32-PIC-NEXT: leal (_ldst-L129$pb)+262144(%eax,%ecx,4), %eax 10460; DARWIN-32-PIC-NEXT: retl 10461; 10462; DARWIN-64-STATIC-LABEL: cam07: 10463; DARWIN-64-STATIC: ## %bb.0: ## %entry 10464; DARWIN-64-STATIC-NEXT: leaq _ldst(%rip), %rax 10465; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10466; DARWIN-64-STATIC-NEXT: retq 10467; 10468; DARWIN-64-DYNAMIC-LABEL: cam07: 10469; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10470; DARWIN-64-DYNAMIC-NEXT: leaq _ldst(%rip), %rax 10471; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10472; DARWIN-64-DYNAMIC-NEXT: retq 10473; 10474; DARWIN-64-PIC-LABEL: cam07: 10475; DARWIN-64-PIC: ## %bb.0: ## %entry 10476; DARWIN-64-PIC-NEXT: leaq _ldst(%rip), %rax 10477; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10478; DARWIN-64-PIC-NEXT: retq 10479 10480entry: 10481 %0 = add i64 %i, 65536 10482 %1 = getelementptr [131072 x i32], ptr @ldst, i64 0, i64 %0 10483 ret ptr %1 10484} 10485 10486define dso_local ptr @cam08(i64 %i) nounwind { 10487; LINUX-64-STATIC-LABEL: cam08: 10488; LINUX-64-STATIC: # %bb.0: # %entry 10489; LINUX-64-STATIC-NEXT: movq lptr(%rip), %rax 10490; LINUX-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10491; LINUX-64-STATIC-NEXT: retq 10492; 10493; LINUX-32-STATIC-LABEL: cam08: 10494; LINUX-32-STATIC: # %bb.0: # %entry 10495; LINUX-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10496; LINUX-32-STATIC-NEXT: movl lptr, %ecx 10497; LINUX-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10498; LINUX-32-STATIC-NEXT: retl 10499; 10500; LINUX-32-PIC-LABEL: cam08: 10501; LINUX-32-PIC: # %bb.0: # %entry 10502; LINUX-32-PIC-NEXT: calll .L130$pb 10503; LINUX-32-PIC-NEXT: .L130$pb: 10504; LINUX-32-PIC-NEXT: popl %eax 10505; LINUX-32-PIC-NEXT: .Ltmp130: 10506; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp130-.L130$pb), %eax 10507; LINUX-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10508; LINUX-32-PIC-NEXT: movl lptr@GOTOFF(%eax), %eax 10509; LINUX-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10510; LINUX-32-PIC-NEXT: retl 10511; 10512; LINUX-64-PIC-LABEL: cam08: 10513; LINUX-64-PIC: # %bb.0: # %entry 10514; LINUX-64-PIC-NEXT: movq lptr(%rip), %rax 10515; LINUX-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10516; LINUX-64-PIC-NEXT: retq 10517; 10518; DARWIN-32-STATIC-LABEL: cam08: 10519; DARWIN-32-STATIC: ## %bb.0: ## %entry 10520; DARWIN-32-STATIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10521; DARWIN-32-STATIC-NEXT: movl _lptr, %ecx 10522; DARWIN-32-STATIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10523; DARWIN-32-STATIC-NEXT: retl 10524; 10525; DARWIN-32-DYNAMIC-LABEL: cam08: 10526; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10527; DARWIN-32-DYNAMIC-NEXT: movl {{[0-9]+}}(%esp), %eax 10528; DARWIN-32-DYNAMIC-NEXT: movl _lptr, %ecx 10529; DARWIN-32-DYNAMIC-NEXT: leal 262144(%ecx,%eax,4), %eax 10530; DARWIN-32-DYNAMIC-NEXT: retl 10531; 10532; DARWIN-32-PIC-LABEL: cam08: 10533; DARWIN-32-PIC: ## %bb.0: ## %entry 10534; DARWIN-32-PIC-NEXT: calll L130$pb 10535; DARWIN-32-PIC-NEXT: L130$pb: 10536; DARWIN-32-PIC-NEXT: popl %eax 10537; DARWIN-32-PIC-NEXT: movl {{[0-9]+}}(%esp), %ecx 10538; DARWIN-32-PIC-NEXT: movl _lptr-L130$pb(%eax), %eax 10539; DARWIN-32-PIC-NEXT: leal 262144(%eax,%ecx,4), %eax 10540; DARWIN-32-PIC-NEXT: retl 10541; 10542; DARWIN-64-STATIC-LABEL: cam08: 10543; DARWIN-64-STATIC: ## %bb.0: ## %entry 10544; DARWIN-64-STATIC-NEXT: movq _lptr(%rip), %rax 10545; DARWIN-64-STATIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10546; DARWIN-64-STATIC-NEXT: retq 10547; 10548; DARWIN-64-DYNAMIC-LABEL: cam08: 10549; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10550; DARWIN-64-DYNAMIC-NEXT: movq _lptr(%rip), %rax 10551; DARWIN-64-DYNAMIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10552; DARWIN-64-DYNAMIC-NEXT: retq 10553; 10554; DARWIN-64-PIC-LABEL: cam08: 10555; DARWIN-64-PIC: ## %bb.0: ## %entry 10556; DARWIN-64-PIC-NEXT: movq _lptr(%rip), %rax 10557; DARWIN-64-PIC-NEXT: leaq 262144(%rax,%rdi,4), %rax 10558; DARWIN-64-PIC-NEXT: retq 10559 10560entry: 10561 %0 = load ptr, ptr @lptr, align 8 10562 %1 = add i64 %i, 65536 10563 %2 = getelementptr i32, ptr %0, i64 %1 10564 ret ptr %2 10565} 10566 10567define dso_local void @lcallee() nounwind { 10568; LINUX-64-STATIC-LABEL: lcallee: 10569; LINUX-64-STATIC: # %bb.0: # %entry 10570; LINUX-64-STATIC-NEXT: pushq %rax 10571; LINUX-64-STATIC-NEXT: callq x@PLT 10572; LINUX-64-STATIC-NEXT: callq x@PLT 10573; LINUX-64-STATIC-NEXT: callq x@PLT 10574; LINUX-64-STATIC-NEXT: callq x@PLT 10575; LINUX-64-STATIC-NEXT: callq x@PLT 10576; LINUX-64-STATIC-NEXT: callq x@PLT 10577; LINUX-64-STATIC-NEXT: callq x@PLT 10578; LINUX-64-STATIC-NEXT: popq %rax 10579; LINUX-64-STATIC-NEXT: retq 10580; 10581; LINUX-32-STATIC-LABEL: lcallee: 10582; LINUX-32-STATIC: # %bb.0: # %entry 10583; LINUX-32-STATIC-NEXT: subl $12, %esp 10584; LINUX-32-STATIC-NEXT: calll x@PLT 10585; LINUX-32-STATIC-NEXT: calll x@PLT 10586; LINUX-32-STATIC-NEXT: calll x@PLT 10587; LINUX-32-STATIC-NEXT: calll x@PLT 10588; LINUX-32-STATIC-NEXT: calll x@PLT 10589; LINUX-32-STATIC-NEXT: calll x@PLT 10590; LINUX-32-STATIC-NEXT: calll x@PLT 10591; LINUX-32-STATIC-NEXT: addl $12, %esp 10592; LINUX-32-STATIC-NEXT: retl 10593; 10594; LINUX-32-PIC-LABEL: lcallee: 10595; LINUX-32-PIC: # %bb.0: # %entry 10596; LINUX-32-PIC-NEXT: pushl %ebx 10597; LINUX-32-PIC-NEXT: subl $8, %esp 10598; LINUX-32-PIC-NEXT: calll .L131$pb 10599; LINUX-32-PIC-NEXT: .L131$pb: 10600; LINUX-32-PIC-NEXT: popl %ebx 10601; LINUX-32-PIC-NEXT: .Ltmp131: 10602; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp131-.L131$pb), %ebx 10603; LINUX-32-PIC-NEXT: calll x@PLT 10604; LINUX-32-PIC-NEXT: calll x@PLT 10605; LINUX-32-PIC-NEXT: calll x@PLT 10606; LINUX-32-PIC-NEXT: calll x@PLT 10607; LINUX-32-PIC-NEXT: calll x@PLT 10608; LINUX-32-PIC-NEXT: calll x@PLT 10609; LINUX-32-PIC-NEXT: calll x@PLT 10610; LINUX-32-PIC-NEXT: addl $8, %esp 10611; LINUX-32-PIC-NEXT: popl %ebx 10612; LINUX-32-PIC-NEXT: retl 10613; 10614; LINUX-64-PIC-LABEL: lcallee: 10615; LINUX-64-PIC: # %bb.0: # %entry 10616; LINUX-64-PIC-NEXT: pushq %rax 10617; LINUX-64-PIC-NEXT: callq x@PLT 10618; LINUX-64-PIC-NEXT: callq x@PLT 10619; LINUX-64-PIC-NEXT: callq x@PLT 10620; LINUX-64-PIC-NEXT: callq x@PLT 10621; LINUX-64-PIC-NEXT: callq x@PLT 10622; LINUX-64-PIC-NEXT: callq x@PLT 10623; LINUX-64-PIC-NEXT: callq x@PLT 10624; LINUX-64-PIC-NEXT: popq %rax 10625; LINUX-64-PIC-NEXT: retq 10626; 10627; DARWIN-32-STATIC-LABEL: lcallee: 10628; DARWIN-32-STATIC: ## %bb.0: ## %entry 10629; DARWIN-32-STATIC-NEXT: subl $12, %esp 10630; DARWIN-32-STATIC-NEXT: calll _x 10631; DARWIN-32-STATIC-NEXT: calll _x 10632; DARWIN-32-STATIC-NEXT: calll _x 10633; DARWIN-32-STATIC-NEXT: calll _x 10634; DARWIN-32-STATIC-NEXT: calll _x 10635; DARWIN-32-STATIC-NEXT: calll _x 10636; DARWIN-32-STATIC-NEXT: calll _x 10637; DARWIN-32-STATIC-NEXT: addl $12, %esp 10638; DARWIN-32-STATIC-NEXT: retl 10639; 10640; DARWIN-32-DYNAMIC-LABEL: lcallee: 10641; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10642; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 10643; DARWIN-32-DYNAMIC-NEXT: calll _x 10644; DARWIN-32-DYNAMIC-NEXT: calll _x 10645; DARWIN-32-DYNAMIC-NEXT: calll _x 10646; DARWIN-32-DYNAMIC-NEXT: calll _x 10647; DARWIN-32-DYNAMIC-NEXT: calll _x 10648; DARWIN-32-DYNAMIC-NEXT: calll _x 10649; DARWIN-32-DYNAMIC-NEXT: calll _x 10650; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 10651; DARWIN-32-DYNAMIC-NEXT: retl 10652; 10653; DARWIN-32-PIC-LABEL: lcallee: 10654; DARWIN-32-PIC: ## %bb.0: ## %entry 10655; DARWIN-32-PIC-NEXT: subl $12, %esp 10656; DARWIN-32-PIC-NEXT: calll _x 10657; DARWIN-32-PIC-NEXT: calll _x 10658; DARWIN-32-PIC-NEXT: calll _x 10659; DARWIN-32-PIC-NEXT: calll _x 10660; DARWIN-32-PIC-NEXT: calll _x 10661; DARWIN-32-PIC-NEXT: calll _x 10662; DARWIN-32-PIC-NEXT: calll _x 10663; DARWIN-32-PIC-NEXT: addl $12, %esp 10664; DARWIN-32-PIC-NEXT: retl 10665; 10666; DARWIN-64-STATIC-LABEL: lcallee: 10667; DARWIN-64-STATIC: ## %bb.0: ## %entry 10668; DARWIN-64-STATIC-NEXT: pushq %rax 10669; DARWIN-64-STATIC-NEXT: callq _x 10670; DARWIN-64-STATIC-NEXT: callq _x 10671; DARWIN-64-STATIC-NEXT: callq _x 10672; DARWIN-64-STATIC-NEXT: callq _x 10673; DARWIN-64-STATIC-NEXT: callq _x 10674; DARWIN-64-STATIC-NEXT: callq _x 10675; DARWIN-64-STATIC-NEXT: callq _x 10676; DARWIN-64-STATIC-NEXT: popq %rax 10677; DARWIN-64-STATIC-NEXT: retq 10678; 10679; DARWIN-64-DYNAMIC-LABEL: lcallee: 10680; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10681; DARWIN-64-DYNAMIC-NEXT: pushq %rax 10682; DARWIN-64-DYNAMIC-NEXT: callq _x 10683; DARWIN-64-DYNAMIC-NEXT: callq _x 10684; DARWIN-64-DYNAMIC-NEXT: callq _x 10685; DARWIN-64-DYNAMIC-NEXT: callq _x 10686; DARWIN-64-DYNAMIC-NEXT: callq _x 10687; DARWIN-64-DYNAMIC-NEXT: callq _x 10688; DARWIN-64-DYNAMIC-NEXT: callq _x 10689; DARWIN-64-DYNAMIC-NEXT: popq %rax 10690; DARWIN-64-DYNAMIC-NEXT: retq 10691; 10692; DARWIN-64-PIC-LABEL: lcallee: 10693; DARWIN-64-PIC: ## %bb.0: ## %entry 10694; DARWIN-64-PIC-NEXT: pushq %rax 10695; DARWIN-64-PIC-NEXT: callq _x 10696; DARWIN-64-PIC-NEXT: callq _x 10697; DARWIN-64-PIC-NEXT: callq _x 10698; DARWIN-64-PIC-NEXT: callq _x 10699; DARWIN-64-PIC-NEXT: callq _x 10700; DARWIN-64-PIC-NEXT: callq _x 10701; DARWIN-64-PIC-NEXT: callq _x 10702; DARWIN-64-PIC-NEXT: popq %rax 10703; DARWIN-64-PIC-NEXT: retq 10704 10705entry: 10706 call void @x() nounwind 10707 call void @x() nounwind 10708 call void @x() nounwind 10709 call void @x() nounwind 10710 call void @x() nounwind 10711 call void @x() nounwind 10712 call void @x() nounwind 10713 ret void 10714} 10715 10716declare void @x() 10717 10718define internal void @dcallee() nounwind { 10719; LINUX-64-STATIC-LABEL: dcallee: 10720; LINUX-64-STATIC: # %bb.0: # %entry 10721; LINUX-64-STATIC-NEXT: pushq %rax 10722; LINUX-64-STATIC-NEXT: callq y@PLT 10723; LINUX-64-STATIC-NEXT: callq y@PLT 10724; LINUX-64-STATIC-NEXT: callq y@PLT 10725; LINUX-64-STATIC-NEXT: callq y@PLT 10726; LINUX-64-STATIC-NEXT: callq y@PLT 10727; LINUX-64-STATIC-NEXT: callq y@PLT 10728; LINUX-64-STATIC-NEXT: callq y@PLT 10729; LINUX-64-STATIC-NEXT: popq %rax 10730; LINUX-64-STATIC-NEXT: retq 10731; 10732; LINUX-32-STATIC-LABEL: dcallee: 10733; LINUX-32-STATIC: # %bb.0: # %entry 10734; LINUX-32-STATIC-NEXT: subl $12, %esp 10735; LINUX-32-STATIC-NEXT: calll y@PLT 10736; LINUX-32-STATIC-NEXT: calll y@PLT 10737; LINUX-32-STATIC-NEXT: calll y@PLT 10738; LINUX-32-STATIC-NEXT: calll y@PLT 10739; LINUX-32-STATIC-NEXT: calll y@PLT 10740; LINUX-32-STATIC-NEXT: calll y@PLT 10741; LINUX-32-STATIC-NEXT: calll y@PLT 10742; LINUX-32-STATIC-NEXT: addl $12, %esp 10743; LINUX-32-STATIC-NEXT: retl 10744; 10745; LINUX-32-PIC-LABEL: dcallee: 10746; LINUX-32-PIC: # %bb.0: # %entry 10747; LINUX-32-PIC-NEXT: pushl %ebx 10748; LINUX-32-PIC-NEXT: subl $8, %esp 10749; LINUX-32-PIC-NEXT: calll .L132$pb 10750; LINUX-32-PIC-NEXT: .L132$pb: 10751; LINUX-32-PIC-NEXT: popl %ebx 10752; LINUX-32-PIC-NEXT: .Ltmp132: 10753; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp132-.L132$pb), %ebx 10754; LINUX-32-PIC-NEXT: calll y@PLT 10755; LINUX-32-PIC-NEXT: calll y@PLT 10756; LINUX-32-PIC-NEXT: calll y@PLT 10757; LINUX-32-PIC-NEXT: calll y@PLT 10758; LINUX-32-PIC-NEXT: calll y@PLT 10759; LINUX-32-PIC-NEXT: calll y@PLT 10760; LINUX-32-PIC-NEXT: calll y@PLT 10761; LINUX-32-PIC-NEXT: addl $8, %esp 10762; LINUX-32-PIC-NEXT: popl %ebx 10763; LINUX-32-PIC-NEXT: retl 10764; 10765; LINUX-64-PIC-LABEL: dcallee: 10766; LINUX-64-PIC: # %bb.0: # %entry 10767; LINUX-64-PIC-NEXT: pushq %rax 10768; LINUX-64-PIC-NEXT: callq y@PLT 10769; LINUX-64-PIC-NEXT: callq y@PLT 10770; LINUX-64-PIC-NEXT: callq y@PLT 10771; LINUX-64-PIC-NEXT: callq y@PLT 10772; LINUX-64-PIC-NEXT: callq y@PLT 10773; LINUX-64-PIC-NEXT: callq y@PLT 10774; LINUX-64-PIC-NEXT: callq y@PLT 10775; LINUX-64-PIC-NEXT: popq %rax 10776; LINUX-64-PIC-NEXT: retq 10777; 10778; DARWIN-32-STATIC-LABEL: dcallee: 10779; DARWIN-32-STATIC: ## %bb.0: ## %entry 10780; DARWIN-32-STATIC-NEXT: subl $12, %esp 10781; DARWIN-32-STATIC-NEXT: calll _y 10782; DARWIN-32-STATIC-NEXT: calll _y 10783; DARWIN-32-STATIC-NEXT: calll _y 10784; DARWIN-32-STATIC-NEXT: calll _y 10785; DARWIN-32-STATIC-NEXT: calll _y 10786; DARWIN-32-STATIC-NEXT: calll _y 10787; DARWIN-32-STATIC-NEXT: calll _y 10788; DARWIN-32-STATIC-NEXT: addl $12, %esp 10789; DARWIN-32-STATIC-NEXT: retl 10790; 10791; DARWIN-32-DYNAMIC-LABEL: dcallee: 10792; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10793; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 10794; DARWIN-32-DYNAMIC-NEXT: calll _y 10795; DARWIN-32-DYNAMIC-NEXT: calll _y 10796; DARWIN-32-DYNAMIC-NEXT: calll _y 10797; DARWIN-32-DYNAMIC-NEXT: calll _y 10798; DARWIN-32-DYNAMIC-NEXT: calll _y 10799; DARWIN-32-DYNAMIC-NEXT: calll _y 10800; DARWIN-32-DYNAMIC-NEXT: calll _y 10801; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 10802; DARWIN-32-DYNAMIC-NEXT: retl 10803; 10804; DARWIN-32-PIC-LABEL: dcallee: 10805; DARWIN-32-PIC: ## %bb.0: ## %entry 10806; DARWIN-32-PIC-NEXT: subl $12, %esp 10807; DARWIN-32-PIC-NEXT: calll _y 10808; DARWIN-32-PIC-NEXT: calll _y 10809; DARWIN-32-PIC-NEXT: calll _y 10810; DARWIN-32-PIC-NEXT: calll _y 10811; DARWIN-32-PIC-NEXT: calll _y 10812; DARWIN-32-PIC-NEXT: calll _y 10813; DARWIN-32-PIC-NEXT: calll _y 10814; DARWIN-32-PIC-NEXT: addl $12, %esp 10815; DARWIN-32-PIC-NEXT: retl 10816; 10817; DARWIN-64-STATIC-LABEL: dcallee: 10818; DARWIN-64-STATIC: ## %bb.0: ## %entry 10819; DARWIN-64-STATIC-NEXT: pushq %rax 10820; DARWIN-64-STATIC-NEXT: callq _y 10821; DARWIN-64-STATIC-NEXT: callq _y 10822; DARWIN-64-STATIC-NEXT: callq _y 10823; DARWIN-64-STATIC-NEXT: callq _y 10824; DARWIN-64-STATIC-NEXT: callq _y 10825; DARWIN-64-STATIC-NEXT: callq _y 10826; DARWIN-64-STATIC-NEXT: callq _y 10827; DARWIN-64-STATIC-NEXT: popq %rax 10828; DARWIN-64-STATIC-NEXT: retq 10829; 10830; DARWIN-64-DYNAMIC-LABEL: dcallee: 10831; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10832; DARWIN-64-DYNAMIC-NEXT: pushq %rax 10833; DARWIN-64-DYNAMIC-NEXT: callq _y 10834; DARWIN-64-DYNAMIC-NEXT: callq _y 10835; DARWIN-64-DYNAMIC-NEXT: callq _y 10836; DARWIN-64-DYNAMIC-NEXT: callq _y 10837; DARWIN-64-DYNAMIC-NEXT: callq _y 10838; DARWIN-64-DYNAMIC-NEXT: callq _y 10839; DARWIN-64-DYNAMIC-NEXT: callq _y 10840; DARWIN-64-DYNAMIC-NEXT: popq %rax 10841; DARWIN-64-DYNAMIC-NEXT: retq 10842; 10843; DARWIN-64-PIC-LABEL: dcallee: 10844; DARWIN-64-PIC: ## %bb.0: ## %entry 10845; DARWIN-64-PIC-NEXT: pushq %rax 10846; DARWIN-64-PIC-NEXT: callq _y 10847; DARWIN-64-PIC-NEXT: callq _y 10848; DARWIN-64-PIC-NEXT: callq _y 10849; DARWIN-64-PIC-NEXT: callq _y 10850; DARWIN-64-PIC-NEXT: callq _y 10851; DARWIN-64-PIC-NEXT: callq _y 10852; DARWIN-64-PIC-NEXT: callq _y 10853; DARWIN-64-PIC-NEXT: popq %rax 10854; DARWIN-64-PIC-NEXT: retq 10855 10856entry: 10857 call void @y() nounwind 10858 call void @y() nounwind 10859 call void @y() nounwind 10860 call void @y() nounwind 10861 call void @y() nounwind 10862 call void @y() nounwind 10863 call void @y() nounwind 10864 ret void 10865} 10866 10867declare void @y() 10868 10869define dso_local ptr @address() nounwind { 10870; LINUX-64-STATIC-LABEL: address: 10871; LINUX-64-STATIC: # %bb.0: # %entry 10872; LINUX-64-STATIC-NEXT: movq callee@GOTPCREL(%rip), %rax 10873; LINUX-64-STATIC-NEXT: retq 10874; 10875; LINUX-32-STATIC-LABEL: address: 10876; LINUX-32-STATIC: # %bb.0: # %entry 10877; LINUX-32-STATIC-NEXT: movl $callee, %eax 10878; LINUX-32-STATIC-NEXT: retl 10879; 10880; LINUX-32-PIC-LABEL: address: 10881; LINUX-32-PIC: # %bb.0: # %entry 10882; LINUX-32-PIC-NEXT: calll .L133$pb 10883; LINUX-32-PIC-NEXT: .L133$pb: 10884; LINUX-32-PIC-NEXT: popl %eax 10885; LINUX-32-PIC-NEXT: .Ltmp133: 10886; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp133-.L133$pb), %eax 10887; LINUX-32-PIC-NEXT: movl callee@GOT(%eax), %eax 10888; LINUX-32-PIC-NEXT: retl 10889; 10890; LINUX-64-PIC-LABEL: address: 10891; LINUX-64-PIC: # %bb.0: # %entry 10892; LINUX-64-PIC-NEXT: movq callee@GOTPCREL(%rip), %rax 10893; LINUX-64-PIC-NEXT: retq 10894; 10895; DARWIN-32-STATIC-LABEL: address: 10896; DARWIN-32-STATIC: ## %bb.0: ## %entry 10897; DARWIN-32-STATIC-NEXT: movl $_callee, %eax 10898; DARWIN-32-STATIC-NEXT: retl 10899; 10900; DARWIN-32-DYNAMIC-LABEL: address: 10901; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10902; DARWIN-32-DYNAMIC-NEXT: movl L_callee$non_lazy_ptr, %eax 10903; DARWIN-32-DYNAMIC-NEXT: retl 10904; 10905; DARWIN-32-PIC-LABEL: address: 10906; DARWIN-32-PIC: ## %bb.0: ## %entry 10907; DARWIN-32-PIC-NEXT: calll L133$pb 10908; DARWIN-32-PIC-NEXT: L133$pb: 10909; DARWIN-32-PIC-NEXT: popl %eax 10910; DARWIN-32-PIC-NEXT: movl L_callee$non_lazy_ptr-L133$pb(%eax), %eax 10911; DARWIN-32-PIC-NEXT: retl 10912; 10913; DARWIN-64-STATIC-LABEL: address: 10914; DARWIN-64-STATIC: ## %bb.0: ## %entry 10915; DARWIN-64-STATIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10916; DARWIN-64-STATIC-NEXT: retq 10917; 10918; DARWIN-64-DYNAMIC-LABEL: address: 10919; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10920; DARWIN-64-DYNAMIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10921; DARWIN-64-DYNAMIC-NEXT: retq 10922; 10923; DARWIN-64-PIC-LABEL: address: 10924; DARWIN-64-PIC: ## %bb.0: ## %entry 10925; DARWIN-64-PIC-NEXT: movq _callee@GOTPCREL(%rip), %rax 10926; DARWIN-64-PIC-NEXT: retq 10927 10928entry: 10929 ret ptr @callee 10930} 10931 10932declare void @callee() 10933 10934define dso_local ptr @laddress() nounwind { 10935; LINUX-64-STATIC-LABEL: laddress: 10936; LINUX-64-STATIC: # %bb.0: # %entry 10937; LINUX-64-STATIC-NEXT: movl $lcallee, %eax 10938; LINUX-64-STATIC-NEXT: retq 10939; 10940; LINUX-32-STATIC-LABEL: laddress: 10941; LINUX-32-STATIC: # %bb.0: # %entry 10942; LINUX-32-STATIC-NEXT: movl $lcallee, %eax 10943; LINUX-32-STATIC-NEXT: retl 10944; 10945; LINUX-32-PIC-LABEL: laddress: 10946; LINUX-32-PIC: # %bb.0: # %entry 10947; LINUX-32-PIC-NEXT: calll .L134$pb 10948; LINUX-32-PIC-NEXT: .L134$pb: 10949; LINUX-32-PIC-NEXT: popl %eax 10950; LINUX-32-PIC-NEXT: .Ltmp134: 10951; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp134-.L134$pb), %eax 10952; LINUX-32-PIC-NEXT: leal .Llcallee$local@GOTOFF(%eax), %eax 10953; LINUX-32-PIC-NEXT: retl 10954; 10955; LINUX-64-PIC-LABEL: laddress: 10956; LINUX-64-PIC: # %bb.0: # %entry 10957; LINUX-64-PIC-NEXT: leaq .Llcallee$local(%rip), %rax 10958; LINUX-64-PIC-NEXT: retq 10959; 10960; DARWIN-32-STATIC-LABEL: laddress: 10961; DARWIN-32-STATIC: ## %bb.0: ## %entry 10962; DARWIN-32-STATIC-NEXT: movl $_lcallee, %eax 10963; DARWIN-32-STATIC-NEXT: retl 10964; 10965; DARWIN-32-DYNAMIC-LABEL: laddress: 10966; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 10967; DARWIN-32-DYNAMIC-NEXT: movl $_lcallee, %eax 10968; DARWIN-32-DYNAMIC-NEXT: retl 10969; 10970; DARWIN-32-PIC-LABEL: laddress: 10971; DARWIN-32-PIC: ## %bb.0: ## %entry 10972; DARWIN-32-PIC-NEXT: calll L134$pb 10973; DARWIN-32-PIC-NEXT: L134$pb: 10974; DARWIN-32-PIC-NEXT: popl %eax 10975; DARWIN-32-PIC-NEXT: leal _lcallee-L134$pb(%eax), %eax 10976; DARWIN-32-PIC-NEXT: retl 10977; 10978; DARWIN-64-STATIC-LABEL: laddress: 10979; DARWIN-64-STATIC: ## %bb.0: ## %entry 10980; DARWIN-64-STATIC-NEXT: leaq _lcallee(%rip), %rax 10981; DARWIN-64-STATIC-NEXT: retq 10982; 10983; DARWIN-64-DYNAMIC-LABEL: laddress: 10984; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 10985; DARWIN-64-DYNAMIC-NEXT: leaq _lcallee(%rip), %rax 10986; DARWIN-64-DYNAMIC-NEXT: retq 10987; 10988; DARWIN-64-PIC-LABEL: laddress: 10989; DARWIN-64-PIC: ## %bb.0: ## %entry 10990; DARWIN-64-PIC-NEXT: leaq _lcallee(%rip), %rax 10991; DARWIN-64-PIC-NEXT: retq 10992 10993entry: 10994 ret ptr @lcallee 10995} 10996 10997define dso_local ptr @daddress() nounwind { 10998; LINUX-64-STATIC-LABEL: daddress: 10999; LINUX-64-STATIC: # %bb.0: # %entry 11000; LINUX-64-STATIC-NEXT: movl $dcallee, %eax 11001; LINUX-64-STATIC-NEXT: retq 11002; 11003; LINUX-32-STATIC-LABEL: daddress: 11004; LINUX-32-STATIC: # %bb.0: # %entry 11005; LINUX-32-STATIC-NEXT: movl $dcallee, %eax 11006; LINUX-32-STATIC-NEXT: retl 11007; 11008; LINUX-32-PIC-LABEL: daddress: 11009; LINUX-32-PIC: # %bb.0: # %entry 11010; LINUX-32-PIC-NEXT: calll .L135$pb 11011; LINUX-32-PIC-NEXT: .L135$pb: 11012; LINUX-32-PIC-NEXT: popl %eax 11013; LINUX-32-PIC-NEXT: .Ltmp135: 11014; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp135-.L135$pb), %eax 11015; LINUX-32-PIC-NEXT: leal dcallee@GOTOFF(%eax), %eax 11016; LINUX-32-PIC-NEXT: retl 11017; 11018; LINUX-64-PIC-LABEL: daddress: 11019; LINUX-64-PIC: # %bb.0: # %entry 11020; LINUX-64-PIC-NEXT: leaq dcallee(%rip), %rax 11021; LINUX-64-PIC-NEXT: retq 11022; 11023; DARWIN-32-STATIC-LABEL: daddress: 11024; DARWIN-32-STATIC: ## %bb.0: ## %entry 11025; DARWIN-32-STATIC-NEXT: movl $_dcallee, %eax 11026; DARWIN-32-STATIC-NEXT: retl 11027; 11028; DARWIN-32-DYNAMIC-LABEL: daddress: 11029; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11030; DARWIN-32-DYNAMIC-NEXT: movl $_dcallee, %eax 11031; DARWIN-32-DYNAMIC-NEXT: retl 11032; 11033; DARWIN-32-PIC-LABEL: daddress: 11034; DARWIN-32-PIC: ## %bb.0: ## %entry 11035; DARWIN-32-PIC-NEXT: calll L135$pb 11036; DARWIN-32-PIC-NEXT: L135$pb: 11037; DARWIN-32-PIC-NEXT: popl %eax 11038; DARWIN-32-PIC-NEXT: leal _dcallee-L135$pb(%eax), %eax 11039; DARWIN-32-PIC-NEXT: retl 11040; 11041; DARWIN-64-STATIC-LABEL: daddress: 11042; DARWIN-64-STATIC: ## %bb.0: ## %entry 11043; DARWIN-64-STATIC-NEXT: leaq _dcallee(%rip), %rax 11044; DARWIN-64-STATIC-NEXT: retq 11045; 11046; DARWIN-64-DYNAMIC-LABEL: daddress: 11047; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11048; DARWIN-64-DYNAMIC-NEXT: leaq _dcallee(%rip), %rax 11049; DARWIN-64-DYNAMIC-NEXT: retq 11050; 11051; DARWIN-64-PIC-LABEL: daddress: 11052; DARWIN-64-PIC: ## %bb.0: ## %entry 11053; DARWIN-64-PIC-NEXT: leaq _dcallee(%rip), %rax 11054; DARWIN-64-PIC-NEXT: retq 11055 11056entry: 11057 ret ptr @dcallee 11058} 11059 11060define dso_local void @caller() nounwind { 11061; LINUX-64-STATIC-LABEL: caller: 11062; LINUX-64-STATIC: # %bb.0: # %entry 11063; LINUX-64-STATIC-NEXT: pushq %rax 11064; LINUX-64-STATIC-NEXT: callq callee@PLT 11065; LINUX-64-STATIC-NEXT: callq callee@PLT 11066; LINUX-64-STATIC-NEXT: popq %rax 11067; LINUX-64-STATIC-NEXT: retq 11068; 11069; LINUX-32-STATIC-LABEL: caller: 11070; LINUX-32-STATIC: # %bb.0: # %entry 11071; LINUX-32-STATIC-NEXT: subl $12, %esp 11072; LINUX-32-STATIC-NEXT: calll callee@PLT 11073; LINUX-32-STATIC-NEXT: calll callee@PLT 11074; LINUX-32-STATIC-NEXT: addl $12, %esp 11075; LINUX-32-STATIC-NEXT: retl 11076; 11077; LINUX-32-PIC-LABEL: caller: 11078; LINUX-32-PIC: # %bb.0: # %entry 11079; LINUX-32-PIC-NEXT: pushl %ebx 11080; LINUX-32-PIC-NEXT: subl $8, %esp 11081; LINUX-32-PIC-NEXT: calll .L136$pb 11082; LINUX-32-PIC-NEXT: .L136$pb: 11083; LINUX-32-PIC-NEXT: popl %ebx 11084; LINUX-32-PIC-NEXT: .Ltmp136: 11085; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp136-.L136$pb), %ebx 11086; LINUX-32-PIC-NEXT: calll callee@PLT 11087; LINUX-32-PIC-NEXT: calll callee@PLT 11088; LINUX-32-PIC-NEXT: addl $8, %esp 11089; LINUX-32-PIC-NEXT: popl %ebx 11090; LINUX-32-PIC-NEXT: retl 11091; 11092; LINUX-64-PIC-LABEL: caller: 11093; LINUX-64-PIC: # %bb.0: # %entry 11094; LINUX-64-PIC-NEXT: pushq %rax 11095; LINUX-64-PIC-NEXT: callq callee@PLT 11096; LINUX-64-PIC-NEXT: callq callee@PLT 11097; LINUX-64-PIC-NEXT: popq %rax 11098; LINUX-64-PIC-NEXT: retq 11099; 11100; DARWIN-32-STATIC-LABEL: caller: 11101; DARWIN-32-STATIC: ## %bb.0: ## %entry 11102; DARWIN-32-STATIC-NEXT: subl $12, %esp 11103; DARWIN-32-STATIC-NEXT: calll _callee 11104; DARWIN-32-STATIC-NEXT: calll _callee 11105; DARWIN-32-STATIC-NEXT: addl $12, %esp 11106; DARWIN-32-STATIC-NEXT: retl 11107; 11108; DARWIN-32-DYNAMIC-LABEL: caller: 11109; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11110; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11111; DARWIN-32-DYNAMIC-NEXT: calll _callee 11112; DARWIN-32-DYNAMIC-NEXT: calll _callee 11113; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11114; DARWIN-32-DYNAMIC-NEXT: retl 11115; 11116; DARWIN-32-PIC-LABEL: caller: 11117; DARWIN-32-PIC: ## %bb.0: ## %entry 11118; DARWIN-32-PIC-NEXT: subl $12, %esp 11119; DARWIN-32-PIC-NEXT: calll _callee 11120; DARWIN-32-PIC-NEXT: calll _callee 11121; DARWIN-32-PIC-NEXT: addl $12, %esp 11122; DARWIN-32-PIC-NEXT: retl 11123; 11124; DARWIN-64-STATIC-LABEL: caller: 11125; DARWIN-64-STATIC: ## %bb.0: ## %entry 11126; DARWIN-64-STATIC-NEXT: pushq %rax 11127; DARWIN-64-STATIC-NEXT: callq _callee 11128; DARWIN-64-STATIC-NEXT: callq _callee 11129; DARWIN-64-STATIC-NEXT: popq %rax 11130; DARWIN-64-STATIC-NEXT: retq 11131; 11132; DARWIN-64-DYNAMIC-LABEL: caller: 11133; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11134; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11135; DARWIN-64-DYNAMIC-NEXT: callq _callee 11136; DARWIN-64-DYNAMIC-NEXT: callq _callee 11137; DARWIN-64-DYNAMIC-NEXT: popq %rax 11138; DARWIN-64-DYNAMIC-NEXT: retq 11139; 11140; DARWIN-64-PIC-LABEL: caller: 11141; DARWIN-64-PIC: ## %bb.0: ## %entry 11142; DARWIN-64-PIC-NEXT: pushq %rax 11143; DARWIN-64-PIC-NEXT: callq _callee 11144; DARWIN-64-PIC-NEXT: callq _callee 11145; DARWIN-64-PIC-NEXT: popq %rax 11146; DARWIN-64-PIC-NEXT: retq 11147 11148entry: 11149 call void @callee() nounwind 11150 call void @callee() nounwind 11151 ret void 11152} 11153 11154define dso_local void @dcaller() nounwind { 11155; LINUX-64-STATIC-LABEL: dcaller: 11156; LINUX-64-STATIC: # %bb.0: # %entry 11157; LINUX-64-STATIC-NEXT: pushq %rax 11158; LINUX-64-STATIC-NEXT: callq dcallee 11159; LINUX-64-STATIC-NEXT: callq dcallee 11160; LINUX-64-STATIC-NEXT: popq %rax 11161; LINUX-64-STATIC-NEXT: retq 11162; 11163; LINUX-32-STATIC-LABEL: dcaller: 11164; LINUX-32-STATIC: # %bb.0: # %entry 11165; LINUX-32-STATIC-NEXT: subl $12, %esp 11166; LINUX-32-STATIC-NEXT: calll dcallee 11167; LINUX-32-STATIC-NEXT: calll dcallee 11168; LINUX-32-STATIC-NEXT: addl $12, %esp 11169; LINUX-32-STATIC-NEXT: retl 11170; 11171; LINUX-32-PIC-LABEL: dcaller: 11172; LINUX-32-PIC: # %bb.0: # %entry 11173; LINUX-32-PIC-NEXT: pushl %ebx 11174; LINUX-32-PIC-NEXT: subl $8, %esp 11175; LINUX-32-PIC-NEXT: calll .L137$pb 11176; LINUX-32-PIC-NEXT: .L137$pb: 11177; LINUX-32-PIC-NEXT: popl %ebx 11178; LINUX-32-PIC-NEXT: .Ltmp137: 11179; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp137-.L137$pb), %ebx 11180; LINUX-32-PIC-NEXT: calll dcallee 11181; LINUX-32-PIC-NEXT: calll dcallee 11182; LINUX-32-PIC-NEXT: addl $8, %esp 11183; LINUX-32-PIC-NEXT: popl %ebx 11184; LINUX-32-PIC-NEXT: retl 11185; 11186; LINUX-64-PIC-LABEL: dcaller: 11187; LINUX-64-PIC: # %bb.0: # %entry 11188; LINUX-64-PIC-NEXT: pushq %rax 11189; LINUX-64-PIC-NEXT: callq dcallee 11190; LINUX-64-PIC-NEXT: callq dcallee 11191; LINUX-64-PIC-NEXT: popq %rax 11192; LINUX-64-PIC-NEXT: retq 11193; 11194; DARWIN-32-STATIC-LABEL: dcaller: 11195; DARWIN-32-STATIC: ## %bb.0: ## %entry 11196; DARWIN-32-STATIC-NEXT: subl $12, %esp 11197; DARWIN-32-STATIC-NEXT: calll _dcallee 11198; DARWIN-32-STATIC-NEXT: calll _dcallee 11199; DARWIN-32-STATIC-NEXT: addl $12, %esp 11200; DARWIN-32-STATIC-NEXT: retl 11201; 11202; DARWIN-32-DYNAMIC-LABEL: dcaller: 11203; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11204; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11205; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11206; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11207; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11208; DARWIN-32-DYNAMIC-NEXT: retl 11209; 11210; DARWIN-32-PIC-LABEL: dcaller: 11211; DARWIN-32-PIC: ## %bb.0: ## %entry 11212; DARWIN-32-PIC-NEXT: subl $12, %esp 11213; DARWIN-32-PIC-NEXT: calll _dcallee 11214; DARWIN-32-PIC-NEXT: calll _dcallee 11215; DARWIN-32-PIC-NEXT: addl $12, %esp 11216; DARWIN-32-PIC-NEXT: retl 11217; 11218; DARWIN-64-STATIC-LABEL: dcaller: 11219; DARWIN-64-STATIC: ## %bb.0: ## %entry 11220; DARWIN-64-STATIC-NEXT: pushq %rax 11221; DARWIN-64-STATIC-NEXT: callq _dcallee 11222; DARWIN-64-STATIC-NEXT: callq _dcallee 11223; DARWIN-64-STATIC-NEXT: popq %rax 11224; DARWIN-64-STATIC-NEXT: retq 11225; 11226; DARWIN-64-DYNAMIC-LABEL: dcaller: 11227; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11228; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11229; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11230; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11231; DARWIN-64-DYNAMIC-NEXT: popq %rax 11232; DARWIN-64-DYNAMIC-NEXT: retq 11233; 11234; DARWIN-64-PIC-LABEL: dcaller: 11235; DARWIN-64-PIC: ## %bb.0: ## %entry 11236; DARWIN-64-PIC-NEXT: pushq %rax 11237; DARWIN-64-PIC-NEXT: callq _dcallee 11238; DARWIN-64-PIC-NEXT: callq _dcallee 11239; DARWIN-64-PIC-NEXT: popq %rax 11240; DARWIN-64-PIC-NEXT: retq 11241 11242entry: 11243 call void @dcallee() nounwind 11244 call void @dcallee() nounwind 11245 ret void 11246} 11247 11248define dso_local void @lcaller() nounwind { 11249; LINUX-64-STATIC-LABEL: lcaller: 11250; LINUX-64-STATIC: # %bb.0: # %entry 11251; LINUX-64-STATIC-NEXT: pushq %rax 11252; LINUX-64-STATIC-NEXT: callq lcallee 11253; LINUX-64-STATIC-NEXT: callq lcallee 11254; LINUX-64-STATIC-NEXT: popq %rax 11255; LINUX-64-STATIC-NEXT: retq 11256; 11257; LINUX-32-STATIC-LABEL: lcaller: 11258; LINUX-32-STATIC: # %bb.0: # %entry 11259; LINUX-32-STATIC-NEXT: subl $12, %esp 11260; LINUX-32-STATIC-NEXT: calll lcallee 11261; LINUX-32-STATIC-NEXT: calll lcallee 11262; LINUX-32-STATIC-NEXT: addl $12, %esp 11263; LINUX-32-STATIC-NEXT: retl 11264; 11265; LINUX-32-PIC-LABEL: lcaller: 11266; LINUX-32-PIC: # %bb.0: # %entry 11267; LINUX-32-PIC-NEXT: pushl %ebx 11268; LINUX-32-PIC-NEXT: subl $8, %esp 11269; LINUX-32-PIC-NEXT: calll .L138$pb 11270; LINUX-32-PIC-NEXT: .L138$pb: 11271; LINUX-32-PIC-NEXT: popl %ebx 11272; LINUX-32-PIC-NEXT: .Ltmp138: 11273; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp138-.L138$pb), %ebx 11274; LINUX-32-PIC-NEXT: calll .Llcallee$local 11275; LINUX-32-PIC-NEXT: calll .Llcallee$local 11276; LINUX-32-PIC-NEXT: addl $8, %esp 11277; LINUX-32-PIC-NEXT: popl %ebx 11278; LINUX-32-PIC-NEXT: retl 11279; 11280; LINUX-64-PIC-LABEL: lcaller: 11281; LINUX-64-PIC: # %bb.0: # %entry 11282; LINUX-64-PIC-NEXT: pushq %rax 11283; LINUX-64-PIC-NEXT: callq .Llcallee$local 11284; LINUX-64-PIC-NEXT: callq .Llcallee$local 11285; LINUX-64-PIC-NEXT: popq %rax 11286; LINUX-64-PIC-NEXT: retq 11287; 11288; DARWIN-32-STATIC-LABEL: lcaller: 11289; DARWIN-32-STATIC: ## %bb.0: ## %entry 11290; DARWIN-32-STATIC-NEXT: subl $12, %esp 11291; DARWIN-32-STATIC-NEXT: calll _lcallee 11292; DARWIN-32-STATIC-NEXT: calll _lcallee 11293; DARWIN-32-STATIC-NEXT: addl $12, %esp 11294; DARWIN-32-STATIC-NEXT: retl 11295; 11296; DARWIN-32-DYNAMIC-LABEL: lcaller: 11297; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11298; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11299; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11300; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11301; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11302; DARWIN-32-DYNAMIC-NEXT: retl 11303; 11304; DARWIN-32-PIC-LABEL: lcaller: 11305; DARWIN-32-PIC: ## %bb.0: ## %entry 11306; DARWIN-32-PIC-NEXT: subl $12, %esp 11307; DARWIN-32-PIC-NEXT: calll _lcallee 11308; DARWIN-32-PIC-NEXT: calll _lcallee 11309; DARWIN-32-PIC-NEXT: addl $12, %esp 11310; DARWIN-32-PIC-NEXT: retl 11311; 11312; DARWIN-64-STATIC-LABEL: lcaller: 11313; DARWIN-64-STATIC: ## %bb.0: ## %entry 11314; DARWIN-64-STATIC-NEXT: pushq %rax 11315; DARWIN-64-STATIC-NEXT: callq _lcallee 11316; DARWIN-64-STATIC-NEXT: callq _lcallee 11317; DARWIN-64-STATIC-NEXT: popq %rax 11318; DARWIN-64-STATIC-NEXT: retq 11319; 11320; DARWIN-64-DYNAMIC-LABEL: lcaller: 11321; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11322; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11323; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11324; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11325; DARWIN-64-DYNAMIC-NEXT: popq %rax 11326; DARWIN-64-DYNAMIC-NEXT: retq 11327; 11328; DARWIN-64-PIC-LABEL: lcaller: 11329; DARWIN-64-PIC: ## %bb.0: ## %entry 11330; DARWIN-64-PIC-NEXT: pushq %rax 11331; DARWIN-64-PIC-NEXT: callq _lcallee 11332; DARWIN-64-PIC-NEXT: callq _lcallee 11333; DARWIN-64-PIC-NEXT: popq %rax 11334; DARWIN-64-PIC-NEXT: retq 11335 11336entry: 11337 call void @lcallee() nounwind 11338 call void @lcallee() nounwind 11339 ret void 11340} 11341 11342define dso_local void @tailcaller() nounwind { 11343; LINUX-64-STATIC-LABEL: tailcaller: 11344; LINUX-64-STATIC: # %bb.0: # %entry 11345; LINUX-64-STATIC-NEXT: pushq %rax 11346; LINUX-64-STATIC-NEXT: callq callee@PLT 11347; LINUX-64-STATIC-NEXT: popq %rax 11348; LINUX-64-STATIC-NEXT: retq 11349; 11350; LINUX-32-STATIC-LABEL: tailcaller: 11351; LINUX-32-STATIC: # %bb.0: # %entry 11352; LINUX-32-STATIC-NEXT: subl $12, %esp 11353; LINUX-32-STATIC-NEXT: calll callee@PLT 11354; LINUX-32-STATIC-NEXT: addl $12, %esp 11355; LINUX-32-STATIC-NEXT: retl 11356; 11357; LINUX-32-PIC-LABEL: tailcaller: 11358; LINUX-32-PIC: # %bb.0: # %entry 11359; LINUX-32-PIC-NEXT: pushl %ebx 11360; LINUX-32-PIC-NEXT: subl $8, %esp 11361; LINUX-32-PIC-NEXT: calll .L139$pb 11362; LINUX-32-PIC-NEXT: .L139$pb: 11363; LINUX-32-PIC-NEXT: popl %ebx 11364; LINUX-32-PIC-NEXT: .Ltmp139: 11365; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp139-.L139$pb), %ebx 11366; LINUX-32-PIC-NEXT: calll callee@PLT 11367; LINUX-32-PIC-NEXT: addl $8, %esp 11368; LINUX-32-PIC-NEXT: popl %ebx 11369; LINUX-32-PIC-NEXT: retl 11370; 11371; LINUX-64-PIC-LABEL: tailcaller: 11372; LINUX-64-PIC: # %bb.0: # %entry 11373; LINUX-64-PIC-NEXT: pushq %rax 11374; LINUX-64-PIC-NEXT: callq callee@PLT 11375; LINUX-64-PIC-NEXT: popq %rax 11376; LINUX-64-PIC-NEXT: retq 11377; 11378; DARWIN-32-STATIC-LABEL: tailcaller: 11379; DARWIN-32-STATIC: ## %bb.0: ## %entry 11380; DARWIN-32-STATIC-NEXT: subl $12, %esp 11381; DARWIN-32-STATIC-NEXT: calll _callee 11382; DARWIN-32-STATIC-NEXT: addl $12, %esp 11383; DARWIN-32-STATIC-NEXT: retl 11384; 11385; DARWIN-32-DYNAMIC-LABEL: tailcaller: 11386; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11387; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11388; DARWIN-32-DYNAMIC-NEXT: calll _callee 11389; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11390; DARWIN-32-DYNAMIC-NEXT: retl 11391; 11392; DARWIN-32-PIC-LABEL: tailcaller: 11393; DARWIN-32-PIC: ## %bb.0: ## %entry 11394; DARWIN-32-PIC-NEXT: subl $12, %esp 11395; DARWIN-32-PIC-NEXT: calll _callee 11396; DARWIN-32-PIC-NEXT: addl $12, %esp 11397; DARWIN-32-PIC-NEXT: retl 11398; 11399; DARWIN-64-STATIC-LABEL: tailcaller: 11400; DARWIN-64-STATIC: ## %bb.0: ## %entry 11401; DARWIN-64-STATIC-NEXT: pushq %rax 11402; DARWIN-64-STATIC-NEXT: callq _callee 11403; DARWIN-64-STATIC-NEXT: popq %rax 11404; DARWIN-64-STATIC-NEXT: retq 11405; 11406; DARWIN-64-DYNAMIC-LABEL: tailcaller: 11407; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11408; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11409; DARWIN-64-DYNAMIC-NEXT: callq _callee 11410; DARWIN-64-DYNAMIC-NEXT: popq %rax 11411; DARWIN-64-DYNAMIC-NEXT: retq 11412; 11413; DARWIN-64-PIC-LABEL: tailcaller: 11414; DARWIN-64-PIC: ## %bb.0: ## %entry 11415; DARWIN-64-PIC-NEXT: pushq %rax 11416; DARWIN-64-PIC-NEXT: callq _callee 11417; DARWIN-64-PIC-NEXT: popq %rax 11418; DARWIN-64-PIC-NEXT: retq 11419 11420entry: 11421 call void @callee() nounwind 11422 ret void 11423} 11424 11425define dso_local void @dtailcaller() nounwind { 11426; LINUX-64-STATIC-LABEL: dtailcaller: 11427; LINUX-64-STATIC: # %bb.0: # %entry 11428; LINUX-64-STATIC-NEXT: pushq %rax 11429; LINUX-64-STATIC-NEXT: callq dcallee 11430; LINUX-64-STATIC-NEXT: popq %rax 11431; LINUX-64-STATIC-NEXT: retq 11432; 11433; LINUX-32-STATIC-LABEL: dtailcaller: 11434; LINUX-32-STATIC: # %bb.0: # %entry 11435; LINUX-32-STATIC-NEXT: subl $12, %esp 11436; LINUX-32-STATIC-NEXT: calll dcallee 11437; LINUX-32-STATIC-NEXT: addl $12, %esp 11438; LINUX-32-STATIC-NEXT: retl 11439; 11440; LINUX-32-PIC-LABEL: dtailcaller: 11441; LINUX-32-PIC: # %bb.0: # %entry 11442; LINUX-32-PIC-NEXT: pushl %ebx 11443; LINUX-32-PIC-NEXT: subl $8, %esp 11444; LINUX-32-PIC-NEXT: calll .L140$pb 11445; LINUX-32-PIC-NEXT: .L140$pb: 11446; LINUX-32-PIC-NEXT: popl %ebx 11447; LINUX-32-PIC-NEXT: .Ltmp140: 11448; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp140-.L140$pb), %ebx 11449; LINUX-32-PIC-NEXT: calll dcallee 11450; LINUX-32-PIC-NEXT: addl $8, %esp 11451; LINUX-32-PIC-NEXT: popl %ebx 11452; LINUX-32-PIC-NEXT: retl 11453; 11454; LINUX-64-PIC-LABEL: dtailcaller: 11455; LINUX-64-PIC: # %bb.0: # %entry 11456; LINUX-64-PIC-NEXT: pushq %rax 11457; LINUX-64-PIC-NEXT: callq dcallee 11458; LINUX-64-PIC-NEXT: popq %rax 11459; LINUX-64-PIC-NEXT: retq 11460; 11461; DARWIN-32-STATIC-LABEL: dtailcaller: 11462; DARWIN-32-STATIC: ## %bb.0: ## %entry 11463; DARWIN-32-STATIC-NEXT: subl $12, %esp 11464; DARWIN-32-STATIC-NEXT: calll _dcallee 11465; DARWIN-32-STATIC-NEXT: addl $12, %esp 11466; DARWIN-32-STATIC-NEXT: retl 11467; 11468; DARWIN-32-DYNAMIC-LABEL: dtailcaller: 11469; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11470; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11471; DARWIN-32-DYNAMIC-NEXT: calll _dcallee 11472; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11473; DARWIN-32-DYNAMIC-NEXT: retl 11474; 11475; DARWIN-32-PIC-LABEL: dtailcaller: 11476; DARWIN-32-PIC: ## %bb.0: ## %entry 11477; DARWIN-32-PIC-NEXT: subl $12, %esp 11478; DARWIN-32-PIC-NEXT: calll _dcallee 11479; DARWIN-32-PIC-NEXT: addl $12, %esp 11480; DARWIN-32-PIC-NEXT: retl 11481; 11482; DARWIN-64-STATIC-LABEL: dtailcaller: 11483; DARWIN-64-STATIC: ## %bb.0: ## %entry 11484; DARWIN-64-STATIC-NEXT: pushq %rax 11485; DARWIN-64-STATIC-NEXT: callq _dcallee 11486; DARWIN-64-STATIC-NEXT: popq %rax 11487; DARWIN-64-STATIC-NEXT: retq 11488; 11489; DARWIN-64-DYNAMIC-LABEL: dtailcaller: 11490; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11491; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11492; DARWIN-64-DYNAMIC-NEXT: callq _dcallee 11493; DARWIN-64-DYNAMIC-NEXT: popq %rax 11494; DARWIN-64-DYNAMIC-NEXT: retq 11495; 11496; DARWIN-64-PIC-LABEL: dtailcaller: 11497; DARWIN-64-PIC: ## %bb.0: ## %entry 11498; DARWIN-64-PIC-NEXT: pushq %rax 11499; DARWIN-64-PIC-NEXT: callq _dcallee 11500; DARWIN-64-PIC-NEXT: popq %rax 11501; DARWIN-64-PIC-NEXT: retq 11502 11503entry: 11504 call void @dcallee() nounwind 11505 ret void 11506} 11507 11508define dso_local void @ltailcaller() nounwind { 11509; LINUX-64-STATIC-LABEL: ltailcaller: 11510; LINUX-64-STATIC: # %bb.0: # %entry 11511; LINUX-64-STATIC-NEXT: pushq %rax 11512; LINUX-64-STATIC-NEXT: callq lcallee 11513; LINUX-64-STATIC-NEXT: popq %rax 11514; LINUX-64-STATIC-NEXT: retq 11515; 11516; LINUX-32-STATIC-LABEL: ltailcaller: 11517; LINUX-32-STATIC: # %bb.0: # %entry 11518; LINUX-32-STATIC-NEXT: subl $12, %esp 11519; LINUX-32-STATIC-NEXT: calll lcallee 11520; LINUX-32-STATIC-NEXT: addl $12, %esp 11521; LINUX-32-STATIC-NEXT: retl 11522; 11523; LINUX-32-PIC-LABEL: ltailcaller: 11524; LINUX-32-PIC: # %bb.0: # %entry 11525; LINUX-32-PIC-NEXT: pushl %ebx 11526; LINUX-32-PIC-NEXT: subl $8, %esp 11527; LINUX-32-PIC-NEXT: calll .L141$pb 11528; LINUX-32-PIC-NEXT: .L141$pb: 11529; LINUX-32-PIC-NEXT: popl %ebx 11530; LINUX-32-PIC-NEXT: .Ltmp141: 11531; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp141-.L141$pb), %ebx 11532; LINUX-32-PIC-NEXT: calll .Llcallee$local 11533; LINUX-32-PIC-NEXT: addl $8, %esp 11534; LINUX-32-PIC-NEXT: popl %ebx 11535; LINUX-32-PIC-NEXT: retl 11536; 11537; LINUX-64-PIC-LABEL: ltailcaller: 11538; LINUX-64-PIC: # %bb.0: # %entry 11539; LINUX-64-PIC-NEXT: pushq %rax 11540; LINUX-64-PIC-NEXT: callq .Llcallee$local 11541; LINUX-64-PIC-NEXT: popq %rax 11542; LINUX-64-PIC-NEXT: retq 11543; 11544; DARWIN-32-STATIC-LABEL: ltailcaller: 11545; DARWIN-32-STATIC: ## %bb.0: ## %entry 11546; DARWIN-32-STATIC-NEXT: subl $12, %esp 11547; DARWIN-32-STATIC-NEXT: calll _lcallee 11548; DARWIN-32-STATIC-NEXT: addl $12, %esp 11549; DARWIN-32-STATIC-NEXT: retl 11550; 11551; DARWIN-32-DYNAMIC-LABEL: ltailcaller: 11552; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11553; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11554; DARWIN-32-DYNAMIC-NEXT: calll _lcallee 11555; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11556; DARWIN-32-DYNAMIC-NEXT: retl 11557; 11558; DARWIN-32-PIC-LABEL: ltailcaller: 11559; DARWIN-32-PIC: ## %bb.0: ## %entry 11560; DARWIN-32-PIC-NEXT: subl $12, %esp 11561; DARWIN-32-PIC-NEXT: calll _lcallee 11562; DARWIN-32-PIC-NEXT: addl $12, %esp 11563; DARWIN-32-PIC-NEXT: retl 11564; 11565; DARWIN-64-STATIC-LABEL: ltailcaller: 11566; DARWIN-64-STATIC: ## %bb.0: ## %entry 11567; DARWIN-64-STATIC-NEXT: pushq %rax 11568; DARWIN-64-STATIC-NEXT: callq _lcallee 11569; DARWIN-64-STATIC-NEXT: popq %rax 11570; DARWIN-64-STATIC-NEXT: retq 11571; 11572; DARWIN-64-DYNAMIC-LABEL: ltailcaller: 11573; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11574; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11575; DARWIN-64-DYNAMIC-NEXT: callq _lcallee 11576; DARWIN-64-DYNAMIC-NEXT: popq %rax 11577; DARWIN-64-DYNAMIC-NEXT: retq 11578; 11579; DARWIN-64-PIC-LABEL: ltailcaller: 11580; DARWIN-64-PIC: ## %bb.0: ## %entry 11581; DARWIN-64-PIC-NEXT: pushq %rax 11582; DARWIN-64-PIC-NEXT: callq _lcallee 11583; DARWIN-64-PIC-NEXT: popq %rax 11584; DARWIN-64-PIC-NEXT: retq 11585 11586entry: 11587 call void @lcallee() nounwind 11588 ret void 11589} 11590 11591define dso_local void @icaller() nounwind { 11592; LINUX-64-STATIC-LABEL: icaller: 11593; LINUX-64-STATIC: # %bb.0: # %entry 11594; LINUX-64-STATIC-NEXT: pushq %rbx 11595; LINUX-64-STATIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11596; LINUX-64-STATIC-NEXT: callq *(%rbx) 11597; LINUX-64-STATIC-NEXT: callq *(%rbx) 11598; LINUX-64-STATIC-NEXT: popq %rbx 11599; LINUX-64-STATIC-NEXT: retq 11600; 11601; LINUX-32-STATIC-LABEL: icaller: 11602; LINUX-32-STATIC: # %bb.0: # %entry 11603; LINUX-32-STATIC-NEXT: subl $12, %esp 11604; LINUX-32-STATIC-NEXT: calll *ifunc 11605; LINUX-32-STATIC-NEXT: calll *ifunc 11606; LINUX-32-STATIC-NEXT: addl $12, %esp 11607; LINUX-32-STATIC-NEXT: retl 11608; 11609; LINUX-32-PIC-LABEL: icaller: 11610; LINUX-32-PIC: # %bb.0: # %entry 11611; LINUX-32-PIC-NEXT: pushl %ebx 11612; LINUX-32-PIC-NEXT: pushl %esi 11613; LINUX-32-PIC-NEXT: pushl %eax 11614; LINUX-32-PIC-NEXT: calll .L142$pb 11615; LINUX-32-PIC-NEXT: .L142$pb: 11616; LINUX-32-PIC-NEXT: popl %ebx 11617; LINUX-32-PIC-NEXT: .Ltmp142: 11618; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp142-.L142$pb), %ebx 11619; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi 11620; LINUX-32-PIC-NEXT: calll *(%esi) 11621; LINUX-32-PIC-NEXT: calll *(%esi) 11622; LINUX-32-PIC-NEXT: addl $4, %esp 11623; LINUX-32-PIC-NEXT: popl %esi 11624; LINUX-32-PIC-NEXT: popl %ebx 11625; LINUX-32-PIC-NEXT: retl 11626; 11627; LINUX-64-PIC-LABEL: icaller: 11628; LINUX-64-PIC: # %bb.0: # %entry 11629; LINUX-64-PIC-NEXT: pushq %rbx 11630; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11631; LINUX-64-PIC-NEXT: callq *(%rbx) 11632; LINUX-64-PIC-NEXT: callq *(%rbx) 11633; LINUX-64-PIC-NEXT: popq %rbx 11634; LINUX-64-PIC-NEXT: retq 11635; 11636; DARWIN-32-STATIC-LABEL: icaller: 11637; DARWIN-32-STATIC: ## %bb.0: ## %entry 11638; DARWIN-32-STATIC-NEXT: subl $12, %esp 11639; DARWIN-32-STATIC-NEXT: calll *_ifunc 11640; DARWIN-32-STATIC-NEXT: calll *_ifunc 11641; DARWIN-32-STATIC-NEXT: addl $12, %esp 11642; DARWIN-32-STATIC-NEXT: retl 11643; 11644; DARWIN-32-DYNAMIC-LABEL: icaller: 11645; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11646; DARWIN-32-DYNAMIC-NEXT: pushl %esi 11647; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp 11648; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi 11649; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11650; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11651; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp 11652; DARWIN-32-DYNAMIC-NEXT: popl %esi 11653; DARWIN-32-DYNAMIC-NEXT: retl 11654; 11655; DARWIN-32-PIC-LABEL: icaller: 11656; DARWIN-32-PIC: ## %bb.0: ## %entry 11657; DARWIN-32-PIC-NEXT: pushl %esi 11658; DARWIN-32-PIC-NEXT: subl $8, %esp 11659; DARWIN-32-PIC-NEXT: calll L142$pb 11660; DARWIN-32-PIC-NEXT: L142$pb: 11661; DARWIN-32-PIC-NEXT: popl %eax 11662; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L142$pb(%eax), %esi 11663; DARWIN-32-PIC-NEXT: calll *(%esi) 11664; DARWIN-32-PIC-NEXT: calll *(%esi) 11665; DARWIN-32-PIC-NEXT: addl $8, %esp 11666; DARWIN-32-PIC-NEXT: popl %esi 11667; DARWIN-32-PIC-NEXT: retl 11668; 11669; DARWIN-64-STATIC-LABEL: icaller: 11670; DARWIN-64-STATIC: ## %bb.0: ## %entry 11671; DARWIN-64-STATIC-NEXT: pushq %rbx 11672; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11673; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11674; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11675; DARWIN-64-STATIC-NEXT: popq %rbx 11676; DARWIN-64-STATIC-NEXT: retq 11677; 11678; DARWIN-64-DYNAMIC-LABEL: icaller: 11679; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11680; DARWIN-64-DYNAMIC-NEXT: pushq %rbx 11681; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11682; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11683; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11684; DARWIN-64-DYNAMIC-NEXT: popq %rbx 11685; DARWIN-64-DYNAMIC-NEXT: retq 11686; 11687; DARWIN-64-PIC-LABEL: icaller: 11688; DARWIN-64-PIC: ## %bb.0: ## %entry 11689; DARWIN-64-PIC-NEXT: pushq %rbx 11690; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11691; DARWIN-64-PIC-NEXT: callq *(%rbx) 11692; DARWIN-64-PIC-NEXT: callq *(%rbx) 11693; DARWIN-64-PIC-NEXT: popq %rbx 11694; DARWIN-64-PIC-NEXT: retq 11695 11696entry: 11697 %0 = load ptr, ptr @ifunc, align 8 11698 call void %0() nounwind 11699 %1 = load ptr, ptr @ifunc, align 8 11700 call void %1() nounwind 11701 ret void 11702} 11703 11704define dso_local void @dicaller() nounwind { 11705; LINUX-64-STATIC-LABEL: dicaller: 11706; LINUX-64-STATIC: # %bb.0: # %entry 11707; LINUX-64-STATIC-NEXT: pushq %rax 11708; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 11709; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 11710; LINUX-64-STATIC-NEXT: popq %rax 11711; LINUX-64-STATIC-NEXT: retq 11712; 11713; LINUX-32-STATIC-LABEL: dicaller: 11714; LINUX-32-STATIC: # %bb.0: # %entry 11715; LINUX-32-STATIC-NEXT: subl $12, %esp 11716; LINUX-32-STATIC-NEXT: calll *difunc 11717; LINUX-32-STATIC-NEXT: calll *difunc 11718; LINUX-32-STATIC-NEXT: addl $12, %esp 11719; LINUX-32-STATIC-NEXT: retl 11720; 11721; LINUX-32-PIC-LABEL: dicaller: 11722; LINUX-32-PIC: # %bb.0: # %entry 11723; LINUX-32-PIC-NEXT: pushl %ebx 11724; LINUX-32-PIC-NEXT: subl $8, %esp 11725; LINUX-32-PIC-NEXT: calll .L143$pb 11726; LINUX-32-PIC-NEXT: .L143$pb: 11727; LINUX-32-PIC-NEXT: popl %ebx 11728; LINUX-32-PIC-NEXT: .Ltmp143: 11729; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp143-.L143$pb), %ebx 11730; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx) 11731; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx) 11732; LINUX-32-PIC-NEXT: addl $8, %esp 11733; LINUX-32-PIC-NEXT: popl %ebx 11734; LINUX-32-PIC-NEXT: retl 11735; 11736; LINUX-64-PIC-LABEL: dicaller: 11737; LINUX-64-PIC: # %bb.0: # %entry 11738; LINUX-64-PIC-NEXT: pushq %rax 11739; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip) 11740; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip) 11741; LINUX-64-PIC-NEXT: popq %rax 11742; LINUX-64-PIC-NEXT: retq 11743; 11744; DARWIN-32-STATIC-LABEL: dicaller: 11745; DARWIN-32-STATIC: ## %bb.0: ## %entry 11746; DARWIN-32-STATIC-NEXT: subl $12, %esp 11747; DARWIN-32-STATIC-NEXT: calll *_difunc 11748; DARWIN-32-STATIC-NEXT: calll *_difunc 11749; DARWIN-32-STATIC-NEXT: addl $12, %esp 11750; DARWIN-32-STATIC-NEXT: retl 11751; 11752; DARWIN-32-DYNAMIC-LABEL: dicaller: 11753; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11754; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11755; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 11756; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 11757; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11758; DARWIN-32-DYNAMIC-NEXT: retl 11759; 11760; DARWIN-32-PIC-LABEL: dicaller: 11761; DARWIN-32-PIC: ## %bb.0: ## %entry 11762; DARWIN-32-PIC-NEXT: pushl %esi 11763; DARWIN-32-PIC-NEXT: subl $8, %esp 11764; DARWIN-32-PIC-NEXT: calll L143$pb 11765; DARWIN-32-PIC-NEXT: L143$pb: 11766; DARWIN-32-PIC-NEXT: popl %esi 11767; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi) 11768; DARWIN-32-PIC-NEXT: calll *_difunc-L143$pb(%esi) 11769; DARWIN-32-PIC-NEXT: addl $8, %esp 11770; DARWIN-32-PIC-NEXT: popl %esi 11771; DARWIN-32-PIC-NEXT: retl 11772; 11773; DARWIN-64-STATIC-LABEL: dicaller: 11774; DARWIN-64-STATIC: ## %bb.0: ## %entry 11775; DARWIN-64-STATIC-NEXT: pushq %rax 11776; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 11777; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 11778; DARWIN-64-STATIC-NEXT: popq %rax 11779; DARWIN-64-STATIC-NEXT: retq 11780; 11781; DARWIN-64-DYNAMIC-LABEL: dicaller: 11782; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11783; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11784; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 11785; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 11786; DARWIN-64-DYNAMIC-NEXT: popq %rax 11787; DARWIN-64-DYNAMIC-NEXT: retq 11788; 11789; DARWIN-64-PIC-LABEL: dicaller: 11790; DARWIN-64-PIC: ## %bb.0: ## %entry 11791; DARWIN-64-PIC-NEXT: pushq %rax 11792; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 11793; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 11794; DARWIN-64-PIC-NEXT: popq %rax 11795; DARWIN-64-PIC-NEXT: retq 11796 11797entry: 11798 %0 = load ptr, ptr @difunc, align 8 11799 call void %0() nounwind 11800 %1 = load ptr, ptr @difunc, align 8 11801 call void %1() nounwind 11802 ret void 11803} 11804 11805define dso_local void @licaller() nounwind { 11806; LINUX-64-STATIC-LABEL: licaller: 11807; LINUX-64-STATIC: # %bb.0: # %entry 11808; LINUX-64-STATIC-NEXT: pushq %rax 11809; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 11810; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 11811; LINUX-64-STATIC-NEXT: popq %rax 11812; LINUX-64-STATIC-NEXT: retq 11813; 11814; LINUX-32-STATIC-LABEL: licaller: 11815; LINUX-32-STATIC: # %bb.0: # %entry 11816; LINUX-32-STATIC-NEXT: subl $12, %esp 11817; LINUX-32-STATIC-NEXT: calll *lifunc 11818; LINUX-32-STATIC-NEXT: calll *lifunc 11819; LINUX-32-STATIC-NEXT: addl $12, %esp 11820; LINUX-32-STATIC-NEXT: retl 11821; 11822; LINUX-32-PIC-LABEL: licaller: 11823; LINUX-32-PIC: # %bb.0: # %entry 11824; LINUX-32-PIC-NEXT: pushl %ebx 11825; LINUX-32-PIC-NEXT: subl $8, %esp 11826; LINUX-32-PIC-NEXT: calll .L144$pb 11827; LINUX-32-PIC-NEXT: .L144$pb: 11828; LINUX-32-PIC-NEXT: popl %ebx 11829; LINUX-32-PIC-NEXT: .Ltmp144: 11830; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp144-.L144$pb), %ebx 11831; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 11832; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 11833; LINUX-32-PIC-NEXT: addl $8, %esp 11834; LINUX-32-PIC-NEXT: popl %ebx 11835; LINUX-32-PIC-NEXT: retl 11836; 11837; LINUX-64-PIC-LABEL: licaller: 11838; LINUX-64-PIC: # %bb.0: # %entry 11839; LINUX-64-PIC-NEXT: pushq %rax 11840; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 11841; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 11842; LINUX-64-PIC-NEXT: popq %rax 11843; LINUX-64-PIC-NEXT: retq 11844; 11845; DARWIN-32-STATIC-LABEL: licaller: 11846; DARWIN-32-STATIC: ## %bb.0: ## %entry 11847; DARWIN-32-STATIC-NEXT: subl $12, %esp 11848; DARWIN-32-STATIC-NEXT: calll *_lifunc 11849; DARWIN-32-STATIC-NEXT: calll *_lifunc 11850; DARWIN-32-STATIC-NEXT: addl $12, %esp 11851; DARWIN-32-STATIC-NEXT: retl 11852; 11853; DARWIN-32-DYNAMIC-LABEL: licaller: 11854; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11855; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 11856; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 11857; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 11858; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 11859; DARWIN-32-DYNAMIC-NEXT: retl 11860; 11861; DARWIN-32-PIC-LABEL: licaller: 11862; DARWIN-32-PIC: ## %bb.0: ## %entry 11863; DARWIN-32-PIC-NEXT: pushl %esi 11864; DARWIN-32-PIC-NEXT: subl $8, %esp 11865; DARWIN-32-PIC-NEXT: calll L144$pb 11866; DARWIN-32-PIC-NEXT: L144$pb: 11867; DARWIN-32-PIC-NEXT: popl %esi 11868; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi) 11869; DARWIN-32-PIC-NEXT: calll *_lifunc-L144$pb(%esi) 11870; DARWIN-32-PIC-NEXT: addl $8, %esp 11871; DARWIN-32-PIC-NEXT: popl %esi 11872; DARWIN-32-PIC-NEXT: retl 11873; 11874; DARWIN-64-STATIC-LABEL: licaller: 11875; DARWIN-64-STATIC: ## %bb.0: ## %entry 11876; DARWIN-64-STATIC-NEXT: pushq %rax 11877; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 11878; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 11879; DARWIN-64-STATIC-NEXT: popq %rax 11880; DARWIN-64-STATIC-NEXT: retq 11881; 11882; DARWIN-64-DYNAMIC-LABEL: licaller: 11883; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11884; DARWIN-64-DYNAMIC-NEXT: pushq %rax 11885; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 11886; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 11887; DARWIN-64-DYNAMIC-NEXT: popq %rax 11888; DARWIN-64-DYNAMIC-NEXT: retq 11889; 11890; DARWIN-64-PIC-LABEL: licaller: 11891; DARWIN-64-PIC: ## %bb.0: ## %entry 11892; DARWIN-64-PIC-NEXT: pushq %rax 11893; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 11894; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 11895; DARWIN-64-PIC-NEXT: popq %rax 11896; DARWIN-64-PIC-NEXT: retq 11897 11898entry: 11899 %0 = load ptr, ptr @lifunc, align 8 11900 call void %0() nounwind 11901 %1 = load ptr, ptr @lifunc, align 8 11902 call void %1() nounwind 11903 ret void 11904} 11905 11906define dso_local void @itailcaller() nounwind { 11907; LINUX-64-STATIC-LABEL: itailcaller: 11908; LINUX-64-STATIC: # %bb.0: # %entry 11909; LINUX-64-STATIC-NEXT: pushq %rbx 11910; LINUX-64-STATIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11911; LINUX-64-STATIC-NEXT: callq *(%rbx) 11912; LINUX-64-STATIC-NEXT: callq *(%rbx) 11913; LINUX-64-STATIC-NEXT: popq %rbx 11914; LINUX-64-STATIC-NEXT: retq 11915; 11916; LINUX-32-STATIC-LABEL: itailcaller: 11917; LINUX-32-STATIC: # %bb.0: # %entry 11918; LINUX-32-STATIC-NEXT: subl $12, %esp 11919; LINUX-32-STATIC-NEXT: calll *ifunc 11920; LINUX-32-STATIC-NEXT: calll *ifunc 11921; LINUX-32-STATIC-NEXT: addl $12, %esp 11922; LINUX-32-STATIC-NEXT: retl 11923; 11924; LINUX-32-PIC-LABEL: itailcaller: 11925; LINUX-32-PIC: # %bb.0: # %entry 11926; LINUX-32-PIC-NEXT: pushl %ebx 11927; LINUX-32-PIC-NEXT: pushl %esi 11928; LINUX-32-PIC-NEXT: pushl %eax 11929; LINUX-32-PIC-NEXT: calll .L145$pb 11930; LINUX-32-PIC-NEXT: .L145$pb: 11931; LINUX-32-PIC-NEXT: popl %ebx 11932; LINUX-32-PIC-NEXT: .Ltmp145: 11933; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp145-.L145$pb), %ebx 11934; LINUX-32-PIC-NEXT: movl ifunc@GOT(%ebx), %esi 11935; LINUX-32-PIC-NEXT: calll *(%esi) 11936; LINUX-32-PIC-NEXT: calll *(%esi) 11937; LINUX-32-PIC-NEXT: addl $4, %esp 11938; LINUX-32-PIC-NEXT: popl %esi 11939; LINUX-32-PIC-NEXT: popl %ebx 11940; LINUX-32-PIC-NEXT: retl 11941; 11942; LINUX-64-PIC-LABEL: itailcaller: 11943; LINUX-64-PIC: # %bb.0: # %entry 11944; LINUX-64-PIC-NEXT: pushq %rbx 11945; LINUX-64-PIC-NEXT: movq ifunc@GOTPCREL(%rip), %rbx 11946; LINUX-64-PIC-NEXT: callq *(%rbx) 11947; LINUX-64-PIC-NEXT: callq *(%rbx) 11948; LINUX-64-PIC-NEXT: popq %rbx 11949; LINUX-64-PIC-NEXT: retq 11950; 11951; DARWIN-32-STATIC-LABEL: itailcaller: 11952; DARWIN-32-STATIC: ## %bb.0: ## %entry 11953; DARWIN-32-STATIC-NEXT: subl $12, %esp 11954; DARWIN-32-STATIC-NEXT: calll *_ifunc 11955; DARWIN-32-STATIC-NEXT: calll *_ifunc 11956; DARWIN-32-STATIC-NEXT: addl $12, %esp 11957; DARWIN-32-STATIC-NEXT: retl 11958; 11959; DARWIN-32-DYNAMIC-LABEL: itailcaller: 11960; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 11961; DARWIN-32-DYNAMIC-NEXT: pushl %esi 11962; DARWIN-32-DYNAMIC-NEXT: subl $8, %esp 11963; DARWIN-32-DYNAMIC-NEXT: movl L_ifunc$non_lazy_ptr, %esi 11964; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11965; DARWIN-32-DYNAMIC-NEXT: calll *(%esi) 11966; DARWIN-32-DYNAMIC-NEXT: addl $8, %esp 11967; DARWIN-32-DYNAMIC-NEXT: popl %esi 11968; DARWIN-32-DYNAMIC-NEXT: retl 11969; 11970; DARWIN-32-PIC-LABEL: itailcaller: 11971; DARWIN-32-PIC: ## %bb.0: ## %entry 11972; DARWIN-32-PIC-NEXT: pushl %esi 11973; DARWIN-32-PIC-NEXT: subl $8, %esp 11974; DARWIN-32-PIC-NEXT: calll L145$pb 11975; DARWIN-32-PIC-NEXT: L145$pb: 11976; DARWIN-32-PIC-NEXT: popl %eax 11977; DARWIN-32-PIC-NEXT: movl L_ifunc$non_lazy_ptr-L145$pb(%eax), %esi 11978; DARWIN-32-PIC-NEXT: calll *(%esi) 11979; DARWIN-32-PIC-NEXT: calll *(%esi) 11980; DARWIN-32-PIC-NEXT: addl $8, %esp 11981; DARWIN-32-PIC-NEXT: popl %esi 11982; DARWIN-32-PIC-NEXT: retl 11983; 11984; DARWIN-64-STATIC-LABEL: itailcaller: 11985; DARWIN-64-STATIC: ## %bb.0: ## %entry 11986; DARWIN-64-STATIC-NEXT: pushq %rbx 11987; DARWIN-64-STATIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11988; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11989; DARWIN-64-STATIC-NEXT: callq *(%rbx) 11990; DARWIN-64-STATIC-NEXT: popq %rbx 11991; DARWIN-64-STATIC-NEXT: retq 11992; 11993; DARWIN-64-DYNAMIC-LABEL: itailcaller: 11994; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 11995; DARWIN-64-DYNAMIC-NEXT: pushq %rbx 11996; DARWIN-64-DYNAMIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 11997; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11998; DARWIN-64-DYNAMIC-NEXT: callq *(%rbx) 11999; DARWIN-64-DYNAMIC-NEXT: popq %rbx 12000; DARWIN-64-DYNAMIC-NEXT: retq 12001; 12002; DARWIN-64-PIC-LABEL: itailcaller: 12003; DARWIN-64-PIC: ## %bb.0: ## %entry 12004; DARWIN-64-PIC-NEXT: pushq %rbx 12005; DARWIN-64-PIC-NEXT: movq _ifunc@GOTPCREL(%rip), %rbx 12006; DARWIN-64-PIC-NEXT: callq *(%rbx) 12007; DARWIN-64-PIC-NEXT: callq *(%rbx) 12008; DARWIN-64-PIC-NEXT: popq %rbx 12009; DARWIN-64-PIC-NEXT: retq 12010 12011entry: 12012 %0 = load ptr, ptr @ifunc, align 8 12013 call void %0() nounwind 12014 %1 = load ptr, ptr @ifunc, align 8 12015 call void %1() nounwind 12016 ret void 12017} 12018 12019define dso_local void @ditailcaller() nounwind { 12020; LINUX-64-STATIC-LABEL: ditailcaller: 12021; LINUX-64-STATIC: # %bb.0: # %entry 12022; LINUX-64-STATIC-NEXT: pushq %rax 12023; LINUX-64-STATIC-NEXT: callq *difunc(%rip) 12024; LINUX-64-STATIC-NEXT: popq %rax 12025; LINUX-64-STATIC-NEXT: retq 12026; 12027; LINUX-32-STATIC-LABEL: ditailcaller: 12028; LINUX-32-STATIC: # %bb.0: # %entry 12029; LINUX-32-STATIC-NEXT: subl $12, %esp 12030; LINUX-32-STATIC-NEXT: calll *difunc 12031; LINUX-32-STATIC-NEXT: addl $12, %esp 12032; LINUX-32-STATIC-NEXT: retl 12033; 12034; LINUX-32-PIC-LABEL: ditailcaller: 12035; LINUX-32-PIC: # %bb.0: # %entry 12036; LINUX-32-PIC-NEXT: pushl %ebx 12037; LINUX-32-PIC-NEXT: subl $8, %esp 12038; LINUX-32-PIC-NEXT: calll .L146$pb 12039; LINUX-32-PIC-NEXT: .L146$pb: 12040; LINUX-32-PIC-NEXT: popl %ebx 12041; LINUX-32-PIC-NEXT: .Ltmp146: 12042; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp146-.L146$pb), %ebx 12043; LINUX-32-PIC-NEXT: calll *.Ldifunc$local@GOTOFF(%ebx) 12044; LINUX-32-PIC-NEXT: addl $8, %esp 12045; LINUX-32-PIC-NEXT: popl %ebx 12046; LINUX-32-PIC-NEXT: retl 12047; 12048; LINUX-64-PIC-LABEL: ditailcaller: 12049; LINUX-64-PIC: # %bb.0: # %entry 12050; LINUX-64-PIC-NEXT: pushq %rax 12051; LINUX-64-PIC-NEXT: callq *.Ldifunc$local(%rip) 12052; LINUX-64-PIC-NEXT: popq %rax 12053; LINUX-64-PIC-NEXT: retq 12054; 12055; DARWIN-32-STATIC-LABEL: ditailcaller: 12056; DARWIN-32-STATIC: ## %bb.0: ## %entry 12057; DARWIN-32-STATIC-NEXT: subl $12, %esp 12058; DARWIN-32-STATIC-NEXT: calll *_difunc 12059; DARWIN-32-STATIC-NEXT: addl $12, %esp 12060; DARWIN-32-STATIC-NEXT: retl 12061; 12062; DARWIN-32-DYNAMIC-LABEL: ditailcaller: 12063; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 12064; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 12065; DARWIN-32-DYNAMIC-NEXT: calll *_difunc 12066; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 12067; DARWIN-32-DYNAMIC-NEXT: retl 12068; 12069; DARWIN-32-PIC-LABEL: ditailcaller: 12070; DARWIN-32-PIC: ## %bb.0: ## %entry 12071; DARWIN-32-PIC-NEXT: subl $12, %esp 12072; DARWIN-32-PIC-NEXT: calll L146$pb 12073; DARWIN-32-PIC-NEXT: L146$pb: 12074; DARWIN-32-PIC-NEXT: popl %eax 12075; DARWIN-32-PIC-NEXT: calll *_difunc-L146$pb(%eax) 12076; DARWIN-32-PIC-NEXT: addl $12, %esp 12077; DARWIN-32-PIC-NEXT: retl 12078; 12079; DARWIN-64-STATIC-LABEL: ditailcaller: 12080; DARWIN-64-STATIC: ## %bb.0: ## %entry 12081; DARWIN-64-STATIC-NEXT: pushq %rax 12082; DARWIN-64-STATIC-NEXT: callq *_difunc(%rip) 12083; DARWIN-64-STATIC-NEXT: popq %rax 12084; DARWIN-64-STATIC-NEXT: retq 12085; 12086; DARWIN-64-DYNAMIC-LABEL: ditailcaller: 12087; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12088; DARWIN-64-DYNAMIC-NEXT: pushq %rax 12089; DARWIN-64-DYNAMIC-NEXT: callq *_difunc(%rip) 12090; DARWIN-64-DYNAMIC-NEXT: popq %rax 12091; DARWIN-64-DYNAMIC-NEXT: retq 12092; 12093; DARWIN-64-PIC-LABEL: ditailcaller: 12094; DARWIN-64-PIC: ## %bb.0: ## %entry 12095; DARWIN-64-PIC-NEXT: pushq %rax 12096; DARWIN-64-PIC-NEXT: callq *_difunc(%rip) 12097; DARWIN-64-PIC-NEXT: popq %rax 12098; DARWIN-64-PIC-NEXT: retq 12099 12100entry: 12101 %0 = load ptr, ptr @difunc, align 8 12102 call void %0() nounwind 12103 ret void 12104} 12105 12106define dso_local void @litailcaller() nounwind { 12107; LINUX-64-STATIC-LABEL: litailcaller: 12108; LINUX-64-STATIC: # %bb.0: # %entry 12109; LINUX-64-STATIC-NEXT: pushq %rax 12110; LINUX-64-STATIC-NEXT: callq *lifunc(%rip) 12111; LINUX-64-STATIC-NEXT: popq %rax 12112; LINUX-64-STATIC-NEXT: retq 12113; 12114; LINUX-32-STATIC-LABEL: litailcaller: 12115; LINUX-32-STATIC: # %bb.0: # %entry 12116; LINUX-32-STATIC-NEXT: subl $12, %esp 12117; LINUX-32-STATIC-NEXT: calll *lifunc 12118; LINUX-32-STATIC-NEXT: addl $12, %esp 12119; LINUX-32-STATIC-NEXT: retl 12120; 12121; LINUX-32-PIC-LABEL: litailcaller: 12122; LINUX-32-PIC: # %bb.0: # %entry 12123; LINUX-32-PIC-NEXT: pushl %ebx 12124; LINUX-32-PIC-NEXT: subl $8, %esp 12125; LINUX-32-PIC-NEXT: calll .L147$pb 12126; LINUX-32-PIC-NEXT: .L147$pb: 12127; LINUX-32-PIC-NEXT: popl %ebx 12128; LINUX-32-PIC-NEXT: .Ltmp147: 12129; LINUX-32-PIC-NEXT: addl $_GLOBAL_OFFSET_TABLE_+(.Ltmp147-.L147$pb), %ebx 12130; LINUX-32-PIC-NEXT: calll *lifunc@GOTOFF(%ebx) 12131; LINUX-32-PIC-NEXT: addl $8, %esp 12132; LINUX-32-PIC-NEXT: popl %ebx 12133; LINUX-32-PIC-NEXT: retl 12134; 12135; LINUX-64-PIC-LABEL: litailcaller: 12136; LINUX-64-PIC: # %bb.0: # %entry 12137; LINUX-64-PIC-NEXT: pushq %rax 12138; LINUX-64-PIC-NEXT: callq *lifunc(%rip) 12139; LINUX-64-PIC-NEXT: popq %rax 12140; LINUX-64-PIC-NEXT: retq 12141; 12142; DARWIN-32-STATIC-LABEL: litailcaller: 12143; DARWIN-32-STATIC: ## %bb.0: ## %entry 12144; DARWIN-32-STATIC-NEXT: subl $12, %esp 12145; DARWIN-32-STATIC-NEXT: calll *_lifunc 12146; DARWIN-32-STATIC-NEXT: addl $12, %esp 12147; DARWIN-32-STATIC-NEXT: retl 12148; 12149; DARWIN-32-DYNAMIC-LABEL: litailcaller: 12150; DARWIN-32-DYNAMIC: ## %bb.0: ## %entry 12151; DARWIN-32-DYNAMIC-NEXT: subl $12, %esp 12152; DARWIN-32-DYNAMIC-NEXT: calll *_lifunc 12153; DARWIN-32-DYNAMIC-NEXT: addl $12, %esp 12154; DARWIN-32-DYNAMIC-NEXT: retl 12155; 12156; DARWIN-32-PIC-LABEL: litailcaller: 12157; DARWIN-32-PIC: ## %bb.0: ## %entry 12158; DARWIN-32-PIC-NEXT: subl $12, %esp 12159; DARWIN-32-PIC-NEXT: calll L147$pb 12160; DARWIN-32-PIC-NEXT: L147$pb: 12161; DARWIN-32-PIC-NEXT: popl %eax 12162; DARWIN-32-PIC-NEXT: calll *_lifunc-L147$pb(%eax) 12163; DARWIN-32-PIC-NEXT: addl $12, %esp 12164; DARWIN-32-PIC-NEXT: retl 12165; 12166; DARWIN-64-STATIC-LABEL: litailcaller: 12167; DARWIN-64-STATIC: ## %bb.0: ## %entry 12168; DARWIN-64-STATIC-NEXT: pushq %rax 12169; DARWIN-64-STATIC-NEXT: callq *_lifunc(%rip) 12170; DARWIN-64-STATIC-NEXT: popq %rax 12171; DARWIN-64-STATIC-NEXT: retq 12172; 12173; DARWIN-64-DYNAMIC-LABEL: litailcaller: 12174; DARWIN-64-DYNAMIC: ## %bb.0: ## %entry 12175; DARWIN-64-DYNAMIC-NEXT: pushq %rax 12176; DARWIN-64-DYNAMIC-NEXT: callq *_lifunc(%rip) 12177; DARWIN-64-DYNAMIC-NEXT: popq %rax 12178; DARWIN-64-DYNAMIC-NEXT: retq 12179; 12180; DARWIN-64-PIC-LABEL: litailcaller: 12181; DARWIN-64-PIC: ## %bb.0: ## %entry 12182; DARWIN-64-PIC-NEXT: pushq %rax 12183; DARWIN-64-PIC-NEXT: callq *_lifunc(%rip) 12184; DARWIN-64-PIC-NEXT: popq %rax 12185; DARWIN-64-PIC-NEXT: retq 12186 12187entry: 12188 %0 = load ptr, ptr @lifunc, align 8 12189 call void %0() nounwind 12190 ret void 12191} 12192