brintos

brintos / llvm-project-archived public Read only

0
0
Text · 36.6 KiB · 7f5f6a1 Raw
1100 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  \4; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P105; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \6; RUN:   -mcpu=pwr10  \7; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P108; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \9; RUN:   -mcpu=pwr9  \10; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP1011; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \12; RUN:   -mcpu=pwr9  \13; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP1014; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \15; RUN:   -mcpu=pwr8  \16; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP1017; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \18; RUN:   -mcpu=pwr8  \19; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP1020; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \21; RUN:   -mcpu=pwr8  \22; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP1023 24; Function Attrs: norecurse nounwind readonly uwtable willreturn25define dso_local i128 @ld_0___int128___int128(i64 %ptr) {26; CHECK-LABEL: ld_0___int128___int128:27; CHECK:       # %bb.0: # %entry28; CHECK-NEXT:    ld 5, 0(3)29; CHECK-NEXT:    ld 4, 8(3)30; CHECK-NEXT:    mr 3, 531; CHECK-NEXT:    blr32entry:33  %0 = inttoptr i64 %ptr to ptr34  %1 = load i128, ptr %0, align 1635  ret i128 %136}37 38; Function Attrs: norecurse nounwind readonly uwtable willreturn39define dso_local i128 @ld_unalign16___int128___int128(ptr nocapture readonly %ptr) {40; CHECK-P10-LABEL: ld_unalign16___int128___int128:41; CHECK-P10:       # %bb.0: # %entry42; CHECK-P10-NEXT:    pld 5, 1(3), 043; CHECK-P10-NEXT:    pld 4, 9(3), 044; CHECK-P10-NEXT:    mr 3, 545; CHECK-P10-NEXT:    blr46;47; CHECK-PREP10-LABEL: ld_unalign16___int128___int128:48; CHECK-PREP10:       # %bb.0: # %entry49; CHECK-PREP10-NEXT:    li 4, 150; CHECK-PREP10-NEXT:    ldx 5, 3, 451; CHECK-PREP10-NEXT:    li 4, 952; CHECK-PREP10-NEXT:    ldx 4, 3, 453; CHECK-PREP10-NEXT:    mr 3, 554; CHECK-PREP10-NEXT:    blr55entry:56  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 157  %0 = load i128, ptr %add.ptr, align 1658  ret i128 %059}60 61; Function Attrs: norecurse nounwind readonly uwtable willreturn62define dso_local i128 @ld_align16___int128___int128(ptr nocapture readonly %ptr) {63; CHECK-LABEL: ld_align16___int128___int128:64; CHECK:       # %bb.0: # %entry65; CHECK-NEXT:    ld 5, 8(3)66; CHECK-NEXT:    ld 4, 16(3)67; CHECK-NEXT:    mr 3, 568; CHECK-NEXT:    blr69entry:70  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 871  %0 = load i128, ptr %add.ptr, align 1672  ret i128 %073}74 75; Function Attrs: norecurse nounwind readonly uwtable willreturn76define dso_local i128 @ld_unalign32___int128___int128(ptr nocapture readonly %ptr) {77; CHECK-P10-LABEL: ld_unalign32___int128___int128:78; CHECK-P10:       # %bb.0: # %entry79; CHECK-P10-NEXT:    pli 4, 9999980; CHECK-P10-NEXT:    ldux 5, 3, 481; CHECK-P10-NEXT:    ld 4, 8(3)82; CHECK-P10-NEXT:    mr 3, 583; CHECK-P10-NEXT:    blr84;85; CHECK-PREP10-LABEL: ld_unalign32___int128___int128:86; CHECK-PREP10:       # %bb.0: # %entry87; CHECK-PREP10-NEXT:    lis 4, 188; CHECK-PREP10-NEXT:    ori 4, 4, 3446389; CHECK-PREP10-NEXT:    ldux 5, 3, 490; CHECK-PREP10-NEXT:    ld 4, 8(3)91; CHECK-PREP10-NEXT:    mr 3, 592; CHECK-PREP10-NEXT:    blr93entry:94  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 9999995  %0 = load i128, ptr %add.ptr, align 1696  ret i128 %097}98 99; Function Attrs: norecurse nounwind readonly uwtable willreturn100define dso_local i128 @ld_align32___int128___int128(ptr nocapture readonly %ptr) {101; CHECK-P10-LABEL: ld_align32___int128___int128:102; CHECK-P10:       # %bb.0: # %entry103; CHECK-P10-NEXT:    pli 4, 99999000104; CHECK-P10-NEXT:    ldux 5, 3, 4105; CHECK-P10-NEXT:    ld 4, 8(3)106; CHECK-P10-NEXT:    mr 3, 5107; CHECK-P10-NEXT:    blr108;109; CHECK-PREP10-LABEL: ld_align32___int128___int128:110; CHECK-PREP10:       # %bb.0: # %entry111; CHECK-PREP10-NEXT:    lis 4, 1525112; CHECK-PREP10-NEXT:    ori 4, 4, 56600113; CHECK-PREP10-NEXT:    ldux 5, 3, 4114; CHECK-PREP10-NEXT:    ld 4, 8(3)115; CHECK-PREP10-NEXT:    mr 3, 5116; CHECK-PREP10-NEXT:    blr117entry:118  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000119  %0 = load i128, ptr %add.ptr, align 16120  ret i128 %0121}122 123; Function Attrs: norecurse nounwind readonly uwtable willreturn124define dso_local i128 @ld_unalign64___int128___int128(ptr nocapture readonly %ptr) {125; CHECK-P10-LABEL: ld_unalign64___int128___int128:126; CHECK-P10:       # %bb.0: # %entry127; CHECK-P10-NEXT:    pli 4, 232128; CHECK-P10-NEXT:    pli 5, 3567587329129; CHECK-P10-NEXT:    rldimi 5, 4, 32, 0130; CHECK-P10-NEXT:    ldux 5, 3, 5131; CHECK-P10-NEXT:    ld 4, 8(3)132; CHECK-P10-NEXT:    mr 3, 5133; CHECK-P10-NEXT:    blr134;135; CHECK-PREP10-LABEL: ld_unalign64___int128___int128:136; CHECK-PREP10:       # %bb.0: # %entry137; CHECK-PREP10-NEXT:    li 4, 29138; CHECK-PREP10-NEXT:    rldic 4, 4, 35, 24139; CHECK-PREP10-NEXT:    oris 4, 4, 54437140; CHECK-PREP10-NEXT:    ori 4, 4, 4097141; CHECK-PREP10-NEXT:    ldux 5, 3, 4142; CHECK-PREP10-NEXT:    ld 4, 8(3)143; CHECK-PREP10-NEXT:    mr 3, 5144; CHECK-PREP10-NEXT:    blr145entry:146  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001147  %0 = load i128, ptr %add.ptr, align 16148  ret i128 %0149}150 151; Function Attrs: norecurse nounwind readonly uwtable willreturn152define dso_local i128 @ld_align64___int128___int128(ptr nocapture readonly %ptr) {153; CHECK-P10-LABEL: ld_align64___int128___int128:154; CHECK-P10:       # %bb.0: # %entry155; CHECK-P10-NEXT:    pli 4, 244140625156; CHECK-P10-NEXT:    rldic 4, 4, 12, 24157; CHECK-P10-NEXT:    ldux 5, 3, 4158; CHECK-P10-NEXT:    ld 4, 8(3)159; CHECK-P10-NEXT:    mr 3, 5160; CHECK-P10-NEXT:    blr161;162; CHECK-PREP10-LABEL: ld_align64___int128___int128:163; CHECK-PREP10:       # %bb.0: # %entry164; CHECK-PREP10-NEXT:    lis 4, 3725165; CHECK-PREP10-NEXT:    ori 4, 4, 19025166; CHECK-PREP10-NEXT:    rldic 4, 4, 12, 24167; CHECK-PREP10-NEXT:    ldux 5, 3, 4168; CHECK-PREP10-NEXT:    ld 4, 8(3)169; CHECK-PREP10-NEXT:    mr 3, 5170; CHECK-PREP10-NEXT:    blr171entry:172  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000173  %0 = load i128, ptr %add.ptr, align 16174  ret i128 %0175}176 177; Function Attrs: norecurse nounwind readonly uwtable willreturn178define dso_local i128 @ld_reg___int128___int128(ptr nocapture readonly %ptr, i64 %off) {179; CHECK-LABEL: ld_reg___int128___int128:180; CHECK:       # %bb.0: # %entry181; CHECK-NEXT:    ldux 5, 3, 4182; CHECK-NEXT:    ld 4, 8(3)183; CHECK-NEXT:    mr 3, 5184; CHECK-NEXT:    blr185entry:186  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off187  %0 = load i128, ptr %add.ptr, align 16188  ret i128 %0189}190 191; Function Attrs: norecurse nounwind readonly uwtable willreturn192define dso_local i128 @ld_or___int128___int128(i64 %ptr, i8 zeroext %off) {193; CHECK-LABEL: ld_or___int128___int128:194; CHECK:       # %bb.0: # %entry195; CHECK-NEXT:    or 4, 4, 3196; CHECK-NEXT:    ld 3, 0(4)197; CHECK-NEXT:    ld 4, 8(4)198; CHECK-NEXT:    blr199entry:200  %conv = zext i8 %off to i64201  %or = or i64 %conv, %ptr202  %0 = inttoptr i64 %or to ptr203  %1 = load i128, ptr %0, align 16204  ret i128 %1205}206 207; Function Attrs: norecurse nounwind readonly uwtable willreturn208define dso_local i128 @ld_or2___int128___int128(i64 %ptr, i8 zeroext %off) {209; CHECK-LABEL: ld_or2___int128___int128:210; CHECK:       # %bb.0: # %entry211; CHECK-NEXT:    rldicr 5, 3, 0, 51212; CHECK-NEXT:    rotldi 6, 3, 52213; CHECK-NEXT:    ldx 3, 5, 4214; CHECK-NEXT:    rldimi 4, 6, 12, 0215; CHECK-NEXT:    ld 4, 8(4)216; CHECK-NEXT:    blr217entry:218  %and = and i64 %ptr, -4096219  %conv = zext i8 %off to i64220  %or = or i64 %and, %conv221  %0 = inttoptr i64 %or to ptr222  %1 = load i128, ptr %0, align 16223  ret i128 %1224}225 226; Function Attrs: norecurse nounwind readonly uwtable willreturn227define dso_local i128 @ld_not_disjoint16___int128___int128(i64 %ptr) {228; CHECK-LABEL: ld_not_disjoint16___int128___int128:229; CHECK:       # %bb.0: # %entry230; CHECK-NEXT:    ori 4, 3, 6231; CHECK-NEXT:    ld 3, 0(4)232; CHECK-NEXT:    ld 4, 8(4)233; CHECK-NEXT:    blr234entry:235  %or = or i64 %ptr, 6236  %0 = inttoptr i64 %or to ptr237  %1 = load i128, ptr %0, align 16238  ret i128 %1239}240 241; Function Attrs: norecurse nounwind readonly uwtable willreturn242define dso_local i128 @ld_disjoint_unalign16___int128___int128(i64 %ptr) {243; CHECK-P10-LABEL: ld_disjoint_unalign16___int128___int128:244; CHECK-P10:       # %bb.0: # %entry245; CHECK-P10-NEXT:    rldicr 4, 3, 0, 51246; CHECK-P10-NEXT:    pld 3, 6(4), 0247; CHECK-P10-NEXT:    pld 4, 14(4), 0248; CHECK-P10-NEXT:    blr249;250; CHECK-PREP10-LABEL: ld_disjoint_unalign16___int128___int128:251; CHECK-PREP10:       # %bb.0: # %entry252; CHECK-PREP10-NEXT:    rldicr 4, 3, 0, 51253; CHECK-PREP10-NEXT:    li 3, 6254; CHECK-PREP10-NEXT:    li 5, 14255; CHECK-PREP10-NEXT:    ldx 3, 4, 3256; CHECK-PREP10-NEXT:    ldx 4, 4, 5257; CHECK-PREP10-NEXT:    blr258entry:259  %and = and i64 %ptr, -4096260  %or = or i64 %and, 6261  %0 = inttoptr i64 %or to ptr262  %1 = load i128, ptr %0, align 16263  ret i128 %1264}265 266; Function Attrs: norecurse nounwind readonly uwtable willreturn267define dso_local i128 @ld_disjoint_align16___int128___int128(i64 %ptr) {268; CHECK-LABEL: ld_disjoint_align16___int128___int128:269; CHECK:       # %bb.0: # %entry270; CHECK-NEXT:    rldicr 4, 3, 0, 51271; CHECK-NEXT:    ld 3, 24(4)272; CHECK-NEXT:    ld 4, 32(4)273; CHECK-NEXT:    blr274entry:275  %and = and i64 %ptr, -4096276  %or = or i64 %and, 24277  %0 = inttoptr i64 %or to ptr278  %1 = load i128, ptr %0, align 16279  ret i128 %1280}281 282; Function Attrs: norecurse nounwind readonly uwtable willreturn283define dso_local i128 @ld_not_disjoint32___int128___int128(i64 %ptr) {284; CHECK-LABEL: ld_not_disjoint32___int128___int128:285; CHECK:       # %bb.0: # %entry286; CHECK-NEXT:    ori 3, 3, 34463287; CHECK-NEXT:    oris 4, 3, 1288; CHECK-NEXT:    ld 3, 0(4)289; CHECK-NEXT:    ld 4, 8(4)290; CHECK-NEXT:    blr291entry:292  %or = or i64 %ptr, 99999293  %0 = inttoptr i64 %or to ptr294  %1 = load i128, ptr %0, align 16295  ret i128 %1296}297 298; Function Attrs: norecurse nounwind readonly uwtable willreturn299define dso_local i128 @ld_disjoint_unalign32___int128___int128(i64 %ptr) {300; CHECK-P10-LABEL: ld_disjoint_unalign32___int128___int128:301; CHECK-P10:       # %bb.0: # %entry302; CHECK-P10-NEXT:    rldicr 4, 3, 0, 43303; CHECK-P10-NEXT:    pld 3, 99999(4), 0304; CHECK-P10-NEXT:    pld 4, 100007(4), 0305; CHECK-P10-NEXT:    blr306;307; CHECK-PREP10-LABEL: ld_disjoint_unalign32___int128___int128:308; CHECK-PREP10:       # %bb.0: # %entry309; CHECK-PREP10-NEXT:    lis 5, 1310; CHECK-PREP10-NEXT:    rldicr 4, 3, 0, 43311; CHECK-PREP10-NEXT:    ori 3, 5, 34463312; CHECK-PREP10-NEXT:    ori 5, 5, 34471313; CHECK-PREP10-NEXT:    ldx 3, 4, 3314; CHECK-PREP10-NEXT:    ldx 4, 4, 5315; CHECK-PREP10-NEXT:    blr316entry:317  %and = and i64 %ptr, -1048576318  %or = or i64 %and, 99999319  %0 = inttoptr i64 %or to ptr320  %1 = load i128, ptr %0, align 16321  ret i128 %1322}323 324; Function Attrs: norecurse nounwind readonly uwtable willreturn325define dso_local i128 @ld_disjoint_align32___int128___int128(i64 %ptr) {326; CHECK-P10-LABEL: ld_disjoint_align32___int128___int128:327; CHECK-P10:       # %bb.0: # %entry328; CHECK-P10-NEXT:    lis 4, -15264329; CHECK-P10-NEXT:    and 4, 3, 4330; CHECK-P10-NEXT:    pld 3, 999990000(4), 0331; CHECK-P10-NEXT:    pld 4, 999990008(4), 0332; CHECK-P10-NEXT:    blr333;334; CHECK-PREP10-LABEL: ld_disjoint_align32___int128___int128:335; CHECK-PREP10:       # %bb.0: # %entry336; CHECK-PREP10-NEXT:    lis 4, -15264337; CHECK-PREP10-NEXT:    lis 5, 15258338; CHECK-PREP10-NEXT:    and 4, 3, 4339; CHECK-PREP10-NEXT:    ori 3, 5, 41712340; CHECK-PREP10-NEXT:    ori 5, 5, 41720341; CHECK-PREP10-NEXT:    ldx 3, 4, 3342; CHECK-PREP10-NEXT:    ldx 4, 4, 5343; CHECK-PREP10-NEXT:    blr344entry:345  %and = and i64 %ptr, -1000341504346  %or = or i64 %and, 999990000347  %0 = inttoptr i64 %or to ptr348  %1 = load i128, ptr %0, align 16349  ret i128 %1350}351 352; Function Attrs: norecurse nounwind readonly uwtable willreturn353define dso_local i128 @ld_not_disjoint64___int128___int128(i64 %ptr) {354; CHECK-P10-LABEL: ld_not_disjoint64___int128___int128:355; CHECK-P10:       # %bb.0: # %entry356; CHECK-P10-NEXT:    pli 4, 232357; CHECK-P10-NEXT:    pli 5, 3567587329358; CHECK-P10-NEXT:    rldimi 5, 4, 32, 0359; CHECK-P10-NEXT:    or 4, 3, 5360; CHECK-P10-NEXT:    ld 3, 0(4)361; CHECK-P10-NEXT:    ld 4, 8(4)362; CHECK-P10-NEXT:    blr363;364; CHECK-PREP10-LABEL: ld_not_disjoint64___int128___int128:365; CHECK-PREP10:       # %bb.0: # %entry366; CHECK-PREP10-NEXT:    li 4, 29367; CHECK-PREP10-NEXT:    rldic 4, 4, 35, 24368; CHECK-PREP10-NEXT:    oris 4, 4, 54437369; CHECK-PREP10-NEXT:    ori 4, 4, 4097370; CHECK-PREP10-NEXT:    or 4, 3, 4371; CHECK-PREP10-NEXT:    ld 3, 0(4)372; CHECK-PREP10-NEXT:    ld 4, 8(4)373; CHECK-PREP10-NEXT:    blr374entry:375  %or = or i64 %ptr, 1000000000001376  %0 = inttoptr i64 %or to ptr377  %1 = load i128, ptr %0, align 16378  ret i128 %1379}380 381; Function Attrs: norecurse nounwind readonly uwtable willreturn382define dso_local i128 @ld_disjoint_unalign64___int128___int128(i64 %ptr) {383; CHECK-P10-LABEL: ld_disjoint_unalign64___int128___int128:384; CHECK-P10:       # %bb.0: # %entry385; CHECK-P10-NEXT:    rldicr 4, 3, 0, 23386; CHECK-P10-NEXT:    pli 5, 232387; CHECK-P10-NEXT:    pli 3, 3567587329388; CHECK-P10-NEXT:    rldimi 3, 5, 32, 0389; CHECK-P10-NEXT:    pli 6, 3567587337390; CHECK-P10-NEXT:    rldimi 6, 5, 32, 0391; CHECK-P10-NEXT:    ldx 3, 4, 3392; CHECK-P10-NEXT:    ldx 4, 4, 6393; CHECK-P10-NEXT:    blr394;395; CHECK-PREP10-LABEL: ld_disjoint_unalign64___int128___int128:396; CHECK-PREP10:       # %bb.0: # %entry397; CHECK-PREP10-NEXT:    rldicr 4, 3, 0, 23398; CHECK-PREP10-NEXT:    li 3, 29399; CHECK-PREP10-NEXT:    rldic 3, 3, 35, 24400; CHECK-PREP10-NEXT:    oris 5, 3, 54437401; CHECK-PREP10-NEXT:    ori 3, 5, 4097402; CHECK-PREP10-NEXT:    ori 5, 5, 4105403; CHECK-PREP10-NEXT:    ldx 3, 4, 3404; CHECK-PREP10-NEXT:    ldx 4, 4, 5405; CHECK-PREP10-NEXT:    blr406entry:407  %and = and i64 %ptr, -1099511627776408  %or = or i64 %and, 1000000000001409  %0 = inttoptr i64 %or to ptr410  %1 = load i128, ptr %0, align 16411  ret i128 %1412}413 414; Function Attrs: norecurse nounwind readonly uwtable willreturn415define dso_local i128 @ld_disjoint_align64___int128___int128(i64 %ptr) {416; CHECK-P10-LABEL: ld_disjoint_align64___int128___int128:417; CHECK-P10:       # %bb.0: # %entry418; CHECK-P10-NEXT:    rldicr 4, 3, 0, 23419; CHECK-P10-NEXT:    pli 3, 244140625420; CHECK-P10-NEXT:    pli 5, 232421; CHECK-P10-NEXT:    rldic 3, 3, 12, 24422; CHECK-P10-NEXT:    pli 6, 3567587336423; CHECK-P10-NEXT:    rldimi 6, 5, 32, 0424; CHECK-P10-NEXT:    ldx 3, 4, 3425; CHECK-P10-NEXT:    ldx 4, 4, 6426; CHECK-P10-NEXT:    blr427;428; CHECK-PREP10-LABEL: ld_disjoint_align64___int128___int128:429; CHECK-PREP10:       # %bb.0: # %entry430; CHECK-PREP10-NEXT:    li 5, 29431; CHECK-PREP10-NEXT:    rldicr 4, 3, 0, 23432; CHECK-PREP10-NEXT:    lis 3, 3725433; CHECK-PREP10-NEXT:    rldic 5, 5, 35, 24434; CHECK-PREP10-NEXT:    ori 3, 3, 19025435; CHECK-PREP10-NEXT:    oris 5, 5, 54437436; CHECK-PREP10-NEXT:    rldic 3, 3, 12, 24437; CHECK-PREP10-NEXT:    ori 5, 5, 4104438; CHECK-PREP10-NEXT:    ldx 3, 4, 3439; CHECK-PREP10-NEXT:    ldx 4, 4, 5440; CHECK-PREP10-NEXT:    blr441entry:442  %and = and i64 %ptr, -1099511627776443  %or = or i64 %and, 1000000000000444  %0 = inttoptr i64 %or to ptr445  %1 = load i128, ptr %0, align 4096446  ret i128 %1447}448 449; Function Attrs: norecurse nounwind readonly uwtable willreturn450define dso_local i128 @ld_cst_unalign16___int128___int128() {451; CHECK-LABEL: ld_cst_unalign16___int128___int128:452; CHECK:       # %bb.0: # %entry453; CHECK-NEXT:    li 3, 255454; CHECK-NEXT:    li 4, 263455; CHECK-NEXT:    ld 3, 0(3)456; CHECK-NEXT:    ld 4, 0(4)457; CHECK-NEXT:    blr458entry:459  %0 = load i128, ptr inttoptr (i64 255 to ptr), align 16460  ret i128 %0461}462 463; Function Attrs: norecurse nounwind readonly uwtable willreturn464define dso_local i128 @ld_cst_align16___int128___int128() {465; CHECK-LABEL: ld_cst_align16___int128___int128:466; CHECK:       # %bb.0: # %entry467; CHECK-NEXT:    ld 3, 4080(0)468; CHECK-NEXT:    ld 4, 4088(0)469; CHECK-NEXT:    blr470entry:471  %0 = load i128, ptr inttoptr (i64 4080 to ptr), align 16472  ret i128 %0473}474 475; Function Attrs: norecurse nounwind readonly uwtable willreturn476define dso_local i128 @ld_cst_unalign32___int128___int128() {477; CHECK-P10-LABEL: ld_cst_unalign32___int128___int128:478; CHECK-P10:       # %bb.0: # %entry479; CHECK-P10-NEXT:    pli 3, 99999480; CHECK-P10-NEXT:    pli 4, 100007481; CHECK-P10-NEXT:    ld 3, 0(3)482; CHECK-P10-NEXT:    ld 4, 0(4)483; CHECK-P10-NEXT:    blr484;485; CHECK-PREP10-LABEL: ld_cst_unalign32___int128___int128:486; CHECK-PREP10:       # %bb.0: # %entry487; CHECK-PREP10-NEXT:    lis 4, 1488; CHECK-PREP10-NEXT:    ori 3, 4, 34463489; CHECK-PREP10-NEXT:    ori 4, 4, 34471490; CHECK-PREP10-NEXT:    ld 3, 0(3)491; CHECK-PREP10-NEXT:    ld 4, 0(4)492; CHECK-PREP10-NEXT:    blr493entry:494  %0 = load i128, ptr inttoptr (i64 99999 to ptr), align 16495  ret i128 %0496}497 498; Function Attrs: norecurse nounwind readonly uwtable willreturn499define dso_local i128 @ld_cst_align32___int128___int128() {500; CHECK-LABEL: ld_cst_align32___int128___int128:501; CHECK:       # %bb.0: # %entry502; CHECK-NEXT:    lis 4, 153503; CHECK-NEXT:    ld 3, -27108(4)504; CHECK-NEXT:    ld 4, -27100(4)505; CHECK-NEXT:    blr506entry:507  %0 = load i128, ptr inttoptr (i64 9999900 to ptr), align 16508  ret i128 %0509}510 511; Function Attrs: norecurse nounwind readonly uwtable willreturn512define dso_local i128 @ld_cst_unalign64___int128___int128() {513; CHECK-P10-LABEL: ld_cst_unalign64___int128___int128:514; CHECK-P10:       # %bb.0: # %entry515; CHECK-P10-NEXT:    pli 4, 232516; CHECK-P10-NEXT:    pli 3, 3567587329517; CHECK-P10-NEXT:    rldimi 3, 4, 32, 0518; CHECK-P10-NEXT:    pli 5, 3567587337519; CHECK-P10-NEXT:    rldimi 5, 4, 32, 0520; CHECK-P10-NEXT:    ld 3, 0(3)521; CHECK-P10-NEXT:    ld 4, 0(5)522; CHECK-P10-NEXT:    blr523;524; CHECK-PREP10-LABEL: ld_cst_unalign64___int128___int128:525; CHECK-PREP10:       # %bb.0: # %entry526; CHECK-PREP10-NEXT:    li 3, 29527; CHECK-PREP10-NEXT:    rldic 3, 3, 35, 24528; CHECK-PREP10-NEXT:    oris 4, 3, 54437529; CHECK-PREP10-NEXT:    ori 3, 4, 4097530; CHECK-PREP10-NEXT:    ori 4, 4, 4105531; CHECK-PREP10-NEXT:    ld 3, 0(3)532; CHECK-PREP10-NEXT:    ld 4, 0(4)533; CHECK-PREP10-NEXT:    blr534entry:535  %0 = load i128, ptr inttoptr (i64 1000000000001 to ptr), align 16536  ret i128 %0537}538 539; Function Attrs: norecurse nounwind readonly uwtable willreturn540define dso_local i128 @ld_cst_align64___int128___int128() {541; CHECK-P10-LABEL: ld_cst_align64___int128___int128:542; CHECK-P10:       # %bb.0: # %entry543; CHECK-P10-NEXT:    pli 3, 232544; CHECK-P10-NEXT:    pli 4, 3567587336545; CHECK-P10-NEXT:    rldimi 4, 3, 32, 0546; CHECK-P10-NEXT:    pli 3, 244140625547; CHECK-P10-NEXT:    rldic 3, 3, 12, 24548; CHECK-P10-NEXT:    ld 4, 0(4)549; CHECK-P10-NEXT:    ld 3, 0(3)550; CHECK-P10-NEXT:    blr551;552; CHECK-PREP10-LABEL: ld_cst_align64___int128___int128:553; CHECK-PREP10:       # %bb.0: # %entry554; CHECK-PREP10-NEXT:    li 4, 29555; CHECK-PREP10-NEXT:    lis 3, 3725556; CHECK-PREP10-NEXT:    rldic 4, 4, 35, 24557; CHECK-PREP10-NEXT:    ori 3, 3, 19025558; CHECK-PREP10-NEXT:    oris 4, 4, 54437559; CHECK-PREP10-NEXT:    rldic 3, 3, 12, 24560; CHECK-PREP10-NEXT:    ori 4, 4, 4104561; CHECK-PREP10-NEXT:    ld 3, 0(3)562; CHECK-PREP10-NEXT:    ld 4, 0(4)563; CHECK-PREP10-NEXT:    blr564entry:565  %0 = load i128, ptr inttoptr (i64 1000000000000 to ptr), align 4096566  ret i128 %0567}568 569; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly570define dso_local void @st_0__int128___int128(i64 %ptr, i128 %str) {571; CHECK-LABEL: st_0__int128___int128:572; CHECK:       # %bb.0: # %entry573; CHECK-NEXT:    std 5, 8(3)574; CHECK-NEXT:    std 4, 0(3)575; CHECK-NEXT:    blr576entry:577  %0 = inttoptr i64 %ptr to ptr578  store i128 %str, ptr %0, align 16579  ret void580}581 582; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly583define dso_local void @st_unalign16__int128___int128(ptr nocapture %ptr, i128 %str) {584; CHECK-P10-LABEL: st_unalign16__int128___int128:585; CHECK-P10:       # %bb.0: # %entry586; CHECK-P10-NEXT:    pstd 5, 9(3), 0587; CHECK-P10-NEXT:    pstd 4, 1(3), 0588; CHECK-P10-NEXT:    blr589;590; CHECK-PREP10-LABEL: st_unalign16__int128___int128:591; CHECK-PREP10:       # %bb.0: # %entry592; CHECK-PREP10-NEXT:    li 6, 9593; CHECK-PREP10-NEXT:    stdx 5, 3, 6594; CHECK-PREP10-NEXT:    li 5, 1595; CHECK-PREP10-NEXT:    stdx 4, 3, 5596; CHECK-PREP10-NEXT:    blr597entry:598  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1599  store i128 %str, ptr %add.ptr, align 16600  ret void601}602 603; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly604define dso_local void @st_align16__int128___int128(ptr nocapture %ptr, i128 %str) {605; CHECK-LABEL: st_align16__int128___int128:606; CHECK:       # %bb.0: # %entry607; CHECK-NEXT:    std 5, 16(3)608; CHECK-NEXT:    std 4, 8(3)609; CHECK-NEXT:    blr610entry:611  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8612  store i128 %str, ptr %add.ptr, align 16613  ret void614}615 616; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly617define dso_local void @st_unalign32__int128___int128(ptr nocapture %ptr, i128 %str) {618; CHECK-P10-LABEL: st_unalign32__int128___int128:619; CHECK-P10:       # %bb.0: # %entry620; CHECK-P10-NEXT:    pli 6, 99999621; CHECK-P10-NEXT:    stdux 4, 3, 6622; CHECK-P10-NEXT:    std 5, 8(3)623; CHECK-P10-NEXT:    blr624;625; CHECK-PREP10-LABEL: st_unalign32__int128___int128:626; CHECK-PREP10:       # %bb.0: # %entry627; CHECK-PREP10-NEXT:    lis 6, 1628; CHECK-PREP10-NEXT:    ori 6, 6, 34463629; CHECK-PREP10-NEXT:    stdux 4, 3, 6630; CHECK-PREP10-NEXT:    std 5, 8(3)631; CHECK-PREP10-NEXT:    blr632entry:633  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999634  store i128 %str, ptr %add.ptr, align 16635  ret void636}637 638; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly639define dso_local void @st_align32__int128___int128(ptr nocapture %ptr, i128 %str) {640; CHECK-P10-LABEL: st_align32__int128___int128:641; CHECK-P10:       # %bb.0: # %entry642; CHECK-P10-NEXT:    pli 6, 99999000643; CHECK-P10-NEXT:    stdux 4, 3, 6644; CHECK-P10-NEXT:    std 5, 8(3)645; CHECK-P10-NEXT:    blr646;647; CHECK-PREP10-LABEL: st_align32__int128___int128:648; CHECK-PREP10:       # %bb.0: # %entry649; CHECK-PREP10-NEXT:    lis 6, 1525650; CHECK-PREP10-NEXT:    ori 6, 6, 56600651; CHECK-PREP10-NEXT:    stdux 4, 3, 6652; CHECK-PREP10-NEXT:    std 5, 8(3)653; CHECK-PREP10-NEXT:    blr654entry:655  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000656  store i128 %str, ptr %add.ptr, align 16657  ret void658}659 660; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly661define dso_local void @st_unalign64__int128___int128(ptr nocapture %ptr, i128 %str) {662; CHECK-P10-LABEL: st_unalign64__int128___int128:663; CHECK-P10:       # %bb.0: # %entry664; CHECK-P10-NEXT:    pli 6, 232665; CHECK-P10-NEXT:    pli 7, 3567587329666; CHECK-P10-NEXT:    rldimi 7, 6, 32, 0667; CHECK-P10-NEXT:    stdux 4, 3, 7668; CHECK-P10-NEXT:    std 5, 8(3)669; CHECK-P10-NEXT:    blr670;671; CHECK-PREP10-LABEL: st_unalign64__int128___int128:672; CHECK-PREP10:       # %bb.0: # %entry673; CHECK-PREP10-NEXT:    li 6, 29674; CHECK-PREP10-NEXT:    rldic 6, 6, 35, 24675; CHECK-PREP10-NEXT:    oris 6, 6, 54437676; CHECK-PREP10-NEXT:    ori 6, 6, 4097677; CHECK-PREP10-NEXT:    stdux 4, 3, 6678; CHECK-PREP10-NEXT:    std 5, 8(3)679; CHECK-PREP10-NEXT:    blr680entry:681  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001682  store i128 %str, ptr %add.ptr, align 16683  ret void684}685 686; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly687define dso_local void @st_align64__int128___int128(ptr nocapture %ptr, i128 %str) {688; CHECK-P10-LABEL: st_align64__int128___int128:689; CHECK-P10:       # %bb.0: # %entry690; CHECK-P10-NEXT:    pli 6, 244140625691; CHECK-P10-NEXT:    rldic 6, 6, 12, 24692; CHECK-P10-NEXT:    stdux 4, 3, 6693; CHECK-P10-NEXT:    std 5, 8(3)694; CHECK-P10-NEXT:    blr695;696; CHECK-PREP10-LABEL: st_align64__int128___int128:697; CHECK-PREP10:       # %bb.0: # %entry698; CHECK-PREP10-NEXT:    lis 6, 3725699; CHECK-PREP10-NEXT:    ori 6, 6, 19025700; CHECK-PREP10-NEXT:    rldic 6, 6, 12, 24701; CHECK-PREP10-NEXT:    stdux 4, 3, 6702; CHECK-PREP10-NEXT:    std 5, 8(3)703; CHECK-PREP10-NEXT:    blr704entry:705  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000706  store i128 %str, ptr %add.ptr, align 16707  ret void708}709 710; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly711define dso_local void @st_reg__int128___int128(ptr nocapture %ptr, i64 %off, i128 %str) {712; CHECK-LABEL: st_reg__int128___int128:713; CHECK:       # %bb.0: # %entry714; CHECK-NEXT:    stdux 5, 3, 4715; CHECK-NEXT:    std 6, 8(3)716; CHECK-NEXT:    blr717entry:718  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off719  store i128 %str, ptr %add.ptr, align 16720  ret void721}722 723; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly724define dso_local void @st_or1__int128___int128(i64 %ptr, i8 zeroext %off, i128 %str) {725; CHECK-LABEL: st_or1__int128___int128:726; CHECK:       # %bb.0: # %entry727; CHECK-NEXT:    or 3, 4, 3728; CHECK-NEXT:    std 6, 8(3)729; CHECK-NEXT:    std 5, 0(3)730; CHECK-NEXT:    blr731entry:732  %conv = zext i8 %off to i64733  %or = or i64 %conv, %ptr734  %0 = inttoptr i64 %or to ptr735  store i128 %str, ptr %0, align 16736  ret void737}738 739; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly740define dso_local void @st_or2__int128___int128(i64 %ptr, i8 zeroext %off, i128 %str) {741; CHECK-LABEL: st_or2__int128___int128:742; CHECK:       # %bb.0: # %entry743; CHECK-NEXT:    rldicr 7, 3, 0, 51744; CHECK-NEXT:    rotldi 3, 3, 52745; CHECK-NEXT:    stdx 5, 7, 4746; CHECK-NEXT:    rldimi 4, 3, 12, 0747; CHECK-NEXT:    std 6, 8(4)748; CHECK-NEXT:    blr749entry:750  %and = and i64 %ptr, -4096751  %conv = zext i8 %off to i64752  %or = or i64 %and, %conv753  %0 = inttoptr i64 %or to ptr754  store i128 %str, ptr %0, align 16755  ret void756}757 758; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly759define dso_local void @st_not_disjoint16__int128___int128(i64 %ptr, i128 %str) {760; CHECK-LABEL: st_not_disjoint16__int128___int128:761; CHECK:       # %bb.0: # %entry762; CHECK-NEXT:    ori 3, 3, 6763; CHECK-NEXT:    std 5, 8(3)764; CHECK-NEXT:    std 4, 0(3)765; CHECK-NEXT:    blr766entry:767  %or = or i64 %ptr, 6768  %0 = inttoptr i64 %or to ptr769  store i128 %str, ptr %0, align 16770  ret void771}772 773; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly774define dso_local void @st_disjoint_unalign16__int128___int128(i64 %ptr, i128 %str) {775; CHECK-P10-LABEL: st_disjoint_unalign16__int128___int128:776; CHECK-P10:       # %bb.0: # %entry777; CHECK-P10-NEXT:    rldicr 3, 3, 0, 51778; CHECK-P10-NEXT:    pstd 5, 14(3), 0779; CHECK-P10-NEXT:    pstd 4, 6(3), 0780; CHECK-P10-NEXT:    blr781;782; CHECK-PREP10-LABEL: st_disjoint_unalign16__int128___int128:783; CHECK-PREP10:       # %bb.0: # %entry784; CHECK-PREP10-NEXT:    rldicr 3, 3, 0, 51785; CHECK-PREP10-NEXT:    li 6, 14786; CHECK-PREP10-NEXT:    stdx 5, 3, 6787; CHECK-PREP10-NEXT:    li 5, 6788; CHECK-PREP10-NEXT:    stdx 4, 3, 5789; CHECK-PREP10-NEXT:    blr790entry:791  %and = and i64 %ptr, -4096792  %or = or i64 %and, 6793  %0 = inttoptr i64 %or to ptr794  store i128 %str, ptr %0, align 16795  ret void796}797 798; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly799define dso_local void @st_disjoint_align16__int128___int128(i64 %ptr, i128 %str) {800; CHECK-LABEL: st_disjoint_align16__int128___int128:801; CHECK:       # %bb.0: # %entry802; CHECK-NEXT:    rldicr 3, 3, 0, 51803; CHECK-NEXT:    std 5, 32(3)804; CHECK-NEXT:    std 4, 24(3)805; CHECK-NEXT:    blr806entry:807  %and = and i64 %ptr, -4096808  %or = or i64 %and, 24809  %0 = inttoptr i64 %or to ptr810  store i128 %str, ptr %0, align 16811  ret void812}813 814; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly815define dso_local void @st_not_disjoint32__int128___int128(i64 %ptr, i128 %str) {816; CHECK-LABEL: st_not_disjoint32__int128___int128:817; CHECK:       # %bb.0: # %entry818; CHECK-NEXT:    ori 3, 3, 34463819; CHECK-NEXT:    oris 3, 3, 1820; CHECK-NEXT:    std 5, 8(3)821; CHECK-NEXT:    std 4, 0(3)822; CHECK-NEXT:    blr823entry:824  %or = or i64 %ptr, 99999825  %0 = inttoptr i64 %or to ptr826  store i128 %str, ptr %0, align 16827  ret void828}829 830; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly831define dso_local void @st_disjoint_unalign32__int128___int128(i64 %ptr, i128 %str) {832; CHECK-P10-LABEL: st_disjoint_unalign32__int128___int128:833; CHECK-P10:       # %bb.0: # %entry834; CHECK-P10-NEXT:    rldicr 3, 3, 0, 43835; CHECK-P10-NEXT:    pstd 5, 100007(3), 0836; CHECK-P10-NEXT:    pstd 4, 99999(3), 0837; CHECK-P10-NEXT:    blr838;839; CHECK-PREP10-LABEL: st_disjoint_unalign32__int128___int128:840; CHECK-PREP10:       # %bb.0: # %entry841; CHECK-PREP10-NEXT:    lis 6, 1842; CHECK-PREP10-NEXT:    rldicr 3, 3, 0, 43843; CHECK-PREP10-NEXT:    ori 7, 6, 34471844; CHECK-PREP10-NEXT:    stdx 5, 3, 7845; CHECK-PREP10-NEXT:    ori 5, 6, 34463846; CHECK-PREP10-NEXT:    stdx 4, 3, 5847; CHECK-PREP10-NEXT:    blr848entry:849  %and = and i64 %ptr, -1048576850  %or = or i64 %and, 99999851  %0 = inttoptr i64 %or to ptr852  store i128 %str, ptr %0, align 16853  ret void854}855 856; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly857define dso_local void @st_disjoint_align32__int128___int128(i64 %ptr, i128 %str) {858; CHECK-P10-LABEL: st_disjoint_align32__int128___int128:859; CHECK-P10:       # %bb.0: # %entry860; CHECK-P10-NEXT:    lis 6, -15264861; CHECK-P10-NEXT:    and 3, 3, 6862; CHECK-P10-NEXT:    pstd 5, 999990008(3), 0863; CHECK-P10-NEXT:    pstd 4, 999990000(3), 0864; CHECK-P10-NEXT:    blr865;866; CHECK-PREP10-LABEL: st_disjoint_align32__int128___int128:867; CHECK-PREP10:       # %bb.0: # %entry868; CHECK-PREP10-NEXT:    lis 6, -15264869; CHECK-PREP10-NEXT:    and 3, 3, 6870; CHECK-PREP10-NEXT:    lis 6, 15258871; CHECK-PREP10-NEXT:    ori 7, 6, 41720872; CHECK-PREP10-NEXT:    stdx 5, 3, 7873; CHECK-PREP10-NEXT:    ori 5, 6, 41712874; CHECK-PREP10-NEXT:    stdx 4, 3, 5875; CHECK-PREP10-NEXT:    blr876entry:877  %and = and i64 %ptr, -1000341504878  %or = or i64 %and, 999990000879  %0 = inttoptr i64 %or to ptr880  store i128 %str, ptr %0, align 16881  ret void882}883 884; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly885define dso_local void @st_not_disjoint64__int128___int128(i64 %ptr, i128 %str) {886; CHECK-P10-LABEL: st_not_disjoint64__int128___int128:887; CHECK-P10:       # %bb.0: # %entry888; CHECK-P10-NEXT:    pli 6, 232889; CHECK-P10-NEXT:    pli 7, 3567587329890; CHECK-P10-NEXT:    rldimi 7, 6, 32, 0891; CHECK-P10-NEXT:    or 3, 3, 7892; CHECK-P10-NEXT:    std 5, 8(3)893; CHECK-P10-NEXT:    std 4, 0(3)894; CHECK-P10-NEXT:    blr895;896; CHECK-PREP10-LABEL: st_not_disjoint64__int128___int128:897; CHECK-PREP10:       # %bb.0: # %entry898; CHECK-PREP10-NEXT:    li 6, 29899; CHECK-PREP10-NEXT:    rldic 6, 6, 35, 24900; CHECK-PREP10-NEXT:    oris 6, 6, 54437901; CHECK-PREP10-NEXT:    ori 6, 6, 4097902; CHECK-PREP10-NEXT:    or 3, 3, 6903; CHECK-PREP10-NEXT:    std 5, 8(3)904; CHECK-PREP10-NEXT:    std 4, 0(3)905; CHECK-PREP10-NEXT:    blr906entry:907  %or = or i64 %ptr, 1000000000001908  %0 = inttoptr i64 %or to ptr909  store i128 %str, ptr %0, align 16910  ret void911}912 913; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly914define dso_local void @st_disjoint_unalign64__int128___int128(i64 %ptr, i128 %str) {915; CHECK-P10-LABEL: st_disjoint_unalign64__int128___int128:916; CHECK-P10:       # %bb.0: # %entry917; CHECK-P10-NEXT:    pli 6, 232918; CHECK-P10-NEXT:    pli 7, 3567587337919; CHECK-P10-NEXT:    rldicr 3, 3, 0, 23920; CHECK-P10-NEXT:    rldimi 7, 6, 32, 0921; CHECK-P10-NEXT:    stdx 5, 3, 7922; CHECK-P10-NEXT:    pli 5, 3567587329923; CHECK-P10-NEXT:    rldimi 5, 6, 32, 0924; CHECK-P10-NEXT:    stdx 4, 3, 5925; CHECK-P10-NEXT:    blr926;927; CHECK-PREP10-LABEL: st_disjoint_unalign64__int128___int128:928; CHECK-PREP10:       # %bb.0: # %entry929; CHECK-PREP10-NEXT:    li 6, 29930; CHECK-PREP10-NEXT:    rldicr 3, 3, 0, 23931; CHECK-PREP10-NEXT:    rldic 6, 6, 35, 24932; CHECK-PREP10-NEXT:    oris 6, 6, 54437933; CHECK-PREP10-NEXT:    ori 7, 6, 4105934; CHECK-PREP10-NEXT:    stdx 5, 3, 7935; CHECK-PREP10-NEXT:    ori 5, 6, 4097936; CHECK-PREP10-NEXT:    stdx 4, 3, 5937; CHECK-PREP10-NEXT:    blr938entry:939  %and = and i64 %ptr, -1099511627776940  %or = or i64 %and, 1000000000001941  %0 = inttoptr i64 %or to ptr942  store i128 %str, ptr %0, align 16943  ret void944}945 946; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly947define dso_local void @st_disjoint_align64__int128___int128(i64 %ptr, i128 %str) {948; CHECK-P10-LABEL: st_disjoint_align64__int128___int128:949; CHECK-P10:       # %bb.0: # %entry950; CHECK-P10-NEXT:    pli 6, 232951; CHECK-P10-NEXT:    pli 7, 3567587336952; CHECK-P10-NEXT:    rldicr 3, 3, 0, 23953; CHECK-P10-NEXT:    rldimi 7, 6, 32, 0954; CHECK-P10-NEXT:    stdx 5, 3, 7955; CHECK-P10-NEXT:    pli 5, 244140625956; CHECK-P10-NEXT:    rldic 5, 5, 12, 24957; CHECK-P10-NEXT:    stdx 4, 3, 5958; CHECK-P10-NEXT:    blr959;960; CHECK-PREP10-LABEL: st_disjoint_align64__int128___int128:961; CHECK-PREP10:       # %bb.0: # %entry962; CHECK-PREP10-NEXT:    lis 6, 3725963; CHECK-PREP10-NEXT:    rldicr 3, 3, 0, 23964; CHECK-PREP10-NEXT:    ori 6, 6, 19025965; CHECK-PREP10-NEXT:    rldic 6, 6, 12, 24966; CHECK-PREP10-NEXT:    stdx 4, 3, 6967; CHECK-PREP10-NEXT:    li 4, 29968; CHECK-PREP10-NEXT:    rldic 4, 4, 35, 24969; CHECK-PREP10-NEXT:    oris 4, 4, 54437970; CHECK-PREP10-NEXT:    ori 4, 4, 4104971; CHECK-PREP10-NEXT:    stdx 5, 3, 4972; CHECK-PREP10-NEXT:    blr973entry:974  %and = and i64 %ptr, -1099511627776975  %or = or i64 %and, 1000000000000976  %0 = inttoptr i64 %or to ptr977  store i128 %str, ptr %0, align 4096978  ret void979}980 981; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly982define dso_local void @st_cst_unalign16__int128___int128(i128 %str) {983; CHECK-LABEL: st_cst_unalign16__int128___int128:984; CHECK:       # %bb.0: # %entry985; CHECK-NEXT:    li 5, 263986; CHECK-NEXT:    std 4, 0(5)987; CHECK-NEXT:    li 4, 255988; CHECK-NEXT:    std 3, 0(4)989; CHECK-NEXT:    blr990entry:991  store i128 %str, ptr inttoptr (i64 255 to ptr), align 16992  ret void993}994 995; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly996define dso_local void @st_cst_align16__int128___int128(i128 %str) {997; CHECK-LABEL: st_cst_align16__int128___int128:998; CHECK:       # %bb.0: # %entry999; CHECK-NEXT:    std 4, 4088(0)1000; CHECK-NEXT:    std 3, 4080(0)1001; CHECK-NEXT:    blr1002entry:1003  store i128 %str, ptr inttoptr (i64 4080 to ptr), align 161004  ret void1005}1006 1007; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1008define dso_local void @st_cst_unalign32__int128___int128(i128 %str) {1009; CHECK-P10-LABEL: st_cst_unalign32__int128___int128:1010; CHECK-P10:       # %bb.0: # %entry1011; CHECK-P10-NEXT:    pli 5, 1000071012; CHECK-P10-NEXT:    std 4, 0(5)1013; CHECK-P10-NEXT:    pli 4, 999991014; CHECK-P10-NEXT:    std 3, 0(4)1015; CHECK-P10-NEXT:    blr1016;1017; CHECK-PREP10-LABEL: st_cst_unalign32__int128___int128:1018; CHECK-PREP10:       # %bb.0: # %entry1019; CHECK-PREP10-NEXT:    lis 5, 11020; CHECK-PREP10-NEXT:    ori 6, 5, 344711021; CHECK-PREP10-NEXT:    std 4, 0(6)1022; CHECK-PREP10-NEXT:    ori 4, 5, 344631023; CHECK-PREP10-NEXT:    std 3, 0(4)1024; CHECK-PREP10-NEXT:    blr1025entry:1026  store i128 %str, ptr inttoptr (i64 99999 to ptr), align 161027  ret void1028}1029 1030; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1031define dso_local void @st_cst_align32__int128___int128(i128 %str) {1032; CHECK-LABEL: st_cst_align32__int128___int128:1033; CHECK:       # %bb.0: # %entry1034; CHECK-NEXT:    lis 5, 1531035; CHECK-NEXT:    std 4, -27100(5)1036; CHECK-NEXT:    std 3, -27108(5)1037; CHECK-NEXT:    blr1038entry:1039  store i128 %str, ptr inttoptr (i64 9999900 to ptr), align 161040  ret void1041}1042 1043; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1044define dso_local void @st_cst_unalign64__int128___int128(i128 %str) {1045; CHECK-P10-LABEL: st_cst_unalign64__int128___int128:1046; CHECK-P10:       # %bb.0: # %entry1047; CHECK-P10-NEXT:    pli 5, 2321048; CHECK-P10-NEXT:    pli 6, 35675873371049; CHECK-P10-NEXT:    rldimi 6, 5, 32, 01050; CHECK-P10-NEXT:    std 4, 0(6)1051; CHECK-P10-NEXT:    pli 4, 35675873291052; CHECK-P10-NEXT:    rldimi 4, 5, 32, 01053; CHECK-P10-NEXT:    std 3, 0(4)1054; CHECK-P10-NEXT:    blr1055;1056; CHECK-PREP10-LABEL: st_cst_unalign64__int128___int128:1057; CHECK-PREP10:       # %bb.0: # %entry1058; CHECK-PREP10-NEXT:    li 5, 291059; CHECK-PREP10-NEXT:    rldic 5, 5, 35, 241060; CHECK-PREP10-NEXT:    oris 5, 5, 544371061; CHECK-PREP10-NEXT:    ori 6, 5, 41051062; CHECK-PREP10-NEXT:    std 4, 0(6)1063; CHECK-PREP10-NEXT:    ori 4, 5, 40971064; CHECK-PREP10-NEXT:    std 3, 0(4)1065; CHECK-PREP10-NEXT:    blr1066entry:1067  store i128 %str, ptr inttoptr (i64 1000000000001 to ptr), align 161068  ret void1069}1070 1071; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1072define dso_local void @st_cst_align64__int128___int128(i128 %str) {1073; CHECK-P10-LABEL: st_cst_align64__int128___int128:1074; CHECK-P10:       # %bb.0: # %entry1075; CHECK-P10-NEXT:    pli 5, 2321076; CHECK-P10-NEXT:    pli 6, 35675873361077; CHECK-P10-NEXT:    rldimi 6, 5, 32, 01078; CHECK-P10-NEXT:    std 4, 0(6)1079; CHECK-P10-NEXT:    pli 4, 2441406251080; CHECK-P10-NEXT:    rldic 4, 4, 12, 241081; CHECK-P10-NEXT:    std 3, 0(4)1082; CHECK-P10-NEXT:    blr1083;1084; CHECK-PREP10-LABEL: st_cst_align64__int128___int128:1085; CHECK-PREP10:       # %bb.0: # %entry1086; CHECK-PREP10-NEXT:    lis 5, 37251087; CHECK-PREP10-NEXT:    ori 5, 5, 190251088; CHECK-PREP10-NEXT:    rldic 5, 5, 12, 241089; CHECK-PREP10-NEXT:    std 3, 0(5)1090; CHECK-PREP10-NEXT:    li 3, 291091; CHECK-PREP10-NEXT:    rldic 3, 3, 35, 241092; CHECK-PREP10-NEXT:    oris 3, 3, 544371093; CHECK-PREP10-NEXT:    ori 3, 3, 41041094; CHECK-PREP10-NEXT:    std 4, 0(3)1095; CHECK-PREP10-NEXT:    blr1096entry:1097  store i128 %str, ptr inttoptr (i64 1000000000000 to ptr), align 40961098  ret void1099}1100