1156 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; 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-prefixes=CHECK,CHECK-P10,CHECK-P10-LE5; 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-prefixes=CHECK,CHECK-P10,CHECK-P10-BE8; 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-PREP1011; 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-PREP1014 15@GlobLd128 = dso_local local_unnamed_addr global [20 x fp128] zeroinitializer, align 1616@GlobSt128 = dso_local local_unnamed_addr global [20 x fp128] zeroinitializer, align 1617 18; Function Attrs: norecurse nounwind readonly willreturn19define dso_local fp128 @ld_0___float128___float128(i64 %ptr) {20; CHECK-LABEL: ld_0___float128___float128:21; CHECK: # %bb.0: # %entry22; CHECK-NEXT: lxv v2, 0(r3)23; CHECK-NEXT: blr24entry:25 %0 = inttoptr i64 %ptr to ptr26 %1 = load fp128, ptr %0, align 1627 ret fp128 %128}29 30; Function Attrs: norecurse nounwind readonly willreturn31define dso_local fp128 @ld_unalign16___float128___float128(ptr nocapture readonly %ptr) {32; CHECK-P10-LABEL: ld_unalign16___float128___float128:33; CHECK-P10: # %bb.0: # %entry34; CHECK-P10-NEXT: plxv v2, 1(r3), 035; CHECK-P10-NEXT: blr36;37; CHECK-PREP10-LABEL: ld_unalign16___float128___float128:38; CHECK-PREP10: # %bb.0: # %entry39; CHECK-PREP10-NEXT: li r4, 140; CHECK-PREP10-NEXT: lxvx v2, r3, r441; CHECK-PREP10-NEXT: blr42entry:43 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 144 %0 = load fp128, ptr %add.ptr, align 1645 ret fp128 %046}47 48; Function Attrs: norecurse nounwind readonly willreturn49define dso_local fp128 @ld_align16___float128___float128(ptr nocapture readonly %ptr) {50; CHECK-P10-LABEL: ld_align16___float128___float128:51; CHECK-P10: # %bb.0: # %entry52; CHECK-P10-NEXT: plxv v2, 8(r3), 053; CHECK-P10-NEXT: blr54;55; CHECK-PREP10-LABEL: ld_align16___float128___float128:56; CHECK-PREP10: # %bb.0: # %entry57; CHECK-PREP10-NEXT: li r4, 858; CHECK-PREP10-NEXT: lxvx v2, r3, r459; CHECK-PREP10-NEXT: blr60entry:61 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 862 %0 = load fp128, ptr %add.ptr, align 1663 ret fp128 %064}65 66; Function Attrs: norecurse nounwind readonly willreturn67define dso_local fp128 @ld_unalign32___float128___float128(ptr nocapture readonly %ptr) {68; CHECK-P10-LABEL: ld_unalign32___float128___float128:69; CHECK-P10: # %bb.0: # %entry70; CHECK-P10-NEXT: plxv v2, 99999(r3), 071; CHECK-P10-NEXT: blr72;73; CHECK-PREP10-LABEL: ld_unalign32___float128___float128:74; CHECK-PREP10: # %bb.0: # %entry75; CHECK-PREP10-NEXT: lis r4, 176; CHECK-PREP10-NEXT: ori r4, r4, 3446377; CHECK-PREP10-NEXT: lxvx v2, r3, r478; CHECK-PREP10-NEXT: blr79entry:80 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 9999981 %0 = load fp128, ptr %add.ptr, align 1682 ret fp128 %083}84 85; Function Attrs: norecurse nounwind readonly willreturn86define dso_local fp128 @ld_align32___float128___float128(ptr nocapture readonly %ptr) {87; CHECK-P10-LABEL: ld_align32___float128___float128:88; CHECK-P10: # %bb.0: # %entry89; CHECK-P10-NEXT: plxv v2, 99999000(r3), 090; CHECK-P10-NEXT: blr91;92; CHECK-PREP10-LABEL: ld_align32___float128___float128:93; CHECK-PREP10: # %bb.0: # %entry94; CHECK-PREP10-NEXT: lis r4, 152595; CHECK-PREP10-NEXT: ori r4, r4, 5660096; CHECK-PREP10-NEXT: lxvx v2, r3, r497; CHECK-PREP10-NEXT: blr98entry:99 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000100 %0 = load fp128, ptr %add.ptr, align 16101 ret fp128 %0102}103 104; Function Attrs: norecurse nounwind readonly willreturn105define dso_local fp128 @ld_unalign64___float128___float128(ptr nocapture readonly %ptr) {106; CHECK-P10-LABEL: ld_unalign64___float128___float128:107; CHECK-P10: # %bb.0: # %entry108; CHECK-P10-NEXT: pli r4, 232109; CHECK-P10-NEXT: pli r5, 3567587329110; CHECK-P10-NEXT: rldimi r5, r4, 32, 0111; CHECK-P10-NEXT: lxvx v2, r3, r5112; CHECK-P10-NEXT: blr113;114; CHECK-PREP10-LABEL: ld_unalign64___float128___float128:115; CHECK-PREP10: # %bb.0: # %entry116; CHECK-PREP10-NEXT: li r4, 29117; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24118; CHECK-PREP10-NEXT: oris r4, r4, 54437119; CHECK-PREP10-NEXT: ori r4, r4, 4097120; CHECK-PREP10-NEXT: lxvx v2, r3, r4121; CHECK-PREP10-NEXT: blr122entry:123 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001124 %0 = load fp128, ptr %add.ptr, align 16125 ret fp128 %0126}127 128; Function Attrs: norecurse nounwind readonly willreturn129define dso_local fp128 @ld_align64___float128___float128(ptr nocapture readonly %ptr) {130; CHECK-P10-LABEL: ld_align64___float128___float128:131; CHECK-P10: # %bb.0: # %entry132; CHECK-P10-NEXT: pli r4, 244140625133; CHECK-P10-NEXT: rldic r4, r4, 12, 24134; CHECK-P10-NEXT: lxvx v2, r3, r4135; CHECK-P10-NEXT: blr136;137; CHECK-PREP10-LABEL: ld_align64___float128___float128:138; CHECK-PREP10: # %bb.0: # %entry139; CHECK-PREP10-NEXT: lis r4, 3725140; CHECK-PREP10-NEXT: ori r4, r4, 19025141; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24142; CHECK-PREP10-NEXT: lxvx v2, r3, r4143; CHECK-PREP10-NEXT: blr144entry:145 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000146 %0 = load fp128, ptr %add.ptr, align 16147 ret fp128 %0148}149 150; Function Attrs: norecurse nounwind readonly willreturn151define dso_local fp128 @ld_reg___float128___float128(ptr nocapture readonly %ptr, i64 %off) {152; CHECK-LABEL: ld_reg___float128___float128:153; CHECK: # %bb.0: # %entry154; CHECK-NEXT: lxvx v2, r3, r4155; CHECK-NEXT: blr156entry:157 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off158 %0 = load fp128, ptr %add.ptr, align 16159 ret fp128 %0160}161 162; Function Attrs: norecurse nounwind readonly willreturn163define dso_local fp128 @ld_or___float128___float128(i64 %ptr, i8 zeroext %off) {164; CHECK-LABEL: ld_or___float128___float128:165; CHECK: # %bb.0: # %entry166; CHECK-NEXT: or r3, r4, r3167; CHECK-NEXT: lxv v2, 0(r3)168; CHECK-NEXT: blr169entry:170 %conv = zext i8 %off to i64171 %or = or i64 %conv, %ptr172 %0 = inttoptr i64 %or to ptr173 %1 = load fp128, ptr %0, align 16174 ret fp128 %1175}176 177; Function Attrs: norecurse nounwind readonly willreturn178define dso_local fp128 @ld_or2___float128___float128(i64 %ptr, i8 zeroext %off) {179; CHECK-LABEL: ld_or2___float128___float128:180; CHECK: # %bb.0: # %entry181; CHECK-NEXT: rldicr r3, r3, 0, 51182; CHECK-NEXT: lxvx v2, r3, r4183; CHECK-NEXT: blr184entry:185 %and = and i64 %ptr, -4096186 %conv = zext i8 %off to i64187 %or = or i64 %and, %conv188 %0 = inttoptr i64 %or to ptr189 %1 = load fp128, ptr %0, align 16190 ret fp128 %1191}192 193; Function Attrs: norecurse nounwind readonly willreturn194define dso_local fp128 @ld_not_disjoint16___float128___float128(i64 %ptr) {195; CHECK-LABEL: ld_not_disjoint16___float128___float128:196; CHECK: # %bb.0: # %entry197; CHECK-NEXT: ori r3, r3, 6198; CHECK-NEXT: lxv v2, 0(r3)199; CHECK-NEXT: blr200entry:201 %or = or i64 %ptr, 6202 %0 = inttoptr i64 %or to ptr203 %1 = load fp128, ptr %0, align 16204 ret fp128 %1205}206 207; Function Attrs: norecurse nounwind readonly willreturn208define dso_local fp128 @ld_disjoint_unalign16___float128___float128(i64 %ptr) {209; CHECK-P10-LABEL: ld_disjoint_unalign16___float128___float128:210; CHECK-P10: # %bb.0: # %entry211; CHECK-P10-NEXT: rldicr r3, r3, 0, 51212; CHECK-P10-NEXT: plxv v2, 6(r3), 0213; CHECK-P10-NEXT: blr214;215; CHECK-PREP10-LABEL: ld_disjoint_unalign16___float128___float128:216; CHECK-PREP10: # %bb.0: # %entry217; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 51218; CHECK-PREP10-NEXT: li r4, 6219; CHECK-PREP10-NEXT: lxvx v2, r3, r4220; CHECK-PREP10-NEXT: blr221entry:222 %and = and i64 %ptr, -4096223 %or = or i64 %and, 6224 %0 = inttoptr i64 %or to ptr225 %1 = load fp128, ptr %0, align 16226 ret fp128 %1227}228 229; Function Attrs: norecurse nounwind readonly willreturn230define dso_local fp128 @ld_disjoint_align16___float128___float128(i64 %ptr) {231; CHECK-P10-LABEL: ld_disjoint_align16___float128___float128:232; CHECK-P10: # %bb.0: # %entry233; CHECK-P10-NEXT: rldicr r3, r3, 0, 51234; CHECK-P10-NEXT: plxv v2, 24(r3), 0235; CHECK-P10-NEXT: blr236;237; CHECK-PREP10-LABEL: ld_disjoint_align16___float128___float128:238; CHECK-PREP10: # %bb.0: # %entry239; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 51240; CHECK-PREP10-NEXT: li r4, 24241; CHECK-PREP10-NEXT: lxvx v2, r3, r4242; CHECK-PREP10-NEXT: blr243entry:244 %and = and i64 %ptr, -4096245 %or = or i64 %and, 24246 %0 = inttoptr i64 %or to ptr247 %1 = load fp128, ptr %0, align 16248 ret fp128 %1249}250 251; Function Attrs: norecurse nounwind readonly willreturn252define dso_local fp128 @ld_not_disjoint32___float128___float128(i64 %ptr) {253; CHECK-LABEL: ld_not_disjoint32___float128___float128:254; CHECK: # %bb.0: # %entry255; CHECK-NEXT: ori r3, r3, 34463256; CHECK-NEXT: oris r3, r3, 1257; CHECK-NEXT: lxv v2, 0(r3)258; CHECK-NEXT: blr259entry:260 %or = or i64 %ptr, 99999261 %0 = inttoptr i64 %or to ptr262 %1 = load fp128, ptr %0, align 16263 ret fp128 %1264}265 266; Function Attrs: norecurse nounwind readonly willreturn267define dso_local fp128 @ld_disjoint_unalign32___float128___float128(i64 %ptr) {268; CHECK-P10-LABEL: ld_disjoint_unalign32___float128___float128:269; CHECK-P10: # %bb.0: # %entry270; CHECK-P10-NEXT: rldicr r3, r3, 0, 43271; CHECK-P10-NEXT: plxv v2, 99999(r3), 0272; CHECK-P10-NEXT: blr273;274; CHECK-PREP10-LABEL: ld_disjoint_unalign32___float128___float128:275; CHECK-PREP10: # %bb.0: # %entry276; CHECK-PREP10-NEXT: lis r4, 1277; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 43278; CHECK-PREP10-NEXT: ori r4, r4, 34463279; CHECK-PREP10-NEXT: lxvx v2, r3, r4280; CHECK-PREP10-NEXT: blr281entry:282 %and = and i64 %ptr, -1048576283 %or = or i64 %and, 99999284 %0 = inttoptr i64 %or to ptr285 %1 = load fp128, ptr %0, align 16286 ret fp128 %1287}288 289; Function Attrs: norecurse nounwind readonly willreturn290define dso_local fp128 @ld_disjoint_align32___float128___float128(i64 %ptr) {291; CHECK-P10-LABEL: ld_disjoint_align32___float128___float128:292; CHECK-P10: # %bb.0: # %entry293; CHECK-P10-NEXT: lis r4, -15264294; CHECK-P10-NEXT: and r3, r3, r4295; CHECK-P10-NEXT: plxv v2, 999990000(r3), 0296; CHECK-P10-NEXT: blr297;298; CHECK-PREP10-LABEL: ld_disjoint_align32___float128___float128:299; CHECK-PREP10: # %bb.0: # %entry300; CHECK-PREP10-NEXT: lis r4, -15264301; CHECK-PREP10-NEXT: and r3, r3, r4302; CHECK-PREP10-NEXT: lis r4, 15258303; CHECK-PREP10-NEXT: ori r4, r4, 41712304; CHECK-PREP10-NEXT: lxvx v2, r3, r4305; CHECK-PREP10-NEXT: blr306entry:307 %and = and i64 %ptr, -1000341504308 %or = or i64 %and, 999990000309 %0 = inttoptr i64 %or to ptr310 %1 = load fp128, ptr %0, align 16311 ret fp128 %1312}313 314; Function Attrs: norecurse nounwind readonly willreturn315define dso_local fp128 @ld_not_disjoint64___float128___float128(i64 %ptr) {316; CHECK-P10-LABEL: ld_not_disjoint64___float128___float128:317; CHECK-P10: # %bb.0: # %entry318; CHECK-P10-NEXT: pli r4, 232319; CHECK-P10-NEXT: pli r5, 3567587329320; CHECK-P10-NEXT: rldimi r5, r4, 32, 0321; CHECK-P10-NEXT: or r3, r3, r5322; CHECK-P10-NEXT: lxv v2, 0(r3)323; CHECK-P10-NEXT: blr324;325; CHECK-PREP10-LABEL: ld_not_disjoint64___float128___float128:326; CHECK-PREP10: # %bb.0: # %entry327; CHECK-PREP10-NEXT: li r4, 29328; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24329; CHECK-PREP10-NEXT: oris r4, r4, 54437330; CHECK-PREP10-NEXT: ori r4, r4, 4097331; CHECK-PREP10-NEXT: or r3, r3, r4332; CHECK-PREP10-NEXT: lxv v2, 0(r3)333; CHECK-PREP10-NEXT: blr334entry:335 %or = or i64 %ptr, 1000000000001336 %0 = inttoptr i64 %or to ptr337 %1 = load fp128, ptr %0, align 16338 ret fp128 %1339}340 341; Function Attrs: norecurse nounwind readonly willreturn342define dso_local fp128 @ld_disjoint_unalign64___float128___float128(i64 %ptr) {343; CHECK-P10-LABEL: ld_disjoint_unalign64___float128___float128:344; CHECK-P10: # %bb.0: # %entry345; CHECK-P10-NEXT: pli r4, 232346; CHECK-P10-NEXT: pli r5, 3567587329347; CHECK-P10-NEXT: rldicr r3, r3, 0, 23348; CHECK-P10-NEXT: rldimi r5, r4, 32, 0349; CHECK-P10-NEXT: lxvx v2, r3, r5350; CHECK-P10-NEXT: blr351;352; CHECK-PREP10-LABEL: ld_disjoint_unalign64___float128___float128:353; CHECK-PREP10: # %bb.0: # %entry354; CHECK-PREP10-NEXT: li r4, 29355; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23356; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24357; CHECK-PREP10-NEXT: oris r4, r4, 54437358; CHECK-PREP10-NEXT: ori r4, r4, 4097359; CHECK-PREP10-NEXT: lxvx v2, r3, r4360; CHECK-PREP10-NEXT: blr361entry:362 %and = and i64 %ptr, -1099511627776363 %or = or i64 %and, 1000000000001364 %0 = inttoptr i64 %or to ptr365 %1 = load fp128, ptr %0, align 16366 ret fp128 %1367}368 369; Function Attrs: norecurse nounwind readonly willreturn370define dso_local fp128 @ld_disjoint_align64___float128___float128(i64 %ptr) {371; CHECK-P10-LABEL: ld_disjoint_align64___float128___float128:372; CHECK-P10: # %bb.0: # %entry373; CHECK-P10-NEXT: pli r4, 244140625374; CHECK-P10-NEXT: rldicr r3, r3, 0, 23375; CHECK-P10-NEXT: rldic r4, r4, 12, 24376; CHECK-P10-NEXT: lxvx v2, r3, r4377; CHECK-P10-NEXT: blr378;379; CHECK-PREP10-LABEL: ld_disjoint_align64___float128___float128:380; CHECK-PREP10: # %bb.0: # %entry381; CHECK-PREP10-NEXT: lis r4, 3725382; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23383; CHECK-PREP10-NEXT: ori r4, r4, 19025384; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24385; CHECK-PREP10-NEXT: lxvx v2, r3, r4386; CHECK-PREP10-NEXT: blr387entry:388 %and = and i64 %ptr, -1099511627776389 %or = or i64 %and, 1000000000000390 %0 = inttoptr i64 %or to ptr391 %1 = load fp128, ptr %0, align 4096392 ret fp128 %1393}394 395; Function Attrs: norecurse nounwind readonly willreturn396define dso_local fp128 @ld_cst_unalign16___float128___float128() {397; CHECK-LABEL: ld_cst_unalign16___float128___float128:398; CHECK: # %bb.0: # %entry399; CHECK-NEXT: li r3, 255400; CHECK-NEXT: lxv v2, 0(r3)401; CHECK-NEXT: blr402entry:403 %0 = load fp128, ptr inttoptr (i64 255 to ptr), align 16404 ret fp128 %0405}406 407; Function Attrs: norecurse nounwind readonly willreturn408define dso_local fp128 @ld_cst_align16___float128___float128() {409; CHECK-LABEL: ld_cst_align16___float128___float128:410; CHECK: # %bb.0: # %entry411; CHECK-NEXT: lxv v2, 4080(0)412; CHECK-NEXT: blr413entry:414 %0 = load fp128, ptr inttoptr (i64 4080 to ptr), align 16415 ret fp128 %0416}417 418; Function Attrs: norecurse nounwind readonly willreturn419define dso_local fp128 @ld_cst_unalign32___float128___float128() {420; CHECK-P10-LABEL: ld_cst_unalign32___float128___float128:421; CHECK-P10: # %bb.0: # %entry422; CHECK-P10-NEXT: pli r3, 99999423; CHECK-P10-NEXT: lxv v2, 0(r3)424; CHECK-P10-NEXT: blr425;426; CHECK-PREP10-LABEL: ld_cst_unalign32___float128___float128:427; CHECK-PREP10: # %bb.0: # %entry428; CHECK-PREP10-NEXT: lis r3, 1429; CHECK-PREP10-NEXT: ori r3, r3, 34463430; CHECK-PREP10-NEXT: lxv v2, 0(r3)431; CHECK-PREP10-NEXT: blr432entry:433 %0 = load fp128, ptr inttoptr (i64 99999 to ptr), align 16434 ret fp128 %0435}436 437; Function Attrs: norecurse nounwind readonly willreturn438define dso_local fp128 @ld_cst_align32___float128___float128() {439; CHECK-P10-LABEL: ld_cst_align32___float128___float128:440; CHECK-P10: # %bb.0: # %entry441; CHECK-P10-NEXT: pli r3, 9999900442; CHECK-P10-NEXT: lxv v2, 0(r3)443; CHECK-P10-NEXT: blr444;445; CHECK-PREP10-LABEL: ld_cst_align32___float128___float128:446; CHECK-PREP10: # %bb.0: # %entry447; CHECK-PREP10-NEXT: lis r3, 152448; CHECK-PREP10-NEXT: ori r3, r3, 38428449; CHECK-PREP10-NEXT: lxv v2, 0(r3)450; CHECK-PREP10-NEXT: blr451entry:452 %0 = load fp128, ptr inttoptr (i64 9999900 to ptr), align 16453 ret fp128 %0454}455 456; Function Attrs: norecurse nounwind readonly willreturn457define dso_local fp128 @ld_cst_unalign64___float128___float128() {458; CHECK-P10-LABEL: ld_cst_unalign64___float128___float128:459; CHECK-P10: # %bb.0: # %entry460; CHECK-P10-NEXT: pli r3, 232461; CHECK-P10-NEXT: pli r4, 3567587329462; CHECK-P10-NEXT: rldimi r4, r3, 32, 0463; CHECK-P10-NEXT: lxv v2, 0(r4)464; CHECK-P10-NEXT: blr465;466; CHECK-PREP10-LABEL: ld_cst_unalign64___float128___float128:467; CHECK-PREP10: # %bb.0: # %entry468; CHECK-PREP10-NEXT: li r3, 29469; CHECK-PREP10-NEXT: rldic r3, r3, 35, 24470; CHECK-PREP10-NEXT: oris r3, r3, 54437471; CHECK-PREP10-NEXT: ori r3, r3, 4097472; CHECK-PREP10-NEXT: lxv v2, 0(r3)473; CHECK-PREP10-NEXT: blr474entry:475 %0 = load fp128, ptr inttoptr (i64 1000000000001 to ptr), align 16476 ret fp128 %0477}478 479; Function Attrs: norecurse nounwind readonly willreturn480define dso_local fp128 @ld_cst_align64___float128___float128() {481; CHECK-P10-LABEL: ld_cst_align64___float128___float128:482; CHECK-P10: # %bb.0: # %entry483; CHECK-P10-NEXT: pli r3, 244140625484; CHECK-P10-NEXT: rldic r3, r3, 12, 24485; CHECK-P10-NEXT: lxv v2, 0(r3)486; CHECK-P10-NEXT: blr487;488; CHECK-PREP10-LABEL: ld_cst_align64___float128___float128:489; CHECK-PREP10: # %bb.0: # %entry490; CHECK-PREP10-NEXT: lis r3, 3725491; CHECK-PREP10-NEXT: ori r3, r3, 19025492; CHECK-PREP10-NEXT: rldic r3, r3, 12, 24493; CHECK-PREP10-NEXT: lxv v2, 0(r3)494; CHECK-PREP10-NEXT: blr495entry:496 %0 = load fp128, ptr inttoptr (i64 1000000000000 to ptr), align 4096497 ret fp128 %0498}499 500; Function Attrs: nofree norecurse nounwind willreturn writeonly501define dso_local void @st_0___float128___float128(i64 %ptr, fp128 %str) {502; CHECK-LABEL: st_0___float128___float128:503; CHECK: # %bb.0: # %entry504; CHECK-NEXT: stxv v2, 0(r3)505; CHECK-NEXT: blr506entry:507 %0 = inttoptr i64 %ptr to ptr508 store fp128 %str, ptr %0, align 16509 ret void510}511 512; Function Attrs: nofree norecurse nounwind willreturn writeonly513define dso_local void @st_unalign16___float128___float128(ptr nocapture %ptr, fp128 %str) {514; CHECK-P10-LABEL: st_unalign16___float128___float128:515; CHECK-P10: # %bb.0: # %entry516; CHECK-P10-NEXT: pstxv v2, 1(r3), 0517; CHECK-P10-NEXT: blr518;519; CHECK-PREP10-LABEL: st_unalign16___float128___float128:520; CHECK-PREP10: # %bb.0: # %entry521; CHECK-PREP10-NEXT: li r4, 1522; CHECK-PREP10-NEXT: stxvx v2, r3, r4523; CHECK-PREP10-NEXT: blr524entry:525 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1526 store fp128 %str, ptr %add.ptr, align 16527 ret void528}529 530; Function Attrs: nofree norecurse nounwind willreturn writeonly531define dso_local void @st_align16___float128___float128(ptr nocapture %ptr, fp128 %str) {532; CHECK-P10-LABEL: st_align16___float128___float128:533; CHECK-P10: # %bb.0: # %entry534; CHECK-P10-NEXT: pstxv v2, 8(r3), 0535; CHECK-P10-NEXT: blr536;537; CHECK-PREP10-LABEL: st_align16___float128___float128:538; CHECK-PREP10: # %bb.0: # %entry539; CHECK-PREP10-NEXT: li r4, 8540; CHECK-PREP10-NEXT: stxvx v2, r3, r4541; CHECK-PREP10-NEXT: blr542entry:543 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8544 store fp128 %str, ptr %add.ptr, align 16545 ret void546}547 548; Function Attrs: nofree norecurse nounwind willreturn writeonly549define dso_local void @st_unalign32___float128___float128(ptr nocapture %ptr, fp128 %str) {550; CHECK-P10-LABEL: st_unalign32___float128___float128:551; CHECK-P10: # %bb.0: # %entry552; CHECK-P10-NEXT: pstxv v2, 99999(r3), 0553; CHECK-P10-NEXT: blr554;555; CHECK-PREP10-LABEL: st_unalign32___float128___float128:556; CHECK-PREP10: # %bb.0: # %entry557; CHECK-PREP10-NEXT: lis r4, 1558; CHECK-PREP10-NEXT: ori r4, r4, 34463559; CHECK-PREP10-NEXT: stxvx v2, r3, r4560; CHECK-PREP10-NEXT: blr561entry:562 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999563 store fp128 %str, ptr %add.ptr, align 16564 ret void565}566 567; Function Attrs: nofree norecurse nounwind willreturn writeonly568define dso_local void @st_align32___float128___float128(ptr nocapture %ptr, fp128 %str) {569; CHECK-P10-LABEL: st_align32___float128___float128:570; CHECK-P10: # %bb.0: # %entry571; CHECK-P10-NEXT: pstxv v2, 99999000(r3), 0572; CHECK-P10-NEXT: blr573;574; CHECK-PREP10-LABEL: st_align32___float128___float128:575; CHECK-PREP10: # %bb.0: # %entry576; CHECK-PREP10-NEXT: lis r4, 1525577; CHECK-PREP10-NEXT: ori r4, r4, 56600578; CHECK-PREP10-NEXT: stxvx v2, r3, r4579; CHECK-PREP10-NEXT: blr580entry:581 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000582 store fp128 %str, ptr %add.ptr, align 16583 ret void584}585 586; Function Attrs: nofree norecurse nounwind willreturn writeonly587define dso_local void @st_unalign64___float128___float128(ptr nocapture %ptr, fp128 %str) {588; CHECK-P10-LABEL: st_unalign64___float128___float128:589; CHECK-P10: # %bb.0: # %entry590; CHECK-P10-NEXT: pli r4, 232591; CHECK-P10-NEXT: pli r5, 3567587329592; CHECK-P10-NEXT: rldimi r5, r4, 32, 0593; CHECK-P10-NEXT: stxvx v2, r3, r5594; CHECK-P10-NEXT: blr595;596; CHECK-PREP10-LABEL: st_unalign64___float128___float128:597; CHECK-PREP10: # %bb.0: # %entry598; CHECK-PREP10-NEXT: li r4, 29599; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24600; CHECK-PREP10-NEXT: oris r4, r4, 54437601; CHECK-PREP10-NEXT: ori r4, r4, 4097602; CHECK-PREP10-NEXT: stxvx v2, r3, r4603; CHECK-PREP10-NEXT: blr604entry:605 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001606 store fp128 %str, ptr %add.ptr, align 16607 ret void608}609 610; Function Attrs: nofree norecurse nounwind willreturn writeonly611define dso_local void @st_align64___float128___float128(ptr nocapture %ptr, fp128 %str) {612; CHECK-P10-LABEL: st_align64___float128___float128:613; CHECK-P10: # %bb.0: # %entry614; CHECK-P10-NEXT: pli r4, 244140625615; CHECK-P10-NEXT: rldic r4, r4, 12, 24616; CHECK-P10-NEXT: stxvx v2, r3, r4617; CHECK-P10-NEXT: blr618;619; CHECK-PREP10-LABEL: st_align64___float128___float128:620; CHECK-PREP10: # %bb.0: # %entry621; CHECK-PREP10-NEXT: lis r4, 3725622; CHECK-PREP10-NEXT: ori r4, r4, 19025623; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24624; CHECK-PREP10-NEXT: stxvx v2, r3, r4625; CHECK-PREP10-NEXT: blr626entry:627 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000628 store fp128 %str, ptr %add.ptr, align 16629 ret void630}631 632; Function Attrs: nofree norecurse nounwind willreturn writeonly633define dso_local void @st_reg___float128___float128(ptr nocapture %ptr, i64 %off, fp128 %str) {634; CHECK-LABEL: st_reg___float128___float128:635; CHECK: # %bb.0: # %entry636; CHECK-NEXT: stxvx v2, r3, r4637; CHECK-NEXT: blr638entry:639 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off640 store fp128 %str, ptr %add.ptr, align 16641 ret void642}643 644; Function Attrs: nofree norecurse nounwind willreturn writeonly645define dso_local void @st_or1___float128___float128(i64 %ptr, i8 zeroext %off, fp128 %str) {646; CHECK-LABEL: st_or1___float128___float128:647; CHECK: # %bb.0: # %entry648; CHECK-NEXT: or r3, r4, r3649; CHECK-NEXT: stxv v2, 0(r3)650; CHECK-NEXT: blr651entry:652 %conv = zext i8 %off to i64653 %or = or i64 %conv, %ptr654 %0 = inttoptr i64 %or to ptr655 store fp128 %str, ptr %0, align 16656 ret void657}658 659; Function Attrs: nofree norecurse nounwind willreturn writeonly660define dso_local void @st_or2___float128___float128(i64 %ptr, i8 zeroext %off, fp128 %str) {661; CHECK-LABEL: st_or2___float128___float128:662; CHECK: # %bb.0: # %entry663; CHECK-NEXT: rldicr r3, r3, 0, 51664; CHECK-NEXT: stxvx v2, r3, r4665; CHECK-NEXT: blr666entry:667 %and = and i64 %ptr, -4096668 %conv = zext i8 %off to i64669 %or = or i64 %and, %conv670 %0 = inttoptr i64 %or to ptr671 store fp128 %str, ptr %0, align 16672 ret void673}674 675; Function Attrs: nofree norecurse nounwind willreturn writeonly676define dso_local void @st_not_disjoint16___float128___float128(i64 %ptr, fp128 %str) {677; CHECK-LABEL: st_not_disjoint16___float128___float128:678; CHECK: # %bb.0: # %entry679; CHECK-NEXT: ori r3, r3, 6680; CHECK-NEXT: stxv v2, 0(r3)681; CHECK-NEXT: blr682entry:683 %or = or i64 %ptr, 6684 %0 = inttoptr i64 %or to ptr685 store fp128 %str, ptr %0, align 16686 ret void687}688 689; Function Attrs: nofree norecurse nounwind willreturn writeonly690define dso_local void @st_disjoint_unalign16___float128___float128(i64 %ptr, fp128 %str) {691; CHECK-P10-LABEL: st_disjoint_unalign16___float128___float128:692; CHECK-P10: # %bb.0: # %entry693; CHECK-P10-NEXT: rldicr r3, r3, 0, 51694; CHECK-P10-NEXT: pstxv v2, 6(r3), 0695; CHECK-P10-NEXT: blr696;697; CHECK-PREP10-LABEL: st_disjoint_unalign16___float128___float128:698; CHECK-PREP10: # %bb.0: # %entry699; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 51700; CHECK-PREP10-NEXT: li r4, 6701; CHECK-PREP10-NEXT: stxvx v2, r3, r4702; CHECK-PREP10-NEXT: blr703entry:704 %and = and i64 %ptr, -4096705 %or = or i64 %and, 6706 %0 = inttoptr i64 %or to ptr707 store fp128 %str, ptr %0, align 16708 ret void709}710 711; Function Attrs: nofree norecurse nounwind willreturn writeonly712define dso_local void @st_disjoint_align16___float128___float128(i64 %ptr, fp128 %str) {713; CHECK-P10-LABEL: st_disjoint_align16___float128___float128:714; CHECK-P10: # %bb.0: # %entry715; CHECK-P10-NEXT: rldicr r3, r3, 0, 51716; CHECK-P10-NEXT: pstxv v2, 24(r3), 0717; CHECK-P10-NEXT: blr718;719; CHECK-PREP10-LABEL: st_disjoint_align16___float128___float128:720; CHECK-PREP10: # %bb.0: # %entry721; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 51722; CHECK-PREP10-NEXT: li r4, 24723; CHECK-PREP10-NEXT: stxvx v2, r3, r4724; CHECK-PREP10-NEXT: blr725entry:726 %and = and i64 %ptr, -4096727 %or = or i64 %and, 24728 %0 = inttoptr i64 %or to ptr729 store fp128 %str, ptr %0, align 16730 ret void731}732 733; Function Attrs: nofree norecurse nounwind willreturn writeonly734define dso_local void @st_not_disjoint32___float128___float128(i64 %ptr, fp128 %str) {735; CHECK-LABEL: st_not_disjoint32___float128___float128:736; CHECK: # %bb.0: # %entry737; CHECK-NEXT: ori r3, r3, 34463738; CHECK-NEXT: oris r3, r3, 1739; CHECK-NEXT: stxv v2, 0(r3)740; CHECK-NEXT: blr741entry:742 %or = or i64 %ptr, 99999743 %0 = inttoptr i64 %or to ptr744 store fp128 %str, ptr %0, align 16745 ret void746}747 748; Function Attrs: nofree norecurse nounwind willreturn writeonly749define dso_local void @st_disjoint_unalign32___float128___float128(i64 %ptr, fp128 %str) {750; CHECK-P10-LABEL: st_disjoint_unalign32___float128___float128:751; CHECK-P10: # %bb.0: # %entry752; CHECK-P10-NEXT: rldicr r3, r3, 0, 43753; CHECK-P10-NEXT: pstxv v2, 99999(r3), 0754; CHECK-P10-NEXT: blr755;756; CHECK-PREP10-LABEL: st_disjoint_unalign32___float128___float128:757; CHECK-PREP10: # %bb.0: # %entry758; CHECK-PREP10-NEXT: lis r4, 1759; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 43760; CHECK-PREP10-NEXT: ori r4, r4, 34463761; CHECK-PREP10-NEXT: stxvx v2, r3, r4762; CHECK-PREP10-NEXT: blr763entry:764 %and = and i64 %ptr, -1048576765 %or = or i64 %and, 99999766 %0 = inttoptr i64 %or to ptr767 store fp128 %str, ptr %0, align 16768 ret void769}770 771; Function Attrs: nofree norecurse nounwind willreturn writeonly772define dso_local void @st_disjoint_align32___float128___float128(i64 %ptr, fp128 %str) {773; CHECK-P10-LABEL: st_disjoint_align32___float128___float128:774; CHECK-P10: # %bb.0: # %entry775; CHECK-P10-NEXT: lis r4, -15264776; CHECK-P10-NEXT: and r3, r3, r4777; CHECK-P10-NEXT: pstxv v2, 999990000(r3), 0778; CHECK-P10-NEXT: blr779;780; CHECK-PREP10-LABEL: st_disjoint_align32___float128___float128:781; CHECK-PREP10: # %bb.0: # %entry782; CHECK-PREP10-NEXT: lis r4, -15264783; CHECK-PREP10-NEXT: and r3, r3, r4784; CHECK-PREP10-NEXT: lis r4, 15258785; CHECK-PREP10-NEXT: ori r4, r4, 41712786; CHECK-PREP10-NEXT: stxvx v2, r3, r4787; CHECK-PREP10-NEXT: blr788entry:789 %and = and i64 %ptr, -1000341504790 %or = or i64 %and, 999990000791 %0 = inttoptr i64 %or to ptr792 store fp128 %str, ptr %0, align 16793 ret void794}795 796; Function Attrs: nofree norecurse nounwind willreturn writeonly797define dso_local void @st_not_disjoint64___float128___float128(i64 %ptr, fp128 %str) {798; CHECK-P10-LABEL: st_not_disjoint64___float128___float128:799; CHECK-P10: # %bb.0: # %entry800; CHECK-P10-NEXT: pli r4, 232801; CHECK-P10-NEXT: pli r5, 3567587329802; CHECK-P10-NEXT: rldimi r5, r4, 32, 0803; CHECK-P10-NEXT: or r3, r3, r5804; CHECK-P10-NEXT: stxv v2, 0(r3)805; CHECK-P10-NEXT: blr806;807; CHECK-PREP10-LABEL: st_not_disjoint64___float128___float128:808; CHECK-PREP10: # %bb.0: # %entry809; CHECK-PREP10-NEXT: li r4, 29810; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24811; CHECK-PREP10-NEXT: oris r4, r4, 54437812; CHECK-PREP10-NEXT: ori r4, r4, 4097813; CHECK-PREP10-NEXT: or r3, r3, r4814; CHECK-PREP10-NEXT: stxv v2, 0(r3)815; CHECK-PREP10-NEXT: blr816entry:817 %or = or i64 %ptr, 1000000000001818 %0 = inttoptr i64 %or to ptr819 store fp128 %str, ptr %0, align 16820 ret void821}822 823; Function Attrs: nofree norecurse nounwind willreturn writeonly824define dso_local void @st_disjoint_unalign64___float128___float128(i64 %ptr, fp128 %str) {825; CHECK-P10-LABEL: st_disjoint_unalign64___float128___float128:826; CHECK-P10: # %bb.0: # %entry827; CHECK-P10-NEXT: pli r4, 232828; CHECK-P10-NEXT: pli r5, 3567587329829; CHECK-P10-NEXT: rldicr r3, r3, 0, 23830; CHECK-P10-NEXT: rldimi r5, r4, 32, 0831; CHECK-P10-NEXT: stxvx v2, r3, r5832; CHECK-P10-NEXT: blr833;834; CHECK-PREP10-LABEL: st_disjoint_unalign64___float128___float128:835; CHECK-PREP10: # %bb.0: # %entry836; CHECK-PREP10-NEXT: li r4, 29837; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23838; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24839; CHECK-PREP10-NEXT: oris r4, r4, 54437840; CHECK-PREP10-NEXT: ori r4, r4, 4097841; CHECK-PREP10-NEXT: stxvx v2, r3, r4842; CHECK-PREP10-NEXT: blr843entry:844 %and = and i64 %ptr, -1099511627776845 %or = or i64 %and, 1000000000001846 %0 = inttoptr i64 %or to ptr847 store fp128 %str, ptr %0, align 16848 ret void849}850 851; Function Attrs: nofree norecurse nounwind willreturn writeonly852define dso_local void @st_disjoint_align64___float128___float128(i64 %ptr, fp128 %str) {853; CHECK-P10-LABEL: st_disjoint_align64___float128___float128:854; CHECK-P10: # %bb.0: # %entry855; CHECK-P10-NEXT: pli r4, 244140625856; CHECK-P10-NEXT: rldicr r3, r3, 0, 23857; CHECK-P10-NEXT: rldic r4, r4, 12, 24858; CHECK-P10-NEXT: stxvx v2, r3, r4859; CHECK-P10-NEXT: blr860;861; CHECK-PREP10-LABEL: st_disjoint_align64___float128___float128:862; CHECK-PREP10: # %bb.0: # %entry863; CHECK-PREP10-NEXT: lis r4, 3725864; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23865; CHECK-PREP10-NEXT: ori r4, r4, 19025866; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24867; CHECK-PREP10-NEXT: stxvx v2, r3, r4868; CHECK-PREP10-NEXT: blr869entry:870 %and = and i64 %ptr, -1099511627776871 %or = or i64 %and, 1000000000000872 %0 = inttoptr i64 %or to ptr873 store fp128 %str, ptr %0, align 4096874 ret void875}876 877; Function Attrs: nofree norecurse nounwind willreturn writeonly878define dso_local void @st_cst_unalign16___float128___float128(fp128 %str) {879; CHECK-LABEL: st_cst_unalign16___float128___float128:880; CHECK: # %bb.0: # %entry881; CHECK-NEXT: li r3, 255882; CHECK-NEXT: stxv v2, 0(r3)883; CHECK-NEXT: blr884entry:885 store fp128 %str, ptr inttoptr (i64 255 to ptr), align 16886 ret void887}888 889; Function Attrs: nofree norecurse nounwind willreturn writeonly890define dso_local void @st_cst_align16___float128___float128(fp128 %str) {891; CHECK-LABEL: st_cst_align16___float128___float128:892; CHECK: # %bb.0: # %entry893; CHECK-NEXT: stxv v2, 4080(0)894; CHECK-NEXT: blr895entry:896 store fp128 %str, ptr inttoptr (i64 4080 to ptr), align 16897 ret void898}899 900; Function Attrs: nofree norecurse nounwind willreturn writeonly901define dso_local void @st_cst_unalign32___float128___float128(fp128 %str) {902; CHECK-P10-LABEL: st_cst_unalign32___float128___float128:903; CHECK-P10: # %bb.0: # %entry904; CHECK-P10-NEXT: pli r3, 99999905; CHECK-P10-NEXT: stxv v2, 0(r3)906; CHECK-P10-NEXT: blr907;908; CHECK-PREP10-LABEL: st_cst_unalign32___float128___float128:909; CHECK-PREP10: # %bb.0: # %entry910; CHECK-PREP10-NEXT: lis r3, 1911; CHECK-PREP10-NEXT: ori r3, r3, 34463912; CHECK-PREP10-NEXT: stxv v2, 0(r3)913; CHECK-PREP10-NEXT: blr914entry:915 store fp128 %str, ptr inttoptr (i64 99999 to ptr), align 16916 ret void917}918 919; Function Attrs: nofree norecurse nounwind willreturn writeonly920define dso_local void @st_cst_align32___float128___float128(fp128 %str) {921; CHECK-P10-LABEL: st_cst_align32___float128___float128:922; CHECK-P10: # %bb.0: # %entry923; CHECK-P10-NEXT: pli r3, 9999900924; CHECK-P10-NEXT: stxv v2, 0(r3)925; CHECK-P10-NEXT: blr926;927; CHECK-PREP10-LABEL: st_cst_align32___float128___float128:928; CHECK-PREP10: # %bb.0: # %entry929; CHECK-PREP10-NEXT: lis r3, 152930; CHECK-PREP10-NEXT: ori r3, r3, 38428931; CHECK-PREP10-NEXT: stxv v2, 0(r3)932; CHECK-PREP10-NEXT: blr933entry:934 store fp128 %str, ptr inttoptr (i64 9999900 to ptr), align 16935 ret void936}937 938; Function Attrs: nofree norecurse nounwind willreturn writeonly939define dso_local void @st_cst_unalign64___float128___float128(fp128 %str) {940; CHECK-P10-LABEL: st_cst_unalign64___float128___float128:941; CHECK-P10: # %bb.0: # %entry942; CHECK-P10-NEXT: pli r3, 232943; CHECK-P10-NEXT: pli r4, 3567587329944; CHECK-P10-NEXT: rldimi r4, r3, 32, 0945; CHECK-P10-NEXT: stxv v2, 0(r4)946; CHECK-P10-NEXT: blr947;948; CHECK-PREP10-LABEL: st_cst_unalign64___float128___float128:949; CHECK-PREP10: # %bb.0: # %entry950; CHECK-PREP10-NEXT: li r3, 29951; CHECK-PREP10-NEXT: rldic r3, r3, 35, 24952; CHECK-PREP10-NEXT: oris r3, r3, 54437953; CHECK-PREP10-NEXT: ori r3, r3, 4097954; CHECK-PREP10-NEXT: stxv v2, 0(r3)955; CHECK-PREP10-NEXT: blr956entry:957 store fp128 %str, ptr inttoptr (i64 1000000000001 to ptr), align 16958 ret void959}960 961; Function Attrs: nofree norecurse nounwind willreturn writeonly962define dso_local void @st_cst_align64___float128___float128(fp128 %str) {963; CHECK-P10-LABEL: st_cst_align64___float128___float128:964; CHECK-P10: # %bb.0: # %entry965; CHECK-P10-NEXT: pli r3, 244140625966; CHECK-P10-NEXT: rldic r3, r3, 12, 24967; CHECK-P10-NEXT: stxv v2, 0(r3)968; CHECK-P10-NEXT: blr969;970; CHECK-PREP10-LABEL: st_cst_align64___float128___float128:971; CHECK-PREP10: # %bb.0: # %entry972; CHECK-PREP10-NEXT: lis r3, 3725973; CHECK-PREP10-NEXT: ori r3, r3, 19025974; CHECK-PREP10-NEXT: rldic r3, r3, 12, 24975; CHECK-PREP10-NEXT: stxv v2, 0(r3)976; CHECK-PREP10-NEXT: blr977entry:978 store fp128 %str, ptr inttoptr (i64 1000000000000 to ptr), align 4096979 ret void980}981 982; Function Attrs: nofree norecurse nounwind willreturn983define dso_local void @testGlob128PtrPlus0() {984; CHECK-P10-LE-LABEL: testGlob128PtrPlus0:985; CHECK-P10-LE: # %bb.0: # %entry986; CHECK-P10-LE-NEXT: plxv vs0, GlobLd128@PCREL(0), 1987; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt128@PCREL(0), 1988; CHECK-P10-LE-NEXT: blr989;990; CHECK-P10-BE-LABEL: testGlob128PtrPlus0:991; CHECK-P10-BE: # %bb.0: # %entry992; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd128@toc@ha993; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd128@toc@l994; CHECK-P10-BE-NEXT: lxv vs0, 0(r3)995; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt128@toc@ha996; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt128@toc@l997; CHECK-P10-BE-NEXT: stxv vs0, 0(r3)998; CHECK-P10-BE-NEXT: blr999;1000; CHECK-PREP10-LABEL: testGlob128PtrPlus0:1001; CHECK-PREP10: # %bb.0: # %entry1002; CHECK-PREP10-NEXT: addis r3, r2, GlobLd128@toc@ha1003; CHECK-PREP10-NEXT: addi r3, r3, GlobLd128@toc@l1004; CHECK-PREP10-NEXT: lxv vs0, 0(r3)1005; CHECK-PREP10-NEXT: addis r3, r2, GlobSt128@toc@ha1006; CHECK-PREP10-NEXT: addi r3, r3, GlobSt128@toc@l1007; CHECK-PREP10-NEXT: stxv vs0, 0(r3)1008; CHECK-PREP10-NEXT: blr1009entry:1010 %0 = load fp128, ptr @GlobLd128, align 161011 store fp128 %0, ptr @GlobSt128, align 161012 ret void1013}1014 1015; Function Attrs: nofree norecurse nounwind willreturn1016define dso_local void @testGlob128PtrPlus3() {1017; CHECK-P10-LE-LABEL: testGlob128PtrPlus3:1018; CHECK-P10-LE: # %bb.0: # %entry1019; CHECK-P10-LE-NEXT: plxv vs0, GlobLd128@PCREL+3(0), 11020; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt128@PCREL+3(0), 11021; CHECK-P10-LE-NEXT: blr1022;1023; CHECK-P10-BE-LABEL: testGlob128PtrPlus3:1024; CHECK-P10-BE: # %bb.0: # %entry1025; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd128@toc@ha1026; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd128@toc@l1027; CHECK-P10-BE-NEXT: plxv vs0, 3(r3), 01028; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt128@toc@ha1029; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt128@toc@l1030; CHECK-P10-BE-NEXT: pstxv vs0, 3(r3), 01031; CHECK-P10-BE-NEXT: blr1032;1033; CHECK-PREP10-LABEL: testGlob128PtrPlus3:1034; CHECK-PREP10: # %bb.0: # %entry1035; CHECK-PREP10-NEXT: addis r3, r2, GlobLd128@toc@ha1036; CHECK-PREP10-NEXT: li r4, 31037; CHECK-PREP10-NEXT: addi r3, r3, GlobLd128@toc@l1038; CHECK-PREP10-NEXT: lxvx vs0, r3, r41039; CHECK-PREP10-NEXT: addis r3, r2, GlobSt128@toc@ha1040; CHECK-PREP10-NEXT: addi r3, r3, GlobSt128@toc@l1041; CHECK-PREP10-NEXT: stxvx vs0, r3, r41042; CHECK-PREP10-NEXT: blr1043entry:1044 %0 = load fp128, ptr getelementptr inbounds (i8, ptr @GlobLd128, i64 3), align 161045 store fp128 %0, ptr getelementptr inbounds (i8, ptr @GlobSt128, i64 3), align 161046 ret void1047}1048 1049; Function Attrs: nofree norecurse nounwind willreturn1050define dso_local void @testGlob128PtrPlus4() {1051; CHECK-P10-LE-LABEL: testGlob128PtrPlus4:1052; CHECK-P10-LE: # %bb.0: # %entry1053; CHECK-P10-LE-NEXT: plxv vs0, GlobLd128@PCREL+4(0), 11054; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt128@PCREL+4(0), 11055; CHECK-P10-LE-NEXT: blr1056;1057; CHECK-P10-BE-LABEL: testGlob128PtrPlus4:1058; CHECK-P10-BE: # %bb.0: # %entry1059; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd128@toc@ha1060; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd128@toc@l1061; CHECK-P10-BE-NEXT: plxv vs0, 4(r3), 01062; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt128@toc@ha1063; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt128@toc@l1064; CHECK-P10-BE-NEXT: pstxv vs0, 4(r3), 01065; CHECK-P10-BE-NEXT: blr1066;1067; CHECK-PREP10-LABEL: testGlob128PtrPlus4:1068; CHECK-PREP10: # %bb.0: # %entry1069; CHECK-PREP10-NEXT: addis r3, r2, GlobLd128@toc@ha1070; CHECK-PREP10-NEXT: li r4, 41071; CHECK-PREP10-NEXT: addi r3, r3, GlobLd128@toc@l1072; CHECK-PREP10-NEXT: lxvx vs0, r3, r41073; CHECK-PREP10-NEXT: addis r3, r2, GlobSt128@toc@ha1074; CHECK-PREP10-NEXT: addi r3, r3, GlobSt128@toc@l1075; CHECK-PREP10-NEXT: stxvx vs0, r3, r41076; CHECK-PREP10-NEXT: blr1077entry:1078 %0 = load fp128, ptr getelementptr inbounds (i8, ptr @GlobLd128, i64 4), align 161079 store fp128 %0, ptr getelementptr inbounds (i8, ptr @GlobSt128, i64 4), align 161080 ret void1081}1082 1083; Function Attrs: nofree norecurse nounwind willreturn1084define dso_local void @testGlob128PtrPlus16() {1085; CHECK-P10-LE-LABEL: testGlob128PtrPlus16:1086; CHECK-P10-LE: # %bb.0: # %entry1087; CHECK-P10-LE-NEXT: plxv vs0, GlobLd128@PCREL+16(0), 11088; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt128@PCREL+16(0), 11089; CHECK-P10-LE-NEXT: blr1090;1091; CHECK-P10-BE-LABEL: testGlob128PtrPlus16:1092; CHECK-P10-BE: # %bb.0: # %entry1093; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd128@toc@ha1094; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd128@toc@l1095; CHECK-P10-BE-NEXT: lxv vs0, 16(r3)1096; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt128@toc@ha1097; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt128@toc@l1098; CHECK-P10-BE-NEXT: stxv vs0, 16(r3)1099; CHECK-P10-BE-NEXT: blr1100;1101; CHECK-PREP10-LABEL: testGlob128PtrPlus16:1102; CHECK-PREP10: # %bb.0: # %entry1103; CHECK-PREP10-NEXT: addis r3, r2, GlobLd128@toc@ha1104; CHECK-PREP10-NEXT: addi r3, r3, GlobLd128@toc@l1105; CHECK-PREP10-NEXT: lxv vs0, 16(r3)1106; CHECK-PREP10-NEXT: addis r3, r2, GlobSt128@toc@ha1107; CHECK-PREP10-NEXT: addi r3, r3, GlobSt128@toc@l1108; CHECK-PREP10-NEXT: stxv vs0, 16(r3)1109; CHECK-PREP10-NEXT: blr1110entry:1111 %0 = load fp128, ptr getelementptr inbounds ([20 x fp128], ptr @GlobLd128, i64 0, i64 1), align 161112 store fp128 %0, ptr getelementptr inbounds ([20 x fp128], ptr @GlobSt128, i64 0, i64 1), align 161113 ret void1114}1115 1116; Function Attrs: nofree norecurse nounwind willreturn1117define dso_local void @testGlob128PtrPlusVar(i64 %Idx) {1118; CHECK-P10-LE-LABEL: testGlob128PtrPlusVar:1119; CHECK-P10-LE: # %bb.0: # %entry1120; CHECK-P10-LE-NEXT: sldi r3, r3, 41121; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd128@PCREL, 11122; CHECK-P10-LE-NEXT: lxvx vs0, r4, r31123; CHECK-P10-LE-NEXT: paddi r4, 0, GlobSt128@PCREL, 11124; CHECK-P10-LE-NEXT: stxvx vs0, r4, r31125; CHECK-P10-LE-NEXT: blr1126;1127; CHECK-P10-BE-LABEL: testGlob128PtrPlusVar:1128; CHECK-P10-BE: # %bb.0: # %entry1129; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd128@toc@ha1130; CHECK-P10-BE-NEXT: sldi r3, r3, 41131; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd128@toc@l1132; CHECK-P10-BE-NEXT: lxvx vs0, r4, r31133; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt128@toc@ha1134; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt128@toc@l1135; CHECK-P10-BE-NEXT: stxvx vs0, r4, r31136; CHECK-P10-BE-NEXT: blr1137;1138; CHECK-PREP10-LABEL: testGlob128PtrPlusVar:1139; CHECK-PREP10: # %bb.0: # %entry1140; CHECK-PREP10-NEXT: addis r4, r2, GlobLd128@toc@ha1141; CHECK-PREP10-NEXT: sldi r3, r3, 41142; CHECK-PREP10-NEXT: addi r4, r4, GlobLd128@toc@l1143; CHECK-PREP10-NEXT: lxvx vs0, r4, r31144; CHECK-PREP10-NEXT: addis r4, r2, GlobSt128@toc@ha1145; CHECK-PREP10-NEXT: addi r4, r4, GlobSt128@toc@l1146; CHECK-PREP10-NEXT: stxvx vs0, r4, r31147; CHECK-PREP10-NEXT: blr1148entry:1149 %arrayidx = getelementptr inbounds [20 x fp128], ptr @GlobLd128, i64 0, i64 %Idx1150 %0 = load fp128, ptr %arrayidx, align 161151 %arrayidx1 = getelementptr inbounds [20 x fp128], ptr @GlobSt128, i64 0, i64 %Idx1152 store fp128 %0, ptr %arrayidx1, align 161153 ret void1154}1155 1156