brintos

brintos / llvm-project-archived public Read only

0
0
Text · 57.2 KiB · d756ad5 Raw
1758 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-P105; 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-P108; 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-P911; 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-P914; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \15; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \16; RUN:   < %s | FileCheck %s --check-prefixes=CHECK-P8-LE17; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \18; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \19; RUN:   < %s | FileCheck %s --check-prefixes=CHECK-P8-BE20 21; Function Attrs: norecurse nounwind readonly uwtable willreturn22define dso_local <16 x i8> @ld_0_vector(i64 %ptr) {23; CHECK-LABEL: ld_0_vector:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    lxv v2, 0(r3)26; CHECK-NEXT:    blr27;28; CHECK-P8-LE-LABEL: ld_0_vector:29; CHECK-P8-LE:       # %bb.0: # %entry30; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r331; CHECK-P8-LE-NEXT:    xxswapd v2, vs032; CHECK-P8-LE-NEXT:    blr33;34; CHECK-P8-BE-LABEL: ld_0_vector:35; CHECK-P8-BE:       # %bb.0: # %entry36; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r337; CHECK-P8-BE-NEXT:    blr38entry:39  %0 = inttoptr i64 %ptr to ptr40  %1 = load <16 x i8>, ptr %0, align 1641  ret <16 x i8> %142}43 44; Function Attrs: norecurse nounwind readonly uwtable willreturn45define dso_local <16 x i8> @ld_unalign16_vector(ptr nocapture readonly %ptr) {46; CHECK-P10-LABEL: ld_unalign16_vector:47; CHECK-P10:       # %bb.0: # %entry48; CHECK-P10-NEXT:    plxv v2, 1(r3), 049; CHECK-P10-NEXT:    blr50;51; CHECK-P9-LABEL: ld_unalign16_vector:52; CHECK-P9:       # %bb.0: # %entry53; CHECK-P9-NEXT:    li r4, 154; CHECK-P9-NEXT:    lxvx v2, r3, r455; CHECK-P9-NEXT:    blr56;57; CHECK-P8-LE-LABEL: ld_unalign16_vector:58; CHECK-P8-LE:       # %bb.0: # %entry59; CHECK-P8-LE-NEXT:    addi r3, r3, 160; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r361; CHECK-P8-LE-NEXT:    xxswapd v2, vs062; CHECK-P8-LE-NEXT:    blr63;64; CHECK-P8-BE-LABEL: ld_unalign16_vector:65; CHECK-P8-BE:       # %bb.0: # %entry66; CHECK-P8-BE-NEXT:    addi r3, r3, 167; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r368; CHECK-P8-BE-NEXT:    blr69entry:70  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 171  %0 = load <16 x i8>, ptr %add.ptr, align 1672  ret <16 x i8> %073}74 75; Function Attrs: norecurse nounwind readonly uwtable willreturn76define dso_local <16 x i8> @ld_align16_vector(ptr nocapture readonly %ptr) {77; CHECK-P10-LABEL: ld_align16_vector:78; CHECK-P10:       # %bb.0: # %entry79; CHECK-P10-NEXT:    plxv v2, 8(r3), 080; CHECK-P10-NEXT:    blr81;82; CHECK-P9-LABEL: ld_align16_vector:83; CHECK-P9:       # %bb.0: # %entry84; CHECK-P9-NEXT:    li r4, 885; CHECK-P9-NEXT:    lxvx v2, r3, r486; CHECK-P9-NEXT:    blr87;88; CHECK-P8-LE-LABEL: ld_align16_vector:89; CHECK-P8-LE:       # %bb.0: # %entry90; CHECK-P8-LE-NEXT:    addi r3, r3, 891; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r392; CHECK-P8-LE-NEXT:    xxswapd v2, vs093; CHECK-P8-LE-NEXT:    blr94;95; CHECK-P8-BE-LABEL: ld_align16_vector:96; CHECK-P8-BE:       # %bb.0: # %entry97; CHECK-P8-BE-NEXT:    addi r3, r3, 898; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r399; CHECK-P8-BE-NEXT:    blr100entry:101  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8102  %0 = load <16 x i8>, ptr %add.ptr, align 16103  ret <16 x i8> %0104}105 106; Function Attrs: norecurse nounwind readonly uwtable willreturn107define dso_local <16 x i8> @ld_unalign32_vector(ptr nocapture readonly %ptr) {108; CHECK-P10-LABEL: ld_unalign32_vector:109; CHECK-P10:       # %bb.0: # %entry110; CHECK-P10-NEXT:    plxv v2, 99999(r3), 0111; CHECK-P10-NEXT:    blr112;113; CHECK-P9-LABEL: ld_unalign32_vector:114; CHECK-P9:       # %bb.0: # %entry115; CHECK-P9-NEXT:    lis r4, 1116; CHECK-P9-NEXT:    ori r4, r4, 34463117; CHECK-P9-NEXT:    lxvx v2, r3, r4118; CHECK-P9-NEXT:    blr119;120; CHECK-P8-LE-LABEL: ld_unalign32_vector:121; CHECK-P8-LE:       # %bb.0: # %entry122; CHECK-P8-LE-NEXT:    lis r4, 1123; CHECK-P8-LE-NEXT:    ori r4, r4, 34463124; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4125; CHECK-P8-LE-NEXT:    xxswapd v2, vs0126; CHECK-P8-LE-NEXT:    blr127;128; CHECK-P8-BE-LABEL: ld_unalign32_vector:129; CHECK-P8-BE:       # %bb.0: # %entry130; CHECK-P8-BE-NEXT:    lis r4, 1131; CHECK-P8-BE-NEXT:    ori r4, r4, 34463132; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4133; CHECK-P8-BE-NEXT:    blr134entry:135  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999136  %0 = load <16 x i8>, ptr %add.ptr, align 16137  ret <16 x i8> %0138}139 140; Function Attrs: norecurse nounwind readonly uwtable willreturn141define dso_local <16 x i8> @ld_align32_vector(ptr nocapture readonly %ptr) {142; CHECK-P10-LABEL: ld_align32_vector:143; CHECK-P10:       # %bb.0: # %entry144; CHECK-P10-NEXT:    plxv v2, 99999000(r3), 0145; CHECK-P10-NEXT:    blr146;147; CHECK-P9-LABEL: ld_align32_vector:148; CHECK-P9:       # %bb.0: # %entry149; CHECK-P9-NEXT:    lis r4, 1525150; CHECK-P9-NEXT:    ori r4, r4, 56600151; CHECK-P9-NEXT:    lxvx v2, r3, r4152; CHECK-P9-NEXT:    blr153;154; CHECK-P8-LE-LABEL: ld_align32_vector:155; CHECK-P8-LE:       # %bb.0: # %entry156; CHECK-P8-LE-NEXT:    lis r4, 1525157; CHECK-P8-LE-NEXT:    ori r4, r4, 56600158; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4159; CHECK-P8-LE-NEXT:    xxswapd v2, vs0160; CHECK-P8-LE-NEXT:    blr161;162; CHECK-P8-BE-LABEL: ld_align32_vector:163; CHECK-P8-BE:       # %bb.0: # %entry164; CHECK-P8-BE-NEXT:    lis r4, 1525165; CHECK-P8-BE-NEXT:    ori r4, r4, 56600166; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4167; CHECK-P8-BE-NEXT:    blr168entry:169  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000170  %0 = load <16 x i8>, ptr %add.ptr, align 16171  ret <16 x i8> %0172}173 174; Function Attrs: norecurse nounwind readonly uwtable willreturn175define dso_local <16 x i8> @ld_unalign64_vector(ptr nocapture readonly %ptr) {176; CHECK-P10-LABEL: ld_unalign64_vector:177; CHECK-P10:       # %bb.0: # %entry178; CHECK-P10-NEXT:    pli r4, 232179; CHECK-P10-NEXT:    pli r5, 3567587329180; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0181; CHECK-P10-NEXT:    lxvx v2, r3, r5182; CHECK-P10-NEXT:    blr183;184; CHECK-P9-LABEL: ld_unalign64_vector:185; CHECK-P9:       # %bb.0: # %entry186; CHECK-P9-NEXT:    li r4, 29187; CHECK-P9-NEXT:    rldic r4, r4, 35, 24188; CHECK-P9-NEXT:    oris r4, r4, 54437189; CHECK-P9-NEXT:    ori r4, r4, 4097190; CHECK-P9-NEXT:    lxvx v2, r3, r4191; CHECK-P9-NEXT:    blr192;193; CHECK-P8-LE-LABEL: ld_unalign64_vector:194; CHECK-P8-LE:       # %bb.0: # %entry195; CHECK-P8-LE-NEXT:    li r4, 29196; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 24197; CHECK-P8-LE-NEXT:    oris r4, r4, 54437198; CHECK-P8-LE-NEXT:    ori r4, r4, 4097199; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4200; CHECK-P8-LE-NEXT:    xxswapd v2, vs0201; CHECK-P8-LE-NEXT:    blr202;203; CHECK-P8-BE-LABEL: ld_unalign64_vector:204; CHECK-P8-BE:       # %bb.0: # %entry205; CHECK-P8-BE-NEXT:    li r4, 29206; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 24207; CHECK-P8-BE-NEXT:    oris r4, r4, 54437208; CHECK-P8-BE-NEXT:    ori r4, r4, 4097209; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4210; CHECK-P8-BE-NEXT:    blr211entry:212  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000001213  %0 = load <16 x i8>, ptr %add.ptr, align 16214  ret <16 x i8> %0215}216 217; Function Attrs: norecurse nounwind readonly uwtable willreturn218define dso_local <16 x i8> @ld_align64_vector(ptr nocapture readonly %ptr) {219; CHECK-P10-LABEL: ld_align64_vector:220; CHECK-P10:       # %bb.0: # %entry221; CHECK-P10-NEXT:    pli r4, 244140625222; CHECK-P10-NEXT:    rldic r4, r4, 12, 24223; CHECK-P10-NEXT:    lxvx v2, r3, r4224; CHECK-P10-NEXT:    blr225;226; CHECK-P9-LABEL: ld_align64_vector:227; CHECK-P9:       # %bb.0: # %entry228; CHECK-P9-NEXT:    lis r4, 3725229; CHECK-P9-NEXT:    ori r4, r4, 19025230; CHECK-P9-NEXT:    rldic r4, r4, 12, 24231; CHECK-P9-NEXT:    lxvx v2, r3, r4232; CHECK-P9-NEXT:    blr233;234; CHECK-P8-LE-LABEL: ld_align64_vector:235; CHECK-P8-LE:       # %bb.0: # %entry236; CHECK-P8-LE-NEXT:    lis r4, 3725237; CHECK-P8-LE-NEXT:    ori r4, r4, 19025238; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 24239; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4240; CHECK-P8-LE-NEXT:    xxswapd v2, vs0241; CHECK-P8-LE-NEXT:    blr242;243; CHECK-P8-BE-LABEL: ld_align64_vector:244; CHECK-P8-BE:       # %bb.0: # %entry245; CHECK-P8-BE-NEXT:    lis r4, 3725246; CHECK-P8-BE-NEXT:    ori r4, r4, 19025247; CHECK-P8-BE-NEXT:    rldic r4, r4, 12, 24248; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4249; CHECK-P8-BE-NEXT:    blr250entry:251  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000252  %0 = load <16 x i8>, ptr %add.ptr, align 16253  ret <16 x i8> %0254}255 256; Function Attrs: norecurse nounwind readonly uwtable willreturn257define dso_local <16 x i8> @ld_reg_vector(ptr nocapture readonly %ptr, i64 %off) {258; CHECK-LABEL: ld_reg_vector:259; CHECK:       # %bb.0: # %entry260; CHECK-NEXT:    lxvx v2, r3, r4261; CHECK-NEXT:    blr262;263; CHECK-P8-LE-LABEL: ld_reg_vector:264; CHECK-P8-LE:       # %bb.0: # %entry265; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4266; CHECK-P8-LE-NEXT:    xxswapd v2, vs0267; CHECK-P8-LE-NEXT:    blr268;269; CHECK-P8-BE-LABEL: ld_reg_vector:270; CHECK-P8-BE:       # %bb.0: # %entry271; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4272; CHECK-P8-BE-NEXT:    blr273entry:274  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off275  %0 = load <16 x i8>, ptr %add.ptr, align 16276  ret <16 x i8> %0277}278 279; Function Attrs: norecurse nounwind readonly uwtable willreturn280define dso_local <16 x i8> @ld_or_vector(i64 %ptr, i8 zeroext %off) {281; CHECK-LABEL: ld_or_vector:282; CHECK:       # %bb.0: # %entry283; CHECK-NEXT:    or r3, r4, r3284; CHECK-NEXT:    lxv v2, 0(r3)285; CHECK-NEXT:    blr286;287; CHECK-P8-LE-LABEL: ld_or_vector:288; CHECK-P8-LE:       # %bb.0: # %entry289; CHECK-P8-LE-NEXT:    or r3, r4, r3290; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3291; CHECK-P8-LE-NEXT:    xxswapd v2, vs0292; CHECK-P8-LE-NEXT:    blr293;294; CHECK-P8-BE-LABEL: ld_or_vector:295; CHECK-P8-BE:       # %bb.0: # %entry296; CHECK-P8-BE-NEXT:    or r3, r4, r3297; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3298; CHECK-P8-BE-NEXT:    blr299entry:300  %conv = zext i8 %off to i64301  %or = or i64 %conv, %ptr302  %0 = inttoptr i64 %or to ptr303  %1 = load <16 x i8>, ptr %0, align 16304  ret <16 x i8> %1305}306 307; Function Attrs: norecurse nounwind readonly uwtable willreturn308define dso_local <16 x i8> @ld_or2_vector(i64 %ptr, i8 zeroext %off) {309; CHECK-LABEL: ld_or2_vector:310; CHECK:       # %bb.0: # %entry311; CHECK-NEXT:    rldicr r3, r3, 0, 51312; CHECK-NEXT:    lxvx v2, r3, r4313; CHECK-NEXT:    blr314;315; CHECK-P8-LE-LABEL: ld_or2_vector:316; CHECK-P8-LE:       # %bb.0: # %entry317; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 51318; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4319; CHECK-P8-LE-NEXT:    xxswapd v2, vs0320; CHECK-P8-LE-NEXT:    blr321;322; CHECK-P8-BE-LABEL: ld_or2_vector:323; CHECK-P8-BE:       # %bb.0: # %entry324; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 51325; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4326; CHECK-P8-BE-NEXT:    blr327entry:328  %and = and i64 %ptr, -4096329  %conv = zext i8 %off to i64330  %or = or i64 %and, %conv331  %0 = inttoptr i64 %or to ptr332  %1 = load <16 x i8>, ptr %0, align 16333  ret <16 x i8> %1334}335 336; Function Attrs: norecurse nounwind readonly uwtable willreturn337define dso_local <16 x i8> @ld_not_disjoint16_vector(i64 %ptr) {338; CHECK-LABEL: ld_not_disjoint16_vector:339; CHECK:       # %bb.0: # %entry340; CHECK-NEXT:    ori r3, r3, 6341; CHECK-NEXT:    lxv v2, 0(r3)342; CHECK-NEXT:    blr343;344; CHECK-P8-LE-LABEL: ld_not_disjoint16_vector:345; CHECK-P8-LE:       # %bb.0: # %entry346; CHECK-P8-LE-NEXT:    ori r3, r3, 6347; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3348; CHECK-P8-LE-NEXT:    xxswapd v2, vs0349; CHECK-P8-LE-NEXT:    blr350;351; CHECK-P8-BE-LABEL: ld_not_disjoint16_vector:352; CHECK-P8-BE:       # %bb.0: # %entry353; CHECK-P8-BE-NEXT:    ori r3, r3, 6354; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3355; CHECK-P8-BE-NEXT:    blr356entry:357  %or = or i64 %ptr, 6358  %0 = inttoptr i64 %or to ptr359  %1 = load <16 x i8>, ptr %0, align 16360  ret <16 x i8> %1361}362 363; Function Attrs: norecurse nounwind readonly uwtable willreturn364define dso_local <16 x i8> @ld_disjoint_unalign16_vector(i64 %ptr) {365; CHECK-P10-LABEL: ld_disjoint_unalign16_vector:366; CHECK-P10:       # %bb.0: # %entry367; CHECK-P10-NEXT:    rldicr r3, r3, 0, 51368; CHECK-P10-NEXT:    plxv v2, 6(r3), 0369; CHECK-P10-NEXT:    blr370;371; CHECK-P9-LABEL: ld_disjoint_unalign16_vector:372; CHECK-P9:       # %bb.0: # %entry373; CHECK-P9-NEXT:    rldicr r3, r3, 0, 51374; CHECK-P9-NEXT:    li r4, 6375; CHECK-P9-NEXT:    lxvx v2, r3, r4376; CHECK-P9-NEXT:    blr377;378; CHECK-P8-LE-LABEL: ld_disjoint_unalign16_vector:379; CHECK-P8-LE:       # %bb.0: # %entry380; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 51381; CHECK-P8-LE-NEXT:    ori r3, r3, 6382; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3383; CHECK-P8-LE-NEXT:    xxswapd v2, vs0384; CHECK-P8-LE-NEXT:    blr385;386; CHECK-P8-BE-LABEL: ld_disjoint_unalign16_vector:387; CHECK-P8-BE:       # %bb.0: # %entry388; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 51389; CHECK-P8-BE-NEXT:    ori r3, r3, 6390; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3391; CHECK-P8-BE-NEXT:    blr392entry:393  %and = and i64 %ptr, -4096394  %or = or i64 %and, 6395  %0 = inttoptr i64 %or to ptr396  %1 = load <16 x i8>, ptr %0, align 16397  ret <16 x i8> %1398}399 400; Function Attrs: norecurse nounwind readonly uwtable willreturn401define dso_local <16 x i8> @ld_disjoint_align16_vector(i64 %ptr) {402; CHECK-P10-LABEL: ld_disjoint_align16_vector:403; CHECK-P10:       # %bb.0: # %entry404; CHECK-P10-NEXT:    rldicr r3, r3, 0, 51405; CHECK-P10-NEXT:    plxv v2, 24(r3), 0406; CHECK-P10-NEXT:    blr407;408; CHECK-P9-LABEL: ld_disjoint_align16_vector:409; CHECK-P9:       # %bb.0: # %entry410; CHECK-P9-NEXT:    rldicr r3, r3, 0, 51411; CHECK-P9-NEXT:    li r4, 24412; CHECK-P9-NEXT:    lxvx v2, r3, r4413; CHECK-P9-NEXT:    blr414;415; CHECK-P8-LE-LABEL: ld_disjoint_align16_vector:416; CHECK-P8-LE:       # %bb.0: # %entry417; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 51418; CHECK-P8-LE-NEXT:    ori r3, r3, 24419; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3420; CHECK-P8-LE-NEXT:    xxswapd v2, vs0421; CHECK-P8-LE-NEXT:    blr422;423; CHECK-P8-BE-LABEL: ld_disjoint_align16_vector:424; CHECK-P8-BE:       # %bb.0: # %entry425; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 51426; CHECK-P8-BE-NEXT:    ori r3, r3, 24427; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3428; CHECK-P8-BE-NEXT:    blr429entry:430  %and = and i64 %ptr, -4096431  %or = or i64 %and, 24432  %0 = inttoptr i64 %or to ptr433  %1 = load <16 x i8>, ptr %0, align 16434  ret <16 x i8> %1435}436 437; Function Attrs: norecurse nounwind readonly uwtable willreturn438define dso_local <16 x i8> @ld_not_disjoint32_vector(i64 %ptr) {439; CHECK-LABEL: ld_not_disjoint32_vector:440; CHECK:       # %bb.0: # %entry441; CHECK-NEXT:    ori r3, r3, 34463442; CHECK-NEXT:    oris r3, r3, 1443; CHECK-NEXT:    lxv v2, 0(r3)444; CHECK-NEXT:    blr445;446; CHECK-P8-LE-LABEL: ld_not_disjoint32_vector:447; CHECK-P8-LE:       # %bb.0: # %entry448; CHECK-P8-LE-NEXT:    ori r3, r3, 34463449; CHECK-P8-LE-NEXT:    oris r3, r3, 1450; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3451; CHECK-P8-LE-NEXT:    xxswapd v2, vs0452; CHECK-P8-LE-NEXT:    blr453;454; CHECK-P8-BE-LABEL: ld_not_disjoint32_vector:455; CHECK-P8-BE:       # %bb.0: # %entry456; CHECK-P8-BE-NEXT:    ori r3, r3, 34463457; CHECK-P8-BE-NEXT:    oris r3, r3, 1458; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3459; CHECK-P8-BE-NEXT:    blr460entry:461  %or = or i64 %ptr, 99999462  %0 = inttoptr i64 %or to ptr463  %1 = load <16 x i8>, ptr %0, align 16464  ret <16 x i8> %1465}466 467; Function Attrs: norecurse nounwind readonly uwtable willreturn468define dso_local <16 x i8> @ld_disjoint_unalign32_vector(i64 %ptr) {469; CHECK-P10-LABEL: ld_disjoint_unalign32_vector:470; CHECK-P10:       # %bb.0: # %entry471; CHECK-P10-NEXT:    rldicr r3, r3, 0, 43472; CHECK-P10-NEXT:    plxv v2, 99999(r3), 0473; CHECK-P10-NEXT:    blr474;475; CHECK-P9-LABEL: ld_disjoint_unalign32_vector:476; CHECK-P9:       # %bb.0: # %entry477; CHECK-P9-NEXT:    lis r4, 1478; CHECK-P9-NEXT:    rldicr r3, r3, 0, 43479; CHECK-P9-NEXT:    ori r4, r4, 34463480; CHECK-P9-NEXT:    lxvx v2, r3, r4481; CHECK-P9-NEXT:    blr482;483; CHECK-P8-LE-LABEL: ld_disjoint_unalign32_vector:484; CHECK-P8-LE:       # %bb.0: # %entry485; CHECK-P8-LE-NEXT:    lis r4, 1486; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 43487; CHECK-P8-LE-NEXT:    ori r4, r4, 34463488; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4489; CHECK-P8-LE-NEXT:    xxswapd v2, vs0490; CHECK-P8-LE-NEXT:    blr491;492; CHECK-P8-BE-LABEL: ld_disjoint_unalign32_vector:493; CHECK-P8-BE:       # %bb.0: # %entry494; CHECK-P8-BE-NEXT:    lis r4, 1495; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 43496; CHECK-P8-BE-NEXT:    ori r4, r4, 34463497; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4498; CHECK-P8-BE-NEXT:    blr499entry:500  %and = and i64 %ptr, -1048576501  %or = or i64 %and, 99999502  %0 = inttoptr i64 %or to ptr503  %1 = load <16 x i8>, ptr %0, align 16504  ret <16 x i8> %1505}506 507; Function Attrs: norecurse nounwind readonly uwtable willreturn508define dso_local <16 x i8> @ld_disjoint_align32_vector(i64 %ptr) {509; CHECK-P10-LABEL: ld_disjoint_align32_vector:510; CHECK-P10:       # %bb.0: # %entry511; CHECK-P10-NEXT:    lis r4, -15264512; CHECK-P10-NEXT:    and r3, r3, r4513; CHECK-P10-NEXT:    plxv v2, 999990000(r3), 0514; CHECK-P10-NEXT:    blr515;516; CHECK-P9-LABEL: ld_disjoint_align32_vector:517; CHECK-P9:       # %bb.0: # %entry518; CHECK-P9-NEXT:    lis r4, -15264519; CHECK-P9-NEXT:    and r3, r3, r4520; CHECK-P9-NEXT:    lis r4, 15258521; CHECK-P9-NEXT:    ori r4, r4, 41712522; CHECK-P9-NEXT:    lxvx v2, r3, r4523; CHECK-P9-NEXT:    blr524;525; CHECK-P8-LE-LABEL: ld_disjoint_align32_vector:526; CHECK-P8-LE:       # %bb.0: # %entry527; CHECK-P8-LE-NEXT:    lis r4, -15264528; CHECK-P8-LE-NEXT:    and r3, r3, r4529; CHECK-P8-LE-NEXT:    lis r4, 15258530; CHECK-P8-LE-NEXT:    ori r4, r4, 41712531; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4532; CHECK-P8-LE-NEXT:    xxswapd v2, vs0533; CHECK-P8-LE-NEXT:    blr534;535; CHECK-P8-BE-LABEL: ld_disjoint_align32_vector:536; CHECK-P8-BE:       # %bb.0: # %entry537; CHECK-P8-BE-NEXT:    lis r4, -15264538; CHECK-P8-BE-NEXT:    and r3, r3, r4539; CHECK-P8-BE-NEXT:    lis r4, 15258540; CHECK-P8-BE-NEXT:    ori r4, r4, 41712541; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4542; CHECK-P8-BE-NEXT:    blr543entry:544  %and = and i64 %ptr, -1000341504545  %or = or i64 %and, 999990000546  %0 = inttoptr i64 %or to ptr547  %1 = load <16 x i8>, ptr %0, align 16548  ret <16 x i8> %1549}550 551; Function Attrs: norecurse nounwind readonly uwtable willreturn552define dso_local <16 x i8> @ld_not_disjoint64_vector(i64 %ptr) {553; CHECK-P10-LABEL: ld_not_disjoint64_vector:554; CHECK-P10:       # %bb.0: # %entry555; CHECK-P10-NEXT:    pli r4, 232556; CHECK-P10-NEXT:    pli r5, 3567587329557; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0558; CHECK-P10-NEXT:    or r3, r3, r5559; CHECK-P10-NEXT:    lxv v2, 0(r3)560; CHECK-P10-NEXT:    blr561;562; CHECK-P9-LABEL: ld_not_disjoint64_vector:563; CHECK-P9:       # %bb.0: # %entry564; CHECK-P9-NEXT:    li r4, 29565; CHECK-P9-NEXT:    rldic r4, r4, 35, 24566; CHECK-P9-NEXT:    oris r4, r4, 54437567; CHECK-P9-NEXT:    ori r4, r4, 4097568; CHECK-P9-NEXT:    or r3, r3, r4569; CHECK-P9-NEXT:    lxv v2, 0(r3)570; CHECK-P9-NEXT:    blr571;572; CHECK-P8-LE-LABEL: ld_not_disjoint64_vector:573; CHECK-P8-LE:       # %bb.0: # %entry574; CHECK-P8-LE-NEXT:    li r4, 29575; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 24576; CHECK-P8-LE-NEXT:    oris r4, r4, 54437577; CHECK-P8-LE-NEXT:    ori r4, r4, 4097578; CHECK-P8-LE-NEXT:    or r3, r3, r4579; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3580; CHECK-P8-LE-NEXT:    xxswapd v2, vs0581; CHECK-P8-LE-NEXT:    blr582;583; CHECK-P8-BE-LABEL: ld_not_disjoint64_vector:584; CHECK-P8-BE:       # %bb.0: # %entry585; CHECK-P8-BE-NEXT:    li r4, 29586; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 24587; CHECK-P8-BE-NEXT:    oris r4, r4, 54437588; CHECK-P8-BE-NEXT:    ori r4, r4, 4097589; CHECK-P8-BE-NEXT:    or r3, r3, r4590; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3591; CHECK-P8-BE-NEXT:    blr592entry:593  %or = or i64 %ptr, 1000000000001594  %0 = inttoptr i64 %or to ptr595  %1 = load <16 x i8>, ptr %0, align 16596  ret <16 x i8> %1597}598 599; Function Attrs: norecurse nounwind readonly uwtable willreturn600define dso_local <16 x i8> @ld_disjoint_unalign64_vector(i64 %ptr) {601; CHECK-P10-LABEL: ld_disjoint_unalign64_vector:602; CHECK-P10:       # %bb.0: # %entry603; CHECK-P10-NEXT:    pli r4, 232604; CHECK-P10-NEXT:    pli r5, 3567587329605; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23606; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0607; CHECK-P10-NEXT:    lxvx v2, r3, r5608; CHECK-P10-NEXT:    blr609;610; CHECK-P9-LABEL: ld_disjoint_unalign64_vector:611; CHECK-P9:       # %bb.0: # %entry612; CHECK-P9-NEXT:    li r4, 29613; CHECK-P9-NEXT:    rldicr r3, r3, 0, 23614; CHECK-P9-NEXT:    rldic r4, r4, 35, 24615; CHECK-P9-NEXT:    oris r4, r4, 54437616; CHECK-P9-NEXT:    ori r4, r4, 4097617; CHECK-P9-NEXT:    lxvx v2, r3, r4618; CHECK-P9-NEXT:    blr619;620; CHECK-P8-LE-LABEL: ld_disjoint_unalign64_vector:621; CHECK-P8-LE:       # %bb.0: # %entry622; CHECK-P8-LE-NEXT:    li r4, 29623; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 23624; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 24625; CHECK-P8-LE-NEXT:    oris r4, r4, 54437626; CHECK-P8-LE-NEXT:    ori r4, r4, 4097627; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4628; CHECK-P8-LE-NEXT:    xxswapd v2, vs0629; CHECK-P8-LE-NEXT:    blr630;631; CHECK-P8-BE-LABEL: ld_disjoint_unalign64_vector:632; CHECK-P8-BE:       # %bb.0: # %entry633; CHECK-P8-BE-NEXT:    li r4, 29634; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 23635; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 24636; CHECK-P8-BE-NEXT:    oris r4, r4, 54437637; CHECK-P8-BE-NEXT:    ori r4, r4, 4097638; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4639; CHECK-P8-BE-NEXT:    blr640entry:641  %and = and i64 %ptr, -1099511627776642  %or = or i64 %and, 1000000000001643  %0 = inttoptr i64 %or to ptr644  %1 = load <16 x i8>, ptr %0, align 16645  ret <16 x i8> %1646}647 648; Function Attrs: norecurse nounwind readonly uwtable willreturn649define dso_local <16 x i8> @ld_disjoint_align64_vector(i64 %ptr) {650; CHECK-P10-LABEL: ld_disjoint_align64_vector:651; CHECK-P10:       # %bb.0: # %entry652; CHECK-P10-NEXT:    pli r4, 244140625653; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23654; CHECK-P10-NEXT:    rldic r4, r4, 12, 24655; CHECK-P10-NEXT:    lxvx v2, r3, r4656; CHECK-P10-NEXT:    blr657;658; CHECK-P9-LABEL: ld_disjoint_align64_vector:659; CHECK-P9:       # %bb.0: # %entry660; CHECK-P9-NEXT:    lis r4, 3725661; CHECK-P9-NEXT:    rldicr r3, r3, 0, 23662; CHECK-P9-NEXT:    ori r4, r4, 19025663; CHECK-P9-NEXT:    rldic r4, r4, 12, 24664; CHECK-P9-NEXT:    lxvx v2, r3, r4665; CHECK-P9-NEXT:    blr666;667; CHECK-P8-LE-LABEL: ld_disjoint_align64_vector:668; CHECK-P8-LE:       # %bb.0: # %entry669; CHECK-P8-LE-NEXT:    lis r4, 3725670; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 23671; CHECK-P8-LE-NEXT:    ori r4, r4, 19025672; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 24673; CHECK-P8-LE-NEXT:    lxvd2x vs0, r3, r4674; CHECK-P8-LE-NEXT:    xxswapd v2, vs0675; CHECK-P8-LE-NEXT:    blr676;677; CHECK-P8-BE-LABEL: ld_disjoint_align64_vector:678; CHECK-P8-BE:       # %bb.0: # %entry679; CHECK-P8-BE-NEXT:    lis r4, 3725680; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 23681; CHECK-P8-BE-NEXT:    ori r4, r4, 19025682; CHECK-P8-BE-NEXT:    rldic r4, r4, 12, 24683; CHECK-P8-BE-NEXT:    lxvw4x v2, r3, r4684; CHECK-P8-BE-NEXT:    blr685entry:686  %and = and i64 %ptr, -1099511627776687  %or = or i64 %and, 1000000000000688  %0 = inttoptr i64 %or to ptr689  %1 = load <16 x i8>, ptr %0, align 4096690  ret <16 x i8> %1691}692 693; Function Attrs: norecurse nounwind readonly uwtable willreturn694define dso_local <16 x i8> @ld_cst_unalign16_vector() {695; CHECK-LABEL: ld_cst_unalign16_vector:696; CHECK:       # %bb.0: # %entry697; CHECK-NEXT:    li r3, 255698; CHECK-NEXT:    lxv v2, 0(r3)699; CHECK-NEXT:    blr700;701; CHECK-P8-LE-LABEL: ld_cst_unalign16_vector:702; CHECK-P8-LE:       # %bb.0: # %entry703; CHECK-P8-LE-NEXT:    li r3, 255704; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3705; CHECK-P8-LE-NEXT:    xxswapd v2, vs0706; CHECK-P8-LE-NEXT:    blr707;708; CHECK-P8-BE-LABEL: ld_cst_unalign16_vector:709; CHECK-P8-BE:       # %bb.0: # %entry710; CHECK-P8-BE-NEXT:    li r3, 255711; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3712; CHECK-P8-BE-NEXT:    blr713entry:714  %0 = load <16 x i8>, ptr inttoptr (i64 255 to ptr), align 16715  ret <16 x i8> %0716}717 718; Function Attrs: norecurse nounwind readonly uwtable willreturn719define dso_local <16 x i8> @ld_cst_align16_vector() {720; CHECK-LABEL: ld_cst_align16_vector:721; CHECK:       # %bb.0: # %entry722; CHECK-NEXT:    lxv v2, 4080(0)723; CHECK-NEXT:    blr724;725; CHECK-P8-LE-LABEL: ld_cst_align16_vector:726; CHECK-P8-LE:       # %bb.0: # %entry727; CHECK-P8-LE-NEXT:    li r3, 4080728; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3729; CHECK-P8-LE-NEXT:    xxswapd v2, vs0730; CHECK-P8-LE-NEXT:    blr731;732; CHECK-P8-BE-LABEL: ld_cst_align16_vector:733; CHECK-P8-BE:       # %bb.0: # %entry734; CHECK-P8-BE-NEXT:    li r3, 4080735; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3736; CHECK-P8-BE-NEXT:    blr737entry:738  %0 = load <16 x i8>, ptr inttoptr (i64 4080 to ptr), align 16739  ret <16 x i8> %0740}741 742; Function Attrs: norecurse nounwind readonly uwtable willreturn743define dso_local <16 x i8> @ld_cst_unalign32_vector() {744; CHECK-P10-LABEL: ld_cst_unalign32_vector:745; CHECK-P10:       # %bb.0: # %entry746; CHECK-P10-NEXT:    pli r3, 99999747; CHECK-P10-NEXT:    lxv v2, 0(r3)748; CHECK-P10-NEXT:    blr749;750; CHECK-P9-LABEL: ld_cst_unalign32_vector:751; CHECK-P9:       # %bb.0: # %entry752; CHECK-P9-NEXT:    lis r3, 1753; CHECK-P9-NEXT:    ori r3, r3, 34463754; CHECK-P9-NEXT:    lxv v2, 0(r3)755; CHECK-P9-NEXT:    blr756;757; CHECK-P8-LE-LABEL: ld_cst_unalign32_vector:758; CHECK-P8-LE:       # %bb.0: # %entry759; CHECK-P8-LE-NEXT:    lis r3, 1760; CHECK-P8-LE-NEXT:    ori r3, r3, 34463761; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3762; CHECK-P8-LE-NEXT:    xxswapd v2, vs0763; CHECK-P8-LE-NEXT:    blr764;765; CHECK-P8-BE-LABEL: ld_cst_unalign32_vector:766; CHECK-P8-BE:       # %bb.0: # %entry767; CHECK-P8-BE-NEXT:    lis r3, 1768; CHECK-P8-BE-NEXT:    ori r3, r3, 34463769; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3770; CHECK-P8-BE-NEXT:    blr771entry:772  %0 = load <16 x i8>, ptr inttoptr (i64 99999 to ptr), align 16773  ret <16 x i8> %0774}775 776; Function Attrs: norecurse nounwind readonly uwtable willreturn777define dso_local <16 x i8> @ld_cst_align32_vector() {778; CHECK-P10-LABEL: ld_cst_align32_vector:779; CHECK-P10:       # %bb.0: # %entry780; CHECK-P10-NEXT:    pli r3, 9999900781; CHECK-P10-NEXT:    lxv v2, 0(r3)782; CHECK-P10-NEXT:    blr783;784; CHECK-P9-LABEL: ld_cst_align32_vector:785; CHECK-P9:       # %bb.0: # %entry786; CHECK-P9-NEXT:    lis r3, 152787; CHECK-P9-NEXT:    ori r3, r3, 38428788; CHECK-P9-NEXT:    lxv v2, 0(r3)789; CHECK-P9-NEXT:    blr790;791; CHECK-P8-LE-LABEL: ld_cst_align32_vector:792; CHECK-P8-LE:       # %bb.0: # %entry793; CHECK-P8-LE-NEXT:    lis r3, 152794; CHECK-P8-LE-NEXT:    ori r3, r3, 38428795; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3796; CHECK-P8-LE-NEXT:    xxswapd v2, vs0797; CHECK-P8-LE-NEXT:    blr798;799; CHECK-P8-BE-LABEL: ld_cst_align32_vector:800; CHECK-P8-BE:       # %bb.0: # %entry801; CHECK-P8-BE-NEXT:    lis r3, 152802; CHECK-P8-BE-NEXT:    ori r3, r3, 38428803; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3804; CHECK-P8-BE-NEXT:    blr805entry:806  %0 = load <16 x i8>, ptr inttoptr (i64 9999900 to ptr), align 16807  ret <16 x i8> %0808}809 810; Function Attrs: norecurse nounwind readonly uwtable willreturn811define dso_local <16 x i8> @ld_cst_unalign64_vector() {812; CHECK-P10-LABEL: ld_cst_unalign64_vector:813; CHECK-P10:       # %bb.0: # %entry814; CHECK-P10-NEXT:    pli r3, 232815; CHECK-P10-NEXT:    pli r4, 3567587329816; CHECK-P10-NEXT:    rldimi r4, r3, 32, 0817; CHECK-P10-NEXT:    lxv v2, 0(r4)818; CHECK-P10-NEXT:    blr819;820; CHECK-P9-LABEL: ld_cst_unalign64_vector:821; CHECK-P9:       # %bb.0: # %entry822; CHECK-P9-NEXT:    li r3, 29823; CHECK-P9-NEXT:    rldic r3, r3, 35, 24824; CHECK-P9-NEXT:    oris r3, r3, 54437825; CHECK-P9-NEXT:    ori r3, r3, 4097826; CHECK-P9-NEXT:    lxv v2, 0(r3)827; CHECK-P9-NEXT:    blr828;829; CHECK-P8-LE-LABEL: ld_cst_unalign64_vector:830; CHECK-P8-LE:       # %bb.0: # %entry831; CHECK-P8-LE-NEXT:    li r3, 29832; CHECK-P8-LE-NEXT:    rldic r3, r3, 35, 24833; CHECK-P8-LE-NEXT:    oris r3, r3, 54437834; CHECK-P8-LE-NEXT:    ori r3, r3, 4097835; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3836; CHECK-P8-LE-NEXT:    xxswapd v2, vs0837; CHECK-P8-LE-NEXT:    blr838;839; CHECK-P8-BE-LABEL: ld_cst_unalign64_vector:840; CHECK-P8-BE:       # %bb.0: # %entry841; CHECK-P8-BE-NEXT:    li r3, 29842; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 24843; CHECK-P8-BE-NEXT:    oris r3, r3, 54437844; CHECK-P8-BE-NEXT:    ori r3, r3, 4097845; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3846; CHECK-P8-BE-NEXT:    blr847entry:848  %0 = load <16 x i8>, ptr inttoptr (i64 1000000000001 to ptr), align 16849  ret <16 x i8> %0850}851 852; Function Attrs: norecurse nounwind readonly uwtable willreturn853define dso_local <16 x i8> @ld_cst_align64_vector() {854; CHECK-P10-LABEL: ld_cst_align64_vector:855; CHECK-P10:       # %bb.0: # %entry856; CHECK-P10-NEXT:    pli r3, 244140625857; CHECK-P10-NEXT:    rldic r3, r3, 12, 24858; CHECK-P10-NEXT:    lxv v2, 0(r3)859; CHECK-P10-NEXT:    blr860;861; CHECK-P9-LABEL: ld_cst_align64_vector:862; CHECK-P9:       # %bb.0: # %entry863; CHECK-P9-NEXT:    lis r3, 3725864; CHECK-P9-NEXT:    ori r3, r3, 19025865; CHECK-P9-NEXT:    rldic r3, r3, 12, 24866; CHECK-P9-NEXT:    lxv v2, 0(r3)867; CHECK-P9-NEXT:    blr868;869; CHECK-P8-LE-LABEL: ld_cst_align64_vector:870; CHECK-P8-LE:       # %bb.0: # %entry871; CHECK-P8-LE-NEXT:    lis r3, 3725872; CHECK-P8-LE-NEXT:    ori r3, r3, 19025873; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 24874; CHECK-P8-LE-NEXT:    lxvd2x vs0, 0, r3875; CHECK-P8-LE-NEXT:    xxswapd v2, vs0876; CHECK-P8-LE-NEXT:    blr877;878; CHECK-P8-BE-LABEL: ld_cst_align64_vector:879; CHECK-P8-BE:       # %bb.0: # %entry880; CHECK-P8-BE-NEXT:    lis r3, 3725881; CHECK-P8-BE-NEXT:    ori r3, r3, 19025882; CHECK-P8-BE-NEXT:    rldic r3, r3, 12, 24883; CHECK-P8-BE-NEXT:    lxvw4x v2, 0, r3884; CHECK-P8-BE-NEXT:    blr885entry:886  %0 = load <16 x i8>, ptr inttoptr (i64 1000000000000 to ptr), align 4096887  ret <16 x i8> %0888}889 890; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly891define dso_local void @st_0_vector(i64 %ptr, <16 x i8> %str) {892; CHECK-LABEL: st_0_vector:893; CHECK:       # %bb.0: # %entry894; CHECK-NEXT:    stxv v2, 0(r3)895; CHECK-NEXT:    blr896;897; CHECK-P8-LE-LABEL: st_0_vector:898; CHECK-P8-LE:       # %bb.0: # %entry899; CHECK-P8-LE-NEXT:    xxswapd vs0, v2900; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r3901; CHECK-P8-LE-NEXT:    blr902;903; CHECK-P8-BE-LABEL: st_0_vector:904; CHECK-P8-BE:       # %bb.0: # %entry905; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r3906; CHECK-P8-BE-NEXT:    blr907entry:908  %0 = inttoptr i64 %ptr to ptr909  store <16 x i8> %str, ptr %0, align 16910  ret void911}912 913; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly914define dso_local void @st_unalign16_vector(ptr nocapture %ptr, <16 x i8> %str) {915; CHECK-P10-LABEL: st_unalign16_vector:916; CHECK-P10:       # %bb.0: # %entry917; CHECK-P10-NEXT:    pstxv v2, 1(r3), 0918; CHECK-P10-NEXT:    blr919;920; CHECK-P9-LABEL: st_unalign16_vector:921; CHECK-P9:       # %bb.0: # %entry922; CHECK-P9-NEXT:    li r4, 1923; CHECK-P9-NEXT:    stxvx v2, r3, r4924; CHECK-P9-NEXT:    blr925;926; CHECK-P8-LE-LABEL: st_unalign16_vector:927; CHECK-P8-LE:       # %bb.0: # %entry928; CHECK-P8-LE-NEXT:    xxswapd vs0, v2929; CHECK-P8-LE-NEXT:    addi r3, r3, 1930; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r3931; CHECK-P8-LE-NEXT:    blr932;933; CHECK-P8-BE-LABEL: st_unalign16_vector:934; CHECK-P8-BE:       # %bb.0: # %entry935; CHECK-P8-BE-NEXT:    addi r3, r3, 1936; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r3937; CHECK-P8-BE-NEXT:    blr938entry:939  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1940  store <16 x i8> %str, ptr %add.ptr, align 16941  ret void942}943 944; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly945define dso_local void @st_align16_vector(ptr nocapture %ptr, <16 x i8> %str) {946; CHECK-P10-LABEL: st_align16_vector:947; CHECK-P10:       # %bb.0: # %entry948; CHECK-P10-NEXT:    pstxv v2, 8(r3), 0949; CHECK-P10-NEXT:    blr950;951; CHECK-P9-LABEL: st_align16_vector:952; CHECK-P9:       # %bb.0: # %entry953; CHECK-P9-NEXT:    li r4, 8954; CHECK-P9-NEXT:    stxvx v2, r3, r4955; CHECK-P9-NEXT:    blr956;957; CHECK-P8-LE-LABEL: st_align16_vector:958; CHECK-P8-LE:       # %bb.0: # %entry959; CHECK-P8-LE-NEXT:    xxswapd vs0, v2960; CHECK-P8-LE-NEXT:    addi r3, r3, 8961; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r3962; CHECK-P8-LE-NEXT:    blr963;964; CHECK-P8-BE-LABEL: st_align16_vector:965; CHECK-P8-BE:       # %bb.0: # %entry966; CHECK-P8-BE-NEXT:    addi r3, r3, 8967; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r3968; CHECK-P8-BE-NEXT:    blr969entry:970  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8971  store <16 x i8> %str, ptr %add.ptr, align 16972  ret void973}974 975; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly976define dso_local void @st_unalign32_vector(ptr nocapture %ptr, <16 x i8> %str) {977; CHECK-P10-LABEL: st_unalign32_vector:978; CHECK-P10:       # %bb.0: # %entry979; CHECK-P10-NEXT:    pstxv v2, 99999(r3), 0980; CHECK-P10-NEXT:    blr981;982; CHECK-P9-LABEL: st_unalign32_vector:983; CHECK-P9:       # %bb.0: # %entry984; CHECK-P9-NEXT:    lis r4, 1985; CHECK-P9-NEXT:    ori r4, r4, 34463986; CHECK-P9-NEXT:    stxvx v2, r3, r4987; CHECK-P9-NEXT:    blr988;989; CHECK-P8-LE-LABEL: st_unalign32_vector:990; CHECK-P8-LE:       # %bb.0: # %entry991; CHECK-P8-LE-NEXT:    lis r4, 1992; CHECK-P8-LE-NEXT:    xxswapd vs0, v2993; CHECK-P8-LE-NEXT:    ori r4, r4, 34463994; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r4995; CHECK-P8-LE-NEXT:    blr996;997; CHECK-P8-BE-LABEL: st_unalign32_vector:998; CHECK-P8-BE:       # %bb.0: # %entry999; CHECK-P8-BE-NEXT:    lis r4, 11000; CHECK-P8-BE-NEXT:    ori r4, r4, 344631001; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41002; CHECK-P8-BE-NEXT:    blr1003entry:1004  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999991005  store <16 x i8> %str, ptr %add.ptr, align 161006  ret void1007}1008 1009; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1010define dso_local void @st_align32_vector(ptr nocapture %ptr, <16 x i8> %str) {1011; CHECK-P10-LABEL: st_align32_vector:1012; CHECK-P10:       # %bb.0: # %entry1013; CHECK-P10-NEXT:    pstxv v2, 99999000(r3), 01014; CHECK-P10-NEXT:    blr1015;1016; CHECK-P9-LABEL: st_align32_vector:1017; CHECK-P9:       # %bb.0: # %entry1018; CHECK-P9-NEXT:    lis r4, 15251019; CHECK-P9-NEXT:    ori r4, r4, 566001020; CHECK-P9-NEXT:    stxvx v2, r3, r41021; CHECK-P9-NEXT:    blr1022;1023; CHECK-P8-LE-LABEL: st_align32_vector:1024; CHECK-P8-LE:       # %bb.0: # %entry1025; CHECK-P8-LE-NEXT:    lis r4, 15251026; CHECK-P8-LE-NEXT:    xxswapd vs0, v21027; CHECK-P8-LE-NEXT:    ori r4, r4, 566001028; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41029; CHECK-P8-LE-NEXT:    blr1030;1031; CHECK-P8-BE-LABEL: st_align32_vector:1032; CHECK-P8-BE:       # %bb.0: # %entry1033; CHECK-P8-BE-NEXT:    lis r4, 15251034; CHECK-P8-BE-NEXT:    ori r4, r4, 566001035; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41036; CHECK-P8-BE-NEXT:    blr1037entry:1038  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001039  store <16 x i8> %str, ptr %add.ptr, align 161040  ret void1041}1042 1043; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1044define dso_local void @st_unalign64_vector(ptr nocapture %ptr, <16 x i8> %str) {1045; CHECK-P10-LABEL: st_unalign64_vector:1046; CHECK-P10:       # %bb.0: # %entry1047; CHECK-P10-NEXT:    pli r4, 2321048; CHECK-P10-NEXT:    pli r5, 35675873291049; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01050; CHECK-P10-NEXT:    stxvx v2, r3, r51051; CHECK-P10-NEXT:    blr1052;1053; CHECK-P9-LABEL: st_unalign64_vector:1054; CHECK-P9:       # %bb.0: # %entry1055; CHECK-P9-NEXT:    li r4, 291056; CHECK-P9-NEXT:    rldic r4, r4, 35, 241057; CHECK-P9-NEXT:    oris r4, r4, 544371058; CHECK-P9-NEXT:    ori r4, r4, 40971059; CHECK-P9-NEXT:    stxvx v2, r3, r41060; CHECK-P9-NEXT:    blr1061;1062; CHECK-P8-LE-LABEL: st_unalign64_vector:1063; CHECK-P8-LE:       # %bb.0: # %entry1064; CHECK-P8-LE-NEXT:    li r4, 291065; CHECK-P8-LE-NEXT:    xxswapd vs0, v21066; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 241067; CHECK-P8-LE-NEXT:    oris r4, r4, 544371068; CHECK-P8-LE-NEXT:    ori r4, r4, 40971069; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41070; CHECK-P8-LE-NEXT:    blr1071;1072; CHECK-P8-BE-LABEL: st_unalign64_vector:1073; CHECK-P8-BE:       # %bb.0: # %entry1074; CHECK-P8-BE-NEXT:    li r4, 291075; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241076; CHECK-P8-BE-NEXT:    oris r4, r4, 544371077; CHECK-P8-BE-NEXT:    ori r4, r4, 40971078; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41079; CHECK-P8-BE-NEXT:    blr1080entry:1081  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000011082  store <16 x i8> %str, ptr %add.ptr, align 161083  ret void1084}1085 1086; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1087define dso_local void @st_align64_vector(ptr nocapture %ptr, <16 x i8> %str) {1088; CHECK-P10-LABEL: st_align64_vector:1089; CHECK-P10:       # %bb.0: # %entry1090; CHECK-P10-NEXT:    pli r4, 2441406251091; CHECK-P10-NEXT:    rldic r4, r4, 12, 241092; CHECK-P10-NEXT:    stxvx v2, r3, r41093; CHECK-P10-NEXT:    blr1094;1095; CHECK-P9-LABEL: st_align64_vector:1096; CHECK-P9:       # %bb.0: # %entry1097; CHECK-P9-NEXT:    lis r4, 37251098; CHECK-P9-NEXT:    ori r4, r4, 190251099; CHECK-P9-NEXT:    rldic r4, r4, 12, 241100; CHECK-P9-NEXT:    stxvx v2, r3, r41101; CHECK-P9-NEXT:    blr1102;1103; CHECK-P8-LE-LABEL: st_align64_vector:1104; CHECK-P8-LE:       # %bb.0: # %entry1105; CHECK-P8-LE-NEXT:    lis r4, 37251106; CHECK-P8-LE-NEXT:    xxswapd vs0, v21107; CHECK-P8-LE-NEXT:    ori r4, r4, 190251108; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 241109; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41110; CHECK-P8-LE-NEXT:    blr1111;1112; CHECK-P8-BE-LABEL: st_align64_vector:1113; CHECK-P8-BE:       # %bb.0: # %entry1114; CHECK-P8-BE-NEXT:    lis r4, 37251115; CHECK-P8-BE-NEXT:    ori r4, r4, 190251116; CHECK-P8-BE-NEXT:    rldic r4, r4, 12, 241117; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41118; CHECK-P8-BE-NEXT:    blr1119entry:1120  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001121  store <16 x i8> %str, ptr %add.ptr, align 161122  ret void1123}1124 1125; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1126define dso_local void @st_reg_vector(ptr nocapture %ptr, i64 %off, <16 x i8> %str) {1127; CHECK-LABEL: st_reg_vector:1128; CHECK:       # %bb.0: # %entry1129; CHECK-NEXT:    stxvx v2, r3, r41130; CHECK-NEXT:    blr1131;1132; CHECK-P8-LE-LABEL: st_reg_vector:1133; CHECK-P8-LE:       # %bb.0: # %entry1134; CHECK-P8-LE-NEXT:    xxswapd vs0, v21135; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41136; CHECK-P8-LE-NEXT:    blr1137;1138; CHECK-P8-BE-LABEL: st_reg_vector:1139; CHECK-P8-BE:       # %bb.0: # %entry1140; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41141; CHECK-P8-BE-NEXT:    blr1142entry:1143  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1144  store <16 x i8> %str, ptr %add.ptr, align 161145  ret void1146}1147 1148; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1149define dso_local void @st_or1_vector(i64 %ptr, i8 zeroext %off, <16 x i8> %str) {1150; CHECK-LABEL: st_or1_vector:1151; CHECK:       # %bb.0: # %entry1152; CHECK-NEXT:    or r3, r4, r31153; CHECK-NEXT:    stxv v2, 0(r3)1154; CHECK-NEXT:    blr1155;1156; CHECK-P8-LE-LABEL: st_or1_vector:1157; CHECK-P8-LE:       # %bb.0: # %entry1158; CHECK-P8-LE-NEXT:    xxswapd vs0, v21159; CHECK-P8-LE-NEXT:    or r3, r4, r31160; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31161; CHECK-P8-LE-NEXT:    blr1162;1163; CHECK-P8-BE-LABEL: st_or1_vector:1164; CHECK-P8-BE:       # %bb.0: # %entry1165; CHECK-P8-BE-NEXT:    or r3, r4, r31166; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31167; CHECK-P8-BE-NEXT:    blr1168entry:1169  %conv = zext i8 %off to i641170  %or = or i64 %conv, %ptr1171  %0 = inttoptr i64 %or to ptr1172  store <16 x i8> %str, ptr %0, align 161173  ret void1174}1175 1176; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1177define dso_local void @st_or2_vector(i64 %ptr, i8 zeroext %off, <16 x i8> %str) {1178; CHECK-LABEL: st_or2_vector:1179; CHECK:       # %bb.0: # %entry1180; CHECK-NEXT:    rldicr r3, r3, 0, 511181; CHECK-NEXT:    stxvx v2, r3, r41182; CHECK-NEXT:    blr1183;1184; CHECK-P8-LE-LABEL: st_or2_vector:1185; CHECK-P8-LE:       # %bb.0: # %entry1186; CHECK-P8-LE-NEXT:    xxswapd vs0, v21187; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 511188; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41189; CHECK-P8-LE-NEXT:    blr1190;1191; CHECK-P8-BE-LABEL: st_or2_vector:1192; CHECK-P8-BE:       # %bb.0: # %entry1193; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 511194; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41195; CHECK-P8-BE-NEXT:    blr1196entry:1197  %and = and i64 %ptr, -40961198  %conv = zext i8 %off to i641199  %or = or i64 %and, %conv1200  %0 = inttoptr i64 %or to ptr1201  store <16 x i8> %str, ptr %0, align 161202  ret void1203}1204 1205; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1206define dso_local void @st_not_disjoint16_vector(i64 %ptr, <16 x i8> %str) {1207; CHECK-LABEL: st_not_disjoint16_vector:1208; CHECK:       # %bb.0: # %entry1209; CHECK-NEXT:    ori r3, r3, 61210; CHECK-NEXT:    stxv v2, 0(r3)1211; CHECK-NEXT:    blr1212;1213; CHECK-P8-LE-LABEL: st_not_disjoint16_vector:1214; CHECK-P8-LE:       # %bb.0: # %entry1215; CHECK-P8-LE-NEXT:    xxswapd vs0, v21216; CHECK-P8-LE-NEXT:    ori r3, r3, 61217; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31218; CHECK-P8-LE-NEXT:    blr1219;1220; CHECK-P8-BE-LABEL: st_not_disjoint16_vector:1221; CHECK-P8-BE:       # %bb.0: # %entry1222; CHECK-P8-BE-NEXT:    ori r3, r3, 61223; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31224; CHECK-P8-BE-NEXT:    blr1225entry:1226  %or = or i64 %ptr, 61227  %0 = inttoptr i64 %or to ptr1228  store <16 x i8> %str, ptr %0, align 161229  ret void1230}1231 1232; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1233define dso_local void @st_disjoint_unalign16_vector(i64 %ptr, <16 x i8> %str) {1234; CHECK-P10-LABEL: st_disjoint_unalign16_vector:1235; CHECK-P10:       # %bb.0: # %entry1236; CHECK-P10-NEXT:    rldicr r3, r3, 0, 511237; CHECK-P10-NEXT:    pstxv v2, 6(r3), 01238; CHECK-P10-NEXT:    blr1239;1240; CHECK-P9-LABEL: st_disjoint_unalign16_vector:1241; CHECK-P9:       # %bb.0: # %entry1242; CHECK-P9-NEXT:    rldicr r3, r3, 0, 511243; CHECK-P9-NEXT:    li r4, 61244; CHECK-P9-NEXT:    stxvx v2, r3, r41245; CHECK-P9-NEXT:    blr1246;1247; CHECK-P8-LE-LABEL: st_disjoint_unalign16_vector:1248; CHECK-P8-LE:       # %bb.0: # %entry1249; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 511250; CHECK-P8-LE-NEXT:    xxswapd vs0, v21251; CHECK-P8-LE-NEXT:    ori r3, r3, 61252; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31253; CHECK-P8-LE-NEXT:    blr1254;1255; CHECK-P8-BE-LABEL: st_disjoint_unalign16_vector:1256; CHECK-P8-BE:       # %bb.0: # %entry1257; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 511258; CHECK-P8-BE-NEXT:    ori r3, r3, 61259; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31260; CHECK-P8-BE-NEXT:    blr1261entry:1262  %and = and i64 %ptr, -40961263  %or = or i64 %and, 61264  %0 = inttoptr i64 %or to ptr1265  store <16 x i8> %str, ptr %0, align 161266  ret void1267}1268 1269; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1270define dso_local void @st_disjoint_align16_vector(i64 %ptr, <16 x i8> %str) {1271; CHECK-P10-LABEL: st_disjoint_align16_vector:1272; CHECK-P10:       # %bb.0: # %entry1273; CHECK-P10-NEXT:    rldicr r3, r3, 0, 511274; CHECK-P10-NEXT:    pstxv v2, 24(r3), 01275; CHECK-P10-NEXT:    blr1276;1277; CHECK-P9-LABEL: st_disjoint_align16_vector:1278; CHECK-P9:       # %bb.0: # %entry1279; CHECK-P9-NEXT:    rldicr r3, r3, 0, 511280; CHECK-P9-NEXT:    li r4, 241281; CHECK-P9-NEXT:    stxvx v2, r3, r41282; CHECK-P9-NEXT:    blr1283;1284; CHECK-P8-LE-LABEL: st_disjoint_align16_vector:1285; CHECK-P8-LE:       # %bb.0: # %entry1286; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 511287; CHECK-P8-LE-NEXT:    xxswapd vs0, v21288; CHECK-P8-LE-NEXT:    ori r3, r3, 241289; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31290; CHECK-P8-LE-NEXT:    blr1291;1292; CHECK-P8-BE-LABEL: st_disjoint_align16_vector:1293; CHECK-P8-BE:       # %bb.0: # %entry1294; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 511295; CHECK-P8-BE-NEXT:    ori r3, r3, 241296; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31297; CHECK-P8-BE-NEXT:    blr1298entry:1299  %and = and i64 %ptr, -40961300  %or = or i64 %and, 241301  %0 = inttoptr i64 %or to ptr1302  store <16 x i8> %str, ptr %0, align 161303  ret void1304}1305 1306; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1307define dso_local void @st_not_disjoint32_vector(i64 %ptr, <16 x i8> %str) {1308; CHECK-LABEL: st_not_disjoint32_vector:1309; CHECK:       # %bb.0: # %entry1310; CHECK-NEXT:    ori r3, r3, 344631311; CHECK-NEXT:    oris r3, r3, 11312; CHECK-NEXT:    stxv v2, 0(r3)1313; CHECK-NEXT:    blr1314;1315; CHECK-P8-LE-LABEL: st_not_disjoint32_vector:1316; CHECK-P8-LE:       # %bb.0: # %entry1317; CHECK-P8-LE-NEXT:    ori r3, r3, 344631318; CHECK-P8-LE-NEXT:    xxswapd vs0, v21319; CHECK-P8-LE-NEXT:    oris r3, r3, 11320; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31321; CHECK-P8-LE-NEXT:    blr1322;1323; CHECK-P8-BE-LABEL: st_not_disjoint32_vector:1324; CHECK-P8-BE:       # %bb.0: # %entry1325; CHECK-P8-BE-NEXT:    ori r3, r3, 344631326; CHECK-P8-BE-NEXT:    oris r3, r3, 11327; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31328; CHECK-P8-BE-NEXT:    blr1329entry:1330  %or = or i64 %ptr, 999991331  %0 = inttoptr i64 %or to ptr1332  store <16 x i8> %str, ptr %0, align 161333  ret void1334}1335 1336; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1337define dso_local void @st_disjoint_unalign32_vector(i64 %ptr, <16 x i8> %str) {1338; CHECK-P10-LABEL: st_disjoint_unalign32_vector:1339; CHECK-P10:       # %bb.0: # %entry1340; CHECK-P10-NEXT:    rldicr r3, r3, 0, 431341; CHECK-P10-NEXT:    pstxv v2, 99999(r3), 01342; CHECK-P10-NEXT:    blr1343;1344; CHECK-P9-LABEL: st_disjoint_unalign32_vector:1345; CHECK-P9:       # %bb.0: # %entry1346; CHECK-P9-NEXT:    lis r4, 11347; CHECK-P9-NEXT:    rldicr r3, r3, 0, 431348; CHECK-P9-NEXT:    ori r4, r4, 344631349; CHECK-P9-NEXT:    stxvx v2, r3, r41350; CHECK-P9-NEXT:    blr1351;1352; CHECK-P8-LE-LABEL: st_disjoint_unalign32_vector:1353; CHECK-P8-LE:       # %bb.0: # %entry1354; CHECK-P8-LE-NEXT:    lis r4, 11355; CHECK-P8-LE-NEXT:    xxswapd vs0, v21356; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 431357; CHECK-P8-LE-NEXT:    ori r4, r4, 344631358; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41359; CHECK-P8-LE-NEXT:    blr1360;1361; CHECK-P8-BE-LABEL: st_disjoint_unalign32_vector:1362; CHECK-P8-BE:       # %bb.0: # %entry1363; CHECK-P8-BE-NEXT:    lis r4, 11364; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 431365; CHECK-P8-BE-NEXT:    ori r4, r4, 344631366; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41367; CHECK-P8-BE-NEXT:    blr1368entry:1369  %and = and i64 %ptr, -10485761370  %or = or i64 %and, 999991371  %0 = inttoptr i64 %or to ptr1372  store <16 x i8> %str, ptr %0, align 161373  ret void1374}1375 1376; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1377define dso_local void @st_disjoint_align32_vector(i64 %ptr, <16 x i8> %str) {1378; CHECK-P10-LABEL: st_disjoint_align32_vector:1379; CHECK-P10:       # %bb.0: # %entry1380; CHECK-P10-NEXT:    lis r4, -152641381; CHECK-P10-NEXT:    and r3, r3, r41382; CHECK-P10-NEXT:    pstxv v2, 999990000(r3), 01383; CHECK-P10-NEXT:    blr1384;1385; CHECK-P9-LABEL: st_disjoint_align32_vector:1386; CHECK-P9:       # %bb.0: # %entry1387; CHECK-P9-NEXT:    lis r4, -152641388; CHECK-P9-NEXT:    and r3, r3, r41389; CHECK-P9-NEXT:    lis r4, 152581390; CHECK-P9-NEXT:    ori r4, r4, 417121391; CHECK-P9-NEXT:    stxvx v2, r3, r41392; CHECK-P9-NEXT:    blr1393;1394; CHECK-P8-LE-LABEL: st_disjoint_align32_vector:1395; CHECK-P8-LE:       # %bb.0: # %entry1396; CHECK-P8-LE-NEXT:    lis r4, -152641397; CHECK-P8-LE-NEXT:    xxswapd vs0, v21398; CHECK-P8-LE-NEXT:    and r3, r3, r41399; CHECK-P8-LE-NEXT:    lis r4, 152581400; CHECK-P8-LE-NEXT:    ori r4, r4, 417121401; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41402; CHECK-P8-LE-NEXT:    blr1403;1404; CHECK-P8-BE-LABEL: st_disjoint_align32_vector:1405; CHECK-P8-BE:       # %bb.0: # %entry1406; CHECK-P8-BE-NEXT:    lis r4, -152641407; CHECK-P8-BE-NEXT:    and r3, r3, r41408; CHECK-P8-BE-NEXT:    lis r4, 152581409; CHECK-P8-BE-NEXT:    ori r4, r4, 417121410; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41411; CHECK-P8-BE-NEXT:    blr1412entry:1413  %and = and i64 %ptr, -10003415041414  %or = or i64 %and, 9999900001415  %0 = inttoptr i64 %or to ptr1416  store <16 x i8> %str, ptr %0, align 161417  ret void1418}1419 1420; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1421define dso_local void @st_not_disjoint64_vector(i64 %ptr, <16 x i8> %str) {1422; CHECK-P10-LABEL: st_not_disjoint64_vector:1423; CHECK-P10:       # %bb.0: # %entry1424; CHECK-P10-NEXT:    pli r4, 2321425; CHECK-P10-NEXT:    pli r5, 35675873291426; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01427; CHECK-P10-NEXT:    or r3, r3, r51428; CHECK-P10-NEXT:    stxv v2, 0(r3)1429; CHECK-P10-NEXT:    blr1430;1431; CHECK-P9-LABEL: st_not_disjoint64_vector:1432; CHECK-P9:       # %bb.0: # %entry1433; CHECK-P9-NEXT:    li r4, 291434; CHECK-P9-NEXT:    rldic r4, r4, 35, 241435; CHECK-P9-NEXT:    oris r4, r4, 544371436; CHECK-P9-NEXT:    ori r4, r4, 40971437; CHECK-P9-NEXT:    or r3, r3, r41438; CHECK-P9-NEXT:    stxv v2, 0(r3)1439; CHECK-P9-NEXT:    blr1440;1441; CHECK-P8-LE-LABEL: st_not_disjoint64_vector:1442; CHECK-P8-LE:       # %bb.0: # %entry1443; CHECK-P8-LE-NEXT:    li r4, 291444; CHECK-P8-LE-NEXT:    xxswapd vs0, v21445; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 241446; CHECK-P8-LE-NEXT:    oris r4, r4, 544371447; CHECK-P8-LE-NEXT:    ori r4, r4, 40971448; CHECK-P8-LE-NEXT:    or r3, r3, r41449; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31450; CHECK-P8-LE-NEXT:    blr1451;1452; CHECK-P8-BE-LABEL: st_not_disjoint64_vector:1453; CHECK-P8-BE:       # %bb.0: # %entry1454; CHECK-P8-BE-NEXT:    li r4, 291455; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241456; CHECK-P8-BE-NEXT:    oris r4, r4, 544371457; CHECK-P8-BE-NEXT:    ori r4, r4, 40971458; CHECK-P8-BE-NEXT:    or r3, r3, r41459; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31460; CHECK-P8-BE-NEXT:    blr1461entry:1462  %or = or i64 %ptr, 10000000000011463  %0 = inttoptr i64 %or to ptr1464  store <16 x i8> %str, ptr %0, align 161465  ret void1466}1467 1468; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1469define dso_local void @st_disjoint_unalign64_vector(i64 %ptr, <16 x i8> %str) {1470; CHECK-P10-LABEL: st_disjoint_unalign64_vector:1471; CHECK-P10:       # %bb.0: # %entry1472; CHECK-P10-NEXT:    pli r4, 2321473; CHECK-P10-NEXT:    pli r5, 35675873291474; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231475; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01476; CHECK-P10-NEXT:    stxvx v2, r3, r51477; CHECK-P10-NEXT:    blr1478;1479; CHECK-P9-LABEL: st_disjoint_unalign64_vector:1480; CHECK-P9:       # %bb.0: # %entry1481; CHECK-P9-NEXT:    li r4, 291482; CHECK-P9-NEXT:    rldicr r3, r3, 0, 231483; CHECK-P9-NEXT:    rldic r4, r4, 35, 241484; CHECK-P9-NEXT:    oris r4, r4, 544371485; CHECK-P9-NEXT:    ori r4, r4, 40971486; CHECK-P9-NEXT:    stxvx v2, r3, r41487; CHECK-P9-NEXT:    blr1488;1489; CHECK-P8-LE-LABEL: st_disjoint_unalign64_vector:1490; CHECK-P8-LE:       # %bb.0: # %entry1491; CHECK-P8-LE-NEXT:    li r4, 291492; CHECK-P8-LE-NEXT:    xxswapd vs0, v21493; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 231494; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 241495; CHECK-P8-LE-NEXT:    oris r4, r4, 544371496; CHECK-P8-LE-NEXT:    ori r4, r4, 40971497; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41498; CHECK-P8-LE-NEXT:    blr1499;1500; CHECK-P8-BE-LABEL: st_disjoint_unalign64_vector:1501; CHECK-P8-BE:       # %bb.0: # %entry1502; CHECK-P8-BE-NEXT:    li r4, 291503; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 231504; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241505; CHECK-P8-BE-NEXT:    oris r4, r4, 544371506; CHECK-P8-BE-NEXT:    ori r4, r4, 40971507; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41508; CHECK-P8-BE-NEXT:    blr1509entry:1510  %and = and i64 %ptr, -10995116277761511  %or = or i64 %and, 10000000000011512  %0 = inttoptr i64 %or to ptr1513  store <16 x i8> %str, ptr %0, align 161514  ret void1515}1516 1517; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1518define dso_local void @st_disjoint_align64_vector(i64 %ptr, <16 x i8> %str) {1519; CHECK-P10-LABEL: st_disjoint_align64_vector:1520; CHECK-P10:       # %bb.0: # %entry1521; CHECK-P10-NEXT:    pli r4, 2441406251522; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231523; CHECK-P10-NEXT:    rldic r4, r4, 12, 241524; CHECK-P10-NEXT:    stxvx v2, r3, r41525; CHECK-P10-NEXT:    blr1526;1527; CHECK-P9-LABEL: st_disjoint_align64_vector:1528; CHECK-P9:       # %bb.0: # %entry1529; CHECK-P9-NEXT:    lis r4, 37251530; CHECK-P9-NEXT:    rldicr r3, r3, 0, 231531; CHECK-P9-NEXT:    ori r4, r4, 190251532; CHECK-P9-NEXT:    rldic r4, r4, 12, 241533; CHECK-P9-NEXT:    stxvx v2, r3, r41534; CHECK-P9-NEXT:    blr1535;1536; CHECK-P8-LE-LABEL: st_disjoint_align64_vector:1537; CHECK-P8-LE:       # %bb.0: # %entry1538; CHECK-P8-LE-NEXT:    lis r4, 37251539; CHECK-P8-LE-NEXT:    xxswapd vs0, v21540; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 231541; CHECK-P8-LE-NEXT:    ori r4, r4, 190251542; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 241543; CHECK-P8-LE-NEXT:    stxvd2x vs0, r3, r41544; CHECK-P8-LE-NEXT:    blr1545;1546; CHECK-P8-BE-LABEL: st_disjoint_align64_vector:1547; CHECK-P8-BE:       # %bb.0: # %entry1548; CHECK-P8-BE-NEXT:    lis r4, 37251549; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 231550; CHECK-P8-BE-NEXT:    ori r4, r4, 190251551; CHECK-P8-BE-NEXT:    rldic r4, r4, 12, 241552; CHECK-P8-BE-NEXT:    stxvw4x v2, r3, r41553; CHECK-P8-BE-NEXT:    blr1554entry:1555  %and = and i64 %ptr, -10995116277761556  %or = or i64 %and, 10000000000001557  %0 = inttoptr i64 %or to ptr1558  store <16 x i8> %str, ptr %0, align 40961559  ret void1560}1561 1562; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1563define dso_local void @st_cst_unalign16_vector(<16 x i8> %str) {1564; CHECK-LABEL: st_cst_unalign16_vector:1565; CHECK:       # %bb.0: # %entry1566; CHECK-NEXT:    li r3, 2551567; CHECK-NEXT:    stxv v2, 0(r3)1568; CHECK-NEXT:    blr1569;1570; CHECK-P8-LE-LABEL: st_cst_unalign16_vector:1571; CHECK-P8-LE:       # %bb.0: # %entry1572; CHECK-P8-LE-NEXT:    xxswapd vs0, v21573; CHECK-P8-LE-NEXT:    li r3, 2551574; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31575; CHECK-P8-LE-NEXT:    blr1576;1577; CHECK-P8-BE-LABEL: st_cst_unalign16_vector:1578; CHECK-P8-BE:       # %bb.0: # %entry1579; CHECK-P8-BE-NEXT:    li r3, 2551580; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31581; CHECK-P8-BE-NEXT:    blr1582entry:1583  store <16 x i8> %str, ptr inttoptr (i64 255 to ptr), align 161584  ret void1585}1586 1587; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1588define dso_local void @st_cst_align16_vector(<16 x i8> %str) {1589; CHECK-LABEL: st_cst_align16_vector:1590; CHECK:       # %bb.0: # %entry1591; CHECK-NEXT:    stxv v2, 4080(0)1592; CHECK-NEXT:    blr1593;1594; CHECK-P8-LE-LABEL: st_cst_align16_vector:1595; CHECK-P8-LE:       # %bb.0: # %entry1596; CHECK-P8-LE-NEXT:    xxswapd vs0, v21597; CHECK-P8-LE-NEXT:    li r3, 40801598; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31599; CHECK-P8-LE-NEXT:    blr1600;1601; CHECK-P8-BE-LABEL: st_cst_align16_vector:1602; CHECK-P8-BE:       # %bb.0: # %entry1603; CHECK-P8-BE-NEXT:    li r3, 40801604; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31605; CHECK-P8-BE-NEXT:    blr1606entry:1607  store <16 x i8> %str, ptr inttoptr (i64 4080 to ptr), align 161608  ret void1609}1610 1611; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1612define dso_local void @st_cst_unalign32_vector(<16 x i8> %str) {1613; CHECK-P10-LABEL: st_cst_unalign32_vector:1614; CHECK-P10:       # %bb.0: # %entry1615; CHECK-P10-NEXT:    pli r3, 999991616; CHECK-P10-NEXT:    stxv v2, 0(r3)1617; CHECK-P10-NEXT:    blr1618;1619; CHECK-P9-LABEL: st_cst_unalign32_vector:1620; CHECK-P9:       # %bb.0: # %entry1621; CHECK-P9-NEXT:    lis r3, 11622; CHECK-P9-NEXT:    ori r3, r3, 344631623; CHECK-P9-NEXT:    stxv v2, 0(r3)1624; CHECK-P9-NEXT:    blr1625;1626; CHECK-P8-LE-LABEL: st_cst_unalign32_vector:1627; CHECK-P8-LE:       # %bb.0: # %entry1628; CHECK-P8-LE-NEXT:    lis r3, 11629; CHECK-P8-LE-NEXT:    xxswapd vs0, v21630; CHECK-P8-LE-NEXT:    ori r3, r3, 344631631; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31632; CHECK-P8-LE-NEXT:    blr1633;1634; CHECK-P8-BE-LABEL: st_cst_unalign32_vector:1635; CHECK-P8-BE:       # %bb.0: # %entry1636; CHECK-P8-BE-NEXT:    lis r3, 11637; CHECK-P8-BE-NEXT:    ori r3, r3, 344631638; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31639; CHECK-P8-BE-NEXT:    blr1640entry:1641  store <16 x i8> %str, ptr inttoptr (i64 99999 to ptr), align 161642  ret void1643}1644 1645; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1646define dso_local void @st_cst_align32_vector(<16 x i8> %str) {1647; CHECK-P10-LABEL: st_cst_align32_vector:1648; CHECK-P10:       # %bb.0: # %entry1649; CHECK-P10-NEXT:    pli r3, 99999001650; CHECK-P10-NEXT:    stxv v2, 0(r3)1651; CHECK-P10-NEXT:    blr1652;1653; CHECK-P9-LABEL: st_cst_align32_vector:1654; CHECK-P9:       # %bb.0: # %entry1655; CHECK-P9-NEXT:    lis r3, 1521656; CHECK-P9-NEXT:    ori r3, r3, 384281657; CHECK-P9-NEXT:    stxv v2, 0(r3)1658; CHECK-P9-NEXT:    blr1659;1660; CHECK-P8-LE-LABEL: st_cst_align32_vector:1661; CHECK-P8-LE:       # %bb.0: # %entry1662; CHECK-P8-LE-NEXT:    lis r3, 1521663; CHECK-P8-LE-NEXT:    xxswapd vs0, v21664; CHECK-P8-LE-NEXT:    ori r3, r3, 384281665; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31666; CHECK-P8-LE-NEXT:    blr1667;1668; CHECK-P8-BE-LABEL: st_cst_align32_vector:1669; CHECK-P8-BE:       # %bb.0: # %entry1670; CHECK-P8-BE-NEXT:    lis r3, 1521671; CHECK-P8-BE-NEXT:    ori r3, r3, 384281672; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31673; CHECK-P8-BE-NEXT:    blr1674entry:1675  store <16 x i8> %str, ptr inttoptr (i64 9999900 to ptr), align 161676  ret void1677}1678 1679; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1680define dso_local void @st_cst_unalign64_vector(<16 x i8> %str) {1681; CHECK-P10-LABEL: st_cst_unalign64_vector:1682; CHECK-P10:       # %bb.0: # %entry1683; CHECK-P10-NEXT:    pli r3, 2321684; CHECK-P10-NEXT:    pli r4, 35675873291685; CHECK-P10-NEXT:    rldimi r4, r3, 32, 01686; CHECK-P10-NEXT:    stxv v2, 0(r4)1687; CHECK-P10-NEXT:    blr1688;1689; CHECK-P9-LABEL: st_cst_unalign64_vector:1690; CHECK-P9:       # %bb.0: # %entry1691; CHECK-P9-NEXT:    li r3, 291692; CHECK-P9-NEXT:    rldic r3, r3, 35, 241693; CHECK-P9-NEXT:    oris r3, r3, 544371694; CHECK-P9-NEXT:    ori r3, r3, 40971695; CHECK-P9-NEXT:    stxv v2, 0(r3)1696; CHECK-P9-NEXT:    blr1697;1698; CHECK-P8-LE-LABEL: st_cst_unalign64_vector:1699; CHECK-P8-LE:       # %bb.0: # %entry1700; CHECK-P8-LE-NEXT:    li r3, 291701; CHECK-P8-LE-NEXT:    xxswapd vs0, v21702; CHECK-P8-LE-NEXT:    rldic r3, r3, 35, 241703; CHECK-P8-LE-NEXT:    oris r3, r3, 544371704; CHECK-P8-LE-NEXT:    ori r3, r3, 40971705; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31706; CHECK-P8-LE-NEXT:    blr1707;1708; CHECK-P8-BE-LABEL: st_cst_unalign64_vector:1709; CHECK-P8-BE:       # %bb.0: # %entry1710; CHECK-P8-BE-NEXT:    li r3, 291711; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 241712; CHECK-P8-BE-NEXT:    oris r3, r3, 544371713; CHECK-P8-BE-NEXT:    ori r3, r3, 40971714; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31715; CHECK-P8-BE-NEXT:    blr1716entry:1717  store <16 x i8> %str, ptr inttoptr (i64 1000000000001 to ptr), align 161718  ret void1719}1720 1721; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly1722define dso_local void @st_cst_align64_vector(<16 x i8> %str) {1723; CHECK-P10-LABEL: st_cst_align64_vector:1724; CHECK-P10:       # %bb.0: # %entry1725; CHECK-P10-NEXT:    pli r3, 2441406251726; CHECK-P10-NEXT:    rldic r3, r3, 12, 241727; CHECK-P10-NEXT:    stxv v2, 0(r3)1728; CHECK-P10-NEXT:    blr1729;1730; CHECK-P9-LABEL: st_cst_align64_vector:1731; CHECK-P9:       # %bb.0: # %entry1732; CHECK-P9-NEXT:    lis r3, 37251733; CHECK-P9-NEXT:    ori r3, r3, 190251734; CHECK-P9-NEXT:    rldic r3, r3, 12, 241735; CHECK-P9-NEXT:    stxv v2, 0(r3)1736; CHECK-P9-NEXT:    blr1737;1738; CHECK-P8-LE-LABEL: st_cst_align64_vector:1739; CHECK-P8-LE:       # %bb.0: # %entry1740; CHECK-P8-LE-NEXT:    lis r3, 37251741; CHECK-P8-LE-NEXT:    xxswapd vs0, v21742; CHECK-P8-LE-NEXT:    ori r3, r3, 190251743; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 241744; CHECK-P8-LE-NEXT:    stxvd2x vs0, 0, r31745; CHECK-P8-LE-NEXT:    blr1746;1747; CHECK-P8-BE-LABEL: st_cst_align64_vector:1748; CHECK-P8-BE:       # %bb.0: # %entry1749; CHECK-P8-BE-NEXT:    lis r3, 37251750; CHECK-P8-BE-NEXT:    ori r3, r3, 190251751; CHECK-P8-BE-NEXT:    rldic r3, r3, 12, 241752; CHECK-P8-BE-NEXT:    stxvw4x v2, 0, r31753; CHECK-P8-BE-NEXT:    blr1754entry:1755  store <16 x i8> %str, ptr inttoptr (i64 1000000000000 to ptr), align 40961756  ret void1757}1758