brintos

brintos / llvm-project-archived public Read only

0
0
Text · 40.4 KiB · 2c69b2b Raw
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