brintos

brintos / llvm-project-archived public Read only

0
0
Text · 151.8 KiB · 61f06c6 Raw
4517 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-PREP1011; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \12; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \13; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP1014; 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-PREP1017; 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-PREP1020 21; Function Attrs: nofree norecurse nounwind uwtable willreturn22define dso_local signext i16 @ld_0_int16_t_uint8_t(i64 %ptr) {23; CHECK-LABEL: ld_0_int16_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 i1631  ret i16 %conv32}33 34; Function Attrs: nofree norecurse nounwind uwtable willreturn35define dso_local signext i16 @ld_align16_int16_t_uint8_t(ptr nocapture readonly %ptr) {36; CHECK-LABEL: ld_align16_int16_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 i1644  ret i16 %conv45}46 47; Function Attrs: nofree norecurse nounwind uwtable willreturn48define dso_local signext i16 @ld_align32_int16_t_uint8_t(ptr nocapture readonly %ptr) {49; CHECK-P10-LABEL: ld_align32_int16_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_int16_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 i1665  ret i16 %conv66}67 68; Function Attrs: nofree norecurse nounwind uwtable willreturn69define dso_local signext i16 @ld_align64_int16_t_uint8_t(ptr nocapture readonly %ptr) {70; CHECK-P10-LABEL: ld_align64_int16_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_int16_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 i1688  ret i16 %conv89}90 91; Function Attrs: nofree norecurse nounwind uwtable willreturn92define dso_local signext i16 @ld_reg_int16_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {93; CHECK-LABEL: ld_reg_int16_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 i16101  ret i16 %conv102}103 104; Function Attrs: nofree norecurse nounwind uwtable willreturn105define dso_local signext i16 @ld_or_int16_t_uint8_t(i64 %ptr, i8 zeroext %off) {106; CHECK-LABEL: ld_or_int16_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 i16117  ret i16 %conv1118}119 120; Function Attrs: nofree norecurse nounwind uwtable willreturn121define dso_local signext i16 @ld_not_disjoint16_int16_t_uint8_t(i64 %ptr) {122; CHECK-LABEL: ld_not_disjoint16_int16_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 i16132  ret i16 %conv133}134 135; Function Attrs: nofree norecurse nounwind uwtable willreturn136define dso_local signext i16 @ld_disjoint_align16_int16_t_uint8_t(i64 %ptr) {137; CHECK-LABEL: ld_disjoint_align16_int16_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 i16148  ret i16 %conv149}150 151; Function Attrs: nofree norecurse nounwind uwtable willreturn152define dso_local signext i16 @ld_not_disjoint32_int16_t_uint8_t(i64 %ptr) {153; CHECK-LABEL: ld_not_disjoint32_int16_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 i16164  ret i16 %conv165}166 167; Function Attrs: nofree norecurse nounwind uwtable willreturn168define dso_local signext i16 @ld_disjoint_align32_int16_t_uint8_t(i64 %ptr) {169; CHECK-P10-LABEL: ld_disjoint_align32_int16_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_int16_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 i16191  ret i16 %conv192}193 194; Function Attrs: nofree norecurse nounwind uwtable willreturn195define dso_local signext i16 @ld_not_disjoint64_int16_t_uint8_t(i64 %ptr) {196; CHECK-P10-LABEL: ld_not_disjoint64_int16_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_int16_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 i16219  ret i16 %conv220}221 222; Function Attrs: nofree norecurse nounwind uwtable willreturn223define dso_local signext i16 @ld_disjoint_align64_int16_t_uint8_t(i64 %ptr) {224; CHECK-P10-LABEL: ld_disjoint_align64_int16_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_int16_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 i16246  ret i16 %conv247}248 249; Function Attrs: nofree norecurse nounwind uwtable willreturn250define dso_local signext i16 @ld_cst_align16_int16_t_uint8_t() {251; CHECK-LABEL: ld_cst_align16_int16_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 i16258  ret i16 %conv259}260 261; Function Attrs: nofree norecurse nounwind uwtable willreturn262define dso_local signext i16 @ld_cst_align32_int16_t_uint8_t() {263; CHECK-LABEL: ld_cst_align32_int16_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 i16271  ret i16 %conv272}273 274; Function Attrs: nofree norecurse nounwind uwtable willreturn275define dso_local signext i16 @ld_cst_align64_int16_t_uint8_t() {276; CHECK-P10-LABEL: ld_cst_align64_int16_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_int16_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 i16293  ret i16 %conv294}295 296; Function Attrs: nofree norecurse nounwind uwtable willreturn297define dso_local signext i16 @ld_0_int16_t_int8_t(i64 %ptr) {298; CHECK-LABEL: ld_0_int16_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 i16307  ret i16 %conv308}309 310; Function Attrs: nofree norecurse nounwind uwtable willreturn311define dso_local signext i16 @ld_align16_int16_t_int8_t(ptr nocapture readonly %ptr) {312; CHECK-LABEL: ld_align16_int16_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 i16321  ret i16 %conv322}323 324; Function Attrs: nofree norecurse nounwind uwtable willreturn325define dso_local signext i16 @ld_align32_int16_t_int8_t(ptr nocapture readonly %ptr) {326; CHECK-P10-LABEL: ld_align32_int16_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_int16_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 i16343  ret i16 %conv344}345 346; Function Attrs: nofree norecurse nounwind uwtable willreturn347define dso_local signext i16 @ld_align64_int16_t_int8_t(ptr nocapture readonly %ptr) {348; CHECK-P10-LABEL: ld_align64_int16_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_int16_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 i16368  ret i16 %conv369}370 371; Function Attrs: nofree norecurse nounwind uwtable willreturn372define dso_local signext i16 @ld_reg_int16_t_int8_t(ptr nocapture readonly %ptr, i64 %off) {373; CHECK-LABEL: ld_reg_int16_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 i16382  ret i16 %conv383}384 385; Function Attrs: nofree norecurse nounwind uwtable willreturn386define dso_local signext i16 @ld_or_int16_t_int8_t(i64 %ptr, i8 zeroext %off) {387; CHECK-LABEL: ld_or_int16_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 i16399  ret i16 %conv1400}401 402; Function Attrs: nofree norecurse nounwind uwtable willreturn403define dso_local signext i16 @ld_not_disjoint16_int16_t_int8_t(i64 %ptr) {404; CHECK-LABEL: ld_not_disjoint16_int16_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 i16415  ret i16 %conv416}417 418; Function Attrs: nofree norecurse nounwind uwtable willreturn419define dso_local signext i16 @ld_disjoint_align16_int16_t_int8_t(i64 %ptr) {420; CHECK-LABEL: ld_disjoint_align16_int16_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 i16432  ret i16 %conv433}434 435; Function Attrs: nofree norecurse nounwind uwtable willreturn436define dso_local signext i16 @ld_not_disjoint32_int16_t_int8_t(i64 %ptr) {437; CHECK-LABEL: ld_not_disjoint32_int16_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 i16449  ret i16 %conv450}451 452; Function Attrs: nofree norecurse nounwind uwtable willreturn453define dso_local signext i16 @ld_disjoint_align32_int16_t_int8_t(i64 %ptr) {454; CHECK-P10-LABEL: ld_disjoint_align32_int16_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_int16_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 i16477  ret i16 %conv478}479 480; Function Attrs: nofree norecurse nounwind uwtable willreturn481define dso_local signext i16 @ld_not_disjoint64_int16_t_int8_t(i64 %ptr) {482; CHECK-P10-LABEL: ld_not_disjoint64_int16_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_int16_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 i16507  ret i16 %conv508}509 510; Function Attrs: nofree norecurse nounwind uwtable willreturn511define dso_local signext i16 @ld_disjoint_align64_int16_t_int8_t(i64 %ptr) {512; CHECK-P10-LABEL: ld_disjoint_align64_int16_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_int16_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 i16536  ret i16 %conv537}538 539; Function Attrs: nofree norecurse nounwind uwtable willreturn540define dso_local signext i16 @ld_cst_align16_int16_t_int8_t() {541; CHECK-LABEL: ld_cst_align16_int16_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 i16549  ret i16 %conv550}551 552; Function Attrs: nofree norecurse nounwind uwtable willreturn553define dso_local signext i16 @ld_cst_align32_int16_t_int8_t() {554; CHECK-LABEL: ld_cst_align32_int16_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 i16563  ret i16 %conv564}565 566; Function Attrs: nofree norecurse nounwind uwtable willreturn567define dso_local signext i16 @ld_cst_align64_int16_t_int8_t() {568; CHECK-P10-LABEL: ld_cst_align64_int16_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_int16_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 i16587  ret i16 %conv588}589 590; Function Attrs: nofree norecurse nounwind uwtable willreturn591define dso_local signext i16 @ld_0_int16_t_uint16_t(i64 %ptr) {592; CHECK-LABEL: ld_0_int16_t_uint16_t:593; CHECK:       # %bb.0: # %entry594; CHECK-NEXT:    lhz r3, 0(r3)595; CHECK-NEXT:    extsh r3, r3596; CHECK-NEXT:    blr597entry:598  %0 = inttoptr i64 %ptr to ptr599  %1 = load atomic i16, ptr %0 monotonic, align 2600  ret i16 %1601}602 603; Function Attrs: nofree norecurse nounwind uwtable willreturn604define dso_local signext i16 @ld_align16_int16_t_uint16_t(ptr nocapture readonly %ptr) {605; CHECK-LABEL: ld_align16_int16_t_uint16_t:606; CHECK:       # %bb.0: # %entry607; CHECK-NEXT:    lhz r3, 8(r3)608; CHECK-NEXT:    extsh r3, r3609; CHECK-NEXT:    blr610entry:611  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8612  %0 = load atomic i16, ptr %add.ptr monotonic, align 2613  ret i16 %0614}615 616; Function Attrs: nofree norecurse nounwind uwtable willreturn617define dso_local signext i16 @ld_align32_int16_t_uint16_t(ptr nocapture readonly %ptr) {618; CHECK-P10-LABEL: ld_align32_int16_t_uint16_t:619; CHECK-P10:       # %bb.0: # %entry620; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 0621; CHECK-P10-NEXT:    extsh r3, r3622; CHECK-P10-NEXT:    blr623;624; CHECK-PREP10-LABEL: ld_align32_int16_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:    extsh r3, r3630; CHECK-PREP10-NEXT:    blr631entry:632  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000633  %0 = load atomic i16, ptr %add.ptr monotonic, align 2634  ret i16 %0635}636 637; Function Attrs: nofree norecurse nounwind uwtable willreturn638define dso_local signext i16 @ld_align64_int16_t_uint16_t(ptr nocapture readonly %ptr) {639; CHECK-P10-LABEL: ld_align64_int16_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:    extsh r3, r3645; CHECK-P10-NEXT:    blr646;647; CHECK-PREP10-LABEL: ld_align64_int16_t_uint16_t:648; CHECK-PREP10:       # %bb.0: # %entry649; CHECK-PREP10-NEXT:    lis r4, 3725650; CHECK-PREP10-NEXT:    ori r4, r4, 19025651; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24652; CHECK-PREP10-NEXT:    lhzx r3, r3, r4653; CHECK-PREP10-NEXT:    extsh r3, r3654; CHECK-PREP10-NEXT:    blr655entry:656  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000657  %0 = load atomic i16, ptr %add.ptr monotonic, align 2658  ret i16 %0659}660 661; Function Attrs: nofree norecurse nounwind uwtable willreturn662define dso_local signext i16 @ld_reg_int16_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {663; CHECK-LABEL: ld_reg_int16_t_uint16_t:664; CHECK:       # %bb.0: # %entry665; CHECK-NEXT:    lhzx r3, r3, r4666; CHECK-NEXT:    extsh r3, r3667; CHECK-NEXT:    blr668entry:669  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off670  %0 = load atomic i16, ptr %add.ptr monotonic, align 2671  ret i16 %0672}673 674; Function Attrs: nofree norecurse nounwind uwtable willreturn675define dso_local signext i16 @ld_or_int16_t_uint16_t(i64 %ptr, i8 zeroext %off) {676; CHECK-LABEL: ld_or_int16_t_uint16_t:677; CHECK:       # %bb.0: # %entry678; CHECK-NEXT:    or r3, r4, r3679; CHECK-NEXT:    lhz r3, 0(r3)680; CHECK-NEXT:    extsh r3, r3681; CHECK-NEXT:    blr682entry:683  %conv = zext i8 %off to i64684  %or = or i64 %conv, %ptr685  %0 = inttoptr i64 %or to ptr686  %1 = load atomic i16, ptr %0 monotonic, align 2687  ret i16 %1688}689 690; Function Attrs: nofree norecurse nounwind uwtable willreturn691define dso_local signext i16 @ld_not_disjoint16_int16_t_uint16_t(i64 %ptr) {692; CHECK-LABEL: ld_not_disjoint16_int16_t_uint16_t:693; CHECK:       # %bb.0: # %entry694; CHECK-NEXT:    ori r3, r3, 6695; CHECK-NEXT:    lhz r3, 0(r3)696; CHECK-NEXT:    extsh r3, r3697; CHECK-NEXT:    blr698entry:699  %or = or i64 %ptr, 6700  %0 = inttoptr i64 %or to ptr701  %1 = load atomic i16, ptr %0 monotonic, align 2702  ret i16 %1703}704 705; Function Attrs: nofree norecurse nounwind uwtable willreturn706define dso_local signext i16 @ld_disjoint_align16_int16_t_uint16_t(i64 %ptr) {707; CHECK-LABEL: ld_disjoint_align16_int16_t_uint16_t:708; CHECK:       # %bb.0: # %entry709; CHECK-NEXT:    rldicr r3, r3, 0, 51710; CHECK-NEXT:    lhz r3, 24(r3)711; CHECK-NEXT:    extsh r3, r3712; CHECK-NEXT:    blr713entry:714  %and = and i64 %ptr, -4096715  %or = or i64 %and, 24716  %0 = inttoptr i64 %or to ptr717  %1 = load atomic i16, ptr %0 monotonic, align 8718  ret i16 %1719}720 721; Function Attrs: nofree norecurse nounwind uwtable willreturn722define dso_local signext i16 @ld_not_disjoint32_int16_t_uint16_t(i64 %ptr) {723; CHECK-LABEL: ld_not_disjoint32_int16_t_uint16_t:724; CHECK:       # %bb.0: # %entry725; CHECK-NEXT:    ori r3, r3, 34463726; CHECK-NEXT:    oris r3, r3, 1727; CHECK-NEXT:    lhz r3, 0(r3)728; CHECK-NEXT:    extsh r3, r3729; CHECK-NEXT:    blr730entry:731  %or = or i64 %ptr, 99999732  %0 = inttoptr i64 %or to ptr733  %1 = load atomic i16, ptr %0 monotonic, align 2734  ret i16 %1735}736 737; Function Attrs: nofree norecurse nounwind uwtable willreturn738define dso_local signext i16 @ld_disjoint_align32_int16_t_uint16_t(i64 %ptr) {739; CHECK-P10-LABEL: ld_disjoint_align32_int16_t_uint16_t:740; CHECK-P10:       # %bb.0: # %entry741; CHECK-P10-NEXT:    lis r4, -15264742; CHECK-P10-NEXT:    and r3, r3, r4743; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 0744; CHECK-P10-NEXT:    extsh r3, r3745; CHECK-P10-NEXT:    blr746;747; CHECK-PREP10-LABEL: ld_disjoint_align32_int16_t_uint16_t:748; CHECK-PREP10:       # %bb.0: # %entry749; CHECK-PREP10-NEXT:    lis r4, -15264750; CHECK-PREP10-NEXT:    and r3, r3, r4751; CHECK-PREP10-NEXT:    lis r4, 15258752; CHECK-PREP10-NEXT:    ori r4, r4, 41712753; CHECK-PREP10-NEXT:    lhzx r3, r3, r4754; CHECK-PREP10-NEXT:    extsh r3, r3755; CHECK-PREP10-NEXT:    blr756entry:757  %and = and i64 %ptr, -1000341504758  %or = or i64 %and, 999990000759  %0 = inttoptr i64 %or to ptr760  %1 = load atomic i16, ptr %0 monotonic, align 16761  ret i16 %1762}763 764; Function Attrs: nofree norecurse nounwind uwtable willreturn765define dso_local signext i16 @ld_not_disjoint64_int16_t_uint16_t(i64 %ptr) {766; CHECK-P10-LABEL: ld_not_disjoint64_int16_t_uint16_t:767; CHECK-P10:       # %bb.0: # %entry768; CHECK-P10-NEXT:    pli r4, 232769; CHECK-P10-NEXT:    pli r5, 3567587329770; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0771; CHECK-P10-NEXT:    or r3, r3, r5772; CHECK-P10-NEXT:    lhz r3, 0(r3)773; CHECK-P10-NEXT:    extsh r3, r3774; CHECK-P10-NEXT:    blr775;776; CHECK-PREP10-LABEL: ld_not_disjoint64_int16_t_uint16_t:777; CHECK-PREP10:       # %bb.0: # %entry778; CHECK-PREP10-NEXT:    li r4, 29779; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24780; CHECK-PREP10-NEXT:    oris r4, r4, 54437781; CHECK-PREP10-NEXT:    ori r4, r4, 4097782; CHECK-PREP10-NEXT:    or r3, r3, r4783; CHECK-PREP10-NEXT:    lhz r3, 0(r3)784; CHECK-PREP10-NEXT:    extsh r3, r3785; CHECK-PREP10-NEXT:    blr786entry:787  %or = or i64 %ptr, 1000000000001788  %0 = inttoptr i64 %or to ptr789  %1 = load atomic i16, ptr %0 monotonic, align 2790  ret i16 %1791}792 793; Function Attrs: nofree norecurse nounwind uwtable willreturn794define dso_local signext i16 @ld_disjoint_align64_int16_t_uint16_t(i64 %ptr) {795; CHECK-P10-LABEL: ld_disjoint_align64_int16_t_uint16_t:796; CHECK-P10:       # %bb.0: # %entry797; CHECK-P10-NEXT:    pli r4, 244140625798; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23799; CHECK-P10-NEXT:    rldic r4, r4, 12, 24800; CHECK-P10-NEXT:    lhzx r3, r3, r4801; CHECK-P10-NEXT:    extsh r3, r3802; CHECK-P10-NEXT:    blr803;804; CHECK-PREP10-LABEL: ld_disjoint_align64_int16_t_uint16_t:805; CHECK-PREP10:       # %bb.0: # %entry806; CHECK-PREP10-NEXT:    lis r4, 3725807; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23808; CHECK-PREP10-NEXT:    ori r4, r4, 19025809; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24810; CHECK-PREP10-NEXT:    lhzx r3, r3, r4811; CHECK-PREP10-NEXT:    extsh r3, r3812; CHECK-PREP10-NEXT:    blr813entry:814  %and = and i64 %ptr, -1099511627776815  %or = or i64 %and, 1000000000000816  %0 = inttoptr i64 %or to ptr817  %1 = load atomic i16, ptr %0 monotonic, align 4096818  ret i16 %1819}820 821; Function Attrs: nofree norecurse nounwind uwtable willreturn822define dso_local signext i16 @ld_cst_align16_int16_t_uint16_t() {823; CHECK-LABEL: ld_cst_align16_int16_t_uint16_t:824; CHECK:       # %bb.0: # %entry825; CHECK-NEXT:    lhz r3, 4080(0)826; CHECK-NEXT:    extsh r3, r3827; CHECK-NEXT:    blr828entry:829  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 16830  ret i16 %0831}832 833; Function Attrs: nofree norecurse nounwind uwtable willreturn834define dso_local signext i16 @ld_cst_align32_int16_t_uint16_t() {835; CHECK-LABEL: ld_cst_align32_int16_t_uint16_t:836; CHECK:       # %bb.0: # %entry837; CHECK-NEXT:    lis r3, 153838; CHECK-NEXT:    lhz r3, -27108(r3)839; CHECK-NEXT:    extsh r3, r3840; CHECK-NEXT:    blr841entry:842  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4843  ret i16 %0844}845 846; Function Attrs: nofree norecurse nounwind uwtable willreturn847define dso_local signext i16 @ld_cst_align64_int16_t_uint16_t() {848; CHECK-P10-LABEL: ld_cst_align64_int16_t_uint16_t:849; CHECK-P10:       # %bb.0: # %entry850; CHECK-P10-NEXT:    pli r3, 244140625851; CHECK-P10-NEXT:    rldic r3, r3, 12, 24852; CHECK-P10-NEXT:    lhz r3, 0(r3)853; CHECK-P10-NEXT:    extsh r3, r3854; CHECK-P10-NEXT:    blr855;856; CHECK-PREP10-LABEL: ld_cst_align64_int16_t_uint16_t:857; CHECK-PREP10:       # %bb.0: # %entry858; CHECK-PREP10-NEXT:    lis r3, 3725859; CHECK-PREP10-NEXT:    ori r3, r3, 19025860; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24861; CHECK-PREP10-NEXT:    lhz r3, 0(r3)862; CHECK-PREP10-NEXT:    extsh r3, r3863; CHECK-PREP10-NEXT:    blr864entry:865  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096866  ret i16 %0867}868 869; Function Attrs: nofree norecurse nounwind uwtable willreturn870define dso_local signext i16 @ld_0_int16_t_uint32_t(i64 %ptr) {871; CHECK-LABEL: ld_0_int16_t_uint32_t:872; CHECK:       # %bb.0: # %entry873; CHECK-NEXT:    lwz r3, 0(r3)874; CHECK-NEXT:    extsh r3, r3875; CHECK-NEXT:    blr876entry:877  %0 = inttoptr i64 %ptr to ptr878  %1 = load atomic i32, ptr %0 monotonic, align 4879  %conv = trunc i32 %1 to i16880  ret i16 %conv881}882 883; Function Attrs: nofree norecurse nounwind uwtable willreturn884define dso_local signext i16 @ld_align16_int16_t_uint32_t(ptr nocapture readonly %ptr) {885; CHECK-LABEL: ld_align16_int16_t_uint32_t:886; CHECK:       # %bb.0: # %entry887; CHECK-NEXT:    lwz r3, 8(r3)888; CHECK-NEXT:    extsh r3, r3889; CHECK-NEXT:    blr890entry:891  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8892  %0 = load atomic i32, ptr %add.ptr monotonic, align 4893  %conv = trunc i32 %0 to i16894  ret i16 %conv895}896 897; Function Attrs: nofree norecurse nounwind uwtable willreturn898define dso_local signext i16 @ld_align32_int16_t_uint32_t(ptr nocapture readonly %ptr) {899; CHECK-P10-LABEL: ld_align32_int16_t_uint32_t:900; CHECK-P10:       # %bb.0: # %entry901; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 0902; CHECK-P10-NEXT:    extsh r3, r3903; CHECK-P10-NEXT:    blr904;905; CHECK-PREP10-LABEL: ld_align32_int16_t_uint32_t:906; CHECK-PREP10:       # %bb.0: # %entry907; CHECK-PREP10-NEXT:    lis r4, 1525908; CHECK-PREP10-NEXT:    ori r4, r4, 56600909; CHECK-PREP10-NEXT:    lwzx r3, r3, r4910; CHECK-PREP10-NEXT:    extsh r3, r3911; CHECK-PREP10-NEXT:    blr912entry:913  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000914  %0 = load atomic i32, ptr %add.ptr monotonic, align 4915  %conv = trunc i32 %0 to i16916  ret i16 %conv917}918 919; Function Attrs: nofree norecurse nounwind uwtable willreturn920define dso_local signext i16 @ld_align64_int16_t_uint32_t(ptr nocapture readonly %ptr) {921; CHECK-P10-LABEL: ld_align64_int16_t_uint32_t:922; CHECK-P10:       # %bb.0: # %entry923; CHECK-P10-NEXT:    pli r4, 244140625924; CHECK-P10-NEXT:    rldic r4, r4, 12, 24925; CHECK-P10-NEXT:    lwzx r3, r3, r4926; CHECK-P10-NEXT:    extsh r3, r3927; CHECK-P10-NEXT:    blr928;929; CHECK-PREP10-LABEL: ld_align64_int16_t_uint32_t:930; CHECK-PREP10:       # %bb.0: # %entry931; CHECK-PREP10-NEXT:    lis r4, 3725932; CHECK-PREP10-NEXT:    ori r4, r4, 19025933; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24934; CHECK-PREP10-NEXT:    lwzx r3, r3, r4935; CHECK-PREP10-NEXT:    extsh r3, r3936; CHECK-PREP10-NEXT:    blr937entry:938  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000939  %0 = load atomic i32, ptr %add.ptr monotonic, align 4940  %conv = trunc i32 %0 to i16941  ret i16 %conv942}943 944; Function Attrs: nofree norecurse nounwind uwtable willreturn945define dso_local signext i16 @ld_reg_int16_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {946; CHECK-LABEL: ld_reg_int16_t_uint32_t:947; CHECK:       # %bb.0: # %entry948; CHECK-NEXT:    lwzx r3, r3, r4949; CHECK-NEXT:    extsh r3, r3950; CHECK-NEXT:    blr951entry:952  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off953  %0 = load atomic i32, ptr %add.ptr monotonic, align 4954  %conv = trunc i32 %0 to i16955  ret i16 %conv956}957 958; Function Attrs: nofree norecurse nounwind uwtable willreturn959define dso_local signext i16 @ld_or_int16_t_uint32_t(i64 %ptr, i8 zeroext %off) {960; CHECK-LABEL: ld_or_int16_t_uint32_t:961; CHECK:       # %bb.0: # %entry962; CHECK-NEXT:    or r3, r4, r3963; CHECK-NEXT:    lwz r3, 0(r3)964; CHECK-NEXT:    extsh r3, r3965; CHECK-NEXT:    blr966entry:967  %conv = zext i8 %off to i64968  %or = or i64 %conv, %ptr969  %0 = inttoptr i64 %or to ptr970  %1 = load atomic i32, ptr %0 monotonic, align 4971  %conv1 = trunc i32 %1 to i16972  ret i16 %conv1973}974 975; Function Attrs: nofree norecurse nounwind uwtable willreturn976define dso_local signext i16 @ld_not_disjoint16_int16_t_uint32_t(i64 %ptr) {977; CHECK-LABEL: ld_not_disjoint16_int16_t_uint32_t:978; CHECK:       # %bb.0: # %entry979; CHECK-NEXT:    ori r3, r3, 6980; CHECK-NEXT:    lwz r3, 0(r3)981; CHECK-NEXT:    extsh r3, r3982; CHECK-NEXT:    blr983entry:984  %or = or i64 %ptr, 6985  %0 = inttoptr i64 %or to ptr986  %1 = load atomic i32, ptr %0 monotonic, align 4987  %conv = trunc i32 %1 to i16988  ret i16 %conv989}990 991; Function Attrs: nofree norecurse nounwind uwtable willreturn992define dso_local signext i16 @ld_disjoint_align16_int16_t_uint32_t(i64 %ptr) {993; CHECK-LABEL: ld_disjoint_align16_int16_t_uint32_t:994; CHECK:       # %bb.0: # %entry995; CHECK-NEXT:    rldicr r3, r3, 0, 51996; CHECK-NEXT:    lwz r3, 24(r3)997; CHECK-NEXT:    extsh r3, r3998; CHECK-NEXT:    blr999entry:1000  %and = and i64 %ptr, -40961001  %or = or i64 %and, 241002  %0 = inttoptr i64 %or to ptr1003  %1 = load atomic i32, ptr %0 monotonic, align 81004  %conv = trunc i32 %1 to i161005  ret i16 %conv1006}1007 1008; Function Attrs: nofree norecurse nounwind uwtable willreturn1009define dso_local signext i16 @ld_not_disjoint32_int16_t_uint32_t(i64 %ptr) {1010; CHECK-LABEL: ld_not_disjoint32_int16_t_uint32_t:1011; CHECK:       # %bb.0: # %entry1012; CHECK-NEXT:    ori r3, r3, 344631013; CHECK-NEXT:    oris r3, r3, 11014; CHECK-NEXT:    lwz r3, 0(r3)1015; CHECK-NEXT:    extsh r3, r31016; CHECK-NEXT:    blr1017entry:1018  %or = or i64 %ptr, 999991019  %0 = inttoptr i64 %or to ptr1020  %1 = load atomic i32, ptr %0 monotonic, align 41021  %conv = trunc i32 %1 to i161022  ret i16 %conv1023}1024 1025; Function Attrs: nofree norecurse nounwind uwtable willreturn1026define dso_local signext i16 @ld_disjoint_align32_int16_t_uint32_t(i64 %ptr) {1027; CHECK-P10-LABEL: ld_disjoint_align32_int16_t_uint32_t:1028; CHECK-P10:       # %bb.0: # %entry1029; CHECK-P10-NEXT:    lis r4, -152641030; CHECK-P10-NEXT:    and r3, r3, r41031; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 01032; CHECK-P10-NEXT:    extsh r3, r31033; CHECK-P10-NEXT:    blr1034;1035; CHECK-PREP10-LABEL: ld_disjoint_align32_int16_t_uint32_t:1036; CHECK-PREP10:       # %bb.0: # %entry1037; CHECK-PREP10-NEXT:    lis r4, -152641038; CHECK-PREP10-NEXT:    and r3, r3, r41039; CHECK-PREP10-NEXT:    lis r4, 152581040; CHECK-PREP10-NEXT:    ori r4, r4, 417121041; CHECK-PREP10-NEXT:    lwzx r3, r3, r41042; CHECK-PREP10-NEXT:    extsh r3, r31043; CHECK-PREP10-NEXT:    blr1044entry:1045  %and = and i64 %ptr, -10003415041046  %or = or i64 %and, 9999900001047  %0 = inttoptr i64 %or to ptr1048  %1 = load atomic i32, ptr %0 monotonic, align 161049  %conv = trunc i32 %1 to i161050  ret i16 %conv1051}1052 1053; Function Attrs: nofree norecurse nounwind uwtable willreturn1054define dso_local signext i16 @ld_not_disjoint64_int16_t_uint32_t(i64 %ptr) {1055; CHECK-P10-LABEL: ld_not_disjoint64_int16_t_uint32_t:1056; CHECK-P10:       # %bb.0: # %entry1057; CHECK-P10-NEXT:    pli r4, 2321058; CHECK-P10-NEXT:    pli r5, 35675873291059; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01060; CHECK-P10-NEXT:    or r3, r3, r51061; CHECK-P10-NEXT:    lwz r3, 0(r3)1062; CHECK-P10-NEXT:    extsh r3, r31063; CHECK-P10-NEXT:    blr1064;1065; CHECK-PREP10-LABEL: ld_not_disjoint64_int16_t_uint32_t:1066; CHECK-PREP10:       # %bb.0: # %entry1067; CHECK-PREP10-NEXT:    li r4, 291068; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241069; CHECK-PREP10-NEXT:    oris r4, r4, 544371070; CHECK-PREP10-NEXT:    ori r4, r4, 40971071; CHECK-PREP10-NEXT:    or r3, r3, r41072; CHECK-PREP10-NEXT:    lwz r3, 0(r3)1073; CHECK-PREP10-NEXT:    extsh r3, r31074; CHECK-PREP10-NEXT:    blr1075entry:1076  %or = or i64 %ptr, 10000000000011077  %0 = inttoptr i64 %or to ptr1078  %1 = load atomic i32, ptr %0 monotonic, align 41079  %conv = trunc i32 %1 to i161080  ret i16 %conv1081}1082 1083; Function Attrs: nofree norecurse nounwind uwtable willreturn1084define dso_local signext i16 @ld_disjoint_align64_int16_t_uint32_t(i64 %ptr) {1085; CHECK-P10-LABEL: ld_disjoint_align64_int16_t_uint32_t:1086; CHECK-P10:       # %bb.0: # %entry1087; CHECK-P10-NEXT:    pli r4, 2441406251088; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231089; CHECK-P10-NEXT:    rldic r4, r4, 12, 241090; CHECK-P10-NEXT:    lwzx r3, r3, r41091; CHECK-P10-NEXT:    extsh r3, r31092; CHECK-P10-NEXT:    blr1093;1094; CHECK-PREP10-LABEL: ld_disjoint_align64_int16_t_uint32_t:1095; CHECK-PREP10:       # %bb.0: # %entry1096; CHECK-PREP10-NEXT:    lis r4, 37251097; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231098; CHECK-PREP10-NEXT:    ori r4, r4, 190251099; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241100; CHECK-PREP10-NEXT:    lwzx r3, r3, r41101; CHECK-PREP10-NEXT:    extsh r3, r31102; CHECK-PREP10-NEXT:    blr1103entry:1104  %and = and i64 %ptr, -10995116277761105  %or = or i64 %and, 10000000000001106  %0 = inttoptr i64 %or to ptr1107  %1 = load atomic i32, ptr %0 monotonic, align 40961108  %conv = trunc i32 %1 to i161109  ret i16 %conv1110}1111 1112; Function Attrs: nofree norecurse nounwind uwtable willreturn1113define dso_local signext i16 @ld_cst_align16_int16_t_uint32_t() {1114; CHECK-LABEL: ld_cst_align16_int16_t_uint32_t:1115; CHECK:       # %bb.0: # %entry1116; CHECK-NEXT:    lwz r3, 4080(0)1117; CHECK-NEXT:    extsh r3, r31118; CHECK-NEXT:    blr1119entry:1120  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 161121  %conv = trunc i32 %0 to i161122  ret i16 %conv1123}1124 1125; Function Attrs: nofree norecurse nounwind uwtable willreturn1126define dso_local signext i16 @ld_cst_align32_int16_t_uint32_t() {1127; CHECK-LABEL: ld_cst_align32_int16_t_uint32_t:1128; CHECK:       # %bb.0: # %entry1129; CHECK-NEXT:    lis r3, 1531130; CHECK-NEXT:    lwz r3, -27108(r3)1131; CHECK-NEXT:    extsh r3, r31132; CHECK-NEXT:    blr1133entry:1134  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41135  %conv = trunc i32 %0 to i161136  ret i16 %conv1137}1138 1139; Function Attrs: nofree norecurse nounwind uwtable willreturn1140define dso_local signext i16 @ld_cst_align64_int16_t_uint32_t() {1141; CHECK-P10-LABEL: ld_cst_align64_int16_t_uint32_t:1142; CHECK-P10:       # %bb.0: # %entry1143; CHECK-P10-NEXT:    pli r3, 2441406251144; CHECK-P10-NEXT:    rldic r3, r3, 12, 241145; CHECK-P10-NEXT:    lwz r3, 0(r3)1146; CHECK-P10-NEXT:    extsh r3, r31147; CHECK-P10-NEXT:    blr1148;1149; CHECK-PREP10-LABEL: ld_cst_align64_int16_t_uint32_t:1150; CHECK-PREP10:       # %bb.0: # %entry1151; CHECK-PREP10-NEXT:    lis r3, 37251152; CHECK-PREP10-NEXT:    ori r3, r3, 190251153; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241154; CHECK-PREP10-NEXT:    lwz r3, 0(r3)1155; CHECK-PREP10-NEXT:    extsh r3, r31156; CHECK-PREP10-NEXT:    blr1157entry:1158  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961159  %conv = trunc i32 %0 to i161160  ret i16 %conv1161}1162 1163; Function Attrs: nofree norecurse nounwind uwtable willreturn1164define dso_local signext i16 @ld_0_int16_t_uint64_t(i64 %ptr) {1165; CHECK-LABEL: ld_0_int16_t_uint64_t:1166; CHECK:       # %bb.0: # %entry1167; CHECK-NEXT:    ld r3, 0(r3)1168; CHECK-NEXT:    extsh r3, r31169; CHECK-NEXT:    blr1170entry:1171  %0 = inttoptr i64 %ptr to ptr1172  %1 = load atomic i64, ptr %0 monotonic, align 81173  %conv = trunc i64 %1 to i161174  ret i16 %conv1175}1176 1177; Function Attrs: nofree norecurse nounwind uwtable willreturn1178define dso_local signext i16 @ld_align16_int16_t_uint64_t(ptr nocapture readonly %ptr) {1179; CHECK-LABEL: ld_align16_int16_t_uint64_t:1180; CHECK:       # %bb.0: # %entry1181; CHECK-NEXT:    ld r3, 8(r3)1182; CHECK-NEXT:    extsh r3, r31183; CHECK-NEXT:    blr1184entry:1185  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81186  %0 = load atomic i64, ptr %add.ptr monotonic, align 81187  %conv = trunc i64 %0 to i161188  ret i16 %conv1189}1190 1191; Function Attrs: nofree norecurse nounwind uwtable willreturn1192define dso_local signext i16 @ld_align32_int16_t_uint64_t(ptr nocapture readonly %ptr) {1193; CHECK-P10-LABEL: ld_align32_int16_t_uint64_t:1194; CHECK-P10:       # %bb.0: # %entry1195; CHECK-P10-NEXT:    pld r3, 99999000(r3), 01196; CHECK-P10-NEXT:    extsh r3, r31197; CHECK-P10-NEXT:    blr1198;1199; CHECK-PREP10-LABEL: ld_align32_int16_t_uint64_t:1200; CHECK-PREP10:       # %bb.0: # %entry1201; CHECK-PREP10-NEXT:    lis r4, 15251202; CHECK-PREP10-NEXT:    ori r4, r4, 566001203; CHECK-PREP10-NEXT:    ldx r3, r3, r41204; CHECK-PREP10-NEXT:    extsh r3, r31205; CHECK-PREP10-NEXT:    blr1206entry:1207  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001208  %0 = load atomic i64, ptr %add.ptr monotonic, align 81209  %conv = trunc i64 %0 to i161210  ret i16 %conv1211}1212 1213; Function Attrs: nofree norecurse nounwind uwtable willreturn1214define dso_local signext i16 @ld_align64_int16_t_uint64_t(ptr nocapture readonly %ptr) {1215; CHECK-P10-LABEL: ld_align64_int16_t_uint64_t:1216; CHECK-P10:       # %bb.0: # %entry1217; CHECK-P10-NEXT:    pli r4, 2441406251218; CHECK-P10-NEXT:    rldic r4, r4, 12, 241219; CHECK-P10-NEXT:    ldx r3, r3, r41220; CHECK-P10-NEXT:    extsh r3, r31221; CHECK-P10-NEXT:    blr1222;1223; CHECK-PREP10-LABEL: ld_align64_int16_t_uint64_t:1224; CHECK-PREP10:       # %bb.0: # %entry1225; CHECK-PREP10-NEXT:    lis r4, 37251226; CHECK-PREP10-NEXT:    ori r4, r4, 190251227; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241228; CHECK-PREP10-NEXT:    ldx r3, r3, r41229; CHECK-PREP10-NEXT:    extsh r3, r31230; CHECK-PREP10-NEXT:    blr1231entry:1232  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001233  %0 = load atomic i64, ptr %add.ptr monotonic, align 81234  %conv = trunc i64 %0 to i161235  ret i16 %conv1236}1237 1238; Function Attrs: nofree norecurse nounwind uwtable willreturn1239define dso_local signext i16 @ld_reg_int16_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {1240; CHECK-LABEL: ld_reg_int16_t_uint64_t:1241; CHECK:       # %bb.0: # %entry1242; CHECK-NEXT:    ldx r3, r3, r41243; CHECK-NEXT:    extsh r3, r31244; CHECK-NEXT:    blr1245entry:1246  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1247  %0 = load atomic i64, ptr %add.ptr monotonic, align 81248  %conv = trunc i64 %0 to i161249  ret i16 %conv1250}1251 1252; Function Attrs: nofree norecurse nounwind uwtable willreturn1253define dso_local signext i16 @ld_or_int16_t_uint64_t(i64 %ptr, i8 zeroext %off) {1254; CHECK-LABEL: ld_or_int16_t_uint64_t:1255; CHECK:       # %bb.0: # %entry1256; CHECK-NEXT:    or r3, r4, r31257; CHECK-NEXT:    ld r3, 0(r3)1258; CHECK-NEXT:    extsh r3, r31259; CHECK-NEXT:    blr1260entry:1261  %conv = zext i8 %off to i641262  %or = or i64 %conv, %ptr1263  %0 = inttoptr i64 %or to ptr1264  %1 = load atomic i64, ptr %0 monotonic, align 81265  %conv1 = trunc i64 %1 to i161266  ret i16 %conv11267}1268 1269; Function Attrs: nofree norecurse nounwind uwtable willreturn1270define dso_local signext i16 @ld_not_disjoint16_int16_t_uint64_t(i64 %ptr) {1271; CHECK-LABEL: ld_not_disjoint16_int16_t_uint64_t:1272; CHECK:       # %bb.0: # %entry1273; CHECK-NEXT:    ori r3, r3, 61274; CHECK-NEXT:    ld r3, 0(r3)1275; CHECK-NEXT:    extsh r3, r31276; CHECK-NEXT:    blr1277entry:1278  %or = or i64 %ptr, 61279  %0 = inttoptr i64 %or to ptr1280  %1 = load atomic i64, ptr %0 monotonic, align 81281  %conv = trunc i64 %1 to i161282  ret i16 %conv1283}1284 1285; Function Attrs: nofree norecurse nounwind uwtable willreturn1286define dso_local signext i16 @ld_disjoint_align16_int16_t_uint64_t(i64 %ptr) {1287; CHECK-LABEL: ld_disjoint_align16_int16_t_uint64_t:1288; CHECK:       # %bb.0: # %entry1289; CHECK-NEXT:    rldicr r3, r3, 0, 511290; CHECK-NEXT:    ld r3, 24(r3)1291; CHECK-NEXT:    extsh r3, r31292; CHECK-NEXT:    blr1293entry:1294  %and = and i64 %ptr, -40961295  %or = or i64 %and, 241296  %0 = inttoptr i64 %or to ptr1297  %1 = load atomic i64, ptr %0 monotonic, align 81298  %conv = trunc i64 %1 to i161299  ret i16 %conv1300}1301 1302; Function Attrs: nofree norecurse nounwind uwtable willreturn1303define dso_local signext i16 @ld_not_disjoint32_int16_t_uint64_t(i64 %ptr) {1304; CHECK-LABEL: ld_not_disjoint32_int16_t_uint64_t:1305; CHECK:       # %bb.0: # %entry1306; CHECK-NEXT:    ori r3, r3, 344631307; CHECK-NEXT:    oris r3, r3, 11308; CHECK-NEXT:    ld r3, 0(r3)1309; CHECK-NEXT:    extsh r3, r31310; CHECK-NEXT:    blr1311entry:1312  %or = or i64 %ptr, 999991313  %0 = inttoptr i64 %or to ptr1314  %1 = load atomic i64, ptr %0 monotonic, align 81315  %conv = trunc i64 %1 to i161316  ret i16 %conv1317}1318 1319; Function Attrs: nofree norecurse nounwind uwtable willreturn1320define dso_local signext i16 @ld_disjoint_align32_int16_t_uint64_t(i64 %ptr) {1321; CHECK-P10-LABEL: ld_disjoint_align32_int16_t_uint64_t:1322; CHECK-P10:       # %bb.0: # %entry1323; CHECK-P10-NEXT:    lis r4, -152641324; CHECK-P10-NEXT:    and r3, r3, r41325; CHECK-P10-NEXT:    pld r3, 999990000(r3), 01326; CHECK-P10-NEXT:    extsh r3, r31327; CHECK-P10-NEXT:    blr1328;1329; CHECK-PREP10-LABEL: ld_disjoint_align32_int16_t_uint64_t:1330; CHECK-PREP10:       # %bb.0: # %entry1331; CHECK-PREP10-NEXT:    lis r4, -152641332; CHECK-PREP10-NEXT:    and r3, r3, r41333; CHECK-PREP10-NEXT:    lis r4, 152581334; CHECK-PREP10-NEXT:    ori r4, r4, 417121335; CHECK-PREP10-NEXT:    ldx r3, r3, r41336; CHECK-PREP10-NEXT:    extsh r3, r31337; CHECK-PREP10-NEXT:    blr1338entry:1339  %and = and i64 %ptr, -10003415041340  %or = or i64 %and, 9999900001341  %0 = inttoptr i64 %or to ptr1342  %1 = load atomic i64, ptr %0 monotonic, align 161343  %conv = trunc i64 %1 to i161344  ret i16 %conv1345}1346 1347; Function Attrs: nofree norecurse nounwind uwtable willreturn1348define dso_local signext i16 @ld_not_disjoint64_int16_t_uint64_t(i64 %ptr) {1349; CHECK-P10-LABEL: ld_not_disjoint64_int16_t_uint64_t:1350; CHECK-P10:       # %bb.0: # %entry1351; CHECK-P10-NEXT:    pli r4, 2321352; CHECK-P10-NEXT:    pli r5, 35675873291353; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01354; CHECK-P10-NEXT:    or r3, r3, r51355; CHECK-P10-NEXT:    ld r3, 0(r3)1356; CHECK-P10-NEXT:    extsh r3, r31357; CHECK-P10-NEXT:    blr1358;1359; CHECK-PREP10-LABEL: ld_not_disjoint64_int16_t_uint64_t:1360; CHECK-PREP10:       # %bb.0: # %entry1361; CHECK-PREP10-NEXT:    li r4, 291362; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241363; CHECK-PREP10-NEXT:    oris r4, r4, 544371364; CHECK-PREP10-NEXT:    ori r4, r4, 40971365; CHECK-PREP10-NEXT:    or r3, r3, r41366; CHECK-PREP10-NEXT:    ld r3, 0(r3)1367; CHECK-PREP10-NEXT:    extsh r3, r31368; CHECK-PREP10-NEXT:    blr1369entry:1370  %or = or i64 %ptr, 10000000000011371  %0 = inttoptr i64 %or to ptr1372  %1 = load atomic i64, ptr %0 monotonic, align 81373  %conv = trunc i64 %1 to i161374  ret i16 %conv1375}1376 1377; Function Attrs: nofree norecurse nounwind uwtable willreturn1378define dso_local signext i16 @ld_disjoint_align64_int16_t_uint64_t(i64 %ptr) {1379; CHECK-P10-LABEL: ld_disjoint_align64_int16_t_uint64_t:1380; CHECK-P10:       # %bb.0: # %entry1381; CHECK-P10-NEXT:    pli r4, 2441406251382; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231383; CHECK-P10-NEXT:    rldic r4, r4, 12, 241384; CHECK-P10-NEXT:    ldx r3, r3, r41385; CHECK-P10-NEXT:    extsh r3, r31386; CHECK-P10-NEXT:    blr1387;1388; CHECK-PREP10-LABEL: ld_disjoint_align64_int16_t_uint64_t:1389; CHECK-PREP10:       # %bb.0: # %entry1390; CHECK-PREP10-NEXT:    lis r4, 37251391; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231392; CHECK-PREP10-NEXT:    ori r4, r4, 190251393; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241394; CHECK-PREP10-NEXT:    ldx r3, r3, r41395; CHECK-PREP10-NEXT:    extsh r3, r31396; CHECK-PREP10-NEXT:    blr1397entry:1398  %and = and i64 %ptr, -10995116277761399  %or = or i64 %and, 10000000000001400  %0 = inttoptr i64 %or to ptr1401  %1 = load atomic i64, ptr %0 monotonic, align 40961402  %conv = trunc i64 %1 to i161403  ret i16 %conv1404}1405 1406; Function Attrs: nofree norecurse nounwind uwtable willreturn1407define dso_local signext i16 @ld_cst_align16_int16_t_uint64_t() {1408; CHECK-LABEL: ld_cst_align16_int16_t_uint64_t:1409; CHECK:       # %bb.0: # %entry1410; CHECK-NEXT:    ld r3, 4080(0)1411; CHECK-NEXT:    extsh r3, r31412; CHECK-NEXT:    blr1413entry:1414  %0 = load atomic i64, ptr inttoptr (i64 4080 to ptr) monotonic, align 161415  %conv = trunc i64 %0 to i161416  ret i16 %conv1417}1418 1419; Function Attrs: nofree norecurse nounwind uwtable willreturn1420define dso_local signext i16 @ld_cst_align32_int16_t_uint64_t() {1421; CHECK-LABEL: ld_cst_align32_int16_t_uint64_t:1422; CHECK:       # %bb.0: # %entry1423; CHECK-NEXT:    lis r3, 1531424; CHECK-NEXT:    ld r3, -27108(r3)1425; CHECK-NEXT:    extsh r3, r31426; CHECK-NEXT:    blr1427entry:1428  %0 = load atomic i64, ptr inttoptr (i64 9999900 to ptr) monotonic, align 81429  %conv = trunc i64 %0 to i161430  ret i16 %conv1431}1432 1433; Function Attrs: nofree norecurse nounwind uwtable willreturn1434define dso_local signext i16 @ld_cst_align64_int16_t_uint64_t() {1435; CHECK-P10-LABEL: ld_cst_align64_int16_t_uint64_t:1436; CHECK-P10:       # %bb.0: # %entry1437; CHECK-P10-NEXT:    pli r3, 2441406251438; CHECK-P10-NEXT:    rldic r3, r3, 12, 241439; CHECK-P10-NEXT:    ld r3, 0(r3)1440; CHECK-P10-NEXT:    extsh r3, r31441; CHECK-P10-NEXT:    blr1442;1443; CHECK-PREP10-LABEL: ld_cst_align64_int16_t_uint64_t:1444; CHECK-PREP10:       # %bb.0: # %entry1445; CHECK-PREP10-NEXT:    lis r3, 37251446; CHECK-PREP10-NEXT:    ori r3, r3, 190251447; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241448; CHECK-PREP10-NEXT:    ld r3, 0(r3)1449; CHECK-PREP10-NEXT:    extsh r3, r31450; CHECK-PREP10-NEXT:    blr1451entry:1452  %0 = load atomic i64, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961453  %conv = trunc i64 %0 to i161454  ret i16 %conv1455}1456 1457; Function Attrs: nofree norecurse nounwind uwtable willreturn1458define dso_local zeroext i16 @ld_0_uint16_t_uint8_t(i64 %ptr) {1459; CHECK-LABEL: ld_0_uint16_t_uint8_t:1460; CHECK:       # %bb.0: # %entry1461; CHECK-NEXT:    lbz r3, 0(r3)1462; CHECK-NEXT:    blr1463entry:1464  %0 = inttoptr i64 %ptr to ptr1465  %1 = load atomic i8, ptr %0 monotonic, align 11466  %conv = zext i8 %1 to i161467  ret i16 %conv1468}1469 1470; Function Attrs: nofree norecurse nounwind uwtable willreturn1471define dso_local zeroext i16 @ld_align16_uint16_t_uint8_t(ptr nocapture readonly %ptr) {1472; CHECK-LABEL: ld_align16_uint16_t_uint8_t:1473; CHECK:       # %bb.0: # %entry1474; CHECK-NEXT:    lbz r3, 8(r3)1475; CHECK-NEXT:    blr1476entry:1477  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81478  %0 = load atomic i8, ptr %add.ptr monotonic, align 11479  %conv = zext i8 %0 to i161480  ret i16 %conv1481}1482 1483; Function Attrs: nofree norecurse nounwind uwtable willreturn1484define dso_local zeroext i16 @ld_align32_uint16_t_uint8_t(ptr nocapture readonly %ptr) {1485; CHECK-P10-LABEL: ld_align32_uint16_t_uint8_t:1486; CHECK-P10:       # %bb.0: # %entry1487; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 01488; CHECK-P10-NEXT:    clrldi r3, r3, 321489; CHECK-P10-NEXT:    blr1490;1491; CHECK-PREP10-LABEL: ld_align32_uint16_t_uint8_t:1492; CHECK-PREP10:       # %bb.0: # %entry1493; CHECK-PREP10-NEXT:    lis r4, 15251494; CHECK-PREP10-NEXT:    ori r4, r4, 566001495; CHECK-PREP10-NEXT:    lbzx r3, r3, r41496; CHECK-PREP10-NEXT:    blr1497entry:1498  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001499  %0 = load atomic i8, ptr %add.ptr monotonic, align 11500  %conv = zext i8 %0 to i161501  ret i16 %conv1502}1503 1504; Function Attrs: nofree norecurse nounwind uwtable willreturn1505define dso_local zeroext i16 @ld_align64_uint16_t_uint8_t(ptr nocapture readonly %ptr) {1506; CHECK-P10-LABEL: ld_align64_uint16_t_uint8_t:1507; CHECK-P10:       # %bb.0: # %entry1508; CHECK-P10-NEXT:    pli r4, 2441406251509; CHECK-P10-NEXT:    rldic r4, r4, 12, 241510; CHECK-P10-NEXT:    lbzx r3, r3, r41511; CHECK-P10-NEXT:    blr1512;1513; CHECK-PREP10-LABEL: ld_align64_uint16_t_uint8_t:1514; CHECK-PREP10:       # %bb.0: # %entry1515; CHECK-PREP10-NEXT:    lis r4, 37251516; CHECK-PREP10-NEXT:    ori r4, r4, 190251517; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241518; CHECK-PREP10-NEXT:    lbzx r3, r3, r41519; CHECK-PREP10-NEXT:    blr1520entry:1521  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001522  %0 = load atomic i8, ptr %add.ptr monotonic, align 11523  %conv = zext i8 %0 to i161524  ret i16 %conv1525}1526 1527; Function Attrs: nofree norecurse nounwind uwtable willreturn1528define dso_local zeroext i16 @ld_reg_uint16_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {1529; CHECK-LABEL: ld_reg_uint16_t_uint8_t:1530; CHECK:       # %bb.0: # %entry1531; CHECK-NEXT:    lbzx r3, r3, r41532; CHECK-NEXT:    blr1533entry:1534  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1535  %0 = load atomic i8, ptr %add.ptr monotonic, align 11536  %conv = zext i8 %0 to i161537  ret i16 %conv1538}1539 1540; Function Attrs: nofree norecurse nounwind uwtable willreturn1541define dso_local zeroext i16 @ld_or_uint16_t_uint8_t(i64 %ptr, i8 zeroext %off) {1542; CHECK-LABEL: ld_or_uint16_t_uint8_t:1543; CHECK:       # %bb.0: # %entry1544; CHECK-NEXT:    or r3, r4, r31545; CHECK-NEXT:    lbz r3, 0(r3)1546; CHECK-NEXT:    blr1547entry:1548  %conv = zext i8 %off to i641549  %or = or i64 %conv, %ptr1550  %0 = inttoptr i64 %or to ptr1551  %1 = load atomic i8, ptr %0 monotonic, align 11552  %conv1 = zext i8 %1 to i161553  ret i16 %conv11554}1555 1556; Function Attrs: nofree norecurse nounwind uwtable willreturn1557define dso_local zeroext i16 @ld_not_disjoint16_uint16_t_uint8_t(i64 %ptr) {1558; CHECK-LABEL: ld_not_disjoint16_uint16_t_uint8_t:1559; CHECK:       # %bb.0: # %entry1560; CHECK-NEXT:    ori r3, r3, 61561; CHECK-NEXT:    lbz r3, 0(r3)1562; CHECK-NEXT:    blr1563entry:1564  %or = or i64 %ptr, 61565  %0 = inttoptr i64 %or to ptr1566  %1 = load atomic i8, ptr %0 monotonic, align 11567  %conv = zext i8 %1 to i161568  ret i16 %conv1569}1570 1571; Function Attrs: nofree norecurse nounwind uwtable willreturn1572define dso_local zeroext i16 @ld_disjoint_align16_uint16_t_uint8_t(i64 %ptr) {1573; CHECK-LABEL: ld_disjoint_align16_uint16_t_uint8_t:1574; CHECK:       # %bb.0: # %entry1575; CHECK-NEXT:    rldicr r3, r3, 0, 511576; CHECK-NEXT:    lbz r3, 24(r3)1577; CHECK-NEXT:    blr1578entry:1579  %and = and i64 %ptr, -40961580  %or = or i64 %and, 241581  %0 = inttoptr i64 %or to ptr1582  %1 = load atomic i8, ptr %0 monotonic, align 81583  %conv = zext i8 %1 to i161584  ret i16 %conv1585}1586 1587; Function Attrs: nofree norecurse nounwind uwtable willreturn1588define dso_local zeroext i16 @ld_not_disjoint32_uint16_t_uint8_t(i64 %ptr) {1589; CHECK-LABEL: ld_not_disjoint32_uint16_t_uint8_t:1590; CHECK:       # %bb.0: # %entry1591; CHECK-NEXT:    ori r3, r3, 344631592; CHECK-NEXT:    oris r3, r3, 11593; CHECK-NEXT:    lbz r3, 0(r3)1594; CHECK-NEXT:    blr1595entry:1596  %or = or i64 %ptr, 999991597  %0 = inttoptr i64 %or to ptr1598  %1 = load atomic i8, ptr %0 monotonic, align 11599  %conv = zext i8 %1 to i161600  ret i16 %conv1601}1602 1603; Function Attrs: nofree norecurse nounwind uwtable willreturn1604define dso_local zeroext i16 @ld_disjoint_align32_uint16_t_uint8_t(i64 %ptr) {1605; CHECK-P10-LABEL: ld_disjoint_align32_uint16_t_uint8_t:1606; CHECK-P10:       # %bb.0: # %entry1607; CHECK-P10-NEXT:    lis r4, -152641608; CHECK-P10-NEXT:    and r3, r3, r41609; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 01610; CHECK-P10-NEXT:    clrldi r3, r3, 321611; CHECK-P10-NEXT:    blr1612;1613; CHECK-PREP10-LABEL: ld_disjoint_align32_uint16_t_uint8_t:1614; CHECK-PREP10:       # %bb.0: # %entry1615; CHECK-PREP10-NEXT:    lis r4, -152641616; CHECK-PREP10-NEXT:    and r3, r3, r41617; CHECK-PREP10-NEXT:    lis r4, 152581618; CHECK-PREP10-NEXT:    ori r4, r4, 417121619; CHECK-PREP10-NEXT:    lbzx r3, r3, r41620; CHECK-PREP10-NEXT:    blr1621entry:1622  %and = and i64 %ptr, -10003415041623  %or = or i64 %and, 9999900001624  %0 = inttoptr i64 %or to ptr1625  %1 = load atomic i8, ptr %0 monotonic, align 161626  %conv = zext i8 %1 to i161627  ret i16 %conv1628}1629 1630; Function Attrs: nofree norecurse nounwind uwtable willreturn1631define dso_local zeroext i16 @ld_not_disjoint64_uint16_t_uint8_t(i64 %ptr) {1632; CHECK-P10-LABEL: ld_not_disjoint64_uint16_t_uint8_t:1633; CHECK-P10:       # %bb.0: # %entry1634; CHECK-P10-NEXT:    pli r4, 2321635; CHECK-P10-NEXT:    pli r5, 35675873291636; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01637; CHECK-P10-NEXT:    or r3, r3, r51638; CHECK-P10-NEXT:    lbz r3, 0(r3)1639; CHECK-P10-NEXT:    blr1640;1641; CHECK-PREP10-LABEL: ld_not_disjoint64_uint16_t_uint8_t:1642; CHECK-PREP10:       # %bb.0: # %entry1643; CHECK-PREP10-NEXT:    li r4, 291644; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241645; CHECK-PREP10-NEXT:    oris r4, r4, 544371646; CHECK-PREP10-NEXT:    ori r4, r4, 40971647; CHECK-PREP10-NEXT:    or r3, r3, r41648; CHECK-PREP10-NEXT:    lbz r3, 0(r3)1649; CHECK-PREP10-NEXT:    blr1650entry:1651  %or = or i64 %ptr, 10000000000011652  %0 = inttoptr i64 %or to ptr1653  %1 = load atomic i8, ptr %0 monotonic, align 11654  %conv = zext i8 %1 to i161655  ret i16 %conv1656}1657 1658; Function Attrs: nofree norecurse nounwind uwtable willreturn1659define dso_local zeroext i16 @ld_disjoint_align64_uint16_t_uint8_t(i64 %ptr) {1660; CHECK-P10-LABEL: ld_disjoint_align64_uint16_t_uint8_t:1661; CHECK-P10:       # %bb.0: # %entry1662; CHECK-P10-NEXT:    pli r4, 2441406251663; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231664; CHECK-P10-NEXT:    rldic r4, r4, 12, 241665; CHECK-P10-NEXT:    lbzx r3, r3, r41666; CHECK-P10-NEXT:    blr1667;1668; CHECK-PREP10-LABEL: ld_disjoint_align64_uint16_t_uint8_t:1669; CHECK-PREP10:       # %bb.0: # %entry1670; CHECK-PREP10-NEXT:    lis r4, 37251671; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231672; CHECK-PREP10-NEXT:    ori r4, r4, 190251673; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241674; CHECK-PREP10-NEXT:    lbzx r3, r3, r41675; CHECK-PREP10-NEXT:    blr1676entry:1677  %and = and i64 %ptr, -10995116277761678  %or = or i64 %and, 10000000000001679  %0 = inttoptr i64 %or to ptr1680  %1 = load atomic i8, ptr %0 monotonic, align 40961681  %conv = zext i8 %1 to i161682  ret i16 %conv1683}1684 1685; Function Attrs: nofree norecurse nounwind uwtable willreturn1686define dso_local zeroext i16 @ld_cst_align16_uint16_t_uint8_t() {1687; CHECK-LABEL: ld_cst_align16_uint16_t_uint8_t:1688; CHECK:       # %bb.0: # %entry1689; CHECK-NEXT:    lbz r3, 4080(0)1690; CHECK-NEXT:    blr1691entry:1692  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 161693  %conv = zext i8 %0 to i161694  ret i16 %conv1695}1696 1697; Function Attrs: nofree norecurse nounwind uwtable willreturn1698define dso_local zeroext i16 @ld_cst_align32_uint16_t_uint8_t() {1699; CHECK-LABEL: ld_cst_align32_uint16_t_uint8_t:1700; CHECK:       # %bb.0: # %entry1701; CHECK-NEXT:    lis r3, 1531702; CHECK-NEXT:    lbz r3, -27108(r3)1703; CHECK-NEXT:    blr1704entry:1705  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41706  %conv = zext i8 %0 to i161707  ret i16 %conv1708}1709 1710; Function Attrs: nofree norecurse nounwind uwtable willreturn1711define dso_local zeroext i16 @ld_cst_align64_uint16_t_uint8_t() {1712; CHECK-P10-LABEL: ld_cst_align64_uint16_t_uint8_t:1713; CHECK-P10:       # %bb.0: # %entry1714; CHECK-P10-NEXT:    pli r3, 2441406251715; CHECK-P10-NEXT:    rldic r3, r3, 12, 241716; CHECK-P10-NEXT:    lbz r3, 0(r3)1717; CHECK-P10-NEXT:    blr1718;1719; CHECK-PREP10-LABEL: ld_cst_align64_uint16_t_uint8_t:1720; CHECK-PREP10:       # %bb.0: # %entry1721; CHECK-PREP10-NEXT:    lis r3, 37251722; CHECK-PREP10-NEXT:    ori r3, r3, 190251723; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241724; CHECK-PREP10-NEXT:    lbz r3, 0(r3)1725; CHECK-PREP10-NEXT:    blr1726entry:1727  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961728  %conv = zext i8 %0 to i161729  ret i16 %conv1730}1731 1732; Function Attrs: nofree norecurse nounwind uwtable willreturn1733define dso_local zeroext i16 @ld_0_uint16_t_int8_t(i64 %ptr) {1734; CHECK-LABEL: ld_0_uint16_t_int8_t:1735; CHECK:       # %bb.0: # %entry1736; CHECK-NEXT:    lbz r3, 0(r3)1737; CHECK-NEXT:    extsb r3, r31738; CHECK-NEXT:    clrldi r3, r3, 481739; CHECK-NEXT:    blr1740entry:1741  %0 = inttoptr i64 %ptr to ptr1742  %1 = load atomic i8, ptr %0 monotonic, align 11743  %conv = sext i8 %1 to i161744  ret i16 %conv1745}1746 1747; Function Attrs: nofree norecurse nounwind uwtable willreturn1748define dso_local zeroext i16 @ld_align16_uint16_t_int8_t(ptr nocapture readonly %ptr) {1749; CHECK-LABEL: ld_align16_uint16_t_int8_t:1750; CHECK:       # %bb.0: # %entry1751; CHECK-NEXT:    lbz r3, 8(r3)1752; CHECK-NEXT:    extsb r3, r31753; CHECK-NEXT:    clrldi r3, r3, 481754; CHECK-NEXT:    blr1755entry:1756  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81757  %0 = load atomic i8, ptr %add.ptr monotonic, align 11758  %conv = sext i8 %0 to i161759  ret i16 %conv1760}1761 1762; Function Attrs: nofree norecurse nounwind uwtable willreturn1763define dso_local zeroext i16 @ld_align32_uint16_t_int8_t(ptr nocapture readonly %ptr) {1764; CHECK-P10-LABEL: ld_align32_uint16_t_int8_t:1765; CHECK-P10:       # %bb.0: # %entry1766; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 01767; CHECK-P10-NEXT:    extsb r3, r31768; CHECK-P10-NEXT:    clrldi r3, r3, 481769; CHECK-P10-NEXT:    blr1770;1771; CHECK-PREP10-LABEL: ld_align32_uint16_t_int8_t:1772; CHECK-PREP10:       # %bb.0: # %entry1773; CHECK-PREP10-NEXT:    lis r4, 15251774; CHECK-PREP10-NEXT:    ori r4, r4, 566001775; CHECK-PREP10-NEXT:    lbzx r3, r3, r41776; CHECK-PREP10-NEXT:    extsb r3, r31777; CHECK-PREP10-NEXT:    clrldi r3, r3, 481778; CHECK-PREP10-NEXT:    blr1779entry:1780  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001781  %0 = load atomic i8, ptr %add.ptr monotonic, align 11782  %conv = sext i8 %0 to i161783  ret i16 %conv1784}1785 1786; Function Attrs: nofree norecurse nounwind uwtable willreturn1787define dso_local zeroext i16 @ld_align64_uint16_t_int8_t(ptr nocapture readonly %ptr) {1788; CHECK-P10-LABEL: ld_align64_uint16_t_int8_t:1789; CHECK-P10:       # %bb.0: # %entry1790; CHECK-P10-NEXT:    pli r4, 2441406251791; CHECK-P10-NEXT:    rldic r4, r4, 12, 241792; CHECK-P10-NEXT:    lbzx r3, r3, r41793; CHECK-P10-NEXT:    extsb r3, r31794; CHECK-P10-NEXT:    clrldi r3, r3, 481795; CHECK-P10-NEXT:    blr1796;1797; CHECK-PREP10-LABEL: ld_align64_uint16_t_int8_t:1798; CHECK-PREP10:       # %bb.0: # %entry1799; CHECK-PREP10-NEXT:    lis r4, 37251800; CHECK-PREP10-NEXT:    ori r4, r4, 190251801; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241802; CHECK-PREP10-NEXT:    lbzx r3, r3, r41803; CHECK-PREP10-NEXT:    extsb r3, r31804; CHECK-PREP10-NEXT:    clrldi r3, r3, 481805; CHECK-PREP10-NEXT:    blr1806entry:1807  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001808  %0 = load atomic i8, ptr %add.ptr monotonic, align 11809  %conv = sext i8 %0 to i161810  ret i16 %conv1811}1812 1813; Function Attrs: nofree norecurse nounwind uwtable willreturn1814define dso_local zeroext i16 @ld_reg_uint16_t_int8_t(ptr nocapture readonly %ptr, i64 %off) {1815; CHECK-LABEL: ld_reg_uint16_t_int8_t:1816; CHECK:       # %bb.0: # %entry1817; CHECK-NEXT:    lbzx r3, r3, r41818; CHECK-NEXT:    extsb r3, r31819; CHECK-NEXT:    clrldi r3, r3, 481820; CHECK-NEXT:    blr1821entry:1822  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1823  %0 = load atomic i8, ptr %add.ptr monotonic, align 11824  %conv = sext i8 %0 to i161825  ret i16 %conv1826}1827 1828; Function Attrs: nofree norecurse nounwind uwtable willreturn1829define dso_local zeroext i16 @ld_or_uint16_t_int8_t(i64 %ptr, i8 zeroext %off) {1830; CHECK-LABEL: ld_or_uint16_t_int8_t:1831; CHECK:       # %bb.0: # %entry1832; CHECK-NEXT:    or r3, r4, r31833; CHECK-NEXT:    lbz r3, 0(r3)1834; CHECK-NEXT:    extsb r3, r31835; CHECK-NEXT:    clrldi r3, r3, 481836; CHECK-NEXT:    blr1837entry:1838  %conv = zext i8 %off to i641839  %or = or i64 %conv, %ptr1840  %0 = inttoptr i64 %or to ptr1841  %1 = load atomic i8, ptr %0 monotonic, align 11842  %conv1 = sext i8 %1 to i161843  ret i16 %conv11844}1845 1846; Function Attrs: nofree norecurse nounwind uwtable willreturn1847define dso_local zeroext i16 @ld_not_disjoint16_uint16_t_int8_t(i64 %ptr) {1848; CHECK-LABEL: ld_not_disjoint16_uint16_t_int8_t:1849; CHECK:       # %bb.0: # %entry1850; CHECK-NEXT:    ori r3, r3, 61851; CHECK-NEXT:    lbz r3, 0(r3)1852; CHECK-NEXT:    extsb r3, r31853; CHECK-NEXT:    clrldi r3, r3, 481854; CHECK-NEXT:    blr1855entry:1856  %or = or i64 %ptr, 61857  %0 = inttoptr i64 %or to ptr1858  %1 = load atomic i8, ptr %0 monotonic, align 11859  %conv = sext i8 %1 to i161860  ret i16 %conv1861}1862 1863; Function Attrs: nofree norecurse nounwind uwtable willreturn1864define dso_local zeroext i16 @ld_disjoint_align16_uint16_t_int8_t(i64 %ptr) {1865; CHECK-LABEL: ld_disjoint_align16_uint16_t_int8_t:1866; CHECK:       # %bb.0: # %entry1867; CHECK-NEXT:    rldicr r3, r3, 0, 511868; CHECK-NEXT:    lbz r3, 24(r3)1869; CHECK-NEXT:    extsb r3, r31870; CHECK-NEXT:    clrldi r3, r3, 481871; CHECK-NEXT:    blr1872entry:1873  %and = and i64 %ptr, -40961874  %or = or i64 %and, 241875  %0 = inttoptr i64 %or to ptr1876  %1 = load atomic i8, ptr %0 monotonic, align 81877  %conv = sext i8 %1 to i161878  ret i16 %conv1879}1880 1881; Function Attrs: nofree norecurse nounwind uwtable willreturn1882define dso_local zeroext i16 @ld_not_disjoint32_uint16_t_int8_t(i64 %ptr) {1883; CHECK-LABEL: ld_not_disjoint32_uint16_t_int8_t:1884; CHECK:       # %bb.0: # %entry1885; CHECK-NEXT:    ori r3, r3, 344631886; CHECK-NEXT:    oris r3, r3, 11887; CHECK-NEXT:    lbz r3, 0(r3)1888; CHECK-NEXT:    extsb r3, r31889; CHECK-NEXT:    clrldi r3, r3, 481890; CHECK-NEXT:    blr1891entry:1892  %or = or i64 %ptr, 999991893  %0 = inttoptr i64 %or to ptr1894  %1 = load atomic i8, ptr %0 monotonic, align 11895  %conv = sext i8 %1 to i161896  ret i16 %conv1897}1898 1899; Function Attrs: nofree norecurse nounwind uwtable willreturn1900define dso_local zeroext i16 @ld_disjoint_align32_uint16_t_int8_t(i64 %ptr) {1901; CHECK-P10-LABEL: ld_disjoint_align32_uint16_t_int8_t:1902; CHECK-P10:       # %bb.0: # %entry1903; CHECK-P10-NEXT:    lis r4, -152641904; CHECK-P10-NEXT:    and r3, r3, r41905; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 01906; CHECK-P10-NEXT:    extsb r3, r31907; CHECK-P10-NEXT:    clrldi r3, r3, 481908; CHECK-P10-NEXT:    blr1909;1910; CHECK-PREP10-LABEL: ld_disjoint_align32_uint16_t_int8_t:1911; CHECK-PREP10:       # %bb.0: # %entry1912; CHECK-PREP10-NEXT:    lis r4, -152641913; CHECK-PREP10-NEXT:    and r3, r3, r41914; CHECK-PREP10-NEXT:    lis r4, 152581915; CHECK-PREP10-NEXT:    ori r4, r4, 417121916; CHECK-PREP10-NEXT:    lbzx r3, r3, r41917; CHECK-PREP10-NEXT:    extsb r3, r31918; CHECK-PREP10-NEXT:    clrldi r3, r3, 481919; CHECK-PREP10-NEXT:    blr1920entry:1921  %and = and i64 %ptr, -10003415041922  %or = or i64 %and, 9999900001923  %0 = inttoptr i64 %or to ptr1924  %1 = load atomic i8, ptr %0 monotonic, align 161925  %conv = sext i8 %1 to i161926  ret i16 %conv1927}1928 1929; Function Attrs: nofree norecurse nounwind uwtable willreturn1930define dso_local zeroext i16 @ld_not_disjoint64_uint16_t_int8_t(i64 %ptr) {1931; CHECK-P10-LABEL: ld_not_disjoint64_uint16_t_int8_t:1932; CHECK-P10:       # %bb.0: # %entry1933; CHECK-P10-NEXT:    pli r4, 2321934; CHECK-P10-NEXT:    pli r5, 35675873291935; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01936; CHECK-P10-NEXT:    or r3, r3, r51937; CHECK-P10-NEXT:    lbz r3, 0(r3)1938; CHECK-P10-NEXT:    extsb r3, r31939; CHECK-P10-NEXT:    clrldi r3, r3, 481940; CHECK-P10-NEXT:    blr1941;1942; CHECK-PREP10-LABEL: ld_not_disjoint64_uint16_t_int8_t:1943; CHECK-PREP10:       # %bb.0: # %entry1944; CHECK-PREP10-NEXT:    li r4, 291945; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241946; CHECK-PREP10-NEXT:    oris r4, r4, 544371947; CHECK-PREP10-NEXT:    ori r4, r4, 40971948; CHECK-PREP10-NEXT:    or r3, r3, r41949; CHECK-PREP10-NEXT:    lbz r3, 0(r3)1950; CHECK-PREP10-NEXT:    extsb r3, r31951; CHECK-PREP10-NEXT:    clrldi r3, r3, 481952; CHECK-PREP10-NEXT:    blr1953entry:1954  %or = or i64 %ptr, 10000000000011955  %0 = inttoptr i64 %or to ptr1956  %1 = load atomic i8, ptr %0 monotonic, align 11957  %conv = sext i8 %1 to i161958  ret i16 %conv1959}1960 1961; Function Attrs: nofree norecurse nounwind uwtable willreturn1962define dso_local zeroext i16 @ld_disjoint_align64_uint16_t_int8_t(i64 %ptr) {1963; CHECK-P10-LABEL: ld_disjoint_align64_uint16_t_int8_t:1964; CHECK-P10:       # %bb.0: # %entry1965; CHECK-P10-NEXT:    pli r4, 2441406251966; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231967; CHECK-P10-NEXT:    rldic r4, r4, 12, 241968; CHECK-P10-NEXT:    lbzx r3, r3, r41969; CHECK-P10-NEXT:    extsb r3, r31970; CHECK-P10-NEXT:    clrldi r3, r3, 481971; CHECK-P10-NEXT:    blr1972;1973; CHECK-PREP10-LABEL: ld_disjoint_align64_uint16_t_int8_t:1974; CHECK-PREP10:       # %bb.0: # %entry1975; CHECK-PREP10-NEXT:    lis r4, 37251976; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231977; CHECK-PREP10-NEXT:    ori r4, r4, 190251978; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241979; CHECK-PREP10-NEXT:    lbzx r3, r3, r41980; CHECK-PREP10-NEXT:    extsb r3, r31981; CHECK-PREP10-NEXT:    clrldi r3, r3, 481982; CHECK-PREP10-NEXT:    blr1983entry:1984  %and = and i64 %ptr, -10995116277761985  %or = or i64 %and, 10000000000001986  %0 = inttoptr i64 %or to ptr1987  %1 = load atomic i8, ptr %0 monotonic, align 40961988  %conv = sext i8 %1 to i161989  ret i16 %conv1990}1991 1992; Function Attrs: nofree norecurse nounwind uwtable willreturn1993define dso_local zeroext i16 @ld_cst_align16_uint16_t_int8_t() {1994; CHECK-LABEL: ld_cst_align16_uint16_t_int8_t:1995; CHECK:       # %bb.0: # %entry1996; CHECK-NEXT:    lbz r3, 4080(0)1997; CHECK-NEXT:    extsb r3, r31998; CHECK-NEXT:    clrldi r3, r3, 481999; CHECK-NEXT:    blr2000entry:2001  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 162002  %conv = sext i8 %0 to i162003  ret i16 %conv2004}2005 2006; Function Attrs: nofree norecurse nounwind uwtable willreturn2007define dso_local zeroext i16 @ld_cst_align32_uint16_t_int8_t() {2008; CHECK-LABEL: ld_cst_align32_uint16_t_int8_t:2009; CHECK:       # %bb.0: # %entry2010; CHECK-NEXT:    lis r3, 1532011; CHECK-NEXT:    lbz r3, -27108(r3)2012; CHECK-NEXT:    extsb r3, r32013; CHECK-NEXT:    clrldi r3, r3, 482014; CHECK-NEXT:    blr2015entry:2016  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42017  %conv = sext i8 %0 to i162018  ret i16 %conv2019}2020 2021; Function Attrs: nofree norecurse nounwind uwtable willreturn2022define dso_local zeroext i16 @ld_cst_align64_uint16_t_int8_t() {2023; CHECK-P10-LABEL: ld_cst_align64_uint16_t_int8_t:2024; CHECK-P10:       # %bb.0: # %entry2025; CHECK-P10-NEXT:    pli r3, 2441406252026; CHECK-P10-NEXT:    rldic r3, r3, 12, 242027; CHECK-P10-NEXT:    lbz r3, 0(r3)2028; CHECK-P10-NEXT:    extsb r3, r32029; CHECK-P10-NEXT:    clrldi r3, r3, 482030; CHECK-P10-NEXT:    blr2031;2032; CHECK-PREP10-LABEL: ld_cst_align64_uint16_t_int8_t:2033; CHECK-PREP10:       # %bb.0: # %entry2034; CHECK-PREP10-NEXT:    lis r3, 37252035; CHECK-PREP10-NEXT:    ori r3, r3, 190252036; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242037; CHECK-PREP10-NEXT:    lbz r3, 0(r3)2038; CHECK-PREP10-NEXT:    extsb r3, r32039; CHECK-PREP10-NEXT:    clrldi r3, r3, 482040; CHECK-PREP10-NEXT:    blr2041entry:2042  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962043  %conv = sext i8 %0 to i162044  ret i16 %conv2045}2046 2047; Function Attrs: nofree norecurse nounwind uwtable willreturn2048define dso_local zeroext i16 @ld_0_uint16_t_uint16_t(i64 %ptr) {2049; CHECK-LABEL: ld_0_uint16_t_uint16_t:2050; CHECK:       # %bb.0: # %entry2051; CHECK-NEXT:    lhz r3, 0(r3)2052; CHECK-NEXT:    blr2053entry:2054  %0 = inttoptr i64 %ptr to ptr2055  %1 = load atomic i16, ptr %0 monotonic, align 22056  ret i16 %12057}2058 2059; Function Attrs: nofree norecurse nounwind uwtable willreturn2060define dso_local zeroext i16 @ld_align16_uint16_t_uint16_t(ptr nocapture readonly %ptr) {2061; CHECK-LABEL: ld_align16_uint16_t_uint16_t:2062; CHECK:       # %bb.0: # %entry2063; CHECK-NEXT:    lhz r3, 8(r3)2064; CHECK-NEXT:    blr2065entry:2066  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82067  %0 = load atomic i16, ptr %add.ptr monotonic, align 22068  ret i16 %02069}2070 2071; Function Attrs: nofree norecurse nounwind uwtable willreturn2072define dso_local zeroext i16 @ld_align32_uint16_t_uint16_t(ptr nocapture readonly %ptr) {2073; CHECK-P10-LABEL: ld_align32_uint16_t_uint16_t:2074; CHECK-P10:       # %bb.0: # %entry2075; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 02076; CHECK-P10-NEXT:    clrldi r3, r3, 322077; CHECK-P10-NEXT:    blr2078;2079; CHECK-PREP10-LABEL: ld_align32_uint16_t_uint16_t:2080; CHECK-PREP10:       # %bb.0: # %entry2081; CHECK-PREP10-NEXT:    lis r4, 15252082; CHECK-PREP10-NEXT:    ori r4, r4, 566002083; CHECK-PREP10-NEXT:    lhzx r3, r3, r42084; CHECK-PREP10-NEXT:    blr2085entry:2086  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002087  %0 = load atomic i16, ptr %add.ptr monotonic, align 22088  ret i16 %02089}2090 2091; Function Attrs: nofree norecurse nounwind uwtable willreturn2092define dso_local zeroext i16 @ld_align64_uint16_t_uint16_t(ptr nocapture readonly %ptr) {2093; CHECK-P10-LABEL: ld_align64_uint16_t_uint16_t:2094; CHECK-P10:       # %bb.0: # %entry2095; CHECK-P10-NEXT:    pli r4, 2441406252096; CHECK-P10-NEXT:    rldic r4, r4, 12, 242097; CHECK-P10-NEXT:    lhzx r3, r3, r42098; CHECK-P10-NEXT:    blr2099;2100; CHECK-PREP10-LABEL: ld_align64_uint16_t_uint16_t:2101; CHECK-PREP10:       # %bb.0: # %entry2102; CHECK-PREP10-NEXT:    lis r4, 37252103; CHECK-PREP10-NEXT:    ori r4, r4, 190252104; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242105; CHECK-PREP10-NEXT:    lhzx r3, r3, r42106; CHECK-PREP10-NEXT:    blr2107entry:2108  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002109  %0 = load atomic i16, ptr %add.ptr monotonic, align 22110  ret i16 %02111}2112 2113; Function Attrs: nofree norecurse nounwind uwtable willreturn2114define dso_local zeroext i16 @ld_reg_uint16_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {2115; CHECK-LABEL: ld_reg_uint16_t_uint16_t:2116; CHECK:       # %bb.0: # %entry2117; CHECK-NEXT:    lhzx r3, r3, r42118; CHECK-NEXT:    blr2119entry:2120  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2121  %0 = load atomic i16, ptr %add.ptr monotonic, align 22122  ret i16 %02123}2124 2125; Function Attrs: nofree norecurse nounwind uwtable willreturn2126define dso_local zeroext i16 @ld_or_uint16_t_uint16_t(i64 %ptr, i8 zeroext %off) {2127; CHECK-LABEL: ld_or_uint16_t_uint16_t:2128; CHECK:       # %bb.0: # %entry2129; CHECK-NEXT:    or r3, r4, r32130; CHECK-NEXT:    lhz r3, 0(r3)2131; CHECK-NEXT:    blr2132entry:2133  %conv = zext i8 %off to i642134  %or = or i64 %conv, %ptr2135  %0 = inttoptr i64 %or to ptr2136  %1 = load atomic i16, ptr %0 monotonic, align 22137  ret i16 %12138}2139 2140; Function Attrs: nofree norecurse nounwind uwtable willreturn2141define dso_local zeroext i16 @ld_not_disjoint16_uint16_t_uint16_t(i64 %ptr) {2142; CHECK-LABEL: ld_not_disjoint16_uint16_t_uint16_t:2143; CHECK:       # %bb.0: # %entry2144; CHECK-NEXT:    ori r3, r3, 62145; CHECK-NEXT:    lhz r3, 0(r3)2146; CHECK-NEXT:    blr2147entry:2148  %or = or i64 %ptr, 62149  %0 = inttoptr i64 %or to ptr2150  %1 = load atomic i16, ptr %0 monotonic, align 22151  ret i16 %12152}2153 2154; Function Attrs: nofree norecurse nounwind uwtable willreturn2155define dso_local zeroext i16 @ld_disjoint_align16_uint16_t_uint16_t(i64 %ptr) {2156; CHECK-LABEL: ld_disjoint_align16_uint16_t_uint16_t:2157; CHECK:       # %bb.0: # %entry2158; CHECK-NEXT:    rldicr r3, r3, 0, 512159; CHECK-NEXT:    lhz r3, 24(r3)2160; CHECK-NEXT:    blr2161entry:2162  %and = and i64 %ptr, -40962163  %or = or i64 %and, 242164  %0 = inttoptr i64 %or to ptr2165  %1 = load atomic i16, ptr %0 monotonic, align 82166  ret i16 %12167}2168 2169; Function Attrs: nofree norecurse nounwind uwtable willreturn2170define dso_local zeroext i16 @ld_not_disjoint32_uint16_t_uint16_t(i64 %ptr) {2171; CHECK-LABEL: ld_not_disjoint32_uint16_t_uint16_t:2172; CHECK:       # %bb.0: # %entry2173; CHECK-NEXT:    ori r3, r3, 344632174; CHECK-NEXT:    oris r3, r3, 12175; CHECK-NEXT:    lhz r3, 0(r3)2176; CHECK-NEXT:    blr2177entry:2178  %or = or i64 %ptr, 999992179  %0 = inttoptr i64 %or to ptr2180  %1 = load atomic i16, ptr %0 monotonic, align 22181  ret i16 %12182}2183 2184; Function Attrs: nofree norecurse nounwind uwtable willreturn2185define dso_local zeroext i16 @ld_disjoint_align32_uint16_t_uint16_t(i64 %ptr) {2186; CHECK-P10-LABEL: ld_disjoint_align32_uint16_t_uint16_t:2187; CHECK-P10:       # %bb.0: # %entry2188; CHECK-P10-NEXT:    lis r4, -152642189; CHECK-P10-NEXT:    and r3, r3, r42190; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 02191; CHECK-P10-NEXT:    clrldi r3, r3, 322192; CHECK-P10-NEXT:    blr2193;2194; CHECK-PREP10-LABEL: ld_disjoint_align32_uint16_t_uint16_t:2195; CHECK-PREP10:       # %bb.0: # %entry2196; CHECK-PREP10-NEXT:    lis r4, -152642197; CHECK-PREP10-NEXT:    and r3, r3, r42198; CHECK-PREP10-NEXT:    lis r4, 152582199; CHECK-PREP10-NEXT:    ori r4, r4, 417122200; CHECK-PREP10-NEXT:    lhzx r3, r3, r42201; CHECK-PREP10-NEXT:    blr2202entry:2203  %and = and i64 %ptr, -10003415042204  %or = or i64 %and, 9999900002205  %0 = inttoptr i64 %or to ptr2206  %1 = load atomic i16, ptr %0 monotonic, align 162207  ret i16 %12208}2209 2210; Function Attrs: nofree norecurse nounwind uwtable willreturn2211define dso_local zeroext i16 @ld_not_disjoint64_uint16_t_uint16_t(i64 %ptr) {2212; CHECK-P10-LABEL: ld_not_disjoint64_uint16_t_uint16_t:2213; CHECK-P10:       # %bb.0: # %entry2214; CHECK-P10-NEXT:    pli r4, 2322215; CHECK-P10-NEXT:    pli r5, 35675873292216; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02217; CHECK-P10-NEXT:    or r3, r3, r52218; CHECK-P10-NEXT:    lhz r3, 0(r3)2219; CHECK-P10-NEXT:    blr2220;2221; CHECK-PREP10-LABEL: ld_not_disjoint64_uint16_t_uint16_t:2222; CHECK-PREP10:       # %bb.0: # %entry2223; CHECK-PREP10-NEXT:    li r4, 292224; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242225; CHECK-PREP10-NEXT:    oris r4, r4, 544372226; CHECK-PREP10-NEXT:    ori r4, r4, 40972227; CHECK-PREP10-NEXT:    or r3, r3, r42228; CHECK-PREP10-NEXT:    lhz r3, 0(r3)2229; CHECK-PREP10-NEXT:    blr2230entry:2231  %or = or i64 %ptr, 10000000000012232  %0 = inttoptr i64 %or to ptr2233  %1 = load atomic i16, ptr %0 monotonic, align 22234  ret i16 %12235}2236 2237; Function Attrs: nofree norecurse nounwind uwtable willreturn2238define dso_local zeroext i16 @ld_disjoint_align64_uint16_t_uint16_t(i64 %ptr) {2239; CHECK-P10-LABEL: ld_disjoint_align64_uint16_t_uint16_t:2240; CHECK-P10:       # %bb.0: # %entry2241; CHECK-P10-NEXT:    pli r4, 2441406252242; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232243; CHECK-P10-NEXT:    rldic r4, r4, 12, 242244; CHECK-P10-NEXT:    lhzx r3, r3, r42245; CHECK-P10-NEXT:    blr2246;2247; CHECK-PREP10-LABEL: ld_disjoint_align64_uint16_t_uint16_t:2248; CHECK-PREP10:       # %bb.0: # %entry2249; CHECK-PREP10-NEXT:    lis r4, 37252250; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232251; CHECK-PREP10-NEXT:    ori r4, r4, 190252252; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242253; CHECK-PREP10-NEXT:    lhzx r3, r3, r42254; CHECK-PREP10-NEXT:    blr2255entry:2256  %and = and i64 %ptr, -10995116277762257  %or = or i64 %and, 10000000000002258  %0 = inttoptr i64 %or to ptr2259  %1 = load atomic i16, ptr %0 monotonic, align 40962260  ret i16 %12261}2262 2263; Function Attrs: nofree norecurse nounwind uwtable willreturn2264define dso_local zeroext i16 @ld_cst_align16_uint16_t_uint16_t() {2265; CHECK-LABEL: ld_cst_align16_uint16_t_uint16_t:2266; CHECK:       # %bb.0: # %entry2267; CHECK-NEXT:    lhz r3, 4080(0)2268; CHECK-NEXT:    blr2269entry:2270  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 162271  ret i16 %02272}2273 2274; Function Attrs: nofree norecurse nounwind uwtable willreturn2275define dso_local zeroext i16 @ld_cst_align32_uint16_t_uint16_t() {2276; CHECK-LABEL: ld_cst_align32_uint16_t_uint16_t:2277; CHECK:       # %bb.0: # %entry2278; CHECK-NEXT:    lis r3, 1532279; CHECK-NEXT:    lhz r3, -27108(r3)2280; CHECK-NEXT:    blr2281entry:2282  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42283  ret i16 %02284}2285 2286; Function Attrs: nofree norecurse nounwind uwtable willreturn2287define dso_local zeroext i16 @ld_cst_align64_uint16_t_uint16_t() {2288; CHECK-P10-LABEL: ld_cst_align64_uint16_t_uint16_t:2289; CHECK-P10:       # %bb.0: # %entry2290; CHECK-P10-NEXT:    pli r3, 2441406252291; CHECK-P10-NEXT:    rldic r3, r3, 12, 242292; CHECK-P10-NEXT:    lhz r3, 0(r3)2293; CHECK-P10-NEXT:    blr2294;2295; CHECK-PREP10-LABEL: ld_cst_align64_uint16_t_uint16_t:2296; CHECK-PREP10:       # %bb.0: # %entry2297; CHECK-PREP10-NEXT:    lis r3, 37252298; CHECK-PREP10-NEXT:    ori r3, r3, 190252299; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242300; CHECK-PREP10-NEXT:    lhz r3, 0(r3)2301; CHECK-PREP10-NEXT:    blr2302entry:2303  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962304  ret i16 %02305}2306 2307; Function Attrs: nofree norecurse nounwind uwtable willreturn2308define dso_local zeroext i16 @ld_0_uint16_t_uint32_t(i64 %ptr) {2309; CHECK-LABEL: ld_0_uint16_t_uint32_t:2310; CHECK:       # %bb.0: # %entry2311; CHECK-NEXT:    lwz r3, 0(r3)2312; CHECK-NEXT:    clrldi r3, r3, 482313; CHECK-NEXT:    blr2314entry:2315  %0 = inttoptr i64 %ptr to ptr2316  %1 = load atomic i32, ptr %0 monotonic, align 42317  %conv = trunc i32 %1 to i162318  ret i16 %conv2319}2320 2321; Function Attrs: nofree norecurse nounwind uwtable willreturn2322define dso_local zeroext i16 @ld_align16_uint16_t_uint32_t(ptr nocapture readonly %ptr) {2323; CHECK-LABEL: ld_align16_uint16_t_uint32_t:2324; CHECK:       # %bb.0: # %entry2325; CHECK-NEXT:    lwz r3, 8(r3)2326; CHECK-NEXT:    clrldi r3, r3, 482327; CHECK-NEXT:    blr2328entry:2329  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82330  %0 = load atomic i32, ptr %add.ptr monotonic, align 42331  %conv = trunc i32 %0 to i162332  ret i16 %conv2333}2334 2335; Function Attrs: nofree norecurse nounwind uwtable willreturn2336define dso_local zeroext i16 @ld_align32_uint16_t_uint32_t(ptr nocapture readonly %ptr) {2337; CHECK-P10-LABEL: ld_align32_uint16_t_uint32_t:2338; CHECK-P10:       # %bb.0: # %entry2339; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 02340; CHECK-P10-NEXT:    clrldi r3, r3, 482341; CHECK-P10-NEXT:    blr2342;2343; CHECK-PREP10-LABEL: ld_align32_uint16_t_uint32_t:2344; CHECK-PREP10:       # %bb.0: # %entry2345; CHECK-PREP10-NEXT:    lis r4, 15252346; CHECK-PREP10-NEXT:    ori r4, r4, 566002347; CHECK-PREP10-NEXT:    lwzx r3, r3, r42348; CHECK-PREP10-NEXT:    clrldi r3, r3, 482349; CHECK-PREP10-NEXT:    blr2350entry:2351  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002352  %0 = load atomic i32, ptr %add.ptr monotonic, align 42353  %conv = trunc i32 %0 to i162354  ret i16 %conv2355}2356 2357; Function Attrs: nofree norecurse nounwind uwtable willreturn2358define dso_local zeroext i16 @ld_align64_uint16_t_uint32_t(ptr nocapture readonly %ptr) {2359; CHECK-P10-LABEL: ld_align64_uint16_t_uint32_t:2360; CHECK-P10:       # %bb.0: # %entry2361; CHECK-P10-NEXT:    pli r4, 2441406252362; CHECK-P10-NEXT:    rldic r4, r4, 12, 242363; CHECK-P10-NEXT:    lwzx r3, r3, r42364; CHECK-P10-NEXT:    clrldi r3, r3, 482365; CHECK-P10-NEXT:    blr2366;2367; CHECK-PREP10-LABEL: ld_align64_uint16_t_uint32_t:2368; CHECK-PREP10:       # %bb.0: # %entry2369; CHECK-PREP10-NEXT:    lis r4, 37252370; CHECK-PREP10-NEXT:    ori r4, r4, 190252371; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242372; CHECK-PREP10-NEXT:    lwzx r3, r3, r42373; CHECK-PREP10-NEXT:    clrldi r3, r3, 482374; CHECK-PREP10-NEXT:    blr2375entry:2376  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002377  %0 = load atomic i32, ptr %add.ptr monotonic, align 42378  %conv = trunc i32 %0 to i162379  ret i16 %conv2380}2381 2382; Function Attrs: nofree norecurse nounwind uwtable willreturn2383define dso_local zeroext i16 @ld_reg_uint16_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {2384; CHECK-LABEL: ld_reg_uint16_t_uint32_t:2385; CHECK:       # %bb.0: # %entry2386; CHECK-NEXT:    lwzx r3, r3, r42387; CHECK-NEXT:    clrldi r3, r3, 482388; CHECK-NEXT:    blr2389entry:2390  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2391  %0 = load atomic i32, ptr %add.ptr monotonic, align 42392  %conv = trunc i32 %0 to i162393  ret i16 %conv2394}2395 2396; Function Attrs: nofree norecurse nounwind uwtable willreturn2397define dso_local zeroext i16 @ld_or_uint16_t_uint32_t(i64 %ptr, i8 zeroext %off) {2398; CHECK-LABEL: ld_or_uint16_t_uint32_t:2399; CHECK:       # %bb.0: # %entry2400; CHECK-NEXT:    or r3, r4, r32401; CHECK-NEXT:    lwz r3, 0(r3)2402; CHECK-NEXT:    clrldi r3, r3, 482403; CHECK-NEXT:    blr2404entry:2405  %conv = zext i8 %off to i642406  %or = or i64 %conv, %ptr2407  %0 = inttoptr i64 %or to ptr2408  %1 = load atomic i32, ptr %0 monotonic, align 42409  %conv1 = trunc i32 %1 to i162410  ret i16 %conv12411}2412 2413; Function Attrs: nofree norecurse nounwind uwtable willreturn2414define dso_local zeroext i16 @ld_not_disjoint16_uint16_t_uint32_t(i64 %ptr) {2415; CHECK-LABEL: ld_not_disjoint16_uint16_t_uint32_t:2416; CHECK:       # %bb.0: # %entry2417; CHECK-NEXT:    ori r3, r3, 62418; CHECK-NEXT:    lwz r3, 0(r3)2419; CHECK-NEXT:    clrldi r3, r3, 482420; CHECK-NEXT:    blr2421entry:2422  %or = or i64 %ptr, 62423  %0 = inttoptr i64 %or to ptr2424  %1 = load atomic i32, ptr %0 monotonic, align 42425  %conv = trunc i32 %1 to i162426  ret i16 %conv2427}2428 2429; Function Attrs: nofree norecurse nounwind uwtable willreturn2430define dso_local zeroext i16 @ld_disjoint_align16_uint16_t_uint32_t(i64 %ptr) {2431; CHECK-LABEL: ld_disjoint_align16_uint16_t_uint32_t:2432; CHECK:       # %bb.0: # %entry2433; CHECK-NEXT:    rldicr r3, r3, 0, 512434; CHECK-NEXT:    lwz r3, 24(r3)2435; CHECK-NEXT:    clrldi r3, r3, 482436; CHECK-NEXT:    blr2437entry:2438  %and = and i64 %ptr, -40962439  %or = or i64 %and, 242440  %0 = inttoptr i64 %or to ptr2441  %1 = load atomic i32, ptr %0 monotonic, align 82442  %conv = trunc i32 %1 to i162443  ret i16 %conv2444}2445 2446; Function Attrs: nofree norecurse nounwind uwtable willreturn2447define dso_local zeroext i16 @ld_not_disjoint32_uint16_t_uint32_t(i64 %ptr) {2448; CHECK-LABEL: ld_not_disjoint32_uint16_t_uint32_t:2449; CHECK:       # %bb.0: # %entry2450; CHECK-NEXT:    ori r3, r3, 344632451; CHECK-NEXT:    oris r3, r3, 12452; CHECK-NEXT:    lwz r3, 0(r3)2453; CHECK-NEXT:    clrldi r3, r3, 482454; CHECK-NEXT:    blr2455entry:2456  %or = or i64 %ptr, 999992457  %0 = inttoptr i64 %or to ptr2458  %1 = load atomic i32, ptr %0 monotonic, align 42459  %conv = trunc i32 %1 to i162460  ret i16 %conv2461}2462 2463; Function Attrs: nofree norecurse nounwind uwtable willreturn2464define dso_local zeroext i16 @ld_disjoint_align32_uint16_t_uint32_t(i64 %ptr) {2465; CHECK-P10-LABEL: ld_disjoint_align32_uint16_t_uint32_t:2466; CHECK-P10:       # %bb.0: # %entry2467; CHECK-P10-NEXT:    lis r4, -152642468; CHECK-P10-NEXT:    and r3, r3, r42469; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 02470; CHECK-P10-NEXT:    clrldi r3, r3, 482471; CHECK-P10-NEXT:    blr2472;2473; CHECK-PREP10-LABEL: ld_disjoint_align32_uint16_t_uint32_t:2474; CHECK-PREP10:       # %bb.0: # %entry2475; CHECK-PREP10-NEXT:    lis r4, -152642476; CHECK-PREP10-NEXT:    and r3, r3, r42477; CHECK-PREP10-NEXT:    lis r4, 152582478; CHECK-PREP10-NEXT:    ori r4, r4, 417122479; CHECK-PREP10-NEXT:    lwzx r3, r3, r42480; CHECK-PREP10-NEXT:    clrldi r3, r3, 482481; CHECK-PREP10-NEXT:    blr2482entry:2483  %and = and i64 %ptr, -10003415042484  %or = or i64 %and, 9999900002485  %0 = inttoptr i64 %or to ptr2486  %1 = load atomic i32, ptr %0 monotonic, align 162487  %conv = trunc i32 %1 to i162488  ret i16 %conv2489}2490 2491; Function Attrs: nofree norecurse nounwind uwtable willreturn2492define dso_local zeroext i16 @ld_not_disjoint64_uint16_t_uint32_t(i64 %ptr) {2493; CHECK-P10-LABEL: ld_not_disjoint64_uint16_t_uint32_t:2494; CHECK-P10:       # %bb.0: # %entry2495; CHECK-P10-NEXT:    pli r4, 2322496; CHECK-P10-NEXT:    pli r5, 35675873292497; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02498; CHECK-P10-NEXT:    or r3, r3, r52499; CHECK-P10-NEXT:    lwz r3, 0(r3)2500; CHECK-P10-NEXT:    clrldi r3, r3, 482501; CHECK-P10-NEXT:    blr2502;2503; CHECK-PREP10-LABEL: ld_not_disjoint64_uint16_t_uint32_t:2504; CHECK-PREP10:       # %bb.0: # %entry2505; CHECK-PREP10-NEXT:    li r4, 292506; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242507; CHECK-PREP10-NEXT:    oris r4, r4, 544372508; CHECK-PREP10-NEXT:    ori r4, r4, 40972509; CHECK-PREP10-NEXT:    or r3, r3, r42510; CHECK-PREP10-NEXT:    lwz r3, 0(r3)2511; CHECK-PREP10-NEXT:    clrldi r3, r3, 482512; CHECK-PREP10-NEXT:    blr2513entry:2514  %or = or i64 %ptr, 10000000000012515  %0 = inttoptr i64 %or to ptr2516  %1 = load atomic i32, ptr %0 monotonic, align 42517  %conv = trunc i32 %1 to i162518  ret i16 %conv2519}2520 2521; Function Attrs: nofree norecurse nounwind uwtable willreturn2522define dso_local zeroext i16 @ld_disjoint_align64_uint16_t_uint32_t(i64 %ptr) {2523; CHECK-P10-LABEL: ld_disjoint_align64_uint16_t_uint32_t:2524; CHECK-P10:       # %bb.0: # %entry2525; CHECK-P10-NEXT:    pli r4, 2441406252526; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232527; CHECK-P10-NEXT:    rldic r4, r4, 12, 242528; CHECK-P10-NEXT:    lwzx r3, r3, r42529; CHECK-P10-NEXT:    clrldi r3, r3, 482530; CHECK-P10-NEXT:    blr2531;2532; CHECK-PREP10-LABEL: ld_disjoint_align64_uint16_t_uint32_t:2533; CHECK-PREP10:       # %bb.0: # %entry2534; CHECK-PREP10-NEXT:    lis r4, 37252535; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232536; CHECK-PREP10-NEXT:    ori r4, r4, 190252537; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242538; CHECK-PREP10-NEXT:    lwzx r3, r3, r42539; CHECK-PREP10-NEXT:    clrldi r3, r3, 482540; CHECK-PREP10-NEXT:    blr2541entry:2542  %and = and i64 %ptr, -10995116277762543  %or = or i64 %and, 10000000000002544  %0 = inttoptr i64 %or to ptr2545  %1 = load atomic i32, ptr %0 monotonic, align 40962546  %conv = trunc i32 %1 to i162547  ret i16 %conv2548}2549 2550; Function Attrs: nofree norecurse nounwind uwtable willreturn2551define dso_local zeroext i16 @ld_cst_align16_uint16_t_uint32_t() {2552; CHECK-LABEL: ld_cst_align16_uint16_t_uint32_t:2553; CHECK:       # %bb.0: # %entry2554; CHECK-NEXT:    lwz r3, 4080(0)2555; CHECK-NEXT:    clrldi r3, r3, 482556; CHECK-NEXT:    blr2557entry:2558  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 162559  %conv = trunc i32 %0 to i162560  ret i16 %conv2561}2562 2563; Function Attrs: nofree norecurse nounwind uwtable willreturn2564define dso_local zeroext i16 @ld_cst_align32_uint16_t_uint32_t() {2565; CHECK-LABEL: ld_cst_align32_uint16_t_uint32_t:2566; CHECK:       # %bb.0: # %entry2567; CHECK-NEXT:    lis r3, 1532568; CHECK-NEXT:    lwz r3, -27108(r3)2569; CHECK-NEXT:    clrldi r3, r3, 482570; CHECK-NEXT:    blr2571entry:2572  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42573  %conv = trunc i32 %0 to i162574  ret i16 %conv2575}2576 2577; Function Attrs: nofree norecurse nounwind uwtable willreturn2578define dso_local zeroext i16 @ld_cst_align64_uint16_t_uint32_t() {2579; CHECK-P10-LABEL: ld_cst_align64_uint16_t_uint32_t:2580; CHECK-P10:       # %bb.0: # %entry2581; CHECK-P10-NEXT:    pli r3, 2441406252582; CHECK-P10-NEXT:    rldic r3, r3, 12, 242583; CHECK-P10-NEXT:    lwz r3, 0(r3)2584; CHECK-P10-NEXT:    clrldi r3, r3, 482585; CHECK-P10-NEXT:    blr2586;2587; CHECK-PREP10-LABEL: ld_cst_align64_uint16_t_uint32_t:2588; CHECK-PREP10:       # %bb.0: # %entry2589; CHECK-PREP10-NEXT:    lis r3, 37252590; CHECK-PREP10-NEXT:    ori r3, r3, 190252591; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242592; CHECK-PREP10-NEXT:    lwz r3, 0(r3)2593; CHECK-PREP10-NEXT:    clrldi r3, r3, 482594; CHECK-PREP10-NEXT:    blr2595entry:2596  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962597  %conv = trunc i32 %0 to i162598  ret i16 %conv2599}2600 2601; Function Attrs: nofree norecurse nounwind uwtable willreturn2602define dso_local zeroext i16 @ld_0_uint16_t_uint64_t(i64 %ptr) {2603; CHECK-LABEL: ld_0_uint16_t_uint64_t:2604; CHECK:       # %bb.0: # %entry2605; CHECK-NEXT:    ld r3, 0(r3)2606; CHECK-NEXT:    clrldi r3, r3, 482607; CHECK-NEXT:    blr2608entry:2609  %0 = inttoptr i64 %ptr to ptr2610  %1 = load atomic i64, ptr %0 monotonic, align 82611  %conv = trunc i64 %1 to i162612  ret i16 %conv2613}2614 2615; Function Attrs: nofree norecurse nounwind uwtable willreturn2616define dso_local zeroext i16 @ld_align16_uint16_t_uint64_t(ptr nocapture readonly %ptr) {2617; CHECK-LABEL: ld_align16_uint16_t_uint64_t:2618; CHECK:       # %bb.0: # %entry2619; CHECK-NEXT:    ld r3, 8(r3)2620; CHECK-NEXT:    clrldi r3, r3, 482621; CHECK-NEXT:    blr2622entry:2623  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82624  %0 = load atomic i64, ptr %add.ptr monotonic, align 82625  %conv = trunc i64 %0 to i162626  ret i16 %conv2627}2628 2629; Function Attrs: nofree norecurse nounwind uwtable willreturn2630define dso_local zeroext i16 @ld_align32_uint16_t_uint64_t(ptr nocapture readonly %ptr) {2631; CHECK-P10-LABEL: ld_align32_uint16_t_uint64_t:2632; CHECK-P10:       # %bb.0: # %entry2633; CHECK-P10-NEXT:    pld r3, 99999000(r3), 02634; CHECK-P10-NEXT:    clrldi r3, r3, 482635; CHECK-P10-NEXT:    blr2636;2637; CHECK-PREP10-LABEL: ld_align32_uint16_t_uint64_t:2638; CHECK-PREP10:       # %bb.0: # %entry2639; CHECK-PREP10-NEXT:    lis r4, 15252640; CHECK-PREP10-NEXT:    ori r4, r4, 566002641; CHECK-PREP10-NEXT:    ldx r3, r3, r42642; CHECK-PREP10-NEXT:    clrldi r3, r3, 482643; CHECK-PREP10-NEXT:    blr2644entry:2645  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002646  %0 = load atomic i64, ptr %add.ptr monotonic, align 82647  %conv = trunc i64 %0 to i162648  ret i16 %conv2649}2650 2651; Function Attrs: nofree norecurse nounwind uwtable willreturn2652define dso_local zeroext i16 @ld_align64_uint16_t_uint64_t(ptr nocapture readonly %ptr) {2653; CHECK-P10-LABEL: ld_align64_uint16_t_uint64_t:2654; CHECK-P10:       # %bb.0: # %entry2655; CHECK-P10-NEXT:    pli r4, 2441406252656; CHECK-P10-NEXT:    rldic r4, r4, 12, 242657; CHECK-P10-NEXT:    ldx r3, r3, r42658; CHECK-P10-NEXT:    clrldi r3, r3, 482659; CHECK-P10-NEXT:    blr2660;2661; CHECK-PREP10-LABEL: ld_align64_uint16_t_uint64_t:2662; CHECK-PREP10:       # %bb.0: # %entry2663; CHECK-PREP10-NEXT:    lis r4, 37252664; CHECK-PREP10-NEXT:    ori r4, r4, 190252665; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242666; CHECK-PREP10-NEXT:    ldx r3, r3, r42667; CHECK-PREP10-NEXT:    clrldi r3, r3, 482668; CHECK-PREP10-NEXT:    blr2669entry:2670  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002671  %0 = load atomic i64, ptr %add.ptr monotonic, align 82672  %conv = trunc i64 %0 to i162673  ret i16 %conv2674}2675 2676; Function Attrs: nofree norecurse nounwind uwtable willreturn2677define dso_local zeroext i16 @ld_reg_uint16_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {2678; CHECK-LABEL: ld_reg_uint16_t_uint64_t:2679; CHECK:       # %bb.0: # %entry2680; CHECK-NEXT:    ldx r3, r3, r42681; CHECK-NEXT:    clrldi r3, r3, 482682; CHECK-NEXT:    blr2683entry:2684  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2685  %0 = load atomic i64, ptr %add.ptr monotonic, align 82686  %conv = trunc i64 %0 to i162687  ret i16 %conv2688}2689 2690; Function Attrs: nofree norecurse nounwind uwtable willreturn2691define dso_local zeroext i16 @ld_or_uint16_t_uint64_t(i64 %ptr, i8 zeroext %off) {2692; CHECK-LABEL: ld_or_uint16_t_uint64_t:2693; CHECK:       # %bb.0: # %entry2694; CHECK-NEXT:    or r3, r4, r32695; CHECK-NEXT:    ld r3, 0(r3)2696; CHECK-NEXT:    clrldi r3, r3, 482697; CHECK-NEXT:    blr2698entry:2699  %conv = zext i8 %off to i642700  %or = or i64 %conv, %ptr2701  %0 = inttoptr i64 %or to ptr2702  %1 = load atomic i64, ptr %0 monotonic, align 82703  %conv1 = trunc i64 %1 to i162704  ret i16 %conv12705}2706 2707; Function Attrs: nofree norecurse nounwind uwtable willreturn2708define dso_local zeroext i16 @ld_not_disjoint16_uint16_t_uint64_t(i64 %ptr) {2709; CHECK-LABEL: ld_not_disjoint16_uint16_t_uint64_t:2710; CHECK:       # %bb.0: # %entry2711; CHECK-NEXT:    ori r3, r3, 62712; CHECK-NEXT:    ld r3, 0(r3)2713; CHECK-NEXT:    clrldi r3, r3, 482714; CHECK-NEXT:    blr2715entry:2716  %or = or i64 %ptr, 62717  %0 = inttoptr i64 %or to ptr2718  %1 = load atomic i64, ptr %0 monotonic, align 82719  %conv = trunc i64 %1 to i162720  ret i16 %conv2721}2722 2723; Function Attrs: nofree norecurse nounwind uwtable willreturn2724define dso_local zeroext i16 @ld_disjoint_align16_uint16_t_uint64_t(i64 %ptr) {2725; CHECK-LABEL: ld_disjoint_align16_uint16_t_uint64_t:2726; CHECK:       # %bb.0: # %entry2727; CHECK-NEXT:    rldicr r3, r3, 0, 512728; CHECK-NEXT:    ld r3, 24(r3)2729; CHECK-NEXT:    clrldi r3, r3, 482730; CHECK-NEXT:    blr2731entry:2732  %and = and i64 %ptr, -40962733  %or = or i64 %and, 242734  %0 = inttoptr i64 %or to ptr2735  %1 = load atomic i64, ptr %0 monotonic, align 82736  %conv = trunc i64 %1 to i162737  ret i16 %conv2738}2739 2740; Function Attrs: nofree norecurse nounwind uwtable willreturn2741define dso_local zeroext i16 @ld_not_disjoint32_uint16_t_uint64_t(i64 %ptr) {2742; CHECK-LABEL: ld_not_disjoint32_uint16_t_uint64_t:2743; CHECK:       # %bb.0: # %entry2744; CHECK-NEXT:    ori r3, r3, 344632745; CHECK-NEXT:    oris r3, r3, 12746; CHECK-NEXT:    ld r3, 0(r3)2747; CHECK-NEXT:    clrldi r3, r3, 482748; CHECK-NEXT:    blr2749entry:2750  %or = or i64 %ptr, 999992751  %0 = inttoptr i64 %or to ptr2752  %1 = load atomic i64, ptr %0 monotonic, align 82753  %conv = trunc i64 %1 to i162754  ret i16 %conv2755}2756 2757; Function Attrs: nofree norecurse nounwind uwtable willreturn2758define dso_local zeroext i16 @ld_disjoint_align32_uint16_t_uint64_t(i64 %ptr) {2759; CHECK-P10-LABEL: ld_disjoint_align32_uint16_t_uint64_t:2760; CHECK-P10:       # %bb.0: # %entry2761; CHECK-P10-NEXT:    lis r4, -152642762; CHECK-P10-NEXT:    and r3, r3, r42763; CHECK-P10-NEXT:    pld r3, 999990000(r3), 02764; CHECK-P10-NEXT:    clrldi r3, r3, 482765; CHECK-P10-NEXT:    blr2766;2767; CHECK-PREP10-LABEL: ld_disjoint_align32_uint16_t_uint64_t:2768; CHECK-PREP10:       # %bb.0: # %entry2769; CHECK-PREP10-NEXT:    lis r4, -152642770; CHECK-PREP10-NEXT:    and r3, r3, r42771; CHECK-PREP10-NEXT:    lis r4, 152582772; CHECK-PREP10-NEXT:    ori r4, r4, 417122773; CHECK-PREP10-NEXT:    ldx r3, r3, r42774; CHECK-PREP10-NEXT:    clrldi r3, r3, 482775; CHECK-PREP10-NEXT:    blr2776entry:2777  %and = and i64 %ptr, -10003415042778  %or = or i64 %and, 9999900002779  %0 = inttoptr i64 %or to ptr2780  %1 = load atomic i64, ptr %0 monotonic, align 162781  %conv = trunc i64 %1 to i162782  ret i16 %conv2783}2784 2785; Function Attrs: nofree norecurse nounwind uwtable willreturn2786define dso_local zeroext i16 @ld_not_disjoint64_uint16_t_uint64_t(i64 %ptr) {2787; CHECK-P10-LABEL: ld_not_disjoint64_uint16_t_uint64_t:2788; CHECK-P10:       # %bb.0: # %entry2789; CHECK-P10-NEXT:    pli r4, 2322790; CHECK-P10-NEXT:    pli r5, 35675873292791; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02792; CHECK-P10-NEXT:    or r3, r3, r52793; CHECK-P10-NEXT:    ld r3, 0(r3)2794; CHECK-P10-NEXT:    clrldi r3, r3, 482795; CHECK-P10-NEXT:    blr2796;2797; CHECK-PREP10-LABEL: ld_not_disjoint64_uint16_t_uint64_t:2798; CHECK-PREP10:       # %bb.0: # %entry2799; CHECK-PREP10-NEXT:    li r4, 292800; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242801; CHECK-PREP10-NEXT:    oris r4, r4, 544372802; CHECK-PREP10-NEXT:    ori r4, r4, 40972803; CHECK-PREP10-NEXT:    or r3, r3, r42804; CHECK-PREP10-NEXT:    ld r3, 0(r3)2805; CHECK-PREP10-NEXT:    clrldi r3, r3, 482806; CHECK-PREP10-NEXT:    blr2807entry:2808  %or = or i64 %ptr, 10000000000012809  %0 = inttoptr i64 %or to ptr2810  %1 = load atomic i64, ptr %0 monotonic, align 82811  %conv = trunc i64 %1 to i162812  ret i16 %conv2813}2814 2815; Function Attrs: nofree norecurse nounwind uwtable willreturn2816define dso_local zeroext i16 @ld_disjoint_align64_uint16_t_uint64_t(i64 %ptr) {2817; CHECK-P10-LABEL: ld_disjoint_align64_uint16_t_uint64_t:2818; CHECK-P10:       # %bb.0: # %entry2819; CHECK-P10-NEXT:    pli r4, 2441406252820; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232821; CHECK-P10-NEXT:    rldic r4, r4, 12, 242822; CHECK-P10-NEXT:    ldx r3, r3, r42823; CHECK-P10-NEXT:    clrldi r3, r3, 482824; CHECK-P10-NEXT:    blr2825;2826; CHECK-PREP10-LABEL: ld_disjoint_align64_uint16_t_uint64_t:2827; CHECK-PREP10:       # %bb.0: # %entry2828; CHECK-PREP10-NEXT:    lis r4, 37252829; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232830; CHECK-PREP10-NEXT:    ori r4, r4, 190252831; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242832; CHECK-PREP10-NEXT:    ldx r3, r3, r42833; CHECK-PREP10-NEXT:    clrldi r3, r3, 482834; CHECK-PREP10-NEXT:    blr2835entry:2836  %and = and i64 %ptr, -10995116277762837  %or = or i64 %and, 10000000000002838  %0 = inttoptr i64 %or to ptr2839  %1 = load atomic i64, ptr %0 monotonic, align 40962840  %conv = trunc i64 %1 to i162841  ret i16 %conv2842}2843 2844; Function Attrs: nofree norecurse nounwind uwtable willreturn2845define dso_local zeroext i16 @ld_cst_align16_uint16_t_uint64_t() {2846; CHECK-LABEL: ld_cst_align16_uint16_t_uint64_t:2847; CHECK:       # %bb.0: # %entry2848; CHECK-NEXT:    ld r3, 4080(0)2849; CHECK-NEXT:    clrldi r3, r3, 482850; CHECK-NEXT:    blr2851entry:2852  %0 = load atomic i64, ptr inttoptr (i64 4080 to ptr) monotonic, align 162853  %conv = trunc i64 %0 to i162854  ret i16 %conv2855}2856 2857; Function Attrs: nofree norecurse nounwind uwtable willreturn2858define dso_local zeroext i16 @ld_cst_align32_uint16_t_uint64_t() {2859; CHECK-LABEL: ld_cst_align32_uint16_t_uint64_t:2860; CHECK:       # %bb.0: # %entry2861; CHECK-NEXT:    lis r3, 1532862; CHECK-NEXT:    ld r3, -27108(r3)2863; CHECK-NEXT:    clrldi r3, r3, 482864; CHECK-NEXT:    blr2865entry:2866  %0 = load atomic i64, ptr inttoptr (i64 9999900 to ptr) monotonic, align 82867  %conv = trunc i64 %0 to i162868  ret i16 %conv2869}2870 2871; Function Attrs: nofree norecurse nounwind uwtable willreturn2872define dso_local zeroext i16 @ld_cst_align64_uint16_t_uint64_t() {2873; CHECK-P10-LABEL: ld_cst_align64_uint16_t_uint64_t:2874; CHECK-P10:       # %bb.0: # %entry2875; CHECK-P10-NEXT:    pli r3, 2441406252876; CHECK-P10-NEXT:    rldic r3, r3, 12, 242877; CHECK-P10-NEXT:    ld r3, 0(r3)2878; CHECK-P10-NEXT:    clrldi r3, r3, 482879; CHECK-P10-NEXT:    blr2880;2881; CHECK-PREP10-LABEL: ld_cst_align64_uint16_t_uint64_t:2882; CHECK-PREP10:       # %bb.0: # %entry2883; CHECK-PREP10-NEXT:    lis r3, 37252884; CHECK-PREP10-NEXT:    ori r3, r3, 190252885; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242886; CHECK-PREP10-NEXT:    ld r3, 0(r3)2887; CHECK-PREP10-NEXT:    clrldi r3, r3, 482888; CHECK-PREP10-NEXT:    blr2889entry:2890  %0 = load atomic i64, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962891  %conv = trunc i64 %0 to i162892  ret i16 %conv2893}2894 2895; Function Attrs: nofree norecurse nounwind uwtable willreturn2896define dso_local void @st_0_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {2897; CHECK-LABEL: st_0_uint16_t_uint8_t:2898; CHECK:       # %bb.0: # %entry2899; CHECK-NEXT:    stb r4, 0(r3)2900; CHECK-NEXT:    blr2901entry:2902  %0 = inttoptr i64 %ptr to ptr2903  %conv = trunc i16 %str to i82904  store atomic i8 %conv, ptr %0 monotonic, align 12905  ret void2906}2907 2908; Function Attrs: nofree norecurse nounwind uwtable willreturn2909define dso_local void @st_align16_uint16_t_uint8_t(ptr nocapture %ptr, i16 zeroext %str) {2910; CHECK-LABEL: st_align16_uint16_t_uint8_t:2911; CHECK:       # %bb.0: # %entry2912; CHECK-NEXT:    stb r4, 8(r3)2913; CHECK-NEXT:    blr2914entry:2915  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82916  %conv = trunc i16 %str to i82917  store atomic i8 %conv, ptr %add.ptr monotonic, align 12918  ret void2919}2920 2921; Function Attrs: nofree norecurse nounwind uwtable willreturn2922define dso_local void @st_align32_uint16_t_uint8_t(ptr nocapture %ptr, i16 zeroext %str) {2923; CHECK-P10-LABEL: st_align32_uint16_t_uint8_t:2924; CHECK-P10:       # %bb.0: # %entry2925; CHECK-P10-NEXT:    pstb r4, 99999000(r3), 02926; CHECK-P10-NEXT:    blr2927;2928; CHECK-PREP10-LABEL: st_align32_uint16_t_uint8_t:2929; CHECK-PREP10:       # %bb.0: # %entry2930; CHECK-PREP10-NEXT:    lis r5, 15252931; CHECK-PREP10-NEXT:    ori r5, r5, 566002932; CHECK-PREP10-NEXT:    stbx r4, r3, r52933; CHECK-PREP10-NEXT:    blr2934entry:2935  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002936  %conv = trunc i16 %str to i82937  store atomic i8 %conv, ptr %add.ptr monotonic, align 12938  ret void2939}2940 2941; Function Attrs: nofree norecurse nounwind uwtable willreturn2942define dso_local void @st_align64_uint16_t_uint8_t(ptr nocapture %ptr, i16 zeroext %str) {2943; CHECK-P10-LABEL: st_align64_uint16_t_uint8_t:2944; CHECK-P10:       # %bb.0: # %entry2945; CHECK-P10-NEXT:    pli r5, 2441406252946; CHECK-P10-NEXT:    rldic r5, r5, 12, 242947; CHECK-P10-NEXT:    stbx r4, r3, r52948; CHECK-P10-NEXT:    blr2949;2950; CHECK-PREP10-LABEL: st_align64_uint16_t_uint8_t:2951; CHECK-PREP10:       # %bb.0: # %entry2952; CHECK-PREP10-NEXT:    lis r5, 37252953; CHECK-PREP10-NEXT:    ori r5, r5, 190252954; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 242955; CHECK-PREP10-NEXT:    stbx r4, r3, r52956; CHECK-PREP10-NEXT:    blr2957entry:2958  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002959  %conv = trunc i16 %str to i82960  store atomic i8 %conv, ptr %add.ptr monotonic, align 12961  ret void2962}2963 2964; Function Attrs: nofree norecurse nounwind uwtable willreturn2965define dso_local void @st_reg_uint16_t_uint8_t(ptr nocapture %ptr, i64 %off, i16 zeroext %str) {2966; CHECK-LABEL: st_reg_uint16_t_uint8_t:2967; CHECK:       # %bb.0: # %entry2968; CHECK-NEXT:    stbx r5, r3, r42969; CHECK-NEXT:    blr2970entry:2971  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2972  %conv = trunc i16 %str to i82973  store atomic i8 %conv, ptr %add.ptr monotonic, align 12974  ret void2975}2976 2977; Function Attrs: nofree norecurse nounwind uwtable willreturn2978define dso_local void @st_or1_uint16_t_uint8_t(i64 %ptr, i8 zeroext %off, i16 zeroext %str) {2979; CHECK-LABEL: st_or1_uint16_t_uint8_t:2980; CHECK:       # %bb.0: # %entry2981; CHECK-NEXT:    or r3, r4, r32982; CHECK-NEXT:    stb r5, 0(r3)2983; CHECK-NEXT:    blr2984entry:2985  %conv = zext i8 %off to i642986  %or = or i64 %conv, %ptr2987  %0 = inttoptr i64 %or to ptr2988  %conv1 = trunc i16 %str to i82989  store atomic i8 %conv1, ptr %0 monotonic, align 12990  ret void2991}2992 2993; Function Attrs: nofree norecurse nounwind uwtable willreturn2994define dso_local void @st_not_disjoint16_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {2995; CHECK-LABEL: st_not_disjoint16_uint16_t_uint8_t:2996; CHECK:       # %bb.0: # %entry2997; CHECK-NEXT:    ori r3, r3, 62998; CHECK-NEXT:    stb r4, 0(r3)2999; CHECK-NEXT:    blr3000entry:3001  %or = or i64 %ptr, 63002  %0 = inttoptr i64 %or to ptr3003  %conv = trunc i16 %str to i83004  store atomic i8 %conv, ptr %0 monotonic, align 13005  ret void3006}3007 3008; Function Attrs: nofree norecurse nounwind uwtable willreturn3009define dso_local void @st_disjoint_align16_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {3010; CHECK-LABEL: st_disjoint_align16_uint16_t_uint8_t:3011; CHECK:       # %bb.0: # %entry3012; CHECK-NEXT:    rldicr r3, r3, 0, 513013; CHECK-NEXT:    stb r4, 24(r3)3014; CHECK-NEXT:    blr3015entry:3016  %and = and i64 %ptr, -40963017  %or = or i64 %and, 243018  %0 = inttoptr i64 %or to ptr3019  %conv = trunc i16 %str to i83020  store atomic i8 %conv, ptr %0 monotonic, align 83021  ret void3022}3023 3024; Function Attrs: nofree norecurse nounwind uwtable willreturn3025define dso_local void @st_not_disjoint32_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {3026; CHECK-LABEL: st_not_disjoint32_uint16_t_uint8_t:3027; CHECK:       # %bb.0: # %entry3028; CHECK-NEXT:    ori r3, r3, 344633029; CHECK-NEXT:    oris r3, r3, 13030; CHECK-NEXT:    stb r4, 0(r3)3031; CHECK-NEXT:    blr3032entry:3033  %or = or i64 %ptr, 999993034  %0 = inttoptr i64 %or to ptr3035  %conv = trunc i16 %str to i83036  store atomic i8 %conv, ptr %0 monotonic, align 13037  ret void3038}3039 3040; Function Attrs: nofree norecurse nounwind uwtable willreturn3041define dso_local void @st_disjoint_align32_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {3042; CHECK-P10-LABEL: st_disjoint_align32_uint16_t_uint8_t:3043; CHECK-P10:       # %bb.0: # %entry3044; CHECK-P10-NEXT:    lis r5, -152643045; CHECK-P10-NEXT:    and r3, r3, r53046; CHECK-P10-NEXT:    pstb r4, 999990000(r3), 03047; CHECK-P10-NEXT:    blr3048;3049; CHECK-PREP10-LABEL: st_disjoint_align32_uint16_t_uint8_t:3050; CHECK-PREP10:       # %bb.0: # %entry3051; CHECK-PREP10-NEXT:    lis r5, -152643052; CHECK-PREP10-NEXT:    and r3, r3, r53053; CHECK-PREP10-NEXT:    lis r5, 152583054; CHECK-PREP10-NEXT:    ori r5, r5, 417123055; CHECK-PREP10-NEXT:    stbx r4, r3, r53056; CHECK-PREP10-NEXT:    blr3057entry:3058  %and = and i64 %ptr, -10003415043059  %or = or i64 %and, 9999900003060  %0 = inttoptr i64 %or to ptr3061  %conv = trunc i16 %str to i83062  store atomic i8 %conv, ptr %0 monotonic, align 163063  ret void3064}3065 3066; Function Attrs: nofree norecurse nounwind uwtable willreturn3067define dso_local void @st_not_disjoint64_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {3068; CHECK-P10-LABEL: st_not_disjoint64_uint16_t_uint8_t:3069; CHECK-P10:       # %bb.0: # %entry3070; CHECK-P10-NEXT:    pli r5, 2323071; CHECK-P10-NEXT:    pli r6, 35675873293072; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03073; CHECK-P10-NEXT:    or r3, r3, r63074; CHECK-P10-NEXT:    stb r4, 0(r3)3075; CHECK-P10-NEXT:    blr3076;3077; CHECK-PREP10-LABEL: st_not_disjoint64_uint16_t_uint8_t:3078; CHECK-PREP10:       # %bb.0: # %entry3079; CHECK-PREP10-NEXT:    li r5, 293080; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243081; CHECK-PREP10-NEXT:    oris r5, r5, 544373082; CHECK-PREP10-NEXT:    ori r5, r5, 40973083; CHECK-PREP10-NEXT:    or r3, r3, r53084; CHECK-PREP10-NEXT:    stb r4, 0(r3)3085; CHECK-PREP10-NEXT:    blr3086entry:3087  %or = or i64 %ptr, 10000000000013088  %0 = inttoptr i64 %or to ptr3089  %conv = trunc i16 %str to i83090  store atomic i8 %conv, ptr %0 monotonic, align 13091  ret void3092}3093 3094; Function Attrs: nofree norecurse nounwind uwtable willreturn3095define dso_local void @st_disjoint_align64_uint16_t_uint8_t(i64 %ptr, i16 zeroext %str) {3096; CHECK-P10-LABEL: st_disjoint_align64_uint16_t_uint8_t:3097; CHECK-P10:       # %bb.0: # %entry3098; CHECK-P10-NEXT:    pli r5, 2441406253099; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233100; CHECK-P10-NEXT:    rldic r5, r5, 12, 243101; CHECK-P10-NEXT:    stbx r4, r3, r53102; CHECK-P10-NEXT:    blr3103;3104; CHECK-PREP10-LABEL: st_disjoint_align64_uint16_t_uint8_t:3105; CHECK-PREP10:       # %bb.0: # %entry3106; CHECK-PREP10-NEXT:    lis r5, 37253107; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233108; CHECK-PREP10-NEXT:    ori r5, r5, 190253109; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243110; CHECK-PREP10-NEXT:    stbx r4, r3, r53111; CHECK-PREP10-NEXT:    blr3112entry:3113  %and = and i64 %ptr, -10995116277763114  %or = or i64 %and, 10000000000003115  %0 = inttoptr i64 %or to ptr3116  %conv = trunc i16 %str to i83117  store atomic i8 %conv, ptr %0 monotonic, align 40963118  ret void3119}3120 3121; Function Attrs: nofree norecurse nounwind uwtable willreturn3122define dso_local void @st_cst_align16_uint16_t_uint8_t(i16 zeroext %str) {3123; CHECK-LABEL: st_cst_align16_uint16_t_uint8_t:3124; CHECK:       # %bb.0: # %entry3125; CHECK-NEXT:    stb r3, 4080(0)3126; CHECK-NEXT:    blr3127entry:3128  %conv = trunc i16 %str to i83129  store atomic i8 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163130  ret void3131}3132 3133; Function Attrs: nofree norecurse nounwind uwtable willreturn3134define dso_local void @st_cst_align32_uint16_t_uint8_t(i16 zeroext %str) {3135; CHECK-LABEL: st_cst_align32_uint16_t_uint8_t:3136; CHECK:       # %bb.0: # %entry3137; CHECK-NEXT:    lis r4, 1533138; CHECK-NEXT:    stb r3, -27108(r4)3139; CHECK-NEXT:    blr3140entry:3141  %conv = trunc i16 %str to i83142  store atomic i8 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43143  ret void3144}3145 3146; Function Attrs: nofree norecurse nounwind uwtable willreturn3147define dso_local void @st_cst_align64_uint16_t_uint8_t(i16 zeroext %str) {3148; CHECK-P10-LABEL: st_cst_align64_uint16_t_uint8_t:3149; CHECK-P10:       # %bb.0: # %entry3150; CHECK-P10-NEXT:    pli r4, 2441406253151; CHECK-P10-NEXT:    rldic r4, r4, 12, 243152; CHECK-P10-NEXT:    stb r3, 0(r4)3153; CHECK-P10-NEXT:    blr3154;3155; CHECK-PREP10-LABEL: st_cst_align64_uint16_t_uint8_t:3156; CHECK-PREP10:       # %bb.0: # %entry3157; CHECK-PREP10-NEXT:    lis r4, 37253158; CHECK-PREP10-NEXT:    ori r4, r4, 190253159; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243160; CHECK-PREP10-NEXT:    stb r3, 0(r4)3161; CHECK-PREP10-NEXT:    blr3162entry:3163  %conv = trunc i16 %str to i83164  store atomic i8 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963165  ret void3166}3167 3168; Function Attrs: nofree norecurse nounwind uwtable willreturn3169define dso_local void @st_0_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3170; CHECK-LABEL: st_0_uint16_t_uint16_t:3171; CHECK:       # %bb.0: # %entry3172; CHECK-NEXT:    sth r4, 0(r3)3173; CHECK-NEXT:    blr3174entry:3175  %0 = inttoptr i64 %ptr to ptr3176  store atomic i16 %str, ptr %0 monotonic, align 23177  ret void3178}3179 3180; Function Attrs: nofree norecurse nounwind uwtable willreturn3181define dso_local void @st_align16_uint16_t_uint16_t(ptr nocapture %ptr, i16 zeroext %str) {3182; CHECK-LABEL: st_align16_uint16_t_uint16_t:3183; CHECK:       # %bb.0: # %entry3184; CHECK-NEXT:    sth r4, 8(r3)3185; CHECK-NEXT:    blr3186entry:3187  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83188  store atomic i16 %str, ptr %add.ptr monotonic, align 23189  ret void3190}3191 3192; Function Attrs: nofree norecurse nounwind uwtable willreturn3193define dso_local void @st_align32_uint16_t_uint16_t(ptr nocapture %ptr, i16 zeroext %str) {3194; CHECK-P10-LABEL: st_align32_uint16_t_uint16_t:3195; CHECK-P10:       # %bb.0: # %entry3196; CHECK-P10-NEXT:    psth r4, 99999000(r3), 03197; CHECK-P10-NEXT:    blr3198;3199; CHECK-PREP10-LABEL: st_align32_uint16_t_uint16_t:3200; CHECK-PREP10:       # %bb.0: # %entry3201; CHECK-PREP10-NEXT:    lis r5, 15253202; CHECK-PREP10-NEXT:    ori r5, r5, 566003203; CHECK-PREP10-NEXT:    sthx r4, r3, r53204; CHECK-PREP10-NEXT:    blr3205entry:3206  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003207  store atomic i16 %str, ptr %add.ptr monotonic, align 23208  ret void3209}3210 3211; Function Attrs: nofree norecurse nounwind uwtable willreturn3212define dso_local void @st_align64_uint16_t_uint16_t(ptr nocapture %ptr, i16 zeroext %str) {3213; CHECK-P10-LABEL: st_align64_uint16_t_uint16_t:3214; CHECK-P10:       # %bb.0: # %entry3215; CHECK-P10-NEXT:    pli r5, 2441406253216; CHECK-P10-NEXT:    rldic r5, r5, 12, 243217; CHECK-P10-NEXT:    sthx r4, r3, r53218; CHECK-P10-NEXT:    blr3219;3220; CHECK-PREP10-LABEL: st_align64_uint16_t_uint16_t:3221; CHECK-PREP10:       # %bb.0: # %entry3222; CHECK-PREP10-NEXT:    lis r5, 37253223; CHECK-PREP10-NEXT:    ori r5, r5, 190253224; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243225; CHECK-PREP10-NEXT:    sthx r4, r3, r53226; CHECK-PREP10-NEXT:    blr3227entry:3228  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003229  store atomic i16 %str, ptr %add.ptr monotonic, align 23230  ret void3231}3232 3233; Function Attrs: nofree norecurse nounwind uwtable willreturn3234define dso_local void @st_reg_uint16_t_uint16_t(ptr nocapture %ptr, i64 %off, i16 zeroext %str) {3235; CHECK-LABEL: st_reg_uint16_t_uint16_t:3236; CHECK:       # %bb.0: # %entry3237; CHECK-NEXT:    sthx r5, r3, r43238; CHECK-NEXT:    blr3239entry:3240  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3241  store atomic i16 %str, ptr %add.ptr monotonic, align 23242  ret void3243}3244 3245; Function Attrs: nofree norecurse nounwind uwtable willreturn3246define dso_local void @st_or1_uint16_t_uint16_t(i64 %ptr, i8 zeroext %off, i16 zeroext %str) {3247; CHECK-LABEL: st_or1_uint16_t_uint16_t:3248; CHECK:       # %bb.0: # %entry3249; CHECK-NEXT:    or r3, r4, r33250; CHECK-NEXT:    sth r5, 0(r3)3251; CHECK-NEXT:    blr3252entry:3253  %conv = zext i8 %off to i643254  %or = or i64 %conv, %ptr3255  %0 = inttoptr i64 %or to ptr3256  store atomic i16 %str, ptr %0 monotonic, align 23257  ret void3258}3259 3260; Function Attrs: nofree norecurse nounwind uwtable willreturn3261define dso_local void @st_not_disjoint16_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3262; CHECK-LABEL: st_not_disjoint16_uint16_t_uint16_t:3263; CHECK:       # %bb.0: # %entry3264; CHECK-NEXT:    ori r3, r3, 63265; CHECK-NEXT:    sth r4, 0(r3)3266; CHECK-NEXT:    blr3267entry:3268  %or = or i64 %ptr, 63269  %0 = inttoptr i64 %or to ptr3270  store atomic i16 %str, ptr %0 monotonic, align 23271  ret void3272}3273 3274; Function Attrs: nofree norecurse nounwind uwtable willreturn3275define dso_local void @st_disjoint_align16_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3276; CHECK-LABEL: st_disjoint_align16_uint16_t_uint16_t:3277; CHECK:       # %bb.0: # %entry3278; CHECK-NEXT:    rldicr r3, r3, 0, 513279; CHECK-NEXT:    sth r4, 24(r3)3280; CHECK-NEXT:    blr3281entry:3282  %and = and i64 %ptr, -40963283  %or = or i64 %and, 243284  %0 = inttoptr i64 %or to ptr3285  store atomic i16 %str, ptr %0 monotonic, align 83286  ret void3287}3288 3289; Function Attrs: nofree norecurse nounwind uwtable willreturn3290define dso_local void @st_not_disjoint32_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3291; CHECK-LABEL: st_not_disjoint32_uint16_t_uint16_t:3292; CHECK:       # %bb.0: # %entry3293; CHECK-NEXT:    ori r3, r3, 344633294; CHECK-NEXT:    oris r3, r3, 13295; CHECK-NEXT:    sth r4, 0(r3)3296; CHECK-NEXT:    blr3297entry:3298  %or = or i64 %ptr, 999993299  %0 = inttoptr i64 %or to ptr3300  store atomic i16 %str, ptr %0 monotonic, align 23301  ret void3302}3303 3304; Function Attrs: nofree norecurse nounwind uwtable willreturn3305define dso_local void @st_disjoint_align32_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3306; CHECK-P10-LABEL: st_disjoint_align32_uint16_t_uint16_t:3307; CHECK-P10:       # %bb.0: # %entry3308; CHECK-P10-NEXT:    lis r5, -152643309; CHECK-P10-NEXT:    and r3, r3, r53310; CHECK-P10-NEXT:    psth r4, 999990000(r3), 03311; CHECK-P10-NEXT:    blr3312;3313; CHECK-PREP10-LABEL: st_disjoint_align32_uint16_t_uint16_t:3314; CHECK-PREP10:       # %bb.0: # %entry3315; CHECK-PREP10-NEXT:    lis r5, -152643316; CHECK-PREP10-NEXT:    and r3, r3, r53317; CHECK-PREP10-NEXT:    lis r5, 152583318; CHECK-PREP10-NEXT:    ori r5, r5, 417123319; CHECK-PREP10-NEXT:    sthx r4, r3, r53320; CHECK-PREP10-NEXT:    blr3321entry:3322  %and = and i64 %ptr, -10003415043323  %or = or i64 %and, 9999900003324  %0 = inttoptr i64 %or to ptr3325  store atomic i16 %str, ptr %0 monotonic, align 163326  ret void3327}3328 3329; Function Attrs: nofree norecurse nounwind uwtable willreturn3330define dso_local void @st_not_disjoint64_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3331; CHECK-P10-LABEL: st_not_disjoint64_uint16_t_uint16_t:3332; CHECK-P10:       # %bb.0: # %entry3333; CHECK-P10-NEXT:    pli r5, 2323334; CHECK-P10-NEXT:    pli r6, 35675873293335; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03336; CHECK-P10-NEXT:    or r3, r3, r63337; CHECK-P10-NEXT:    sth r4, 0(r3)3338; CHECK-P10-NEXT:    blr3339;3340; CHECK-PREP10-LABEL: st_not_disjoint64_uint16_t_uint16_t:3341; CHECK-PREP10:       # %bb.0: # %entry3342; CHECK-PREP10-NEXT:    li r5, 293343; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243344; CHECK-PREP10-NEXT:    oris r5, r5, 544373345; CHECK-PREP10-NEXT:    ori r5, r5, 40973346; CHECK-PREP10-NEXT:    or r3, r3, r53347; CHECK-PREP10-NEXT:    sth r4, 0(r3)3348; CHECK-PREP10-NEXT:    blr3349entry:3350  %or = or i64 %ptr, 10000000000013351  %0 = inttoptr i64 %or to ptr3352  store atomic i16 %str, ptr %0 monotonic, align 23353  ret void3354}3355 3356; Function Attrs: nofree norecurse nounwind uwtable willreturn3357define dso_local void @st_disjoint_align64_uint16_t_uint16_t(i64 %ptr, i16 zeroext %str) {3358; CHECK-P10-LABEL: st_disjoint_align64_uint16_t_uint16_t:3359; CHECK-P10:       # %bb.0: # %entry3360; CHECK-P10-NEXT:    pli r5, 2441406253361; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233362; CHECK-P10-NEXT:    rldic r5, r5, 12, 243363; CHECK-P10-NEXT:    sthx r4, r3, r53364; CHECK-P10-NEXT:    blr3365;3366; CHECK-PREP10-LABEL: st_disjoint_align64_uint16_t_uint16_t:3367; CHECK-PREP10:       # %bb.0: # %entry3368; CHECK-PREP10-NEXT:    lis r5, 37253369; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233370; CHECK-PREP10-NEXT:    ori r5, r5, 190253371; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243372; CHECK-PREP10-NEXT:    sthx r4, r3, r53373; CHECK-PREP10-NEXT:    blr3374entry:3375  %and = and i64 %ptr, -10995116277763376  %or = or i64 %and, 10000000000003377  %0 = inttoptr i64 %or to ptr3378  store atomic i16 %str, ptr %0 monotonic, align 40963379  ret void3380}3381 3382; Function Attrs: nofree norecurse nounwind uwtable willreturn3383define dso_local void @st_cst_align16_uint16_t_uint16_t(i16 zeroext %str) {3384; CHECK-LABEL: st_cst_align16_uint16_t_uint16_t:3385; CHECK:       # %bb.0: # %entry3386; CHECK-NEXT:    sth r3, 4080(0)3387; CHECK-NEXT:    blr3388entry:3389  store atomic i16 %str, ptr inttoptr (i64 4080 to ptr) monotonic, align 163390  ret void3391}3392 3393; Function Attrs: nofree norecurse nounwind uwtable willreturn3394define dso_local void @st_cst_align32_uint16_t_uint16_t(i16 zeroext %str) {3395; CHECK-LABEL: st_cst_align32_uint16_t_uint16_t:3396; CHECK:       # %bb.0: # %entry3397; CHECK-NEXT:    lis r4, 1533398; CHECK-NEXT:    sth r3, -27108(r4)3399; CHECK-NEXT:    blr3400entry:3401  store atomic i16 %str, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43402  ret void3403}3404 3405; Function Attrs: nofree norecurse nounwind uwtable willreturn3406define dso_local void @st_cst_align64_uint16_t_uint16_t(i16 zeroext %str) {3407; CHECK-P10-LABEL: st_cst_align64_uint16_t_uint16_t:3408; CHECK-P10:       # %bb.0: # %entry3409; CHECK-P10-NEXT:    pli r4, 2441406253410; CHECK-P10-NEXT:    rldic r4, r4, 12, 243411; CHECK-P10-NEXT:    sth r3, 0(r4)3412; CHECK-P10-NEXT:    blr3413;3414; CHECK-PREP10-LABEL: st_cst_align64_uint16_t_uint16_t:3415; CHECK-PREP10:       # %bb.0: # %entry3416; CHECK-PREP10-NEXT:    lis r4, 37253417; CHECK-PREP10-NEXT:    ori r4, r4, 190253418; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243419; CHECK-PREP10-NEXT:    sth r3, 0(r4)3420; CHECK-PREP10-NEXT:    blr3421entry:3422  store atomic i16 %str, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963423  ret void3424}3425 3426; Function Attrs: nofree norecurse nounwind uwtable willreturn3427define dso_local void @st_0_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3428; CHECK-LABEL: st_0_uint16_t_uint32_t:3429; CHECK:       # %bb.0: # %entry3430; CHECK-NEXT:    stw r4, 0(r3)3431; CHECK-NEXT:    blr3432entry:3433  %0 = inttoptr i64 %ptr to ptr3434  %conv = zext i16 %str to i323435  store atomic i32 %conv, ptr %0 monotonic, align 43436  ret void3437}3438 3439; Function Attrs: nofree norecurse nounwind uwtable willreturn3440define dso_local void @st_align16_uint16_t_uint32_t(ptr nocapture %ptr, i16 zeroext %str) {3441; CHECK-LABEL: st_align16_uint16_t_uint32_t:3442; CHECK:       # %bb.0: # %entry3443; CHECK-NEXT:    stw r4, 8(r3)3444; CHECK-NEXT:    blr3445entry:3446  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83447  %conv = zext i16 %str to i323448  store atomic i32 %conv, ptr %add.ptr monotonic, align 43449  ret void3450}3451 3452; Function Attrs: nofree norecurse nounwind uwtable willreturn3453define dso_local void @st_align32_uint16_t_uint32_t(ptr nocapture %ptr, i16 zeroext %str) {3454; CHECK-P10-LABEL: st_align32_uint16_t_uint32_t:3455; CHECK-P10:       # %bb.0: # %entry3456; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 03457; CHECK-P10-NEXT:    blr3458;3459; CHECK-PREP10-LABEL: st_align32_uint16_t_uint32_t:3460; CHECK-PREP10:       # %bb.0: # %entry3461; CHECK-PREP10-NEXT:    lis r5, 15253462; CHECK-PREP10-NEXT:    ori r5, r5, 566003463; CHECK-PREP10-NEXT:    stwx r4, r3, r53464; CHECK-PREP10-NEXT:    blr3465entry:3466  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003467  %conv = zext i16 %str to i323468  store atomic i32 %conv, ptr %add.ptr monotonic, align 43469  ret void3470}3471 3472; Function Attrs: nofree norecurse nounwind uwtable willreturn3473define dso_local void @st_align64_uint16_t_uint32_t(ptr nocapture %ptr, i16 zeroext %str) {3474; CHECK-P10-LABEL: st_align64_uint16_t_uint32_t:3475; CHECK-P10:       # %bb.0: # %entry3476; CHECK-P10-NEXT:    pli r5, 2441406253477; CHECK-P10-NEXT:    rldic r5, r5, 12, 243478; CHECK-P10-NEXT:    stwx r4, r3, r53479; CHECK-P10-NEXT:    blr3480;3481; CHECK-PREP10-LABEL: st_align64_uint16_t_uint32_t:3482; CHECK-PREP10:       # %bb.0: # %entry3483; CHECK-PREP10-NEXT:    lis r5, 37253484; CHECK-PREP10-NEXT:    ori r5, r5, 190253485; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243486; CHECK-PREP10-NEXT:    stwx r4, r3, r53487; CHECK-PREP10-NEXT:    blr3488entry:3489  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003490  %conv = zext i16 %str to i323491  store atomic i32 %conv, ptr %add.ptr monotonic, align 43492  ret void3493}3494 3495; Function Attrs: nofree norecurse nounwind uwtable willreturn3496define dso_local void @st_reg_uint16_t_uint32_t(ptr nocapture %ptr, i64 %off, i16 zeroext %str) {3497; CHECK-LABEL: st_reg_uint16_t_uint32_t:3498; CHECK:       # %bb.0: # %entry3499; CHECK-NEXT:    stwx r5, r3, r43500; CHECK-NEXT:    blr3501entry:3502  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3503  %conv = zext i16 %str to i323504  store atomic i32 %conv, ptr %add.ptr monotonic, align 43505  ret void3506}3507 3508; Function Attrs: nofree norecurse nounwind uwtable willreturn3509define dso_local void @st_or1_uint16_t_uint32_t(i64 %ptr, i8 zeroext %off, i16 zeroext %str) {3510; CHECK-LABEL: st_or1_uint16_t_uint32_t:3511; CHECK:       # %bb.0: # %entry3512; CHECK-NEXT:    or r3, r4, r33513; CHECK-NEXT:    stw r5, 0(r3)3514; CHECK-NEXT:    blr3515entry:3516  %conv = zext i8 %off to i643517  %or = or i64 %conv, %ptr3518  %0 = inttoptr i64 %or to ptr3519  %conv1 = zext i16 %str to i323520  store atomic i32 %conv1, ptr %0 monotonic, align 43521  ret void3522}3523 3524; Function Attrs: nofree norecurse nounwind uwtable willreturn3525define dso_local void @st_not_disjoint16_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3526; CHECK-LABEL: st_not_disjoint16_uint16_t_uint32_t:3527; CHECK:       # %bb.0: # %entry3528; CHECK-NEXT:    ori r3, r3, 63529; CHECK-NEXT:    stw r4, 0(r3)3530; CHECK-NEXT:    blr3531entry:3532  %or = or i64 %ptr, 63533  %0 = inttoptr i64 %or to ptr3534  %conv = zext i16 %str to i323535  store atomic i32 %conv, ptr %0 monotonic, align 43536  ret void3537}3538 3539; Function Attrs: nofree norecurse nounwind uwtable willreturn3540define dso_local void @st_disjoint_align16_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3541; CHECK-LABEL: st_disjoint_align16_uint16_t_uint32_t:3542; CHECK:       # %bb.0: # %entry3543; CHECK-NEXT:    rldicr r3, r3, 0, 513544; CHECK-NEXT:    stw r4, 24(r3)3545; CHECK-NEXT:    blr3546entry:3547  %and = and i64 %ptr, -40963548  %or = or i64 %and, 243549  %0 = inttoptr i64 %or to ptr3550  %conv = zext i16 %str to i323551  store atomic i32 %conv, ptr %0 monotonic, align 83552  ret void3553}3554 3555; Function Attrs: nofree norecurse nounwind uwtable willreturn3556define dso_local void @st_not_disjoint32_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3557; CHECK-LABEL: st_not_disjoint32_uint16_t_uint32_t:3558; CHECK:       # %bb.0: # %entry3559; CHECK-NEXT:    ori r3, r3, 344633560; CHECK-NEXT:    oris r3, r3, 13561; CHECK-NEXT:    stw r4, 0(r3)3562; CHECK-NEXT:    blr3563entry:3564  %or = or i64 %ptr, 999993565  %0 = inttoptr i64 %or to ptr3566  %conv = zext i16 %str to i323567  store atomic i32 %conv, ptr %0 monotonic, align 43568  ret void3569}3570 3571; Function Attrs: nofree norecurse nounwind uwtable willreturn3572define dso_local void @st_disjoint_align32_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3573; CHECK-P10-LABEL: st_disjoint_align32_uint16_t_uint32_t:3574; CHECK-P10:       # %bb.0: # %entry3575; CHECK-P10-NEXT:    lis r5, -152643576; CHECK-P10-NEXT:    and r3, r3, r53577; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 03578; CHECK-P10-NEXT:    blr3579;3580; CHECK-PREP10-LABEL: st_disjoint_align32_uint16_t_uint32_t:3581; CHECK-PREP10:       # %bb.0: # %entry3582; CHECK-PREP10-NEXT:    lis r5, -152643583; CHECK-PREP10-NEXT:    and r3, r3, r53584; CHECK-PREP10-NEXT:    lis r5, 152583585; CHECK-PREP10-NEXT:    ori r5, r5, 417123586; CHECK-PREP10-NEXT:    stwx r4, r3, r53587; CHECK-PREP10-NEXT:    blr3588entry:3589  %and = and i64 %ptr, -10003415043590  %or = or i64 %and, 9999900003591  %0 = inttoptr i64 %or to ptr3592  %conv = zext i16 %str to i323593  store atomic i32 %conv, ptr %0 monotonic, align 163594  ret void3595}3596 3597; Function Attrs: nofree norecurse nounwind uwtable willreturn3598define dso_local void @st_not_disjoint64_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3599; CHECK-P10-LABEL: st_not_disjoint64_uint16_t_uint32_t:3600; CHECK-P10:       # %bb.0: # %entry3601; CHECK-P10-NEXT:    pli r5, 2323602; CHECK-P10-NEXT:    pli r6, 35675873293603; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03604; CHECK-P10-NEXT:    or r3, r3, r63605; CHECK-P10-NEXT:    stw r4, 0(r3)3606; CHECK-P10-NEXT:    blr3607;3608; CHECK-PREP10-LABEL: st_not_disjoint64_uint16_t_uint32_t:3609; CHECK-PREP10:       # %bb.0: # %entry3610; CHECK-PREP10-NEXT:    li r5, 293611; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243612; CHECK-PREP10-NEXT:    oris r5, r5, 544373613; CHECK-PREP10-NEXT:    ori r5, r5, 40973614; CHECK-PREP10-NEXT:    or r3, r3, r53615; CHECK-PREP10-NEXT:    stw r4, 0(r3)3616; CHECK-PREP10-NEXT:    blr3617entry:3618  %or = or i64 %ptr, 10000000000013619  %0 = inttoptr i64 %or to ptr3620  %conv = zext i16 %str to i323621  store atomic i32 %conv, ptr %0 monotonic, align 43622  ret void3623}3624 3625; Function Attrs: nofree norecurse nounwind uwtable willreturn3626define dso_local void @st_disjoint_align64_uint16_t_uint32_t(i64 %ptr, i16 zeroext %str) {3627; CHECK-P10-LABEL: st_disjoint_align64_uint16_t_uint32_t:3628; CHECK-P10:       # %bb.0: # %entry3629; CHECK-P10-NEXT:    pli r5, 2441406253630; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233631; CHECK-P10-NEXT:    rldic r5, r5, 12, 243632; CHECK-P10-NEXT:    stwx r4, r3, r53633; CHECK-P10-NEXT:    blr3634;3635; CHECK-PREP10-LABEL: st_disjoint_align64_uint16_t_uint32_t:3636; CHECK-PREP10:       # %bb.0: # %entry3637; CHECK-PREP10-NEXT:    lis r5, 37253638; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233639; CHECK-PREP10-NEXT:    ori r5, r5, 190253640; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243641; CHECK-PREP10-NEXT:    stwx r4, r3, r53642; CHECK-PREP10-NEXT:    blr3643entry:3644  %and = and i64 %ptr, -10995116277763645  %or = or i64 %and, 10000000000003646  %0 = inttoptr i64 %or to ptr3647  %conv = zext i16 %str to i323648  store atomic i32 %conv, ptr %0 monotonic, align 40963649  ret void3650}3651 3652; Function Attrs: nofree norecurse nounwind uwtable willreturn3653define dso_local void @st_cst_align16_uint16_t_uint32_t(i16 zeroext %str) {3654; CHECK-LABEL: st_cst_align16_uint16_t_uint32_t:3655; CHECK:       # %bb.0: # %entry3656; CHECK-NEXT:    stw r3, 4080(0)3657; CHECK-NEXT:    blr3658entry:3659  %conv = zext i16 %str to i323660  store atomic i32 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163661  ret void3662}3663 3664; Function Attrs: nofree norecurse nounwind uwtable willreturn3665define dso_local void @st_cst_align32_uint16_t_uint32_t(i16 zeroext %str) {3666; CHECK-LABEL: st_cst_align32_uint16_t_uint32_t:3667; CHECK:       # %bb.0: # %entry3668; CHECK-NEXT:    lis r4, 1533669; CHECK-NEXT:    stw r3, -27108(r4)3670; CHECK-NEXT:    blr3671entry:3672  %conv = zext i16 %str to i323673  store atomic i32 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43674  ret void3675}3676 3677; Function Attrs: nofree norecurse nounwind uwtable willreturn3678define dso_local void @st_cst_align64_uint16_t_uint32_t(i16 zeroext %str) {3679; CHECK-P10-LABEL: st_cst_align64_uint16_t_uint32_t:3680; CHECK-P10:       # %bb.0: # %entry3681; CHECK-P10-NEXT:    pli r4, 2441406253682; CHECK-P10-NEXT:    rldic r4, r4, 12, 243683; CHECK-P10-NEXT:    stw r3, 0(r4)3684; CHECK-P10-NEXT:    blr3685;3686; CHECK-PREP10-LABEL: st_cst_align64_uint16_t_uint32_t:3687; CHECK-PREP10:       # %bb.0: # %entry3688; CHECK-PREP10-NEXT:    lis r4, 37253689; CHECK-PREP10-NEXT:    ori r4, r4, 190253690; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243691; CHECK-PREP10-NEXT:    stw r3, 0(r4)3692; CHECK-PREP10-NEXT:    blr3693entry:3694  %conv = zext i16 %str to i323695  store atomic i32 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963696  ret void3697}3698 3699; Function Attrs: nofree norecurse nounwind uwtable willreturn3700define dso_local void @st_0_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3701; CHECK-LABEL: st_0_uint16_t_uint64_t:3702; CHECK:       # %bb.0: # %entry3703; CHECK-NEXT:    std r4, 0(r3)3704; CHECK-NEXT:    blr3705entry:3706  %0 = inttoptr i64 %ptr to ptr3707  %conv = zext i16 %str to i643708  store atomic i64 %conv, ptr %0 monotonic, align 83709  ret void3710}3711 3712; Function Attrs: nofree norecurse nounwind uwtable willreturn3713define dso_local void @st_align16_uint16_t_uint64_t(ptr nocapture %ptr, i16 zeroext %str) {3714; CHECK-LABEL: st_align16_uint16_t_uint64_t:3715; CHECK:       # %bb.0: # %entry3716; CHECK-NEXT:    std r4, 8(r3)3717; CHECK-NEXT:    blr3718entry:3719  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83720  %conv = zext i16 %str to i643721  store atomic i64 %conv, ptr %add.ptr monotonic, align 83722  ret void3723}3724 3725; Function Attrs: nofree norecurse nounwind uwtable willreturn3726define dso_local void @st_align32_uint16_t_uint64_t(ptr nocapture %ptr, i16 zeroext %str) {3727; CHECK-P10-LABEL: st_align32_uint16_t_uint64_t:3728; CHECK-P10:       # %bb.0: # %entry3729; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 03730; CHECK-P10-NEXT:    blr3731;3732; CHECK-PREP10-LABEL: st_align32_uint16_t_uint64_t:3733; CHECK-PREP10:       # %bb.0: # %entry3734; CHECK-PREP10-NEXT:    lis r5, 15253735; CHECK-PREP10-NEXT:    ori r5, r5, 566003736; CHECK-PREP10-NEXT:    stdx r4, r3, r53737; CHECK-PREP10-NEXT:    blr3738entry:3739  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003740  %conv = zext i16 %str to i643741  store atomic i64 %conv, ptr %add.ptr monotonic, align 83742  ret void3743}3744 3745; Function Attrs: nofree norecurse nounwind uwtable willreturn3746define dso_local void @st_align64_uint16_t_uint64_t(ptr nocapture %ptr, i16 zeroext %str) {3747; CHECK-P10-LABEL: st_align64_uint16_t_uint64_t:3748; CHECK-P10:       # %bb.0: # %entry3749; CHECK-P10-NEXT:    pli r5, 2441406253750; CHECK-P10-NEXT:    rldic r5, r5, 12, 243751; CHECK-P10-NEXT:    stdx r4, r3, r53752; CHECK-P10-NEXT:    blr3753;3754; CHECK-PREP10-LABEL: st_align64_uint16_t_uint64_t:3755; CHECK-PREP10:       # %bb.0: # %entry3756; CHECK-PREP10-NEXT:    lis r5, 37253757; CHECK-PREP10-NEXT:    ori r5, r5, 190253758; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243759; CHECK-PREP10-NEXT:    stdx r4, r3, r53760; CHECK-PREP10-NEXT:    blr3761entry:3762  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003763  %conv = zext i16 %str to i643764  store atomic i64 %conv, ptr %add.ptr monotonic, align 83765  ret void3766}3767 3768; Function Attrs: nofree norecurse nounwind uwtable willreturn3769define dso_local void @st_reg_uint16_t_uint64_t(ptr nocapture %ptr, i64 %off, i16 zeroext %str) {3770; CHECK-LABEL: st_reg_uint16_t_uint64_t:3771; CHECK:       # %bb.0: # %entry3772; CHECK-NEXT:    stdx r5, r3, r43773; CHECK-NEXT:    blr3774entry:3775  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3776  %conv = zext i16 %str to i643777  store atomic i64 %conv, ptr %add.ptr monotonic, align 83778  ret void3779}3780 3781; Function Attrs: nofree norecurse nounwind uwtable willreturn3782define dso_local void @st_or1_uint16_t_uint64_t(i64 %ptr, i8 zeroext %off, i16 zeroext %str) {3783; CHECK-LABEL: st_or1_uint16_t_uint64_t:3784; CHECK:       # %bb.0: # %entry3785; CHECK-NEXT:    or r3, r4, r33786; CHECK-NEXT:    std r5, 0(r3)3787; CHECK-NEXT:    blr3788entry:3789  %conv = zext i8 %off to i643790  %or = or i64 %conv, %ptr3791  %0 = inttoptr i64 %or to ptr3792  %conv1 = zext i16 %str to i643793  store atomic i64 %conv1, ptr %0 monotonic, align 83794  ret void3795}3796 3797; Function Attrs: nofree norecurse nounwind uwtable willreturn3798define dso_local void @st_not_disjoint16_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3799; CHECK-LABEL: st_not_disjoint16_uint16_t_uint64_t:3800; CHECK:       # %bb.0: # %entry3801; CHECK-NEXT:    ori r3, r3, 63802; CHECK-NEXT:    std r4, 0(r3)3803; CHECK-NEXT:    blr3804entry:3805  %or = or i64 %ptr, 63806  %0 = inttoptr i64 %or to ptr3807  %conv = zext i16 %str to i643808  store atomic i64 %conv, ptr %0 monotonic, align 83809  ret void3810}3811 3812; Function Attrs: nofree norecurse nounwind uwtable willreturn3813define dso_local void @st_disjoint_align16_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3814; CHECK-LABEL: st_disjoint_align16_uint16_t_uint64_t:3815; CHECK:       # %bb.0: # %entry3816; CHECK-NEXT:    rldicr r3, r3, 0, 513817; CHECK-NEXT:    std r4, 24(r3)3818; CHECK-NEXT:    blr3819entry:3820  %and = and i64 %ptr, -40963821  %or = or i64 %and, 243822  %0 = inttoptr i64 %or to ptr3823  %conv = zext i16 %str to i643824  store atomic i64 %conv, ptr %0 monotonic, align 83825  ret void3826}3827 3828; Function Attrs: nofree norecurse nounwind uwtable willreturn3829define dso_local void @st_not_disjoint32_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3830; CHECK-LABEL: st_not_disjoint32_uint16_t_uint64_t:3831; CHECK:       # %bb.0: # %entry3832; CHECK-NEXT:    ori r3, r3, 344633833; CHECK-NEXT:    oris r3, r3, 13834; CHECK-NEXT:    std r4, 0(r3)3835; CHECK-NEXT:    blr3836entry:3837  %or = or i64 %ptr, 999993838  %0 = inttoptr i64 %or to ptr3839  %conv = zext i16 %str to i643840  store atomic i64 %conv, ptr %0 monotonic, align 83841  ret void3842}3843 3844; Function Attrs: nofree norecurse nounwind uwtable willreturn3845define dso_local void @st_disjoint_align32_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3846; CHECK-P10-LABEL: st_disjoint_align32_uint16_t_uint64_t:3847; CHECK-P10:       # %bb.0: # %entry3848; CHECK-P10-NEXT:    lis r5, -152643849; CHECK-P10-NEXT:    and r3, r3, r53850; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 03851; CHECK-P10-NEXT:    blr3852;3853; CHECK-PREP10-LABEL: st_disjoint_align32_uint16_t_uint64_t:3854; CHECK-PREP10:       # %bb.0: # %entry3855; CHECK-PREP10-NEXT:    lis r5, -152643856; CHECK-PREP10-NEXT:    and r3, r3, r53857; CHECK-PREP10-NEXT:    lis r5, 152583858; CHECK-PREP10-NEXT:    ori r5, r5, 417123859; CHECK-PREP10-NEXT:    stdx r4, r3, r53860; CHECK-PREP10-NEXT:    blr3861entry:3862  %and = and i64 %ptr, -10003415043863  %or = or i64 %and, 9999900003864  %0 = inttoptr i64 %or to ptr3865  %conv = zext i16 %str to i643866  store atomic i64 %conv, ptr %0 monotonic, align 163867  ret void3868}3869 3870; Function Attrs: nofree norecurse nounwind uwtable willreturn3871define dso_local void @st_not_disjoint64_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3872; CHECK-P10-LABEL: st_not_disjoint64_uint16_t_uint64_t:3873; CHECK-P10:       # %bb.0: # %entry3874; CHECK-P10-NEXT:    pli r5, 2323875; CHECK-P10-NEXT:    pli r6, 35675873293876; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03877; CHECK-P10-NEXT:    or r3, r3, r63878; CHECK-P10-NEXT:    std r4, 0(r3)3879; CHECK-P10-NEXT:    blr3880;3881; CHECK-PREP10-LABEL: st_not_disjoint64_uint16_t_uint64_t:3882; CHECK-PREP10:       # %bb.0: # %entry3883; CHECK-PREP10-NEXT:    li r5, 293884; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243885; CHECK-PREP10-NEXT:    oris r5, r5, 544373886; CHECK-PREP10-NEXT:    ori r5, r5, 40973887; CHECK-PREP10-NEXT:    or r3, r3, r53888; CHECK-PREP10-NEXT:    std r4, 0(r3)3889; CHECK-PREP10-NEXT:    blr3890entry:3891  %or = or i64 %ptr, 10000000000013892  %0 = inttoptr i64 %or to ptr3893  %conv = zext i16 %str to i643894  store atomic i64 %conv, ptr %0 monotonic, align 83895  ret void3896}3897 3898; Function Attrs: nofree norecurse nounwind uwtable willreturn3899define dso_local void @st_disjoint_align64_uint16_t_uint64_t(i64 %ptr, i16 zeroext %str) {3900; CHECK-P10-LABEL: st_disjoint_align64_uint16_t_uint64_t:3901; CHECK-P10:       # %bb.0: # %entry3902; CHECK-P10-NEXT:    pli r5, 2441406253903; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233904; CHECK-P10-NEXT:    rldic r5, r5, 12, 243905; CHECK-P10-NEXT:    stdx r4, r3, r53906; CHECK-P10-NEXT:    blr3907;3908; CHECK-PREP10-LABEL: st_disjoint_align64_uint16_t_uint64_t:3909; CHECK-PREP10:       # %bb.0: # %entry3910; CHECK-PREP10-NEXT:    lis r5, 37253911; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233912; CHECK-PREP10-NEXT:    ori r5, r5, 190253913; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243914; CHECK-PREP10-NEXT:    stdx r4, r3, r53915; CHECK-PREP10-NEXT:    blr3916entry:3917  %and = and i64 %ptr, -10995116277763918  %or = or i64 %and, 10000000000003919  %0 = inttoptr i64 %or to ptr3920  %conv = zext i16 %str to i643921  store atomic i64 %conv, ptr %0 monotonic, align 40963922  ret void3923}3924 3925; Function Attrs: nofree norecurse nounwind uwtable willreturn3926define dso_local void @st_cst_align16_uint16_t_uint64_t(i16 zeroext %str) {3927; CHECK-LABEL: st_cst_align16_uint16_t_uint64_t:3928; CHECK:       # %bb.0: # %entry3929; CHECK-NEXT:    std r3, 4080(0)3930; CHECK-NEXT:    blr3931entry:3932  %conv = zext i16 %str to i643933  store atomic i64 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163934  ret void3935}3936 3937; Function Attrs: nofree norecurse nounwind uwtable willreturn3938define dso_local void @st_cst_align32_uint16_t_uint64_t(i16 zeroext %str) {3939; CHECK-LABEL: st_cst_align32_uint16_t_uint64_t:3940; CHECK:       # %bb.0: # %entry3941; CHECK-NEXT:    lis r4, 1533942; CHECK-NEXT:    std r3, -27108(r4)3943; CHECK-NEXT:    blr3944entry:3945  %conv = zext i16 %str to i643946  store atomic i64 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 83947  ret void3948}3949 3950; Function Attrs: nofree norecurse nounwind uwtable willreturn3951define dso_local void @st_cst_align64_uint16_t_uint64_t(i16 zeroext %str) {3952; CHECK-P10-LABEL: st_cst_align64_uint16_t_uint64_t:3953; CHECK-P10:       # %bb.0: # %entry3954; CHECK-P10-NEXT:    pli r4, 2441406253955; CHECK-P10-NEXT:    rldic r4, r4, 12, 243956; CHECK-P10-NEXT:    std r3, 0(r4)3957; CHECK-P10-NEXT:    blr3958;3959; CHECK-PREP10-LABEL: st_cst_align64_uint16_t_uint64_t:3960; CHECK-PREP10:       # %bb.0: # %entry3961; CHECK-PREP10-NEXT:    lis r4, 37253962; CHECK-PREP10-NEXT:    ori r4, r4, 190253963; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243964; CHECK-PREP10-NEXT:    std r3, 0(r4)3965; CHECK-PREP10-NEXT:    blr3966entry:3967  %conv = zext i16 %str to i643968  store atomic i64 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963969  ret void3970}3971 3972; Function Attrs: nofree norecurse nounwind uwtable willreturn3973define dso_local void @st_0_int16_t_uint32_t(i64 %ptr, i16 signext %str) {3974; CHECK-LABEL: st_0_int16_t_uint32_t:3975; CHECK:       # %bb.0: # %entry3976; CHECK-NEXT:    stw r4, 0(r3)3977; CHECK-NEXT:    blr3978entry:3979  %0 = inttoptr i64 %ptr to ptr3980  %conv = sext i16 %str to i323981  store atomic i32 %conv, ptr %0 monotonic, align 43982  ret void3983}3984 3985; Function Attrs: nofree norecurse nounwind uwtable willreturn3986define dso_local void @st_align16_int16_t_uint32_t(ptr nocapture %ptr, i16 signext %str) {3987; CHECK-LABEL: st_align16_int16_t_uint32_t:3988; CHECK:       # %bb.0: # %entry3989; CHECK-NEXT:    stw r4, 8(r3)3990; CHECK-NEXT:    blr3991entry:3992  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83993  %conv = sext i16 %str to i323994  store atomic i32 %conv, ptr %add.ptr monotonic, align 43995  ret void3996}3997 3998; Function Attrs: nofree norecurse nounwind uwtable willreturn3999define dso_local void @st_align32_int16_t_uint32_t(ptr nocapture %ptr, i16 signext %str) {4000; CHECK-P10-LABEL: st_align32_int16_t_uint32_t:4001; CHECK-P10:       # %bb.0: # %entry4002; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 04003; CHECK-P10-NEXT:    blr4004;4005; CHECK-PREP10-LABEL: st_align32_int16_t_uint32_t:4006; CHECK-PREP10:       # %bb.0: # %entry4007; CHECK-PREP10-NEXT:    lis r5, 15254008; CHECK-PREP10-NEXT:    ori r5, r5, 566004009; CHECK-PREP10-NEXT:    stwx r4, r3, r54010; CHECK-PREP10-NEXT:    blr4011entry:4012  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004013  %conv = sext i16 %str to i324014  store atomic i32 %conv, ptr %add.ptr monotonic, align 44015  ret void4016}4017 4018; Function Attrs: nofree norecurse nounwind uwtable willreturn4019define dso_local void @st_align64_int16_t_uint32_t(ptr nocapture %ptr, i16 signext %str) {4020; CHECK-P10-LABEL: st_align64_int16_t_uint32_t:4021; CHECK-P10:       # %bb.0: # %entry4022; CHECK-P10-NEXT:    pli r5, 2441406254023; CHECK-P10-NEXT:    rldic r5, r5, 12, 244024; CHECK-P10-NEXT:    stwx r4, r3, r54025; CHECK-P10-NEXT:    blr4026;4027; CHECK-PREP10-LABEL: st_align64_int16_t_uint32_t:4028; CHECK-PREP10:       # %bb.0: # %entry4029; CHECK-PREP10-NEXT:    lis r5, 37254030; CHECK-PREP10-NEXT:    ori r5, r5, 190254031; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244032; CHECK-PREP10-NEXT:    stwx r4, r3, r54033; CHECK-PREP10-NEXT:    blr4034entry:4035  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004036  %conv = sext i16 %str to i324037  store atomic i32 %conv, ptr %add.ptr monotonic, align 44038  ret void4039}4040 4041; Function Attrs: nofree norecurse nounwind uwtable willreturn4042define dso_local void @st_reg_int16_t_uint32_t(ptr nocapture %ptr, i64 %off, i16 signext %str) {4043; CHECK-LABEL: st_reg_int16_t_uint32_t:4044; CHECK:       # %bb.0: # %entry4045; CHECK-NEXT:    stwx r5, r3, r44046; CHECK-NEXT:    blr4047entry:4048  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4049  %conv = sext i16 %str to i324050  store atomic i32 %conv, ptr %add.ptr monotonic, align 44051  ret void4052}4053 4054; Function Attrs: nofree norecurse nounwind uwtable willreturn4055define dso_local void @st_or1_int16_t_uint32_t(i64 %ptr, i8 zeroext %off, i16 signext %str) {4056; CHECK-LABEL: st_or1_int16_t_uint32_t:4057; CHECK:       # %bb.0: # %entry4058; CHECK-NEXT:    or r3, r4, r34059; CHECK-NEXT:    stw r5, 0(r3)4060; CHECK-NEXT:    blr4061entry:4062  %conv = zext i8 %off to i644063  %or = or i64 %conv, %ptr4064  %0 = inttoptr i64 %or to ptr4065  %conv1 = sext i16 %str to i324066  store atomic i32 %conv1, ptr %0 monotonic, align 44067  ret void4068}4069 4070; Function Attrs: nofree norecurse nounwind uwtable willreturn4071define dso_local void @st_not_disjoint16_int16_t_uint32_t(i64 %ptr, i16 signext %str) {4072; CHECK-LABEL: st_not_disjoint16_int16_t_uint32_t:4073; CHECK:       # %bb.0: # %entry4074; CHECK-NEXT:    ori r3, r3, 64075; CHECK-NEXT:    stw r4, 0(r3)4076; CHECK-NEXT:    blr4077entry:4078  %or = or i64 %ptr, 64079  %0 = inttoptr i64 %or to ptr4080  %conv = sext i16 %str to i324081  store atomic i32 %conv, ptr %0 monotonic, align 44082  ret void4083}4084 4085; Function Attrs: nofree norecurse nounwind uwtable willreturn4086define dso_local void @st_disjoint_align16_int16_t_uint32_t(i64 %ptr, i16 signext %str) {4087; CHECK-LABEL: st_disjoint_align16_int16_t_uint32_t:4088; CHECK:       # %bb.0: # %entry4089; CHECK-NEXT:    rldicr r3, r3, 0, 514090; CHECK-NEXT:    stw r4, 24(r3)4091; CHECK-NEXT:    blr4092entry:4093  %and = and i64 %ptr, -40964094  %or = or i64 %and, 244095  %0 = inttoptr i64 %or to ptr4096  %conv = sext i16 %str to i324097  store atomic i32 %conv, ptr %0 monotonic, align 84098  ret void4099}4100 4101; Function Attrs: nofree norecurse nounwind uwtable willreturn4102define dso_local void @st_not_disjoint32_int16_t_uint32_t(i64 %ptr, i16 signext %str) {4103; CHECK-LABEL: st_not_disjoint32_int16_t_uint32_t:4104; CHECK:       # %bb.0: # %entry4105; CHECK-NEXT:    ori r3, r3, 344634106; CHECK-NEXT:    oris r3, r3, 14107; CHECK-NEXT:    stw r4, 0(r3)4108; CHECK-NEXT:    blr4109entry:4110  %or = or i64 %ptr, 999994111  %0 = inttoptr i64 %or to ptr4112  %conv = sext i16 %str to i324113  store atomic i32 %conv, ptr %0 monotonic, align 44114  ret void4115}4116 4117; Function Attrs: nofree norecurse nounwind uwtable willreturn4118define dso_local void @st_disjoint_align32_int16_t_uint32_t(i64 %ptr, i16 signext %str) {4119; CHECK-P10-LABEL: st_disjoint_align32_int16_t_uint32_t:4120; CHECK-P10:       # %bb.0: # %entry4121; CHECK-P10-NEXT:    lis r5, -152644122; CHECK-P10-NEXT:    and r3, r3, r54123; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 04124; CHECK-P10-NEXT:    blr4125;4126; CHECK-PREP10-LABEL: st_disjoint_align32_int16_t_uint32_t:4127; CHECK-PREP10:       # %bb.0: # %entry4128; CHECK-PREP10-NEXT:    lis r5, -152644129; CHECK-PREP10-NEXT:    and r3, r3, r54130; CHECK-PREP10-NEXT:    lis r5, 152584131; CHECK-PREP10-NEXT:    ori r5, r5, 417124132; CHECK-PREP10-NEXT:    stwx r4, r3, r54133; CHECK-PREP10-NEXT:    blr4134entry:4135  %and = and i64 %ptr, -10003415044136  %or = or i64 %and, 9999900004137  %0 = inttoptr i64 %or to ptr4138  %conv = sext i16 %str to i324139  store atomic i32 %conv, ptr %0 monotonic, align 164140  ret void4141}4142 4143; Function Attrs: nofree norecurse nounwind uwtable willreturn4144define dso_local void @st_not_disjoint64_int16_t_uint32_t(i64 %ptr, i16 signext %str) {4145; CHECK-P10-LABEL: st_not_disjoint64_int16_t_uint32_t:4146; CHECK-P10:       # %bb.0: # %entry4147; CHECK-P10-NEXT:    pli r5, 2324148; CHECK-P10-NEXT:    pli r6, 35675873294149; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04150; CHECK-P10-NEXT:    or r3, r3, r64151; CHECK-P10-NEXT:    stw r4, 0(r3)4152; CHECK-P10-NEXT:    blr4153;4154; CHECK-PREP10-LABEL: st_not_disjoint64_int16_t_uint32_t:4155; CHECK-PREP10:       # %bb.0: # %entry4156; CHECK-PREP10-NEXT:    li r5, 294157; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244158; CHECK-PREP10-NEXT:    oris r5, r5, 544374159; CHECK-PREP10-NEXT:    ori r5, r5, 40974160; CHECK-PREP10-NEXT:    or r3, r3, r54161; CHECK-PREP10-NEXT:    stw r4, 0(r3)4162; CHECK-PREP10-NEXT:    blr4163entry:4164  %or = or i64 %ptr, 10000000000014165  %0 = inttoptr i64 %or to ptr4166  %conv = sext i16 %str to i324167  store atomic i32 %conv, ptr %0 monotonic, align 44168  ret void4169}4170 4171; Function Attrs: nofree norecurse nounwind uwtable willreturn4172define dso_local void @st_disjoint_align64_int16_t_uint32_t(i64 %ptr, i16 signext %str) {4173; CHECK-P10-LABEL: st_disjoint_align64_int16_t_uint32_t:4174; CHECK-P10:       # %bb.0: # %entry4175; CHECK-P10-NEXT:    pli r5, 2441406254176; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234177; CHECK-P10-NEXT:    rldic r5, r5, 12, 244178; CHECK-P10-NEXT:    stwx r4, r3, r54179; CHECK-P10-NEXT:    blr4180;4181; CHECK-PREP10-LABEL: st_disjoint_align64_int16_t_uint32_t:4182; CHECK-PREP10:       # %bb.0: # %entry4183; CHECK-PREP10-NEXT:    lis r5, 37254184; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234185; CHECK-PREP10-NEXT:    ori r5, r5, 190254186; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244187; CHECK-PREP10-NEXT:    stwx r4, r3, r54188; CHECK-PREP10-NEXT:    blr4189entry:4190  %and = and i64 %ptr, -10995116277764191  %or = or i64 %and, 10000000000004192  %0 = inttoptr i64 %or to ptr4193  %conv = sext i16 %str to i324194  store atomic i32 %conv, ptr %0 monotonic, align 40964195  ret void4196}4197 4198; Function Attrs: nofree norecurse nounwind uwtable willreturn4199define dso_local void @st_cst_align16_int16_t_uint32_t(i16 signext %str) {4200; CHECK-LABEL: st_cst_align16_int16_t_uint32_t:4201; CHECK:       # %bb.0: # %entry4202; CHECK-NEXT:    stw r3, 4080(0)4203; CHECK-NEXT:    blr4204entry:4205  %conv = sext i16 %str to i324206  store atomic i32 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 164207  ret void4208}4209 4210; Function Attrs: nofree norecurse nounwind uwtable willreturn4211define dso_local void @st_cst_align32_int16_t_uint32_t(i16 signext %str) {4212; CHECK-LABEL: st_cst_align32_int16_t_uint32_t:4213; CHECK:       # %bb.0: # %entry4214; CHECK-NEXT:    lis r4, 1534215; CHECK-NEXT:    stw r3, -27108(r4)4216; CHECK-NEXT:    blr4217entry:4218  %conv = sext i16 %str to i324219  store atomic i32 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 44220  ret void4221}4222 4223; Function Attrs: nofree norecurse nounwind uwtable willreturn4224define dso_local void @st_cst_align64_int16_t_uint32_t(i16 signext %str) {4225; CHECK-P10-LABEL: st_cst_align64_int16_t_uint32_t:4226; CHECK-P10:       # %bb.0: # %entry4227; CHECK-P10-NEXT:    pli r4, 2441406254228; CHECK-P10-NEXT:    rldic r4, r4, 12, 244229; CHECK-P10-NEXT:    stw r3, 0(r4)4230; CHECK-P10-NEXT:    blr4231;4232; CHECK-PREP10-LABEL: st_cst_align64_int16_t_uint32_t:4233; CHECK-PREP10:       # %bb.0: # %entry4234; CHECK-PREP10-NEXT:    lis r4, 37254235; CHECK-PREP10-NEXT:    ori r4, r4, 190254236; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244237; CHECK-PREP10-NEXT:    stw r3, 0(r4)4238; CHECK-PREP10-NEXT:    blr4239entry:4240  %conv = sext i16 %str to i324241  store atomic i32 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964242  ret void4243}4244 4245; Function Attrs: nofree norecurse nounwind uwtable willreturn4246define dso_local void @st_0_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4247; CHECK-LABEL: st_0_int16_t_uint64_t:4248; CHECK:       # %bb.0: # %entry4249; CHECK-NEXT:    std r4, 0(r3)4250; CHECK-NEXT:    blr4251entry:4252  %0 = inttoptr i64 %ptr to ptr4253  %conv = sext i16 %str to i644254  store atomic i64 %conv, ptr %0 monotonic, align 84255  ret void4256}4257 4258; Function Attrs: nofree norecurse nounwind uwtable willreturn4259define dso_local void @st_align16_int16_t_uint64_t(ptr nocapture %ptr, i16 signext %str) {4260; CHECK-LABEL: st_align16_int16_t_uint64_t:4261; CHECK:       # %bb.0: # %entry4262; CHECK-NEXT:    std r4, 8(r3)4263; CHECK-NEXT:    blr4264entry:4265  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84266  %conv = sext i16 %str to i644267  store atomic i64 %conv, ptr %add.ptr monotonic, align 84268  ret void4269}4270 4271; Function Attrs: nofree norecurse nounwind uwtable willreturn4272define dso_local void @st_align32_int16_t_uint64_t(ptr nocapture %ptr, i16 signext %str) {4273; CHECK-P10-LABEL: st_align32_int16_t_uint64_t:4274; CHECK-P10:       # %bb.0: # %entry4275; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 04276; CHECK-P10-NEXT:    blr4277;4278; CHECK-PREP10-LABEL: st_align32_int16_t_uint64_t:4279; CHECK-PREP10:       # %bb.0: # %entry4280; CHECK-PREP10-NEXT:    lis r5, 15254281; CHECK-PREP10-NEXT:    ori r5, r5, 566004282; CHECK-PREP10-NEXT:    stdx r4, r3, r54283; CHECK-PREP10-NEXT:    blr4284entry:4285  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004286  %conv = sext i16 %str to i644287  store atomic i64 %conv, ptr %add.ptr monotonic, align 84288  ret void4289}4290 4291; Function Attrs: nofree norecurse nounwind uwtable willreturn4292define dso_local void @st_align64_int16_t_uint64_t(ptr nocapture %ptr, i16 signext %str) {4293; CHECK-P10-LABEL: st_align64_int16_t_uint64_t:4294; CHECK-P10:       # %bb.0: # %entry4295; CHECK-P10-NEXT:    pli r5, 2441406254296; CHECK-P10-NEXT:    rldic r5, r5, 12, 244297; CHECK-P10-NEXT:    stdx r4, r3, r54298; CHECK-P10-NEXT:    blr4299;4300; CHECK-PREP10-LABEL: st_align64_int16_t_uint64_t:4301; CHECK-PREP10:       # %bb.0: # %entry4302; CHECK-PREP10-NEXT:    lis r5, 37254303; CHECK-PREP10-NEXT:    ori r5, r5, 190254304; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244305; CHECK-PREP10-NEXT:    stdx r4, r3, r54306; CHECK-PREP10-NEXT:    blr4307entry:4308  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004309  %conv = sext i16 %str to i644310  store atomic i64 %conv, ptr %add.ptr monotonic, align 84311  ret void4312}4313 4314; Function Attrs: nofree norecurse nounwind uwtable willreturn4315define dso_local void @st_reg_int16_t_uint64_t(ptr nocapture %ptr, i64 %off, i16 signext %str) {4316; CHECK-LABEL: st_reg_int16_t_uint64_t:4317; CHECK:       # %bb.0: # %entry4318; CHECK-NEXT:    stdx r5, r3, r44319; CHECK-NEXT:    blr4320entry:4321  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4322  %conv = sext i16 %str to i644323  store atomic i64 %conv, ptr %add.ptr monotonic, align 84324  ret void4325}4326 4327; Function Attrs: nofree norecurse nounwind uwtable willreturn4328define dso_local void @st_or1_int16_t_uint64_t(i64 %ptr, i8 zeroext %off, i16 signext %str) {4329; CHECK-LABEL: st_or1_int16_t_uint64_t:4330; CHECK:       # %bb.0: # %entry4331; CHECK-NEXT:    or r3, r4, r34332; CHECK-NEXT:    std r5, 0(r3)4333; CHECK-NEXT:    blr4334entry:4335  %conv = zext i8 %off to i644336  %or = or i64 %conv, %ptr4337  %0 = inttoptr i64 %or to ptr4338  %conv1 = sext i16 %str to i644339  store atomic i64 %conv1, ptr %0 monotonic, align 84340  ret void4341}4342 4343; Function Attrs: nofree norecurse nounwind uwtable willreturn4344define dso_local void @st_not_disjoint16_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4345; CHECK-LABEL: st_not_disjoint16_int16_t_uint64_t:4346; CHECK:       # %bb.0: # %entry4347; CHECK-NEXT:    ori r3, r3, 64348; CHECK-NEXT:    std r4, 0(r3)4349; CHECK-NEXT:    blr4350entry:4351  %or = or i64 %ptr, 64352  %0 = inttoptr i64 %or to ptr4353  %conv = sext i16 %str to i644354  store atomic i64 %conv, ptr %0 monotonic, align 84355  ret void4356}4357 4358; Function Attrs: nofree norecurse nounwind uwtable willreturn4359define dso_local void @st_disjoint_align16_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4360; CHECK-LABEL: st_disjoint_align16_int16_t_uint64_t:4361; CHECK:       # %bb.0: # %entry4362; CHECK-NEXT:    rldicr r3, r3, 0, 514363; CHECK-NEXT:    std r4, 24(r3)4364; CHECK-NEXT:    blr4365entry:4366  %and = and i64 %ptr, -40964367  %or = or i64 %and, 244368  %0 = inttoptr i64 %or to ptr4369  %conv = sext i16 %str to i644370  store atomic i64 %conv, ptr %0 monotonic, align 84371  ret void4372}4373 4374; Function Attrs: nofree norecurse nounwind uwtable willreturn4375define dso_local void @st_not_disjoint32_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4376; CHECK-LABEL: st_not_disjoint32_int16_t_uint64_t:4377; CHECK:       # %bb.0: # %entry4378; CHECK-NEXT:    ori r3, r3, 344634379; CHECK-NEXT:    oris r3, r3, 14380; CHECK-NEXT:    std r4, 0(r3)4381; CHECK-NEXT:    blr4382entry:4383  %or = or i64 %ptr, 999994384  %0 = inttoptr i64 %or to ptr4385  %conv = sext i16 %str to i644386  store atomic i64 %conv, ptr %0 monotonic, align 84387  ret void4388}4389 4390; Function Attrs: nofree norecurse nounwind uwtable willreturn4391define dso_local void @st_disjoint_align32_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4392; CHECK-P10-LABEL: st_disjoint_align32_int16_t_uint64_t:4393; CHECK-P10:       # %bb.0: # %entry4394; CHECK-P10-NEXT:    lis r5, -152644395; CHECK-P10-NEXT:    and r3, r3, r54396; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 04397; CHECK-P10-NEXT:    blr4398;4399; CHECK-PREP10-LABEL: st_disjoint_align32_int16_t_uint64_t:4400; CHECK-PREP10:       # %bb.0: # %entry4401; CHECK-PREP10-NEXT:    lis r5, -152644402; CHECK-PREP10-NEXT:    and r3, r3, r54403; CHECK-PREP10-NEXT:    lis r5, 152584404; CHECK-PREP10-NEXT:    ori r5, r5, 417124405; CHECK-PREP10-NEXT:    stdx r4, r3, r54406; CHECK-PREP10-NEXT:    blr4407entry:4408  %and = and i64 %ptr, -10003415044409  %or = or i64 %and, 9999900004410  %0 = inttoptr i64 %or to ptr4411  %conv = sext i16 %str to i644412  store atomic i64 %conv, ptr %0 monotonic, align 164413  ret void4414}4415 4416; Function Attrs: nofree norecurse nounwind uwtable willreturn4417define dso_local void @st_not_disjoint64_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4418; CHECK-P10-LABEL: st_not_disjoint64_int16_t_uint64_t:4419; CHECK-P10:       # %bb.0: # %entry4420; CHECK-P10-NEXT:    pli r5, 2324421; CHECK-P10-NEXT:    pli r6, 35675873294422; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04423; CHECK-P10-NEXT:    or r3, r3, r64424; CHECK-P10-NEXT:    std r4, 0(r3)4425; CHECK-P10-NEXT:    blr4426;4427; CHECK-PREP10-LABEL: st_not_disjoint64_int16_t_uint64_t:4428; CHECK-PREP10:       # %bb.0: # %entry4429; CHECK-PREP10-NEXT:    li r5, 294430; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244431; CHECK-PREP10-NEXT:    oris r5, r5, 544374432; CHECK-PREP10-NEXT:    ori r5, r5, 40974433; CHECK-PREP10-NEXT:    or r3, r3, r54434; CHECK-PREP10-NEXT:    std r4, 0(r3)4435; CHECK-PREP10-NEXT:    blr4436entry:4437  %or = or i64 %ptr, 10000000000014438  %0 = inttoptr i64 %or to ptr4439  %conv = sext i16 %str to i644440  store atomic i64 %conv, ptr %0 monotonic, align 84441  ret void4442}4443 4444; Function Attrs: nofree norecurse nounwind uwtable willreturn4445define dso_local void @st_disjoint_align64_int16_t_uint64_t(i64 %ptr, i16 signext %str) {4446; CHECK-P10-LABEL: st_disjoint_align64_int16_t_uint64_t:4447; CHECK-P10:       # %bb.0: # %entry4448; CHECK-P10-NEXT:    pli r5, 2441406254449; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234450; CHECK-P10-NEXT:    rldic r5, r5, 12, 244451; CHECK-P10-NEXT:    stdx r4, r3, r54452; CHECK-P10-NEXT:    blr4453;4454; CHECK-PREP10-LABEL: st_disjoint_align64_int16_t_uint64_t:4455; CHECK-PREP10:       # %bb.0: # %entry4456; CHECK-PREP10-NEXT:    lis r5, 37254457; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234458; CHECK-PREP10-NEXT:    ori r5, r5, 190254459; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244460; CHECK-PREP10-NEXT:    stdx r4, r3, r54461; CHECK-PREP10-NEXT:    blr4462entry:4463  %and = and i64 %ptr, -10995116277764464  %or = or i64 %and, 10000000000004465  %0 = inttoptr i64 %or to ptr4466  %conv = sext i16 %str to i644467  store atomic i64 %conv, ptr %0 monotonic, align 40964468  ret void4469}4470 4471; Function Attrs: nofree norecurse nounwind uwtable willreturn4472define dso_local void @st_cst_align16_int16_t_uint64_t(i16 signext %str) {4473; CHECK-LABEL: st_cst_align16_int16_t_uint64_t:4474; CHECK:       # %bb.0: # %entry4475; CHECK-NEXT:    std r3, 4080(0)4476; CHECK-NEXT:    blr4477entry:4478  %conv = sext i16 %str to i644479  store atomic i64 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 164480  ret void4481}4482 4483; Function Attrs: nofree norecurse nounwind uwtable willreturn4484define dso_local void @st_cst_align32_int16_t_uint64_t(i16 signext %str) {4485; CHECK-LABEL: st_cst_align32_int16_t_uint64_t:4486; CHECK:       # %bb.0: # %entry4487; CHECK-NEXT:    lis r4, 1534488; CHECK-NEXT:    std r3, -27108(r4)4489; CHECK-NEXT:    blr4490entry:4491  %conv = sext i16 %str to i644492  store atomic i64 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 84493  ret void4494}4495 4496; Function Attrs: nofree norecurse nounwind uwtable willreturn4497define dso_local void @st_cst_align64_int16_t_uint64_t(i16 signext %str) {4498; CHECK-P10-LABEL: st_cst_align64_int16_t_uint64_t:4499; CHECK-P10:       # %bb.0: # %entry4500; CHECK-P10-NEXT:    pli r4, 2441406254501; CHECK-P10-NEXT:    rldic r4, r4, 12, 244502; CHECK-P10-NEXT:    std r3, 0(r4)4503; CHECK-P10-NEXT:    blr4504;4505; CHECK-PREP10-LABEL: st_cst_align64_int16_t_uint64_t:4506; CHECK-PREP10:       # %bb.0: # %entry4507; CHECK-PREP10-NEXT:    lis r4, 37254508; CHECK-PREP10-NEXT:    ori r4, r4, 190254509; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244510; CHECK-PREP10-NEXT:    std r3, 0(r4)4511; CHECK-PREP10-NEXT:    blr4512entry:4513  %conv = sext i16 %str to i644514  store atomic i64 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964515  ret void4516}4517