brintos

brintos / llvm-project-archived public Read only

0
0
Text · 165.0 KiB · 0e53ea8 Raw
4992 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-PREP10,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-PREP10,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,CHECK-PREP10,CHECK-P817; 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,CHECK-PREP10,CHECK-P820 21; Function Attrs: nofree norecurse nounwind uwtable willreturn22define dso_local i64 @ld_0_int64_t_uint8_t(i64 %ptr) {23; CHECK-LABEL: ld_0_int64_t_uint8_t:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    lbz r3, 0(r3)26; CHECK-NEXT:    blr27entry:28  %0 = inttoptr i64 %ptr to ptr29  %1 = load atomic i8, ptr %0 monotonic, align 130  %conv = zext i8 %1 to i6431  ret i64 %conv32}33 34; Function Attrs: nofree norecurse nounwind uwtable willreturn35define dso_local i64 @ld_align16_int64_t_uint8_t(ptr nocapture readonly %ptr) {36; CHECK-LABEL: ld_align16_int64_t_uint8_t:37; CHECK:       # %bb.0: # %entry38; CHECK-NEXT:    lbz r3, 8(r3)39; CHECK-NEXT:    blr40entry:41  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 842  %0 = load atomic i8, ptr %add.ptr monotonic, align 143  %conv = zext i8 %0 to i6444  ret i64 %conv45}46 47; Function Attrs: nofree norecurse nounwind uwtable willreturn48define dso_local i64 @ld_align32_int64_t_uint8_t(ptr nocapture readonly %ptr) {49; CHECK-P10-LABEL: ld_align32_int64_t_uint8_t:50; CHECK-P10:       # %bb.0: # %entry51; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 052; CHECK-P10-NEXT:    clrldi r3, r3, 3253; CHECK-P10-NEXT:    blr54;55; CHECK-PREP10-LABEL: ld_align32_int64_t_uint8_t:56; CHECK-PREP10:       # %bb.0: # %entry57; CHECK-PREP10-NEXT:    lis r4, 152558; CHECK-PREP10-NEXT:    ori r4, r4, 5660059; CHECK-PREP10-NEXT:    lbzx r3, r3, r460; CHECK-PREP10-NEXT:    blr61entry:62  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 9999900063  %0 = load atomic i8, ptr %add.ptr monotonic, align 164  %conv = zext i8 %0 to i6465  ret i64 %conv66}67 68; Function Attrs: nofree norecurse nounwind uwtable willreturn69define dso_local i64 @ld_align64_int64_t_uint8_t(ptr nocapture readonly %ptr) {70; CHECK-P10-LABEL: ld_align64_int64_t_uint8_t:71; CHECK-P10:       # %bb.0: # %entry72; CHECK-P10-NEXT:    pli r4, 24414062573; CHECK-P10-NEXT:    rldic r4, r4, 12, 2474; CHECK-P10-NEXT:    lbzx r3, r3, r475; CHECK-P10-NEXT:    blr76;77; CHECK-PREP10-LABEL: ld_align64_int64_t_uint8_t:78; CHECK-PREP10:       # %bb.0: # %entry79; CHECK-PREP10-NEXT:    lis r4, 372580; CHECK-PREP10-NEXT:    ori r4, r4, 1902581; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 2482; CHECK-PREP10-NEXT:    lbzx r3, r3, r483; CHECK-PREP10-NEXT:    blr84entry:85  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 100000000000086  %0 = load atomic i8, ptr %add.ptr monotonic, align 187  %conv = zext i8 %0 to i6488  ret i64 %conv89}90 91; Function Attrs: nofree norecurse nounwind uwtable willreturn92define dso_local i64 @ld_reg_int64_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {93; CHECK-LABEL: ld_reg_int64_t_uint8_t:94; CHECK:       # %bb.0: # %entry95; CHECK-NEXT:    lbzx r3, r3, r496; CHECK-NEXT:    blr97entry:98  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off99  %0 = load atomic i8, ptr %add.ptr monotonic, align 1100  %conv = zext i8 %0 to i64101  ret i64 %conv102}103 104; Function Attrs: nofree norecurse nounwind uwtable willreturn105define dso_local i64 @ld_or_int64_t_uint8_t(i64 %ptr, i8 zeroext %off) {106; CHECK-LABEL: ld_or_int64_t_uint8_t:107; CHECK:       # %bb.0: # %entry108; CHECK-NEXT:    or r3, r4, r3109; CHECK-NEXT:    lbz r3, 0(r3)110; CHECK-NEXT:    blr111entry:112  %conv = zext i8 %off to i64113  %or = or i64 %conv, %ptr114  %0 = inttoptr i64 %or to ptr115  %1 = load atomic i8, ptr %0 monotonic, align 1116  %conv1 = zext i8 %1 to i64117  ret i64 %conv1118}119 120; Function Attrs: nofree norecurse nounwind uwtable willreturn121define dso_local i64 @ld_not_disjoint16_int64_t_uint8_t(i64 %ptr) {122; CHECK-LABEL: ld_not_disjoint16_int64_t_uint8_t:123; CHECK:       # %bb.0: # %entry124; CHECK-NEXT:    ori r3, r3, 6125; CHECK-NEXT:    lbz r3, 0(r3)126; CHECK-NEXT:    blr127entry:128  %or = or i64 %ptr, 6129  %0 = inttoptr i64 %or to ptr130  %1 = load atomic i8, ptr %0 monotonic, align 1131  %conv = zext i8 %1 to i64132  ret i64 %conv133}134 135; Function Attrs: nofree norecurse nounwind uwtable willreturn136define dso_local i64 @ld_disjoint_align16_int64_t_uint8_t(i64 %ptr) {137; CHECK-LABEL: ld_disjoint_align16_int64_t_uint8_t:138; CHECK:       # %bb.0: # %entry139; CHECK-NEXT:    rldicr r3, r3, 0, 51140; CHECK-NEXT:    lbz r3, 24(r3)141; CHECK-NEXT:    blr142entry:143  %and = and i64 %ptr, -4096144  %or = or i64 %and, 24145  %0 = inttoptr i64 %or to ptr146  %1 = load atomic i8, ptr %0 monotonic, align 8147  %conv = zext i8 %1 to i64148  ret i64 %conv149}150 151; Function Attrs: nofree norecurse nounwind uwtable willreturn152define dso_local i64 @ld_not_disjoint32_int64_t_uint8_t(i64 %ptr) {153; CHECK-LABEL: ld_not_disjoint32_int64_t_uint8_t:154; CHECK:       # %bb.0: # %entry155; CHECK-NEXT:    ori r3, r3, 34463156; CHECK-NEXT:    oris r3, r3, 1157; CHECK-NEXT:    lbz r3, 0(r3)158; CHECK-NEXT:    blr159entry:160  %or = or i64 %ptr, 99999161  %0 = inttoptr i64 %or to ptr162  %1 = load atomic i8, ptr %0 monotonic, align 1163  %conv = zext i8 %1 to i64164  ret i64 %conv165}166 167; Function Attrs: nofree norecurse nounwind uwtable willreturn168define dso_local i64 @ld_disjoint_align32_int64_t_uint8_t(i64 %ptr) {169; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_uint8_t:170; CHECK-P10:       # %bb.0: # %entry171; CHECK-P10-NEXT:    lis r4, -15264172; CHECK-P10-NEXT:    and r3, r3, r4173; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 0174; CHECK-P10-NEXT:    clrldi r3, r3, 32175; CHECK-P10-NEXT:    blr176;177; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_uint8_t:178; CHECK-PREP10:       # %bb.0: # %entry179; CHECK-PREP10-NEXT:    lis r4, -15264180; CHECK-PREP10-NEXT:    and r3, r3, r4181; CHECK-PREP10-NEXT:    lis r4, 15258182; CHECK-PREP10-NEXT:    ori r4, r4, 41712183; CHECK-PREP10-NEXT:    lbzx r3, r3, r4184; CHECK-PREP10-NEXT:    blr185entry:186  %and = and i64 %ptr, -1000341504187  %or = or i64 %and, 999990000188  %0 = inttoptr i64 %or to ptr189  %1 = load atomic i8, ptr %0 monotonic, align 16190  %conv = zext i8 %1 to i64191  ret i64 %conv192}193 194; Function Attrs: nofree norecurse nounwind uwtable willreturn195define dso_local i64 @ld_not_disjoint64_int64_t_uint8_t(i64 %ptr) {196; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_uint8_t:197; CHECK-P10:       # %bb.0: # %entry198; CHECK-P10-NEXT:    pli r4, 232199; CHECK-P10-NEXT:    pli r5, 3567587329200; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0201; CHECK-P10-NEXT:    or r3, r3, r5202; CHECK-P10-NEXT:    lbz r3, 0(r3)203; CHECK-P10-NEXT:    blr204;205; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_uint8_t:206; CHECK-PREP10:       # %bb.0: # %entry207; CHECK-PREP10-NEXT:    li r4, 29208; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24209; CHECK-PREP10-NEXT:    oris r4, r4, 54437210; CHECK-PREP10-NEXT:    ori r4, r4, 4097211; CHECK-PREP10-NEXT:    or r3, r3, r4212; CHECK-PREP10-NEXT:    lbz r3, 0(r3)213; CHECK-PREP10-NEXT:    blr214entry:215  %or = or i64 %ptr, 1000000000001216  %0 = inttoptr i64 %or to ptr217  %1 = load atomic i8, ptr %0 monotonic, align 1218  %conv = zext i8 %1 to i64219  ret i64 %conv220}221 222; Function Attrs: nofree norecurse nounwind uwtable willreturn223define dso_local i64 @ld_disjoint_align64_int64_t_uint8_t(i64 %ptr) {224; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_uint8_t:225; CHECK-P10:       # %bb.0: # %entry226; CHECK-P10-NEXT:    pli r4, 244140625227; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23228; CHECK-P10-NEXT:    rldic r4, r4, 12, 24229; CHECK-P10-NEXT:    lbzx r3, r3, r4230; CHECK-P10-NEXT:    blr231;232; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_uint8_t:233; CHECK-PREP10:       # %bb.0: # %entry234; CHECK-PREP10-NEXT:    lis r4, 3725235; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23236; CHECK-PREP10-NEXT:    ori r4, r4, 19025237; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24238; CHECK-PREP10-NEXT:    lbzx r3, r3, r4239; CHECK-PREP10-NEXT:    blr240entry:241  %and = and i64 %ptr, -1099511627776242  %or = or i64 %and, 1000000000000243  %0 = inttoptr i64 %or to ptr244  %1 = load atomic i8, ptr %0 monotonic, align 4096245  %conv = zext i8 %1 to i64246  ret i64 %conv247}248 249; Function Attrs: nofree norecurse nounwind uwtable willreturn250define dso_local i64 @ld_cst_align16_int64_t_uint8_t() {251; CHECK-LABEL: ld_cst_align16_int64_t_uint8_t:252; CHECK:       # %bb.0: # %entry253; CHECK-NEXT:    lbz r3, 4080(0)254; CHECK-NEXT:    blr255entry:256  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 16257  %conv = zext i8 %0 to i64258  ret i64 %conv259}260 261; Function Attrs: nofree norecurse nounwind uwtable willreturn262define dso_local i64 @ld_cst_align32_int64_t_uint8_t() {263; CHECK-LABEL: ld_cst_align32_int64_t_uint8_t:264; CHECK:       # %bb.0: # %entry265; CHECK-NEXT:    lis r3, 153266; CHECK-NEXT:    lbz r3, -27108(r3)267; CHECK-NEXT:    blr268entry:269  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4270  %conv = zext i8 %0 to i64271  ret i64 %conv272}273 274; Function Attrs: nofree norecurse nounwind uwtable willreturn275define dso_local i64 @ld_cst_align64_int64_t_uint8_t() {276; CHECK-P10-LABEL: ld_cst_align64_int64_t_uint8_t:277; CHECK-P10:       # %bb.0: # %entry278; CHECK-P10-NEXT:    pli r3, 244140625279; CHECK-P10-NEXT:    rldic r3, r3, 12, 24280; CHECK-P10-NEXT:    lbz r3, 0(r3)281; CHECK-P10-NEXT:    blr282;283; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_uint8_t:284; CHECK-PREP10:       # %bb.0: # %entry285; CHECK-PREP10-NEXT:    lis r3, 3725286; CHECK-PREP10-NEXT:    ori r3, r3, 19025287; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24288; CHECK-PREP10-NEXT:    lbz r3, 0(r3)289; CHECK-PREP10-NEXT:    blr290entry:291  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096292  %conv = zext i8 %0 to i64293  ret i64 %conv294}295 296; Function Attrs: nofree norecurse nounwind uwtable willreturn297define dso_local i64 @ld_0_int64_t_int8_t(i64 %ptr) {298; CHECK-LABEL: ld_0_int64_t_int8_t:299; CHECK:       # %bb.0: # %entry300; CHECK-NEXT:    lbz r3, 0(r3)301; CHECK-NEXT:    extsb r3, r3302; CHECK-NEXT:    blr303entry:304  %0 = inttoptr i64 %ptr to ptr305  %1 = load atomic i8, ptr %0 monotonic, align 1306  %conv = sext i8 %1 to i64307  ret i64 %conv308}309 310; Function Attrs: nofree norecurse nounwind uwtable willreturn311define dso_local i64 @ld_align16_int64_t_int8_t(ptr nocapture readonly %ptr) {312; CHECK-LABEL: ld_align16_int64_t_int8_t:313; CHECK:       # %bb.0: # %entry314; CHECK-NEXT:    lbz r3, 8(r3)315; CHECK-NEXT:    extsb r3, r3316; CHECK-NEXT:    blr317entry:318  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8319  %0 = load atomic i8, ptr %add.ptr monotonic, align 1320  %conv = sext i8 %0 to i64321  ret i64 %conv322}323 324; Function Attrs: nofree norecurse nounwind uwtable willreturn325define dso_local i64 @ld_align32_int64_t_int8_t(ptr nocapture readonly %ptr) {326; CHECK-P10-LABEL: ld_align32_int64_t_int8_t:327; CHECK-P10:       # %bb.0: # %entry328; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 0329; CHECK-P10-NEXT:    extsb r3, r3330; CHECK-P10-NEXT:    blr331;332; CHECK-PREP10-LABEL: ld_align32_int64_t_int8_t:333; CHECK-PREP10:       # %bb.0: # %entry334; CHECK-PREP10-NEXT:    lis r4, 1525335; CHECK-PREP10-NEXT:    ori r4, r4, 56600336; CHECK-PREP10-NEXT:    lbzx r3, r3, r4337; CHECK-PREP10-NEXT:    extsb r3, r3338; CHECK-PREP10-NEXT:    blr339entry:340  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000341  %0 = load atomic i8, ptr %add.ptr monotonic, align 1342  %conv = sext i8 %0 to i64343  ret i64 %conv344}345 346; Function Attrs: nofree norecurse nounwind uwtable willreturn347define dso_local i64 @ld_align64_int64_t_int8_t(ptr nocapture readonly %ptr) {348; CHECK-P10-LABEL: ld_align64_int64_t_int8_t:349; CHECK-P10:       # %bb.0: # %entry350; CHECK-P10-NEXT:    pli r4, 244140625351; CHECK-P10-NEXT:    rldic r4, r4, 12, 24352; CHECK-P10-NEXT:    lbzx r3, r3, r4353; CHECK-P10-NEXT:    extsb r3, r3354; CHECK-P10-NEXT:    blr355;356; CHECK-PREP10-LABEL: ld_align64_int64_t_int8_t:357; CHECK-PREP10:       # %bb.0: # %entry358; CHECK-PREP10-NEXT:    lis r4, 3725359; CHECK-PREP10-NEXT:    ori r4, r4, 19025360; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24361; CHECK-PREP10-NEXT:    lbzx r3, r3, r4362; CHECK-PREP10-NEXT:    extsb r3, r3363; CHECK-PREP10-NEXT:    blr364entry:365  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000366  %0 = load atomic i8, ptr %add.ptr monotonic, align 1367  %conv = sext i8 %0 to i64368  ret i64 %conv369}370 371; Function Attrs: nofree norecurse nounwind uwtable willreturn372define dso_local i64 @ld_reg_int64_t_int8_t(ptr nocapture readonly %ptr, i64 %off) {373; CHECK-LABEL: ld_reg_int64_t_int8_t:374; CHECK:       # %bb.0: # %entry375; CHECK-NEXT:    lbzx r3, r3, r4376; CHECK-NEXT:    extsb r3, r3377; CHECK-NEXT:    blr378entry:379  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off380  %0 = load atomic i8, ptr %add.ptr monotonic, align 1381  %conv = sext i8 %0 to i64382  ret i64 %conv383}384 385; Function Attrs: nofree norecurse nounwind uwtable willreturn386define dso_local i64 @ld_or_int64_t_int8_t(i64 %ptr, i8 zeroext %off) {387; CHECK-LABEL: ld_or_int64_t_int8_t:388; CHECK:       # %bb.0: # %entry389; CHECK-NEXT:    or r3, r4, r3390; CHECK-NEXT:    lbz r3, 0(r3)391; CHECK-NEXT:    extsb r3, r3392; CHECK-NEXT:    blr393entry:394  %conv = zext i8 %off to i64395  %or = or i64 %conv, %ptr396  %0 = inttoptr i64 %or to ptr397  %1 = load atomic i8, ptr %0 monotonic, align 1398  %conv1 = sext i8 %1 to i64399  ret i64 %conv1400}401 402; Function Attrs: nofree norecurse nounwind uwtable willreturn403define dso_local i64 @ld_not_disjoint16_int64_t_int8_t(i64 %ptr) {404; CHECK-LABEL: ld_not_disjoint16_int64_t_int8_t:405; CHECK:       # %bb.0: # %entry406; CHECK-NEXT:    ori r3, r3, 6407; CHECK-NEXT:    lbz r3, 0(r3)408; CHECK-NEXT:    extsb r3, r3409; CHECK-NEXT:    blr410entry:411  %or = or i64 %ptr, 6412  %0 = inttoptr i64 %or to ptr413  %1 = load atomic i8, ptr %0 monotonic, align 1414  %conv = sext i8 %1 to i64415  ret i64 %conv416}417 418; Function Attrs: nofree norecurse nounwind uwtable willreturn419define dso_local i64 @ld_disjoint_align16_int64_t_int8_t(i64 %ptr) {420; CHECK-LABEL: ld_disjoint_align16_int64_t_int8_t:421; CHECK:       # %bb.0: # %entry422; CHECK-NEXT:    rldicr r3, r3, 0, 51423; CHECK-NEXT:    lbz r3, 24(r3)424; CHECK-NEXT:    extsb r3, r3425; CHECK-NEXT:    blr426entry:427  %and = and i64 %ptr, -4096428  %or = or i64 %and, 24429  %0 = inttoptr i64 %or to ptr430  %1 = load atomic i8, ptr %0 monotonic, align 8431  %conv = sext i8 %1 to i64432  ret i64 %conv433}434 435; Function Attrs: nofree norecurse nounwind uwtable willreturn436define dso_local i64 @ld_not_disjoint32_int64_t_int8_t(i64 %ptr) {437; CHECK-LABEL: ld_not_disjoint32_int64_t_int8_t:438; CHECK:       # %bb.0: # %entry439; CHECK-NEXT:    ori r3, r3, 34463440; CHECK-NEXT:    oris r3, r3, 1441; CHECK-NEXT:    lbz r3, 0(r3)442; CHECK-NEXT:    extsb r3, r3443; CHECK-NEXT:    blr444entry:445  %or = or i64 %ptr, 99999446  %0 = inttoptr i64 %or to ptr447  %1 = load atomic i8, ptr %0 monotonic, align 1448  %conv = sext i8 %1 to i64449  ret i64 %conv450}451 452; Function Attrs: nofree norecurse nounwind uwtable willreturn453define dso_local i64 @ld_disjoint_align32_int64_t_int8_t(i64 %ptr) {454; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_int8_t:455; CHECK-P10:       # %bb.0: # %entry456; CHECK-P10-NEXT:    lis r4, -15264457; CHECK-P10-NEXT:    and r3, r3, r4458; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 0459; CHECK-P10-NEXT:    extsb r3, r3460; CHECK-P10-NEXT:    blr461;462; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_int8_t:463; CHECK-PREP10:       # %bb.0: # %entry464; CHECK-PREP10-NEXT:    lis r4, -15264465; CHECK-PREP10-NEXT:    and r3, r3, r4466; CHECK-PREP10-NEXT:    lis r4, 15258467; CHECK-PREP10-NEXT:    ori r4, r4, 41712468; CHECK-PREP10-NEXT:    lbzx r3, r3, r4469; CHECK-PREP10-NEXT:    extsb r3, r3470; CHECK-PREP10-NEXT:    blr471entry:472  %and = and i64 %ptr, -1000341504473  %or = or i64 %and, 999990000474  %0 = inttoptr i64 %or to ptr475  %1 = load atomic i8, ptr %0 monotonic, align 16476  %conv = sext i8 %1 to i64477  ret i64 %conv478}479 480; Function Attrs: nofree norecurse nounwind uwtable willreturn481define dso_local i64 @ld_not_disjoint64_int64_t_int8_t(i64 %ptr) {482; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_int8_t:483; CHECK-P10:       # %bb.0: # %entry484; CHECK-P10-NEXT:    pli r4, 232485; CHECK-P10-NEXT:    pli r5, 3567587329486; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0487; CHECK-P10-NEXT:    or r3, r3, r5488; CHECK-P10-NEXT:    lbz r3, 0(r3)489; CHECK-P10-NEXT:    extsb r3, r3490; CHECK-P10-NEXT:    blr491;492; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_int8_t:493; CHECK-PREP10:       # %bb.0: # %entry494; CHECK-PREP10-NEXT:    li r4, 29495; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24496; CHECK-PREP10-NEXT:    oris r4, r4, 54437497; CHECK-PREP10-NEXT:    ori r4, r4, 4097498; CHECK-PREP10-NEXT:    or r3, r3, r4499; CHECK-PREP10-NEXT:    lbz r3, 0(r3)500; CHECK-PREP10-NEXT:    extsb r3, r3501; CHECK-PREP10-NEXT:    blr502entry:503  %or = or i64 %ptr, 1000000000001504  %0 = inttoptr i64 %or to ptr505  %1 = load atomic i8, ptr %0 monotonic, align 1506  %conv = sext i8 %1 to i64507  ret i64 %conv508}509 510; Function Attrs: nofree norecurse nounwind uwtable willreturn511define dso_local i64 @ld_disjoint_align64_int64_t_int8_t(i64 %ptr) {512; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_int8_t:513; CHECK-P10:       # %bb.0: # %entry514; CHECK-P10-NEXT:    pli r4, 244140625515; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23516; CHECK-P10-NEXT:    rldic r4, r4, 12, 24517; CHECK-P10-NEXT:    lbzx r3, r3, r4518; CHECK-P10-NEXT:    extsb r3, r3519; CHECK-P10-NEXT:    blr520;521; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_int8_t:522; CHECK-PREP10:       # %bb.0: # %entry523; CHECK-PREP10-NEXT:    lis r4, 3725524; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23525; CHECK-PREP10-NEXT:    ori r4, r4, 19025526; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24527; CHECK-PREP10-NEXT:    lbzx r3, r3, r4528; CHECK-PREP10-NEXT:    extsb r3, r3529; CHECK-PREP10-NEXT:    blr530entry:531  %and = and i64 %ptr, -1099511627776532  %or = or i64 %and, 1000000000000533  %0 = inttoptr i64 %or to ptr534  %1 = load atomic i8, ptr %0 monotonic, align 4096535  %conv = sext i8 %1 to i64536  ret i64 %conv537}538 539; Function Attrs: nofree norecurse nounwind uwtable willreturn540define dso_local i64 @ld_cst_align16_int64_t_int8_t() {541; CHECK-LABEL: ld_cst_align16_int64_t_int8_t:542; CHECK:       # %bb.0: # %entry543; CHECK-NEXT:    lbz r3, 4080(0)544; CHECK-NEXT:    extsb r3, r3545; CHECK-NEXT:    blr546entry:547  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 16548  %conv = sext i8 %0 to i64549  ret i64 %conv550}551 552; Function Attrs: nofree norecurse nounwind uwtable willreturn553define dso_local i64 @ld_cst_align32_int64_t_int8_t() {554; CHECK-LABEL: ld_cst_align32_int64_t_int8_t:555; CHECK:       # %bb.0: # %entry556; CHECK-NEXT:    lis r3, 153557; CHECK-NEXT:    lbz r3, -27108(r3)558; CHECK-NEXT:    extsb r3, r3559; CHECK-NEXT:    blr560entry:561  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4562  %conv = sext i8 %0 to i64563  ret i64 %conv564}565 566; Function Attrs: nofree norecurse nounwind uwtable willreturn567define dso_local i64 @ld_cst_align64_int64_t_int8_t() {568; CHECK-P10-LABEL: ld_cst_align64_int64_t_int8_t:569; CHECK-P10:       # %bb.0: # %entry570; CHECK-P10-NEXT:    pli r3, 244140625571; CHECK-P10-NEXT:    rldic r3, r3, 12, 24572; CHECK-P10-NEXT:    lbz r3, 0(r3)573; CHECK-P10-NEXT:    extsb r3, r3574; CHECK-P10-NEXT:    blr575;576; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_int8_t:577; CHECK-PREP10:       # %bb.0: # %entry578; CHECK-PREP10-NEXT:    lis r3, 3725579; CHECK-PREP10-NEXT:    ori r3, r3, 19025580; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24581; CHECK-PREP10-NEXT:    lbz r3, 0(r3)582; CHECK-PREP10-NEXT:    extsb r3, r3583; CHECK-PREP10-NEXT:    blr584entry:585  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096586  %conv = sext i8 %0 to i64587  ret i64 %conv588}589 590; Function Attrs: nofree norecurse nounwind uwtable willreturn591define dso_local i64 @ld_0_int64_t_uint16_t(i64 %ptr) {592; CHECK-LABEL: ld_0_int64_t_uint16_t:593; CHECK:       # %bb.0: # %entry594; CHECK-NEXT:    lhz r3, 0(r3)595; CHECK-NEXT:    blr596entry:597  %0 = inttoptr i64 %ptr to ptr598  %1 = load atomic i16, ptr %0 monotonic, align 2599  %conv = zext i16 %1 to i64600  ret i64 %conv601}602 603; Function Attrs: nofree norecurse nounwind uwtable willreturn604define dso_local i64 @ld_align16_int64_t_uint16_t(ptr nocapture readonly %ptr) {605; CHECK-LABEL: ld_align16_int64_t_uint16_t:606; CHECK:       # %bb.0: # %entry607; CHECK-NEXT:    lhz r3, 8(r3)608; CHECK-NEXT:    blr609entry:610  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8611  %0 = load atomic i16, ptr %add.ptr monotonic, align 2612  %conv = zext i16 %0 to i64613  ret i64 %conv614}615 616; Function Attrs: nofree norecurse nounwind uwtable willreturn617define dso_local i64 @ld_align32_int64_t_uint16_t(ptr nocapture readonly %ptr) {618; CHECK-P10-LABEL: ld_align32_int64_t_uint16_t:619; CHECK-P10:       # %bb.0: # %entry620; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 0621; CHECK-P10-NEXT:    clrldi r3, r3, 32622; CHECK-P10-NEXT:    blr623;624; CHECK-PREP10-LABEL: ld_align32_int64_t_uint16_t:625; CHECK-PREP10:       # %bb.0: # %entry626; CHECK-PREP10-NEXT:    lis r4, 1525627; CHECK-PREP10-NEXT:    ori r4, r4, 56600628; CHECK-PREP10-NEXT:    lhzx r3, r3, r4629; CHECK-PREP10-NEXT:    blr630entry:631  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000632  %0 = load atomic i16, ptr %add.ptr monotonic, align 2633  %conv = zext i16 %0 to i64634  ret i64 %conv635}636 637; Function Attrs: nofree norecurse nounwind uwtable willreturn638define dso_local i64 @ld_align64_int64_t_uint16_t(ptr nocapture readonly %ptr) {639; CHECK-P10-LABEL: ld_align64_int64_t_uint16_t:640; CHECK-P10:       # %bb.0: # %entry641; CHECK-P10-NEXT:    pli r4, 244140625642; CHECK-P10-NEXT:    rldic r4, r4, 12, 24643; CHECK-P10-NEXT:    lhzx r3, r3, r4644; CHECK-P10-NEXT:    blr645;646; CHECK-PREP10-LABEL: ld_align64_int64_t_uint16_t:647; CHECK-PREP10:       # %bb.0: # %entry648; CHECK-PREP10-NEXT:    lis r4, 3725649; CHECK-PREP10-NEXT:    ori r4, r4, 19025650; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24651; CHECK-PREP10-NEXT:    lhzx r3, r3, r4652; CHECK-PREP10-NEXT:    blr653entry:654  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000655  %0 = load atomic i16, ptr %add.ptr monotonic, align 2656  %conv = zext i16 %0 to i64657  ret i64 %conv658}659 660; Function Attrs: nofree norecurse nounwind uwtable willreturn661define dso_local i64 @ld_reg_int64_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {662; CHECK-LABEL: ld_reg_int64_t_uint16_t:663; CHECK:       # %bb.0: # %entry664; CHECK-NEXT:    lhzx r3, r3, r4665; CHECK-NEXT:    blr666entry:667  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off668  %0 = load atomic i16, ptr %add.ptr monotonic, align 2669  %conv = zext i16 %0 to i64670  ret i64 %conv671}672 673; Function Attrs: nofree norecurse nounwind uwtable willreturn674define dso_local i64 @ld_or_int64_t_uint16_t(i64 %ptr, i8 zeroext %off) {675; CHECK-LABEL: ld_or_int64_t_uint16_t:676; CHECK:       # %bb.0: # %entry677; CHECK-NEXT:    or r3, r4, r3678; CHECK-NEXT:    lhz r3, 0(r3)679; CHECK-NEXT:    blr680entry:681  %conv = zext i8 %off to i64682  %or = or i64 %conv, %ptr683  %0 = inttoptr i64 %or to ptr684  %1 = load atomic i16, ptr %0 monotonic, align 2685  %conv1 = zext i16 %1 to i64686  ret i64 %conv1687}688 689; Function Attrs: nofree norecurse nounwind uwtable willreturn690define dso_local i64 @ld_not_disjoint16_int64_t_uint16_t(i64 %ptr) {691; CHECK-LABEL: ld_not_disjoint16_int64_t_uint16_t:692; CHECK:       # %bb.0: # %entry693; CHECK-NEXT:    ori r3, r3, 6694; CHECK-NEXT:    lhz r3, 0(r3)695; CHECK-NEXT:    blr696entry:697  %or = or i64 %ptr, 6698  %0 = inttoptr i64 %or to ptr699  %1 = load atomic i16, ptr %0 monotonic, align 2700  %conv = zext i16 %1 to i64701  ret i64 %conv702}703 704; Function Attrs: nofree norecurse nounwind uwtable willreturn705define dso_local i64 @ld_disjoint_align16_int64_t_uint16_t(i64 %ptr) {706; CHECK-LABEL: ld_disjoint_align16_int64_t_uint16_t:707; CHECK:       # %bb.0: # %entry708; CHECK-NEXT:    rldicr r3, r3, 0, 51709; CHECK-NEXT:    lhz r3, 24(r3)710; CHECK-NEXT:    blr711entry:712  %and = and i64 %ptr, -4096713  %or = or i64 %and, 24714  %0 = inttoptr i64 %or to ptr715  %1 = load atomic i16, ptr %0 monotonic, align 8716  %conv = zext i16 %1 to i64717  ret i64 %conv718}719 720; Function Attrs: nofree norecurse nounwind uwtable willreturn721define dso_local i64 @ld_not_disjoint32_int64_t_uint16_t(i64 %ptr) {722; CHECK-LABEL: ld_not_disjoint32_int64_t_uint16_t:723; CHECK:       # %bb.0: # %entry724; CHECK-NEXT:    ori r3, r3, 34463725; CHECK-NEXT:    oris r3, r3, 1726; CHECK-NEXT:    lhz r3, 0(r3)727; CHECK-NEXT:    blr728entry:729  %or = or i64 %ptr, 99999730  %0 = inttoptr i64 %or to ptr731  %1 = load atomic i16, ptr %0 monotonic, align 2732  %conv = zext i16 %1 to i64733  ret i64 %conv734}735 736; Function Attrs: nofree norecurse nounwind uwtable willreturn737define dso_local i64 @ld_disjoint_align32_int64_t_uint16_t(i64 %ptr) {738; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_uint16_t:739; CHECK-P10:       # %bb.0: # %entry740; CHECK-P10-NEXT:    lis r4, -15264741; CHECK-P10-NEXT:    and r3, r3, r4742; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 0743; CHECK-P10-NEXT:    clrldi r3, r3, 32744; CHECK-P10-NEXT:    blr745;746; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_uint16_t:747; CHECK-PREP10:       # %bb.0: # %entry748; CHECK-PREP10-NEXT:    lis r4, -15264749; CHECK-PREP10-NEXT:    and r3, r3, r4750; CHECK-PREP10-NEXT:    lis r4, 15258751; CHECK-PREP10-NEXT:    ori r4, r4, 41712752; CHECK-PREP10-NEXT:    lhzx r3, r3, r4753; CHECK-PREP10-NEXT:    blr754entry:755  %and = and i64 %ptr, -1000341504756  %or = or i64 %and, 999990000757  %0 = inttoptr i64 %or to ptr758  %1 = load atomic i16, ptr %0 monotonic, align 16759  %conv = zext i16 %1 to i64760  ret i64 %conv761}762 763; Function Attrs: nofree norecurse nounwind uwtable willreturn764define dso_local i64 @ld_not_disjoint64_int64_t_uint16_t(i64 %ptr) {765; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_uint16_t:766; CHECK-P10:       # %bb.0: # %entry767; CHECK-P10-NEXT:    pli r4, 232768; CHECK-P10-NEXT:    pli r5, 3567587329769; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0770; CHECK-P10-NEXT:    or r3, r3, r5771; CHECK-P10-NEXT:    lhz r3, 0(r3)772; CHECK-P10-NEXT:    blr773;774; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_uint16_t:775; CHECK-PREP10:       # %bb.0: # %entry776; CHECK-PREP10-NEXT:    li r4, 29777; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24778; CHECK-PREP10-NEXT:    oris r4, r4, 54437779; CHECK-PREP10-NEXT:    ori r4, r4, 4097780; CHECK-PREP10-NEXT:    or r3, r3, r4781; CHECK-PREP10-NEXT:    lhz r3, 0(r3)782; CHECK-PREP10-NEXT:    blr783entry:784  %or = or i64 %ptr, 1000000000001785  %0 = inttoptr i64 %or to ptr786  %1 = load atomic i16, ptr %0 monotonic, align 2787  %conv = zext i16 %1 to i64788  ret i64 %conv789}790 791; Function Attrs: nofree norecurse nounwind uwtable willreturn792define dso_local i64 @ld_disjoint_align64_int64_t_uint16_t(i64 %ptr) {793; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_uint16_t:794; CHECK-P10:       # %bb.0: # %entry795; CHECK-P10-NEXT:    pli r4, 244140625796; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23797; CHECK-P10-NEXT:    rldic r4, r4, 12, 24798; CHECK-P10-NEXT:    lhzx r3, r3, r4799; CHECK-P10-NEXT:    blr800;801; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_uint16_t:802; CHECK-PREP10:       # %bb.0: # %entry803; CHECK-PREP10-NEXT:    lis r4, 3725804; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23805; CHECK-PREP10-NEXT:    ori r4, r4, 19025806; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24807; CHECK-PREP10-NEXT:    lhzx r3, r3, r4808; CHECK-PREP10-NEXT:    blr809entry:810  %and = and i64 %ptr, -1099511627776811  %or = or i64 %and, 1000000000000812  %0 = inttoptr i64 %or to ptr813  %1 = load atomic i16, ptr %0 monotonic, align 4096814  %conv = zext i16 %1 to i64815  ret i64 %conv816}817 818; Function Attrs: nofree norecurse nounwind uwtable willreturn819define dso_local i64 @ld_cst_align16_int64_t_uint16_t() {820; CHECK-LABEL: ld_cst_align16_int64_t_uint16_t:821; CHECK:       # %bb.0: # %entry822; CHECK-NEXT:    lhz r3, 4080(0)823; CHECK-NEXT:    blr824entry:825  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 16826  %conv = zext i16 %0 to i64827  ret i64 %conv828}829 830; Function Attrs: nofree norecurse nounwind uwtable willreturn831define dso_local i64 @ld_cst_align32_int64_t_uint16_t() {832; CHECK-LABEL: ld_cst_align32_int64_t_uint16_t:833; CHECK:       # %bb.0: # %entry834; CHECK-NEXT:    lis r3, 153835; CHECK-NEXT:    lhz r3, -27108(r3)836; CHECK-NEXT:    blr837entry:838  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4839  %conv = zext i16 %0 to i64840  ret i64 %conv841}842 843; Function Attrs: nofree norecurse nounwind uwtable willreturn844define dso_local i64 @ld_cst_align64_int64_t_uint16_t() {845; CHECK-P10-LABEL: ld_cst_align64_int64_t_uint16_t:846; CHECK-P10:       # %bb.0: # %entry847; CHECK-P10-NEXT:    pli r3, 244140625848; CHECK-P10-NEXT:    rldic r3, r3, 12, 24849; CHECK-P10-NEXT:    lhz r3, 0(r3)850; CHECK-P10-NEXT:    blr851;852; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_uint16_t:853; CHECK-PREP10:       # %bb.0: # %entry854; CHECK-PREP10-NEXT:    lis r3, 3725855; CHECK-PREP10-NEXT:    ori r3, r3, 19025856; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24857; CHECK-PREP10-NEXT:    lhz r3, 0(r3)858; CHECK-PREP10-NEXT:    blr859entry:860  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096861  %conv = zext i16 %0 to i64862  ret i64 %conv863}864 865; Function Attrs: nofree norecurse nounwind uwtable willreturn866define dso_local i64 @ld_0_int64_t_int16_t(i64 %ptr) {867; CHECK-LABEL: ld_0_int64_t_int16_t:868; CHECK:       # %bb.0: # %entry869; CHECK-NEXT:    lhz r3, 0(r3)870; CHECK-NEXT:    extsh r3, r3871; CHECK-NEXT:    blr872entry:873  %0 = inttoptr i64 %ptr to ptr874  %1 = load atomic i16, ptr %0 monotonic, align 2875  %conv = sext i16 %1 to i64876  ret i64 %conv877}878 879; Function Attrs: nofree norecurse nounwind uwtable willreturn880define dso_local i64 @ld_align16_int64_t_int16_t(ptr nocapture readonly %ptr) {881; CHECK-LABEL: ld_align16_int64_t_int16_t:882; CHECK:       # %bb.0: # %entry883; CHECK-NEXT:    lhz r3, 8(r3)884; CHECK-NEXT:    extsh r3, r3885; CHECK-NEXT:    blr886entry:887  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8888  %0 = load atomic i16, ptr %add.ptr monotonic, align 2889  %conv = sext i16 %0 to i64890  ret i64 %conv891}892 893; Function Attrs: nofree norecurse nounwind uwtable willreturn894define dso_local i64 @ld_align32_int64_t_int16_t(ptr nocapture readonly %ptr) {895; CHECK-P10-LABEL: ld_align32_int64_t_int16_t:896; CHECK-P10:       # %bb.0: # %entry897; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 0898; CHECK-P10-NEXT:    extsh r3, r3899; CHECK-P10-NEXT:    blr900;901; CHECK-PREP10-LABEL: ld_align32_int64_t_int16_t:902; CHECK-PREP10:       # %bb.0: # %entry903; CHECK-PREP10-NEXT:    lis r4, 1525904; CHECK-PREP10-NEXT:    ori r4, r4, 56600905; CHECK-PREP10-NEXT:    lhzx r3, r3, r4906; CHECK-PREP10-NEXT:    extsh r3, r3907; CHECK-PREP10-NEXT:    blr908entry:909  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000910  %0 = load atomic i16, ptr %add.ptr monotonic, align 2911  %conv = sext i16 %0 to i64912  ret i64 %conv913}914 915; Function Attrs: nofree norecurse nounwind uwtable willreturn916define dso_local i64 @ld_align64_int64_t_int16_t(ptr nocapture readonly %ptr) {917; CHECK-P10-LABEL: ld_align64_int64_t_int16_t:918; CHECK-P10:       # %bb.0: # %entry919; CHECK-P10-NEXT:    pli r4, 244140625920; CHECK-P10-NEXT:    rldic r4, r4, 12, 24921; CHECK-P10-NEXT:    lhzx r3, r3, r4922; CHECK-P10-NEXT:    extsh r3, r3923; CHECK-P10-NEXT:    blr924;925; CHECK-PREP10-LABEL: ld_align64_int64_t_int16_t:926; CHECK-PREP10:       # %bb.0: # %entry927; CHECK-PREP10-NEXT:    lis r4, 3725928; CHECK-PREP10-NEXT:    ori r4, r4, 19025929; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24930; CHECK-PREP10-NEXT:    lhzx r3, r3, r4931; CHECK-PREP10-NEXT:    extsh r3, r3932; CHECK-PREP10-NEXT:    blr933entry:934  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000935  %0 = load atomic i16, ptr %add.ptr monotonic, align 2936  %conv = sext i16 %0 to i64937  ret i64 %conv938}939 940; Function Attrs: nofree norecurse nounwind uwtable willreturn941define dso_local i64 @ld_reg_int64_t_int16_t(ptr nocapture readonly %ptr, i64 %off) {942; CHECK-LABEL: ld_reg_int64_t_int16_t:943; CHECK:       # %bb.0: # %entry944; CHECK-NEXT:    lhzx r3, r3, r4945; CHECK-NEXT:    extsh r3, r3946; CHECK-NEXT:    blr947entry:948  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off949  %0 = load atomic i16, ptr %add.ptr monotonic, align 2950  %conv = sext i16 %0 to i64951  ret i64 %conv952}953 954; Function Attrs: nofree norecurse nounwind uwtable willreturn955define dso_local i64 @ld_or_int64_t_int16_t(i64 %ptr, i8 zeroext %off) {956; CHECK-LABEL: ld_or_int64_t_int16_t:957; CHECK:       # %bb.0: # %entry958; CHECK-NEXT:    or r3, r4, r3959; CHECK-NEXT:    lhz r3, 0(r3)960; CHECK-NEXT:    extsh r3, r3961; CHECK-NEXT:    blr962entry:963  %conv = zext i8 %off to i64964  %or = or i64 %conv, %ptr965  %0 = inttoptr i64 %or to ptr966  %1 = load atomic i16, ptr %0 monotonic, align 2967  %conv1 = sext i16 %1 to i64968  ret i64 %conv1969}970 971; Function Attrs: nofree norecurse nounwind uwtable willreturn972define dso_local i64 @ld_not_disjoint16_int64_t_int16_t(i64 %ptr) {973; CHECK-LABEL: ld_not_disjoint16_int64_t_int16_t:974; CHECK:       # %bb.0: # %entry975; CHECK-NEXT:    ori r3, r3, 6976; CHECK-NEXT:    lhz r3, 0(r3)977; CHECK-NEXT:    extsh r3, r3978; CHECK-NEXT:    blr979entry:980  %or = or i64 %ptr, 6981  %0 = inttoptr i64 %or to ptr982  %1 = load atomic i16, ptr %0 monotonic, align 2983  %conv = sext i16 %1 to i64984  ret i64 %conv985}986 987; Function Attrs: nofree norecurse nounwind uwtable willreturn988define dso_local i64 @ld_disjoint_align16_int64_t_int16_t(i64 %ptr) {989; CHECK-LABEL: ld_disjoint_align16_int64_t_int16_t:990; CHECK:       # %bb.0: # %entry991; CHECK-NEXT:    rldicr r3, r3, 0, 51992; CHECK-NEXT:    lhz r3, 24(r3)993; CHECK-NEXT:    extsh r3, r3994; CHECK-NEXT:    blr995entry:996  %and = and i64 %ptr, -4096997  %or = or i64 %and, 24998  %0 = inttoptr i64 %or to ptr999  %1 = load atomic i16, ptr %0 monotonic, align 81000  %conv = sext i16 %1 to i641001  ret i64 %conv1002}1003 1004; Function Attrs: nofree norecurse nounwind uwtable willreturn1005define dso_local i64 @ld_not_disjoint32_int64_t_int16_t(i64 %ptr) {1006; CHECK-LABEL: ld_not_disjoint32_int64_t_int16_t:1007; CHECK:       # %bb.0: # %entry1008; CHECK-NEXT:    ori r3, r3, 344631009; CHECK-NEXT:    oris r3, r3, 11010; CHECK-NEXT:    lhz r3, 0(r3)1011; CHECK-NEXT:    extsh r3, r31012; CHECK-NEXT:    blr1013entry:1014  %or = or i64 %ptr, 999991015  %0 = inttoptr i64 %or to ptr1016  %1 = load atomic i16, ptr %0 monotonic, align 21017  %conv = sext i16 %1 to i641018  ret i64 %conv1019}1020 1021; Function Attrs: nofree norecurse nounwind uwtable willreturn1022define dso_local i64 @ld_disjoint_align32_int64_t_int16_t(i64 %ptr) {1023; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_int16_t:1024; CHECK-P10:       # %bb.0: # %entry1025; CHECK-P10-NEXT:    lis r4, -152641026; CHECK-P10-NEXT:    and r3, r3, r41027; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 01028; CHECK-P10-NEXT:    extsh r3, r31029; CHECK-P10-NEXT:    blr1030;1031; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_int16_t:1032; CHECK-PREP10:       # %bb.0: # %entry1033; CHECK-PREP10-NEXT:    lis r4, -152641034; CHECK-PREP10-NEXT:    and r3, r3, r41035; CHECK-PREP10-NEXT:    lis r4, 152581036; CHECK-PREP10-NEXT:    ori r4, r4, 417121037; CHECK-PREP10-NEXT:    lhzx r3, r3, r41038; CHECK-PREP10-NEXT:    extsh r3, r31039; CHECK-PREP10-NEXT:    blr1040entry:1041  %and = and i64 %ptr, -10003415041042  %or = or i64 %and, 9999900001043  %0 = inttoptr i64 %or to ptr1044  %1 = load atomic i16, ptr %0 monotonic, align 161045  %conv = sext i16 %1 to i641046  ret i64 %conv1047}1048 1049; Function Attrs: nofree norecurse nounwind uwtable willreturn1050define dso_local i64 @ld_not_disjoint64_int64_t_int16_t(i64 %ptr) {1051; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_int16_t:1052; CHECK-P10:       # %bb.0: # %entry1053; CHECK-P10-NEXT:    pli r4, 2321054; CHECK-P10-NEXT:    pli r5, 35675873291055; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01056; CHECK-P10-NEXT:    or r3, r3, r51057; CHECK-P10-NEXT:    lhz r3, 0(r3)1058; CHECK-P10-NEXT:    extsh r3, r31059; CHECK-P10-NEXT:    blr1060;1061; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_int16_t:1062; CHECK-PREP10:       # %bb.0: # %entry1063; CHECK-PREP10-NEXT:    li r4, 291064; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241065; CHECK-PREP10-NEXT:    oris r4, r4, 544371066; CHECK-PREP10-NEXT:    ori r4, r4, 40971067; CHECK-PREP10-NEXT:    or r3, r3, r41068; CHECK-PREP10-NEXT:    lhz r3, 0(r3)1069; CHECK-PREP10-NEXT:    extsh r3, r31070; CHECK-PREP10-NEXT:    blr1071entry:1072  %or = or i64 %ptr, 10000000000011073  %0 = inttoptr i64 %or to ptr1074  %1 = load atomic i16, ptr %0 monotonic, align 21075  %conv = sext i16 %1 to i641076  ret i64 %conv1077}1078 1079; Function Attrs: nofree norecurse nounwind uwtable willreturn1080define dso_local i64 @ld_disjoint_align64_int64_t_int16_t(i64 %ptr) {1081; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_int16_t:1082; CHECK-P10:       # %bb.0: # %entry1083; CHECK-P10-NEXT:    pli r4, 2441406251084; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231085; CHECK-P10-NEXT:    rldic r4, r4, 12, 241086; CHECK-P10-NEXT:    lhzx r3, r3, r41087; CHECK-P10-NEXT:    extsh r3, r31088; CHECK-P10-NEXT:    blr1089;1090; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_int16_t:1091; CHECK-PREP10:       # %bb.0: # %entry1092; CHECK-PREP10-NEXT:    lis r4, 37251093; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231094; CHECK-PREP10-NEXT:    ori r4, r4, 190251095; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241096; CHECK-PREP10-NEXT:    lhzx r3, r3, r41097; CHECK-PREP10-NEXT:    extsh r3, r31098; CHECK-PREP10-NEXT:    blr1099entry:1100  %and = and i64 %ptr, -10995116277761101  %or = or i64 %and, 10000000000001102  %0 = inttoptr i64 %or to ptr1103  %1 = load atomic i16, ptr %0 monotonic, align 40961104  %conv = sext i16 %1 to i641105  ret i64 %conv1106}1107 1108; Function Attrs: nofree norecurse nounwind uwtable willreturn1109define dso_local i64 @ld_cst_align16_int64_t_int16_t() {1110; CHECK-LABEL: ld_cst_align16_int64_t_int16_t:1111; CHECK:       # %bb.0: # %entry1112; CHECK-NEXT:    lhz r3, 4080(0)1113; CHECK-NEXT:    extsh r3, r31114; CHECK-NEXT:    blr1115entry:1116  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 161117  %conv = sext i16 %0 to i641118  ret i64 %conv1119}1120 1121; Function Attrs: nofree norecurse nounwind uwtable willreturn1122define dso_local i64 @ld_cst_align32_int64_t_int16_t() {1123; CHECK-LABEL: ld_cst_align32_int64_t_int16_t:1124; CHECK:       # %bb.0: # %entry1125; CHECK-NEXT:    lis r3, 1531126; CHECK-NEXT:    lhz r3, -27108(r3)1127; CHECK-NEXT:    extsh r3, r31128; CHECK-NEXT:    blr1129entry:1130  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41131  %conv = sext i16 %0 to i641132  ret i64 %conv1133}1134 1135; Function Attrs: nofree norecurse nounwind uwtable willreturn1136define dso_local i64 @ld_cst_align64_int64_t_int16_t() {1137; CHECK-P10-LABEL: ld_cst_align64_int64_t_int16_t:1138; CHECK-P10:       # %bb.0: # %entry1139; CHECK-P10-NEXT:    pli r3, 2441406251140; CHECK-P10-NEXT:    rldic r3, r3, 12, 241141; CHECK-P10-NEXT:    lhz r3, 0(r3)1142; CHECK-P10-NEXT:    extsh r3, r31143; CHECK-P10-NEXT:    blr1144;1145; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_int16_t:1146; CHECK-PREP10:       # %bb.0: # %entry1147; CHECK-PREP10-NEXT:    lis r3, 37251148; CHECK-PREP10-NEXT:    ori r3, r3, 190251149; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241150; CHECK-PREP10-NEXT:    lhz r3, 0(r3)1151; CHECK-PREP10-NEXT:    extsh r3, r31152; CHECK-PREP10-NEXT:    blr1153entry:1154  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961155  %conv = sext i16 %0 to i641156  ret i64 %conv1157}1158 1159; Function Attrs: nofree norecurse nounwind uwtable willreturn1160define dso_local i64 @ld_0_int64_t_uint32_t(i64 %ptr) {1161; CHECK-LABEL: ld_0_int64_t_uint32_t:1162; CHECK:       # %bb.0: # %entry1163; CHECK-NEXT:    lwz r3, 0(r3)1164; CHECK-NEXT:    blr1165entry:1166  %0 = inttoptr i64 %ptr to ptr1167  %1 = load atomic i32, ptr %0 monotonic, align 41168  %conv = zext i32 %1 to i641169  ret i64 %conv1170}1171 1172; Function Attrs: nofree norecurse nounwind uwtable willreturn1173define dso_local i64 @ld_align16_int64_t_uint32_t(ptr nocapture readonly %ptr) {1174; CHECK-LABEL: ld_align16_int64_t_uint32_t:1175; CHECK:       # %bb.0: # %entry1176; CHECK-NEXT:    lwz r3, 8(r3)1177; CHECK-NEXT:    blr1178entry:1179  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81180  %0 = load atomic i32, ptr %add.ptr monotonic, align 41181  %conv = zext i32 %0 to i641182  ret i64 %conv1183}1184 1185; Function Attrs: nofree norecurse nounwind uwtable willreturn1186define dso_local i64 @ld_align32_int64_t_uint32_t(ptr nocapture readonly %ptr) {1187; CHECK-P10-LABEL: ld_align32_int64_t_uint32_t:1188; CHECK-P10:       # %bb.0: # %entry1189; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 01190; CHECK-P10-NEXT:    clrldi r3, r3, 321191; CHECK-P10-NEXT:    blr1192;1193; CHECK-PREP10-LABEL: ld_align32_int64_t_uint32_t:1194; CHECK-PREP10:       # %bb.0: # %entry1195; CHECK-PREP10-NEXT:    lis r4, 15251196; CHECK-PREP10-NEXT:    ori r4, r4, 566001197; CHECK-PREP10-NEXT:    lwzx r3, r3, r41198; CHECK-PREP10-NEXT:    blr1199entry:1200  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001201  %0 = load atomic i32, ptr %add.ptr monotonic, align 41202  %conv = zext i32 %0 to i641203  ret i64 %conv1204}1205 1206; Function Attrs: nofree norecurse nounwind uwtable willreturn1207define dso_local i64 @ld_align64_int64_t_uint32_t(ptr nocapture readonly %ptr) {1208; CHECK-P10-LABEL: ld_align64_int64_t_uint32_t:1209; CHECK-P10:       # %bb.0: # %entry1210; CHECK-P10-NEXT:    pli r4, 2441406251211; CHECK-P10-NEXT:    rldic r4, r4, 12, 241212; CHECK-P10-NEXT:    lwzx r3, r3, r41213; CHECK-P10-NEXT:    blr1214;1215; CHECK-PREP10-LABEL: ld_align64_int64_t_uint32_t:1216; CHECK-PREP10:       # %bb.0: # %entry1217; CHECK-PREP10-NEXT:    lis r4, 37251218; CHECK-PREP10-NEXT:    ori r4, r4, 190251219; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241220; CHECK-PREP10-NEXT:    lwzx r3, r3, r41221; CHECK-PREP10-NEXT:    blr1222entry:1223  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001224  %0 = load atomic i32, ptr %add.ptr monotonic, align 41225  %conv = zext i32 %0 to i641226  ret i64 %conv1227}1228 1229; Function Attrs: nofree norecurse nounwind uwtable willreturn1230define dso_local i64 @ld_reg_int64_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {1231; CHECK-LABEL: ld_reg_int64_t_uint32_t:1232; CHECK:       # %bb.0: # %entry1233; CHECK-NEXT:    lwzx r3, r3, r41234; CHECK-NEXT:    blr1235entry:1236  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1237  %0 = load atomic i32, ptr %add.ptr monotonic, align 41238  %conv = zext i32 %0 to i641239  ret i64 %conv1240}1241 1242; Function Attrs: nofree norecurse nounwind uwtable willreturn1243define dso_local i64 @ld_or_int64_t_uint32_t(i64 %ptr, i8 zeroext %off) {1244; CHECK-LABEL: ld_or_int64_t_uint32_t:1245; CHECK:       # %bb.0: # %entry1246; CHECK-NEXT:    or r3, r4, r31247; CHECK-NEXT:    lwz r3, 0(r3)1248; CHECK-NEXT:    blr1249entry:1250  %conv = zext i8 %off to i641251  %or = or i64 %conv, %ptr1252  %0 = inttoptr i64 %or to ptr1253  %1 = load atomic i32, ptr %0 monotonic, align 41254  %conv1 = zext i32 %1 to i641255  ret i64 %conv11256}1257 1258; Function Attrs: nofree norecurse nounwind uwtable willreturn1259define dso_local i64 @ld_not_disjoint16_int64_t_uint32_t(i64 %ptr) {1260; CHECK-LABEL: ld_not_disjoint16_int64_t_uint32_t:1261; CHECK:       # %bb.0: # %entry1262; CHECK-NEXT:    ori r3, r3, 61263; CHECK-NEXT:    lwz r3, 0(r3)1264; CHECK-NEXT:    blr1265entry:1266  %or = or i64 %ptr, 61267  %0 = inttoptr i64 %or to ptr1268  %1 = load atomic i32, ptr %0 monotonic, align 41269  %conv = zext i32 %1 to i641270  ret i64 %conv1271}1272 1273; Function Attrs: nofree norecurse nounwind uwtable willreturn1274define dso_local i64 @ld_disjoint_align16_int64_t_uint32_t(i64 %ptr) {1275; CHECK-LABEL: ld_disjoint_align16_int64_t_uint32_t:1276; CHECK:       # %bb.0: # %entry1277; CHECK-NEXT:    rldicr r3, r3, 0, 511278; CHECK-NEXT:    lwz r3, 24(r3)1279; CHECK-NEXT:    blr1280entry:1281  %and = and i64 %ptr, -40961282  %or = or i64 %and, 241283  %0 = inttoptr i64 %or to ptr1284  %1 = load atomic i32, ptr %0 monotonic, align 81285  %conv = zext i32 %1 to i641286  ret i64 %conv1287}1288 1289; Function Attrs: nofree norecurse nounwind uwtable willreturn1290define dso_local i64 @ld_not_disjoint32_int64_t_uint32_t(i64 %ptr) {1291; CHECK-LABEL: ld_not_disjoint32_int64_t_uint32_t:1292; CHECK:       # %bb.0: # %entry1293; CHECK-NEXT:    ori r3, r3, 344631294; CHECK-NEXT:    oris r3, r3, 11295; CHECK-NEXT:    lwz r3, 0(r3)1296; CHECK-NEXT:    blr1297entry:1298  %or = or i64 %ptr, 999991299  %0 = inttoptr i64 %or to ptr1300  %1 = load atomic i32, ptr %0 monotonic, align 41301  %conv = zext i32 %1 to i641302  ret i64 %conv1303}1304 1305; Function Attrs: nofree norecurse nounwind uwtable willreturn1306define dso_local i64 @ld_disjoint_align32_int64_t_uint32_t(i64 %ptr) {1307; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_uint32_t:1308; CHECK-P10:       # %bb.0: # %entry1309; CHECK-P10-NEXT:    lis r4, -152641310; CHECK-P10-NEXT:    and r3, r3, r41311; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 01312; CHECK-P10-NEXT:    clrldi r3, r3, 321313; CHECK-P10-NEXT:    blr1314;1315; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_uint32_t:1316; CHECK-PREP10:       # %bb.0: # %entry1317; CHECK-PREP10-NEXT:    lis r4, -152641318; CHECK-PREP10-NEXT:    and r3, r3, r41319; CHECK-PREP10-NEXT:    lis r4, 152581320; CHECK-PREP10-NEXT:    ori r4, r4, 417121321; CHECK-PREP10-NEXT:    lwzx r3, r3, r41322; CHECK-PREP10-NEXT:    blr1323entry:1324  %and = and i64 %ptr, -10003415041325  %or = or i64 %and, 9999900001326  %0 = inttoptr i64 %or to ptr1327  %1 = load atomic i32, ptr %0 monotonic, align 161328  %conv = zext i32 %1 to i641329  ret i64 %conv1330}1331 1332; Function Attrs: nofree norecurse nounwind uwtable willreturn1333define dso_local i64 @ld_not_disjoint64_int64_t_uint32_t(i64 %ptr) {1334; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_uint32_t:1335; CHECK-P10:       # %bb.0: # %entry1336; CHECK-P10-NEXT:    pli r4, 2321337; CHECK-P10-NEXT:    pli r5, 35675873291338; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01339; CHECK-P10-NEXT:    or r3, r3, r51340; CHECK-P10-NEXT:    lwz r3, 0(r3)1341; CHECK-P10-NEXT:    blr1342;1343; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_uint32_t:1344; CHECK-PREP10:       # %bb.0: # %entry1345; CHECK-PREP10-NEXT:    li r4, 291346; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241347; CHECK-PREP10-NEXT:    oris r4, r4, 544371348; CHECK-PREP10-NEXT:    ori r4, r4, 40971349; CHECK-PREP10-NEXT:    or r3, r3, r41350; CHECK-PREP10-NEXT:    lwz r3, 0(r3)1351; CHECK-PREP10-NEXT:    blr1352entry:1353  %or = or i64 %ptr, 10000000000011354  %0 = inttoptr i64 %or to ptr1355  %1 = load atomic i32, ptr %0 monotonic, align 41356  %conv = zext i32 %1 to i641357  ret i64 %conv1358}1359 1360; Function Attrs: nofree norecurse nounwind uwtable willreturn1361define dso_local i64 @ld_disjoint_align64_int64_t_uint32_t(i64 %ptr) {1362; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_uint32_t:1363; CHECK-P10:       # %bb.0: # %entry1364; CHECK-P10-NEXT:    pli r4, 2441406251365; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231366; CHECK-P10-NEXT:    rldic r4, r4, 12, 241367; CHECK-P10-NEXT:    lwzx r3, r3, r41368; CHECK-P10-NEXT:    blr1369;1370; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_uint32_t:1371; CHECK-PREP10:       # %bb.0: # %entry1372; CHECK-PREP10-NEXT:    lis r4, 37251373; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231374; CHECK-PREP10-NEXT:    ori r4, r4, 190251375; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241376; CHECK-PREP10-NEXT:    lwzx r3, r3, r41377; CHECK-PREP10-NEXT:    blr1378entry:1379  %and = and i64 %ptr, -10995116277761380  %or = or i64 %and, 10000000000001381  %0 = inttoptr i64 %or to ptr1382  %1 = load atomic i32, ptr %0 monotonic, align 40961383  %conv = zext i32 %1 to i641384  ret i64 %conv1385}1386 1387; Function Attrs: nofree norecurse nounwind uwtable willreturn1388define dso_local i64 @ld_cst_align16_int64_t_uint32_t() {1389; CHECK-LABEL: ld_cst_align16_int64_t_uint32_t:1390; CHECK:       # %bb.0: # %entry1391; CHECK-NEXT:    lwz r3, 4080(0)1392; CHECK-NEXT:    blr1393entry:1394  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 161395  %conv = zext i32 %0 to i641396  ret i64 %conv1397}1398 1399; Function Attrs: nofree norecurse nounwind uwtable willreturn1400define dso_local i64 @ld_cst_align32_int64_t_uint32_t() {1401; CHECK-LABEL: ld_cst_align32_int64_t_uint32_t:1402; CHECK:       # %bb.0: # %entry1403; CHECK-NEXT:    lis r3, 1531404; CHECK-NEXT:    lwz r3, -27108(r3)1405; CHECK-NEXT:    blr1406entry:1407  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41408  %conv = zext i32 %0 to i641409  ret i64 %conv1410}1411 1412; Function Attrs: nofree norecurse nounwind uwtable willreturn1413define dso_local i64 @ld_cst_align64_int64_t_uint32_t() {1414; CHECK-P10-LABEL: ld_cst_align64_int64_t_uint32_t:1415; CHECK-P10:       # %bb.0: # %entry1416; CHECK-P10-NEXT:    pli r3, 2441406251417; CHECK-P10-NEXT:    rldic r3, r3, 12, 241418; CHECK-P10-NEXT:    lwz r3, 0(r3)1419; CHECK-P10-NEXT:    blr1420;1421; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_uint32_t:1422; CHECK-PREP10:       # %bb.0: # %entry1423; CHECK-PREP10-NEXT:    lis r3, 37251424; CHECK-PREP10-NEXT:    ori r3, r3, 190251425; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241426; CHECK-PREP10-NEXT:    lwz r3, 0(r3)1427; CHECK-PREP10-NEXT:    blr1428entry:1429  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961430  %conv = zext i32 %0 to i641431  ret i64 %conv1432}1433 1434; Function Attrs: nofree norecurse nounwind uwtable willreturn1435define dso_local i64 @ld_0_int64_t_int32_t(i64 %ptr) {1436; CHECK-LABEL: ld_0_int64_t_int32_t:1437; CHECK:       # %bb.0: # %entry1438; CHECK-NEXT:    lwa r3, 0(r3)1439; CHECK-NEXT:    blr1440entry:1441  %0 = inttoptr i64 %ptr to ptr1442  %1 = load atomic i32, ptr %0 monotonic, align 41443  %conv = sext i32 %1 to i641444  ret i64 %conv1445}1446 1447; Function Attrs: nofree norecurse nounwind uwtable willreturn1448define dso_local i64 @ld_align16_int64_t_int32_t(ptr nocapture readonly %ptr) {1449; CHECK-LABEL: ld_align16_int64_t_int32_t:1450; CHECK:       # %bb.0: # %entry1451; CHECK-NEXT:    lwa r3, 8(r3)1452; CHECK-NEXT:    blr1453entry:1454  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81455  %0 = load atomic i32, ptr %add.ptr monotonic, align 41456  %conv = sext i32 %0 to i641457  ret i64 %conv1458}1459 1460; Function Attrs: nofree norecurse nounwind uwtable willreturn1461define dso_local i64 @ld_align32_int64_t_int32_t(ptr nocapture readonly %ptr) {1462; CHECK-P10-LABEL: ld_align32_int64_t_int32_t:1463; CHECK-P10:       # %bb.0: # %entry1464; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 01465; CHECK-P10-NEXT:    extsw r3, r31466; CHECK-P10-NEXT:    blr1467;1468; CHECK-PREP10-LABEL: ld_align32_int64_t_int32_t:1469; CHECK-PREP10:       # %bb.0: # %entry1470; CHECK-PREP10-NEXT:    lis r4, 15251471; CHECK-PREP10-NEXT:    ori r4, r4, 566001472; CHECK-PREP10-NEXT:    lwax r3, r3, r41473; CHECK-PREP10-NEXT:    blr1474entry:1475  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001476  %0 = load atomic i32, ptr %add.ptr monotonic, align 41477  %conv = sext i32 %0 to i641478  ret i64 %conv1479}1480 1481; Function Attrs: nofree norecurse nounwind uwtable willreturn1482define dso_local i64 @ld_align64_int64_t_int32_t(ptr nocapture readonly %ptr) {1483; CHECK-P10-LABEL: ld_align64_int64_t_int32_t:1484; CHECK-P10:       # %bb.0: # %entry1485; CHECK-P10-NEXT:    pli r4, 2441406251486; CHECK-P10-NEXT:    rldic r4, r4, 12, 241487; CHECK-P10-NEXT:    lwax r3, r3, r41488; CHECK-P10-NEXT:    blr1489;1490; CHECK-PREP10-LABEL: ld_align64_int64_t_int32_t:1491; CHECK-PREP10:       # %bb.0: # %entry1492; CHECK-PREP10-NEXT:    lis r4, 37251493; CHECK-PREP10-NEXT:    ori r4, r4, 190251494; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241495; CHECK-PREP10-NEXT:    lwax r3, r3, r41496; CHECK-PREP10-NEXT:    blr1497entry:1498  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001499  %0 = load atomic i32, ptr %add.ptr monotonic, align 41500  %conv = sext i32 %0 to i641501  ret i64 %conv1502}1503 1504; Function Attrs: nofree norecurse nounwind uwtable willreturn1505define dso_local i64 @ld_reg_int64_t_int32_t(ptr nocapture readonly %ptr, i64 %off) {1506; CHECK-LABEL: ld_reg_int64_t_int32_t:1507; CHECK:       # %bb.0: # %entry1508; CHECK-NEXT:    lwax r3, r3, r41509; CHECK-NEXT:    blr1510entry:1511  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1512  %0 = load atomic i32, ptr %add.ptr monotonic, align 41513  %conv = sext i32 %0 to i641514  ret i64 %conv1515}1516 1517; Function Attrs: nofree norecurse nounwind uwtable willreturn1518define dso_local i64 @ld_or_int64_t_int32_t(i64 %ptr, i8 zeroext %off) {1519; CHECK-LABEL: ld_or_int64_t_int32_t:1520; CHECK:       # %bb.0: # %entry1521; CHECK-NEXT:    or r3, r4, r31522; CHECK-NEXT:    lwa r3, 0(r3)1523; CHECK-NEXT:    blr1524entry:1525  %conv = zext i8 %off to i641526  %or = or i64 %conv, %ptr1527  %0 = inttoptr i64 %or to ptr1528  %1 = load atomic i32, ptr %0 monotonic, align 41529  %conv1 = sext i32 %1 to i641530  ret i64 %conv11531}1532 1533; Function Attrs: nofree norecurse nounwind uwtable willreturn1534define dso_local i64 @ld_not_disjoint16_int64_t_int32_t(i64 %ptr) {1535; CHECK-LABEL: ld_not_disjoint16_int64_t_int32_t:1536; CHECK:       # %bb.0: # %entry1537; CHECK-NEXT:    ori r3, r3, 61538; CHECK-NEXT:    lwa r3, 0(r3)1539; CHECK-NEXT:    blr1540entry:1541  %or = or i64 %ptr, 61542  %0 = inttoptr i64 %or to ptr1543  %1 = load atomic i32, ptr %0 monotonic, align 41544  %conv = sext i32 %1 to i641545  ret i64 %conv1546}1547 1548; Function Attrs: nofree norecurse nounwind uwtable willreturn1549define dso_local i64 @ld_disjoint_align16_int64_t_int32_t(i64 %ptr) {1550; CHECK-LABEL: ld_disjoint_align16_int64_t_int32_t:1551; CHECK:       # %bb.0: # %entry1552; CHECK-NEXT:    rldicr r3, r3, 0, 511553; CHECK-NEXT:    lwa r3, 24(r3)1554; CHECK-NEXT:    blr1555entry:1556  %and = and i64 %ptr, -40961557  %or = or i64 %and, 241558  %0 = inttoptr i64 %or to ptr1559  %1 = load atomic i32, ptr %0 monotonic, align 81560  %conv = sext i32 %1 to i641561  ret i64 %conv1562}1563 1564; Function Attrs: nofree norecurse nounwind uwtable willreturn1565define dso_local i64 @ld_not_disjoint32_int64_t_int32_t(i64 %ptr) {1566; CHECK-LABEL: ld_not_disjoint32_int64_t_int32_t:1567; CHECK:       # %bb.0: # %entry1568; CHECK-NEXT:    ori r3, r3, 344631569; CHECK-NEXT:    oris r3, r3, 11570; CHECK-NEXT:    lwa r3, 0(r3)1571; CHECK-NEXT:    blr1572entry:1573  %or = or i64 %ptr, 999991574  %0 = inttoptr i64 %or to ptr1575  %1 = load atomic i32, ptr %0 monotonic, align 41576  %conv = sext i32 %1 to i641577  ret i64 %conv1578}1579 1580; Function Attrs: nofree norecurse nounwind uwtable willreturn1581define dso_local i64 @ld_disjoint_align32_int64_t_int32_t(i64 %ptr) {1582; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_int32_t:1583; CHECK-P10:       # %bb.0: # %entry1584; CHECK-P10-NEXT:    lis r4, -152641585; CHECK-P10-NEXT:    and r3, r3, r41586; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 01587; CHECK-P10-NEXT:    extsw r3, r31588; CHECK-P10-NEXT:    blr1589;1590; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_int32_t:1591; CHECK-PREP10:       # %bb.0: # %entry1592; CHECK-PREP10-NEXT:    lis r4, -152641593; CHECK-PREP10-NEXT:    and r3, r3, r41594; CHECK-PREP10-NEXT:    lis r4, 152581595; CHECK-PREP10-NEXT:    ori r4, r4, 417121596; CHECK-PREP10-NEXT:    lwax r3, r3, r41597; CHECK-PREP10-NEXT:    blr1598entry:1599  %and = and i64 %ptr, -10003415041600  %or = or i64 %and, 9999900001601  %0 = inttoptr i64 %or to ptr1602  %1 = load atomic i32, ptr %0 monotonic, align 161603  %conv = sext i32 %1 to i641604  ret i64 %conv1605}1606 1607; Function Attrs: nofree norecurse nounwind uwtable willreturn1608define dso_local i64 @ld_not_disjoint64_int64_t_int32_t(i64 %ptr) {1609; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_int32_t:1610; CHECK-P10:       # %bb.0: # %entry1611; CHECK-P10-NEXT:    pli r4, 2321612; CHECK-P10-NEXT:    pli r5, 35675873291613; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01614; CHECK-P10-NEXT:    or r3, r3, r51615; CHECK-P10-NEXT:    lwa r3, 0(r3)1616; CHECK-P10-NEXT:    blr1617;1618; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_int32_t:1619; CHECK-PREP10:       # %bb.0: # %entry1620; CHECK-PREP10-NEXT:    li r4, 291621; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241622; CHECK-PREP10-NEXT:    oris r4, r4, 544371623; CHECK-PREP10-NEXT:    ori r4, r4, 40971624; CHECK-PREP10-NEXT:    or r3, r3, r41625; CHECK-PREP10-NEXT:    lwa r3, 0(r3)1626; CHECK-PREP10-NEXT:    blr1627entry:1628  %or = or i64 %ptr, 10000000000011629  %0 = inttoptr i64 %or to ptr1630  %1 = load atomic i32, ptr %0 monotonic, align 41631  %conv = sext i32 %1 to i641632  ret i64 %conv1633}1634 1635; Function Attrs: nofree norecurse nounwind uwtable willreturn1636define dso_local i64 @ld_disjoint_align64_int64_t_int32_t(i64 %ptr) {1637; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_int32_t:1638; CHECK-P10:       # %bb.0: # %entry1639; CHECK-P10-NEXT:    pli r4, 2441406251640; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231641; CHECK-P10-NEXT:    rldic r4, r4, 12, 241642; CHECK-P10-NEXT:    lwax r3, r3, r41643; CHECK-P10-NEXT:    blr1644;1645; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_int32_t:1646; CHECK-PREP10:       # %bb.0: # %entry1647; CHECK-PREP10-NEXT:    lis r4, 37251648; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231649; CHECK-PREP10-NEXT:    ori r4, r4, 190251650; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241651; CHECK-PREP10-NEXT:    lwax r3, r3, r41652; CHECK-PREP10-NEXT:    blr1653entry:1654  %and = and i64 %ptr, -10995116277761655  %or = or i64 %and, 10000000000001656  %0 = inttoptr i64 %or to ptr1657  %1 = load atomic i32, ptr %0 monotonic, align 40961658  %conv = sext i32 %1 to i641659  ret i64 %conv1660}1661 1662; Function Attrs: nofree norecurse nounwind uwtable willreturn1663define dso_local i64 @ld_cst_align16_int64_t_int32_t() {1664; CHECK-LABEL: ld_cst_align16_int64_t_int32_t:1665; CHECK:       # %bb.0: # %entry1666; CHECK-NEXT:    lwa r3, 4080(0)1667; CHECK-NEXT:    blr1668entry:1669  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 161670  %conv = sext i32 %0 to i641671  ret i64 %conv1672}1673 1674; Function Attrs: nofree norecurse nounwind uwtable willreturn1675define dso_local i64 @ld_cst_align32_int64_t_int32_t() {1676; CHECK-LABEL: ld_cst_align32_int64_t_int32_t:1677; CHECK:       # %bb.0: # %entry1678; CHECK-NEXT:    lis r3, 1531679; CHECK-NEXT:    lwa r3, -27108(r3)1680; CHECK-NEXT:    blr1681entry:1682  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41683  %conv = sext i32 %0 to i641684  ret i64 %conv1685}1686 1687; Function Attrs: nofree norecurse nounwind uwtable willreturn1688define dso_local i64 @ld_cst_align64_int64_t_int32_t() {1689; CHECK-P10-LABEL: ld_cst_align64_int64_t_int32_t:1690; CHECK-P10:       # %bb.0: # %entry1691; CHECK-P10-NEXT:    pli r3, 2441406251692; CHECK-P10-NEXT:    rldic r3, r3, 12, 241693; CHECK-P10-NEXT:    lwa r3, 0(r3)1694; CHECK-P10-NEXT:    blr1695;1696; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_int32_t:1697; CHECK-PREP10:       # %bb.0: # %entry1698; CHECK-PREP10-NEXT:    lis r3, 37251699; CHECK-PREP10-NEXT:    ori r3, r3, 190251700; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241701; CHECK-PREP10-NEXT:    lwa r3, 0(r3)1702; CHECK-PREP10-NEXT:    blr1703entry:1704  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961705  %conv = sext i32 %0 to i641706  ret i64 %conv1707}1708 1709; Function Attrs: nofree norecurse nounwind uwtable willreturn1710define dso_local i64 @ld_0_int64_t_uint64_t(i64 %ptr) {1711; CHECK-LABEL: ld_0_int64_t_uint64_t:1712; CHECK:       # %bb.0: # %entry1713; CHECK-NEXT:    ld r3, 0(r3)1714; CHECK-NEXT:    blr1715entry:1716  %0 = inttoptr i64 %ptr to ptr1717  %1 = load atomic i64, ptr %0 monotonic, align 81718  ret i64 %11719}1720 1721; Function Attrs: nofree norecurse nounwind uwtable willreturn1722define dso_local i64 @ld_align16_int64_t_uint64_t(ptr nocapture readonly %ptr) {1723; CHECK-LABEL: ld_align16_int64_t_uint64_t:1724; CHECK:       # %bb.0: # %entry1725; CHECK-NEXT:    ld r3, 8(r3)1726; CHECK-NEXT:    blr1727entry:1728  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81729  %0 = load atomic i64, ptr %add.ptr monotonic, align 81730  ret i64 %01731}1732 1733; Function Attrs: nofree norecurse nounwind uwtable willreturn1734define dso_local i64 @ld_align32_int64_t_uint64_t(ptr nocapture readonly %ptr) {1735; CHECK-P10-LABEL: ld_align32_int64_t_uint64_t:1736; CHECK-P10:       # %bb.0: # %entry1737; CHECK-P10-NEXT:    pld r3, 99999000(r3), 01738; CHECK-P10-NEXT:    blr1739;1740; CHECK-PREP10-LABEL: ld_align32_int64_t_uint64_t:1741; CHECK-PREP10:       # %bb.0: # %entry1742; CHECK-PREP10-NEXT:    lis r4, 15251743; CHECK-PREP10-NEXT:    ori r4, r4, 566001744; CHECK-PREP10-NEXT:    ldx r3, r3, r41745; CHECK-PREP10-NEXT:    blr1746entry:1747  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001748  %0 = load atomic i64, ptr %add.ptr monotonic, align 81749  ret i64 %01750}1751 1752; Function Attrs: nofree norecurse nounwind uwtable willreturn1753define dso_local i64 @ld_align64_int64_t_uint64_t(ptr nocapture readonly %ptr) {1754; CHECK-P10-LABEL: ld_align64_int64_t_uint64_t:1755; CHECK-P10:       # %bb.0: # %entry1756; CHECK-P10-NEXT:    pli r4, 2441406251757; CHECK-P10-NEXT:    rldic r4, r4, 12, 241758; CHECK-P10-NEXT:    ldx r3, r3, r41759; CHECK-P10-NEXT:    blr1760;1761; CHECK-PREP10-LABEL: ld_align64_int64_t_uint64_t:1762; CHECK-PREP10:       # %bb.0: # %entry1763; CHECK-PREP10-NEXT:    lis r4, 37251764; CHECK-PREP10-NEXT:    ori r4, r4, 190251765; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241766; CHECK-PREP10-NEXT:    ldx r3, r3, r41767; CHECK-PREP10-NEXT:    blr1768entry:1769  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001770  %0 = load atomic i64, ptr %add.ptr monotonic, align 81771  ret i64 %01772}1773 1774; Function Attrs: nofree norecurse nounwind uwtable willreturn1775define dso_local i64 @ld_reg_int64_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {1776; CHECK-LABEL: ld_reg_int64_t_uint64_t:1777; CHECK:       # %bb.0: # %entry1778; CHECK-NEXT:    ldx r3, r3, r41779; CHECK-NEXT:    blr1780entry:1781  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1782  %0 = load atomic i64, ptr %add.ptr monotonic, align 81783  ret i64 %01784}1785 1786; Function Attrs: nofree norecurse nounwind uwtable willreturn1787define dso_local i64 @ld_or_int64_t_uint64_t(i64 %ptr, i8 zeroext %off) {1788; CHECK-LABEL: ld_or_int64_t_uint64_t:1789; CHECK:       # %bb.0: # %entry1790; CHECK-NEXT:    or r3, r4, r31791; CHECK-NEXT:    ld r3, 0(r3)1792; CHECK-NEXT:    blr1793entry:1794  %conv = zext i8 %off to i641795  %or = or i64 %conv, %ptr1796  %0 = inttoptr i64 %or to ptr1797  %1 = load atomic i64, ptr %0 monotonic, align 81798  ret i64 %11799}1800 1801; Function Attrs: nofree norecurse nounwind uwtable willreturn1802define dso_local i64 @ld_not_disjoint16_int64_t_uint64_t(i64 %ptr) {1803; CHECK-LABEL: ld_not_disjoint16_int64_t_uint64_t:1804; CHECK:       # %bb.0: # %entry1805; CHECK-NEXT:    ori r3, r3, 61806; CHECK-NEXT:    ld r3, 0(r3)1807; CHECK-NEXT:    blr1808entry:1809  %or = or i64 %ptr, 61810  %0 = inttoptr i64 %or to ptr1811  %1 = load atomic i64, ptr %0 monotonic, align 81812  ret i64 %11813}1814 1815; Function Attrs: nofree norecurse nounwind uwtable willreturn1816define dso_local i64 @ld_disjoint_align16_int64_t_uint64_t(i64 %ptr) {1817; CHECK-LABEL: ld_disjoint_align16_int64_t_uint64_t:1818; CHECK:       # %bb.0: # %entry1819; CHECK-NEXT:    rldicr r3, r3, 0, 511820; CHECK-NEXT:    ld r3, 24(r3)1821; CHECK-NEXT:    blr1822entry:1823  %and = and i64 %ptr, -40961824  %or = or i64 %and, 241825  %0 = inttoptr i64 %or to ptr1826  %1 = load atomic i64, ptr %0 monotonic, align 81827  ret i64 %11828}1829 1830; Function Attrs: nofree norecurse nounwind uwtable willreturn1831define dso_local i64 @ld_not_disjoint32_int64_t_uint64_t(i64 %ptr) {1832; CHECK-LABEL: ld_not_disjoint32_int64_t_uint64_t:1833; CHECK:       # %bb.0: # %entry1834; CHECK-NEXT:    ori r3, r3, 344631835; CHECK-NEXT:    oris r3, r3, 11836; CHECK-NEXT:    ld r3, 0(r3)1837; CHECK-NEXT:    blr1838entry:1839  %or = or i64 %ptr, 999991840  %0 = inttoptr i64 %or to ptr1841  %1 = load atomic i64, ptr %0 monotonic, align 81842  ret i64 %11843}1844 1845; Function Attrs: nofree norecurse nounwind uwtable willreturn1846define dso_local i64 @ld_disjoint_align32_int64_t_uint64_t(i64 %ptr) {1847; CHECK-P10-LABEL: ld_disjoint_align32_int64_t_uint64_t:1848; CHECK-P10:       # %bb.0: # %entry1849; CHECK-P10-NEXT:    lis r4, -152641850; CHECK-P10-NEXT:    and r3, r3, r41851; CHECK-P10-NEXT:    pld r3, 999990000(r3), 01852; CHECK-P10-NEXT:    blr1853;1854; CHECK-PREP10-LABEL: ld_disjoint_align32_int64_t_uint64_t:1855; CHECK-PREP10:       # %bb.0: # %entry1856; CHECK-PREP10-NEXT:    lis r4, -152641857; CHECK-PREP10-NEXT:    and r3, r3, r41858; CHECK-PREP10-NEXT:    lis r4, 152581859; CHECK-PREP10-NEXT:    ori r4, r4, 417121860; CHECK-PREP10-NEXT:    ldx r3, r3, r41861; CHECK-PREP10-NEXT:    blr1862entry:1863  %and = and i64 %ptr, -10003415041864  %or = or i64 %and, 9999900001865  %0 = inttoptr i64 %or to ptr1866  %1 = load atomic i64, ptr %0 monotonic, align 161867  ret i64 %11868}1869 1870; Function Attrs: nofree norecurse nounwind uwtable willreturn1871define dso_local i64 @ld_not_disjoint64_int64_t_uint64_t(i64 %ptr) {1872; CHECK-P10-LABEL: ld_not_disjoint64_int64_t_uint64_t:1873; CHECK-P10:       # %bb.0: # %entry1874; CHECK-P10-NEXT:    pli r4, 2321875; CHECK-P10-NEXT:    pli r5, 35675873291876; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01877; CHECK-P10-NEXT:    or r3, r3, r51878; CHECK-P10-NEXT:    ld r3, 0(r3)1879; CHECK-P10-NEXT:    blr1880;1881; CHECK-PREP10-LABEL: ld_not_disjoint64_int64_t_uint64_t:1882; CHECK-PREP10:       # %bb.0: # %entry1883; CHECK-PREP10-NEXT:    li r4, 291884; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241885; CHECK-PREP10-NEXT:    oris r4, r4, 544371886; CHECK-PREP10-NEXT:    ori r4, r4, 40971887; CHECK-PREP10-NEXT:    or r3, r3, r41888; CHECK-PREP10-NEXT:    ld r3, 0(r3)1889; CHECK-PREP10-NEXT:    blr1890entry:1891  %or = or i64 %ptr, 10000000000011892  %0 = inttoptr i64 %or to ptr1893  %1 = load atomic i64, ptr %0 monotonic, align 81894  ret i64 %11895}1896 1897; Function Attrs: nofree norecurse nounwind uwtable willreturn1898define dso_local i64 @ld_disjoint_align64_int64_t_uint64_t(i64 %ptr) {1899; CHECK-P10-LABEL: ld_disjoint_align64_int64_t_uint64_t:1900; CHECK-P10:       # %bb.0: # %entry1901; CHECK-P10-NEXT:    pli r4, 2441406251902; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231903; CHECK-P10-NEXT:    rldic r4, r4, 12, 241904; CHECK-P10-NEXT:    ldx r3, r3, r41905; CHECK-P10-NEXT:    blr1906;1907; CHECK-PREP10-LABEL: ld_disjoint_align64_int64_t_uint64_t:1908; CHECK-PREP10:       # %bb.0: # %entry1909; CHECK-PREP10-NEXT:    lis r4, 37251910; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231911; CHECK-PREP10-NEXT:    ori r4, r4, 190251912; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241913; CHECK-PREP10-NEXT:    ldx r3, r3, r41914; CHECK-PREP10-NEXT:    blr1915entry:1916  %and = and i64 %ptr, -10995116277761917  %or = or i64 %and, 10000000000001918  %0 = inttoptr i64 %or to ptr1919  %1 = load atomic i64, ptr %0 monotonic, align 40961920  ret i64 %11921}1922 1923; Function Attrs: nofree norecurse nounwind uwtable willreturn1924define dso_local i64 @ld_cst_align16_int64_t_uint64_t() {1925; CHECK-LABEL: ld_cst_align16_int64_t_uint64_t:1926; CHECK:       # %bb.0: # %entry1927; CHECK-NEXT:    ld r3, 4080(0)1928; CHECK-NEXT:    blr1929entry:1930  %0 = load atomic i64, ptr inttoptr (i64 4080 to ptr) monotonic, align 161931  ret i64 %01932}1933 1934; Function Attrs: nofree norecurse nounwind uwtable willreturn1935define dso_local i64 @ld_cst_align32_int64_t_uint64_t() {1936; CHECK-LABEL: ld_cst_align32_int64_t_uint64_t:1937; CHECK:       # %bb.0: # %entry1938; CHECK-NEXT:    lis r3, 1531939; CHECK-NEXT:    ld r3, -27108(r3)1940; CHECK-NEXT:    blr1941entry:1942  %0 = load atomic i64, ptr inttoptr (i64 9999900 to ptr) monotonic, align 81943  ret i64 %01944}1945 1946; Function Attrs: nofree norecurse nounwind uwtable willreturn1947define dso_local i64 @ld_cst_align64_int64_t_uint64_t() {1948; CHECK-P10-LABEL: ld_cst_align64_int64_t_uint64_t:1949; CHECK-P10:       # %bb.0: # %entry1950; CHECK-P10-NEXT:    pli r3, 2441406251951; CHECK-P10-NEXT:    rldic r3, r3, 12, 241952; CHECK-P10-NEXT:    ld r3, 0(r3)1953; CHECK-P10-NEXT:    blr1954;1955; CHECK-PREP10-LABEL: ld_cst_align64_int64_t_uint64_t:1956; CHECK-PREP10:       # %bb.0: # %entry1957; CHECK-PREP10-NEXT:    lis r3, 37251958; CHECK-PREP10-NEXT:    ori r3, r3, 190251959; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241960; CHECK-PREP10-NEXT:    ld r3, 0(r3)1961; CHECK-PREP10-NEXT:    blr1962entry:1963  %0 = load atomic i64, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961964  ret i64 %01965}1966 1967; Function Attrs: nofree norecurse nounwind uwtable willreturn1968define dso_local i64 @ld_0_uint64_t_uint8_t(i64 %ptr) {1969; CHECK-LABEL: ld_0_uint64_t_uint8_t:1970; CHECK:       # %bb.0: # %entry1971; CHECK-NEXT:    lbz r3, 0(r3)1972; CHECK-NEXT:    blr1973entry:1974  %0 = inttoptr i64 %ptr to ptr1975  %1 = load atomic i8, ptr %0 monotonic, align 11976  %conv = zext i8 %1 to i641977  ret i64 %conv1978}1979 1980; Function Attrs: nofree norecurse nounwind uwtable willreturn1981define dso_local i64 @ld_align16_uint64_t_uint8_t(ptr nocapture readonly %ptr) {1982; CHECK-LABEL: ld_align16_uint64_t_uint8_t:1983; CHECK:       # %bb.0: # %entry1984; CHECK-NEXT:    lbz r3, 8(r3)1985; CHECK-NEXT:    blr1986entry:1987  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81988  %0 = load atomic i8, ptr %add.ptr monotonic, align 11989  %conv = zext i8 %0 to i641990  ret i64 %conv1991}1992 1993; Function Attrs: nofree norecurse nounwind uwtable willreturn1994define dso_local i64 @ld_align32_uint64_t_uint8_t(ptr nocapture readonly %ptr) {1995; CHECK-P10-LABEL: ld_align32_uint64_t_uint8_t:1996; CHECK-P10:       # %bb.0: # %entry1997; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 01998; CHECK-P10-NEXT:    clrldi r3, r3, 321999; CHECK-P10-NEXT:    blr2000;2001; CHECK-PREP10-LABEL: ld_align32_uint64_t_uint8_t:2002; CHECK-PREP10:       # %bb.0: # %entry2003; CHECK-PREP10-NEXT:    lis r4, 15252004; CHECK-PREP10-NEXT:    ori r4, r4, 566002005; CHECK-PREP10-NEXT:    lbzx r3, r3, r42006; CHECK-PREP10-NEXT:    blr2007entry:2008  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002009  %0 = load atomic i8, ptr %add.ptr monotonic, align 12010  %conv = zext i8 %0 to i642011  ret i64 %conv2012}2013 2014; Function Attrs: nofree norecurse nounwind uwtable willreturn2015define dso_local i64 @ld_align64_uint64_t_uint8_t(ptr nocapture readonly %ptr) {2016; CHECK-P10-LABEL: ld_align64_uint64_t_uint8_t:2017; CHECK-P10:       # %bb.0: # %entry2018; CHECK-P10-NEXT:    pli r4, 2441406252019; CHECK-P10-NEXT:    rldic r4, r4, 12, 242020; CHECK-P10-NEXT:    lbzx r3, r3, r42021; CHECK-P10-NEXT:    blr2022;2023; CHECK-PREP10-LABEL: ld_align64_uint64_t_uint8_t:2024; CHECK-PREP10:       # %bb.0: # %entry2025; CHECK-PREP10-NEXT:    lis r4, 37252026; CHECK-PREP10-NEXT:    ori r4, r4, 190252027; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242028; CHECK-PREP10-NEXT:    lbzx r3, r3, r42029; CHECK-PREP10-NEXT:    blr2030entry:2031  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002032  %0 = load atomic i8, ptr %add.ptr monotonic, align 12033  %conv = zext i8 %0 to i642034  ret i64 %conv2035}2036 2037; Function Attrs: nofree norecurse nounwind uwtable willreturn2038define dso_local i64 @ld_reg_uint64_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {2039; CHECK-LABEL: ld_reg_uint64_t_uint8_t:2040; CHECK:       # %bb.0: # %entry2041; CHECK-NEXT:    lbzx r3, r3, r42042; CHECK-NEXT:    blr2043entry:2044  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2045  %0 = load atomic i8, ptr %add.ptr monotonic, align 12046  %conv = zext i8 %0 to i642047  ret i64 %conv2048}2049 2050; Function Attrs: nofree norecurse nounwind uwtable willreturn2051define dso_local i64 @ld_or_uint64_t_uint8_t(i64 %ptr, i8 zeroext %off) {2052; CHECK-LABEL: ld_or_uint64_t_uint8_t:2053; CHECK:       # %bb.0: # %entry2054; CHECK-NEXT:    or r3, r4, r32055; CHECK-NEXT:    lbz r3, 0(r3)2056; CHECK-NEXT:    blr2057entry:2058  %conv = zext i8 %off to i642059  %or = or i64 %conv, %ptr2060  %0 = inttoptr i64 %or to ptr2061  %1 = load atomic i8, ptr %0 monotonic, align 12062  %conv1 = zext i8 %1 to i642063  ret i64 %conv12064}2065 2066; Function Attrs: nofree norecurse nounwind uwtable willreturn2067define dso_local i64 @ld_not_disjoint16_uint64_t_uint8_t(i64 %ptr) {2068; CHECK-LABEL: ld_not_disjoint16_uint64_t_uint8_t:2069; CHECK:       # %bb.0: # %entry2070; CHECK-NEXT:    ori r3, r3, 62071; CHECK-NEXT:    lbz r3, 0(r3)2072; CHECK-NEXT:    blr2073entry:2074  %or = or i64 %ptr, 62075  %0 = inttoptr i64 %or to ptr2076  %1 = load atomic i8, ptr %0 monotonic, align 12077  %conv = zext i8 %1 to i642078  ret i64 %conv2079}2080 2081; Function Attrs: nofree norecurse nounwind uwtable willreturn2082define dso_local i64 @ld_disjoint_align16_uint64_t_uint8_t(i64 %ptr) {2083; CHECK-LABEL: ld_disjoint_align16_uint64_t_uint8_t:2084; CHECK:       # %bb.0: # %entry2085; CHECK-NEXT:    rldicr r3, r3, 0, 512086; CHECK-NEXT:    lbz r3, 24(r3)2087; CHECK-NEXT:    blr2088entry:2089  %and = and i64 %ptr, -40962090  %or = or i64 %and, 242091  %0 = inttoptr i64 %or to ptr2092  %1 = load atomic i8, ptr %0 monotonic, align 82093  %conv = zext i8 %1 to i642094  ret i64 %conv2095}2096 2097; Function Attrs: nofree norecurse nounwind uwtable willreturn2098define dso_local i64 @ld_not_disjoint32_uint64_t_uint8_t(i64 %ptr) {2099; CHECK-LABEL: ld_not_disjoint32_uint64_t_uint8_t:2100; CHECK:       # %bb.0: # %entry2101; CHECK-NEXT:    ori r3, r3, 344632102; CHECK-NEXT:    oris r3, r3, 12103; CHECK-NEXT:    lbz r3, 0(r3)2104; CHECK-NEXT:    blr2105entry:2106  %or = or i64 %ptr, 999992107  %0 = inttoptr i64 %or to ptr2108  %1 = load atomic i8, ptr %0 monotonic, align 12109  %conv = zext i8 %1 to i642110  ret i64 %conv2111}2112 2113; Function Attrs: nofree norecurse nounwind uwtable willreturn2114define dso_local i64 @ld_disjoint_align32_uint64_t_uint8_t(i64 %ptr) {2115; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_uint8_t:2116; CHECK-P10:       # %bb.0: # %entry2117; CHECK-P10-NEXT:    lis r4, -152642118; CHECK-P10-NEXT:    and r3, r3, r42119; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 02120; CHECK-P10-NEXT:    clrldi r3, r3, 322121; CHECK-P10-NEXT:    blr2122;2123; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_uint8_t:2124; CHECK-PREP10:       # %bb.0: # %entry2125; CHECK-PREP10-NEXT:    lis r4, -152642126; CHECK-PREP10-NEXT:    and r3, r3, r42127; CHECK-PREP10-NEXT:    lis r4, 152582128; CHECK-PREP10-NEXT:    ori r4, r4, 417122129; CHECK-PREP10-NEXT:    lbzx r3, r3, r42130; CHECK-PREP10-NEXT:    blr2131entry:2132  %and = and i64 %ptr, -10003415042133  %or = or i64 %and, 9999900002134  %0 = inttoptr i64 %or to ptr2135  %1 = load atomic i8, ptr %0 monotonic, align 162136  %conv = zext i8 %1 to i642137  ret i64 %conv2138}2139 2140; Function Attrs: nofree norecurse nounwind uwtable willreturn2141define dso_local i64 @ld_not_disjoint64_uint64_t_uint8_t(i64 %ptr) {2142; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_uint8_t:2143; CHECK-P10:       # %bb.0: # %entry2144; CHECK-P10-NEXT:    pli r4, 2322145; CHECK-P10-NEXT:    pli r5, 35675873292146; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02147; CHECK-P10-NEXT:    or r3, r3, r52148; CHECK-P10-NEXT:    lbz r3, 0(r3)2149; CHECK-P10-NEXT:    blr2150;2151; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_uint8_t:2152; CHECK-PREP10:       # %bb.0: # %entry2153; CHECK-PREP10-NEXT:    li r4, 292154; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242155; CHECK-PREP10-NEXT:    oris r4, r4, 544372156; CHECK-PREP10-NEXT:    ori r4, r4, 40972157; CHECK-PREP10-NEXT:    or r3, r3, r42158; CHECK-PREP10-NEXT:    lbz r3, 0(r3)2159; CHECK-PREP10-NEXT:    blr2160entry:2161  %or = or i64 %ptr, 10000000000012162  %0 = inttoptr i64 %or to ptr2163  %1 = load atomic i8, ptr %0 monotonic, align 12164  %conv = zext i8 %1 to i642165  ret i64 %conv2166}2167 2168; Function Attrs: nofree norecurse nounwind uwtable willreturn2169define dso_local i64 @ld_disjoint_align64_uint64_t_uint8_t(i64 %ptr) {2170; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_uint8_t:2171; CHECK-P10:       # %bb.0: # %entry2172; CHECK-P10-NEXT:    pli r4, 2441406252173; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232174; CHECK-P10-NEXT:    rldic r4, r4, 12, 242175; CHECK-P10-NEXT:    lbzx r3, r3, r42176; CHECK-P10-NEXT:    blr2177;2178; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_uint8_t:2179; CHECK-PREP10:       # %bb.0: # %entry2180; CHECK-PREP10-NEXT:    lis r4, 37252181; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232182; CHECK-PREP10-NEXT:    ori r4, r4, 190252183; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242184; CHECK-PREP10-NEXT:    lbzx r3, r3, r42185; CHECK-PREP10-NEXT:    blr2186entry:2187  %and = and i64 %ptr, -10995116277762188  %or = or i64 %and, 10000000000002189  %0 = inttoptr i64 %or to ptr2190  %1 = load atomic i8, ptr %0 monotonic, align 40962191  %conv = zext i8 %1 to i642192  ret i64 %conv2193}2194 2195; Function Attrs: nofree norecurse nounwind uwtable willreturn2196define dso_local i64 @ld_cst_align16_uint64_t_uint8_t() {2197; CHECK-LABEL: ld_cst_align16_uint64_t_uint8_t:2198; CHECK:       # %bb.0: # %entry2199; CHECK-NEXT:    lbz r3, 4080(0)2200; CHECK-NEXT:    blr2201entry:2202  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 162203  %conv = zext i8 %0 to i642204  ret i64 %conv2205}2206 2207; Function Attrs: nofree norecurse nounwind uwtable willreturn2208define dso_local i64 @ld_cst_align32_uint64_t_uint8_t() {2209; CHECK-LABEL: ld_cst_align32_uint64_t_uint8_t:2210; CHECK:       # %bb.0: # %entry2211; CHECK-NEXT:    lis r3, 1532212; CHECK-NEXT:    lbz r3, -27108(r3)2213; CHECK-NEXT:    blr2214entry:2215  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42216  %conv = zext i8 %0 to i642217  ret i64 %conv2218}2219 2220; Function Attrs: nofree norecurse nounwind uwtable willreturn2221define dso_local i64 @ld_cst_align64_uint64_t_uint8_t() {2222; CHECK-P10-LABEL: ld_cst_align64_uint64_t_uint8_t:2223; CHECK-P10:       # %bb.0: # %entry2224; CHECK-P10-NEXT:    pli r3, 2441406252225; CHECK-P10-NEXT:    rldic r3, r3, 12, 242226; CHECK-P10-NEXT:    lbz r3, 0(r3)2227; CHECK-P10-NEXT:    blr2228;2229; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_uint8_t:2230; CHECK-PREP10:       # %bb.0: # %entry2231; CHECK-PREP10-NEXT:    lis r3, 37252232; CHECK-PREP10-NEXT:    ori r3, r3, 190252233; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242234; CHECK-PREP10-NEXT:    lbz r3, 0(r3)2235; CHECK-PREP10-NEXT:    blr2236entry:2237  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962238  %conv = zext i8 %0 to i642239  ret i64 %conv2240}2241 2242; Function Attrs: nofree norecurse nounwind uwtable willreturn2243define dso_local i64 @ld_0_uint64_t_int8_t(i64 %ptr) {2244; CHECK-LABEL: ld_0_uint64_t_int8_t:2245; CHECK:       # %bb.0: # %entry2246; CHECK-NEXT:    lbz r3, 0(r3)2247; CHECK-NEXT:    extsb r3, r32248; CHECK-NEXT:    blr2249entry:2250  %0 = inttoptr i64 %ptr to ptr2251  %1 = load atomic i8, ptr %0 monotonic, align 12252  %conv = sext i8 %1 to i642253  ret i64 %conv2254}2255 2256; Function Attrs: nofree norecurse nounwind uwtable willreturn2257define dso_local i64 @ld_align16_uint64_t_int8_t(ptr nocapture readonly %ptr) {2258; CHECK-LABEL: ld_align16_uint64_t_int8_t:2259; CHECK:       # %bb.0: # %entry2260; CHECK-NEXT:    lbz r3, 8(r3)2261; CHECK-NEXT:    extsb r3, r32262; CHECK-NEXT:    blr2263entry:2264  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82265  %0 = load atomic i8, ptr %add.ptr monotonic, align 12266  %conv = sext i8 %0 to i642267  ret i64 %conv2268}2269 2270; Function Attrs: nofree norecurse nounwind uwtable willreturn2271define dso_local i64 @ld_align32_uint64_t_int8_t(ptr nocapture readonly %ptr) {2272; CHECK-P10-LABEL: ld_align32_uint64_t_int8_t:2273; CHECK-P10:       # %bb.0: # %entry2274; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 02275; CHECK-P10-NEXT:    extsb r3, r32276; CHECK-P10-NEXT:    blr2277;2278; CHECK-PREP10-LABEL: ld_align32_uint64_t_int8_t:2279; CHECK-PREP10:       # %bb.0: # %entry2280; CHECK-PREP10-NEXT:    lis r4, 15252281; CHECK-PREP10-NEXT:    ori r4, r4, 566002282; CHECK-PREP10-NEXT:    lbzx r3, r3, r42283; CHECK-PREP10-NEXT:    extsb r3, r32284; CHECK-PREP10-NEXT:    blr2285entry:2286  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002287  %0 = load atomic i8, ptr %add.ptr monotonic, align 12288  %conv = sext i8 %0 to i642289  ret i64 %conv2290}2291 2292; Function Attrs: nofree norecurse nounwind uwtable willreturn2293define dso_local i64 @ld_align64_uint64_t_int8_t(ptr nocapture readonly %ptr) {2294; CHECK-P10-LABEL: ld_align64_uint64_t_int8_t:2295; CHECK-P10:       # %bb.0: # %entry2296; CHECK-P10-NEXT:    pli r4, 2441406252297; CHECK-P10-NEXT:    rldic r4, r4, 12, 242298; CHECK-P10-NEXT:    lbzx r3, r3, r42299; CHECK-P10-NEXT:    extsb r3, r32300; CHECK-P10-NEXT:    blr2301;2302; CHECK-PREP10-LABEL: ld_align64_uint64_t_int8_t:2303; CHECK-PREP10:       # %bb.0: # %entry2304; CHECK-PREP10-NEXT:    lis r4, 37252305; CHECK-PREP10-NEXT:    ori r4, r4, 190252306; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242307; CHECK-PREP10-NEXT:    lbzx r3, r3, r42308; CHECK-PREP10-NEXT:    extsb r3, r32309; CHECK-PREP10-NEXT:    blr2310entry:2311  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002312  %0 = load atomic i8, ptr %add.ptr monotonic, align 12313  %conv = sext i8 %0 to i642314  ret i64 %conv2315}2316 2317; Function Attrs: nofree norecurse nounwind uwtable willreturn2318define dso_local i64 @ld_reg_uint64_t_int8_t(ptr nocapture readonly %ptr, i64 %off) {2319; CHECK-LABEL: ld_reg_uint64_t_int8_t:2320; CHECK:       # %bb.0: # %entry2321; CHECK-NEXT:    lbzx r3, r3, r42322; CHECK-NEXT:    extsb r3, r32323; CHECK-NEXT:    blr2324entry:2325  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2326  %0 = load atomic i8, ptr %add.ptr monotonic, align 12327  %conv = sext i8 %0 to i642328  ret i64 %conv2329}2330 2331; Function Attrs: nofree norecurse nounwind uwtable willreturn2332define dso_local i64 @ld_or_uint64_t_int8_t(i64 %ptr, i8 zeroext %off) {2333; CHECK-LABEL: ld_or_uint64_t_int8_t:2334; CHECK:       # %bb.0: # %entry2335; CHECK-NEXT:    or r3, r4, r32336; CHECK-NEXT:    lbz r3, 0(r3)2337; CHECK-NEXT:    extsb r3, r32338; CHECK-NEXT:    blr2339entry:2340  %conv = zext i8 %off to i642341  %or = or i64 %conv, %ptr2342  %0 = inttoptr i64 %or to ptr2343  %1 = load atomic i8, ptr %0 monotonic, align 12344  %conv1 = sext i8 %1 to i642345  ret i64 %conv12346}2347 2348; Function Attrs: nofree norecurse nounwind uwtable willreturn2349define dso_local i64 @ld_not_disjoint16_uint64_t_int8_t(i64 %ptr) {2350; CHECK-LABEL: ld_not_disjoint16_uint64_t_int8_t:2351; CHECK:       # %bb.0: # %entry2352; CHECK-NEXT:    ori r3, r3, 62353; CHECK-NEXT:    lbz r3, 0(r3)2354; CHECK-NEXT:    extsb r3, r32355; CHECK-NEXT:    blr2356entry:2357  %or = or i64 %ptr, 62358  %0 = inttoptr i64 %or to ptr2359  %1 = load atomic i8, ptr %0 monotonic, align 12360  %conv = sext i8 %1 to i642361  ret i64 %conv2362}2363 2364; Function Attrs: nofree norecurse nounwind uwtable willreturn2365define dso_local i64 @ld_disjoint_align16_uint64_t_int8_t(i64 %ptr) {2366; CHECK-LABEL: ld_disjoint_align16_uint64_t_int8_t:2367; CHECK:       # %bb.0: # %entry2368; CHECK-NEXT:    rldicr r3, r3, 0, 512369; CHECK-NEXT:    lbz r3, 24(r3)2370; CHECK-NEXT:    extsb r3, r32371; CHECK-NEXT:    blr2372entry:2373  %and = and i64 %ptr, -40962374  %or = or i64 %and, 242375  %0 = inttoptr i64 %or to ptr2376  %1 = load atomic i8, ptr %0 monotonic, align 82377  %conv = sext i8 %1 to i642378  ret i64 %conv2379}2380 2381; Function Attrs: nofree norecurse nounwind uwtable willreturn2382define dso_local i64 @ld_not_disjoint32_uint64_t_int8_t(i64 %ptr) {2383; CHECK-LABEL: ld_not_disjoint32_uint64_t_int8_t:2384; CHECK:       # %bb.0: # %entry2385; CHECK-NEXT:    ori r3, r3, 344632386; CHECK-NEXT:    oris r3, r3, 12387; CHECK-NEXT:    lbz r3, 0(r3)2388; CHECK-NEXT:    extsb r3, r32389; CHECK-NEXT:    blr2390entry:2391  %or = or i64 %ptr, 999992392  %0 = inttoptr i64 %or to ptr2393  %1 = load atomic i8, ptr %0 monotonic, align 12394  %conv = sext i8 %1 to i642395  ret i64 %conv2396}2397 2398; Function Attrs: nofree norecurse nounwind uwtable willreturn2399define dso_local i64 @ld_disjoint_align32_uint64_t_int8_t(i64 %ptr) {2400; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_int8_t:2401; CHECK-P10:       # %bb.0: # %entry2402; CHECK-P10-NEXT:    lis r4, -152642403; CHECK-P10-NEXT:    and r3, r3, r42404; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 02405; CHECK-P10-NEXT:    extsb r3, r32406; CHECK-P10-NEXT:    blr2407;2408; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_int8_t:2409; CHECK-PREP10:       # %bb.0: # %entry2410; CHECK-PREP10-NEXT:    lis r4, -152642411; CHECK-PREP10-NEXT:    and r3, r3, r42412; CHECK-PREP10-NEXT:    lis r4, 152582413; CHECK-PREP10-NEXT:    ori r4, r4, 417122414; CHECK-PREP10-NEXT:    lbzx r3, r3, r42415; CHECK-PREP10-NEXT:    extsb r3, r32416; CHECK-PREP10-NEXT:    blr2417entry:2418  %and = and i64 %ptr, -10003415042419  %or = or i64 %and, 9999900002420  %0 = inttoptr i64 %or to ptr2421  %1 = load atomic i8, ptr %0 monotonic, align 162422  %conv = sext i8 %1 to i642423  ret i64 %conv2424}2425 2426; Function Attrs: nofree norecurse nounwind uwtable willreturn2427define dso_local i64 @ld_not_disjoint64_uint64_t_int8_t(i64 %ptr) {2428; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_int8_t:2429; CHECK-P10:       # %bb.0: # %entry2430; CHECK-P10-NEXT:    pli r4, 2322431; CHECK-P10-NEXT:    pli r5, 35675873292432; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02433; CHECK-P10-NEXT:    or r3, r3, r52434; CHECK-P10-NEXT:    lbz r3, 0(r3)2435; CHECK-P10-NEXT:    extsb r3, r32436; CHECK-P10-NEXT:    blr2437;2438; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_int8_t:2439; CHECK-PREP10:       # %bb.0: # %entry2440; CHECK-PREP10-NEXT:    li r4, 292441; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242442; CHECK-PREP10-NEXT:    oris r4, r4, 544372443; CHECK-PREP10-NEXT:    ori r4, r4, 40972444; CHECK-PREP10-NEXT:    or r3, r3, r42445; CHECK-PREP10-NEXT:    lbz r3, 0(r3)2446; CHECK-PREP10-NEXT:    extsb r3, r32447; CHECK-PREP10-NEXT:    blr2448entry:2449  %or = or i64 %ptr, 10000000000012450  %0 = inttoptr i64 %or to ptr2451  %1 = load atomic i8, ptr %0 monotonic, align 12452  %conv = sext i8 %1 to i642453  ret i64 %conv2454}2455 2456; Function Attrs: nofree norecurse nounwind uwtable willreturn2457define dso_local i64 @ld_disjoint_align64_uint64_t_int8_t(i64 %ptr) {2458; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_int8_t:2459; CHECK-P10:       # %bb.0: # %entry2460; CHECK-P10-NEXT:    pli r4, 2441406252461; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232462; CHECK-P10-NEXT:    rldic r4, r4, 12, 242463; CHECK-P10-NEXT:    lbzx r3, r3, r42464; CHECK-P10-NEXT:    extsb r3, r32465; CHECK-P10-NEXT:    blr2466;2467; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_int8_t:2468; CHECK-PREP10:       # %bb.0: # %entry2469; CHECK-PREP10-NEXT:    lis r4, 37252470; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232471; CHECK-PREP10-NEXT:    ori r4, r4, 190252472; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242473; CHECK-PREP10-NEXT:    lbzx r3, r3, r42474; CHECK-PREP10-NEXT:    extsb r3, r32475; CHECK-PREP10-NEXT:    blr2476entry:2477  %and = and i64 %ptr, -10995116277762478  %or = or i64 %and, 10000000000002479  %0 = inttoptr i64 %or to ptr2480  %1 = load atomic i8, ptr %0 monotonic, align 40962481  %conv = sext i8 %1 to i642482  ret i64 %conv2483}2484 2485; Function Attrs: nofree norecurse nounwind uwtable willreturn2486define dso_local i64 @ld_cst_align16_uint64_t_int8_t() {2487; CHECK-LABEL: ld_cst_align16_uint64_t_int8_t:2488; CHECK:       # %bb.0: # %entry2489; CHECK-NEXT:    lbz r3, 4080(0)2490; CHECK-NEXT:    extsb r3, r32491; CHECK-NEXT:    blr2492entry:2493  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 162494  %conv = sext i8 %0 to i642495  ret i64 %conv2496}2497 2498; Function Attrs: nofree norecurse nounwind uwtable willreturn2499define dso_local i64 @ld_cst_align32_uint64_t_int8_t() {2500; CHECK-LABEL: ld_cst_align32_uint64_t_int8_t:2501; CHECK:       # %bb.0: # %entry2502; CHECK-NEXT:    lis r3, 1532503; CHECK-NEXT:    lbz r3, -27108(r3)2504; CHECK-NEXT:    extsb r3, r32505; CHECK-NEXT:    blr2506entry:2507  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42508  %conv = sext i8 %0 to i642509  ret i64 %conv2510}2511 2512; Function Attrs: nofree norecurse nounwind uwtable willreturn2513define dso_local i64 @ld_cst_align64_uint64_t_int8_t() {2514; CHECK-P10-LABEL: ld_cst_align64_uint64_t_int8_t:2515; CHECK-P10:       # %bb.0: # %entry2516; CHECK-P10-NEXT:    pli r3, 2441406252517; CHECK-P10-NEXT:    rldic r3, r3, 12, 242518; CHECK-P10-NEXT:    lbz r3, 0(r3)2519; CHECK-P10-NEXT:    extsb r3, r32520; CHECK-P10-NEXT:    blr2521;2522; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_int8_t:2523; CHECK-PREP10:       # %bb.0: # %entry2524; CHECK-PREP10-NEXT:    lis r3, 37252525; CHECK-PREP10-NEXT:    ori r3, r3, 190252526; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242527; CHECK-PREP10-NEXT:    lbz r3, 0(r3)2528; CHECK-PREP10-NEXT:    extsb r3, r32529; CHECK-PREP10-NEXT:    blr2530entry:2531  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962532  %conv = sext i8 %0 to i642533  ret i64 %conv2534}2535 2536; Function Attrs: nofree norecurse nounwind uwtable willreturn2537define dso_local i64 @ld_0_uint64_t_uint16_t(i64 %ptr) {2538; CHECK-LABEL: ld_0_uint64_t_uint16_t:2539; CHECK:       # %bb.0: # %entry2540; CHECK-NEXT:    lhz r3, 0(r3)2541; CHECK-NEXT:    blr2542entry:2543  %0 = inttoptr i64 %ptr to ptr2544  %1 = load atomic i16, ptr %0 monotonic, align 22545  %conv = zext i16 %1 to i642546  ret i64 %conv2547}2548 2549; Function Attrs: nofree norecurse nounwind uwtable willreturn2550define dso_local i64 @ld_align16_uint64_t_uint16_t(ptr nocapture readonly %ptr) {2551; CHECK-LABEL: ld_align16_uint64_t_uint16_t:2552; CHECK:       # %bb.0: # %entry2553; CHECK-NEXT:    lhz r3, 8(r3)2554; CHECK-NEXT:    blr2555entry:2556  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82557  %0 = load atomic i16, ptr %add.ptr monotonic, align 22558  %conv = zext i16 %0 to i642559  ret i64 %conv2560}2561 2562; Function Attrs: nofree norecurse nounwind uwtable willreturn2563define dso_local i64 @ld_align32_uint64_t_uint16_t(ptr nocapture readonly %ptr) {2564; CHECK-P10-LABEL: ld_align32_uint64_t_uint16_t:2565; CHECK-P10:       # %bb.0: # %entry2566; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 02567; CHECK-P10-NEXT:    clrldi r3, r3, 322568; CHECK-P10-NEXT:    blr2569;2570; CHECK-PREP10-LABEL: ld_align32_uint64_t_uint16_t:2571; CHECK-PREP10:       # %bb.0: # %entry2572; CHECK-PREP10-NEXT:    lis r4, 15252573; CHECK-PREP10-NEXT:    ori r4, r4, 566002574; CHECK-PREP10-NEXT:    lhzx r3, r3, r42575; CHECK-PREP10-NEXT:    blr2576entry:2577  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002578  %0 = load atomic i16, ptr %add.ptr monotonic, align 22579  %conv = zext i16 %0 to i642580  ret i64 %conv2581}2582 2583; Function Attrs: nofree norecurse nounwind uwtable willreturn2584define dso_local i64 @ld_align64_uint64_t_uint16_t(ptr nocapture readonly %ptr) {2585; CHECK-P10-LABEL: ld_align64_uint64_t_uint16_t:2586; CHECK-P10:       # %bb.0: # %entry2587; CHECK-P10-NEXT:    pli r4, 2441406252588; CHECK-P10-NEXT:    rldic r4, r4, 12, 242589; CHECK-P10-NEXT:    lhzx r3, r3, r42590; CHECK-P10-NEXT:    blr2591;2592; CHECK-PREP10-LABEL: ld_align64_uint64_t_uint16_t:2593; CHECK-PREP10:       # %bb.0: # %entry2594; CHECK-PREP10-NEXT:    lis r4, 37252595; CHECK-PREP10-NEXT:    ori r4, r4, 190252596; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242597; CHECK-PREP10-NEXT:    lhzx r3, r3, r42598; CHECK-PREP10-NEXT:    blr2599entry:2600  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002601  %0 = load atomic i16, ptr %add.ptr monotonic, align 22602  %conv = zext i16 %0 to i642603  ret i64 %conv2604}2605 2606; Function Attrs: nofree norecurse nounwind uwtable willreturn2607define dso_local i64 @ld_reg_uint64_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {2608; CHECK-LABEL: ld_reg_uint64_t_uint16_t:2609; CHECK:       # %bb.0: # %entry2610; CHECK-NEXT:    lhzx r3, r3, r42611; CHECK-NEXT:    blr2612entry:2613  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2614  %0 = load atomic i16, ptr %add.ptr monotonic, align 22615  %conv = zext i16 %0 to i642616  ret i64 %conv2617}2618 2619; Function Attrs: nofree norecurse nounwind uwtable willreturn2620define dso_local i64 @ld_or_uint64_t_uint16_t(i64 %ptr, i8 zeroext %off) {2621; CHECK-LABEL: ld_or_uint64_t_uint16_t:2622; CHECK:       # %bb.0: # %entry2623; CHECK-NEXT:    or r3, r4, r32624; CHECK-NEXT:    lhz r3, 0(r3)2625; CHECK-NEXT:    blr2626entry:2627  %conv = zext i8 %off to i642628  %or = or i64 %conv, %ptr2629  %0 = inttoptr i64 %or to ptr2630  %1 = load atomic i16, ptr %0 monotonic, align 22631  %conv1 = zext i16 %1 to i642632  ret i64 %conv12633}2634 2635; Function Attrs: nofree norecurse nounwind uwtable willreturn2636define dso_local i64 @ld_not_disjoint16_uint64_t_uint16_t(i64 %ptr) {2637; CHECK-LABEL: ld_not_disjoint16_uint64_t_uint16_t:2638; CHECK:       # %bb.0: # %entry2639; CHECK-NEXT:    ori r3, r3, 62640; CHECK-NEXT:    lhz r3, 0(r3)2641; CHECK-NEXT:    blr2642entry:2643  %or = or i64 %ptr, 62644  %0 = inttoptr i64 %or to ptr2645  %1 = load atomic i16, ptr %0 monotonic, align 22646  %conv = zext i16 %1 to i642647  ret i64 %conv2648}2649 2650; Function Attrs: nofree norecurse nounwind uwtable willreturn2651define dso_local i64 @ld_disjoint_align16_uint64_t_uint16_t(i64 %ptr) {2652; CHECK-LABEL: ld_disjoint_align16_uint64_t_uint16_t:2653; CHECK:       # %bb.0: # %entry2654; CHECK-NEXT:    rldicr r3, r3, 0, 512655; CHECK-NEXT:    lhz r3, 24(r3)2656; CHECK-NEXT:    blr2657entry:2658  %and = and i64 %ptr, -40962659  %or = or i64 %and, 242660  %0 = inttoptr i64 %or to ptr2661  %1 = load atomic i16, ptr %0 monotonic, align 82662  %conv = zext i16 %1 to i642663  ret i64 %conv2664}2665 2666; Function Attrs: nofree norecurse nounwind uwtable willreturn2667define dso_local i64 @ld_not_disjoint32_uint64_t_uint16_t(i64 %ptr) {2668; CHECK-LABEL: ld_not_disjoint32_uint64_t_uint16_t:2669; CHECK:       # %bb.0: # %entry2670; CHECK-NEXT:    ori r3, r3, 344632671; CHECK-NEXT:    oris r3, r3, 12672; CHECK-NEXT:    lhz r3, 0(r3)2673; CHECK-NEXT:    blr2674entry:2675  %or = or i64 %ptr, 999992676  %0 = inttoptr i64 %or to ptr2677  %1 = load atomic i16, ptr %0 monotonic, align 22678  %conv = zext i16 %1 to i642679  ret i64 %conv2680}2681 2682; Function Attrs: nofree norecurse nounwind uwtable willreturn2683define dso_local i64 @ld_disjoint_align32_uint64_t_uint16_t(i64 %ptr) {2684; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_uint16_t:2685; CHECK-P10:       # %bb.0: # %entry2686; CHECK-P10-NEXT:    lis r4, -152642687; CHECK-P10-NEXT:    and r3, r3, r42688; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 02689; CHECK-P10-NEXT:    clrldi r3, r3, 322690; CHECK-P10-NEXT:    blr2691;2692; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_uint16_t:2693; CHECK-PREP10:       # %bb.0: # %entry2694; CHECK-PREP10-NEXT:    lis r4, -152642695; CHECK-PREP10-NEXT:    and r3, r3, r42696; CHECK-PREP10-NEXT:    lis r4, 152582697; CHECK-PREP10-NEXT:    ori r4, r4, 417122698; CHECK-PREP10-NEXT:    lhzx r3, r3, r42699; CHECK-PREP10-NEXT:    blr2700entry:2701  %and = and i64 %ptr, -10003415042702  %or = or i64 %and, 9999900002703  %0 = inttoptr i64 %or to ptr2704  %1 = load atomic i16, ptr %0 monotonic, align 162705  %conv = zext i16 %1 to i642706  ret i64 %conv2707}2708 2709; Function Attrs: nofree norecurse nounwind uwtable willreturn2710define dso_local i64 @ld_not_disjoint64_uint64_t_uint16_t(i64 %ptr) {2711; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_uint16_t:2712; CHECK-P10:       # %bb.0: # %entry2713; CHECK-P10-NEXT:    pli r4, 2322714; CHECK-P10-NEXT:    pli r5, 35675873292715; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02716; CHECK-P10-NEXT:    or r3, r3, r52717; CHECK-P10-NEXT:    lhz r3, 0(r3)2718; CHECK-P10-NEXT:    blr2719;2720; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_uint16_t:2721; CHECK-PREP10:       # %bb.0: # %entry2722; CHECK-PREP10-NEXT:    li r4, 292723; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242724; CHECK-PREP10-NEXT:    oris r4, r4, 544372725; CHECK-PREP10-NEXT:    ori r4, r4, 40972726; CHECK-PREP10-NEXT:    or r3, r3, r42727; CHECK-PREP10-NEXT:    lhz r3, 0(r3)2728; CHECK-PREP10-NEXT:    blr2729entry:2730  %or = or i64 %ptr, 10000000000012731  %0 = inttoptr i64 %or to ptr2732  %1 = load atomic i16, ptr %0 monotonic, align 22733  %conv = zext i16 %1 to i642734  ret i64 %conv2735}2736 2737; Function Attrs: nofree norecurse nounwind uwtable willreturn2738define dso_local i64 @ld_disjoint_align64_uint64_t_uint16_t(i64 %ptr) {2739; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_uint16_t:2740; CHECK-P10:       # %bb.0: # %entry2741; CHECK-P10-NEXT:    pli r4, 2441406252742; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232743; CHECK-P10-NEXT:    rldic r4, r4, 12, 242744; CHECK-P10-NEXT:    lhzx r3, r3, r42745; CHECK-P10-NEXT:    blr2746;2747; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_uint16_t:2748; CHECK-PREP10:       # %bb.0: # %entry2749; CHECK-PREP10-NEXT:    lis r4, 37252750; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232751; CHECK-PREP10-NEXT:    ori r4, r4, 190252752; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242753; CHECK-PREP10-NEXT:    lhzx r3, r3, r42754; CHECK-PREP10-NEXT:    blr2755entry:2756  %and = and i64 %ptr, -10995116277762757  %or = or i64 %and, 10000000000002758  %0 = inttoptr i64 %or to ptr2759  %1 = load atomic i16, ptr %0 monotonic, align 40962760  %conv = zext i16 %1 to i642761  ret i64 %conv2762}2763 2764; Function Attrs: nofree norecurse nounwind uwtable willreturn2765define dso_local i64 @ld_cst_align16_uint64_t_uint16_t() {2766; CHECK-LABEL: ld_cst_align16_uint64_t_uint16_t:2767; CHECK:       # %bb.0: # %entry2768; CHECK-NEXT:    lhz r3, 4080(0)2769; CHECK-NEXT:    blr2770entry:2771  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 162772  %conv = zext i16 %0 to i642773  ret i64 %conv2774}2775 2776; Function Attrs: nofree norecurse nounwind uwtable willreturn2777define dso_local i64 @ld_cst_align32_uint64_t_uint16_t() {2778; CHECK-LABEL: ld_cst_align32_uint64_t_uint16_t:2779; CHECK:       # %bb.0: # %entry2780; CHECK-NEXT:    lis r3, 1532781; CHECK-NEXT:    lhz r3, -27108(r3)2782; CHECK-NEXT:    blr2783entry:2784  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42785  %conv = zext i16 %0 to i642786  ret i64 %conv2787}2788 2789; Function Attrs: nofree norecurse nounwind uwtable willreturn2790define dso_local i64 @ld_cst_align64_uint64_t_uint16_t() {2791; CHECK-P10-LABEL: ld_cst_align64_uint64_t_uint16_t:2792; CHECK-P10:       # %bb.0: # %entry2793; CHECK-P10-NEXT:    pli r3, 2441406252794; CHECK-P10-NEXT:    rldic r3, r3, 12, 242795; CHECK-P10-NEXT:    lhz r3, 0(r3)2796; CHECK-P10-NEXT:    blr2797;2798; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_uint16_t:2799; CHECK-PREP10:       # %bb.0: # %entry2800; CHECK-PREP10-NEXT:    lis r3, 37252801; CHECK-PREP10-NEXT:    ori r3, r3, 190252802; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242803; CHECK-PREP10-NEXT:    lhz r3, 0(r3)2804; CHECK-PREP10-NEXT:    blr2805entry:2806  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962807  %conv = zext i16 %0 to i642808  ret i64 %conv2809}2810 2811; Function Attrs: nofree norecurse nounwind uwtable willreturn2812define dso_local i64 @ld_0_uint64_t_int16_t(i64 %ptr) {2813; CHECK-LABEL: ld_0_uint64_t_int16_t:2814; CHECK:       # %bb.0: # %entry2815; CHECK-NEXT:    lhz r3, 0(r3)2816; CHECK-NEXT:    extsh r3, r32817; CHECK-NEXT:    blr2818entry:2819  %0 = inttoptr i64 %ptr to ptr2820  %1 = load atomic i16, ptr %0 monotonic, align 22821  %conv = sext i16 %1 to i642822  ret i64 %conv2823}2824 2825; Function Attrs: nofree norecurse nounwind uwtable willreturn2826define dso_local i64 @ld_align16_uint64_t_int16_t(ptr nocapture readonly %ptr) {2827; CHECK-LABEL: ld_align16_uint64_t_int16_t:2828; CHECK:       # %bb.0: # %entry2829; CHECK-NEXT:    lhz r3, 8(r3)2830; CHECK-NEXT:    extsh r3, r32831; CHECK-NEXT:    blr2832entry:2833  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82834  %0 = load atomic i16, ptr %add.ptr monotonic, align 22835  %conv = sext i16 %0 to i642836  ret i64 %conv2837}2838 2839; Function Attrs: nofree norecurse nounwind uwtable willreturn2840define dso_local i64 @ld_align32_uint64_t_int16_t(ptr nocapture readonly %ptr) {2841; CHECK-P10-LABEL: ld_align32_uint64_t_int16_t:2842; CHECK-P10:       # %bb.0: # %entry2843; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 02844; CHECK-P10-NEXT:    extsh r3, r32845; CHECK-P10-NEXT:    blr2846;2847; CHECK-PREP10-LABEL: ld_align32_uint64_t_int16_t:2848; CHECK-PREP10:       # %bb.0: # %entry2849; CHECK-PREP10-NEXT:    lis r4, 15252850; CHECK-PREP10-NEXT:    ori r4, r4, 566002851; CHECK-PREP10-NEXT:    lhzx r3, r3, r42852; CHECK-PREP10-NEXT:    extsh r3, r32853; CHECK-PREP10-NEXT:    blr2854entry:2855  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002856  %0 = load atomic i16, ptr %add.ptr monotonic, align 22857  %conv = sext i16 %0 to i642858  ret i64 %conv2859}2860 2861; Function Attrs: nofree norecurse nounwind uwtable willreturn2862define dso_local i64 @ld_align64_uint64_t_int16_t(ptr nocapture readonly %ptr) {2863; CHECK-P10-LABEL: ld_align64_uint64_t_int16_t:2864; CHECK-P10:       # %bb.0: # %entry2865; CHECK-P10-NEXT:    pli r4, 2441406252866; CHECK-P10-NEXT:    rldic r4, r4, 12, 242867; CHECK-P10-NEXT:    lhzx r3, r3, r42868; CHECK-P10-NEXT:    extsh r3, r32869; CHECK-P10-NEXT:    blr2870;2871; CHECK-PREP10-LABEL: ld_align64_uint64_t_int16_t:2872; CHECK-PREP10:       # %bb.0: # %entry2873; CHECK-PREP10-NEXT:    lis r4, 37252874; CHECK-PREP10-NEXT:    ori r4, r4, 190252875; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242876; CHECK-PREP10-NEXT:    lhzx r3, r3, r42877; CHECK-PREP10-NEXT:    extsh r3, r32878; CHECK-PREP10-NEXT:    blr2879entry:2880  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002881  %0 = load atomic i16, ptr %add.ptr monotonic, align 22882  %conv = sext i16 %0 to i642883  ret i64 %conv2884}2885 2886; Function Attrs: nofree norecurse nounwind uwtable willreturn2887define dso_local i64 @ld_reg_uint64_t_int16_t(ptr nocapture readonly %ptr, i64 %off) {2888; CHECK-LABEL: ld_reg_uint64_t_int16_t:2889; CHECK:       # %bb.0: # %entry2890; CHECK-NEXT:    lhzx r3, r3, r42891; CHECK-NEXT:    extsh r3, r32892; CHECK-NEXT:    blr2893entry:2894  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2895  %0 = load atomic i16, ptr %add.ptr monotonic, align 22896  %conv = sext i16 %0 to i642897  ret i64 %conv2898}2899 2900; Function Attrs: nofree norecurse nounwind uwtable willreturn2901define dso_local i64 @ld_or_uint64_t_int16_t(i64 %ptr, i8 zeroext %off) {2902; CHECK-LABEL: ld_or_uint64_t_int16_t:2903; CHECK:       # %bb.0: # %entry2904; CHECK-NEXT:    or r3, r4, r32905; CHECK-NEXT:    lhz r3, 0(r3)2906; CHECK-NEXT:    extsh r3, r32907; CHECK-NEXT:    blr2908entry:2909  %conv = zext i8 %off to i642910  %or = or i64 %conv, %ptr2911  %0 = inttoptr i64 %or to ptr2912  %1 = load atomic i16, ptr %0 monotonic, align 22913  %conv1 = sext i16 %1 to i642914  ret i64 %conv12915}2916 2917; Function Attrs: nofree norecurse nounwind uwtable willreturn2918define dso_local i64 @ld_not_disjoint16_uint64_t_int16_t(i64 %ptr) {2919; CHECK-LABEL: ld_not_disjoint16_uint64_t_int16_t:2920; CHECK:       # %bb.0: # %entry2921; CHECK-NEXT:    ori r3, r3, 62922; CHECK-NEXT:    lhz r3, 0(r3)2923; CHECK-NEXT:    extsh r3, r32924; CHECK-NEXT:    blr2925entry:2926  %or = or i64 %ptr, 62927  %0 = inttoptr i64 %or to ptr2928  %1 = load atomic i16, ptr %0 monotonic, align 22929  %conv = sext i16 %1 to i642930  ret i64 %conv2931}2932 2933; Function Attrs: nofree norecurse nounwind uwtable willreturn2934define dso_local i64 @ld_disjoint_align16_uint64_t_int16_t(i64 %ptr) {2935; CHECK-LABEL: ld_disjoint_align16_uint64_t_int16_t:2936; CHECK:       # %bb.0: # %entry2937; CHECK-NEXT:    rldicr r3, r3, 0, 512938; CHECK-NEXT:    lhz r3, 24(r3)2939; CHECK-NEXT:    extsh r3, r32940; CHECK-NEXT:    blr2941entry:2942  %and = and i64 %ptr, -40962943  %or = or i64 %and, 242944  %0 = inttoptr i64 %or to ptr2945  %1 = load atomic i16, ptr %0 monotonic, align 82946  %conv = sext i16 %1 to i642947  ret i64 %conv2948}2949 2950; Function Attrs: nofree norecurse nounwind uwtable willreturn2951define dso_local i64 @ld_not_disjoint32_uint64_t_int16_t(i64 %ptr) {2952; CHECK-LABEL: ld_not_disjoint32_uint64_t_int16_t:2953; CHECK:       # %bb.0: # %entry2954; CHECK-NEXT:    ori r3, r3, 344632955; CHECK-NEXT:    oris r3, r3, 12956; CHECK-NEXT:    lhz r3, 0(r3)2957; CHECK-NEXT:    extsh r3, r32958; CHECK-NEXT:    blr2959entry:2960  %or = or i64 %ptr, 999992961  %0 = inttoptr i64 %or to ptr2962  %1 = load atomic i16, ptr %0 monotonic, align 22963  %conv = sext i16 %1 to i642964  ret i64 %conv2965}2966 2967; Function Attrs: nofree norecurse nounwind uwtable willreturn2968define dso_local i64 @ld_disjoint_align32_uint64_t_int16_t(i64 %ptr) {2969; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_int16_t:2970; CHECK-P10:       # %bb.0: # %entry2971; CHECK-P10-NEXT:    lis r4, -152642972; CHECK-P10-NEXT:    and r3, r3, r42973; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 02974; CHECK-P10-NEXT:    extsh r3, r32975; CHECK-P10-NEXT:    blr2976;2977; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_int16_t:2978; CHECK-PREP10:       # %bb.0: # %entry2979; CHECK-PREP10-NEXT:    lis r4, -152642980; CHECK-PREP10-NEXT:    and r3, r3, r42981; CHECK-PREP10-NEXT:    lis r4, 152582982; CHECK-PREP10-NEXT:    ori r4, r4, 417122983; CHECK-PREP10-NEXT:    lhzx r3, r3, r42984; CHECK-PREP10-NEXT:    extsh r3, r32985; CHECK-PREP10-NEXT:    blr2986entry:2987  %and = and i64 %ptr, -10003415042988  %or = or i64 %and, 9999900002989  %0 = inttoptr i64 %or to ptr2990  %1 = load atomic i16, ptr %0 monotonic, align 162991  %conv = sext i16 %1 to i642992  ret i64 %conv2993}2994 2995; Function Attrs: nofree norecurse nounwind uwtable willreturn2996define dso_local i64 @ld_not_disjoint64_uint64_t_int16_t(i64 %ptr) {2997; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_int16_t:2998; CHECK-P10:       # %bb.0: # %entry2999; CHECK-P10-NEXT:    pli r4, 2323000; CHECK-P10-NEXT:    pli r5, 35675873293001; CHECK-P10-NEXT:    rldimi r5, r4, 32, 03002; CHECK-P10-NEXT:    or r3, r3, r53003; CHECK-P10-NEXT:    lhz r3, 0(r3)3004; CHECK-P10-NEXT:    extsh r3, r33005; CHECK-P10-NEXT:    blr3006;3007; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_int16_t:3008; CHECK-PREP10:       # %bb.0: # %entry3009; CHECK-PREP10-NEXT:    li r4, 293010; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 243011; CHECK-PREP10-NEXT:    oris r4, r4, 544373012; CHECK-PREP10-NEXT:    ori r4, r4, 40973013; CHECK-PREP10-NEXT:    or r3, r3, r43014; CHECK-PREP10-NEXT:    lhz r3, 0(r3)3015; CHECK-PREP10-NEXT:    extsh r3, r33016; CHECK-PREP10-NEXT:    blr3017entry:3018  %or = or i64 %ptr, 10000000000013019  %0 = inttoptr i64 %or to ptr3020  %1 = load atomic i16, ptr %0 monotonic, align 23021  %conv = sext i16 %1 to i643022  ret i64 %conv3023}3024 3025; Function Attrs: nofree norecurse nounwind uwtable willreturn3026define dso_local i64 @ld_disjoint_align64_uint64_t_int16_t(i64 %ptr) {3027; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_int16_t:3028; CHECK-P10:       # %bb.0: # %entry3029; CHECK-P10-NEXT:    pli r4, 2441406253030; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233031; CHECK-P10-NEXT:    rldic r4, r4, 12, 243032; CHECK-P10-NEXT:    lhzx r3, r3, r43033; CHECK-P10-NEXT:    extsh r3, r33034; CHECK-P10-NEXT:    blr3035;3036; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_int16_t:3037; CHECK-PREP10:       # %bb.0: # %entry3038; CHECK-PREP10-NEXT:    lis r4, 37253039; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233040; CHECK-PREP10-NEXT:    ori r4, r4, 190253041; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243042; CHECK-PREP10-NEXT:    lhzx r3, r3, r43043; CHECK-PREP10-NEXT:    extsh r3, r33044; CHECK-PREP10-NEXT:    blr3045entry:3046  %and = and i64 %ptr, -10995116277763047  %or = or i64 %and, 10000000000003048  %0 = inttoptr i64 %or to ptr3049  %1 = load atomic i16, ptr %0 monotonic, align 40963050  %conv = sext i16 %1 to i643051  ret i64 %conv3052}3053 3054; Function Attrs: nofree norecurse nounwind uwtable willreturn3055define dso_local i64 @ld_cst_align16_uint64_t_int16_t() {3056; CHECK-LABEL: ld_cst_align16_uint64_t_int16_t:3057; CHECK:       # %bb.0: # %entry3058; CHECK-NEXT:    lhz r3, 4080(0)3059; CHECK-NEXT:    extsh r3, r33060; CHECK-NEXT:    blr3061entry:3062  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 163063  %conv = sext i16 %0 to i643064  ret i64 %conv3065}3066 3067; Function Attrs: nofree norecurse nounwind uwtable willreturn3068define dso_local i64 @ld_cst_align32_uint64_t_int16_t() {3069; CHECK-LABEL: ld_cst_align32_uint64_t_int16_t:3070; CHECK:       # %bb.0: # %entry3071; CHECK-NEXT:    lis r3, 1533072; CHECK-NEXT:    lhz r3, -27108(r3)3073; CHECK-NEXT:    extsh r3, r33074; CHECK-NEXT:    blr3075entry:3076  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43077  %conv = sext i16 %0 to i643078  ret i64 %conv3079}3080 3081; Function Attrs: nofree norecurse nounwind uwtable willreturn3082define dso_local i64 @ld_cst_align64_uint64_t_int16_t() {3083; CHECK-P10-LABEL: ld_cst_align64_uint64_t_int16_t:3084; CHECK-P10:       # %bb.0: # %entry3085; CHECK-P10-NEXT:    pli r3, 2441406253086; CHECK-P10-NEXT:    rldic r3, r3, 12, 243087; CHECK-P10-NEXT:    lhz r3, 0(r3)3088; CHECK-P10-NEXT:    extsh r3, r33089; CHECK-P10-NEXT:    blr3090;3091; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_int16_t:3092; CHECK-PREP10:       # %bb.0: # %entry3093; CHECK-PREP10-NEXT:    lis r3, 37253094; CHECK-PREP10-NEXT:    ori r3, r3, 190253095; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 243096; CHECK-PREP10-NEXT:    lhz r3, 0(r3)3097; CHECK-PREP10-NEXT:    extsh r3, r33098; CHECK-PREP10-NEXT:    blr3099entry:3100  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963101  %conv = sext i16 %0 to i643102  ret i64 %conv3103}3104 3105; Function Attrs: nofree norecurse nounwind uwtable willreturn3106define dso_local i64 @ld_0_uint64_t_uint32_t(i64 %ptr) {3107; CHECK-LABEL: ld_0_uint64_t_uint32_t:3108; CHECK:       # %bb.0: # %entry3109; CHECK-NEXT:    lwz r3, 0(r3)3110; CHECK-NEXT:    blr3111entry:3112  %0 = inttoptr i64 %ptr to ptr3113  %1 = load atomic i32, ptr %0 monotonic, align 43114  %conv = zext i32 %1 to i643115  ret i64 %conv3116}3117 3118; Function Attrs: nofree norecurse nounwind uwtable willreturn3119define dso_local i64 @ld_align16_uint64_t_uint32_t(ptr nocapture readonly %ptr) {3120; CHECK-LABEL: ld_align16_uint64_t_uint32_t:3121; CHECK:       # %bb.0: # %entry3122; CHECK-NEXT:    lwz r3, 8(r3)3123; CHECK-NEXT:    blr3124entry:3125  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83126  %0 = load atomic i32, ptr %add.ptr monotonic, align 43127  %conv = zext i32 %0 to i643128  ret i64 %conv3129}3130 3131; Function Attrs: nofree norecurse nounwind uwtable willreturn3132define dso_local i64 @ld_align32_uint64_t_uint32_t(ptr nocapture readonly %ptr) {3133; CHECK-P10-LABEL: ld_align32_uint64_t_uint32_t:3134; CHECK-P10:       # %bb.0: # %entry3135; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 03136; CHECK-P10-NEXT:    clrldi r3, r3, 323137; CHECK-P10-NEXT:    blr3138;3139; CHECK-PREP10-LABEL: ld_align32_uint64_t_uint32_t:3140; CHECK-PREP10:       # %bb.0: # %entry3141; CHECK-PREP10-NEXT:    lis r4, 15253142; CHECK-PREP10-NEXT:    ori r4, r4, 566003143; CHECK-PREP10-NEXT:    lwzx r3, r3, r43144; CHECK-PREP10-NEXT:    blr3145entry:3146  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003147  %0 = load atomic i32, ptr %add.ptr monotonic, align 43148  %conv = zext i32 %0 to i643149  ret i64 %conv3150}3151 3152; Function Attrs: nofree norecurse nounwind uwtable willreturn3153define dso_local i64 @ld_align64_uint64_t_uint32_t(ptr nocapture readonly %ptr) {3154; CHECK-P10-LABEL: ld_align64_uint64_t_uint32_t:3155; CHECK-P10:       # %bb.0: # %entry3156; CHECK-P10-NEXT:    pli r4, 2441406253157; CHECK-P10-NEXT:    rldic r4, r4, 12, 243158; CHECK-P10-NEXT:    lwzx r3, r3, r43159; CHECK-P10-NEXT:    blr3160;3161; CHECK-PREP10-LABEL: ld_align64_uint64_t_uint32_t:3162; CHECK-PREP10:       # %bb.0: # %entry3163; CHECK-PREP10-NEXT:    lis r4, 37253164; CHECK-PREP10-NEXT:    ori r4, r4, 190253165; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243166; CHECK-PREP10-NEXT:    lwzx r3, r3, r43167; CHECK-PREP10-NEXT:    blr3168entry:3169  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003170  %0 = load atomic i32, ptr %add.ptr monotonic, align 43171  %conv = zext i32 %0 to i643172  ret i64 %conv3173}3174 3175; Function Attrs: nofree norecurse nounwind uwtable willreturn3176define dso_local i64 @ld_reg_uint64_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {3177; CHECK-LABEL: ld_reg_uint64_t_uint32_t:3178; CHECK:       # %bb.0: # %entry3179; CHECK-NEXT:    lwzx r3, r3, r43180; CHECK-NEXT:    blr3181entry:3182  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3183  %0 = load atomic i32, ptr %add.ptr monotonic, align 43184  %conv = zext i32 %0 to i643185  ret i64 %conv3186}3187 3188; Function Attrs: nofree norecurse nounwind uwtable willreturn3189define dso_local i64 @ld_or_uint64_t_uint32_t(i64 %ptr, i8 zeroext %off) {3190; CHECK-LABEL: ld_or_uint64_t_uint32_t:3191; CHECK:       # %bb.0: # %entry3192; CHECK-NEXT:    or r3, r4, r33193; CHECK-NEXT:    lwz r3, 0(r3)3194; CHECK-NEXT:    blr3195entry:3196  %conv = zext i8 %off to i643197  %or = or i64 %conv, %ptr3198  %0 = inttoptr i64 %or to ptr3199  %1 = load atomic i32, ptr %0 monotonic, align 43200  %conv1 = zext i32 %1 to i643201  ret i64 %conv13202}3203 3204; Function Attrs: nofree norecurse nounwind uwtable willreturn3205define dso_local i64 @ld_not_disjoint16_uint64_t_uint32_t(i64 %ptr) {3206; CHECK-LABEL: ld_not_disjoint16_uint64_t_uint32_t:3207; CHECK:       # %bb.0: # %entry3208; CHECK-NEXT:    ori r3, r3, 63209; CHECK-NEXT:    lwz r3, 0(r3)3210; CHECK-NEXT:    blr3211entry:3212  %or = or i64 %ptr, 63213  %0 = inttoptr i64 %or to ptr3214  %1 = load atomic i32, ptr %0 monotonic, align 43215  %conv = zext i32 %1 to i643216  ret i64 %conv3217}3218 3219; Function Attrs: nofree norecurse nounwind uwtable willreturn3220define dso_local i64 @ld_disjoint_align16_uint64_t_uint32_t(i64 %ptr) {3221; CHECK-LABEL: ld_disjoint_align16_uint64_t_uint32_t:3222; CHECK:       # %bb.0: # %entry3223; CHECK-NEXT:    rldicr r3, r3, 0, 513224; CHECK-NEXT:    lwz r3, 24(r3)3225; CHECK-NEXT:    blr3226entry:3227  %and = and i64 %ptr, -40963228  %or = or i64 %and, 243229  %0 = inttoptr i64 %or to ptr3230  %1 = load atomic i32, ptr %0 monotonic, align 83231  %conv = zext i32 %1 to i643232  ret i64 %conv3233}3234 3235; Function Attrs: nofree norecurse nounwind uwtable willreturn3236define dso_local i64 @ld_not_disjoint32_uint64_t_uint32_t(i64 %ptr) {3237; CHECK-LABEL: ld_not_disjoint32_uint64_t_uint32_t:3238; CHECK:       # %bb.0: # %entry3239; CHECK-NEXT:    ori r3, r3, 344633240; CHECK-NEXT:    oris r3, r3, 13241; CHECK-NEXT:    lwz r3, 0(r3)3242; CHECK-NEXT:    blr3243entry:3244  %or = or i64 %ptr, 999993245  %0 = inttoptr i64 %or to ptr3246  %1 = load atomic i32, ptr %0 monotonic, align 43247  %conv = zext i32 %1 to i643248  ret i64 %conv3249}3250 3251; Function Attrs: nofree norecurse nounwind uwtable willreturn3252define dso_local i64 @ld_disjoint_align32_uint64_t_uint32_t(i64 %ptr) {3253; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_uint32_t:3254; CHECK-P10:       # %bb.0: # %entry3255; CHECK-P10-NEXT:    lis r4, -152643256; CHECK-P10-NEXT:    and r3, r3, r43257; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 03258; CHECK-P10-NEXT:    clrldi r3, r3, 323259; CHECK-P10-NEXT:    blr3260;3261; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_uint32_t:3262; CHECK-PREP10:       # %bb.0: # %entry3263; CHECK-PREP10-NEXT:    lis r4, -152643264; CHECK-PREP10-NEXT:    and r3, r3, r43265; CHECK-PREP10-NEXT:    lis r4, 152583266; CHECK-PREP10-NEXT:    ori r4, r4, 417123267; CHECK-PREP10-NEXT:    lwzx r3, r3, r43268; CHECK-PREP10-NEXT:    blr3269entry:3270  %and = and i64 %ptr, -10003415043271  %or = or i64 %and, 9999900003272  %0 = inttoptr i64 %or to ptr3273  %1 = load atomic i32, ptr %0 monotonic, align 163274  %conv = zext i32 %1 to i643275  ret i64 %conv3276}3277 3278; Function Attrs: nofree norecurse nounwind uwtable willreturn3279define dso_local i64 @ld_not_disjoint64_uint64_t_uint32_t(i64 %ptr) {3280; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_uint32_t:3281; CHECK-P10:       # %bb.0: # %entry3282; CHECK-P10-NEXT:    pli r4, 2323283; CHECK-P10-NEXT:    pli r5, 35675873293284; CHECK-P10-NEXT:    rldimi r5, r4, 32, 03285; CHECK-P10-NEXT:    or r3, r3, r53286; CHECK-P10-NEXT:    lwz r3, 0(r3)3287; CHECK-P10-NEXT:    blr3288;3289; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_uint32_t:3290; CHECK-PREP10:       # %bb.0: # %entry3291; CHECK-PREP10-NEXT:    li r4, 293292; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 243293; CHECK-PREP10-NEXT:    oris r4, r4, 544373294; CHECK-PREP10-NEXT:    ori r4, r4, 40973295; CHECK-PREP10-NEXT:    or r3, r3, r43296; CHECK-PREP10-NEXT:    lwz r3, 0(r3)3297; CHECK-PREP10-NEXT:    blr3298entry:3299  %or = or i64 %ptr, 10000000000013300  %0 = inttoptr i64 %or to ptr3301  %1 = load atomic i32, ptr %0 monotonic, align 43302  %conv = zext i32 %1 to i643303  ret i64 %conv3304}3305 3306; Function Attrs: nofree norecurse nounwind uwtable willreturn3307define dso_local i64 @ld_disjoint_align64_uint64_t_uint32_t(i64 %ptr) {3308; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_uint32_t:3309; CHECK-P10:       # %bb.0: # %entry3310; CHECK-P10-NEXT:    pli r4, 2441406253311; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233312; CHECK-P10-NEXT:    rldic r4, r4, 12, 243313; CHECK-P10-NEXT:    lwzx r3, r3, r43314; CHECK-P10-NEXT:    blr3315;3316; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_uint32_t:3317; CHECK-PREP10:       # %bb.0: # %entry3318; CHECK-PREP10-NEXT:    lis r4, 37253319; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233320; CHECK-PREP10-NEXT:    ori r4, r4, 190253321; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243322; CHECK-PREP10-NEXT:    lwzx r3, r3, r43323; CHECK-PREP10-NEXT:    blr3324entry:3325  %and = and i64 %ptr, -10995116277763326  %or = or i64 %and, 10000000000003327  %0 = inttoptr i64 %or to ptr3328  %1 = load atomic i32, ptr %0 monotonic, align 40963329  %conv = zext i32 %1 to i643330  ret i64 %conv3331}3332 3333; Function Attrs: nofree norecurse nounwind uwtable willreturn3334define dso_local i64 @ld_cst_align16_uint64_t_uint32_t() {3335; CHECK-LABEL: ld_cst_align16_uint64_t_uint32_t:3336; CHECK:       # %bb.0: # %entry3337; CHECK-NEXT:    lwz r3, 4080(0)3338; CHECK-NEXT:    blr3339entry:3340  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 163341  %conv = zext i32 %0 to i643342  ret i64 %conv3343}3344 3345; Function Attrs: nofree norecurse nounwind uwtable willreturn3346define dso_local i64 @ld_cst_align32_uint64_t_uint32_t() {3347; CHECK-LABEL: ld_cst_align32_uint64_t_uint32_t:3348; CHECK:       # %bb.0: # %entry3349; CHECK-NEXT:    lis r3, 1533350; CHECK-NEXT:    lwz r3, -27108(r3)3351; CHECK-NEXT:    blr3352entry:3353  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43354  %conv = zext i32 %0 to i643355  ret i64 %conv3356}3357 3358; Function Attrs: nofree norecurse nounwind uwtable willreturn3359define dso_local i64 @ld_cst_align64_uint64_t_uint32_t() {3360; CHECK-P10-LABEL: ld_cst_align64_uint64_t_uint32_t:3361; CHECK-P10:       # %bb.0: # %entry3362; CHECK-P10-NEXT:    pli r3, 2441406253363; CHECK-P10-NEXT:    rldic r3, r3, 12, 243364; CHECK-P10-NEXT:    lwz r3, 0(r3)3365; CHECK-P10-NEXT:    blr3366;3367; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_uint32_t:3368; CHECK-PREP10:       # %bb.0: # %entry3369; CHECK-PREP10-NEXT:    lis r3, 37253370; CHECK-PREP10-NEXT:    ori r3, r3, 190253371; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 243372; CHECK-PREP10-NEXT:    lwz r3, 0(r3)3373; CHECK-PREP10-NEXT:    blr3374entry:3375  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963376  %conv = zext i32 %0 to i643377  ret i64 %conv3378}3379 3380; Function Attrs: nofree norecurse nounwind uwtable willreturn3381define dso_local i64 @ld_0_uint64_t_int32_t(i64 %ptr) {3382; CHECK-LABEL: ld_0_uint64_t_int32_t:3383; CHECK:       # %bb.0: # %entry3384; CHECK-NEXT:    lwa r3, 0(r3)3385; CHECK-NEXT:    blr3386entry:3387  %0 = inttoptr i64 %ptr to ptr3388  %1 = load atomic i32, ptr %0 monotonic, align 43389  %conv = sext i32 %1 to i643390  ret i64 %conv3391}3392 3393; Function Attrs: nofree norecurse nounwind uwtable willreturn3394define dso_local i64 @ld_align16_uint64_t_int32_t(ptr nocapture readonly %ptr) {3395; CHECK-LABEL: ld_align16_uint64_t_int32_t:3396; CHECK:       # %bb.0: # %entry3397; CHECK-NEXT:    lwa r3, 8(r3)3398; CHECK-NEXT:    blr3399entry:3400  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83401  %0 = load atomic i32, ptr %add.ptr monotonic, align 43402  %conv = sext i32 %0 to i643403  ret i64 %conv3404}3405 3406; Function Attrs: nofree norecurse nounwind uwtable willreturn3407define dso_local i64 @ld_align32_uint64_t_int32_t(ptr nocapture readonly %ptr) {3408; CHECK-P10-LABEL: ld_align32_uint64_t_int32_t:3409; CHECK-P10:       # %bb.0: # %entry3410; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 03411; CHECK-P10-NEXT:    extsw r3, r33412; CHECK-P10-NEXT:    blr3413;3414; CHECK-PREP10-LABEL: ld_align32_uint64_t_int32_t:3415; CHECK-PREP10:       # %bb.0: # %entry3416; CHECK-PREP10-NEXT:    lis r4, 15253417; CHECK-PREP10-NEXT:    ori r4, r4, 566003418; CHECK-PREP10-NEXT:    lwax r3, r3, r43419; CHECK-PREP10-NEXT:    blr3420entry:3421  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003422  %0 = load atomic i32, ptr %add.ptr monotonic, align 43423  %conv = sext i32 %0 to i643424  ret i64 %conv3425}3426 3427; Function Attrs: nofree norecurse nounwind uwtable willreturn3428define dso_local i64 @ld_align64_uint64_t_int32_t(ptr nocapture readonly %ptr) {3429; CHECK-P10-LABEL: ld_align64_uint64_t_int32_t:3430; CHECK-P10:       # %bb.0: # %entry3431; CHECK-P10-NEXT:    pli r4, 2441406253432; CHECK-P10-NEXT:    rldic r4, r4, 12, 243433; CHECK-P10-NEXT:    lwax r3, r3, r43434; CHECK-P10-NEXT:    blr3435;3436; CHECK-PREP10-LABEL: ld_align64_uint64_t_int32_t:3437; CHECK-PREP10:       # %bb.0: # %entry3438; CHECK-PREP10-NEXT:    lis r4, 37253439; CHECK-PREP10-NEXT:    ori r4, r4, 190253440; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243441; CHECK-PREP10-NEXT:    lwax r3, r3, r43442; CHECK-PREP10-NEXT:    blr3443entry:3444  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003445  %0 = load atomic i32, ptr %add.ptr monotonic, align 43446  %conv = sext i32 %0 to i643447  ret i64 %conv3448}3449 3450; Function Attrs: nofree norecurse nounwind uwtable willreturn3451define dso_local i64 @ld_reg_uint64_t_int32_t(ptr nocapture readonly %ptr, i64 %off) {3452; CHECK-LABEL: ld_reg_uint64_t_int32_t:3453; CHECK:       # %bb.0: # %entry3454; CHECK-NEXT:    lwax r3, r3, r43455; CHECK-NEXT:    blr3456entry:3457  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3458  %0 = load atomic i32, ptr %add.ptr monotonic, align 43459  %conv = sext i32 %0 to i643460  ret i64 %conv3461}3462 3463; Function Attrs: nofree norecurse nounwind uwtable willreturn3464define dso_local i64 @ld_or_uint64_t_int32_t(i64 %ptr, i8 zeroext %off) {3465; CHECK-LABEL: ld_or_uint64_t_int32_t:3466; CHECK:       # %bb.0: # %entry3467; CHECK-NEXT:    or r3, r4, r33468; CHECK-NEXT:    lwa r3, 0(r3)3469; CHECK-NEXT:    blr3470entry:3471  %conv = zext i8 %off to i643472  %or = or i64 %conv, %ptr3473  %0 = inttoptr i64 %or to ptr3474  %1 = load atomic i32, ptr %0 monotonic, align 43475  %conv1 = sext i32 %1 to i643476  ret i64 %conv13477}3478 3479; Function Attrs: nofree norecurse nounwind uwtable willreturn3480define dso_local i64 @ld_not_disjoint16_uint64_t_int32_t(i64 %ptr) {3481; CHECK-LABEL: ld_not_disjoint16_uint64_t_int32_t:3482; CHECK:       # %bb.0: # %entry3483; CHECK-NEXT:    ori r3, r3, 63484; CHECK-NEXT:    lwa r3, 0(r3)3485; CHECK-NEXT:    blr3486entry:3487  %or = or i64 %ptr, 63488  %0 = inttoptr i64 %or to ptr3489  %1 = load atomic i32, ptr %0 monotonic, align 43490  %conv = sext i32 %1 to i643491  ret i64 %conv3492}3493 3494; Function Attrs: nofree norecurse nounwind uwtable willreturn3495define dso_local i64 @ld_disjoint_align16_uint64_t_int32_t(i64 %ptr) {3496; CHECK-LABEL: ld_disjoint_align16_uint64_t_int32_t:3497; CHECK:       # %bb.0: # %entry3498; CHECK-NEXT:    rldicr r3, r3, 0, 513499; CHECK-NEXT:    lwa r3, 24(r3)3500; CHECK-NEXT:    blr3501entry:3502  %and = and i64 %ptr, -40963503  %or = or i64 %and, 243504  %0 = inttoptr i64 %or to ptr3505  %1 = load atomic i32, ptr %0 monotonic, align 83506  %conv = sext i32 %1 to i643507  ret i64 %conv3508}3509 3510; Function Attrs: nofree norecurse nounwind uwtable willreturn3511define dso_local i64 @ld_not_disjoint32_uint64_t_int32_t(i64 %ptr) {3512; CHECK-LABEL: ld_not_disjoint32_uint64_t_int32_t:3513; CHECK:       # %bb.0: # %entry3514; CHECK-NEXT:    ori r3, r3, 344633515; CHECK-NEXT:    oris r3, r3, 13516; CHECK-NEXT:    lwa r3, 0(r3)3517; CHECK-NEXT:    blr3518entry:3519  %or = or i64 %ptr, 999993520  %0 = inttoptr i64 %or to ptr3521  %1 = load atomic i32, ptr %0 monotonic, align 43522  %conv = sext i32 %1 to i643523  ret i64 %conv3524}3525 3526; Function Attrs: nofree norecurse nounwind uwtable willreturn3527define dso_local i64 @ld_disjoint_align32_uint64_t_int32_t(i64 %ptr) {3528; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_int32_t:3529; CHECK-P10:       # %bb.0: # %entry3530; CHECK-P10-NEXT:    lis r4, -152643531; CHECK-P10-NEXT:    and r3, r3, r43532; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 03533; CHECK-P10-NEXT:    extsw r3, r33534; CHECK-P10-NEXT:    blr3535;3536; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_int32_t:3537; CHECK-PREP10:       # %bb.0: # %entry3538; CHECK-PREP10-NEXT:    lis r4, -152643539; CHECK-PREP10-NEXT:    and r3, r3, r43540; CHECK-PREP10-NEXT:    lis r4, 152583541; CHECK-PREP10-NEXT:    ori r4, r4, 417123542; CHECK-PREP10-NEXT:    lwax r3, r3, r43543; CHECK-PREP10-NEXT:    blr3544entry:3545  %and = and i64 %ptr, -10003415043546  %or = or i64 %and, 9999900003547  %0 = inttoptr i64 %or to ptr3548  %1 = load atomic i32, ptr %0 monotonic, align 163549  %conv = sext i32 %1 to i643550  ret i64 %conv3551}3552 3553; Function Attrs: nofree norecurse nounwind uwtable willreturn3554define dso_local i64 @ld_not_disjoint64_uint64_t_int32_t(i64 %ptr) {3555; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_int32_t:3556; CHECK-P10:       # %bb.0: # %entry3557; CHECK-P10-NEXT:    pli r4, 2323558; CHECK-P10-NEXT:    pli r5, 35675873293559; CHECK-P10-NEXT:    rldimi r5, r4, 32, 03560; CHECK-P10-NEXT:    or r3, r3, r53561; CHECK-P10-NEXT:    lwa r3, 0(r3)3562; CHECK-P10-NEXT:    blr3563;3564; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_int32_t:3565; CHECK-PREP10:       # %bb.0: # %entry3566; CHECK-PREP10-NEXT:    li r4, 293567; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 243568; CHECK-PREP10-NEXT:    oris r4, r4, 544373569; CHECK-PREP10-NEXT:    ori r4, r4, 40973570; CHECK-PREP10-NEXT:    or r3, r3, r43571; CHECK-PREP10-NEXT:    lwa r3, 0(r3)3572; CHECK-PREP10-NEXT:    blr3573entry:3574  %or = or i64 %ptr, 10000000000013575  %0 = inttoptr i64 %or to ptr3576  %1 = load atomic i32, ptr %0 monotonic, align 43577  %conv = sext i32 %1 to i643578  ret i64 %conv3579}3580 3581; Function Attrs: nofree norecurse nounwind uwtable willreturn3582define dso_local i64 @ld_disjoint_align64_uint64_t_int32_t(i64 %ptr) {3583; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_int32_t:3584; CHECK-P10:       # %bb.0: # %entry3585; CHECK-P10-NEXT:    pli r4, 2441406253586; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233587; CHECK-P10-NEXT:    rldic r4, r4, 12, 243588; CHECK-P10-NEXT:    lwax r3, r3, r43589; CHECK-P10-NEXT:    blr3590;3591; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_int32_t:3592; CHECK-PREP10:       # %bb.0: # %entry3593; CHECK-PREP10-NEXT:    lis r4, 37253594; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233595; CHECK-PREP10-NEXT:    ori r4, r4, 190253596; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243597; CHECK-PREP10-NEXT:    lwax r3, r3, r43598; CHECK-PREP10-NEXT:    blr3599entry:3600  %and = and i64 %ptr, -10995116277763601  %or = or i64 %and, 10000000000003602  %0 = inttoptr i64 %or to ptr3603  %1 = load atomic i32, ptr %0 monotonic, align 40963604  %conv = sext i32 %1 to i643605  ret i64 %conv3606}3607 3608; Function Attrs: nofree norecurse nounwind uwtable willreturn3609define dso_local i64 @ld_cst_align16_uint64_t_int32_t() {3610; CHECK-LABEL: ld_cst_align16_uint64_t_int32_t:3611; CHECK:       # %bb.0: # %entry3612; CHECK-NEXT:    lwa r3, 4080(0)3613; CHECK-NEXT:    blr3614entry:3615  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 163616  %conv = sext i32 %0 to i643617  ret i64 %conv3618}3619 3620; Function Attrs: nofree norecurse nounwind uwtable willreturn3621define dso_local i64 @ld_cst_align32_uint64_t_int32_t() {3622; CHECK-LABEL: ld_cst_align32_uint64_t_int32_t:3623; CHECK:       # %bb.0: # %entry3624; CHECK-NEXT:    lis r3, 1533625; CHECK-NEXT:    lwa r3, -27108(r3)3626; CHECK-NEXT:    blr3627entry:3628  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43629  %conv = sext i32 %0 to i643630  ret i64 %conv3631}3632 3633; Function Attrs: nofree norecurse nounwind uwtable willreturn3634define dso_local i64 @ld_cst_align64_uint64_t_int32_t() {3635; CHECK-P10-LABEL: ld_cst_align64_uint64_t_int32_t:3636; CHECK-P10:       # %bb.0: # %entry3637; CHECK-P10-NEXT:    pli r3, 2441406253638; CHECK-P10-NEXT:    rldic r3, r3, 12, 243639; CHECK-P10-NEXT:    lwa r3, 0(r3)3640; CHECK-P10-NEXT:    blr3641;3642; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_int32_t:3643; CHECK-PREP10:       # %bb.0: # %entry3644; CHECK-PREP10-NEXT:    lis r3, 37253645; CHECK-PREP10-NEXT:    ori r3, r3, 190253646; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 243647; CHECK-PREP10-NEXT:    lwa r3, 0(r3)3648; CHECK-PREP10-NEXT:    blr3649entry:3650  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963651  %conv = sext i32 %0 to i643652  ret i64 %conv3653}3654 3655; Function Attrs: nofree norecurse nounwind uwtable willreturn3656define dso_local i64 @ld_0_uint64_t_uint64_t(i64 %ptr) {3657; CHECK-LABEL: ld_0_uint64_t_uint64_t:3658; CHECK:       # %bb.0: # %entry3659; CHECK-NEXT:    ld r3, 0(r3)3660; CHECK-NEXT:    blr3661entry:3662  %0 = inttoptr i64 %ptr to ptr3663  %1 = load atomic i64, ptr %0 monotonic, align 83664  ret i64 %13665}3666 3667; Function Attrs: nofree norecurse nounwind uwtable willreturn3668define dso_local i64 @ld_align16_uint64_t_uint64_t(ptr nocapture readonly %ptr) {3669; CHECK-LABEL: ld_align16_uint64_t_uint64_t:3670; CHECK:       # %bb.0: # %entry3671; CHECK-NEXT:    ld r3, 8(r3)3672; CHECK-NEXT:    blr3673entry:3674  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83675  %0 = load atomic i64, ptr %add.ptr monotonic, align 83676  ret i64 %03677}3678 3679; Function Attrs: nofree norecurse nounwind uwtable willreturn3680define dso_local i64 @ld_align32_uint64_t_uint64_t(ptr nocapture readonly %ptr) {3681; CHECK-P10-LABEL: ld_align32_uint64_t_uint64_t:3682; CHECK-P10:       # %bb.0: # %entry3683; CHECK-P10-NEXT:    pld r3, 99999000(r3), 03684; CHECK-P10-NEXT:    blr3685;3686; CHECK-PREP10-LABEL: ld_align32_uint64_t_uint64_t:3687; CHECK-PREP10:       # %bb.0: # %entry3688; CHECK-PREP10-NEXT:    lis r4, 15253689; CHECK-PREP10-NEXT:    ori r4, r4, 566003690; CHECK-PREP10-NEXT:    ldx r3, r3, r43691; CHECK-PREP10-NEXT:    blr3692entry:3693  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003694  %0 = load atomic i64, ptr %add.ptr monotonic, align 83695  ret i64 %03696}3697 3698; Function Attrs: nofree norecurse nounwind uwtable willreturn3699define dso_local i64 @ld_align64_uint64_t_uint64_t(ptr nocapture readonly %ptr) {3700; CHECK-P10-LABEL: ld_align64_uint64_t_uint64_t:3701; CHECK-P10:       # %bb.0: # %entry3702; CHECK-P10-NEXT:    pli r4, 2441406253703; CHECK-P10-NEXT:    rldic r4, r4, 12, 243704; CHECK-P10-NEXT:    ldx r3, r3, r43705; CHECK-P10-NEXT:    blr3706;3707; CHECK-PREP10-LABEL: ld_align64_uint64_t_uint64_t:3708; CHECK-PREP10:       # %bb.0: # %entry3709; CHECK-PREP10-NEXT:    lis r4, 37253710; CHECK-PREP10-NEXT:    ori r4, r4, 190253711; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243712; CHECK-PREP10-NEXT:    ldx r3, r3, r43713; CHECK-PREP10-NEXT:    blr3714entry:3715  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003716  %0 = load atomic i64, ptr %add.ptr monotonic, align 83717  ret i64 %03718}3719 3720; Function Attrs: nofree norecurse nounwind uwtable willreturn3721define dso_local i64 @ld_reg_uint64_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {3722; CHECK-LABEL: ld_reg_uint64_t_uint64_t:3723; CHECK:       # %bb.0: # %entry3724; CHECK-NEXT:    ldx r3, r3, r43725; CHECK-NEXT:    blr3726entry:3727  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3728  %0 = load atomic i64, ptr %add.ptr monotonic, align 83729  ret i64 %03730}3731 3732; Function Attrs: nofree norecurse nounwind uwtable willreturn3733define dso_local i64 @ld_or_uint64_t_uint64_t(i64 %ptr, i8 zeroext %off) {3734; CHECK-LABEL: ld_or_uint64_t_uint64_t:3735; CHECK:       # %bb.0: # %entry3736; CHECK-NEXT:    or r3, r4, r33737; CHECK-NEXT:    ld r3, 0(r3)3738; CHECK-NEXT:    blr3739entry:3740  %conv = zext i8 %off to i643741  %or = or i64 %conv, %ptr3742  %0 = inttoptr i64 %or to ptr3743  %1 = load atomic i64, ptr %0 monotonic, align 83744  ret i64 %13745}3746 3747; Function Attrs: nofree norecurse nounwind uwtable willreturn3748define dso_local i64 @ld_not_disjoint16_uint64_t_uint64_t(i64 %ptr) {3749; CHECK-LABEL: ld_not_disjoint16_uint64_t_uint64_t:3750; CHECK:       # %bb.0: # %entry3751; CHECK-NEXT:    ori r3, r3, 63752; CHECK-NEXT:    ld r3, 0(r3)3753; CHECK-NEXT:    blr3754entry:3755  %or = or i64 %ptr, 63756  %0 = inttoptr i64 %or to ptr3757  %1 = load atomic i64, ptr %0 monotonic, align 83758  ret i64 %13759}3760 3761; Function Attrs: nofree norecurse nounwind uwtable willreturn3762define dso_local i64 @ld_disjoint_align16_uint64_t_uint64_t(i64 %ptr) {3763; CHECK-LABEL: ld_disjoint_align16_uint64_t_uint64_t:3764; CHECK:       # %bb.0: # %entry3765; CHECK-NEXT:    rldicr r3, r3, 0, 513766; CHECK-NEXT:    ld r3, 24(r3)3767; CHECK-NEXT:    blr3768entry:3769  %and = and i64 %ptr, -40963770  %or = or i64 %and, 243771  %0 = inttoptr i64 %or to ptr3772  %1 = load atomic i64, ptr %0 monotonic, align 83773  ret i64 %13774}3775 3776; Function Attrs: nofree norecurse nounwind uwtable willreturn3777define dso_local i64 @ld_not_disjoint32_uint64_t_uint64_t(i64 %ptr) {3778; CHECK-LABEL: ld_not_disjoint32_uint64_t_uint64_t:3779; CHECK:       # %bb.0: # %entry3780; CHECK-NEXT:    ori r3, r3, 344633781; CHECK-NEXT:    oris r3, r3, 13782; CHECK-NEXT:    ld r3, 0(r3)3783; CHECK-NEXT:    blr3784entry:3785  %or = or i64 %ptr, 999993786  %0 = inttoptr i64 %or to ptr3787  %1 = load atomic i64, ptr %0 monotonic, align 83788  ret i64 %13789}3790 3791; Function Attrs: nofree norecurse nounwind uwtable willreturn3792define dso_local i64 @ld_disjoint_align32_uint64_t_uint64_t(i64 %ptr) {3793; CHECK-P10-LABEL: ld_disjoint_align32_uint64_t_uint64_t:3794; CHECK-P10:       # %bb.0: # %entry3795; CHECK-P10-NEXT:    lis r4, -152643796; CHECK-P10-NEXT:    and r3, r3, r43797; CHECK-P10-NEXT:    pld r3, 999990000(r3), 03798; CHECK-P10-NEXT:    blr3799;3800; CHECK-PREP10-LABEL: ld_disjoint_align32_uint64_t_uint64_t:3801; CHECK-PREP10:       # %bb.0: # %entry3802; CHECK-PREP10-NEXT:    lis r4, -152643803; CHECK-PREP10-NEXT:    and r3, r3, r43804; CHECK-PREP10-NEXT:    lis r4, 152583805; CHECK-PREP10-NEXT:    ori r4, r4, 417123806; CHECK-PREP10-NEXT:    ldx r3, r3, r43807; CHECK-PREP10-NEXT:    blr3808entry:3809  %and = and i64 %ptr, -10003415043810  %or = or i64 %and, 9999900003811  %0 = inttoptr i64 %or to ptr3812  %1 = load atomic i64, ptr %0 monotonic, align 163813  ret i64 %13814}3815 3816; Function Attrs: nofree norecurse nounwind uwtable willreturn3817define dso_local i64 @ld_not_disjoint64_uint64_t_uint64_t(i64 %ptr) {3818; CHECK-P10-LABEL: ld_not_disjoint64_uint64_t_uint64_t:3819; CHECK-P10:       # %bb.0: # %entry3820; CHECK-P10-NEXT:    pli r4, 2323821; CHECK-P10-NEXT:    pli r5, 35675873293822; CHECK-P10-NEXT:    rldimi r5, r4, 32, 03823; CHECK-P10-NEXT:    or r3, r3, r53824; CHECK-P10-NEXT:    ld r3, 0(r3)3825; CHECK-P10-NEXT:    blr3826;3827; CHECK-PREP10-LABEL: ld_not_disjoint64_uint64_t_uint64_t:3828; CHECK-PREP10:       # %bb.0: # %entry3829; CHECK-PREP10-NEXT:    li r4, 293830; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 243831; CHECK-PREP10-NEXT:    oris r4, r4, 544373832; CHECK-PREP10-NEXT:    ori r4, r4, 40973833; CHECK-PREP10-NEXT:    or r3, r3, r43834; CHECK-PREP10-NEXT:    ld r3, 0(r3)3835; CHECK-PREP10-NEXT:    blr3836entry:3837  %or = or i64 %ptr, 10000000000013838  %0 = inttoptr i64 %or to ptr3839  %1 = load atomic i64, ptr %0 monotonic, align 83840  ret i64 %13841}3842 3843; Function Attrs: nofree norecurse nounwind uwtable willreturn3844define dso_local i64 @ld_disjoint_align64_uint64_t_uint64_t(i64 %ptr) {3845; CHECK-P10-LABEL: ld_disjoint_align64_uint64_t_uint64_t:3846; CHECK-P10:       # %bb.0: # %entry3847; CHECK-P10-NEXT:    pli r4, 2441406253848; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233849; CHECK-P10-NEXT:    rldic r4, r4, 12, 243850; CHECK-P10-NEXT:    ldx r3, r3, r43851; CHECK-P10-NEXT:    blr3852;3853; CHECK-PREP10-LABEL: ld_disjoint_align64_uint64_t_uint64_t:3854; CHECK-PREP10:       # %bb.0: # %entry3855; CHECK-PREP10-NEXT:    lis r4, 37253856; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233857; CHECK-PREP10-NEXT:    ori r4, r4, 190253858; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243859; CHECK-PREP10-NEXT:    ldx r3, r3, r43860; CHECK-PREP10-NEXT:    blr3861entry:3862  %and = and i64 %ptr, -10995116277763863  %or = or i64 %and, 10000000000003864  %0 = inttoptr i64 %or to ptr3865  %1 = load atomic i64, ptr %0 monotonic, align 40963866  ret i64 %13867}3868 3869; Function Attrs: nofree norecurse nounwind uwtable willreturn3870define dso_local i64 @ld_cst_align16_uint64_t_uint64_t() {3871; CHECK-LABEL: ld_cst_align16_uint64_t_uint64_t:3872; CHECK:       # %bb.0: # %entry3873; CHECK-NEXT:    ld r3, 4080(0)3874; CHECK-NEXT:    blr3875entry:3876  %0 = load atomic i64, ptr inttoptr (i64 4080 to ptr) monotonic, align 163877  ret i64 %03878}3879 3880; Function Attrs: nofree norecurse nounwind uwtable willreturn3881define dso_local i64 @ld_cst_align32_uint64_t_uint64_t() {3882; CHECK-LABEL: ld_cst_align32_uint64_t_uint64_t:3883; CHECK:       # %bb.0: # %entry3884; CHECK-NEXT:    lis r3, 1533885; CHECK-NEXT:    ld r3, -27108(r3)3886; CHECK-NEXT:    blr3887entry:3888  %0 = load atomic i64, ptr inttoptr (i64 9999900 to ptr) monotonic, align 83889  ret i64 %03890}3891 3892; Function Attrs: nofree norecurse nounwind uwtable willreturn3893define dso_local i64 @ld_cst_align64_uint64_t_uint64_t() {3894; CHECK-P10-LABEL: ld_cst_align64_uint64_t_uint64_t:3895; CHECK-P10:       # %bb.0: # %entry3896; CHECK-P10-NEXT:    pli r3, 2441406253897; CHECK-P10-NEXT:    rldic r3, r3, 12, 243898; CHECK-P10-NEXT:    ld r3, 0(r3)3899; CHECK-P10-NEXT:    blr3900;3901; CHECK-PREP10-LABEL: ld_cst_align64_uint64_t_uint64_t:3902; CHECK-PREP10:       # %bb.0: # %entry3903; CHECK-PREP10-NEXT:    lis r3, 37253904; CHECK-PREP10-NEXT:    ori r3, r3, 190253905; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 243906; CHECK-PREP10-NEXT:    ld r3, 0(r3)3907; CHECK-PREP10-NEXT:    blr3908entry:3909  %0 = load atomic i64, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963910  ret i64 %03911}3912 3913; Function Attrs: nofree norecurse nounwind uwtable willreturn3914define dso_local void @st_0_uint64_t_uint8_t(i64 %ptr, i64 %str) {3915; CHECK-LABEL: st_0_uint64_t_uint8_t:3916; CHECK:       # %bb.0: # %entry3917; CHECK-NEXT:    stb r4, 0(r3)3918; CHECK-NEXT:    blr3919entry:3920  %0 = inttoptr i64 %ptr to ptr3921  %conv = trunc i64 %str to i83922  store atomic i8 %conv, ptr %0 monotonic, align 13923  ret void3924}3925 3926; Function Attrs: nofree norecurse nounwind uwtable willreturn3927define dso_local void @st_align16_uint64_t_uint8_t(ptr nocapture %ptr, i64 %str) {3928; CHECK-LABEL: st_align16_uint64_t_uint8_t:3929; CHECK:       # %bb.0: # %entry3930; CHECK-NEXT:    stb r4, 8(r3)3931; CHECK-NEXT:    blr3932entry:3933  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83934  %conv = trunc i64 %str to i83935  store atomic i8 %conv, ptr %add.ptr monotonic, align 13936  ret void3937}3938 3939; Function Attrs: nofree norecurse nounwind uwtable willreturn3940define dso_local void @st_align32_uint64_t_uint8_t(ptr nocapture %ptr, i64 %str) {3941; CHECK-P10-LABEL: st_align32_uint64_t_uint8_t:3942; CHECK-P10:       # %bb.0: # %entry3943; CHECK-P10-NEXT:    pstb r4, 99999000(r3), 03944; CHECK-P10-NEXT:    blr3945;3946; CHECK-PREP10-LABEL: st_align32_uint64_t_uint8_t:3947; CHECK-PREP10:       # %bb.0: # %entry3948; CHECK-PREP10-NEXT:    lis r5, 15253949; CHECK-PREP10-NEXT:    ori r5, r5, 566003950; CHECK-PREP10-NEXT:    stbx r4, r3, r53951; CHECK-PREP10-NEXT:    blr3952entry:3953  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003954  %conv = trunc i64 %str to i83955  store atomic i8 %conv, ptr %add.ptr monotonic, align 13956  ret void3957}3958 3959; Function Attrs: nofree norecurse nounwind uwtable willreturn3960define dso_local void @st_align64_uint64_t_uint8_t(ptr nocapture %ptr, i64 %str) {3961; CHECK-P10-LABEL: st_align64_uint64_t_uint8_t:3962; CHECK-P10:       # %bb.0: # %entry3963; CHECK-P10-NEXT:    pli r5, 2441406253964; CHECK-P10-NEXT:    rldic r5, r5, 12, 243965; CHECK-P10-NEXT:    stbx r4, r3, r53966; CHECK-P10-NEXT:    blr3967;3968; CHECK-PREP10-LABEL: st_align64_uint64_t_uint8_t:3969; CHECK-PREP10:       # %bb.0: # %entry3970; CHECK-PREP10-NEXT:    lis r5, 37253971; CHECK-PREP10-NEXT:    ori r5, r5, 190253972; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243973; CHECK-PREP10-NEXT:    stbx r4, r3, r53974; CHECK-PREP10-NEXT:    blr3975entry:3976  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003977  %conv = trunc i64 %str to i83978  store atomic i8 %conv, ptr %add.ptr monotonic, align 13979  ret void3980}3981 3982; Function Attrs: nofree norecurse nounwind uwtable willreturn3983define dso_local void @st_reg_uint64_t_uint8_t(ptr nocapture %ptr, i64 %off, i64 %str) {3984; CHECK-LABEL: st_reg_uint64_t_uint8_t:3985; CHECK:       # %bb.0: # %entry3986; CHECK-NEXT:    stbx r5, r3, r43987; CHECK-NEXT:    blr3988entry:3989  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3990  %conv = trunc i64 %str to i83991  store atomic i8 %conv, ptr %add.ptr monotonic, align 13992  ret void3993}3994 3995; Function Attrs: nofree norecurse nounwind uwtable willreturn3996define dso_local void @st_or1_uint64_t_uint8_t(i64 %ptr, i8 zeroext %off, i64 %str) {3997; CHECK-LABEL: st_or1_uint64_t_uint8_t:3998; CHECK:       # %bb.0: # %entry3999; CHECK-NEXT:    or r3, r4, r34000; CHECK-NEXT:    stb r5, 0(r3)4001; CHECK-NEXT:    blr4002entry:4003  %conv = zext i8 %off to i644004  %or = or i64 %conv, %ptr4005  %0 = inttoptr i64 %or to ptr4006  %conv1 = trunc i64 %str to i84007  store atomic i8 %conv1, ptr %0 monotonic, align 14008  ret void4009}4010 4011; Function Attrs: nofree norecurse nounwind uwtable willreturn4012define dso_local void @st_not_disjoint16_uint64_t_uint8_t(i64 %ptr, i64 %str) {4013; CHECK-LABEL: st_not_disjoint16_uint64_t_uint8_t:4014; CHECK:       # %bb.0: # %entry4015; CHECK-NEXT:    ori r3, r3, 64016; CHECK-NEXT:    stb r4, 0(r3)4017; CHECK-NEXT:    blr4018entry:4019  %or = or i64 %ptr, 64020  %0 = inttoptr i64 %or to ptr4021  %conv = trunc i64 %str to i84022  store atomic i8 %conv, ptr %0 monotonic, align 14023  ret void4024}4025 4026; Function Attrs: nofree norecurse nounwind uwtable willreturn4027define dso_local void @st_disjoint_align16_uint64_t_uint8_t(i64 %ptr, i64 %str) {4028; CHECK-LABEL: st_disjoint_align16_uint64_t_uint8_t:4029; CHECK:       # %bb.0: # %entry4030; CHECK-NEXT:    rldicr r3, r3, 0, 514031; CHECK-NEXT:    stb r4, 24(r3)4032; CHECK-NEXT:    blr4033entry:4034  %and = and i64 %ptr, -40964035  %or = or i64 %and, 244036  %0 = inttoptr i64 %or to ptr4037  %conv = trunc i64 %str to i84038  store atomic i8 %conv, ptr %0 monotonic, align 84039  ret void4040}4041 4042; Function Attrs: nofree norecurse nounwind uwtable willreturn4043define dso_local void @st_not_disjoint32_uint64_t_uint8_t(i64 %ptr, i64 %str) {4044; CHECK-LABEL: st_not_disjoint32_uint64_t_uint8_t:4045; CHECK:       # %bb.0: # %entry4046; CHECK-NEXT:    ori r3, r3, 344634047; CHECK-NEXT:    oris r3, r3, 14048; CHECK-NEXT:    stb r4, 0(r3)4049; CHECK-NEXT:    blr4050entry:4051  %or = or i64 %ptr, 999994052  %0 = inttoptr i64 %or to ptr4053  %conv = trunc i64 %str to i84054  store atomic i8 %conv, ptr %0 monotonic, align 14055  ret void4056}4057 4058; Function Attrs: nofree norecurse nounwind uwtable willreturn4059define dso_local void @st_disjoint_align32_uint64_t_uint8_t(i64 %ptr, i64 %str) {4060; CHECK-P10-LABEL: st_disjoint_align32_uint64_t_uint8_t:4061; CHECK-P10:       # %bb.0: # %entry4062; CHECK-P10-NEXT:    lis r5, -152644063; CHECK-P10-NEXT:    and r3, r3, r54064; CHECK-P10-NEXT:    pstb r4, 999990000(r3), 04065; CHECK-P10-NEXT:    blr4066;4067; CHECK-PREP10-LABEL: st_disjoint_align32_uint64_t_uint8_t:4068; CHECK-PREP10:       # %bb.0: # %entry4069; CHECK-PREP10-NEXT:    lis r5, -152644070; CHECK-PREP10-NEXT:    and r3, r3, r54071; CHECK-PREP10-NEXT:    lis r5, 152584072; CHECK-PREP10-NEXT:    ori r5, r5, 417124073; CHECK-PREP10-NEXT:    stbx r4, r3, r54074; CHECK-PREP10-NEXT:    blr4075entry:4076  %and = and i64 %ptr, -10003415044077  %or = or i64 %and, 9999900004078  %0 = inttoptr i64 %or to ptr4079  %conv = trunc i64 %str to i84080  store atomic i8 %conv, ptr %0 monotonic, align 164081  ret void4082}4083 4084; Function Attrs: nofree norecurse nounwind uwtable willreturn4085define dso_local void @st_not_disjoint64_uint64_t_uint8_t(i64 %ptr, i64 %str) {4086; CHECK-P10-LABEL: st_not_disjoint64_uint64_t_uint8_t:4087; CHECK-P10:       # %bb.0: # %entry4088; CHECK-P10-NEXT:    pli r5, 2324089; CHECK-P10-NEXT:    pli r6, 35675873294090; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04091; CHECK-P10-NEXT:    or r3, r3, r64092; CHECK-P10-NEXT:    stb r4, 0(r3)4093; CHECK-P10-NEXT:    blr4094;4095; CHECK-PREP10-LABEL: st_not_disjoint64_uint64_t_uint8_t:4096; CHECK-PREP10:       # %bb.0: # %entry4097; CHECK-PREP10-NEXT:    li r5, 294098; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244099; CHECK-PREP10-NEXT:    oris r5, r5, 544374100; CHECK-PREP10-NEXT:    ori r5, r5, 40974101; CHECK-PREP10-NEXT:    or r3, r3, r54102; CHECK-PREP10-NEXT:    stb r4, 0(r3)4103; CHECK-PREP10-NEXT:    blr4104entry:4105  %or = or i64 %ptr, 10000000000014106  %0 = inttoptr i64 %or to ptr4107  %conv = trunc i64 %str to i84108  store atomic i8 %conv, ptr %0 monotonic, align 14109  ret void4110}4111 4112; Function Attrs: nofree norecurse nounwind uwtable willreturn4113define dso_local void @st_disjoint_align64_uint64_t_uint8_t(i64 %ptr, i64 %str) {4114; CHECK-P10-LABEL: st_disjoint_align64_uint64_t_uint8_t:4115; CHECK-P10:       # %bb.0: # %entry4116; CHECK-P10-NEXT:    pli r5, 2441406254117; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234118; CHECK-P10-NEXT:    rldic r5, r5, 12, 244119; CHECK-P10-NEXT:    stbx r4, r3, r54120; CHECK-P10-NEXT:    blr4121;4122; CHECK-PREP10-LABEL: st_disjoint_align64_uint64_t_uint8_t:4123; CHECK-PREP10:       # %bb.0: # %entry4124; CHECK-PREP10-NEXT:    lis r5, 37254125; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234126; CHECK-PREP10-NEXT:    ori r5, r5, 190254127; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244128; CHECK-PREP10-NEXT:    stbx r4, r3, r54129; CHECK-PREP10-NEXT:    blr4130entry:4131  %and = and i64 %ptr, -10995116277764132  %or = or i64 %and, 10000000000004133  %0 = inttoptr i64 %or to ptr4134  %conv = trunc i64 %str to i84135  store atomic i8 %conv, ptr %0 monotonic, align 40964136  ret void4137}4138 4139; Function Attrs: nofree norecurse nounwind uwtable willreturn4140define dso_local void @st_cst_align16_uint64_t_uint8_t(i64 %str) {4141; CHECK-LABEL: st_cst_align16_uint64_t_uint8_t:4142; CHECK:       # %bb.0: # %entry4143; CHECK-NEXT:    stb r3, 4080(0)4144; CHECK-NEXT:    blr4145entry:4146  %conv = trunc i64 %str to i84147  store atomic i8 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 164148  ret void4149}4150 4151; Function Attrs: nofree norecurse nounwind uwtable willreturn4152define dso_local void @st_cst_align32_uint64_t_uint8_t(i64 %str) {4153; CHECK-LABEL: st_cst_align32_uint64_t_uint8_t:4154; CHECK:       # %bb.0: # %entry4155; CHECK-NEXT:    lis r4, 1534156; CHECK-NEXT:    stb r3, -27108(r4)4157; CHECK-NEXT:    blr4158entry:4159  %conv = trunc i64 %str to i84160  store atomic i8 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 44161  ret void4162}4163 4164; Function Attrs: nofree norecurse nounwind uwtable willreturn4165define dso_local void @st_cst_align64_uint64_t_uint8_t(i64 %str) {4166; CHECK-P10-LABEL: st_cst_align64_uint64_t_uint8_t:4167; CHECK-P10:       # %bb.0: # %entry4168; CHECK-P10-NEXT:    pli r4, 2441406254169; CHECK-P10-NEXT:    rldic r4, r4, 12, 244170; CHECK-P10-NEXT:    stb r3, 0(r4)4171; CHECK-P10-NEXT:    blr4172;4173; CHECK-PREP10-LABEL: st_cst_align64_uint64_t_uint8_t:4174; CHECK-PREP10:       # %bb.0: # %entry4175; CHECK-PREP10-NEXT:    lis r4, 37254176; CHECK-PREP10-NEXT:    ori r4, r4, 190254177; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244178; CHECK-PREP10-NEXT:    stb r3, 0(r4)4179; CHECK-PREP10-NEXT:    blr4180entry:4181  %conv = trunc i64 %str to i84182  store atomic i8 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964183  ret void4184}4185 4186; Function Attrs: nofree norecurse nounwind uwtable willreturn4187define dso_local void @st_0_uint64_t_uint16_t(i64 %ptr, i64 %str) {4188; CHECK-LABEL: st_0_uint64_t_uint16_t:4189; CHECK:       # %bb.0: # %entry4190; CHECK-NEXT:    sth r4, 0(r3)4191; CHECK-NEXT:    blr4192entry:4193  %0 = inttoptr i64 %ptr to ptr4194  %conv = trunc i64 %str to i164195  store atomic i16 %conv, ptr %0 monotonic, align 24196  ret void4197}4198 4199; Function Attrs: nofree norecurse nounwind uwtable willreturn4200define dso_local void @st_align16_uint64_t_uint16_t(ptr nocapture %ptr, i64 %str) {4201; CHECK-LABEL: st_align16_uint64_t_uint16_t:4202; CHECK:       # %bb.0: # %entry4203; CHECK-NEXT:    sth r4, 8(r3)4204; CHECK-NEXT:    blr4205entry:4206  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84207  %conv = trunc i64 %str to i164208  store atomic i16 %conv, ptr %add.ptr monotonic, align 24209  ret void4210}4211 4212; Function Attrs: nofree norecurse nounwind uwtable willreturn4213define dso_local void @st_align32_uint64_t_uint16_t(ptr nocapture %ptr, i64 %str) {4214; CHECK-P10-LABEL: st_align32_uint64_t_uint16_t:4215; CHECK-P10:       # %bb.0: # %entry4216; CHECK-P10-NEXT:    psth r4, 99999000(r3), 04217; CHECK-P10-NEXT:    blr4218;4219; CHECK-PREP10-LABEL: st_align32_uint64_t_uint16_t:4220; CHECK-PREP10:       # %bb.0: # %entry4221; CHECK-PREP10-NEXT:    lis r5, 15254222; CHECK-PREP10-NEXT:    ori r5, r5, 566004223; CHECK-PREP10-NEXT:    sthx r4, r3, r54224; CHECK-PREP10-NEXT:    blr4225entry:4226  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004227  %conv = trunc i64 %str to i164228  store atomic i16 %conv, ptr %add.ptr monotonic, align 24229  ret void4230}4231 4232; Function Attrs: nofree norecurse nounwind uwtable willreturn4233define dso_local void @st_align64_uint64_t_uint16_t(ptr nocapture %ptr, i64 %str) {4234; CHECK-P10-LABEL: st_align64_uint64_t_uint16_t:4235; CHECK-P10:       # %bb.0: # %entry4236; CHECK-P10-NEXT:    pli r5, 2441406254237; CHECK-P10-NEXT:    rldic r5, r5, 12, 244238; CHECK-P10-NEXT:    sthx r4, r3, r54239; CHECK-P10-NEXT:    blr4240;4241; CHECK-PREP10-LABEL: st_align64_uint64_t_uint16_t:4242; CHECK-PREP10:       # %bb.0: # %entry4243; CHECK-PREP10-NEXT:    lis r5, 37254244; CHECK-PREP10-NEXT:    ori r5, r5, 190254245; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244246; CHECK-PREP10-NEXT:    sthx r4, r3, r54247; CHECK-PREP10-NEXT:    blr4248entry:4249  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004250  %conv = trunc i64 %str to i164251  store atomic i16 %conv, ptr %add.ptr monotonic, align 24252  ret void4253}4254 4255; Function Attrs: nofree norecurse nounwind uwtable willreturn4256define dso_local void @st_reg_uint64_t_uint16_t(ptr nocapture %ptr, i64 %off, i64 %str) {4257; CHECK-LABEL: st_reg_uint64_t_uint16_t:4258; CHECK:       # %bb.0: # %entry4259; CHECK-NEXT:    sthx r5, r3, r44260; CHECK-NEXT:    blr4261entry:4262  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4263  %conv = trunc i64 %str to i164264  store atomic i16 %conv, ptr %add.ptr monotonic, align 24265  ret void4266}4267 4268; Function Attrs: nofree norecurse nounwind uwtable willreturn4269define dso_local void @st_or1_uint64_t_uint16_t(i64 %ptr, i8 zeroext %off, i64 %str) {4270; CHECK-LABEL: st_or1_uint64_t_uint16_t:4271; CHECK:       # %bb.0: # %entry4272; CHECK-NEXT:    or r3, r4, r34273; CHECK-NEXT:    sth r5, 0(r3)4274; CHECK-NEXT:    blr4275entry:4276  %conv = zext i8 %off to i644277  %or = or i64 %conv, %ptr4278  %0 = inttoptr i64 %or to ptr4279  %conv1 = trunc i64 %str to i164280  store atomic i16 %conv1, ptr %0 monotonic, align 24281  ret void4282}4283 4284; Function Attrs: nofree norecurse nounwind uwtable willreturn4285define dso_local void @st_not_disjoint16_uint64_t_uint16_t(i64 %ptr, i64 %str) {4286; CHECK-LABEL: st_not_disjoint16_uint64_t_uint16_t:4287; CHECK:       # %bb.0: # %entry4288; CHECK-NEXT:    ori r3, r3, 64289; CHECK-NEXT:    sth r4, 0(r3)4290; CHECK-NEXT:    blr4291entry:4292  %or = or i64 %ptr, 64293  %0 = inttoptr i64 %or to ptr4294  %conv = trunc i64 %str to i164295  store atomic i16 %conv, ptr %0 monotonic, align 24296  ret void4297}4298 4299; Function Attrs: nofree norecurse nounwind uwtable willreturn4300define dso_local void @st_disjoint_align16_uint64_t_uint16_t(i64 %ptr, i64 %str) {4301; CHECK-LABEL: st_disjoint_align16_uint64_t_uint16_t:4302; CHECK:       # %bb.0: # %entry4303; CHECK-NEXT:    rldicr r3, r3, 0, 514304; CHECK-NEXT:    sth r4, 24(r3)4305; CHECK-NEXT:    blr4306entry:4307  %and = and i64 %ptr, -40964308  %or = or i64 %and, 244309  %0 = inttoptr i64 %or to ptr4310  %conv = trunc i64 %str to i164311  store atomic i16 %conv, ptr %0 monotonic, align 84312  ret void4313}4314 4315; Function Attrs: nofree norecurse nounwind uwtable willreturn4316define dso_local void @st_not_disjoint32_uint64_t_uint16_t(i64 %ptr, i64 %str) {4317; CHECK-LABEL: st_not_disjoint32_uint64_t_uint16_t:4318; CHECK:       # %bb.0: # %entry4319; CHECK-NEXT:    ori r3, r3, 344634320; CHECK-NEXT:    oris r3, r3, 14321; CHECK-NEXT:    sth r4, 0(r3)4322; CHECK-NEXT:    blr4323entry:4324  %or = or i64 %ptr, 999994325  %0 = inttoptr i64 %or to ptr4326  %conv = trunc i64 %str to i164327  store atomic i16 %conv, ptr %0 monotonic, align 24328  ret void4329}4330 4331; Function Attrs: nofree norecurse nounwind uwtable willreturn4332define dso_local void @st_disjoint_align32_uint64_t_uint16_t(i64 %ptr, i64 %str) {4333; CHECK-P10-LABEL: st_disjoint_align32_uint64_t_uint16_t:4334; CHECK-P10:       # %bb.0: # %entry4335; CHECK-P10-NEXT:    lis r5, -152644336; CHECK-P10-NEXT:    and r3, r3, r54337; CHECK-P10-NEXT:    psth r4, 999990000(r3), 04338; CHECK-P10-NEXT:    blr4339;4340; CHECK-PREP10-LABEL: st_disjoint_align32_uint64_t_uint16_t:4341; CHECK-PREP10:       # %bb.0: # %entry4342; CHECK-PREP10-NEXT:    lis r5, -152644343; CHECK-PREP10-NEXT:    and r3, r3, r54344; CHECK-PREP10-NEXT:    lis r5, 152584345; CHECK-PREP10-NEXT:    ori r5, r5, 417124346; CHECK-PREP10-NEXT:    sthx r4, r3, r54347; CHECK-PREP10-NEXT:    blr4348entry:4349  %and = and i64 %ptr, -10003415044350  %or = or i64 %and, 9999900004351  %0 = inttoptr i64 %or to ptr4352  %conv = trunc i64 %str to i164353  store atomic i16 %conv, ptr %0 monotonic, align 164354  ret void4355}4356 4357; Function Attrs: nofree norecurse nounwind uwtable willreturn4358define dso_local void @st_not_disjoint64_uint64_t_uint16_t(i64 %ptr, i64 %str) {4359; CHECK-P10-LABEL: st_not_disjoint64_uint64_t_uint16_t:4360; CHECK-P10:       # %bb.0: # %entry4361; CHECK-P10-NEXT:    pli r5, 2324362; CHECK-P10-NEXT:    pli r6, 35675873294363; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04364; CHECK-P10-NEXT:    or r3, r3, r64365; CHECK-P10-NEXT:    sth r4, 0(r3)4366; CHECK-P10-NEXT:    blr4367;4368; CHECK-PREP10-LABEL: st_not_disjoint64_uint64_t_uint16_t:4369; CHECK-PREP10:       # %bb.0: # %entry4370; CHECK-PREP10-NEXT:    li r5, 294371; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244372; CHECK-PREP10-NEXT:    oris r5, r5, 544374373; CHECK-PREP10-NEXT:    ori r5, r5, 40974374; CHECK-PREP10-NEXT:    or r3, r3, r54375; CHECK-PREP10-NEXT:    sth r4, 0(r3)4376; CHECK-PREP10-NEXT:    blr4377entry:4378  %or = or i64 %ptr, 10000000000014379  %0 = inttoptr i64 %or to ptr4380  %conv = trunc i64 %str to i164381  store atomic i16 %conv, ptr %0 monotonic, align 24382  ret void4383}4384 4385; Function Attrs: nofree norecurse nounwind uwtable willreturn4386define dso_local void @st_disjoint_align64_uint64_t_uint16_t(i64 %ptr, i64 %str) {4387; CHECK-P10-LABEL: st_disjoint_align64_uint64_t_uint16_t:4388; CHECK-P10:       # %bb.0: # %entry4389; CHECK-P10-NEXT:    pli r5, 2441406254390; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234391; CHECK-P10-NEXT:    rldic r5, r5, 12, 244392; CHECK-P10-NEXT:    sthx r4, r3, r54393; CHECK-P10-NEXT:    blr4394;4395; CHECK-PREP10-LABEL: st_disjoint_align64_uint64_t_uint16_t:4396; CHECK-PREP10:       # %bb.0: # %entry4397; CHECK-PREP10-NEXT:    lis r5, 37254398; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234399; CHECK-PREP10-NEXT:    ori r5, r5, 190254400; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244401; CHECK-PREP10-NEXT:    sthx r4, r3, r54402; CHECK-PREP10-NEXT:    blr4403entry:4404  %and = and i64 %ptr, -10995116277764405  %or = or i64 %and, 10000000000004406  %0 = inttoptr i64 %or to ptr4407  %conv = trunc i64 %str to i164408  store atomic i16 %conv, ptr %0 monotonic, align 40964409  ret void4410}4411 4412; Function Attrs: nofree norecurse nounwind uwtable willreturn4413define dso_local void @st_cst_align16_uint64_t_uint16_t(i64 %str) {4414; CHECK-LABEL: st_cst_align16_uint64_t_uint16_t:4415; CHECK:       # %bb.0: # %entry4416; CHECK-NEXT:    sth r3, 4080(0)4417; CHECK-NEXT:    blr4418entry:4419  %conv = trunc i64 %str to i164420  store atomic i16 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 164421  ret void4422}4423 4424; Function Attrs: nofree norecurse nounwind uwtable willreturn4425define dso_local void @st_cst_align32_uint64_t_uint16_t(i64 %str) {4426; CHECK-LABEL: st_cst_align32_uint64_t_uint16_t:4427; CHECK:       # %bb.0: # %entry4428; CHECK-NEXT:    lis r4, 1534429; CHECK-NEXT:    sth r3, -27108(r4)4430; CHECK-NEXT:    blr4431entry:4432  %conv = trunc i64 %str to i164433  store atomic i16 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 44434  ret void4435}4436 4437; Function Attrs: nofree norecurse nounwind uwtable willreturn4438define dso_local void @st_cst_align64_uint64_t_uint16_t(i64 %str) {4439; CHECK-P10-LABEL: st_cst_align64_uint64_t_uint16_t:4440; CHECK-P10:       # %bb.0: # %entry4441; CHECK-P10-NEXT:    pli r4, 2441406254442; CHECK-P10-NEXT:    rldic r4, r4, 12, 244443; CHECK-P10-NEXT:    sth r3, 0(r4)4444; CHECK-P10-NEXT:    blr4445;4446; CHECK-PREP10-LABEL: st_cst_align64_uint64_t_uint16_t:4447; CHECK-PREP10:       # %bb.0: # %entry4448; CHECK-PREP10-NEXT:    lis r4, 37254449; CHECK-PREP10-NEXT:    ori r4, r4, 190254450; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244451; CHECK-PREP10-NEXT:    sth r3, 0(r4)4452; CHECK-PREP10-NEXT:    blr4453entry:4454  %conv = trunc i64 %str to i164455  store atomic i16 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964456  ret void4457}4458 4459; Function Attrs: nofree norecurse nounwind uwtable willreturn4460define dso_local void @st_0_uint64_t_uint32_t(i64 %ptr, i64 %str) {4461; CHECK-LABEL: st_0_uint64_t_uint32_t:4462; CHECK:       # %bb.0: # %entry4463; CHECK-NEXT:    stw r4, 0(r3)4464; CHECK-NEXT:    blr4465entry:4466  %0 = inttoptr i64 %ptr to ptr4467  %conv = trunc i64 %str to i324468  store atomic i32 %conv, ptr %0 monotonic, align 44469  ret void4470}4471 4472; Function Attrs: nofree norecurse nounwind uwtable willreturn4473define dso_local void @st_align16_uint64_t_uint32_t(ptr nocapture %ptr, i64 %str) {4474; CHECK-LABEL: st_align16_uint64_t_uint32_t:4475; CHECK:       # %bb.0: # %entry4476; CHECK-NEXT:    stw r4, 8(r3)4477; CHECK-NEXT:    blr4478entry:4479  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84480  %conv = trunc i64 %str to i324481  store atomic i32 %conv, ptr %add.ptr monotonic, align 44482  ret void4483}4484 4485; Function Attrs: nofree norecurse nounwind uwtable willreturn4486define dso_local void @st_align32_uint64_t_uint32_t(ptr nocapture %ptr, i64 %str) {4487; CHECK-P10-LABEL: st_align32_uint64_t_uint32_t:4488; CHECK-P10:       # %bb.0: # %entry4489; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 04490; CHECK-P10-NEXT:    blr4491;4492; CHECK-PREP10-LABEL: st_align32_uint64_t_uint32_t:4493; CHECK-PREP10:       # %bb.0: # %entry4494; CHECK-PREP10-NEXT:    lis r5, 15254495; CHECK-PREP10-NEXT:    ori r5, r5, 566004496; CHECK-PREP10-NEXT:    stwx r4, r3, r54497; CHECK-PREP10-NEXT:    blr4498entry:4499  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004500  %conv = trunc i64 %str to i324501  store atomic i32 %conv, ptr %add.ptr monotonic, align 44502  ret void4503}4504 4505; Function Attrs: nofree norecurse nounwind uwtable willreturn4506define dso_local void @st_align64_uint64_t_uint32_t(ptr nocapture %ptr, i64 %str) {4507; CHECK-P10-LABEL: st_align64_uint64_t_uint32_t:4508; CHECK-P10:       # %bb.0: # %entry4509; CHECK-P10-NEXT:    pli r5, 2441406254510; CHECK-P10-NEXT:    rldic r5, r5, 12, 244511; CHECK-P10-NEXT:    stwx r4, r3, r54512; CHECK-P10-NEXT:    blr4513;4514; CHECK-PREP10-LABEL: st_align64_uint64_t_uint32_t:4515; CHECK-PREP10:       # %bb.0: # %entry4516; CHECK-PREP10-NEXT:    lis r5, 37254517; CHECK-PREP10-NEXT:    ori r5, r5, 190254518; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244519; CHECK-PREP10-NEXT:    stwx r4, r3, r54520; CHECK-PREP10-NEXT:    blr4521entry:4522  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004523  %conv = trunc i64 %str to i324524  store atomic i32 %conv, ptr %add.ptr monotonic, align 44525  ret void4526}4527 4528; Function Attrs: nofree norecurse nounwind uwtable willreturn4529define dso_local void @st_reg_uint64_t_uint32_t(ptr nocapture %ptr, i64 %off, i64 %str) {4530; CHECK-LABEL: st_reg_uint64_t_uint32_t:4531; CHECK:       # %bb.0: # %entry4532; CHECK-NEXT:    stwx r5, r3, r44533; CHECK-NEXT:    blr4534entry:4535  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4536  %conv = trunc i64 %str to i324537  store atomic i32 %conv, ptr %add.ptr monotonic, align 44538  ret void4539}4540 4541; Function Attrs: nofree norecurse nounwind uwtable willreturn4542define dso_local void @st_or1_uint64_t_uint32_t(i64 %ptr, i8 zeroext %off, i64 %str) {4543; CHECK-LABEL: st_or1_uint64_t_uint32_t:4544; CHECK:       # %bb.0: # %entry4545; CHECK-NEXT:    or r3, r4, r34546; CHECK-NEXT:    stw r5, 0(r3)4547; CHECK-NEXT:    blr4548entry:4549  %conv = zext i8 %off to i644550  %or = or i64 %conv, %ptr4551  %0 = inttoptr i64 %or to ptr4552  %conv1 = trunc i64 %str to i324553  store atomic i32 %conv1, ptr %0 monotonic, align 44554  ret void4555}4556 4557; Function Attrs: nofree norecurse nounwind uwtable willreturn4558define dso_local void @st_not_disjoint16_uint64_t_uint32_t(i64 %ptr, i64 %str) {4559; CHECK-LABEL: st_not_disjoint16_uint64_t_uint32_t:4560; CHECK:       # %bb.0: # %entry4561; CHECK-NEXT:    ori r3, r3, 64562; CHECK-NEXT:    stw r4, 0(r3)4563; CHECK-NEXT:    blr4564entry:4565  %or = or i64 %ptr, 64566  %0 = inttoptr i64 %or to ptr4567  %conv = trunc i64 %str to i324568  store atomic i32 %conv, ptr %0 monotonic, align 44569  ret void4570}4571 4572; Function Attrs: nofree norecurse nounwind uwtable willreturn4573define dso_local void @st_disjoint_align16_uint64_t_uint32_t(i64 %ptr, i64 %str) {4574; CHECK-LABEL: st_disjoint_align16_uint64_t_uint32_t:4575; CHECK:       # %bb.0: # %entry4576; CHECK-NEXT:    rldicr r3, r3, 0, 514577; CHECK-NEXT:    stw r4, 24(r3)4578; CHECK-NEXT:    blr4579entry:4580  %and = and i64 %ptr, -40964581  %or = or i64 %and, 244582  %0 = inttoptr i64 %or to ptr4583  %conv = trunc i64 %str to i324584  store atomic i32 %conv, ptr %0 monotonic, align 84585  ret void4586}4587 4588; Function Attrs: nofree norecurse nounwind uwtable willreturn4589define dso_local void @st_not_disjoint32_uint64_t_uint32_t(i64 %ptr, i64 %str) {4590; CHECK-LABEL: st_not_disjoint32_uint64_t_uint32_t:4591; CHECK:       # %bb.0: # %entry4592; CHECK-NEXT:    ori r3, r3, 344634593; CHECK-NEXT:    oris r3, r3, 14594; CHECK-NEXT:    stw r4, 0(r3)4595; CHECK-NEXT:    blr4596entry:4597  %or = or i64 %ptr, 999994598  %0 = inttoptr i64 %or to ptr4599  %conv = trunc i64 %str to i324600  store atomic i32 %conv, ptr %0 monotonic, align 44601  ret void4602}4603 4604; Function Attrs: nofree norecurse nounwind uwtable willreturn4605define dso_local void @st_disjoint_align32_uint64_t_uint32_t(i64 %ptr, i64 %str) {4606; CHECK-P10-LABEL: st_disjoint_align32_uint64_t_uint32_t:4607; CHECK-P10:       # %bb.0: # %entry4608; CHECK-P10-NEXT:    lis r5, -152644609; CHECK-P10-NEXT:    and r3, r3, r54610; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 04611; CHECK-P10-NEXT:    blr4612;4613; CHECK-PREP10-LABEL: st_disjoint_align32_uint64_t_uint32_t:4614; CHECK-PREP10:       # %bb.0: # %entry4615; CHECK-PREP10-NEXT:    lis r5, -152644616; CHECK-PREP10-NEXT:    and r3, r3, r54617; CHECK-PREP10-NEXT:    lis r5, 152584618; CHECK-PREP10-NEXT:    ori r5, r5, 417124619; CHECK-PREP10-NEXT:    stwx r4, r3, r54620; CHECK-PREP10-NEXT:    blr4621entry:4622  %and = and i64 %ptr, -10003415044623  %or = or i64 %and, 9999900004624  %0 = inttoptr i64 %or to ptr4625  %conv = trunc i64 %str to i324626  store atomic i32 %conv, ptr %0 monotonic, align 164627  ret void4628}4629 4630; Function Attrs: nofree norecurse nounwind uwtable willreturn4631define dso_local void @st_not_disjoint64_uint64_t_uint32_t(i64 %ptr, i64 %str) {4632; CHECK-P10-LABEL: st_not_disjoint64_uint64_t_uint32_t:4633; CHECK-P10:       # %bb.0: # %entry4634; CHECK-P10-NEXT:    pli r5, 2324635; CHECK-P10-NEXT:    pli r6, 35675873294636; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04637; CHECK-P10-NEXT:    or r3, r3, r64638; CHECK-P10-NEXT:    stw r4, 0(r3)4639; CHECK-P10-NEXT:    blr4640;4641; CHECK-PREP10-LABEL: st_not_disjoint64_uint64_t_uint32_t:4642; CHECK-PREP10:       # %bb.0: # %entry4643; CHECK-PREP10-NEXT:    li r5, 294644; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244645; CHECK-PREP10-NEXT:    oris r5, r5, 544374646; CHECK-PREP10-NEXT:    ori r5, r5, 40974647; CHECK-PREP10-NEXT:    or r3, r3, r54648; CHECK-PREP10-NEXT:    stw r4, 0(r3)4649; CHECK-PREP10-NEXT:    blr4650entry:4651  %or = or i64 %ptr, 10000000000014652  %0 = inttoptr i64 %or to ptr4653  %conv = trunc i64 %str to i324654  store atomic i32 %conv, ptr %0 monotonic, align 44655  ret void4656}4657 4658; Function Attrs: nofree norecurse nounwind uwtable willreturn4659define dso_local void @st_disjoint_align64_uint64_t_uint32_t(i64 %ptr, i64 %str) {4660; CHECK-P10-LABEL: st_disjoint_align64_uint64_t_uint32_t:4661; CHECK-P10:       # %bb.0: # %entry4662; CHECK-P10-NEXT:    pli r5, 2441406254663; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234664; CHECK-P10-NEXT:    rldic r5, r5, 12, 244665; CHECK-P10-NEXT:    stwx r4, r3, r54666; CHECK-P10-NEXT:    blr4667;4668; CHECK-PREP10-LABEL: st_disjoint_align64_uint64_t_uint32_t:4669; CHECK-PREP10:       # %bb.0: # %entry4670; CHECK-PREP10-NEXT:    lis r5, 37254671; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234672; CHECK-PREP10-NEXT:    ori r5, r5, 190254673; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244674; CHECK-PREP10-NEXT:    stwx r4, r3, r54675; CHECK-PREP10-NEXT:    blr4676entry:4677  %and = and i64 %ptr, -10995116277764678  %or = or i64 %and, 10000000000004679  %0 = inttoptr i64 %or to ptr4680  %conv = trunc i64 %str to i324681  store atomic i32 %conv, ptr %0 monotonic, align 40964682  ret void4683}4684 4685; Function Attrs: nofree norecurse nounwind uwtable willreturn4686define dso_local void @st_cst_align16_uint64_t_uint32_t(i64 %str) {4687; CHECK-LABEL: st_cst_align16_uint64_t_uint32_t:4688; CHECK:       # %bb.0: # %entry4689; CHECK-NEXT:    stw r3, 4080(0)4690; CHECK-NEXT:    blr4691entry:4692  %conv = trunc i64 %str to i324693  store atomic i32 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 164694  ret void4695}4696 4697; Function Attrs: nofree norecurse nounwind uwtable willreturn4698define dso_local void @st_cst_align32_uint64_t_uint32_t(i64 %str) {4699; CHECK-LABEL: st_cst_align32_uint64_t_uint32_t:4700; CHECK:       # %bb.0: # %entry4701; CHECK-NEXT:    lis r4, 1534702; CHECK-NEXT:    stw r3, -27108(r4)4703; CHECK-NEXT:    blr4704entry:4705  %conv = trunc i64 %str to i324706  store atomic i32 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 44707  ret void4708}4709 4710; Function Attrs: nofree norecurse nounwind uwtable willreturn4711define dso_local void @st_cst_align64_uint64_t_uint32_t(i64 %str) {4712; CHECK-P10-LABEL: st_cst_align64_uint64_t_uint32_t:4713; CHECK-P10:       # %bb.0: # %entry4714; CHECK-P10-NEXT:    pli r4, 2441406254715; CHECK-P10-NEXT:    rldic r4, r4, 12, 244716; CHECK-P10-NEXT:    stw r3, 0(r4)4717; CHECK-P10-NEXT:    blr4718;4719; CHECK-PREP10-LABEL: st_cst_align64_uint64_t_uint32_t:4720; CHECK-PREP10:       # %bb.0: # %entry4721; CHECK-PREP10-NEXT:    lis r4, 37254722; CHECK-PREP10-NEXT:    ori r4, r4, 190254723; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244724; CHECK-PREP10-NEXT:    stw r3, 0(r4)4725; CHECK-PREP10-NEXT:    blr4726entry:4727  %conv = trunc i64 %str to i324728  store atomic i32 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964729  ret void4730}4731 4732; Function Attrs: nofree norecurse nounwind uwtable willreturn4733define dso_local void @st_0_uint64_t_uint64_t(i64 %ptr, i64 %str) {4734; CHECK-LABEL: st_0_uint64_t_uint64_t:4735; CHECK:       # %bb.0: # %entry4736; CHECK-NEXT:    std r4, 0(r3)4737; CHECK-NEXT:    blr4738entry:4739  %0 = inttoptr i64 %ptr to ptr4740  store atomic i64 %str, ptr %0 monotonic, align 84741  ret void4742}4743 4744; Function Attrs: nofree norecurse nounwind uwtable willreturn4745define dso_local void @st_align16_uint64_t_uint64_t(ptr nocapture %ptr, i64 %str) {4746; CHECK-LABEL: st_align16_uint64_t_uint64_t:4747; CHECK:       # %bb.0: # %entry4748; CHECK-NEXT:    std r4, 8(r3)4749; CHECK-NEXT:    blr4750entry:4751  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84752  store atomic i64 %str, ptr %add.ptr monotonic, align 84753  ret void4754}4755 4756; Function Attrs: nofree norecurse nounwind uwtable willreturn4757define dso_local void @st_align32_uint64_t_uint64_t(ptr nocapture %ptr, i64 %str) {4758; CHECK-P10-LABEL: st_align32_uint64_t_uint64_t:4759; CHECK-P10:       # %bb.0: # %entry4760; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 04761; CHECK-P10-NEXT:    blr4762;4763; CHECK-PREP10-LABEL: st_align32_uint64_t_uint64_t:4764; CHECK-PREP10:       # %bb.0: # %entry4765; CHECK-PREP10-NEXT:    lis r5, 15254766; CHECK-PREP10-NEXT:    ori r5, r5, 566004767; CHECK-PREP10-NEXT:    stdx r4, r3, r54768; CHECK-PREP10-NEXT:    blr4769entry:4770  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004771  store atomic i64 %str, ptr %add.ptr monotonic, align 84772  ret void4773}4774 4775; Function Attrs: nofree norecurse nounwind uwtable willreturn4776define dso_local void @st_align64_uint64_t_uint64_t(ptr nocapture %ptr, i64 %str) {4777; CHECK-P10-LABEL: st_align64_uint64_t_uint64_t:4778; CHECK-P10:       # %bb.0: # %entry4779; CHECK-P10-NEXT:    pli r5, 2441406254780; CHECK-P10-NEXT:    rldic r5, r5, 12, 244781; CHECK-P10-NEXT:    stdx r4, r3, r54782; CHECK-P10-NEXT:    blr4783;4784; CHECK-PREP10-LABEL: st_align64_uint64_t_uint64_t:4785; CHECK-PREP10:       # %bb.0: # %entry4786; CHECK-PREP10-NEXT:    lis r5, 37254787; CHECK-PREP10-NEXT:    ori r5, r5, 190254788; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244789; CHECK-PREP10-NEXT:    stdx r4, r3, r54790; CHECK-PREP10-NEXT:    blr4791entry:4792  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004793  store atomic i64 %str, ptr %add.ptr monotonic, align 84794  ret void4795}4796 4797; Function Attrs: nofree norecurse nounwind uwtable willreturn4798define dso_local void @st_reg_uint64_t_uint64_t(ptr nocapture %ptr, i64 %off, i64 %str) {4799; CHECK-LABEL: st_reg_uint64_t_uint64_t:4800; CHECK:       # %bb.0: # %entry4801; CHECK-NEXT:    stdx r5, r3, r44802; CHECK-NEXT:    blr4803entry:4804  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4805  store atomic i64 %str, ptr %add.ptr monotonic, align 84806  ret void4807}4808 4809; Function Attrs: nofree norecurse nounwind uwtable willreturn4810define dso_local void @st_or1_uint64_t_uint64_t(i64 %ptr, i8 zeroext %off, i64 %str) {4811; CHECK-LABEL: st_or1_uint64_t_uint64_t:4812; CHECK:       # %bb.0: # %entry4813; CHECK-NEXT:    or r3, r4, r34814; CHECK-NEXT:    std r5, 0(r3)4815; CHECK-NEXT:    blr4816entry:4817  %conv = zext i8 %off to i644818  %or = or i64 %conv, %ptr4819  %0 = inttoptr i64 %or to ptr4820  store atomic i64 %str, ptr %0 monotonic, align 84821  ret void4822}4823 4824; Function Attrs: nofree norecurse nounwind uwtable willreturn4825define dso_local void @st_not_disjoint16_uint64_t_uint64_t(i64 %ptr, i64 %str) {4826; CHECK-LABEL: st_not_disjoint16_uint64_t_uint64_t:4827; CHECK:       # %bb.0: # %entry4828; CHECK-NEXT:    ori r3, r3, 64829; CHECK-NEXT:    std r4, 0(r3)4830; CHECK-NEXT:    blr4831entry:4832  %or = or i64 %ptr, 64833  %0 = inttoptr i64 %or to ptr4834  store atomic i64 %str, ptr %0 monotonic, align 84835  ret void4836}4837 4838; Function Attrs: nofree norecurse nounwind uwtable willreturn4839define dso_local void @st_disjoint_align16_uint64_t_uint64_t(i64 %ptr, i64 %str) {4840; CHECK-LABEL: st_disjoint_align16_uint64_t_uint64_t:4841; CHECK:       # %bb.0: # %entry4842; CHECK-NEXT:    rldicr r3, r3, 0, 514843; CHECK-NEXT:    std r4, 24(r3)4844; CHECK-NEXT:    blr4845entry:4846  %and = and i64 %ptr, -40964847  %or = or i64 %and, 244848  %0 = inttoptr i64 %or to ptr4849  store atomic i64 %str, ptr %0 monotonic, align 84850  ret void4851}4852 4853; Function Attrs: nofree norecurse nounwind uwtable willreturn4854define dso_local void @st_not_disjoint32_uint64_t_uint64_t(i64 %ptr, i64 %str) {4855; CHECK-LABEL: st_not_disjoint32_uint64_t_uint64_t:4856; CHECK:       # %bb.0: # %entry4857; CHECK-NEXT:    ori r3, r3, 344634858; CHECK-NEXT:    oris r3, r3, 14859; CHECK-NEXT:    std r4, 0(r3)4860; CHECK-NEXT:    blr4861entry:4862  %or = or i64 %ptr, 999994863  %0 = inttoptr i64 %or to ptr4864  store atomic i64 %str, ptr %0 monotonic, align 84865  ret void4866}4867 4868; Function Attrs: nofree norecurse nounwind uwtable willreturn4869define dso_local void @st_disjoint_align32_uint64_t_uint64_t(i64 %ptr, i64 %str) {4870; CHECK-P10-LABEL: st_disjoint_align32_uint64_t_uint64_t:4871; CHECK-P10:       # %bb.0: # %entry4872; CHECK-P10-NEXT:    lis r5, -152644873; CHECK-P10-NEXT:    and r3, r3, r54874; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 04875; CHECK-P10-NEXT:    blr4876;4877; CHECK-PREP10-LABEL: st_disjoint_align32_uint64_t_uint64_t:4878; CHECK-PREP10:       # %bb.0: # %entry4879; CHECK-PREP10-NEXT:    lis r5, -152644880; CHECK-PREP10-NEXT:    and r3, r3, r54881; CHECK-PREP10-NEXT:    lis r5, 152584882; CHECK-PREP10-NEXT:    ori r5, r5, 417124883; CHECK-PREP10-NEXT:    stdx r4, r3, r54884; CHECK-PREP10-NEXT:    blr4885entry:4886  %and = and i64 %ptr, -10003415044887  %or = or i64 %and, 9999900004888  %0 = inttoptr i64 %or to ptr4889  store atomic i64 %str, ptr %0 monotonic, align 164890  ret void4891}4892 4893; Function Attrs: nofree norecurse nounwind uwtable willreturn4894define dso_local void @st_not_disjoint64_uint64_t_uint64_t(i64 %ptr, i64 %str) {4895; CHECK-P10-LABEL: st_not_disjoint64_uint64_t_uint64_t:4896; CHECK-P10:       # %bb.0: # %entry4897; CHECK-P10-NEXT:    pli r5, 2324898; CHECK-P10-NEXT:    pli r6, 35675873294899; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04900; CHECK-P10-NEXT:    or r3, r3, r64901; CHECK-P10-NEXT:    std r4, 0(r3)4902; CHECK-P10-NEXT:    blr4903;4904; CHECK-PREP10-LABEL: st_not_disjoint64_uint64_t_uint64_t:4905; CHECK-PREP10:       # %bb.0: # %entry4906; CHECK-PREP10-NEXT:    li r5, 294907; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244908; CHECK-PREP10-NEXT:    oris r5, r5, 544374909; CHECK-PREP10-NEXT:    ori r5, r5, 40974910; CHECK-PREP10-NEXT:    or r3, r3, r54911; CHECK-PREP10-NEXT:    std r4, 0(r3)4912; CHECK-PREP10-NEXT:    blr4913entry:4914  %or = or i64 %ptr, 10000000000014915  %0 = inttoptr i64 %or to ptr4916  store atomic i64 %str, ptr %0 monotonic, align 84917  ret void4918}4919 4920; Function Attrs: nofree norecurse nounwind uwtable willreturn4921define dso_local void @st_disjoint_align64_uint64_t_uint64_t(i64 %ptr, i64 %str) {4922; CHECK-P10-LABEL: st_disjoint_align64_uint64_t_uint64_t:4923; CHECK-P10:       # %bb.0: # %entry4924; CHECK-P10-NEXT:    pli r5, 2441406254925; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234926; CHECK-P10-NEXT:    rldic r5, r5, 12, 244927; CHECK-P10-NEXT:    stdx r4, r3, r54928; CHECK-P10-NEXT:    blr4929;4930; CHECK-PREP10-LABEL: st_disjoint_align64_uint64_t_uint64_t:4931; CHECK-PREP10:       # %bb.0: # %entry4932; CHECK-PREP10-NEXT:    lis r5, 37254933; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234934; CHECK-PREP10-NEXT:    ori r5, r5, 190254935; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244936; CHECK-PREP10-NEXT:    stdx r4, r3, r54937; CHECK-PREP10-NEXT:    blr4938entry:4939  %and = and i64 %ptr, -10995116277764940  %or = or i64 %and, 10000000000004941  %0 = inttoptr i64 %or to ptr4942  store atomic i64 %str, ptr %0 monotonic, align 40964943  ret void4944}4945 4946; Function Attrs: nofree norecurse nounwind uwtable willreturn4947define dso_local void @st_cst_align16_uint64_t_uint64_t(i64 %str) {4948; CHECK-LABEL: st_cst_align16_uint64_t_uint64_t:4949; CHECK:       # %bb.0: # %entry4950; CHECK-NEXT:    std r3, 4080(0)4951; CHECK-NEXT:    blr4952entry:4953  store atomic i64 %str, ptr inttoptr (i64 4080 to ptr) monotonic, align 164954  ret void4955}4956 4957; Function Attrs: nofree norecurse nounwind uwtable willreturn4958define dso_local void @st_cst_align32_uint64_t_uint64_t(i64 %str) {4959; CHECK-LABEL: st_cst_align32_uint64_t_uint64_t:4960; CHECK:       # %bb.0: # %entry4961; CHECK-NEXT:    lis r4, 1534962; CHECK-NEXT:    std r3, -27108(r4)4963; CHECK-NEXT:    blr4964entry:4965  store atomic i64 %str, ptr inttoptr (i64 9999900 to ptr) monotonic, align 84966  ret void4967}4968 4969; Function Attrs: nofree norecurse nounwind uwtable willreturn4970define dso_local void @st_cst_align64_uint64_t_uint64_t(i64 %str) {4971; CHECK-P10-LABEL: st_cst_align64_uint64_t_uint64_t:4972; CHECK-P10:       # %bb.0: # %entry4973; CHECK-P10-NEXT:    pli r4, 2441406254974; CHECK-P10-NEXT:    rldic r4, r4, 12, 244975; CHECK-P10-NEXT:    std r3, 0(r4)4976; CHECK-P10-NEXT:    blr4977;4978; CHECK-PREP10-LABEL: st_cst_align64_uint64_t_uint64_t:4979; CHECK-PREP10:       # %bb.0: # %entry4980; CHECK-PREP10-NEXT:    lis r4, 37254981; CHECK-PREP10-NEXT:    ori r4, r4, 190254982; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244983; CHECK-PREP10-NEXT:    std r3, 0(r4)4984; CHECK-PREP10-NEXT:    blr4985entry:4986  store atomic i64 %str, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964987  ret void4988}4989;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4990; CHECK-P8: {{.*}}4991; CHECK-P9: {{.*}}4992