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