1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 3; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 4; RUN: < %s | FileCheck %s --check-prefix=CHECK-P10-LE 5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 6; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 7; RUN: < %s | FileCheck %s --check-prefix=CHECK-P10-BE 8; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 9; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 10; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9 11; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 12; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 13; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9 14; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 15; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 16; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P8,CHECK-P8-LE 17; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 18; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ 19; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P8,CHECK-P8-BE 20 21@GlobLd1 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 22@GlobSt1 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 23@GlobLd2 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 24@GlobSt2 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 25@GlobLd3 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 26@GlobSt3 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 27@GlobLd4 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 28@GlobSt4 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 29@GlobLd5 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 30@GlobSt5 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 31@GlobLd6 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 32@GlobSt6 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 33@GlobLd7 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 34@GlobSt7 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 35@GlobLd8 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 36@GlobSt8 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 37@GlobLd9 = dso_local local_unnamed_addr global [20 x float] zeroinitializer, align 4 38@GlobSt9 = dso_local local_unnamed_addr global [20 x float] zeroinitializer, align 4 39@GlobLd10 = dso_local local_unnamed_addr global [20 x double] zeroinitializer, align 8 40@GlobSt10 = dso_local local_unnamed_addr global [20 x double] zeroinitializer, align 8 41@GlobLd11 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 42@GlobSt11 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 43@GlobLd12 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 44@GlobSt12 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 45@GlobF128 = dso_local local_unnamed_addr global [20 x fp128] zeroinitializer, align 16 46 47; Function Attrs: nofree norecurse nounwind uwtable willreturn 48define dso_local void @testGlob1PtrPlus0() { 49; CHECK-P10-LE-LABEL: testGlob1PtrPlus0: 50; CHECK-P10-LE: # %bb.0: # %entry 51; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL(0), 1 52; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL(0), 1 53; CHECK-P10-LE-NEXT: blr 54; 55; CHECK-P10-BE-LABEL: testGlob1PtrPlus0: 56; CHECK-P10-BE: # %bb.0: # %entry 57; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha 58; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha 59; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l(r3) 60; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l(r4) 61; CHECK-P10-BE-NEXT: blr 62; 63; CHECK-LABEL: testGlob1PtrPlus0: 64; CHECK: # %bb.0: # %entry 65; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha 66; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha 67; CHECK-NEXT: lbz r3, GlobLd1@toc@l(r3) 68; CHECK-NEXT: stb r3, GlobSt1@toc@l(r4) 69; CHECK-NEXT: blr 70entry: 71 %0 = load i8, ptr @GlobLd1, align 1 72 store i8 %0, ptr @GlobSt1, align 1 73 ret void 74} 75 76; Function Attrs: nofree norecurse nounwind uwtable willreturn 77define dso_local void @testGlob1PtrPlus3() { 78; CHECK-P10-LE-LABEL: testGlob1PtrPlus3: 79; CHECK-P10-LE: # %bb.0: # %entry 80; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL+3(0), 1 81; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL+3(0), 1 82; CHECK-P10-LE-NEXT: blr 83; 84; CHECK-P10-BE-LABEL: testGlob1PtrPlus3: 85; CHECK-P10-BE: # %bb.0: # %entry 86; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha 87; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha 88; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd1@toc@l 89; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt1@toc@l 90; CHECK-P10-BE-NEXT: lbz r3, 3(r3) 91; CHECK-P10-BE-NEXT: stb r3, 3(r4) 92; CHECK-P10-BE-NEXT: blr 93; 94; CHECK-LABEL: testGlob1PtrPlus3: 95; CHECK: # %bb.0: # %entry 96; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha 97; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha 98; CHECK-NEXT: addi r3, r3, GlobLd1@toc@l 99; CHECK-NEXT: addi r4, r4, GlobSt1@toc@l 100; CHECK-NEXT: lbz r3, 3(r3) 101; CHECK-NEXT: stb r3, 3(r4) 102; CHECK-NEXT: blr 103entry: 104 %0 = load i8, ptr getelementptr inbounds ([20 x i8], ptr @GlobLd1, i64 0, i64 3), align 1 105 store i8 %0, ptr getelementptr inbounds ([20 x i8], ptr @GlobSt1, i64 0, i64 3), align 1 106 ret void 107} 108 109; Function Attrs: nofree norecurse nounwind uwtable willreturn 110define dso_local void @testGlob1PtrPlus4() { 111; CHECK-P10-LE-LABEL: testGlob1PtrPlus4: 112; CHECK-P10-LE: # %bb.0: # %entry 113; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL+4(0), 1 114; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL+4(0), 1 115; CHECK-P10-LE-NEXT: blr 116; 117; CHECK-P10-BE-LABEL: testGlob1PtrPlus4: 118; CHECK-P10-BE: # %bb.0: # %entry 119; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha+4 120; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha+4 121; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l+4(r3) 122; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l+4(r4) 123; CHECK-P10-BE-NEXT: blr 124; 125; CHECK-LABEL: testGlob1PtrPlus4: 126; CHECK: # %bb.0: # %entry 127; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha+4 128; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha+4 129; CHECK-NEXT: lbz r3, GlobLd1@toc@l+4(r3) 130; CHECK-NEXT: stb r3, GlobSt1@toc@l+4(r4) 131; CHECK-NEXT: blr 132entry: 133 %0 = load i8, ptr getelementptr inbounds ([20 x i8], ptr @GlobLd1, i64 0, i64 4), align 1 134 store i8 %0, ptr getelementptr inbounds ([20 x i8], ptr @GlobSt1, i64 0, i64 4), align 1 135 ret void 136} 137 138; Function Attrs: nofree norecurse nounwind uwtable willreturn 139define dso_local void @testGlob1PtrPlus16() { 140; CHECK-P10-LE-LABEL: testGlob1PtrPlus16: 141; CHECK-P10-LE: # %bb.0: # %entry 142; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL+16(0), 1 143; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL+16(0), 1 144; CHECK-P10-LE-NEXT: blr 145; 146; CHECK-P10-BE-LABEL: testGlob1PtrPlus16: 147; CHECK-P10-BE: # %bb.0: # %entry 148; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha+16 149; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha+16 150; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l+16(r3) 151; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l+16(r4) 152; CHECK-P10-BE-NEXT: blr 153; 154; CHECK-LABEL: testGlob1PtrPlus16: 155; CHECK: # %bb.0: # %entry 156; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha+16 157; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha+16 158; CHECK-NEXT: lbz r3, GlobLd1@toc@l+16(r3) 159; CHECK-NEXT: stb r3, GlobSt1@toc@l+16(r4) 160; CHECK-NEXT: blr 161entry: 162 %0 = load i8, ptr getelementptr inbounds ([20 x i8], ptr @GlobLd1, i64 0, i64 16), align 1 163 store i8 %0, ptr getelementptr inbounds ([20 x i8], ptr @GlobSt1, i64 0, i64 16), align 1 164 ret void 165} 166 167; Function Attrs: nofree norecurse nounwind uwtable willreturn 168define dso_local void @testGlob1PtrPlusVar(i64 %Idx) { 169; CHECK-P10-LE-LABEL: testGlob1PtrPlusVar: 170; CHECK-P10-LE: # %bb.0: # %entry 171; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd1@PCREL, 1 172; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt1@PCREL, 1 173; CHECK-P10-LE-NEXT: lbzx r4, r4, r3 174; CHECK-P10-LE-NEXT: stbx r4, r5, r3 175; CHECK-P10-LE-NEXT: blr 176; 177; CHECK-P10-BE-LABEL: testGlob1PtrPlusVar: 178; CHECK-P10-BE: # %bb.0: # %entry 179; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd1@toc@ha 180; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt1@toc@ha 181; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd1@toc@l 182; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt1@toc@l 183; CHECK-P10-BE-NEXT: lbzx r4, r4, r3 184; CHECK-P10-BE-NEXT: stbx r4, r5, r3 185; CHECK-P10-BE-NEXT: blr 186; 187; CHECK-LABEL: testGlob1PtrPlusVar: 188; CHECK: # %bb.0: # %entry 189; CHECK-NEXT: addis r4, r2, GlobLd1@toc@ha 190; CHECK-NEXT: addis r5, r2, GlobSt1@toc@ha 191; CHECK-NEXT: addi r4, r4, GlobLd1@toc@l 192; CHECK-NEXT: addi r5, r5, GlobSt1@toc@l 193; CHECK-NEXT: lbzx r4, r4, r3 194; CHECK-NEXT: stbx r4, r5, r3 195; CHECK-NEXT: blr 196entry: 197 %arrayidx = getelementptr inbounds [20 x i8], ptr @GlobLd1, i64 0, i64 %Idx 198 %0 = load i8, ptr %arrayidx, align 1 199 %arrayidx1 = getelementptr inbounds [20 x i8], ptr @GlobSt1, i64 0, i64 %Idx 200 store i8 %0, ptr %arrayidx1, align 1 201 ret void 202} 203 204; Function Attrs: nofree norecurse nounwind uwtable willreturn 205define dso_local void @testGlob2PtrPlus0() { 206; CHECK-P10-LE-LABEL: testGlob2PtrPlus0: 207; CHECK-P10-LE: # %bb.0: # %entry 208; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL(0), 1 209; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL(0), 1 210; CHECK-P10-LE-NEXT: blr 211; 212; CHECK-P10-BE-LABEL: testGlob2PtrPlus0: 213; CHECK-P10-BE: # %bb.0: # %entry 214; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha 215; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha 216; CHECK-P10-BE-NEXT: lbz r3, GlobLd2@toc@l(r3) 217; CHECK-P10-BE-NEXT: stb r3, GlobSt2@toc@l(r4) 218; CHECK-P10-BE-NEXT: blr 219; 220; CHECK-LABEL: testGlob2PtrPlus0: 221; CHECK: # %bb.0: # %entry 222; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha 223; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha 224; CHECK-NEXT: lbz r3, GlobLd2@toc@l(r3) 225; CHECK-NEXT: stb r3, GlobSt2@toc@l(r4) 226; CHECK-NEXT: blr 227entry: 228 %0 = load i8, ptr @GlobLd2, align 1 229 store i8 %0, ptr @GlobSt2, align 1 230 ret void 231} 232 233; Function Attrs: nofree norecurse nounwind uwtable willreturn 234define dso_local void @testGlob2PtrPlus3() { 235; CHECK-P10-LE-LABEL: testGlob2PtrPlus3: 236; CHECK-P10-LE: # %bb.0: # %entry 237; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL+3(0), 1 238; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL+3(0), 1 239; CHECK-P10-LE-NEXT: blr 240; 241; CHECK-P10-BE-LABEL: testGlob2PtrPlus3: 242; CHECK-P10-BE: # %bb.0: # %entry 243; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha 244; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha 245; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd2@toc@l 246; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt2@toc@l 247; CHECK-P10-BE-NEXT: lbz r3, 3(r3) 248; CHECK-P10-BE-NEXT: stb r3, 3(r4) 249; CHECK-P10-BE-NEXT: blr 250; 251; CHECK-LABEL: testGlob2PtrPlus3: 252; CHECK: # %bb.0: # %entry 253; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha 254; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha 255; CHECK-NEXT: addi r3, r3, GlobLd2@toc@l 256; CHECK-NEXT: addi r4, r4, GlobSt2@toc@l 257; CHECK-NEXT: lbz r3, 3(r3) 258; CHECK-NEXT: stb r3, 3(r4) 259; CHECK-NEXT: blr 260entry: 261 %0 = load i8, ptr getelementptr inbounds ([20 x i8], ptr @GlobLd2, i64 0, i64 3), align 1 262 store i8 %0, ptr getelementptr inbounds ([20 x i8], ptr @GlobSt2, i64 0, i64 3), align 1 263 ret void 264} 265 266; Function Attrs: nofree norecurse nounwind uwtable willreturn 267define dso_local void @testGlob2PtrPlus4() { 268; CHECK-P10-LE-LABEL: testGlob2PtrPlus4: 269; CHECK-P10-LE: # %bb.0: # %entry 270; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL+4(0), 1 271; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL+4(0), 1 272; CHECK-P10-LE-NEXT: blr 273; 274; CHECK-P10-BE-LABEL: testGlob2PtrPlus4: 275; CHECK-P10-BE: # %bb.0: # %entry 276; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha+4 277; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha+4 278; CHECK-P10-BE-NEXT: lbz r3, GlobLd2@toc@l+4(r3) 279; CHECK-P10-BE-NEXT: stb r3, GlobSt2@toc@l+4(r4) 280; CHECK-P10-BE-NEXT: blr 281; 282; CHECK-LABEL: testGlob2PtrPlus4: 283; CHECK: # %bb.0: # %entry 284; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha+4 285; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha+4 286; CHECK-NEXT: lbz r3, GlobLd2@toc@l+4(r3) 287; CHECK-NEXT: stb r3, GlobSt2@toc@l+4(r4) 288; CHECK-NEXT: blr 289entry: 290 %0 = load i8, ptr getelementptr inbounds ([20 x i8], ptr @GlobLd2, i64 0, i64 4), align 1 291 store i8 %0, ptr getelementptr inbounds ([20 x i8], ptr @GlobSt2, i64 0, i64 4), align 1 292 ret void 293} 294 295; Function Attrs: nofree norecurse nounwind uwtable willreturn 296define dso_local void @testGlob2PtrPlus16() { 297; CHECK-P10-LE-LABEL: testGlob2PtrPlus16: 298; CHECK-P10-LE: # %bb.0: # %entry 299; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL+16(0), 1 300; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL+16(0), 1 301; CHECK-P10-LE-NEXT: blr 302; 303; CHECK-P10-BE-LABEL: testGlob2PtrPlus16: 304; CHECK-P10-BE: # %bb.0: # %entry 305; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha+16 306; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha+16 307; CHECK-P10-BE-NEXT: lbz r3, GlobLd2@toc@l+16(r3) 308; CHECK-P10-BE-NEXT: stb r3, GlobSt2@toc@l+16(r4) 309; CHECK-P10-BE-NEXT: blr 310; 311; CHECK-LABEL: testGlob2PtrPlus16: 312; CHECK: # %bb.0: # %entry 313; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha+16 314; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha+16 315; CHECK-NEXT: lbz r3, GlobLd2@toc@l+16(r3) 316; CHECK-NEXT: stb r3, GlobSt2@toc@l+16(r4) 317; CHECK-NEXT: blr 318entry: 319 %0 = load i8, ptr getelementptr inbounds ([20 x i8], ptr @GlobLd2, i64 0, i64 16), align 1 320 store i8 %0, ptr getelementptr inbounds ([20 x i8], ptr @GlobSt2, i64 0, i64 16), align 1 321 ret void 322} 323 324; Function Attrs: nofree norecurse nounwind uwtable willreturn 325define dso_local void @testGlob2PtrPlusVar(i64 %Idx) { 326; CHECK-P10-LE-LABEL: testGlob2PtrPlusVar: 327; CHECK-P10-LE: # %bb.0: # %entry 328; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd2@PCREL, 1 329; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt2@PCREL, 1 330; CHECK-P10-LE-NEXT: lbzx r4, r4, r3 331; CHECK-P10-LE-NEXT: stbx r4, r5, r3 332; CHECK-P10-LE-NEXT: blr 333; 334; CHECK-P10-BE-LABEL: testGlob2PtrPlusVar: 335; CHECK-P10-BE: # %bb.0: # %entry 336; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd2@toc@ha 337; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt2@toc@ha 338; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd2@toc@l 339; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt2@toc@l 340; CHECK-P10-BE-NEXT: lbzx r4, r4, r3 341; CHECK-P10-BE-NEXT: stbx r4, r5, r3 342; CHECK-P10-BE-NEXT: blr 343; 344; CHECK-LABEL: testGlob2PtrPlusVar: 345; CHECK: # %bb.0: # %entry 346; CHECK-NEXT: addis r4, r2, GlobLd2@toc@ha 347; CHECK-NEXT: addis r5, r2, GlobSt2@toc@ha 348; CHECK-NEXT: addi r4, r4, GlobLd2@toc@l 349; CHECK-NEXT: addi r5, r5, GlobSt2@toc@l 350; CHECK-NEXT: lbzx r4, r4, r3 351; CHECK-NEXT: stbx r4, r5, r3 352; CHECK-NEXT: blr 353entry: 354 %arrayidx = getelementptr inbounds [20 x i8], ptr @GlobLd2, i64 0, i64 %Idx 355 %0 = load i8, ptr %arrayidx, align 1 356 %arrayidx1 = getelementptr inbounds [20 x i8], ptr @GlobSt2, i64 0, i64 %Idx 357 store i8 %0, ptr %arrayidx1, align 1 358 ret void 359} 360 361; Function Attrs: nofree norecurse nounwind uwtable willreturn 362define dso_local void @testGlob3PtrPlus0() { 363; CHECK-P10-LE-LABEL: testGlob3PtrPlus0: 364; CHECK-P10-LE: # %bb.0: # %entry 365; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL(0), 1 366; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL(0), 1 367; CHECK-P10-LE-NEXT: blr 368; 369; CHECK-P10-BE-LABEL: testGlob3PtrPlus0: 370; CHECK-P10-BE: # %bb.0: # %entry 371; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha 372; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha 373; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l(r3) 374; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l(r4) 375; CHECK-P10-BE-NEXT: blr 376; 377; CHECK-LABEL: testGlob3PtrPlus0: 378; CHECK: # %bb.0: # %entry 379; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha 380; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha 381; CHECK-NEXT: lhz r3, GlobLd3@toc@l(r3) 382; CHECK-NEXT: sth r3, GlobSt3@toc@l(r4) 383; CHECK-NEXT: blr 384entry: 385 %0 = load i16, ptr @GlobLd3, align 2 386 store i16 %0, ptr @GlobSt3, align 2 387 ret void 388} 389 390; Function Attrs: nofree norecurse nounwind uwtable willreturn 391define dso_local void @testGlob3PtrPlus3() { 392; CHECK-P10-LE-LABEL: testGlob3PtrPlus3: 393; CHECK-P10-LE: # %bb.0: # %entry 394; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL+3(0), 1 395; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL+3(0), 1 396; CHECK-P10-LE-NEXT: blr 397; 398; CHECK-P10-BE-LABEL: testGlob3PtrPlus3: 399; CHECK-P10-BE: # %bb.0: # %entry 400; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha 401; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha 402; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd3@toc@l 403; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt3@toc@l 404; CHECK-P10-BE-NEXT: lhz r3, 3(r3) 405; CHECK-P10-BE-NEXT: sth r3, 3(r4) 406; CHECK-P10-BE-NEXT: blr 407; 408; CHECK-LABEL: testGlob3PtrPlus3: 409; CHECK: # %bb.0: # %entry 410; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha 411; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha 412; CHECK-NEXT: addi r3, r3, GlobLd3@toc@l 413; CHECK-NEXT: addi r4, r4, GlobSt3@toc@l 414; CHECK-NEXT: lhz r3, 3(r3) 415; CHECK-NEXT: sth r3, 3(r4) 416; CHECK-NEXT: blr 417entry: 418 %0 = load i16, ptr getelementptr inbounds (i8, ptr @GlobLd3, i64 3), align 2 419 store i16 %0, ptr getelementptr inbounds (i8, ptr @GlobSt3, i64 3), align 2 420 ret void 421} 422 423; Function Attrs: nofree norecurse nounwind uwtable willreturn 424define dso_local void @testGlob3PtrPlus4() { 425; CHECK-P10-LE-LABEL: testGlob3PtrPlus4: 426; CHECK-P10-LE: # %bb.0: # %entry 427; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL+4(0), 1 428; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL+4(0), 1 429; CHECK-P10-LE-NEXT: blr 430; 431; CHECK-P10-BE-LABEL: testGlob3PtrPlus4: 432; CHECK-P10-BE: # %bb.0: # %entry 433; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha+4 434; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha+4 435; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l+4(r3) 436; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l+4(r4) 437; CHECK-P10-BE-NEXT: blr 438; 439; CHECK-LABEL: testGlob3PtrPlus4: 440; CHECK: # %bb.0: # %entry 441; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha+4 442; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha+4 443; CHECK-NEXT: lhz r3, GlobLd3@toc@l+4(r3) 444; CHECK-NEXT: sth r3, GlobSt3@toc@l+4(r4) 445; CHECK-NEXT: blr 446entry: 447 %0 = load i16, ptr getelementptr inbounds ([20 x i16], ptr @GlobLd3, i64 0, i64 2), align 2 448 store i16 %0, ptr getelementptr inbounds ([20 x i16], ptr @GlobSt3, i64 0, i64 2), align 2 449 ret void 450} 451 452; Function Attrs: nofree norecurse nounwind uwtable willreturn 453define dso_local void @testGlob3PtrPlus16() { 454; CHECK-P10-LE-LABEL: testGlob3PtrPlus16: 455; CHECK-P10-LE: # %bb.0: # %entry 456; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL+16(0), 1 457; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL+16(0), 1 458; CHECK-P10-LE-NEXT: blr 459; 460; CHECK-P10-BE-LABEL: testGlob3PtrPlus16: 461; CHECK-P10-BE: # %bb.0: # %entry 462; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha+16 463; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha+16 464; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l+16(r3) 465; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l+16(r4) 466; CHECK-P10-BE-NEXT: blr 467; 468; CHECK-LABEL: testGlob3PtrPlus16: 469; CHECK: # %bb.0: # %entry 470; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha+16 471; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha+16 472; CHECK-NEXT: lhz r3, GlobLd3@toc@l+16(r3) 473; CHECK-NEXT: sth r3, GlobSt3@toc@l+16(r4) 474; CHECK-NEXT: blr 475entry: 476 %0 = load i16, ptr getelementptr inbounds ([20 x i16], ptr @GlobLd3, i64 0, i64 8), align 2 477 store i16 %0, ptr getelementptr inbounds ([20 x i16], ptr @GlobSt3, i64 0, i64 8), align 2 478 ret void 479} 480 481; Function Attrs: nofree norecurse nounwind uwtable willreturn 482define dso_local void @testGlob3PtrPlusVar(i64 %Idx) { 483; CHECK-P10-LE-LABEL: testGlob3PtrPlusVar: 484; CHECK-P10-LE: # %bb.0: # %entry 485; CHECK-P10-LE-NEXT: sldi r3, r3, 1 486; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd3@PCREL, 1 487; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt3@PCREL, 1 488; CHECK-P10-LE-NEXT: lhzx r4, r4, r3 489; CHECK-P10-LE-NEXT: sthx r4, r5, r3 490; CHECK-P10-LE-NEXT: blr 491; 492; CHECK-P10-BE-LABEL: testGlob3PtrPlusVar: 493; CHECK-P10-BE: # %bb.0: # %entry 494; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd3@toc@ha 495; CHECK-P10-BE-NEXT: sldi r3, r3, 1 496; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt3@toc@ha 497; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd3@toc@l 498; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt3@toc@l 499; CHECK-P10-BE-NEXT: lhzx r4, r4, r3 500; CHECK-P10-BE-NEXT: sthx r4, r5, r3 501; CHECK-P10-BE-NEXT: blr 502; 503; CHECK-LABEL: testGlob3PtrPlusVar: 504; CHECK: # %bb.0: # %entry 505; CHECK-NEXT: addis r4, r2, GlobLd3@toc@ha 506; CHECK-NEXT: sldi r3, r3, 1 507; CHECK-NEXT: addis r5, r2, GlobSt3@toc@ha 508; CHECK-NEXT: addi r4, r4, GlobLd3@toc@l 509; CHECK-NEXT: addi r5, r5, GlobSt3@toc@l 510; CHECK-NEXT: lhzx r4, r4, r3 511; CHECK-NEXT: sthx r4, r5, r3 512; CHECK-NEXT: blr 513entry: 514 %arrayidx = getelementptr inbounds [20 x i16], ptr @GlobLd3, i64 0, i64 %Idx 515 %0 = load i16, ptr %arrayidx, align 2 516 %arrayidx1 = getelementptr inbounds [20 x i16], ptr @GlobSt3, i64 0, i64 %Idx 517 store i16 %0, ptr %arrayidx1, align 2 518 ret void 519} 520 521; Function Attrs: nofree norecurse nounwind uwtable willreturn 522define dso_local void @testGlob4PtrPlus0() { 523; CHECK-P10-LE-LABEL: testGlob4PtrPlus0: 524; CHECK-P10-LE: # %bb.0: # %entry 525; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL(0), 1 526; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL(0), 1 527; CHECK-P10-LE-NEXT: blr 528; 529; CHECK-P10-BE-LABEL: testGlob4PtrPlus0: 530; CHECK-P10-BE: # %bb.0: # %entry 531; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha 532; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha 533; CHECK-P10-BE-NEXT: lhz r3, GlobLd4@toc@l(r3) 534; CHECK-P10-BE-NEXT: sth r3, GlobSt4@toc@l(r4) 535; CHECK-P10-BE-NEXT: blr 536; 537; CHECK-LABEL: testGlob4PtrPlus0: 538; CHECK: # %bb.0: # %entry 539; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha 540; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha 541; CHECK-NEXT: lhz r3, GlobLd4@toc@l(r3) 542; CHECK-NEXT: sth r3, GlobSt4@toc@l(r4) 543; CHECK-NEXT: blr 544entry: 545 %0 = load i16, ptr @GlobLd4, align 2 546 store i16 %0, ptr @GlobSt4, align 2 547 ret void 548} 549 550; Function Attrs: nofree norecurse nounwind uwtable willreturn 551define dso_local void @testGlob4PtrPlus3() { 552; CHECK-P10-LE-LABEL: testGlob4PtrPlus3: 553; CHECK-P10-LE: # %bb.0: # %entry 554; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL+3(0), 1 555; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL+3(0), 1 556; CHECK-P10-LE-NEXT: blr 557; 558; CHECK-P10-BE-LABEL: testGlob4PtrPlus3: 559; CHECK-P10-BE: # %bb.0: # %entry 560; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha 561; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha 562; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd4@toc@l 563; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt4@toc@l 564; CHECK-P10-BE-NEXT: lhz r3, 3(r3) 565; CHECK-P10-BE-NEXT: sth r3, 3(r4) 566; CHECK-P10-BE-NEXT: blr 567; 568; CHECK-LABEL: testGlob4PtrPlus3: 569; CHECK: # %bb.0: # %entry 570; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha 571; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha 572; CHECK-NEXT: addi r3, r3, GlobLd4@toc@l 573; CHECK-NEXT: addi r4, r4, GlobSt4@toc@l 574; CHECK-NEXT: lhz r3, 3(r3) 575; CHECK-NEXT: sth r3, 3(r4) 576; CHECK-NEXT: blr 577entry: 578 %0 = load i16, ptr getelementptr inbounds (i8, ptr @GlobLd4, i64 3), align 2 579 store i16 %0, ptr getelementptr inbounds (i8, ptr @GlobSt4, i64 3), align 2 580 ret void 581} 582 583; Function Attrs: nofree norecurse nounwind uwtable willreturn 584define dso_local void @testGlob4PtrPlus4() { 585; CHECK-P10-LE-LABEL: testGlob4PtrPlus4: 586; CHECK-P10-LE: # %bb.0: # %entry 587; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL+4(0), 1 588; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL+4(0), 1 589; CHECK-P10-LE-NEXT: blr 590; 591; CHECK-P10-BE-LABEL: testGlob4PtrPlus4: 592; CHECK-P10-BE: # %bb.0: # %entry 593; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha+4 594; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha+4 595; CHECK-P10-BE-NEXT: lhz r3, GlobLd4@toc@l+4(r3) 596; CHECK-P10-BE-NEXT: sth r3, GlobSt4@toc@l+4(r4) 597; CHECK-P10-BE-NEXT: blr 598; 599; CHECK-LABEL: testGlob4PtrPlus4: 600; CHECK: # %bb.0: # %entry 601; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha+4 602; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha+4 603; CHECK-NEXT: lhz r3, GlobLd4@toc@l+4(r3) 604; CHECK-NEXT: sth r3, GlobSt4@toc@l+4(r4) 605; CHECK-NEXT: blr 606entry: 607 %0 = load i16, ptr getelementptr inbounds ([20 x i16], ptr @GlobLd4, i64 0, i64 2), align 2 608 store i16 %0, ptr getelementptr inbounds ([20 x i16], ptr @GlobSt4, i64 0, i64 2), align 2 609 ret void 610} 611 612; Function Attrs: nofree norecurse nounwind uwtable willreturn 613define dso_local void @testGlob4PtrPlus16() { 614; CHECK-P10-LE-LABEL: testGlob4PtrPlus16: 615; CHECK-P10-LE: # %bb.0: # %entry 616; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL+16(0), 1 617; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL+16(0), 1 618; CHECK-P10-LE-NEXT: blr 619; 620; CHECK-P10-BE-LABEL: testGlob4PtrPlus16: 621; CHECK-P10-BE: # %bb.0: # %entry 622; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha+16 623; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha+16 624; CHECK-P10-BE-NEXT: lhz r3, GlobLd4@toc@l+16(r3) 625; CHECK-P10-BE-NEXT: sth r3, GlobSt4@toc@l+16(r4) 626; CHECK-P10-BE-NEXT: blr 627; 628; CHECK-LABEL: testGlob4PtrPlus16: 629; CHECK: # %bb.0: # %entry 630; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha+16 631; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha+16 632; CHECK-NEXT: lhz r3, GlobLd4@toc@l+16(r3) 633; CHECK-NEXT: sth r3, GlobSt4@toc@l+16(r4) 634; CHECK-NEXT: blr 635entry: 636 %0 = load i16, ptr getelementptr inbounds ([20 x i16], ptr @GlobLd4, i64 0, i64 8), align 2 637 store i16 %0, ptr getelementptr inbounds ([20 x i16], ptr @GlobSt4, i64 0, i64 8), align 2 638 ret void 639} 640 641; Function Attrs: nofree norecurse nounwind uwtable willreturn 642define dso_local void @testGlob4PtrPlusVar(i64 %Idx) { 643; CHECK-P10-LE-LABEL: testGlob4PtrPlusVar: 644; CHECK-P10-LE: # %bb.0: # %entry 645; CHECK-P10-LE-NEXT: sldi r3, r3, 1 646; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd4@PCREL, 1 647; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt4@PCREL, 1 648; CHECK-P10-LE-NEXT: lhzx r4, r4, r3 649; CHECK-P10-LE-NEXT: sthx r4, r5, r3 650; CHECK-P10-LE-NEXT: blr 651; 652; CHECK-P10-BE-LABEL: testGlob4PtrPlusVar: 653; CHECK-P10-BE: # %bb.0: # %entry 654; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd4@toc@ha 655; CHECK-P10-BE-NEXT: sldi r3, r3, 1 656; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt4@toc@ha 657; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd4@toc@l 658; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt4@toc@l 659; CHECK-P10-BE-NEXT: lhzx r4, r4, r3 660; CHECK-P10-BE-NEXT: sthx r4, r5, r3 661; CHECK-P10-BE-NEXT: blr 662; 663; CHECK-LABEL: testGlob4PtrPlusVar: 664; CHECK: # %bb.0: # %entry 665; CHECK-NEXT: addis r4, r2, GlobLd4@toc@ha 666; CHECK-NEXT: sldi r3, r3, 1 667; CHECK-NEXT: addis r5, r2, GlobSt4@toc@ha 668; CHECK-NEXT: addi r4, r4, GlobLd4@toc@l 669; CHECK-NEXT: addi r5, r5, GlobSt4@toc@l 670; CHECK-NEXT: lhzx r4, r4, r3 671; CHECK-NEXT: sthx r4, r5, r3 672; CHECK-NEXT: blr 673entry: 674 %arrayidx = getelementptr inbounds [20 x i16], ptr @GlobLd4, i64 0, i64 %Idx 675 %0 = load i16, ptr %arrayidx, align 2 676 %arrayidx1 = getelementptr inbounds [20 x i16], ptr @GlobSt4, i64 0, i64 %Idx 677 store i16 %0, ptr %arrayidx1, align 2 678 ret void 679} 680 681; Function Attrs: nofree norecurse nounwind uwtable willreturn 682define dso_local void @testGlob5PtrPlus0() { 683; CHECK-P10-LE-LABEL: testGlob5PtrPlus0: 684; CHECK-P10-LE: # %bb.0: # %entry 685; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL(0), 1 686; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL(0), 1 687; CHECK-P10-LE-NEXT: blr 688; 689; CHECK-P10-BE-LABEL: testGlob5PtrPlus0: 690; CHECK-P10-BE: # %bb.0: # %entry 691; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha 692; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha 693; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l(r3) 694; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l(r4) 695; CHECK-P10-BE-NEXT: blr 696; 697; CHECK-LABEL: testGlob5PtrPlus0: 698; CHECK: # %bb.0: # %entry 699; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha 700; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha 701; CHECK-NEXT: lwz r3, GlobLd5@toc@l(r3) 702; CHECK-NEXT: stw r3, GlobSt5@toc@l(r4) 703; CHECK-NEXT: blr 704entry: 705 %0 = load i32, ptr @GlobLd5, align 4 706 store i32 %0, ptr @GlobSt5, align 4 707 ret void 708} 709 710; Function Attrs: nofree norecurse nounwind uwtable willreturn 711define dso_local void @testGlob5PtrPlus3() { 712; CHECK-P10-LE-LABEL: testGlob5PtrPlus3: 713; CHECK-P10-LE: # %bb.0: # %entry 714; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL+3(0), 1 715; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL+3(0), 1 716; CHECK-P10-LE-NEXT: blr 717; 718; CHECK-P10-BE-LABEL: testGlob5PtrPlus3: 719; CHECK-P10-BE: # %bb.0: # %entry 720; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha 721; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha 722; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l+3(r3) 723; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l+3(r4) 724; CHECK-P10-BE-NEXT: blr 725; 726; CHECK-LABEL: testGlob5PtrPlus3: 727; CHECK: # %bb.0: # %entry 728; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha 729; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha 730; CHECK-NEXT: lwz r3, GlobLd5@toc@l+3(r3) 731; CHECK-NEXT: stw r3, GlobSt5@toc@l+3(r4) 732; CHECK-NEXT: blr 733entry: 734 %0 = load i32, ptr getelementptr inbounds (i8, ptr @GlobLd5, i64 3), align 4 735 store i32 %0, ptr getelementptr inbounds (i8, ptr @GlobSt5, i64 3), align 4 736 ret void 737} 738 739; Function Attrs: nofree norecurse nounwind uwtable willreturn 740define dso_local void @testGlob5PtrPlus4() { 741; CHECK-P10-LE-LABEL: testGlob5PtrPlus4: 742; CHECK-P10-LE: # %bb.0: # %entry 743; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL+4(0), 1 744; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL+4(0), 1 745; CHECK-P10-LE-NEXT: blr 746; 747; CHECK-P10-BE-LABEL: testGlob5PtrPlus4: 748; CHECK-P10-BE: # %bb.0: # %entry 749; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha+4 750; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha+4 751; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l+4(r3) 752; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l+4(r4) 753; CHECK-P10-BE-NEXT: blr 754; 755; CHECK-LABEL: testGlob5PtrPlus4: 756; CHECK: # %bb.0: # %entry 757; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha+4 758; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha+4 759; CHECK-NEXT: lwz r3, GlobLd5@toc@l+4(r3) 760; CHECK-NEXT: stw r3, GlobSt5@toc@l+4(r4) 761; CHECK-NEXT: blr 762entry: 763 %0 = load i32, ptr getelementptr inbounds ([20 x i32], ptr @GlobLd5, i64 0, i64 1), align 4 764 store i32 %0, ptr getelementptr inbounds ([20 x i32], ptr @GlobSt5, i64 0, i64 1), align 4 765 ret void 766} 767 768; Function Attrs: nofree norecurse nounwind uwtable willreturn 769define dso_local void @testGlob5PtrPlus16() { 770; CHECK-P10-LE-LABEL: testGlob5PtrPlus16: 771; CHECK-P10-LE: # %bb.0: # %entry 772; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL+16(0), 1 773; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL+16(0), 1 774; CHECK-P10-LE-NEXT: blr 775; 776; CHECK-P10-BE-LABEL: testGlob5PtrPlus16: 777; CHECK-P10-BE: # %bb.0: # %entry 778; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha+16 779; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha+16 780; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l+16(r3) 781; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l+16(r4) 782; CHECK-P10-BE-NEXT: blr 783; 784; CHECK-LABEL: testGlob5PtrPlus16: 785; CHECK: # %bb.0: # %entry 786; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha+16 787; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha+16 788; CHECK-NEXT: lwz r3, GlobLd5@toc@l+16(r3) 789; CHECK-NEXT: stw r3, GlobSt5@toc@l+16(r4) 790; CHECK-NEXT: blr 791entry: 792 %0 = load i32, ptr getelementptr inbounds ([20 x i32], ptr @GlobLd5, i64 0, i64 4), align 4 793 store i32 %0, ptr getelementptr inbounds ([20 x i32], ptr @GlobSt5, i64 0, i64 4), align 4 794 ret void 795} 796 797; Function Attrs: nofree norecurse nounwind uwtable willreturn 798define dso_local void @testGlob5PtrPlusVar(i64 %Idx) { 799; CHECK-P10-LE-LABEL: testGlob5PtrPlusVar: 800; CHECK-P10-LE: # %bb.0: # %entry 801; CHECK-P10-LE-NEXT: sldi r3, r3, 2 802; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd5@PCREL, 1 803; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt5@PCREL, 1 804; CHECK-P10-LE-NEXT: lwzx r4, r4, r3 805; CHECK-P10-LE-NEXT: stwx r4, r5, r3 806; CHECK-P10-LE-NEXT: blr 807; 808; CHECK-P10-BE-LABEL: testGlob5PtrPlusVar: 809; CHECK-P10-BE: # %bb.0: # %entry 810; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd5@toc@ha 811; CHECK-P10-BE-NEXT: sldi r3, r3, 2 812; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt5@toc@ha 813; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd5@toc@l 814; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt5@toc@l 815; CHECK-P10-BE-NEXT: lwzx r4, r4, r3 816; CHECK-P10-BE-NEXT: stwx r4, r5, r3 817; CHECK-P10-BE-NEXT: blr 818; 819; CHECK-LABEL: testGlob5PtrPlusVar: 820; CHECK: # %bb.0: # %entry 821; CHECK-NEXT: addis r4, r2, GlobLd5@toc@ha 822; CHECK-NEXT: sldi r3, r3, 2 823; CHECK-NEXT: addis r5, r2, GlobSt5@toc@ha 824; CHECK-NEXT: addi r4, r4, GlobLd5@toc@l 825; CHECK-NEXT: addi r5, r5, GlobSt5@toc@l 826; CHECK-NEXT: lwzx r4, r4, r3 827; CHECK-NEXT: stwx r4, r5, r3 828; CHECK-NEXT: blr 829entry: 830 %arrayidx = getelementptr inbounds [20 x i32], ptr @GlobLd5, i64 0, i64 %Idx 831 %0 = load i32, ptr %arrayidx, align 4 832 %arrayidx1 = getelementptr inbounds [20 x i32], ptr @GlobSt5, i64 0, i64 %Idx 833 store i32 %0, ptr %arrayidx1, align 4 834 ret void 835} 836 837; Function Attrs: nofree norecurse nounwind uwtable willreturn 838define dso_local void @testGlob6PtrPlus0() { 839; CHECK-P10-LE-LABEL: testGlob6PtrPlus0: 840; CHECK-P10-LE: # %bb.0: # %entry 841; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL(0), 1 842; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL(0), 1 843; CHECK-P10-LE-NEXT: blr 844; 845; CHECK-P10-BE-LABEL: testGlob6PtrPlus0: 846; CHECK-P10-BE: # %bb.0: # %entry 847; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha 848; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha 849; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l(r3) 850; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l(r4) 851; CHECK-P10-BE-NEXT: blr 852; 853; CHECK-LABEL: testGlob6PtrPlus0: 854; CHECK: # %bb.0: # %entry 855; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha 856; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha 857; CHECK-NEXT: lwz r3, GlobLd6@toc@l(r3) 858; CHECK-NEXT: stw r3, GlobSt6@toc@l(r4) 859; CHECK-NEXT: blr 860entry: 861 %0 = load i32, ptr @GlobLd6, align 4 862 store i32 %0, ptr @GlobSt6, align 4 863 ret void 864} 865 866; Function Attrs: nofree norecurse nounwind uwtable willreturn 867define dso_local void @testGlob6PtrPlus3() { 868; CHECK-P10-LE-LABEL: testGlob6PtrPlus3: 869; CHECK-P10-LE: # %bb.0: # %entry 870; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL+3(0), 1 871; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL+3(0), 1 872; CHECK-P10-LE-NEXT: blr 873; 874; CHECK-P10-BE-LABEL: testGlob6PtrPlus3: 875; CHECK-P10-BE: # %bb.0: # %entry 876; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha 877; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha 878; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l+3(r3) 879; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l+3(r4) 880; CHECK-P10-BE-NEXT: blr 881; 882; CHECK-LABEL: testGlob6PtrPlus3: 883; CHECK: # %bb.0: # %entry 884; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha 885; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha 886; CHECK-NEXT: lwz r3, GlobLd6@toc@l+3(r3) 887; CHECK-NEXT: stw r3, GlobSt6@toc@l+3(r4) 888; CHECK-NEXT: blr 889entry: 890 %0 = load i32, ptr getelementptr inbounds (i8, ptr @GlobLd6, i64 3), align 4 891 store i32 %0, ptr getelementptr inbounds (i8, ptr @GlobSt6, i64 3), align 4 892 ret void 893} 894 895; Function Attrs: nofree norecurse nounwind uwtable willreturn 896define dso_local void @testGlob6PtrPlus4() { 897; CHECK-P10-LE-LABEL: testGlob6PtrPlus4: 898; CHECK-P10-LE: # %bb.0: # %entry 899; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL+4(0), 1 900; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL+4(0), 1 901; CHECK-P10-LE-NEXT: blr 902; 903; CHECK-P10-BE-LABEL: testGlob6PtrPlus4: 904; CHECK-P10-BE: # %bb.0: # %entry 905; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha+4 906; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha+4 907; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l+4(r3) 908; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l+4(r4) 909; CHECK-P10-BE-NEXT: blr 910; 911; CHECK-LABEL: testGlob6PtrPlus4: 912; CHECK: # %bb.0: # %entry 913; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha+4 914; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha+4 915; CHECK-NEXT: lwz r3, GlobLd6@toc@l+4(r3) 916; CHECK-NEXT: stw r3, GlobSt6@toc@l+4(r4) 917; CHECK-NEXT: blr 918entry: 919 %0 = load i32, ptr getelementptr inbounds ([20 x i32], ptr @GlobLd6, i64 0, i64 1), align 4 920 store i32 %0, ptr getelementptr inbounds ([20 x i32], ptr @GlobSt6, i64 0, i64 1), align 4 921 ret void 922} 923 924; Function Attrs: nofree norecurse nounwind uwtable willreturn 925define dso_local void @testGlob6PtrPlus16() { 926; CHECK-P10-LE-LABEL: testGlob6PtrPlus16: 927; CHECK-P10-LE: # %bb.0: # %entry 928; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL+16(0), 1 929; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL+16(0), 1 930; CHECK-P10-LE-NEXT: blr 931; 932; CHECK-P10-BE-LABEL: testGlob6PtrPlus16: 933; CHECK-P10-BE: # %bb.0: # %entry 934; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha+16 935; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha+16 936; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l+16(r3) 937; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l+16(r4) 938; CHECK-P10-BE-NEXT: blr 939; 940; CHECK-LABEL: testGlob6PtrPlus16: 941; CHECK: # %bb.0: # %entry 942; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha+16 943; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha+16 944; CHECK-NEXT: lwz r3, GlobLd6@toc@l+16(r3) 945; CHECK-NEXT: stw r3, GlobSt6@toc@l+16(r4) 946; CHECK-NEXT: blr 947entry: 948 %0 = load i32, ptr getelementptr inbounds ([20 x i32], ptr @GlobLd6, i64 0, i64 4), align 4 949 store i32 %0, ptr getelementptr inbounds ([20 x i32], ptr @GlobSt6, i64 0, i64 4), align 4 950 ret void 951} 952 953; Function Attrs: nofree norecurse nounwind uwtable willreturn 954define dso_local void @testGlob6PtrPlusVar(i64 %Idx) { 955; CHECK-P10-LE-LABEL: testGlob6PtrPlusVar: 956; CHECK-P10-LE: # %bb.0: # %entry 957; CHECK-P10-LE-NEXT: sldi r3, r3, 2 958; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd6@PCREL, 1 959; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt6@PCREL, 1 960; CHECK-P10-LE-NEXT: lwzx r4, r4, r3 961; CHECK-P10-LE-NEXT: stwx r4, r5, r3 962; CHECK-P10-LE-NEXT: blr 963; 964; CHECK-P10-BE-LABEL: testGlob6PtrPlusVar: 965; CHECK-P10-BE: # %bb.0: # %entry 966; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd6@toc@ha 967; CHECK-P10-BE-NEXT: sldi r3, r3, 2 968; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt6@toc@ha 969; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd6@toc@l 970; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt6@toc@l 971; CHECK-P10-BE-NEXT: lwzx r4, r4, r3 972; CHECK-P10-BE-NEXT: stwx r4, r5, r3 973; CHECK-P10-BE-NEXT: blr 974; 975; CHECK-LABEL: testGlob6PtrPlusVar: 976; CHECK: # %bb.0: # %entry 977; CHECK-NEXT: addis r4, r2, GlobLd6@toc@ha 978; CHECK-NEXT: sldi r3, r3, 2 979; CHECK-NEXT: addis r5, r2, GlobSt6@toc@ha 980; CHECK-NEXT: addi r4, r4, GlobLd6@toc@l 981; CHECK-NEXT: addi r5, r5, GlobSt6@toc@l 982; CHECK-NEXT: lwzx r4, r4, r3 983; CHECK-NEXT: stwx r4, r5, r3 984; CHECK-NEXT: blr 985entry: 986 %arrayidx = getelementptr inbounds [20 x i32], ptr @GlobLd6, i64 0, i64 %Idx 987 %0 = load i32, ptr %arrayidx, align 4 988 %arrayidx1 = getelementptr inbounds [20 x i32], ptr @GlobSt6, i64 0, i64 %Idx 989 store i32 %0, ptr %arrayidx1, align 4 990 ret void 991} 992 993; Function Attrs: nofree norecurse nounwind uwtable willreturn 994define dso_local void @testGlob7PtrPlus0() { 995; CHECK-P10-LE-LABEL: testGlob7PtrPlus0: 996; CHECK-P10-LE: # %bb.0: # %entry 997; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL(0), 1 998; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL(0), 1 999; CHECK-P10-LE-NEXT: blr 1000; 1001; CHECK-P10-BE-LABEL: testGlob7PtrPlus0: 1002; CHECK-P10-BE: # %bb.0: # %entry 1003; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha 1004; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha 1005; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l(r3) 1006; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l(r4) 1007; CHECK-P10-BE-NEXT: blr 1008; 1009; CHECK-P9-LABEL: testGlob7PtrPlus0: 1010; CHECK-P9: # %bb.0: # %entry 1011; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha 1012; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha 1013; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l(r3) 1014; CHECK-P9-NEXT: std r3, GlobSt7@toc@l(r4) 1015; CHECK-P9-NEXT: blr 1016; 1017; CHECK-P8-LABEL: testGlob7PtrPlus0: 1018; CHECK-P8: # %bb.0: # %entry 1019; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha 1020; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l(r3) 1021; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha 1022; CHECK-P8-NEXT: std r3, GlobSt7@toc@l(r4) 1023; CHECK-P8-NEXT: blr 1024entry: 1025 %0 = load i64, ptr @GlobLd7, align 8 1026 store i64 %0, ptr @GlobSt7, align 8 1027 ret void 1028} 1029 1030; Function Attrs: nofree norecurse nounwind uwtable willreturn 1031define dso_local void @testGlob7PtrPlus3() { 1032; CHECK-P10-LE-LABEL: testGlob7PtrPlus3: 1033; CHECK-P10-LE: # %bb.0: # %entry 1034; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL+3(0), 1 1035; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL+3(0), 1 1036; CHECK-P10-LE-NEXT: blr 1037; 1038; CHECK-P10-BE-LABEL: testGlob7PtrPlus3: 1039; CHECK-P10-BE: # %bb.0: # %entry 1040; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha 1041; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha 1042; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd7@toc@l 1043; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt7@toc@l 1044; CHECK-P10-BE-NEXT: pld r3, 3(r3), 0 1045; CHECK-P10-BE-NEXT: pstd r3, 3(r4), 0 1046; CHECK-P10-BE-NEXT: blr 1047; 1048; CHECK-LABEL: testGlob7PtrPlus3: 1049; CHECK: # %bb.0: # %entry 1050; CHECK-NEXT: addis r3, r2, GlobLd7@toc@ha 1051; CHECK-NEXT: li r4, 3 1052; CHECK-NEXT: addis r5, r2, GlobSt7@toc@ha 1053; CHECK-NEXT: addi r3, r3, GlobLd7@toc@l 1054; CHECK-NEXT: addi r5, r5, GlobSt7@toc@l 1055; CHECK-NEXT: ldx r3, r3, r4 1056; CHECK-NEXT: stdx r3, r5, r4 1057; CHECK-NEXT: blr 1058entry: 1059 %0 = load i64, ptr getelementptr inbounds (i8, ptr @GlobLd7, i64 3), align 8 1060 store i64 %0, ptr getelementptr inbounds (i8, ptr @GlobSt7, i64 3), align 8 1061 ret void 1062} 1063 1064; Function Attrs: nofree norecurse nounwind uwtable willreturn 1065define dso_local void @testGlob7PtrPlus4() { 1066; CHECK-P10-LE-LABEL: testGlob7PtrPlus4: 1067; CHECK-P10-LE: # %bb.0: # %entry 1068; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL+4(0), 1 1069; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL+4(0), 1 1070; CHECK-P10-LE-NEXT: blr 1071; 1072; CHECK-P10-BE-LABEL: testGlob7PtrPlus4: 1073; CHECK-P10-BE: # %bb.0: # %entry 1074; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha 1075; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha 1076; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l+4(r3) 1077; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l+4(r4) 1078; CHECK-P10-BE-NEXT: blr 1079; 1080; CHECK-P9-LABEL: testGlob7PtrPlus4: 1081; CHECK-P9: # %bb.0: # %entry 1082; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha 1083; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha 1084; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l+4(r3) 1085; CHECK-P9-NEXT: std r3, GlobSt7@toc@l+4(r4) 1086; CHECK-P9-NEXT: blr 1087; 1088; CHECK-P8-LABEL: testGlob7PtrPlus4: 1089; CHECK-P8: # %bb.0: # %entry 1090; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha 1091; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l+4(r3) 1092; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha 1093; CHECK-P8-NEXT: std r3, GlobSt7@toc@l+4(r4) 1094; CHECK-P8-NEXT: blr 1095entry: 1096 %0 = load i64, ptr getelementptr inbounds (i8, ptr @GlobLd7, i64 4), align 8 1097 store i64 %0, ptr getelementptr inbounds (i8, ptr @GlobSt7, i64 4), align 8 1098 ret void 1099} 1100 1101; Function Attrs: nofree norecurse nounwind uwtable willreturn 1102define dso_local void @testGlob7PtrPlus16() { 1103; CHECK-P10-LE-LABEL: testGlob7PtrPlus16: 1104; CHECK-P10-LE: # %bb.0: # %entry 1105; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL+16(0), 1 1106; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL+16(0), 1 1107; CHECK-P10-LE-NEXT: blr 1108; 1109; CHECK-P10-BE-LABEL: testGlob7PtrPlus16: 1110; CHECK-P10-BE: # %bb.0: # %entry 1111; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha+16 1112; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha+16 1113; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l+16(r3) 1114; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l+16(r4) 1115; CHECK-P10-BE-NEXT: blr 1116; 1117; CHECK-P9-LABEL: testGlob7PtrPlus16: 1118; CHECK-P9: # %bb.0: # %entry 1119; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha+16 1120; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha+16 1121; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l+16(r3) 1122; CHECK-P9-NEXT: std r3, GlobSt7@toc@l+16(r4) 1123; CHECK-P9-NEXT: blr 1124; 1125; CHECK-P8-LABEL: testGlob7PtrPlus16: 1126; CHECK-P8: # %bb.0: # %entry 1127; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha+16 1128; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l+16(r3) 1129; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha+16 1130; CHECK-P8-NEXT: std r3, GlobSt7@toc@l+16(r4) 1131; CHECK-P8-NEXT: blr 1132entry: 1133 %0 = load i64, ptr getelementptr inbounds ([20 x i64], ptr @GlobLd7, i64 0, i64 2), align 8 1134 store i64 %0, ptr getelementptr inbounds ([20 x i64], ptr @GlobSt7, i64 0, i64 2), align 8 1135 ret void 1136} 1137 1138; Function Attrs: nofree norecurse nounwind uwtable willreturn 1139define dso_local void @testGlob7PtrPlusVar(i64 %Idx) { 1140; CHECK-P10-LE-LABEL: testGlob7PtrPlusVar: 1141; CHECK-P10-LE: # %bb.0: # %entry 1142; CHECK-P10-LE-NEXT: sldi r3, r3, 3 1143; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd7@PCREL, 1 1144; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt7@PCREL, 1 1145; CHECK-P10-LE-NEXT: ldx r4, r4, r3 1146; CHECK-P10-LE-NEXT: stdx r4, r5, r3 1147; CHECK-P10-LE-NEXT: blr 1148; 1149; CHECK-P10-BE-LABEL: testGlob7PtrPlusVar: 1150; CHECK-P10-BE: # %bb.0: # %entry 1151; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd7@toc@ha 1152; CHECK-P10-BE-NEXT: sldi r3, r3, 3 1153; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt7@toc@ha 1154; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd7@toc@l 1155; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt7@toc@l 1156; CHECK-P10-BE-NEXT: ldx r4, r4, r3 1157; CHECK-P10-BE-NEXT: stdx r4, r5, r3 1158; CHECK-P10-BE-NEXT: blr 1159; 1160; CHECK-LABEL: testGlob7PtrPlusVar: 1161; CHECK: # %bb.0: # %entry 1162; CHECK-NEXT: addis r4, r2, GlobLd7@toc@ha 1163; CHECK-NEXT: sldi r3, r3, 3 1164; CHECK-NEXT: addis r5, r2, GlobSt7@toc@ha 1165; CHECK-NEXT: addi r4, r4, GlobLd7@toc@l 1166; CHECK-NEXT: addi r5, r5, GlobSt7@toc@l 1167; CHECK-NEXT: ldx r4, r4, r3 1168; CHECK-NEXT: stdx r4, r5, r3 1169; CHECK-NEXT: blr 1170entry: 1171 %arrayidx = getelementptr inbounds [20 x i64], ptr @GlobLd7, i64 0, i64 %Idx 1172 %0 = load i64, ptr %arrayidx, align 8 1173 %arrayidx1 = getelementptr inbounds [20 x i64], ptr @GlobSt7, i64 0, i64 %Idx 1174 store i64 %0, ptr %arrayidx1, align 8 1175 ret void 1176} 1177 1178; Function Attrs: nofree norecurse nounwind uwtable willreturn 1179define dso_local void @testGlob8PtrPlus0() { 1180; CHECK-P10-LE-LABEL: testGlob8PtrPlus0: 1181; CHECK-P10-LE: # %bb.0: # %entry 1182; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL(0), 1 1183; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL(0), 1 1184; CHECK-P10-LE-NEXT: blr 1185; 1186; CHECK-P10-BE-LABEL: testGlob8PtrPlus0: 1187; CHECK-P10-BE: # %bb.0: # %entry 1188; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha 1189; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha 1190; CHECK-P10-BE-NEXT: ld r3, GlobLd8@toc@l(r3) 1191; CHECK-P10-BE-NEXT: std r3, GlobSt8@toc@l(r4) 1192; CHECK-P10-BE-NEXT: blr 1193; 1194; CHECK-P9-LABEL: testGlob8PtrPlus0: 1195; CHECK-P9: # %bb.0: # %entry 1196; CHECK-P9-NEXT: addis r3, r2, GlobLd8@toc@ha 1197; CHECK-P9-NEXT: addis r4, r2, GlobSt8@toc@ha 1198; CHECK-P9-NEXT: ld r3, GlobLd8@toc@l(r3) 1199; CHECK-P9-NEXT: std r3, GlobSt8@toc@l(r4) 1200; CHECK-P9-NEXT: blr 1201; 1202; CHECK-P8-LABEL: testGlob8PtrPlus0: 1203; CHECK-P8: # %bb.0: # %entry 1204; CHECK-P8-NEXT: addis r3, r2, GlobLd8@toc@ha 1205; CHECK-P8-NEXT: ld r3, GlobLd8@toc@l(r3) 1206; CHECK-P8-NEXT: addis r4, r2, GlobSt8@toc@ha 1207; CHECK-P8-NEXT: std r3, GlobSt8@toc@l(r4) 1208; CHECK-P8-NEXT: blr 1209entry: 1210 %0 = load i64, ptr @GlobLd8, align 8 1211 store i64 %0, ptr @GlobSt8, align 8 1212 ret void 1213} 1214 1215; Function Attrs: nofree norecurse nounwind uwtable willreturn 1216define dso_local void @testGlob8PtrPlus3() { 1217; CHECK-P10-LE-LABEL: testGlob8PtrPlus3: 1218; CHECK-P10-LE: # %bb.0: # %entry 1219; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL+3(0), 1 1220; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL+3(0), 1 1221; CHECK-P10-LE-NEXT: blr 1222; 1223; CHECK-P10-BE-LABEL: testGlob8PtrPlus3: 1224; CHECK-P10-BE: # %bb.0: # %entry 1225; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha 1226; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha 1227; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd8@toc@l 1228; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt8@toc@l 1229; CHECK-P10-BE-NEXT: pld r3, 3(r3), 0 1230; CHECK-P10-BE-NEXT: pstd r3, 3(r4), 0 1231; CHECK-P10-BE-NEXT: blr 1232; 1233; CHECK-LABEL: testGlob8PtrPlus3: 1234; CHECK: # %bb.0: # %entry 1235; CHECK-NEXT: addis r3, r2, GlobLd8@toc@ha 1236; CHECK-NEXT: li r4, 3 1237; CHECK-NEXT: addis r5, r2, GlobSt8@toc@ha 1238; CHECK-NEXT: addi r3, r3, GlobLd8@toc@l 1239; CHECK-NEXT: addi r5, r5, GlobSt8@toc@l 1240; CHECK-NEXT: ldx r3, r3, r4 1241; CHECK-NEXT: stdx r3, r5, r4 1242; CHECK-NEXT: blr 1243entry: 1244 %0 = load i64, ptr getelementptr inbounds (i8, ptr @GlobLd8, i64 3), align 8 1245 store i64 %0, ptr getelementptr inbounds (i8, ptr @GlobSt8, i64 3), align 8 1246 ret void 1247} 1248 1249; Function Attrs: nofree norecurse nounwind uwtable willreturn 1250define dso_local void @testGlob8PtrPlus4() { 1251; CHECK-P10-LE-LABEL: testGlob8PtrPlus4: 1252; CHECK-P10-LE: # %bb.0: # %entry 1253; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL+4(0), 1 1254; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL+4(0), 1 1255; CHECK-P10-LE-NEXT: blr 1256; 1257; CHECK-P10-BE-LABEL: testGlob8PtrPlus4: 1258; CHECK-P10-BE: # %bb.0: # %entry 1259; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha 1260; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha 1261; CHECK-P10-BE-NEXT: ld r3, GlobLd8@toc@l+4(r3) 1262; CHECK-P10-BE-NEXT: std r3, GlobSt8@toc@l+4(r4) 1263; CHECK-P10-BE-NEXT: blr 1264; 1265; CHECK-P9-LABEL: testGlob8PtrPlus4: 1266; CHECK-P9: # %bb.0: # %entry 1267; CHECK-P9-NEXT: addis r3, r2, GlobLd8@toc@ha 1268; CHECK-P9-NEXT: addis r4, r2, GlobSt8@toc@ha 1269; CHECK-P9-NEXT: ld r3, GlobLd8@toc@l+4(r3) 1270; CHECK-P9-NEXT: std r3, GlobSt8@toc@l+4(r4) 1271; CHECK-P9-NEXT: blr 1272; 1273; CHECK-P8-LABEL: testGlob8PtrPlus4: 1274; CHECK-P8: # %bb.0: # %entry 1275; CHECK-P8-NEXT: addis r3, r2, GlobLd8@toc@ha 1276; CHECK-P8-NEXT: ld r3, GlobLd8@toc@l+4(r3) 1277; CHECK-P8-NEXT: addis r4, r2, GlobSt8@toc@ha 1278; CHECK-P8-NEXT: std r3, GlobSt8@toc@l+4(r4) 1279; CHECK-P8-NEXT: blr 1280entry: 1281 %0 = load i64, ptr getelementptr inbounds (i8, ptr @GlobLd8, i64 4), align 8 1282 store i64 %0, ptr getelementptr inbounds (i8, ptr @GlobSt8, i64 4), align 8 1283 ret void 1284} 1285 1286; Function Attrs: nofree norecurse nounwind uwtable willreturn 1287define dso_local void @testGlob8PtrPlus16() { 1288; CHECK-P10-LE-LABEL: testGlob8PtrPlus16: 1289; CHECK-P10-LE: # %bb.0: # %entry 1290; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL+16(0), 1 1291; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL+16(0), 1 1292; CHECK-P10-LE-NEXT: blr 1293; 1294; CHECK-P10-BE-LABEL: testGlob8PtrPlus16: 1295; CHECK-P10-BE: # %bb.0: # %entry 1296; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha+16 1297; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha+16 1298; CHECK-P10-BE-NEXT: ld r3, GlobLd8@toc@l+16(r3) 1299; CHECK-P10-BE-NEXT: std r3, GlobSt8@toc@l+16(r4) 1300; CHECK-P10-BE-NEXT: blr 1301; 1302; CHECK-P9-LABEL: testGlob8PtrPlus16: 1303; CHECK-P9: # %bb.0: # %entry 1304; CHECK-P9-NEXT: addis r3, r2, GlobLd8@toc@ha+16 1305; CHECK-P9-NEXT: addis r4, r2, GlobSt8@toc@ha+16 1306; CHECK-P9-NEXT: ld r3, GlobLd8@toc@l+16(r3) 1307; CHECK-P9-NEXT: std r3, GlobSt8@toc@l+16(r4) 1308; CHECK-P9-NEXT: blr 1309; 1310; CHECK-P8-LABEL: testGlob8PtrPlus16: 1311; CHECK-P8: # %bb.0: # %entry 1312; CHECK-P8-NEXT: addis r3, r2, GlobLd8@toc@ha+16 1313; CHECK-P8-NEXT: ld r3, GlobLd8@toc@l+16(r3) 1314; CHECK-P8-NEXT: addis r4, r2, GlobSt8@toc@ha+16 1315; CHECK-P8-NEXT: std r3, GlobSt8@toc@l+16(r4) 1316; CHECK-P8-NEXT: blr 1317entry: 1318 %0 = load i64, ptr getelementptr inbounds ([20 x i64], ptr @GlobLd8, i64 0, i64 2), align 8 1319 store i64 %0, ptr getelementptr inbounds ([20 x i64], ptr @GlobSt8, i64 0, i64 2), align 8 1320 ret void 1321} 1322 1323; Function Attrs: nofree norecurse nounwind uwtable willreturn 1324define dso_local void @testGlob8PtrPlusVar(i64 %Idx) { 1325; CHECK-P10-LE-LABEL: testGlob8PtrPlusVar: 1326; CHECK-P10-LE: # %bb.0: # %entry 1327; CHECK-P10-LE-NEXT: sldi r3, r3, 3 1328; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd8@PCREL, 1 1329; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt8@PCREL, 1 1330; CHECK-P10-LE-NEXT: ldx r4, r4, r3 1331; CHECK-P10-LE-NEXT: stdx r4, r5, r3 1332; CHECK-P10-LE-NEXT: blr 1333; 1334; CHECK-P10-BE-LABEL: testGlob8PtrPlusVar: 1335; CHECK-P10-BE: # %bb.0: # %entry 1336; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd8@toc@ha 1337; CHECK-P10-BE-NEXT: sldi r3, r3, 3 1338; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt8@toc@ha 1339; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd8@toc@l 1340; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt8@toc@l 1341; CHECK-P10-BE-NEXT: ldx r4, r4, r3 1342; CHECK-P10-BE-NEXT: stdx r4, r5, r3 1343; CHECK-P10-BE-NEXT: blr 1344; 1345; CHECK-LABEL: testGlob8PtrPlusVar: 1346; CHECK: # %bb.0: # %entry 1347; CHECK-NEXT: addis r4, r2, GlobLd8@toc@ha 1348; CHECK-NEXT: sldi r3, r3, 3 1349; CHECK-NEXT: addis r5, r2, GlobSt8@toc@ha 1350; CHECK-NEXT: addi r4, r4, GlobLd8@toc@l 1351; CHECK-NEXT: addi r5, r5, GlobSt8@toc@l 1352; CHECK-NEXT: ldx r4, r4, r3 1353; CHECK-NEXT: stdx r4, r5, r3 1354; CHECK-NEXT: blr 1355entry: 1356 %arrayidx = getelementptr inbounds [20 x i64], ptr @GlobLd8, i64 0, i64 %Idx 1357 %0 = load i64, ptr %arrayidx, align 8 1358 %arrayidx1 = getelementptr inbounds [20 x i64], ptr @GlobSt8, i64 0, i64 %Idx 1359 store i64 %0, ptr %arrayidx1, align 8 1360 ret void 1361} 1362 1363; Function Attrs: nofree norecurse nounwind uwtable willreturn 1364define dso_local void @testGlob9PtrPlus0() { 1365; CHECK-P10-LE-LABEL: testGlob9PtrPlus0: 1366; CHECK-P10-LE: # %bb.0: # %entry 1367; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL(0), 1 1368; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL(0), 1 1369; CHECK-P10-LE-NEXT: blr 1370; 1371; CHECK-P10-BE-LABEL: testGlob9PtrPlus0: 1372; CHECK-P10-BE: # %bb.0: # %entry 1373; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha 1374; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha 1375; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l(r3) 1376; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l(r4) 1377; CHECK-P10-BE-NEXT: blr 1378; 1379; CHECK-LABEL: testGlob9PtrPlus0: 1380; CHECK: # %bb.0: # %entry 1381; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha 1382; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha 1383; CHECK-NEXT: lwz r3, GlobLd9@toc@l(r3) 1384; CHECK-NEXT: stw r3, GlobSt9@toc@l(r4) 1385; CHECK-NEXT: blr 1386entry: 1387 %0 = load float, ptr @GlobLd9, align 4 1388 store float %0, ptr @GlobSt9, align 4 1389 ret void 1390} 1391 1392; Function Attrs: nofree norecurse nounwind uwtable willreturn 1393define dso_local void @testGlob9PtrPlus3() { 1394; CHECK-P10-LE-LABEL: testGlob9PtrPlus3: 1395; CHECK-P10-LE: # %bb.0: # %entry 1396; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL+3(0), 1 1397; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL+3(0), 1 1398; CHECK-P10-LE-NEXT: blr 1399; 1400; CHECK-P10-BE-LABEL: testGlob9PtrPlus3: 1401; CHECK-P10-BE: # %bb.0: # %entry 1402; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha 1403; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha 1404; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l+3(r3) 1405; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l+3(r4) 1406; CHECK-P10-BE-NEXT: blr 1407; 1408; CHECK-LABEL: testGlob9PtrPlus3: 1409; CHECK: # %bb.0: # %entry 1410; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha 1411; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha 1412; CHECK-NEXT: lwz r3, GlobLd9@toc@l+3(r3) 1413; CHECK-NEXT: stw r3, GlobSt9@toc@l+3(r4) 1414; CHECK-NEXT: blr 1415entry: 1416 %0 = load float, ptr getelementptr inbounds (i8, ptr @GlobLd9, i64 3), align 4 1417 store float %0, ptr getelementptr inbounds (i8, ptr @GlobSt9, i64 3), align 4 1418 ret void 1419} 1420 1421; Function Attrs: nofree norecurse nounwind uwtable willreturn 1422define dso_local void @testGlob9PtrPlus4() { 1423; CHECK-P10-LE-LABEL: testGlob9PtrPlus4: 1424; CHECK-P10-LE: # %bb.0: # %entry 1425; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL+4(0), 1 1426; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL+4(0), 1 1427; CHECK-P10-LE-NEXT: blr 1428; 1429; CHECK-P10-BE-LABEL: testGlob9PtrPlus4: 1430; CHECK-P10-BE: # %bb.0: # %entry 1431; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha+4 1432; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha+4 1433; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l+4(r3) 1434; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l+4(r4) 1435; CHECK-P10-BE-NEXT: blr 1436; 1437; CHECK-LABEL: testGlob9PtrPlus4: 1438; CHECK: # %bb.0: # %entry 1439; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha+4 1440; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha+4 1441; CHECK-NEXT: lwz r3, GlobLd9@toc@l+4(r3) 1442; CHECK-NEXT: stw r3, GlobSt9@toc@l+4(r4) 1443; CHECK-NEXT: blr 1444entry: 1445 %0 = load float, ptr getelementptr inbounds ([20 x float], ptr @GlobLd9, i64 0, i64 1), align 4 1446 store float %0, ptr getelementptr inbounds ([20 x float], ptr @GlobSt9, i64 0, i64 1), align 4 1447 ret void 1448} 1449 1450; Function Attrs: nofree norecurse nounwind uwtable willreturn 1451define dso_local void @testGlob9PtrPlus16() { 1452; CHECK-P10-LE-LABEL: testGlob9PtrPlus16: 1453; CHECK-P10-LE: # %bb.0: # %entry 1454; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL+16(0), 1 1455; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL+16(0), 1 1456; CHECK-P10-LE-NEXT: blr 1457; 1458; CHECK-P10-BE-LABEL: testGlob9PtrPlus16: 1459; CHECK-P10-BE: # %bb.0: # %entry 1460; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha+16 1461; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha+16 1462; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l+16(r3) 1463; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l+16(r4) 1464; CHECK-P10-BE-NEXT: blr 1465; 1466; CHECK-LABEL: testGlob9PtrPlus16: 1467; CHECK: # %bb.0: # %entry 1468; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha+16 1469; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha+16 1470; CHECK-NEXT: lwz r3, GlobLd9@toc@l+16(r3) 1471; CHECK-NEXT: stw r3, GlobSt9@toc@l+16(r4) 1472; CHECK-NEXT: blr 1473entry: 1474 %0 = load float, ptr getelementptr inbounds ([20 x float], ptr @GlobLd9, i64 0, i64 4), align 4 1475 store float %0, ptr getelementptr inbounds ([20 x float], ptr @GlobSt9, i64 0, i64 4), align 4 1476 ret void 1477} 1478 1479; Function Attrs: nofree norecurse nounwind uwtable willreturn 1480define dso_local void @testGlob9PtrPlusVar(i64 %Idx) { 1481; CHECK-P10-LE-LABEL: testGlob9PtrPlusVar: 1482; CHECK-P10-LE: # %bb.0: # %entry 1483; CHECK-P10-LE-NEXT: sldi r3, r3, 2 1484; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd9@PCREL, 1 1485; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt9@PCREL, 1 1486; CHECK-P10-LE-NEXT: lwzx r4, r4, r3 1487; CHECK-P10-LE-NEXT: stwx r4, r5, r3 1488; CHECK-P10-LE-NEXT: blr 1489; 1490; CHECK-P10-BE-LABEL: testGlob9PtrPlusVar: 1491; CHECK-P10-BE: # %bb.0: # %entry 1492; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd9@toc@ha 1493; CHECK-P10-BE-NEXT: sldi r3, r3, 2 1494; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt9@toc@ha 1495; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd9@toc@l 1496; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt9@toc@l 1497; CHECK-P10-BE-NEXT: lwzx r4, r4, r3 1498; CHECK-P10-BE-NEXT: stwx r4, r5, r3 1499; CHECK-P10-BE-NEXT: blr 1500; 1501; CHECK-LABEL: testGlob9PtrPlusVar: 1502; CHECK: # %bb.0: # %entry 1503; CHECK-NEXT: addis r4, r2, GlobLd9@toc@ha 1504; CHECK-NEXT: sldi r3, r3, 2 1505; CHECK-NEXT: addis r5, r2, GlobSt9@toc@ha 1506; CHECK-NEXT: addi r4, r4, GlobLd9@toc@l 1507; CHECK-NEXT: addi r5, r5, GlobSt9@toc@l 1508; CHECK-NEXT: lwzx r4, r4, r3 1509; CHECK-NEXT: stwx r4, r5, r3 1510; CHECK-NEXT: blr 1511entry: 1512 %arrayidx = getelementptr inbounds [20 x float], ptr @GlobLd9, i64 0, i64 %Idx 1513 %0 = load float, ptr %arrayidx, align 4 1514 %arrayidx1 = getelementptr inbounds [20 x float], ptr @GlobSt9, i64 0, i64 %Idx 1515 store float %0, ptr %arrayidx1, align 4 1516 ret void 1517} 1518 1519; Function Attrs: nofree norecurse nounwind uwtable willreturn 1520define dso_local void @testGlob10PtrPlus0() { 1521; CHECK-P10-LE-LABEL: testGlob10PtrPlus0: 1522; CHECK-P10-LE: # %bb.0: # %entry 1523; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL(0), 1 1524; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL(0), 1 1525; CHECK-P10-LE-NEXT: blr 1526; 1527; CHECK-P10-BE-LABEL: testGlob10PtrPlus0: 1528; CHECK-P10-BE: # %bb.0: # %entry 1529; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha 1530; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha 1531; CHECK-P10-BE-NEXT: ld r3, GlobLd10@toc@l(r3) 1532; CHECK-P10-BE-NEXT: std r3, GlobSt10@toc@l(r4) 1533; CHECK-P10-BE-NEXT: blr 1534; 1535; CHECK-P9-LABEL: testGlob10PtrPlus0: 1536; CHECK-P9: # %bb.0: # %entry 1537; CHECK-P9-NEXT: addis r3, r2, GlobLd10@toc@ha 1538; CHECK-P9-NEXT: addis r4, r2, GlobSt10@toc@ha 1539; CHECK-P9-NEXT: ld r3, GlobLd10@toc@l(r3) 1540; CHECK-P9-NEXT: std r3, GlobSt10@toc@l(r4) 1541; CHECK-P9-NEXT: blr 1542; 1543; CHECK-P8-LABEL: testGlob10PtrPlus0: 1544; CHECK-P8: # %bb.0: # %entry 1545; CHECK-P8-NEXT: addis r3, r2, GlobLd10@toc@ha 1546; CHECK-P8-NEXT: ld r3, GlobLd10@toc@l(r3) 1547; CHECK-P8-NEXT: addis r4, r2, GlobSt10@toc@ha 1548; CHECK-P8-NEXT: std r3, GlobSt10@toc@l(r4) 1549; CHECK-P8-NEXT: blr 1550entry: 1551 %0 = load double, ptr @GlobLd10, align 8 1552 store double %0, ptr @GlobSt10, align 8 1553 ret void 1554} 1555 1556; Function Attrs: nofree norecurse nounwind uwtable willreturn 1557define dso_local void @testGlob10PtrPlus3() { 1558; CHECK-P10-LE-LABEL: testGlob10PtrPlus3: 1559; CHECK-P10-LE: # %bb.0: # %entry 1560; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL+3(0), 1 1561; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL+3(0), 1 1562; CHECK-P10-LE-NEXT: blr 1563; 1564; CHECK-P10-BE-LABEL: testGlob10PtrPlus3: 1565; CHECK-P10-BE: # %bb.0: # %entry 1566; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha 1567; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha 1568; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd10@toc@l 1569; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt10@toc@l 1570; CHECK-P10-BE-NEXT: pld r3, 3(r3), 0 1571; CHECK-P10-BE-NEXT: pstd r3, 3(r4), 0 1572; CHECK-P10-BE-NEXT: blr 1573; 1574; CHECK-LABEL: testGlob10PtrPlus3: 1575; CHECK: # %bb.0: # %entry 1576; CHECK-NEXT: addis r3, r2, GlobLd10@toc@ha 1577; CHECK-NEXT: li r4, 3 1578; CHECK-NEXT: addis r5, r2, GlobSt10@toc@ha 1579; CHECK-NEXT: addi r3, r3, GlobLd10@toc@l 1580; CHECK-NEXT: addi r5, r5, GlobSt10@toc@l 1581; CHECK-NEXT: ldx r3, r3, r4 1582; CHECK-NEXT: stdx r3, r5, r4 1583; CHECK-NEXT: blr 1584entry: 1585 %0 = load double, ptr getelementptr inbounds (i8, ptr @GlobLd10, i64 3), align 8 1586 store double %0, ptr getelementptr inbounds (i8, ptr @GlobSt10, i64 3), align 8 1587 ret void 1588} 1589 1590; Function Attrs: nofree norecurse nounwind uwtable willreturn 1591define dso_local void @testGlob10PtrPlus4() { 1592; CHECK-P10-LE-LABEL: testGlob10PtrPlus4: 1593; CHECK-P10-LE: # %bb.0: # %entry 1594; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL+4(0), 1 1595; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL+4(0), 1 1596; CHECK-P10-LE-NEXT: blr 1597; 1598; CHECK-P10-BE-LABEL: testGlob10PtrPlus4: 1599; CHECK-P10-BE: # %bb.0: # %entry 1600; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha 1601; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha 1602; CHECK-P10-BE-NEXT: ld r3, GlobLd10@toc@l+4(r3) 1603; CHECK-P10-BE-NEXT: std r3, GlobSt10@toc@l+4(r4) 1604; CHECK-P10-BE-NEXT: blr 1605; 1606; CHECK-P9-LABEL: testGlob10PtrPlus4: 1607; CHECK-P9: # %bb.0: # %entry 1608; CHECK-P9-NEXT: addis r3, r2, GlobLd10@toc@ha 1609; CHECK-P9-NEXT: addis r4, r2, GlobSt10@toc@ha 1610; CHECK-P9-NEXT: ld r3, GlobLd10@toc@l+4(r3) 1611; CHECK-P9-NEXT: std r3, GlobSt10@toc@l+4(r4) 1612; CHECK-P9-NEXT: blr 1613; 1614; CHECK-P8-LABEL: testGlob10PtrPlus4: 1615; CHECK-P8: # %bb.0: # %entry 1616; CHECK-P8-NEXT: addis r3, r2, GlobLd10@toc@ha 1617; CHECK-P8-NEXT: ld r3, GlobLd10@toc@l+4(r3) 1618; CHECK-P8-NEXT: addis r4, r2, GlobSt10@toc@ha 1619; CHECK-P8-NEXT: std r3, GlobSt10@toc@l+4(r4) 1620; CHECK-P8-NEXT: blr 1621entry: 1622 %0 = load double, ptr getelementptr inbounds (i8, ptr @GlobLd10, i64 4), align 8 1623 store double %0, ptr getelementptr inbounds (i8, ptr @GlobSt10, i64 4), align 8 1624 ret void 1625} 1626 1627; Function Attrs: nofree norecurse nounwind uwtable willreturn 1628define dso_local void @testGlob10PtrPlus16() { 1629; CHECK-P10-LE-LABEL: testGlob10PtrPlus16: 1630; CHECK-P10-LE: # %bb.0: # %entry 1631; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL+16(0), 1 1632; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL+16(0), 1 1633; CHECK-P10-LE-NEXT: blr 1634; 1635; CHECK-P10-BE-LABEL: testGlob10PtrPlus16: 1636; CHECK-P10-BE: # %bb.0: # %entry 1637; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha+16 1638; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha+16 1639; CHECK-P10-BE-NEXT: ld r3, GlobLd10@toc@l+16(r3) 1640; CHECK-P10-BE-NEXT: std r3, GlobSt10@toc@l+16(r4) 1641; CHECK-P10-BE-NEXT: blr 1642; 1643; CHECK-P9-LABEL: testGlob10PtrPlus16: 1644; CHECK-P9: # %bb.0: # %entry 1645; CHECK-P9-NEXT: addis r3, r2, GlobLd10@toc@ha+16 1646; CHECK-P9-NEXT: addis r4, r2, GlobSt10@toc@ha+16 1647; CHECK-P9-NEXT: ld r3, GlobLd10@toc@l+16(r3) 1648; CHECK-P9-NEXT: std r3, GlobSt10@toc@l+16(r4) 1649; CHECK-P9-NEXT: blr 1650; 1651; CHECK-P8-LABEL: testGlob10PtrPlus16: 1652; CHECK-P8: # %bb.0: # %entry 1653; CHECK-P8-NEXT: addis r3, r2, GlobLd10@toc@ha+16 1654; CHECK-P8-NEXT: ld r3, GlobLd10@toc@l+16(r3) 1655; CHECK-P8-NEXT: addis r4, r2, GlobSt10@toc@ha+16 1656; CHECK-P8-NEXT: std r3, GlobSt10@toc@l+16(r4) 1657; CHECK-P8-NEXT: blr 1658entry: 1659 %0 = load double, ptr getelementptr inbounds ([20 x double], ptr @GlobLd10, i64 0, i64 2), align 8 1660 store double %0, ptr getelementptr inbounds ([20 x double], ptr @GlobSt10, i64 0, i64 2), align 8 1661 ret void 1662} 1663 1664; Function Attrs: nofree norecurse nounwind uwtable willreturn 1665define dso_local void @testGlob10PtrPlusVar(i64 %Idx) { 1666; CHECK-P10-LE-LABEL: testGlob10PtrPlusVar: 1667; CHECK-P10-LE: # %bb.0: # %entry 1668; CHECK-P10-LE-NEXT: sldi r3, r3, 3 1669; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd10@PCREL, 1 1670; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt10@PCREL, 1 1671; CHECK-P10-LE-NEXT: ldx r4, r4, r3 1672; CHECK-P10-LE-NEXT: stdx r4, r5, r3 1673; CHECK-P10-LE-NEXT: blr 1674; 1675; CHECK-P10-BE-LABEL: testGlob10PtrPlusVar: 1676; CHECK-P10-BE: # %bb.0: # %entry 1677; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd10@toc@ha 1678; CHECK-P10-BE-NEXT: sldi r3, r3, 3 1679; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt10@toc@ha 1680; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd10@toc@l 1681; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt10@toc@l 1682; CHECK-P10-BE-NEXT: ldx r4, r4, r3 1683; CHECK-P10-BE-NEXT: stdx r4, r5, r3 1684; CHECK-P10-BE-NEXT: blr 1685; 1686; CHECK-LABEL: testGlob10PtrPlusVar: 1687; CHECK: # %bb.0: # %entry 1688; CHECK-NEXT: addis r4, r2, GlobLd10@toc@ha 1689; CHECK-NEXT: sldi r3, r3, 3 1690; CHECK-NEXT: addis r5, r2, GlobSt10@toc@ha 1691; CHECK-NEXT: addi r4, r4, GlobLd10@toc@l 1692; CHECK-NEXT: addi r5, r5, GlobSt10@toc@l 1693; CHECK-NEXT: ldx r4, r4, r3 1694; CHECK-NEXT: stdx r4, r5, r3 1695; CHECK-NEXT: blr 1696entry: 1697 %arrayidx = getelementptr inbounds [20 x double], ptr @GlobLd10, i64 0, i64 %Idx 1698 %0 = load double, ptr %arrayidx, align 8 1699 %arrayidx1 = getelementptr inbounds [20 x double], ptr @GlobSt10, i64 0, i64 %Idx 1700 store double %0, ptr %arrayidx1, align 8 1701 ret void 1702} 1703 1704; Function Attrs: nofree norecurse nounwind uwtable willreturn 1705define dso_local void @testGlob11PtrPlus0() { 1706; CHECK-P10-LE-LABEL: testGlob11PtrPlus0: 1707; CHECK-P10-LE: # %bb.0: # %entry 1708; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL(0), 1 1709; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL(0), 1 1710; CHECK-P10-LE-NEXT: blr 1711; 1712; CHECK-P10-BE-LABEL: testGlob11PtrPlus0: 1713; CHECK-P10-BE: # %bb.0: # %entry 1714; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1715; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1716; CHECK-P10-BE-NEXT: lxv vs0, 0(r3) 1717; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1718; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1719; CHECK-P10-BE-NEXT: stxv vs0, 0(r3) 1720; CHECK-P10-BE-NEXT: blr 1721; 1722; CHECK-P9-LABEL: testGlob11PtrPlus0: 1723; CHECK-P9: # %bb.0: # %entry 1724; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha 1725; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l 1726; CHECK-P9-NEXT: lxv vs0, 0(r3) 1727; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha 1728; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l 1729; CHECK-P9-NEXT: stxv vs0, 0(r3) 1730; CHECK-P9-NEXT: blr 1731; 1732; CHECK-P8-LE-LABEL: testGlob11PtrPlus0: 1733; CHECK-P8-LE: # %bb.0: # %entry 1734; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha 1735; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l 1736; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 1737; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha 1738; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l 1739; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 1740; CHECK-P8-LE-NEXT: blr 1741; 1742; CHECK-P8-BE-LABEL: testGlob11PtrPlus0: 1743; CHECK-P8-BE: # %bb.0: # %entry 1744; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1745; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1746; CHECK-P8-BE-NEXT: lxvw4x vs0, 0, r3 1747; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1748; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1749; CHECK-P8-BE-NEXT: stxvw4x vs0, 0, r3 1750; CHECK-P8-BE-NEXT: blr 1751entry: 1752 %0 = load <16 x i8>, ptr @GlobLd11, align 16 1753 store <16 x i8> %0, ptr @GlobSt11, align 16 1754 ret void 1755} 1756 1757; Function Attrs: nofree norecurse nounwind uwtable willreturn 1758define dso_local void @testGlob11PtrPlus3() { 1759; CHECK-P10-LE-LABEL: testGlob11PtrPlus3: 1760; CHECK-P10-LE: # %bb.0: # %entry 1761; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL+3(0), 1 1762; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL+3(0), 1 1763; CHECK-P10-LE-NEXT: blr 1764; 1765; CHECK-P10-BE-LABEL: testGlob11PtrPlus3: 1766; CHECK-P10-BE: # %bb.0: # %entry 1767; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1768; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1769; CHECK-P10-BE-NEXT: plxv vs0, 3(r3), 0 1770; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1771; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1772; CHECK-P10-BE-NEXT: pstxv vs0, 3(r3), 0 1773; CHECK-P10-BE-NEXT: blr 1774; 1775; CHECK-P9-LABEL: testGlob11PtrPlus3: 1776; CHECK-P9: # %bb.0: # %entry 1777; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha 1778; CHECK-P9-NEXT: li r4, 3 1779; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l 1780; CHECK-P9-NEXT: lxvx vs0, r3, r4 1781; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha 1782; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l 1783; CHECK-P9-NEXT: stxvx vs0, r3, r4 1784; CHECK-P9-NEXT: blr 1785; 1786; CHECK-P8-LE-LABEL: testGlob11PtrPlus3: 1787; CHECK-P8-LE: # %bb.0: # %entry 1788; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha 1789; CHECK-P8-LE-NEXT: li r4, 3 1790; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l 1791; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 1792; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha 1793; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l 1794; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1795; CHECK-P8-LE-NEXT: blr 1796; 1797; CHECK-P8-BE-LABEL: testGlob11PtrPlus3: 1798; CHECK-P8-BE: # %bb.0: # %entry 1799; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1800; CHECK-P8-BE-NEXT: li r4, 3 1801; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1802; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 1803; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1804; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1805; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 1806; CHECK-P8-BE-NEXT: blr 1807entry: 1808 %0 = load <16 x i8>, ptr getelementptr ([20 x <16 x i8>], ptr @GlobLd11, i64 0, i64 0, i64 3), align 16 1809 store <16 x i8> %0, ptr getelementptr ([20 x <16 x i8>], ptr @GlobSt11, i64 0, i64 0, i64 3), align 16 1810 ret void 1811} 1812 1813; Function Attrs: nofree norecurse nounwind uwtable willreturn 1814define dso_local void @testGlob11PtrPlus4() { 1815; CHECK-P10-LE-LABEL: testGlob11PtrPlus4: 1816; CHECK-P10-LE: # %bb.0: # %entry 1817; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL+4(0), 1 1818; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL+4(0), 1 1819; CHECK-P10-LE-NEXT: blr 1820; 1821; CHECK-P10-BE-LABEL: testGlob11PtrPlus4: 1822; CHECK-P10-BE: # %bb.0: # %entry 1823; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1824; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1825; CHECK-P10-BE-NEXT: plxv vs0, 4(r3), 0 1826; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1827; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1828; CHECK-P10-BE-NEXT: pstxv vs0, 4(r3), 0 1829; CHECK-P10-BE-NEXT: blr 1830; 1831; CHECK-P9-LABEL: testGlob11PtrPlus4: 1832; CHECK-P9: # %bb.0: # %entry 1833; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha 1834; CHECK-P9-NEXT: li r4, 4 1835; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l 1836; CHECK-P9-NEXT: lxvx vs0, r3, r4 1837; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha 1838; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l 1839; CHECK-P9-NEXT: stxvx vs0, r3, r4 1840; CHECK-P9-NEXT: blr 1841; 1842; CHECK-P8-LE-LABEL: testGlob11PtrPlus4: 1843; CHECK-P8-LE: # %bb.0: # %entry 1844; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha 1845; CHECK-P8-LE-NEXT: li r4, 4 1846; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l 1847; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 1848; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha 1849; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l 1850; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1851; CHECK-P8-LE-NEXT: blr 1852; 1853; CHECK-P8-BE-LABEL: testGlob11PtrPlus4: 1854; CHECK-P8-BE: # %bb.0: # %entry 1855; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1856; CHECK-P8-BE-NEXT: li r4, 4 1857; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1858; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 1859; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1860; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1861; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 1862; CHECK-P8-BE-NEXT: blr 1863entry: 1864 %0 = load <16 x i8>, ptr getelementptr ([20 x <16 x i8>], ptr @GlobLd11, i64 0, i64 0, i64 4), align 16 1865 store <16 x i8> %0, ptr getelementptr ([20 x <16 x i8>], ptr @GlobSt11, i64 0, i64 0, i64 4), align 16 1866 ret void 1867} 1868 1869; Function Attrs: nofree norecurse nounwind uwtable willreturn 1870define dso_local void @testGlob11PtrPlus16() { 1871; CHECK-P10-LE-LABEL: testGlob11PtrPlus16: 1872; CHECK-P10-LE: # %bb.0: # %entry 1873; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL+16(0), 1 1874; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL+16(0), 1 1875; CHECK-P10-LE-NEXT: blr 1876; 1877; CHECK-P10-BE-LABEL: testGlob11PtrPlus16: 1878; CHECK-P10-BE: # %bb.0: # %entry 1879; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1880; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1881; CHECK-P10-BE-NEXT: lxv vs0, 16(r3) 1882; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1883; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1884; CHECK-P10-BE-NEXT: stxv vs0, 16(r3) 1885; CHECK-P10-BE-NEXT: blr 1886; 1887; CHECK-P9-LABEL: testGlob11PtrPlus16: 1888; CHECK-P9: # %bb.0: # %entry 1889; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha 1890; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l 1891; CHECK-P9-NEXT: lxv vs0, 16(r3) 1892; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha 1893; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l 1894; CHECK-P9-NEXT: stxv vs0, 16(r3) 1895; CHECK-P9-NEXT: blr 1896; 1897; CHECK-P8-LE-LABEL: testGlob11PtrPlus16: 1898; CHECK-P8-LE: # %bb.0: # %entry 1899; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha 1900; CHECK-P8-LE-NEXT: li r4, 16 1901; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l 1902; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 1903; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha 1904; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l 1905; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 1906; CHECK-P8-LE-NEXT: blr 1907; 1908; CHECK-P8-BE-LABEL: testGlob11PtrPlus16: 1909; CHECK-P8-BE: # %bb.0: # %entry 1910; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha 1911; CHECK-P8-BE-NEXT: li r4, 16 1912; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l 1913; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 1914; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha 1915; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l 1916; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 1917; CHECK-P8-BE-NEXT: blr 1918entry: 1919 %0 = load <16 x i8>, ptr getelementptr inbounds ([20 x <16 x i8>], ptr @GlobLd11, i64 0, i64 1, i64 0), align 16 1920 store <16 x i8> %0, ptr getelementptr inbounds ([20 x <16 x i8>], ptr @GlobSt11, i64 0, i64 1, i64 0), align 16 1921 ret void 1922} 1923 1924; Function Attrs: nofree norecurse nounwind uwtable willreturn 1925define dso_local void @testGlob11PtrPlusVar(i64 %Idx) { 1926; CHECK-P10-LE-LABEL: testGlob11PtrPlusVar: 1927; CHECK-P10-LE: # %bb.0: # %entry 1928; CHECK-P10-LE-NEXT: sldi r3, r3, 4 1929; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd11@PCREL, 1 1930; CHECK-P10-LE-NEXT: lxvx vs0, r4, r3 1931; CHECK-P10-LE-NEXT: paddi r4, 0, GlobSt11@PCREL, 1 1932; CHECK-P10-LE-NEXT: stxvx vs0, r4, r3 1933; CHECK-P10-LE-NEXT: blr 1934; 1935; CHECK-P10-BE-LABEL: testGlob11PtrPlusVar: 1936; CHECK-P10-BE: # %bb.0: # %entry 1937; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd11@toc@ha 1938; CHECK-P10-BE-NEXT: sldi r3, r3, 4 1939; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd11@toc@l 1940; CHECK-P10-BE-NEXT: lxvx vs0, r4, r3 1941; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt11@toc@ha 1942; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt11@toc@l 1943; CHECK-P10-BE-NEXT: stxvx vs0, r4, r3 1944; CHECK-P10-BE-NEXT: blr 1945; 1946; CHECK-P9-LABEL: testGlob11PtrPlusVar: 1947; CHECK-P9: # %bb.0: # %entry 1948; CHECK-P9-NEXT: addis r4, r2, GlobLd11@toc@ha 1949; CHECK-P9-NEXT: sldi r3, r3, 4 1950; CHECK-P9-NEXT: addi r4, r4, GlobLd11@toc@l 1951; CHECK-P9-NEXT: lxvx vs0, r4, r3 1952; CHECK-P9-NEXT: addis r4, r2, GlobSt11@toc@ha 1953; CHECK-P9-NEXT: addi r4, r4, GlobSt11@toc@l 1954; CHECK-P9-NEXT: stxvx vs0, r4, r3 1955; CHECK-P9-NEXT: blr 1956; 1957; CHECK-P8-LE-LABEL: testGlob11PtrPlusVar: 1958; CHECK-P8-LE: # %bb.0: # %entry 1959; CHECK-P8-LE-NEXT: addis r4, r2, GlobLd11@toc@ha 1960; CHECK-P8-LE-NEXT: sldi r3, r3, 4 1961; CHECK-P8-LE-NEXT: addi r4, r4, GlobLd11@toc@l 1962; CHECK-P8-LE-NEXT: lxvd2x vs0, r4, r3 1963; CHECK-P8-LE-NEXT: addis r4, r2, GlobSt11@toc@ha 1964; CHECK-P8-LE-NEXT: addi r4, r4, GlobSt11@toc@l 1965; CHECK-P8-LE-NEXT: stxvd2x vs0, r4, r3 1966; CHECK-P8-LE-NEXT: blr 1967; 1968; CHECK-P8-BE-LABEL: testGlob11PtrPlusVar: 1969; CHECK-P8-BE: # %bb.0: # %entry 1970; CHECK-P8-BE-NEXT: addis r4, r2, GlobLd11@toc@ha 1971; CHECK-P8-BE-NEXT: sldi r3, r3, 4 1972; CHECK-P8-BE-NEXT: addi r4, r4, GlobLd11@toc@l 1973; CHECK-P8-BE-NEXT: lxvw4x vs0, r4, r3 1974; CHECK-P8-BE-NEXT: addis r4, r2, GlobSt11@toc@ha 1975; CHECK-P8-BE-NEXT: addi r4, r4, GlobSt11@toc@l 1976; CHECK-P8-BE-NEXT: stxvw4x vs0, r4, r3 1977; CHECK-P8-BE-NEXT: blr 1978entry: 1979 %arrayidx = getelementptr inbounds [20 x <16 x i8>], ptr @GlobLd11, i64 0, i64 %Idx 1980 %0 = load <16 x i8>, ptr %arrayidx, align 16 1981 %arrayidx1 = getelementptr inbounds [20 x <16 x i8>], ptr @GlobSt11, i64 0, i64 %Idx 1982 store <16 x i8> %0, ptr %arrayidx1, align 16 1983 ret void 1984} 1985 1986; Function Attrs: nofree norecurse nounwind uwtable willreturn 1987define dso_local void @testGlob12PtrPlus0() { 1988; CHECK-P10-LE-LABEL: testGlob12PtrPlus0: 1989; CHECK-P10-LE: # %bb.0: # %entry 1990; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL(0), 1 1991; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL(0), 1 1992; CHECK-P10-LE-NEXT: blr 1993; 1994; CHECK-P10-BE-LABEL: testGlob12PtrPlus0: 1995; CHECK-P10-BE: # %bb.0: # %entry 1996; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 1997; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l 1998; CHECK-P10-BE-NEXT: lxv vs0, 0(r3) 1999; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2000; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2001; CHECK-P10-BE-NEXT: stxv vs0, 0(r3) 2002; CHECK-P10-BE-NEXT: blr 2003; 2004; CHECK-P9-LABEL: testGlob12PtrPlus0: 2005; CHECK-P9: # %bb.0: # %entry 2006; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha 2007; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l 2008; CHECK-P9-NEXT: lxv vs0, 0(r3) 2009; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha 2010; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l 2011; CHECK-P9-NEXT: stxv vs0, 0(r3) 2012; CHECK-P9-NEXT: blr 2013; 2014; CHECK-P8-LE-LABEL: testGlob12PtrPlus0: 2015; CHECK-P8-LE: # %bb.0: # %entry 2016; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha 2017; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l 2018; CHECK-P8-LE-NEXT: lxvd2x vs0, 0, r3 2019; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha 2020; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l 2021; CHECK-P8-LE-NEXT: stxvd2x vs0, 0, r3 2022; CHECK-P8-LE-NEXT: blr 2023; 2024; CHECK-P8-BE-LABEL: testGlob12PtrPlus0: 2025; CHECK-P8-BE: # %bb.0: # %entry 2026; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2027; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2028; CHECK-P8-BE-NEXT: lxvw4x vs0, 0, r3 2029; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2030; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2031; CHECK-P8-BE-NEXT: stxvw4x vs0, 0, r3 2032; CHECK-P8-BE-NEXT: blr 2033entry: 2034 %0 = load <16 x i8>, ptr @GlobLd12, align 16 2035 store <16 x i8> %0, ptr @GlobSt12, align 16 2036 ret void 2037} 2038 2039; Function Attrs: nofree norecurse nounwind uwtable willreturn 2040define dso_local void @testGlob12PtrPlus3() { 2041; CHECK-P10-LE-LABEL: testGlob12PtrPlus3: 2042; CHECK-P10-LE: # %bb.0: # %entry 2043; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL+3(0), 1 2044; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL+3(0), 1 2045; CHECK-P10-LE-NEXT: blr 2046; 2047; CHECK-P10-BE-LABEL: testGlob12PtrPlus3: 2048; CHECK-P10-BE: # %bb.0: # %entry 2049; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2050; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2051; CHECK-P10-BE-NEXT: plxv vs0, 3(r3), 0 2052; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2053; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2054; CHECK-P10-BE-NEXT: pstxv vs0, 3(r3), 0 2055; CHECK-P10-BE-NEXT: blr 2056; 2057; CHECK-P9-LABEL: testGlob12PtrPlus3: 2058; CHECK-P9: # %bb.0: # %entry 2059; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha 2060; CHECK-P9-NEXT: li r4, 3 2061; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l 2062; CHECK-P9-NEXT: lxvx vs0, r3, r4 2063; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha 2064; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l 2065; CHECK-P9-NEXT: stxvx vs0, r3, r4 2066; CHECK-P9-NEXT: blr 2067; 2068; CHECK-P8-LE-LABEL: testGlob12PtrPlus3: 2069; CHECK-P8-LE: # %bb.0: # %entry 2070; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha 2071; CHECK-P8-LE-NEXT: li r4, 3 2072; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l 2073; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 2074; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha 2075; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l 2076; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 2077; CHECK-P8-LE-NEXT: blr 2078; 2079; CHECK-P8-BE-LABEL: testGlob12PtrPlus3: 2080; CHECK-P8-BE: # %bb.0: # %entry 2081; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2082; CHECK-P8-BE-NEXT: li r4, 3 2083; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2084; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 2085; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2086; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2087; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 2088; CHECK-P8-BE-NEXT: blr 2089entry: 2090 %0 = load <16 x i8>, ptr getelementptr ([20 x <16 x i8>], ptr @GlobLd12, i64 0, i64 0, i64 3), align 16 2091 store <16 x i8> %0, ptr getelementptr ([20 x <16 x i8>], ptr @GlobSt12, i64 0, i64 0, i64 3), align 16 2092 ret void 2093} 2094 2095; Function Attrs: nofree norecurse nounwind uwtable willreturn 2096define dso_local void @testGlob12PtrPlus4() { 2097; CHECK-P10-LE-LABEL: testGlob12PtrPlus4: 2098; CHECK-P10-LE: # %bb.0: # %entry 2099; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL+4(0), 1 2100; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL+4(0), 1 2101; CHECK-P10-LE-NEXT: blr 2102; 2103; CHECK-P10-BE-LABEL: testGlob12PtrPlus4: 2104; CHECK-P10-BE: # %bb.0: # %entry 2105; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2106; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2107; CHECK-P10-BE-NEXT: plxv vs0, 4(r3), 0 2108; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2109; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2110; CHECK-P10-BE-NEXT: pstxv vs0, 4(r3), 0 2111; CHECK-P10-BE-NEXT: blr 2112; 2113; CHECK-P9-LABEL: testGlob12PtrPlus4: 2114; CHECK-P9: # %bb.0: # %entry 2115; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha 2116; CHECK-P9-NEXT: li r4, 4 2117; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l 2118; CHECK-P9-NEXT: lxvx vs0, r3, r4 2119; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha 2120; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l 2121; CHECK-P9-NEXT: stxvx vs0, r3, r4 2122; CHECK-P9-NEXT: blr 2123; 2124; CHECK-P8-LE-LABEL: testGlob12PtrPlus4: 2125; CHECK-P8-LE: # %bb.0: # %entry 2126; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha 2127; CHECK-P8-LE-NEXT: li r4, 4 2128; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l 2129; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 2130; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha 2131; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l 2132; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 2133; CHECK-P8-LE-NEXT: blr 2134; 2135; CHECK-P8-BE-LABEL: testGlob12PtrPlus4: 2136; CHECK-P8-BE: # %bb.0: # %entry 2137; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2138; CHECK-P8-BE-NEXT: li r4, 4 2139; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2140; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 2141; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2142; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2143; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 2144; CHECK-P8-BE-NEXT: blr 2145entry: 2146 %0 = load <16 x i8>, ptr getelementptr ([20 x <16 x i8>], ptr @GlobLd12, i64 0, i64 0, i64 4), align 16 2147 store <16 x i8> %0, ptr getelementptr ([20 x <16 x i8>], ptr @GlobSt12, i64 0, i64 0, i64 4), align 16 2148 ret void 2149} 2150 2151; Function Attrs: nofree norecurse nounwind uwtable willreturn 2152define dso_local void @testGlob12PtrPlus16() { 2153; CHECK-P10-LE-LABEL: testGlob12PtrPlus16: 2154; CHECK-P10-LE: # %bb.0: # %entry 2155; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL+16(0), 1 2156; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL+16(0), 1 2157; CHECK-P10-LE-NEXT: blr 2158; 2159; CHECK-P10-BE-LABEL: testGlob12PtrPlus16: 2160; CHECK-P10-BE: # %bb.0: # %entry 2161; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2162; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2163; CHECK-P10-BE-NEXT: lxv vs0, 16(r3) 2164; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2165; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2166; CHECK-P10-BE-NEXT: stxv vs0, 16(r3) 2167; CHECK-P10-BE-NEXT: blr 2168; 2169; CHECK-P9-LABEL: testGlob12PtrPlus16: 2170; CHECK-P9: # %bb.0: # %entry 2171; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha 2172; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l 2173; CHECK-P9-NEXT: lxv vs0, 16(r3) 2174; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha 2175; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l 2176; CHECK-P9-NEXT: stxv vs0, 16(r3) 2177; CHECK-P9-NEXT: blr 2178; 2179; CHECK-P8-LE-LABEL: testGlob12PtrPlus16: 2180; CHECK-P8-LE: # %bb.0: # %entry 2181; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha 2182; CHECK-P8-LE-NEXT: li r4, 16 2183; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l 2184; CHECK-P8-LE-NEXT: lxvd2x vs0, r3, r4 2185; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha 2186; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l 2187; CHECK-P8-LE-NEXT: stxvd2x vs0, r3, r4 2188; CHECK-P8-LE-NEXT: blr 2189; 2190; CHECK-P8-BE-LABEL: testGlob12PtrPlus16: 2191; CHECK-P8-BE: # %bb.0: # %entry 2192; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha 2193; CHECK-P8-BE-NEXT: li r4, 16 2194; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l 2195; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 2196; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha 2197; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l 2198; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 2199; CHECK-P8-BE-NEXT: blr 2200entry: 2201 %0 = load <16 x i8>, ptr getelementptr inbounds ([20 x <16 x i8>], ptr @GlobLd12, i64 0, i64 1, i64 0), align 16 2202 store <16 x i8> %0, ptr getelementptr inbounds ([20 x <16 x i8>], ptr @GlobSt12, i64 0, i64 1, i64 0), align 16 2203 ret void 2204} 2205 2206; Function Attrs: nofree norecurse nounwind uwtable willreturn 2207define dso_local void @testGlob12PtrPlusVar(i64 %Idx) { 2208; CHECK-P10-LE-LABEL: testGlob12PtrPlusVar: 2209; CHECK-P10-LE: # %bb.0: # %entry 2210; CHECK-P10-LE-NEXT: sldi r3, r3, 4 2211; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd12@PCREL, 1 2212; CHECK-P10-LE-NEXT: lxvx vs0, r4, r3 2213; CHECK-P10-LE-NEXT: paddi r4, 0, GlobSt12@PCREL, 1 2214; CHECK-P10-LE-NEXT: stxvx vs0, r4, r3 2215; CHECK-P10-LE-NEXT: blr 2216; 2217; CHECK-P10-BE-LABEL: testGlob12PtrPlusVar: 2218; CHECK-P10-BE: # %bb.0: # %entry 2219; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd12@toc@ha 2220; CHECK-P10-BE-NEXT: sldi r3, r3, 4 2221; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd12@toc@l 2222; CHECK-P10-BE-NEXT: lxvx vs0, r4, r3 2223; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt12@toc@ha 2224; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt12@toc@l 2225; CHECK-P10-BE-NEXT: stxvx vs0, r4, r3 2226; CHECK-P10-BE-NEXT: blr 2227; 2228; CHECK-P9-LABEL: testGlob12PtrPlusVar: 2229; CHECK-P9: # %bb.0: # %entry 2230; CHECK-P9-NEXT: addis r4, r2, GlobLd12@toc@ha 2231; CHECK-P9-NEXT: sldi r3, r3, 4 2232; CHECK-P9-NEXT: addi r4, r4, GlobLd12@toc@l 2233; CHECK-P9-NEXT: lxvx vs0, r4, r3 2234; CHECK-P9-NEXT: addis r4, r2, GlobSt12@toc@ha 2235; CHECK-P9-NEXT: addi r4, r4, GlobSt12@toc@l 2236; CHECK-P9-NEXT: stxvx vs0, r4, r3 2237; CHECK-P9-NEXT: blr 2238; 2239; CHECK-P8-LE-LABEL: testGlob12PtrPlusVar: 2240; CHECK-P8-LE: # %bb.0: # %entry 2241; CHECK-P8-LE-NEXT: addis r4, r2, GlobLd12@toc@ha 2242; CHECK-P8-LE-NEXT: sldi r3, r3, 4 2243; CHECK-P8-LE-NEXT: addi r4, r4, GlobLd12@toc@l 2244; CHECK-P8-LE-NEXT: lxvd2x vs0, r4, r3 2245; CHECK-P8-LE-NEXT: addis r4, r2, GlobSt12@toc@ha 2246; CHECK-P8-LE-NEXT: addi r4, r4, GlobSt12@toc@l 2247; CHECK-P8-LE-NEXT: stxvd2x vs0, r4, r3 2248; CHECK-P8-LE-NEXT: blr 2249; 2250; CHECK-P8-BE-LABEL: testGlob12PtrPlusVar: 2251; CHECK-P8-BE: # %bb.0: # %entry 2252; CHECK-P8-BE-NEXT: addis r4, r2, GlobLd12@toc@ha 2253; CHECK-P8-BE-NEXT: sldi r3, r3, 4 2254; CHECK-P8-BE-NEXT: addi r4, r4, GlobLd12@toc@l 2255; CHECK-P8-BE-NEXT: lxvw4x vs0, r4, r3 2256; CHECK-P8-BE-NEXT: addis r4, r2, GlobSt12@toc@ha 2257; CHECK-P8-BE-NEXT: addi r4, r4, GlobSt12@toc@l 2258; CHECK-P8-BE-NEXT: stxvw4x vs0, r4, r3 2259; CHECK-P8-BE-NEXT: blr 2260entry: 2261 %arrayidx = getelementptr inbounds [20 x <16 x i8>], ptr @GlobLd12, i64 0, i64 %Idx 2262 %0 = load <16 x i8>, ptr %arrayidx, align 16 2263 %arrayidx1 = getelementptr inbounds [20 x <16 x i8>], ptr @GlobSt12, i64 0, i64 %Idx 2264 store <16 x i8> %0, ptr %arrayidx1, align 16 2265 ret void 2266} 2267 2268; Function Attrs: nofree norecurse nounwind uwtable willreturn 2269define dso_local void @Atomic_LdSt_i8() { 2270; CHECK-P10-LE-LABEL: Atomic_LdSt_i8: 2271; CHECK-P10-LE: # %bb.0: # %entry 2272; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL(0), 1 2273; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL(0), 1 2274; CHECK-P10-LE-NEXT: blr 2275; 2276; CHECK-P10-BE-LABEL: Atomic_LdSt_i8: 2277; CHECK-P10-BE: # %bb.0: # %entry 2278; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha 2279; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha 2280; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l(r3) 2281; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l(r4) 2282; CHECK-P10-BE-NEXT: blr 2283; 2284; CHECK-LABEL: Atomic_LdSt_i8: 2285; CHECK: # %bb.0: # %entry 2286; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha 2287; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha 2288; CHECK-NEXT: lbz r3, GlobLd1@toc@l(r3) 2289; CHECK-NEXT: stb r3, GlobSt1@toc@l(r4) 2290; CHECK-NEXT: blr 2291entry: 2292 %0 = load atomic i8, ptr @GlobLd1 monotonic, align 1 2293 store atomic i8 %0, ptr @GlobSt1 monotonic, align 1 2294 ret void 2295} 2296 2297; Function Attrs: nofree norecurse nounwind uwtable willreturn 2298define dso_local void @Atomic_LdSt_i16() { 2299; CHECK-P10-LE-LABEL: Atomic_LdSt_i16: 2300; CHECK-P10-LE: # %bb.0: # %entry 2301; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL(0), 1 2302; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL(0), 1 2303; CHECK-P10-LE-NEXT: blr 2304; 2305; CHECK-P10-BE-LABEL: Atomic_LdSt_i16: 2306; CHECK-P10-BE: # %bb.0: # %entry 2307; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha 2308; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha 2309; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l(r3) 2310; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l(r4) 2311; CHECK-P10-BE-NEXT: blr 2312; 2313; CHECK-LABEL: Atomic_LdSt_i16: 2314; CHECK: # %bb.0: # %entry 2315; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha 2316; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha 2317; CHECK-NEXT: lhz r3, GlobLd3@toc@l(r3) 2318; CHECK-NEXT: sth r3, GlobSt3@toc@l(r4) 2319; CHECK-NEXT: blr 2320entry: 2321 %0 = load atomic i16, ptr @GlobLd3 monotonic, align 2 2322 store atomic i16 %0, ptr @GlobSt3 monotonic, align 2 2323 ret void 2324} 2325 2326; Function Attrs: nofree norecurse nounwind uwtable willreturn 2327define dso_local void @Atomic_LdSt_i32() { 2328; CHECK-P10-LE-LABEL: Atomic_LdSt_i32: 2329; CHECK-P10-LE: # %bb.0: # %entry 2330; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL(0), 1 2331; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL(0), 1 2332; CHECK-P10-LE-NEXT: blr 2333; 2334; CHECK-P10-BE-LABEL: Atomic_LdSt_i32: 2335; CHECK-P10-BE: # %bb.0: # %entry 2336; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha 2337; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha 2338; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l(r3) 2339; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l(r4) 2340; CHECK-P10-BE-NEXT: blr 2341; 2342; CHECK-LABEL: Atomic_LdSt_i32: 2343; CHECK: # %bb.0: # %entry 2344; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha 2345; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha 2346; CHECK-NEXT: lwz r3, GlobLd5@toc@l(r3) 2347; CHECK-NEXT: stw r3, GlobSt5@toc@l(r4) 2348; CHECK-NEXT: blr 2349entry: 2350 %0 = load atomic i32, ptr @GlobLd5 monotonic, align 4 2351 store atomic i32 %0, ptr @GlobSt5 monotonic, align 4 2352 ret void 2353} 2354 2355; Function Attrs: nofree norecurse nounwind uwtable willreturn 2356define dso_local void @Atomic_LdSt_i64() { 2357; CHECK-P10-LE-LABEL: Atomic_LdSt_i64: 2358; CHECK-P10-LE: # %bb.0: # %entry 2359; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL(0), 1 2360; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL(0), 1 2361; CHECK-P10-LE-NEXT: blr 2362; 2363; CHECK-P10-BE-LABEL: Atomic_LdSt_i64: 2364; CHECK-P10-BE: # %bb.0: # %entry 2365; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha 2366; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha 2367; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l(r3) 2368; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l(r4) 2369; CHECK-P10-BE-NEXT: blr 2370; 2371; CHECK-P9-LABEL: Atomic_LdSt_i64: 2372; CHECK-P9: # %bb.0: # %entry 2373; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha 2374; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha 2375; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l(r3) 2376; CHECK-P9-NEXT: std r3, GlobSt7@toc@l(r4) 2377; CHECK-P9-NEXT: blr 2378; 2379; CHECK-P8-LABEL: Atomic_LdSt_i64: 2380; CHECK-P8: # %bb.0: # %entry 2381; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha 2382; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l(r3) 2383; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha 2384; CHECK-P8-NEXT: std r3, GlobSt7@toc@l(r4) 2385; CHECK-P8-NEXT: blr 2386entry: 2387 %0 = load atomic i64, ptr @GlobLd7 monotonic, align 8 2388 store atomic i64 %0, ptr @GlobSt7 monotonic, align 8 2389 ret void 2390} 2391 2392; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 2393define dso_local void @store_double_f64_to_uint(double %str) local_unnamed_addr #0 { 2394; CHECK-P10-LE-LABEL: store_double_f64_to_uint: 2395; CHECK-P10-LE: # %bb.0: # %entry 2396; CHECK-P10-LE-NEXT: xscvdpuxds v2, f1 2397; CHECK-P10-LE-NEXT: pstxsd v2, GlobSt10@PCREL(0), 1 2398; CHECK-P10-LE-NEXT: blr 2399; 2400; CHECK-P10-BE-LABEL: store_double_f64_to_uint: 2401; CHECK-P10-BE: # %bb.0: # %entry 2402; CHECK-P10-BE-NEXT: xscvdpuxds v2, f1 2403; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt10@toc@ha 2404; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt10@toc@l 2405; CHECK-P10-BE-NEXT: stxsd v2, 0(r3) 2406; CHECK-P10-BE-NEXT: blr 2407; 2408; CHECK-P9-LABEL: store_double_f64_to_uint: 2409; CHECK-P9: # %bb.0: # %entry 2410; CHECK-P9-NEXT: xscvdpuxds v2, f1 2411; CHECK-P9-NEXT: addis r3, r2, GlobSt10@toc@ha 2412; CHECK-P9-NEXT: addi r3, r3, GlobSt10@toc@l 2413; CHECK-P9-NEXT: stxsd v2, 0(r3) 2414; CHECK-P9-NEXT: blr 2415; 2416; CHECK-P8-LABEL: store_double_f64_to_uint: 2417; CHECK-P8: # %bb.0: # %entry 2418; CHECK-P8-NEXT: xscvdpuxds f0, f1 2419; CHECK-P8-NEXT: addis r3, r2, GlobSt10@toc@ha 2420; CHECK-P8-NEXT: addi r3, r3, GlobSt10@toc@l 2421; CHECK-P8-NEXT: stxsdx f0, 0, r3 2422; CHECK-P8-NEXT: blr 2423entry: 2424 %conv = fptoui double %str to i64 2425 store i64 %conv, ptr @GlobSt10, align 8 2426 ret void 2427} 2428 2429; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 2430define dso_local void @store_double_f64_to_sint(double %str) local_unnamed_addr #0 { 2431; CHECK-P10-LE-LABEL: store_double_f64_to_sint: 2432; CHECK-P10-LE: # %bb.0: # %entry 2433; CHECK-P10-LE-NEXT: xscvdpsxds v2, f1 2434; CHECK-P10-LE-NEXT: pstxsd v2, GlobSt10@PCREL(0), 1 2435; CHECK-P10-LE-NEXT: blr 2436; 2437; CHECK-P10-BE-LABEL: store_double_f64_to_sint: 2438; CHECK-P10-BE: # %bb.0: # %entry 2439; CHECK-P10-BE-NEXT: xscvdpsxds v2, f1 2440; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt10@toc@ha 2441; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt10@toc@l 2442; CHECK-P10-BE-NEXT: stxsd v2, 0(r3) 2443; CHECK-P10-BE-NEXT: blr 2444; 2445; CHECK-P9-LABEL: store_double_f64_to_sint: 2446; CHECK-P9: # %bb.0: # %entry 2447; CHECK-P9-NEXT: xscvdpsxds v2, f1 2448; CHECK-P9-NEXT: addis r3, r2, GlobSt10@toc@ha 2449; CHECK-P9-NEXT: addi r3, r3, GlobSt10@toc@l 2450; CHECK-P9-NEXT: stxsd v2, 0(r3) 2451; CHECK-P9-NEXT: blr 2452; 2453; CHECK-P8-LABEL: store_double_f64_to_sint: 2454; CHECK-P8: # %bb.0: # %entry 2455; CHECK-P8-NEXT: xscvdpsxds f0, f1 2456; CHECK-P8-NEXT: addis r3, r2, GlobSt10@toc@ha 2457; CHECK-P8-NEXT: addi r3, r3, GlobSt10@toc@l 2458; CHECK-P8-NEXT: stxsdx f0, 0, r3 2459; CHECK-P8-NEXT: blr 2460entry: 2461 %conv = fptosi double %str to i64 2462 store i64 %conv, ptr @GlobSt10, align 8 2463 ret void 2464} 2465 2466; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 2467define dso_local void @store_f128_to_uint(fp128 %str) local_unnamed_addr #0 { 2468; CHECK-P10-LE-LABEL: store_f128_to_uint: 2469; CHECK-P10-LE: # %bb.0: # %entry 2470; CHECK-P10-LE-NEXT: xscvqpudz v2, v2 2471; CHECK-P10-LE-NEXT: pstxsd v2, GlobF128@PCREL(0), 1 2472; CHECK-P10-LE-NEXT: blr 2473; 2474; CHECK-P10-BE-LABEL: store_f128_to_uint: 2475; CHECK-P10-BE: # %bb.0: # %entry 2476; CHECK-P10-BE-NEXT: xscvqpudz v2, v2 2477; CHECK-P10-BE-NEXT: addis r3, r2, GlobF128@toc@ha 2478; CHECK-P10-BE-NEXT: addi r3, r3, GlobF128@toc@l 2479; CHECK-P10-BE-NEXT: stxsd v2, 0(r3) 2480; CHECK-P10-BE-NEXT: blr 2481; 2482; CHECK-P9-LABEL: store_f128_to_uint: 2483; CHECK-P9: # %bb.0: # %entry 2484; CHECK-P9-NEXT: xscvqpudz v2, v2 2485; CHECK-P9-NEXT: addis r3, r2, GlobF128@toc@ha 2486; CHECK-P9-NEXT: addi r3, r3, GlobF128@toc@l 2487; CHECK-P9-NEXT: stxsd v2, 0(r3) 2488; CHECK-P9-NEXT: blr 2489; 2490; CHECK-P8-LE-LABEL: store_f128_to_uint: 2491; CHECK-P8-LE: # %bb.0: # %entry 2492; CHECK-P8-LE-NEXT: mflr r0 2493; CHECK-P8-LE-NEXT: stdu r1, -32(r1) 2494; CHECK-P8-LE-NEXT: std r0, 48(r1) 2495; CHECK-P8-LE-NEXT: .cfi_def_cfa_offset 32 2496; CHECK-P8-LE-NEXT: .cfi_offset lr, 16 2497; CHECK-P8-LE-NEXT: bl __fixunskfdi 2498; CHECK-P8-LE-NEXT: nop 2499; CHECK-P8-LE-NEXT: addis r4, r2, GlobF128@toc@ha 2500; CHECK-P8-LE-NEXT: std r3, GlobF128@toc@l(r4) 2501; CHECK-P8-LE-NEXT: addi r1, r1, 32 2502; CHECK-P8-LE-NEXT: ld r0, 16(r1) 2503; CHECK-P8-LE-NEXT: mtlr r0 2504; CHECK-P8-LE-NEXT: blr 2505; 2506; CHECK-P8-BE-LABEL: store_f128_to_uint: 2507; CHECK-P8-BE: # %bb.0: # %entry 2508; CHECK-P8-BE-NEXT: mflr r0 2509; CHECK-P8-BE-NEXT: stdu r1, -112(r1) 2510; CHECK-P8-BE-NEXT: std r0, 128(r1) 2511; CHECK-P8-BE-NEXT: .cfi_def_cfa_offset 112 2512; CHECK-P8-BE-NEXT: .cfi_offset lr, 16 2513; CHECK-P8-BE-NEXT: bl __fixunskfdi 2514; CHECK-P8-BE-NEXT: nop 2515; CHECK-P8-BE-NEXT: addis r4, r2, GlobF128@toc@ha 2516; CHECK-P8-BE-NEXT: std r3, GlobF128@toc@l(r4) 2517; CHECK-P8-BE-NEXT: addi r1, r1, 112 2518; CHECK-P8-BE-NEXT: ld r0, 16(r1) 2519; CHECK-P8-BE-NEXT: mtlr r0 2520; CHECK-P8-BE-NEXT: blr 2521entry: 2522 %conv = fptoui fp128 %str to i64 2523 store i64 %conv, ptr @GlobF128, align 16 2524 ret void 2525} 2526 2527; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly 2528define dso_local void @store_f128_to_sint(fp128 %str) local_unnamed_addr #0 { 2529; CHECK-P10-LE-LABEL: store_f128_to_sint: 2530; CHECK-P10-LE: # %bb.0: # %entry 2531; CHECK-P10-LE-NEXT: xscvqpsdz v2, v2 2532; CHECK-P10-LE-NEXT: pstxsd v2, GlobF128@PCREL(0), 1 2533; CHECK-P10-LE-NEXT: blr 2534; 2535; CHECK-P10-BE-LABEL: store_f128_to_sint: 2536; CHECK-P10-BE: # %bb.0: # %entry 2537; CHECK-P10-BE-NEXT: xscvqpsdz v2, v2 2538; CHECK-P10-BE-NEXT: addis r3, r2, GlobF128@toc@ha 2539; CHECK-P10-BE-NEXT: addi r3, r3, GlobF128@toc@l 2540; CHECK-P10-BE-NEXT: stxsd v2, 0(r3) 2541; CHECK-P10-BE-NEXT: blr 2542; 2543; CHECK-P9-LABEL: store_f128_to_sint: 2544; CHECK-P9: # %bb.0: # %entry 2545; CHECK-P9-NEXT: xscvqpsdz v2, v2 2546; CHECK-P9-NEXT: addis r3, r2, GlobF128@toc@ha 2547; CHECK-P9-NEXT: addi r3, r3, GlobF128@toc@l 2548; CHECK-P9-NEXT: stxsd v2, 0(r3) 2549; CHECK-P9-NEXT: blr 2550; 2551; CHECK-P8-LE-LABEL: store_f128_to_sint: 2552; CHECK-P8-LE: # %bb.0: # %entry 2553; CHECK-P8-LE-NEXT: mflr r0 2554; CHECK-P8-LE-NEXT: stdu r1, -32(r1) 2555; CHECK-P8-LE-NEXT: std r0, 48(r1) 2556; CHECK-P8-LE-NEXT: .cfi_def_cfa_offset 32 2557; CHECK-P8-LE-NEXT: .cfi_offset lr, 16 2558; CHECK-P8-LE-NEXT: bl __fixkfdi 2559; CHECK-P8-LE-NEXT: nop 2560; CHECK-P8-LE-NEXT: addis r4, r2, GlobF128@toc@ha 2561; CHECK-P8-LE-NEXT: std r3, GlobF128@toc@l(r4) 2562; CHECK-P8-LE-NEXT: addi r1, r1, 32 2563; CHECK-P8-LE-NEXT: ld r0, 16(r1) 2564; CHECK-P8-LE-NEXT: mtlr r0 2565; CHECK-P8-LE-NEXT: blr 2566; 2567; CHECK-P8-BE-LABEL: store_f128_to_sint: 2568; CHECK-P8-BE: # %bb.0: # %entry 2569; CHECK-P8-BE-NEXT: mflr r0 2570; CHECK-P8-BE-NEXT: stdu r1, -112(r1) 2571; CHECK-P8-BE-NEXT: std r0, 128(r1) 2572; CHECK-P8-BE-NEXT: .cfi_def_cfa_offset 112 2573; CHECK-P8-BE-NEXT: .cfi_offset lr, 16 2574; CHECK-P8-BE-NEXT: bl __fixkfdi 2575; CHECK-P8-BE-NEXT: nop 2576; CHECK-P8-BE-NEXT: addis r4, r2, GlobF128@toc@ha 2577; CHECK-P8-BE-NEXT: std r3, GlobF128@toc@l(r4) 2578; CHECK-P8-BE-NEXT: addi r1, r1, 112 2579; CHECK-P8-BE-NEXT: ld r0, 16(r1) 2580; CHECK-P8-BE-NEXT: mtlr r0 2581; CHECK-P8-BE-NEXT: blr 2582entry: 2583 %conv = fptosi fp128 %str to i64 2584 store i64 %conv, ptr @GlobF128, align 16 2585 ret void 2586} 2587