brintos

brintos / llvm-project-archived public Read only

0
0
Text · 141.2 KiB · 2f8f480 Raw
4219 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 i8 @ld_0_int8_t_uint8_t(i64 %ptr) {23; CHECK-LABEL: ld_0_int8_t_uint8_t:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    lbz r3, 0(r3)26; CHECK-NEXT:    extsb r3, r327; CHECK-NEXT:    blr28entry:29  %0 = inttoptr i64 %ptr to ptr30  %1 = load atomic i8, ptr %0 monotonic, align 131  ret i8 %132}33 34; Function Attrs: nofree norecurse nounwind uwtable willreturn35define dso_local signext i8 @ld_align16_int8_t_uint8_t(ptr nocapture readonly %ptr) {36; CHECK-LABEL: ld_align16_int8_t_uint8_t:37; CHECK:       # %bb.0: # %entry38; CHECK-NEXT:    lbz r3, 8(r3)39; CHECK-NEXT:    extsb r3, r340; CHECK-NEXT:    blr41entry:42  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 843  %0 = load atomic i8, ptr %add.ptr monotonic, align 144  ret i8 %045}46 47; Function Attrs: nofree norecurse nounwind uwtable willreturn48define dso_local signext i8 @ld_align32_int8_t_uint8_t(ptr nocapture readonly %ptr) {49; CHECK-P10-LABEL: ld_align32_int8_t_uint8_t:50; CHECK-P10:       # %bb.0: # %entry51; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 052; CHECK-P10-NEXT:    extsb r3, r353; CHECK-P10-NEXT:    blr54;55; CHECK-PREP10-LABEL: ld_align32_int8_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:    extsb r3, r361; CHECK-PREP10-NEXT:    blr62entry:63  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 9999900064  %0 = load atomic i8, ptr %add.ptr monotonic, align 165  ret i8 %066}67 68; Function Attrs: nofree norecurse nounwind uwtable willreturn69define dso_local signext i8 @ld_align64_int8_t_uint8_t(ptr nocapture readonly %ptr) {70; CHECK-P10-LABEL: ld_align64_int8_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:    extsb r3, r376; CHECK-P10-NEXT:    blr77;78; CHECK-PREP10-LABEL: ld_align64_int8_t_uint8_t:79; CHECK-PREP10:       # %bb.0: # %entry80; CHECK-PREP10-NEXT:    lis r4, 372581; CHECK-PREP10-NEXT:    ori r4, r4, 1902582; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 2483; CHECK-PREP10-NEXT:    lbzx r3, r3, r484; CHECK-PREP10-NEXT:    extsb r3, r385; CHECK-PREP10-NEXT:    blr86entry:87  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 100000000000088  %0 = load atomic i8, ptr %add.ptr monotonic, align 189  ret i8 %090}91 92; Function Attrs: nofree norecurse nounwind uwtable willreturn93define dso_local signext i8 @ld_reg_int8_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {94; CHECK-LABEL: ld_reg_int8_t_uint8_t:95; CHECK:       # %bb.0: # %entry96; CHECK-NEXT:    lbzx r3, r3, r497; CHECK-NEXT:    extsb r3, r398; CHECK-NEXT:    blr99entry:100  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off101  %0 = load atomic i8, ptr %add.ptr monotonic, align 1102  ret i8 %0103}104 105; Function Attrs: nofree norecurse nounwind uwtable willreturn106define dso_local signext i8 @ld_or_int8_t_uint8_t(i64 %ptr, i8 zeroext %off) {107; CHECK-LABEL: ld_or_int8_t_uint8_t:108; CHECK:       # %bb.0: # %entry109; CHECK-NEXT:    or r3, r4, r3110; CHECK-NEXT:    lbz r3, 0(r3)111; CHECK-NEXT:    extsb r3, r3112; CHECK-NEXT:    blr113entry:114  %conv = zext i8 %off to i64115  %or = or i64 %conv, %ptr116  %0 = inttoptr i64 %or to ptr117  %1 = load atomic i8, ptr %0 monotonic, align 1118  ret i8 %1119}120 121; Function Attrs: nofree norecurse nounwind uwtable willreturn122define dso_local signext i8 @ld_not_disjoint16_int8_t_uint8_t(i64 %ptr) {123; CHECK-LABEL: ld_not_disjoint16_int8_t_uint8_t:124; CHECK:       # %bb.0: # %entry125; CHECK-NEXT:    ori r3, r3, 6126; CHECK-NEXT:    lbz r3, 0(r3)127; CHECK-NEXT:    extsb r3, r3128; CHECK-NEXT:    blr129entry:130  %or = or i64 %ptr, 6131  %0 = inttoptr i64 %or to ptr132  %1 = load atomic i8, ptr %0 monotonic, align 1133  ret i8 %1134}135 136; Function Attrs: nofree norecurse nounwind uwtable willreturn137define dso_local signext i8 @ld_disjoint_align16_int8_t_uint8_t(i64 %ptr) {138; CHECK-LABEL: ld_disjoint_align16_int8_t_uint8_t:139; CHECK:       # %bb.0: # %entry140; CHECK-NEXT:    rldicr r3, r3, 0, 51141; CHECK-NEXT:    lbz r3, 24(r3)142; CHECK-NEXT:    extsb r3, r3143; CHECK-NEXT:    blr144entry:145  %and = and i64 %ptr, -4096146  %or = or i64 %and, 24147  %0 = inttoptr i64 %or to ptr148  %1 = load atomic i8, ptr %0 monotonic, align 8149  ret i8 %1150}151 152; Function Attrs: nofree norecurse nounwind uwtable willreturn153define dso_local signext i8 @ld_not_disjoint32_int8_t_uint8_t(i64 %ptr) {154; CHECK-LABEL: ld_not_disjoint32_int8_t_uint8_t:155; CHECK:       # %bb.0: # %entry156; CHECK-NEXT:    ori r3, r3, 34463157; CHECK-NEXT:    oris r3, r3, 1158; CHECK-NEXT:    lbz r3, 0(r3)159; CHECK-NEXT:    extsb r3, r3160; CHECK-NEXT:    blr161entry:162  %or = or i64 %ptr, 99999163  %0 = inttoptr i64 %or to ptr164  %1 = load atomic i8, ptr %0 monotonic, align 1165  ret i8 %1166}167 168; Function Attrs: nofree norecurse nounwind uwtable willreturn169define dso_local signext i8 @ld_disjoint_align32_int8_t_uint8_t(i64 %ptr) {170; CHECK-P10-LABEL: ld_disjoint_align32_int8_t_uint8_t:171; CHECK-P10:       # %bb.0: # %entry172; CHECK-P10-NEXT:    lis r4, -15264173; CHECK-P10-NEXT:    and r3, r3, r4174; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 0175; CHECK-P10-NEXT:    extsb r3, r3176; CHECK-P10-NEXT:    blr177;178; CHECK-PREP10-LABEL: ld_disjoint_align32_int8_t_uint8_t:179; CHECK-PREP10:       # %bb.0: # %entry180; CHECK-PREP10-NEXT:    lis r4, -15264181; CHECK-PREP10-NEXT:    and r3, r3, r4182; CHECK-PREP10-NEXT:    lis r4, 15258183; CHECK-PREP10-NEXT:    ori r4, r4, 41712184; CHECK-PREP10-NEXT:    lbzx r3, r3, r4185; CHECK-PREP10-NEXT:    extsb r3, r3186; CHECK-PREP10-NEXT:    blr187entry:188  %and = and i64 %ptr, -1000341504189  %or = or i64 %and, 999990000190  %0 = inttoptr i64 %or to ptr191  %1 = load atomic i8, ptr %0 monotonic, align 16192  ret i8 %1193}194 195; Function Attrs: nofree norecurse nounwind uwtable willreturn196define dso_local signext i8 @ld_not_disjoint64_int8_t_uint8_t(i64 %ptr) {197; CHECK-P10-LABEL: ld_not_disjoint64_int8_t_uint8_t:198; CHECK-P10:       # %bb.0: # %entry199; CHECK-P10-NEXT:    pli r4, 232200; CHECK-P10-NEXT:    pli r5, 3567587329201; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0202; CHECK-P10-NEXT:    or r3, r3, r5203; CHECK-P10-NEXT:    lbz r3, 0(r3)204; CHECK-P10-NEXT:    extsb r3, r3205; CHECK-P10-NEXT:    blr206;207; CHECK-PREP10-LABEL: ld_not_disjoint64_int8_t_uint8_t:208; CHECK-PREP10:       # %bb.0: # %entry209; CHECK-PREP10-NEXT:    li r4, 29210; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24211; CHECK-PREP10-NEXT:    oris r4, r4, 54437212; CHECK-PREP10-NEXT:    ori r4, r4, 4097213; CHECK-PREP10-NEXT:    or r3, r3, r4214; CHECK-PREP10-NEXT:    lbz r3, 0(r3)215; CHECK-PREP10-NEXT:    extsb r3, r3216; CHECK-PREP10-NEXT:    blr217entry:218  %or = or i64 %ptr, 1000000000001219  %0 = inttoptr i64 %or to ptr220  %1 = load atomic i8, ptr %0 monotonic, align 1221  ret i8 %1222}223 224; Function Attrs: nofree norecurse nounwind uwtable willreturn225define dso_local signext i8 @ld_disjoint_align64_int8_t_uint8_t(i64 %ptr) {226; CHECK-P10-LABEL: ld_disjoint_align64_int8_t_uint8_t:227; CHECK-P10:       # %bb.0: # %entry228; CHECK-P10-NEXT:    pli r4, 244140625229; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23230; CHECK-P10-NEXT:    rldic r4, r4, 12, 24231; CHECK-P10-NEXT:    lbzx r3, r3, r4232; CHECK-P10-NEXT:    extsb r3, r3233; CHECK-P10-NEXT:    blr234;235; CHECK-PREP10-LABEL: ld_disjoint_align64_int8_t_uint8_t:236; CHECK-PREP10:       # %bb.0: # %entry237; CHECK-PREP10-NEXT:    lis r4, 3725238; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23239; CHECK-PREP10-NEXT:    ori r4, r4, 19025240; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24241; CHECK-PREP10-NEXT:    lbzx r3, r3, r4242; CHECK-PREP10-NEXT:    extsb r3, r3243; CHECK-PREP10-NEXT:    blr244entry:245  %and = and i64 %ptr, -1099511627776246  %or = or i64 %and, 1000000000000247  %0 = inttoptr i64 %or to ptr248  %1 = load atomic i8, ptr %0 monotonic, align 4096249  ret i8 %1250}251 252; Function Attrs: nofree norecurse nounwind uwtable willreturn253define dso_local signext i8 @ld_cst_align16_int8_t_uint8_t() {254; CHECK-LABEL: ld_cst_align16_int8_t_uint8_t:255; CHECK:       # %bb.0: # %entry256; CHECK-NEXT:    lbz r3, 4080(0)257; CHECK-NEXT:    extsb r3, r3258; CHECK-NEXT:    blr259entry:260  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 16261  ret i8 %0262}263 264; Function Attrs: nofree norecurse nounwind uwtable willreturn265define dso_local signext i8 @ld_cst_align32_int8_t_uint8_t() {266; CHECK-LABEL: ld_cst_align32_int8_t_uint8_t:267; CHECK:       # %bb.0: # %entry268; CHECK-NEXT:    lis r3, 153269; CHECK-NEXT:    lbz r3, -27108(r3)270; CHECK-NEXT:    extsb r3, r3271; CHECK-NEXT:    blr272entry:273  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4274  ret i8 %0275}276 277; Function Attrs: nofree norecurse nounwind uwtable willreturn278define dso_local signext i8 @ld_cst_align64_int8_t_uint8_t() {279; CHECK-P10-LABEL: ld_cst_align64_int8_t_uint8_t:280; CHECK-P10:       # %bb.0: # %entry281; CHECK-P10-NEXT:    pli r3, 244140625282; CHECK-P10-NEXT:    rldic r3, r3, 12, 24283; CHECK-P10-NEXT:    lbz r3, 0(r3)284; CHECK-P10-NEXT:    extsb r3, r3285; CHECK-P10-NEXT:    blr286;287; CHECK-PREP10-LABEL: ld_cst_align64_int8_t_uint8_t:288; CHECK-PREP10:       # %bb.0: # %entry289; CHECK-PREP10-NEXT:    lis r3, 3725290; CHECK-PREP10-NEXT:    ori r3, r3, 19025291; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24292; CHECK-PREP10-NEXT:    lbz r3, 0(r3)293; CHECK-PREP10-NEXT:    extsb r3, r3294; CHECK-PREP10-NEXT:    blr295entry:296  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096297  ret i8 %0298}299 300; Function Attrs: nofree norecurse nounwind uwtable willreturn301define dso_local signext i8 @ld_0_int8_t_uint16_t(i64 %ptr) {302; CHECK-LABEL: ld_0_int8_t_uint16_t:303; CHECK:       # %bb.0: # %entry304; CHECK-NEXT:    lhz r3, 0(r3)305; CHECK-NEXT:    extsb r3, r3306; CHECK-NEXT:    blr307entry:308  %0 = inttoptr i64 %ptr to ptr309  %1 = load atomic i16, ptr %0 monotonic, align 2310  %conv = trunc i16 %1 to i8311  ret i8 %conv312}313 314; Function Attrs: nofree norecurse nounwind uwtable willreturn315define dso_local signext i8 @ld_align16_int8_t_uint16_t(ptr nocapture readonly %ptr) {316; CHECK-LABEL: ld_align16_int8_t_uint16_t:317; CHECK:       # %bb.0: # %entry318; CHECK-NEXT:    lhz r3, 8(r3)319; CHECK-NEXT:    extsb r3, r3320; CHECK-NEXT:    blr321entry:322  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8323  %0 = load atomic i16, ptr %add.ptr monotonic, align 2324  %conv = trunc i16 %0 to i8325  ret i8 %conv326}327 328; Function Attrs: nofree norecurse nounwind uwtable willreturn329define dso_local signext i8 @ld_align32_int8_t_uint16_t(ptr nocapture readonly %ptr) {330; CHECK-P10-LABEL: ld_align32_int8_t_uint16_t:331; CHECK-P10:       # %bb.0: # %entry332; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 0333; CHECK-P10-NEXT:    extsb r3, r3334; CHECK-P10-NEXT:    blr335;336; CHECK-PREP10-LABEL: ld_align32_int8_t_uint16_t:337; CHECK-PREP10:       # %bb.0: # %entry338; CHECK-PREP10-NEXT:    lis r4, 1525339; CHECK-PREP10-NEXT:    ori r4, r4, 56600340; CHECK-PREP10-NEXT:    lhzx r3, r3, r4341; CHECK-PREP10-NEXT:    extsb r3, r3342; CHECK-PREP10-NEXT:    blr343entry:344  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000345  %0 = load atomic i16, ptr %add.ptr monotonic, align 2346  %conv = trunc i16 %0 to i8347  ret i8 %conv348}349 350; Function Attrs: nofree norecurse nounwind uwtable willreturn351define dso_local signext i8 @ld_align64_int8_t_uint16_t(ptr nocapture readonly %ptr) {352; CHECK-P10-LABEL: ld_align64_int8_t_uint16_t:353; CHECK-P10:       # %bb.0: # %entry354; CHECK-P10-NEXT:    pli r4, 244140625355; CHECK-P10-NEXT:    rldic r4, r4, 12, 24356; CHECK-P10-NEXT:    lhzx r3, r3, r4357; CHECK-P10-NEXT:    extsb r3, r3358; CHECK-P10-NEXT:    blr359;360; CHECK-PREP10-LABEL: ld_align64_int8_t_uint16_t:361; CHECK-PREP10:       # %bb.0: # %entry362; CHECK-PREP10-NEXT:    lis r4, 3725363; CHECK-PREP10-NEXT:    ori r4, r4, 19025364; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24365; CHECK-PREP10-NEXT:    lhzx r3, r3, r4366; CHECK-PREP10-NEXT:    extsb r3, r3367; CHECK-PREP10-NEXT:    blr368entry:369  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000370  %0 = load atomic i16, ptr %add.ptr monotonic, align 2371  %conv = trunc i16 %0 to i8372  ret i8 %conv373}374 375; Function Attrs: nofree norecurse nounwind uwtable willreturn376define dso_local signext i8 @ld_reg_int8_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {377; CHECK-LABEL: ld_reg_int8_t_uint16_t:378; CHECK:       # %bb.0: # %entry379; CHECK-NEXT:    lhzx r3, r3, r4380; CHECK-NEXT:    extsb r3, r3381; CHECK-NEXT:    blr382entry:383  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off384  %0 = load atomic i16, ptr %add.ptr monotonic, align 2385  %conv = trunc i16 %0 to i8386  ret i8 %conv387}388 389; Function Attrs: nofree norecurse nounwind uwtable willreturn390define dso_local signext i8 @ld_or_int8_t_uint16_t(i64 %ptr, i8 zeroext %off) {391; CHECK-LABEL: ld_or_int8_t_uint16_t:392; CHECK:       # %bb.0: # %entry393; CHECK-NEXT:    or r3, r4, r3394; CHECK-NEXT:    lhz r3, 0(r3)395; CHECK-NEXT:    extsb r3, r3396; CHECK-NEXT:    blr397entry:398  %conv = zext i8 %off to i64399  %or = or i64 %conv, %ptr400  %0 = inttoptr i64 %or to ptr401  %1 = load atomic i16, ptr %0 monotonic, align 2402  %conv1 = trunc i16 %1 to i8403  ret i8 %conv1404}405 406; Function Attrs: nofree norecurse nounwind uwtable willreturn407define dso_local signext i8 @ld_not_disjoint16_int8_t_uint16_t(i64 %ptr) {408; CHECK-LABEL: ld_not_disjoint16_int8_t_uint16_t:409; CHECK:       # %bb.0: # %entry410; CHECK-NEXT:    ori r3, r3, 6411; CHECK-NEXT:    lhz r3, 0(r3)412; CHECK-NEXT:    extsb r3, r3413; CHECK-NEXT:    blr414entry:415  %or = or i64 %ptr, 6416  %0 = inttoptr i64 %or to ptr417  %1 = load atomic i16, ptr %0 monotonic, align 2418  %conv = trunc i16 %1 to i8419  ret i8 %conv420}421 422; Function Attrs: nofree norecurse nounwind uwtable willreturn423define dso_local signext i8 @ld_disjoint_align16_int8_t_uint16_t(i64 %ptr) {424; CHECK-LABEL: ld_disjoint_align16_int8_t_uint16_t:425; CHECK:       # %bb.0: # %entry426; CHECK-NEXT:    rldicr r3, r3, 0, 51427; CHECK-NEXT:    lhz r3, 24(r3)428; CHECK-NEXT:    extsb r3, r3429; CHECK-NEXT:    blr430entry:431  %and = and i64 %ptr, -4096432  %or = or i64 %and, 24433  %0 = inttoptr i64 %or to ptr434  %1 = load atomic i16, ptr %0 monotonic, align 8435  %conv = trunc i16 %1 to i8436  ret i8 %conv437}438 439; Function Attrs: nofree norecurse nounwind uwtable willreturn440define dso_local signext i8 @ld_not_disjoint32_int8_t_uint16_t(i64 %ptr) {441; CHECK-LABEL: ld_not_disjoint32_int8_t_uint16_t:442; CHECK:       # %bb.0: # %entry443; CHECK-NEXT:    ori r3, r3, 34463444; CHECK-NEXT:    oris r3, r3, 1445; CHECK-NEXT:    lhz r3, 0(r3)446; CHECK-NEXT:    extsb r3, r3447; CHECK-NEXT:    blr448entry:449  %or = or i64 %ptr, 99999450  %0 = inttoptr i64 %or to ptr451  %1 = load atomic i16, ptr %0 monotonic, align 2452  %conv = trunc i16 %1 to i8453  ret i8 %conv454}455 456; Function Attrs: nofree norecurse nounwind uwtable willreturn457define dso_local signext i8 @ld_disjoint_align32_int8_t_uint16_t(i64 %ptr) {458; CHECK-P10-LABEL: ld_disjoint_align32_int8_t_uint16_t:459; CHECK-P10:       # %bb.0: # %entry460; CHECK-P10-NEXT:    lis r4, -15264461; CHECK-P10-NEXT:    and r3, r3, r4462; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 0463; CHECK-P10-NEXT:    extsb r3, r3464; CHECK-P10-NEXT:    blr465;466; CHECK-PREP10-LABEL: ld_disjoint_align32_int8_t_uint16_t:467; CHECK-PREP10:       # %bb.0: # %entry468; CHECK-PREP10-NEXT:    lis r4, -15264469; CHECK-PREP10-NEXT:    and r3, r3, r4470; CHECK-PREP10-NEXT:    lis r4, 15258471; CHECK-PREP10-NEXT:    ori r4, r4, 41712472; CHECK-PREP10-NEXT:    lhzx r3, r3, r4473; CHECK-PREP10-NEXT:    extsb r3, r3474; CHECK-PREP10-NEXT:    blr475entry:476  %and = and i64 %ptr, -1000341504477  %or = or i64 %and, 999990000478  %0 = inttoptr i64 %or to ptr479  %1 = load atomic i16, ptr %0 monotonic, align 16480  %conv = trunc i16 %1 to i8481  ret i8 %conv482}483 484; Function Attrs: nofree norecurse nounwind uwtable willreturn485define dso_local signext i8 @ld_not_disjoint64_int8_t_uint16_t(i64 %ptr) {486; CHECK-P10-LABEL: ld_not_disjoint64_int8_t_uint16_t:487; CHECK-P10:       # %bb.0: # %entry488; CHECK-P10-NEXT:    pli r4, 232489; CHECK-P10-NEXT:    pli r5, 3567587329490; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0491; CHECK-P10-NEXT:    or r3, r3, r5492; CHECK-P10-NEXT:    lhz r3, 0(r3)493; CHECK-P10-NEXT:    extsb r3, r3494; CHECK-P10-NEXT:    blr495;496; CHECK-PREP10-LABEL: ld_not_disjoint64_int8_t_uint16_t:497; CHECK-PREP10:       # %bb.0: # %entry498; CHECK-PREP10-NEXT:    li r4, 29499; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24500; CHECK-PREP10-NEXT:    oris r4, r4, 54437501; CHECK-PREP10-NEXT:    ori r4, r4, 4097502; CHECK-PREP10-NEXT:    or r3, r3, r4503; CHECK-PREP10-NEXT:    lhz r3, 0(r3)504; CHECK-PREP10-NEXT:    extsb r3, r3505; CHECK-PREP10-NEXT:    blr506entry:507  %or = or i64 %ptr, 1000000000001508  %0 = inttoptr i64 %or to ptr509  %1 = load atomic i16, ptr %0 monotonic, align 2510  %conv = trunc i16 %1 to i8511  ret i8 %conv512}513 514; Function Attrs: nofree norecurse nounwind uwtable willreturn515define dso_local signext i8 @ld_disjoint_align64_int8_t_uint16_t(i64 %ptr) {516; CHECK-P10-LABEL: ld_disjoint_align64_int8_t_uint16_t:517; CHECK-P10:       # %bb.0: # %entry518; CHECK-P10-NEXT:    pli r4, 244140625519; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23520; CHECK-P10-NEXT:    rldic r4, r4, 12, 24521; CHECK-P10-NEXT:    lhzx r3, r3, r4522; CHECK-P10-NEXT:    extsb r3, r3523; CHECK-P10-NEXT:    blr524;525; CHECK-PREP10-LABEL: ld_disjoint_align64_int8_t_uint16_t:526; CHECK-PREP10:       # %bb.0: # %entry527; CHECK-PREP10-NEXT:    lis r4, 3725528; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23529; CHECK-PREP10-NEXT:    ori r4, r4, 19025530; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24531; CHECK-PREP10-NEXT:    lhzx r3, r3, r4532; CHECK-PREP10-NEXT:    extsb r3, r3533; CHECK-PREP10-NEXT:    blr534entry:535  %and = and i64 %ptr, -1099511627776536  %or = or i64 %and, 1000000000000537  %0 = inttoptr i64 %or to ptr538  %1 = load atomic i16, ptr %0 monotonic, align 4096539  %conv = trunc i16 %1 to i8540  ret i8 %conv541}542 543; Function Attrs: nofree norecurse nounwind uwtable willreturn544define dso_local signext i8 @ld_cst_align16_int8_t_uint16_t() {545; CHECK-LABEL: ld_cst_align16_int8_t_uint16_t:546; CHECK:       # %bb.0: # %entry547; CHECK-NEXT:    lhz r3, 4080(0)548; CHECK-NEXT:    extsb r3, r3549; CHECK-NEXT:    blr550entry:551  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 16552  %conv = trunc i16 %0 to i8553  ret i8 %conv554}555 556; Function Attrs: nofree norecurse nounwind uwtable willreturn557define dso_local signext i8 @ld_cst_align32_int8_t_uint16_t() {558; CHECK-LABEL: ld_cst_align32_int8_t_uint16_t:559; CHECK:       # %bb.0: # %entry560; CHECK-NEXT:    lis r3, 153561; CHECK-NEXT:    lhz r3, -27108(r3)562; CHECK-NEXT:    extsb r3, r3563; CHECK-NEXT:    blr564entry:565  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4566  %conv = trunc i16 %0 to i8567  ret i8 %conv568}569 570; Function Attrs: nofree norecurse nounwind uwtable willreturn571define dso_local signext i8 @ld_cst_align64_int8_t_uint16_t() {572; CHECK-P10-LABEL: ld_cst_align64_int8_t_uint16_t:573; CHECK-P10:       # %bb.0: # %entry574; CHECK-P10-NEXT:    pli r3, 244140625575; CHECK-P10-NEXT:    rldic r3, r3, 12, 24576; CHECK-P10-NEXT:    lhz r3, 0(r3)577; CHECK-P10-NEXT:    extsb r3, r3578; CHECK-P10-NEXT:    blr579;580; CHECK-PREP10-LABEL: ld_cst_align64_int8_t_uint16_t:581; CHECK-PREP10:       # %bb.0: # %entry582; CHECK-PREP10-NEXT:    lis r3, 3725583; CHECK-PREP10-NEXT:    ori r3, r3, 19025584; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24585; CHECK-PREP10-NEXT:    lhz r3, 0(r3)586; CHECK-PREP10-NEXT:    extsb r3, r3587; CHECK-PREP10-NEXT:    blr588entry:589  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096590  %conv = trunc i16 %0 to i8591  ret i8 %conv592}593 594; Function Attrs: nofree norecurse nounwind uwtable willreturn595define dso_local signext i8 @ld_0_int8_t_uint32_t(i64 %ptr) {596; CHECK-LABEL: ld_0_int8_t_uint32_t:597; CHECK:       # %bb.0: # %entry598; CHECK-NEXT:    lwz r3, 0(r3)599; CHECK-NEXT:    extsb r3, r3600; CHECK-NEXT:    blr601entry:602  %0 = inttoptr i64 %ptr to ptr603  %1 = load atomic i32, ptr %0 monotonic, align 4604  %conv = trunc i32 %1 to i8605  ret i8 %conv606}607 608; Function Attrs: nofree norecurse nounwind uwtable willreturn609define dso_local signext i8 @ld_align16_int8_t_uint32_t(ptr nocapture readonly %ptr) {610; CHECK-LABEL: ld_align16_int8_t_uint32_t:611; CHECK:       # %bb.0: # %entry612; CHECK-NEXT:    lwz r3, 8(r3)613; CHECK-NEXT:    extsb r3, r3614; CHECK-NEXT:    blr615entry:616  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8617  %0 = load atomic i32, ptr %add.ptr monotonic, align 4618  %conv = trunc i32 %0 to i8619  ret i8 %conv620}621 622; Function Attrs: nofree norecurse nounwind uwtable willreturn623define dso_local signext i8 @ld_align32_int8_t_uint32_t(ptr nocapture readonly %ptr) {624; CHECK-P10-LABEL: ld_align32_int8_t_uint32_t:625; CHECK-P10:       # %bb.0: # %entry626; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 0627; CHECK-P10-NEXT:    extsb r3, r3628; CHECK-P10-NEXT:    blr629;630; CHECK-PREP10-LABEL: ld_align32_int8_t_uint32_t:631; CHECK-PREP10:       # %bb.0: # %entry632; CHECK-PREP10-NEXT:    lis r4, 1525633; CHECK-PREP10-NEXT:    ori r4, r4, 56600634; CHECK-PREP10-NEXT:    lwzx r3, r3, r4635; CHECK-PREP10-NEXT:    extsb r3, r3636; CHECK-PREP10-NEXT:    blr637entry:638  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000639  %0 = load atomic i32, ptr %add.ptr monotonic, align 4640  %conv = trunc i32 %0 to i8641  ret i8 %conv642}643 644; Function Attrs: nofree norecurse nounwind uwtable willreturn645define dso_local signext i8 @ld_align64_int8_t_uint32_t(ptr nocapture readonly %ptr) {646; CHECK-P10-LABEL: ld_align64_int8_t_uint32_t:647; CHECK-P10:       # %bb.0: # %entry648; CHECK-P10-NEXT:    pli r4, 244140625649; CHECK-P10-NEXT:    rldic r4, r4, 12, 24650; CHECK-P10-NEXT:    lwzx r3, r3, r4651; CHECK-P10-NEXT:    extsb r3, r3652; CHECK-P10-NEXT:    blr653;654; CHECK-PREP10-LABEL: ld_align64_int8_t_uint32_t:655; CHECK-PREP10:       # %bb.0: # %entry656; CHECK-PREP10-NEXT:    lis r4, 3725657; CHECK-PREP10-NEXT:    ori r4, r4, 19025658; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24659; CHECK-PREP10-NEXT:    lwzx r3, r3, r4660; CHECK-PREP10-NEXT:    extsb r3, r3661; CHECK-PREP10-NEXT:    blr662entry:663  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000664  %0 = load atomic i32, ptr %add.ptr monotonic, align 4665  %conv = trunc i32 %0 to i8666  ret i8 %conv667}668 669; Function Attrs: nofree norecurse nounwind uwtable willreturn670define dso_local signext i8 @ld_reg_int8_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {671; CHECK-LABEL: ld_reg_int8_t_uint32_t:672; CHECK:       # %bb.0: # %entry673; CHECK-NEXT:    lwzx r3, r3, r4674; CHECK-NEXT:    extsb r3, r3675; CHECK-NEXT:    blr676entry:677  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off678  %0 = load atomic i32, ptr %add.ptr monotonic, align 4679  %conv = trunc i32 %0 to i8680  ret i8 %conv681}682 683; Function Attrs: nofree norecurse nounwind uwtable willreturn684define dso_local signext i8 @ld_or_int8_t_uint32_t(i64 %ptr, i8 zeroext %off) {685; CHECK-LABEL: ld_or_int8_t_uint32_t:686; CHECK:       # %bb.0: # %entry687; CHECK-NEXT:    or r3, r4, r3688; CHECK-NEXT:    lwz r3, 0(r3)689; CHECK-NEXT:    extsb r3, r3690; CHECK-NEXT:    blr691entry:692  %conv = zext i8 %off to i64693  %or = or i64 %conv, %ptr694  %0 = inttoptr i64 %or to ptr695  %1 = load atomic i32, ptr %0 monotonic, align 4696  %conv1 = trunc i32 %1 to i8697  ret i8 %conv1698}699 700; Function Attrs: nofree norecurse nounwind uwtable willreturn701define dso_local signext i8 @ld_not_disjoint16_int8_t_uint32_t(i64 %ptr) {702; CHECK-LABEL: ld_not_disjoint16_int8_t_uint32_t:703; CHECK:       # %bb.0: # %entry704; CHECK-NEXT:    ori r3, r3, 6705; CHECK-NEXT:    lwz r3, 0(r3)706; CHECK-NEXT:    extsb r3, r3707; CHECK-NEXT:    blr708entry:709  %or = or i64 %ptr, 6710  %0 = inttoptr i64 %or to ptr711  %1 = load atomic i32, ptr %0 monotonic, align 4712  %conv = trunc i32 %1 to i8713  ret i8 %conv714}715 716; Function Attrs: nofree norecurse nounwind uwtable willreturn717define dso_local signext i8 @ld_disjoint_align16_int8_t_uint32_t(i64 %ptr) {718; CHECK-LABEL: ld_disjoint_align16_int8_t_uint32_t:719; CHECK:       # %bb.0: # %entry720; CHECK-NEXT:    rldicr r3, r3, 0, 51721; CHECK-NEXT:    lwz r3, 24(r3)722; CHECK-NEXT:    extsb r3, r3723; CHECK-NEXT:    blr724entry:725  %and = and i64 %ptr, -4096726  %or = or i64 %and, 24727  %0 = inttoptr i64 %or to ptr728  %1 = load atomic i32, ptr %0 monotonic, align 8729  %conv = trunc i32 %1 to i8730  ret i8 %conv731}732 733; Function Attrs: nofree norecurse nounwind uwtable willreturn734define dso_local signext i8 @ld_not_disjoint32_int8_t_uint32_t(i64 %ptr) {735; CHECK-LABEL: ld_not_disjoint32_int8_t_uint32_t:736; CHECK:       # %bb.0: # %entry737; CHECK-NEXT:    ori r3, r3, 34463738; CHECK-NEXT:    oris r3, r3, 1739; CHECK-NEXT:    lwz r3, 0(r3)740; CHECK-NEXT:    extsb r3, r3741; CHECK-NEXT:    blr742entry:743  %or = or i64 %ptr, 99999744  %0 = inttoptr i64 %or to ptr745  %1 = load atomic i32, ptr %0 monotonic, align 4746  %conv = trunc i32 %1 to i8747  ret i8 %conv748}749 750; Function Attrs: nofree norecurse nounwind uwtable willreturn751define dso_local signext i8 @ld_disjoint_align32_int8_t_uint32_t(i64 %ptr) {752; CHECK-P10-LABEL: ld_disjoint_align32_int8_t_uint32_t:753; CHECK-P10:       # %bb.0: # %entry754; CHECK-P10-NEXT:    lis r4, -15264755; CHECK-P10-NEXT:    and r3, r3, r4756; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 0757; CHECK-P10-NEXT:    extsb r3, r3758; CHECK-P10-NEXT:    blr759;760; CHECK-PREP10-LABEL: ld_disjoint_align32_int8_t_uint32_t:761; CHECK-PREP10:       # %bb.0: # %entry762; CHECK-PREP10-NEXT:    lis r4, -15264763; CHECK-PREP10-NEXT:    and r3, r3, r4764; CHECK-PREP10-NEXT:    lis r4, 15258765; CHECK-PREP10-NEXT:    ori r4, r4, 41712766; CHECK-PREP10-NEXT:    lwzx r3, r3, r4767; CHECK-PREP10-NEXT:    extsb r3, r3768; CHECK-PREP10-NEXT:    blr769entry:770  %and = and i64 %ptr, -1000341504771  %or = or i64 %and, 999990000772  %0 = inttoptr i64 %or to ptr773  %1 = load atomic i32, ptr %0 monotonic, align 16774  %conv = trunc i32 %1 to i8775  ret i8 %conv776}777 778; Function Attrs: nofree norecurse nounwind uwtable willreturn779define dso_local signext i8 @ld_not_disjoint64_int8_t_uint32_t(i64 %ptr) {780; CHECK-P10-LABEL: ld_not_disjoint64_int8_t_uint32_t:781; CHECK-P10:       # %bb.0: # %entry782; CHECK-P10-NEXT:    pli r4, 232783; CHECK-P10-NEXT:    pli r5, 3567587329784; CHECK-P10-NEXT:    rldimi r5, r4, 32, 0785; CHECK-P10-NEXT:    or r3, r3, r5786; CHECK-P10-NEXT:    lwz r3, 0(r3)787; CHECK-P10-NEXT:    extsb r3, r3788; CHECK-P10-NEXT:    blr789;790; CHECK-PREP10-LABEL: ld_not_disjoint64_int8_t_uint32_t:791; CHECK-PREP10:       # %bb.0: # %entry792; CHECK-PREP10-NEXT:    li r4, 29793; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 24794; CHECK-PREP10-NEXT:    oris r4, r4, 54437795; CHECK-PREP10-NEXT:    ori r4, r4, 4097796; CHECK-PREP10-NEXT:    or r3, r3, r4797; CHECK-PREP10-NEXT:    lwz r3, 0(r3)798; CHECK-PREP10-NEXT:    extsb r3, r3799; CHECK-PREP10-NEXT:    blr800entry:801  %or = or i64 %ptr, 1000000000001802  %0 = inttoptr i64 %or to ptr803  %1 = load atomic i32, ptr %0 monotonic, align 4804  %conv = trunc i32 %1 to i8805  ret i8 %conv806}807 808; Function Attrs: nofree norecurse nounwind uwtable willreturn809define dso_local signext i8 @ld_disjoint_align64_int8_t_uint32_t(i64 %ptr) {810; CHECK-P10-LABEL: ld_disjoint_align64_int8_t_uint32_t:811; CHECK-P10:       # %bb.0: # %entry812; CHECK-P10-NEXT:    pli r4, 244140625813; CHECK-P10-NEXT:    rldicr r3, r3, 0, 23814; CHECK-P10-NEXT:    rldic r4, r4, 12, 24815; CHECK-P10-NEXT:    lwzx r3, r3, r4816; CHECK-P10-NEXT:    extsb r3, r3817; CHECK-P10-NEXT:    blr818;819; CHECK-PREP10-LABEL: ld_disjoint_align64_int8_t_uint32_t:820; CHECK-PREP10:       # %bb.0: # %entry821; CHECK-PREP10-NEXT:    lis r4, 3725822; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 23823; CHECK-PREP10-NEXT:    ori r4, r4, 19025824; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24825; CHECK-PREP10-NEXT:    lwzx r3, r3, r4826; CHECK-PREP10-NEXT:    extsb r3, r3827; CHECK-PREP10-NEXT:    blr828entry:829  %and = and i64 %ptr, -1099511627776830  %or = or i64 %and, 1000000000000831  %0 = inttoptr i64 %or to ptr832  %1 = load atomic i32, ptr %0 monotonic, align 4096833  %conv = trunc i32 %1 to i8834  ret i8 %conv835}836 837; Function Attrs: nofree norecurse nounwind uwtable willreturn838define dso_local signext i8 @ld_cst_align16_int8_t_uint32_t() {839; CHECK-LABEL: ld_cst_align16_int8_t_uint32_t:840; CHECK:       # %bb.0: # %entry841; CHECK-NEXT:    lwz r3, 4080(0)842; CHECK-NEXT:    extsb r3, r3843; CHECK-NEXT:    blr844entry:845  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 16846  %conv = trunc i32 %0 to i8847  ret i8 %conv848}849 850; Function Attrs: nofree norecurse nounwind uwtable willreturn851define dso_local signext i8 @ld_cst_align32_int8_t_uint32_t() {852; CHECK-LABEL: ld_cst_align32_int8_t_uint32_t:853; CHECK:       # %bb.0: # %entry854; CHECK-NEXT:    lis r3, 153855; CHECK-NEXT:    lwz r3, -27108(r3)856; CHECK-NEXT:    extsb r3, r3857; CHECK-NEXT:    blr858entry:859  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 4860  %conv = trunc i32 %0 to i8861  ret i8 %conv862}863 864; Function Attrs: nofree norecurse nounwind uwtable willreturn865define dso_local signext i8 @ld_cst_align64_int8_t_uint32_t() {866; CHECK-P10-LABEL: ld_cst_align64_int8_t_uint32_t:867; CHECK-P10:       # %bb.0: # %entry868; CHECK-P10-NEXT:    pli r3, 244140625869; CHECK-P10-NEXT:    rldic r3, r3, 12, 24870; CHECK-P10-NEXT:    lwz r3, 0(r3)871; CHECK-P10-NEXT:    extsb r3, r3872; CHECK-P10-NEXT:    blr873;874; CHECK-PREP10-LABEL: ld_cst_align64_int8_t_uint32_t:875; CHECK-PREP10:       # %bb.0: # %entry876; CHECK-PREP10-NEXT:    lis r3, 3725877; CHECK-PREP10-NEXT:    ori r3, r3, 19025878; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 24879; CHECK-PREP10-NEXT:    lwz r3, 0(r3)880; CHECK-PREP10-NEXT:    extsb r3, r3881; CHECK-PREP10-NEXT:    blr882entry:883  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 4096884  %conv = trunc i32 %0 to i8885  ret i8 %conv886}887 888; Function Attrs: nofree norecurse nounwind uwtable willreturn889define dso_local signext i8 @ld_0_int8_t_uint64_t(i64 %ptr) {890; CHECK-LABEL: ld_0_int8_t_uint64_t:891; CHECK:       # %bb.0: # %entry892; CHECK-NEXT:    ld r3, 0(r3)893; CHECK-NEXT:    extsb r3, r3894; CHECK-NEXT:    blr895entry:896  %0 = inttoptr i64 %ptr to ptr897  %1 = load atomic i64, ptr %0 monotonic, align 8898  %conv = trunc i64 %1 to i8899  ret i8 %conv900}901 902; Function Attrs: nofree norecurse nounwind uwtable willreturn903define dso_local signext i8 @ld_align16_int8_t_uint64_t(ptr nocapture readonly %ptr) {904; CHECK-LABEL: ld_align16_int8_t_uint64_t:905; CHECK:       # %bb.0: # %entry906; CHECK-NEXT:    ld r3, 8(r3)907; CHECK-NEXT:    extsb r3, r3908; CHECK-NEXT:    blr909entry:910  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8911  %0 = load atomic i64, ptr %add.ptr monotonic, align 8912  %conv = trunc i64 %0 to i8913  ret i8 %conv914}915 916; Function Attrs: nofree norecurse nounwind uwtable willreturn917define dso_local signext i8 @ld_align32_int8_t_uint64_t(ptr nocapture readonly %ptr) {918; CHECK-P10-LABEL: ld_align32_int8_t_uint64_t:919; CHECK-P10:       # %bb.0: # %entry920; CHECK-P10-NEXT:    pld r3, 99999000(r3), 0921; CHECK-P10-NEXT:    extsb r3, r3922; CHECK-P10-NEXT:    blr923;924; CHECK-PREP10-LABEL: ld_align32_int8_t_uint64_t:925; CHECK-PREP10:       # %bb.0: # %entry926; CHECK-PREP10-NEXT:    lis r4, 1525927; CHECK-PREP10-NEXT:    ori r4, r4, 56600928; CHECK-PREP10-NEXT:    ldx r3, r3, r4929; CHECK-PREP10-NEXT:    extsb r3, r3930; CHECK-PREP10-NEXT:    blr931entry:932  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000933  %0 = load atomic i64, ptr %add.ptr monotonic, align 8934  %conv = trunc i64 %0 to i8935  ret i8 %conv936}937 938; Function Attrs: nofree norecurse nounwind uwtable willreturn939define dso_local signext i8 @ld_align64_int8_t_uint64_t(ptr nocapture readonly %ptr) {940; CHECK-P10-LABEL: ld_align64_int8_t_uint64_t:941; CHECK-P10:       # %bb.0: # %entry942; CHECK-P10-NEXT:    pli r4, 244140625943; CHECK-P10-NEXT:    rldic r4, r4, 12, 24944; CHECK-P10-NEXT:    ldx r3, r3, r4945; CHECK-P10-NEXT:    extsb r3, r3946; CHECK-P10-NEXT:    blr947;948; CHECK-PREP10-LABEL: ld_align64_int8_t_uint64_t:949; CHECK-PREP10:       # %bb.0: # %entry950; CHECK-PREP10-NEXT:    lis r4, 3725951; CHECK-PREP10-NEXT:    ori r4, r4, 19025952; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 24953; CHECK-PREP10-NEXT:    ldx r3, r3, r4954; CHECK-PREP10-NEXT:    extsb r3, r3955; CHECK-PREP10-NEXT:    blr956entry:957  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000958  %0 = load atomic i64, ptr %add.ptr monotonic, align 8959  %conv = trunc i64 %0 to i8960  ret i8 %conv961}962 963; Function Attrs: nofree norecurse nounwind uwtable willreturn964define dso_local signext i8 @ld_reg_int8_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {965; CHECK-LABEL: ld_reg_int8_t_uint64_t:966; CHECK:       # %bb.0: # %entry967; CHECK-NEXT:    ldx r3, r3, r4968; CHECK-NEXT:    extsb r3, r3969; CHECK-NEXT:    blr970entry:971  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off972  %0 = load atomic i64, ptr %add.ptr monotonic, align 8973  %conv = trunc i64 %0 to i8974  ret i8 %conv975}976 977; Function Attrs: nofree norecurse nounwind uwtable willreturn978define dso_local signext i8 @ld_or_int8_t_uint64_t(i64 %ptr, i8 zeroext %off) {979; CHECK-LABEL: ld_or_int8_t_uint64_t:980; CHECK:       # %bb.0: # %entry981; CHECK-NEXT:    or r3, r4, r3982; CHECK-NEXT:    ld r3, 0(r3)983; CHECK-NEXT:    extsb r3, r3984; CHECK-NEXT:    blr985entry:986  %conv = zext i8 %off to i64987  %or = or i64 %conv, %ptr988  %0 = inttoptr i64 %or to ptr989  %1 = load atomic i64, ptr %0 monotonic, align 8990  %conv1 = trunc i64 %1 to i8991  ret i8 %conv1992}993 994; Function Attrs: nofree norecurse nounwind uwtable willreturn995define dso_local signext i8 @ld_not_disjoint16_int8_t_uint64_t(i64 %ptr) {996; CHECK-LABEL: ld_not_disjoint16_int8_t_uint64_t:997; CHECK:       # %bb.0: # %entry998; CHECK-NEXT:    ori r3, r3, 6999; CHECK-NEXT:    ld r3, 0(r3)1000; CHECK-NEXT:    extsb r3, r31001; CHECK-NEXT:    blr1002entry:1003  %or = or i64 %ptr, 61004  %0 = inttoptr i64 %or to ptr1005  %1 = load atomic i64, ptr %0 monotonic, align 81006  %conv = trunc i64 %1 to i81007  ret i8 %conv1008}1009 1010; Function Attrs: nofree norecurse nounwind uwtable willreturn1011define dso_local signext i8 @ld_disjoint_align16_int8_t_uint64_t(i64 %ptr) {1012; CHECK-LABEL: ld_disjoint_align16_int8_t_uint64_t:1013; CHECK:       # %bb.0: # %entry1014; CHECK-NEXT:    rldicr r3, r3, 0, 511015; CHECK-NEXT:    ld r3, 24(r3)1016; CHECK-NEXT:    extsb r3, r31017; CHECK-NEXT:    blr1018entry:1019  %and = and i64 %ptr, -40961020  %or = or i64 %and, 241021  %0 = inttoptr i64 %or to ptr1022  %1 = load atomic i64, ptr %0 monotonic, align 81023  %conv = trunc i64 %1 to i81024  ret i8 %conv1025}1026 1027; Function Attrs: nofree norecurse nounwind uwtable willreturn1028define dso_local signext i8 @ld_not_disjoint32_int8_t_uint64_t(i64 %ptr) {1029; CHECK-LABEL: ld_not_disjoint32_int8_t_uint64_t:1030; CHECK:       # %bb.0: # %entry1031; CHECK-NEXT:    ori r3, r3, 344631032; CHECK-NEXT:    oris r3, r3, 11033; CHECK-NEXT:    ld r3, 0(r3)1034; CHECK-NEXT:    extsb r3, r31035; CHECK-NEXT:    blr1036entry:1037  %or = or i64 %ptr, 999991038  %0 = inttoptr i64 %or to ptr1039  %1 = load atomic i64, ptr %0 monotonic, align 81040  %conv = trunc i64 %1 to i81041  ret i8 %conv1042}1043 1044; Function Attrs: nofree norecurse nounwind uwtable willreturn1045define dso_local signext i8 @ld_disjoint_align32_int8_t_uint64_t(i64 %ptr) {1046; CHECK-P10-LABEL: ld_disjoint_align32_int8_t_uint64_t:1047; CHECK-P10:       # %bb.0: # %entry1048; CHECK-P10-NEXT:    lis r4, -152641049; CHECK-P10-NEXT:    and r3, r3, r41050; CHECK-P10-NEXT:    pld r3, 999990000(r3), 01051; CHECK-P10-NEXT:    extsb r3, r31052; CHECK-P10-NEXT:    blr1053;1054; CHECK-PREP10-LABEL: ld_disjoint_align32_int8_t_uint64_t:1055; CHECK-PREP10:       # %bb.0: # %entry1056; CHECK-PREP10-NEXT:    lis r4, -152641057; CHECK-PREP10-NEXT:    and r3, r3, r41058; CHECK-PREP10-NEXT:    lis r4, 152581059; CHECK-PREP10-NEXT:    ori r4, r4, 417121060; CHECK-PREP10-NEXT:    ldx r3, r3, r41061; CHECK-PREP10-NEXT:    extsb r3, r31062; CHECK-PREP10-NEXT:    blr1063entry:1064  %and = and i64 %ptr, -10003415041065  %or = or i64 %and, 9999900001066  %0 = inttoptr i64 %or to ptr1067  %1 = load atomic i64, ptr %0 monotonic, align 161068  %conv = trunc i64 %1 to i81069  ret i8 %conv1070}1071 1072; Function Attrs: nofree norecurse nounwind uwtable willreturn1073define dso_local signext i8 @ld_not_disjoint64_int8_t_uint64_t(i64 %ptr) {1074; CHECK-P10-LABEL: ld_not_disjoint64_int8_t_uint64_t:1075; CHECK-P10:       # %bb.0: # %entry1076; CHECK-P10-NEXT:    pli r4, 2321077; CHECK-P10-NEXT:    pli r5, 35675873291078; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01079; CHECK-P10-NEXT:    or r3, r3, r51080; CHECK-P10-NEXT:    ld r3, 0(r3)1081; CHECK-P10-NEXT:    extsb r3, r31082; CHECK-P10-NEXT:    blr1083;1084; CHECK-PREP10-LABEL: ld_not_disjoint64_int8_t_uint64_t:1085; CHECK-PREP10:       # %bb.0: # %entry1086; CHECK-PREP10-NEXT:    li r4, 291087; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241088; CHECK-PREP10-NEXT:    oris r4, r4, 544371089; CHECK-PREP10-NEXT:    ori r4, r4, 40971090; CHECK-PREP10-NEXT:    or r3, r3, r41091; CHECK-PREP10-NEXT:    ld r3, 0(r3)1092; CHECK-PREP10-NEXT:    extsb r3, r31093; CHECK-PREP10-NEXT:    blr1094entry:1095  %or = or i64 %ptr, 10000000000011096  %0 = inttoptr i64 %or to ptr1097  %1 = load atomic i64, ptr %0 monotonic, align 81098  %conv = trunc i64 %1 to i81099  ret i8 %conv1100}1101 1102; Function Attrs: nofree norecurse nounwind uwtable willreturn1103define dso_local signext i8 @ld_disjoint_align64_int8_t_uint64_t(i64 %ptr) {1104; CHECK-P10-LABEL: ld_disjoint_align64_int8_t_uint64_t:1105; CHECK-P10:       # %bb.0: # %entry1106; CHECK-P10-NEXT:    pli r4, 2441406251107; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231108; CHECK-P10-NEXT:    rldic r4, r4, 12, 241109; CHECK-P10-NEXT:    ldx r3, r3, r41110; CHECK-P10-NEXT:    extsb r3, r31111; CHECK-P10-NEXT:    blr1112;1113; CHECK-PREP10-LABEL: ld_disjoint_align64_int8_t_uint64_t:1114; CHECK-PREP10:       # %bb.0: # %entry1115; CHECK-PREP10-NEXT:    lis r4, 37251116; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231117; CHECK-PREP10-NEXT:    ori r4, r4, 190251118; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241119; CHECK-PREP10-NEXT:    ldx r3, r3, r41120; CHECK-PREP10-NEXT:    extsb r3, r31121; CHECK-PREP10-NEXT:    blr1122entry:1123  %and = and i64 %ptr, -10995116277761124  %or = or i64 %and, 10000000000001125  %0 = inttoptr i64 %or to ptr1126  %1 = load atomic i64, ptr %0 monotonic, align 40961127  %conv = trunc i64 %1 to i81128  ret i8 %conv1129}1130 1131; Function Attrs: nofree norecurse nounwind uwtable willreturn1132define dso_local signext i8 @ld_cst_align16_int8_t_uint64_t() {1133; CHECK-LABEL: ld_cst_align16_int8_t_uint64_t:1134; CHECK:       # %bb.0: # %entry1135; CHECK-NEXT:    ld r3, 4080(0)1136; CHECK-NEXT:    extsb r3, r31137; CHECK-NEXT:    blr1138entry:1139  %0 = load atomic i64, ptr inttoptr (i64 4080 to ptr) monotonic, align 161140  %conv = trunc i64 %0 to i81141  ret i8 %conv1142}1143 1144; Function Attrs: nofree norecurse nounwind uwtable willreturn1145define dso_local signext i8 @ld_cst_align32_int8_t_uint64_t() {1146; CHECK-LABEL: ld_cst_align32_int8_t_uint64_t:1147; CHECK:       # %bb.0: # %entry1148; CHECK-NEXT:    lis r3, 1531149; CHECK-NEXT:    ld r3, -27108(r3)1150; CHECK-NEXT:    extsb r3, r31151; CHECK-NEXT:    blr1152entry:1153  %0 = load atomic i64, ptr inttoptr (i64 9999900 to ptr) monotonic, align 81154  %conv = trunc i64 %0 to i81155  ret i8 %conv1156}1157 1158; Function Attrs: nofree norecurse nounwind uwtable willreturn1159define dso_local signext i8 @ld_cst_align64_int8_t_uint64_t() {1160; CHECK-P10-LABEL: ld_cst_align64_int8_t_uint64_t:1161; CHECK-P10:       # %bb.0: # %entry1162; CHECK-P10-NEXT:    pli r3, 2441406251163; CHECK-P10-NEXT:    rldic r3, r3, 12, 241164; CHECK-P10-NEXT:    ld r3, 0(r3)1165; CHECK-P10-NEXT:    extsb r3, r31166; CHECK-P10-NEXT:    blr1167;1168; CHECK-PREP10-LABEL: ld_cst_align64_int8_t_uint64_t:1169; CHECK-PREP10:       # %bb.0: # %entry1170; CHECK-PREP10-NEXT:    lis r3, 37251171; CHECK-PREP10-NEXT:    ori r3, r3, 190251172; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241173; CHECK-PREP10-NEXT:    ld r3, 0(r3)1174; CHECK-PREP10-NEXT:    extsb r3, r31175; CHECK-PREP10-NEXT:    blr1176entry:1177  %0 = load atomic i64, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961178  %conv = trunc i64 %0 to i81179  ret i8 %conv1180}1181 1182; Function Attrs: nofree norecurse nounwind uwtable willreturn1183define dso_local zeroext i8 @ld_0_uint8_t_uint8_t(i64 %ptr) {1184; CHECK-LABEL: ld_0_uint8_t_uint8_t:1185; CHECK:       # %bb.0: # %entry1186; CHECK-NEXT:    lbz r3, 0(r3)1187; CHECK-NEXT:    blr1188entry:1189  %0 = inttoptr i64 %ptr to ptr1190  %1 = load atomic i8, ptr %0 monotonic, align 11191  ret i8 %11192}1193 1194; Function Attrs: nofree norecurse nounwind uwtable willreturn1195define dso_local zeroext i8 @ld_align16_uint8_t_uint8_t(ptr nocapture readonly %ptr) {1196; CHECK-LABEL: ld_align16_uint8_t_uint8_t:1197; CHECK:       # %bb.0: # %entry1198; CHECK-NEXT:    lbz r3, 8(r3)1199; CHECK-NEXT:    blr1200entry:1201  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81202  %0 = load atomic i8, ptr %add.ptr monotonic, align 11203  ret i8 %01204}1205 1206; Function Attrs: nofree norecurse nounwind uwtable willreturn1207define dso_local zeroext i8 @ld_align32_uint8_t_uint8_t(ptr nocapture readonly %ptr) {1208; CHECK-P10-LABEL: ld_align32_uint8_t_uint8_t:1209; CHECK-P10:       # %bb.0: # %entry1210; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 01211; CHECK-P10-NEXT:    clrldi r3, r3, 321212; CHECK-P10-NEXT:    blr1213;1214; CHECK-PREP10-LABEL: ld_align32_uint8_t_uint8_t:1215; CHECK-PREP10:       # %bb.0: # %entry1216; CHECK-PREP10-NEXT:    lis r4, 15251217; CHECK-PREP10-NEXT:    ori r4, r4, 566001218; CHECK-PREP10-NEXT:    lbzx r3, r3, r41219; CHECK-PREP10-NEXT:    blr1220entry:1221  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001222  %0 = load atomic i8, ptr %add.ptr monotonic, align 11223  ret i8 %01224}1225 1226; Function Attrs: nofree norecurse nounwind uwtable willreturn1227define dso_local zeroext i8 @ld_align64_uint8_t_uint8_t(ptr nocapture readonly %ptr) {1228; CHECK-P10-LABEL: ld_align64_uint8_t_uint8_t:1229; CHECK-P10:       # %bb.0: # %entry1230; CHECK-P10-NEXT:    pli r4, 2441406251231; CHECK-P10-NEXT:    rldic r4, r4, 12, 241232; CHECK-P10-NEXT:    lbzx r3, r3, r41233; CHECK-P10-NEXT:    blr1234;1235; CHECK-PREP10-LABEL: ld_align64_uint8_t_uint8_t:1236; CHECK-PREP10:       # %bb.0: # %entry1237; CHECK-PREP10-NEXT:    lis r4, 37251238; CHECK-PREP10-NEXT:    ori r4, r4, 190251239; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241240; CHECK-PREP10-NEXT:    lbzx r3, r3, r41241; CHECK-PREP10-NEXT:    blr1242entry:1243  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001244  %0 = load atomic i8, ptr %add.ptr monotonic, align 11245  ret i8 %01246}1247 1248; Function Attrs: nofree norecurse nounwind uwtable willreturn1249define dso_local zeroext i8 @ld_reg_uint8_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {1250; CHECK-LABEL: ld_reg_uint8_t_uint8_t:1251; CHECK:       # %bb.0: # %entry1252; CHECK-NEXT:    lbzx r3, r3, r41253; CHECK-NEXT:    blr1254entry:1255  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1256  %0 = load atomic i8, ptr %add.ptr monotonic, align 11257  ret i8 %01258}1259 1260; Function Attrs: nofree norecurse nounwind uwtable willreturn1261define dso_local zeroext i8 @ld_or_uint8_t_uint8_t(i64 %ptr, i8 zeroext %off) {1262; CHECK-LABEL: ld_or_uint8_t_uint8_t:1263; CHECK:       # %bb.0: # %entry1264; CHECK-NEXT:    or r3, r4, r31265; CHECK-NEXT:    lbz r3, 0(r3)1266; CHECK-NEXT:    blr1267entry:1268  %conv = zext i8 %off to i641269  %or = or i64 %conv, %ptr1270  %0 = inttoptr i64 %or to ptr1271  %1 = load atomic i8, ptr %0 monotonic, align 11272  ret i8 %11273}1274 1275; Function Attrs: nofree norecurse nounwind uwtable willreturn1276define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint8_t(i64 %ptr) {1277; CHECK-LABEL: ld_not_disjoint16_uint8_t_uint8_t:1278; CHECK:       # %bb.0: # %entry1279; CHECK-NEXT:    ori r3, r3, 61280; CHECK-NEXT:    lbz r3, 0(r3)1281; CHECK-NEXT:    blr1282entry:1283  %or = or i64 %ptr, 61284  %0 = inttoptr i64 %or to ptr1285  %1 = load atomic i8, ptr %0 monotonic, align 11286  ret i8 %11287}1288 1289; Function Attrs: nofree norecurse nounwind uwtable willreturn1290define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint8_t(i64 %ptr) {1291; CHECK-LABEL: ld_disjoint_align16_uint8_t_uint8_t:1292; CHECK:       # %bb.0: # %entry1293; CHECK-NEXT:    rldicr r3, r3, 0, 511294; CHECK-NEXT:    lbz r3, 24(r3)1295; CHECK-NEXT:    blr1296entry:1297  %and = and i64 %ptr, -40961298  %or = or i64 %and, 241299  %0 = inttoptr i64 %or to ptr1300  %1 = load atomic i8, ptr %0 monotonic, align 81301  ret i8 %11302}1303 1304; Function Attrs: nofree norecurse nounwind uwtable willreturn1305define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint8_t(i64 %ptr) {1306; CHECK-LABEL: ld_not_disjoint32_uint8_t_uint8_t:1307; CHECK:       # %bb.0: # %entry1308; CHECK-NEXT:    ori r3, r3, 344631309; CHECK-NEXT:    oris r3, r3, 11310; CHECK-NEXT:    lbz r3, 0(r3)1311; CHECK-NEXT:    blr1312entry:1313  %or = or i64 %ptr, 999991314  %0 = inttoptr i64 %or to ptr1315  %1 = load atomic i8, ptr %0 monotonic, align 11316  ret i8 %11317}1318 1319; Function Attrs: nofree norecurse nounwind uwtable willreturn1320define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint8_t(i64 %ptr) {1321; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_uint8_t:1322; CHECK-P10:       # %bb.0: # %entry1323; CHECK-P10-NEXT:    lis r4, -152641324; CHECK-P10-NEXT:    and r3, r3, r41325; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 01326; CHECK-P10-NEXT:    clrldi r3, r3, 321327; CHECK-P10-NEXT:    blr1328;1329; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_uint8_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:    lbzx r3, r3, r41336; CHECK-PREP10-NEXT:    blr1337entry:1338  %and = and i64 %ptr, -10003415041339  %or = or i64 %and, 9999900001340  %0 = inttoptr i64 %or to ptr1341  %1 = load atomic i8, ptr %0 monotonic, align 161342  ret i8 %11343}1344 1345; Function Attrs: nofree norecurse nounwind uwtable willreturn1346define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint8_t(i64 %ptr) {1347; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_uint8_t:1348; CHECK-P10:       # %bb.0: # %entry1349; CHECK-P10-NEXT:    pli r4, 2321350; CHECK-P10-NEXT:    pli r5, 35675873291351; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01352; CHECK-P10-NEXT:    or r3, r3, r51353; CHECK-P10-NEXT:    lbz r3, 0(r3)1354; CHECK-P10-NEXT:    blr1355;1356; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_uint8_t:1357; CHECK-PREP10:       # %bb.0: # %entry1358; CHECK-PREP10-NEXT:    li r4, 291359; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241360; CHECK-PREP10-NEXT:    oris r4, r4, 544371361; CHECK-PREP10-NEXT:    ori r4, r4, 40971362; CHECK-PREP10-NEXT:    or r3, r3, r41363; CHECK-PREP10-NEXT:    lbz r3, 0(r3)1364; CHECK-PREP10-NEXT:    blr1365entry:1366  %or = or i64 %ptr, 10000000000011367  %0 = inttoptr i64 %or to ptr1368  %1 = load atomic i8, ptr %0 monotonic, align 11369  ret i8 %11370}1371 1372; Function Attrs: nofree norecurse nounwind uwtable willreturn1373define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint8_t(i64 %ptr) {1374; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_uint8_t:1375; CHECK-P10:       # %bb.0: # %entry1376; CHECK-P10-NEXT:    pli r4, 2441406251377; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231378; CHECK-P10-NEXT:    rldic r4, r4, 12, 241379; CHECK-P10-NEXT:    lbzx r3, r3, r41380; CHECK-P10-NEXT:    blr1381;1382; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_uint8_t:1383; CHECK-PREP10:       # %bb.0: # %entry1384; CHECK-PREP10-NEXT:    lis r4, 37251385; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231386; CHECK-PREP10-NEXT:    ori r4, r4, 190251387; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241388; CHECK-PREP10-NEXT:    lbzx r3, r3, r41389; CHECK-PREP10-NEXT:    blr1390entry:1391  %and = and i64 %ptr, -10995116277761392  %or = or i64 %and, 10000000000001393  %0 = inttoptr i64 %or to ptr1394  %1 = load atomic i8, ptr %0 monotonic, align 40961395  ret i8 %11396}1397 1398; Function Attrs: nofree norecurse nounwind uwtable willreturn1399define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint8_t() {1400; CHECK-LABEL: ld_cst_align16_uint8_t_uint8_t:1401; CHECK:       # %bb.0: # %entry1402; CHECK-NEXT:    lbz r3, 4080(0)1403; CHECK-NEXT:    blr1404entry:1405  %0 = load atomic i8, ptr inttoptr (i64 4080 to ptr) monotonic, align 161406  ret i8 %01407}1408 1409; Function Attrs: nofree norecurse nounwind uwtable willreturn1410define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint8_t() {1411; CHECK-LABEL: ld_cst_align32_uint8_t_uint8_t:1412; CHECK:       # %bb.0: # %entry1413; CHECK-NEXT:    lis r3, 1531414; CHECK-NEXT:    lbz r3, -27108(r3)1415; CHECK-NEXT:    blr1416entry:1417  %0 = load atomic i8, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41418  ret i8 %01419}1420 1421; Function Attrs: nofree norecurse nounwind uwtable willreturn1422define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint8_t() {1423; CHECK-P10-LABEL: ld_cst_align64_uint8_t_uint8_t:1424; CHECK-P10:       # %bb.0: # %entry1425; CHECK-P10-NEXT:    pli r3, 2441406251426; CHECK-P10-NEXT:    rldic r3, r3, 12, 241427; CHECK-P10-NEXT:    lbz r3, 0(r3)1428; CHECK-P10-NEXT:    blr1429;1430; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_uint8_t:1431; CHECK-PREP10:       # %bb.0: # %entry1432; CHECK-PREP10-NEXT:    lis r3, 37251433; CHECK-PREP10-NEXT:    ori r3, r3, 190251434; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241435; CHECK-PREP10-NEXT:    lbz r3, 0(r3)1436; CHECK-PREP10-NEXT:    blr1437entry:1438  %0 = load atomic i8, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961439  ret i8 %01440}1441 1442; Function Attrs: nofree norecurse nounwind uwtable willreturn1443define dso_local zeroext i8 @ld_0_uint8_t_uint16_t(i64 %ptr) {1444; CHECK-LABEL: ld_0_uint8_t_uint16_t:1445; CHECK:       # %bb.0: # %entry1446; CHECK-NEXT:    lhz r3, 0(r3)1447; CHECK-NEXT:    clrldi r3, r3, 561448; CHECK-NEXT:    blr1449entry:1450  %0 = inttoptr i64 %ptr to ptr1451  %1 = load atomic i16, ptr %0 monotonic, align 21452  %conv = trunc i16 %1 to i81453  ret i8 %conv1454}1455 1456; Function Attrs: nofree norecurse nounwind uwtable willreturn1457define dso_local zeroext i8 @ld_align16_uint8_t_uint16_t(ptr nocapture readonly %ptr) {1458; CHECK-LABEL: ld_align16_uint8_t_uint16_t:1459; CHECK:       # %bb.0: # %entry1460; CHECK-NEXT:    lhz r3, 8(r3)1461; CHECK-NEXT:    clrldi r3, r3, 561462; CHECK-NEXT:    blr1463entry:1464  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81465  %0 = load atomic i16, ptr %add.ptr monotonic, align 21466  %conv = trunc i16 %0 to i81467  ret i8 %conv1468}1469 1470; Function Attrs: nofree norecurse nounwind uwtable willreturn1471define dso_local zeroext i8 @ld_align32_uint8_t_uint16_t(ptr nocapture readonly %ptr) {1472; CHECK-P10-LABEL: ld_align32_uint8_t_uint16_t:1473; CHECK-P10:       # %bb.0: # %entry1474; CHECK-P10-NEXT:    plhz r3, 99999000(r3), 01475; CHECK-P10-NEXT:    clrldi r3, r3, 561476; CHECK-P10-NEXT:    blr1477;1478; CHECK-PREP10-LABEL: ld_align32_uint8_t_uint16_t:1479; CHECK-PREP10:       # %bb.0: # %entry1480; CHECK-PREP10-NEXT:    lis r4, 15251481; CHECK-PREP10-NEXT:    ori r4, r4, 566001482; CHECK-PREP10-NEXT:    lhzx r3, r3, r41483; CHECK-PREP10-NEXT:    clrldi r3, r3, 561484; CHECK-PREP10-NEXT:    blr1485entry:1486  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001487  %0 = load atomic i16, ptr %add.ptr monotonic, align 21488  %conv = trunc i16 %0 to i81489  ret i8 %conv1490}1491 1492; Function Attrs: nofree norecurse nounwind uwtable willreturn1493define dso_local zeroext i8 @ld_align64_uint8_t_uint16_t(ptr nocapture readonly %ptr) {1494; CHECK-P10-LABEL: ld_align64_uint8_t_uint16_t:1495; CHECK-P10:       # %bb.0: # %entry1496; CHECK-P10-NEXT:    pli r4, 2441406251497; CHECK-P10-NEXT:    rldic r4, r4, 12, 241498; CHECK-P10-NEXT:    lhzx r3, r3, r41499; CHECK-P10-NEXT:    clrldi r3, r3, 561500; CHECK-P10-NEXT:    blr1501;1502; CHECK-PREP10-LABEL: ld_align64_uint8_t_uint16_t:1503; CHECK-PREP10:       # %bb.0: # %entry1504; CHECK-PREP10-NEXT:    lis r4, 37251505; CHECK-PREP10-NEXT:    ori r4, r4, 190251506; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241507; CHECK-PREP10-NEXT:    lhzx r3, r3, r41508; CHECK-PREP10-NEXT:    clrldi r3, r3, 561509; CHECK-PREP10-NEXT:    blr1510entry:1511  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001512  %0 = load atomic i16, ptr %add.ptr monotonic, align 21513  %conv = trunc i16 %0 to i81514  ret i8 %conv1515}1516 1517; Function Attrs: nofree norecurse nounwind uwtable willreturn1518define dso_local zeroext i8 @ld_reg_uint8_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {1519; CHECK-LABEL: ld_reg_uint8_t_uint16_t:1520; CHECK:       # %bb.0: # %entry1521; CHECK-NEXT:    lhzx r3, r3, r41522; CHECK-NEXT:    clrldi r3, r3, 561523; CHECK-NEXT:    blr1524entry:1525  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1526  %0 = load atomic i16, ptr %add.ptr monotonic, align 21527  %conv = trunc i16 %0 to i81528  ret i8 %conv1529}1530 1531; Function Attrs: nofree norecurse nounwind uwtable willreturn1532define dso_local zeroext i8 @ld_or_uint8_t_uint16_t(i64 %ptr, i8 zeroext %off) {1533; CHECK-LABEL: ld_or_uint8_t_uint16_t:1534; CHECK:       # %bb.0: # %entry1535; CHECK-NEXT:    or r3, r4, r31536; CHECK-NEXT:    lhz r3, 0(r3)1537; CHECK-NEXT:    clrldi r3, r3, 561538; CHECK-NEXT:    blr1539entry:1540  %conv = zext i8 %off to i641541  %or = or i64 %conv, %ptr1542  %0 = inttoptr i64 %or to ptr1543  %1 = load atomic i16, ptr %0 monotonic, align 21544  %conv1 = trunc i16 %1 to i81545  ret i8 %conv11546}1547 1548; Function Attrs: nofree norecurse nounwind uwtable willreturn1549define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint16_t(i64 %ptr) {1550; CHECK-LABEL: ld_not_disjoint16_uint8_t_uint16_t:1551; CHECK:       # %bb.0: # %entry1552; CHECK-NEXT:    ori r3, r3, 61553; CHECK-NEXT:    lhz r3, 0(r3)1554; CHECK-NEXT:    clrldi r3, r3, 561555; CHECK-NEXT:    blr1556entry:1557  %or = or i64 %ptr, 61558  %0 = inttoptr i64 %or to ptr1559  %1 = load atomic i16, ptr %0 monotonic, align 21560  %conv = trunc i16 %1 to i81561  ret i8 %conv1562}1563 1564; Function Attrs: nofree norecurse nounwind uwtable willreturn1565define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint16_t(i64 %ptr) {1566; CHECK-LABEL: ld_disjoint_align16_uint8_t_uint16_t:1567; CHECK:       # %bb.0: # %entry1568; CHECK-NEXT:    rldicr r3, r3, 0, 511569; CHECK-NEXT:    lhz r3, 24(r3)1570; CHECK-NEXT:    clrldi r3, r3, 561571; CHECK-NEXT:    blr1572entry:1573  %and = and i64 %ptr, -40961574  %or = or i64 %and, 241575  %0 = inttoptr i64 %or to ptr1576  %1 = load atomic i16, ptr %0 monotonic, align 81577  %conv = trunc i16 %1 to i81578  ret i8 %conv1579}1580 1581; Function Attrs: nofree norecurse nounwind uwtable willreturn1582define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint16_t(i64 %ptr) {1583; CHECK-LABEL: ld_not_disjoint32_uint8_t_uint16_t:1584; CHECK:       # %bb.0: # %entry1585; CHECK-NEXT:    ori r3, r3, 344631586; CHECK-NEXT:    oris r3, r3, 11587; CHECK-NEXT:    lhz r3, 0(r3)1588; CHECK-NEXT:    clrldi r3, r3, 561589; CHECK-NEXT:    blr1590entry:1591  %or = or i64 %ptr, 999991592  %0 = inttoptr i64 %or to ptr1593  %1 = load atomic i16, ptr %0 monotonic, align 21594  %conv = trunc i16 %1 to i81595  ret i8 %conv1596}1597 1598; Function Attrs: nofree norecurse nounwind uwtable willreturn1599define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint16_t(i64 %ptr) {1600; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_uint16_t:1601; CHECK-P10:       # %bb.0: # %entry1602; CHECK-P10-NEXT:    lis r4, -152641603; CHECK-P10-NEXT:    and r3, r3, r41604; CHECK-P10-NEXT:    plhz r3, 999990000(r3), 01605; CHECK-P10-NEXT:    clrldi r3, r3, 561606; CHECK-P10-NEXT:    blr1607;1608; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_uint16_t:1609; CHECK-PREP10:       # %bb.0: # %entry1610; CHECK-PREP10-NEXT:    lis r4, -152641611; CHECK-PREP10-NEXT:    and r3, r3, r41612; CHECK-PREP10-NEXT:    lis r4, 152581613; CHECK-PREP10-NEXT:    ori r4, r4, 417121614; CHECK-PREP10-NEXT:    lhzx r3, r3, r41615; CHECK-PREP10-NEXT:    clrldi r3, r3, 561616; CHECK-PREP10-NEXT:    blr1617entry:1618  %and = and i64 %ptr, -10003415041619  %or = or i64 %and, 9999900001620  %0 = inttoptr i64 %or to ptr1621  %1 = load atomic i16, ptr %0 monotonic, align 161622  %conv = trunc i16 %1 to i81623  ret i8 %conv1624}1625 1626; Function Attrs: nofree norecurse nounwind uwtable willreturn1627define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint16_t(i64 %ptr) {1628; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_uint16_t:1629; CHECK-P10:       # %bb.0: # %entry1630; CHECK-P10-NEXT:    pli r4, 2321631; CHECK-P10-NEXT:    pli r5, 35675873291632; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01633; CHECK-P10-NEXT:    or r3, r3, r51634; CHECK-P10-NEXT:    lhz r3, 0(r3)1635; CHECK-P10-NEXT:    clrldi r3, r3, 561636; CHECK-P10-NEXT:    blr1637;1638; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_uint16_t:1639; CHECK-PREP10:       # %bb.0: # %entry1640; CHECK-PREP10-NEXT:    li r4, 291641; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241642; CHECK-PREP10-NEXT:    oris r4, r4, 544371643; CHECK-PREP10-NEXT:    ori r4, r4, 40971644; CHECK-PREP10-NEXT:    or r3, r3, r41645; CHECK-PREP10-NEXT:    lhz r3, 0(r3)1646; CHECK-PREP10-NEXT:    clrldi r3, r3, 561647; CHECK-PREP10-NEXT:    blr1648entry:1649  %or = or i64 %ptr, 10000000000011650  %0 = inttoptr i64 %or to ptr1651  %1 = load atomic i16, ptr %0 monotonic, align 21652  %conv = trunc i16 %1 to i81653  ret i8 %conv1654}1655 1656; Function Attrs: nofree norecurse nounwind uwtable willreturn1657define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint16_t(i64 %ptr) {1658; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_uint16_t:1659; CHECK-P10:       # %bb.0: # %entry1660; CHECK-P10-NEXT:    pli r4, 2441406251661; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231662; CHECK-P10-NEXT:    rldic r4, r4, 12, 241663; CHECK-P10-NEXT:    lhzx r3, r3, r41664; CHECK-P10-NEXT:    clrldi r3, r3, 561665; CHECK-P10-NEXT:    blr1666;1667; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_uint16_t:1668; CHECK-PREP10:       # %bb.0: # %entry1669; CHECK-PREP10-NEXT:    lis r4, 37251670; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231671; CHECK-PREP10-NEXT:    ori r4, r4, 190251672; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241673; CHECK-PREP10-NEXT:    lhzx r3, r3, r41674; CHECK-PREP10-NEXT:    clrldi r3, r3, 561675; CHECK-PREP10-NEXT:    blr1676entry:1677  %and = and i64 %ptr, -10995116277761678  %or = or i64 %and, 10000000000001679  %0 = inttoptr i64 %or to ptr1680  %1 = load atomic i16, ptr %0 monotonic, align 40961681  %conv = trunc i16 %1 to i81682  ret i8 %conv1683}1684 1685; Function Attrs: nofree norecurse nounwind uwtable willreturn1686define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint16_t() {1687; CHECK-LABEL: ld_cst_align16_uint8_t_uint16_t:1688; CHECK:       # %bb.0: # %entry1689; CHECK-NEXT:    lhz r3, 4080(0)1690; CHECK-NEXT:    clrldi r3, r3, 561691; CHECK-NEXT:    blr1692entry:1693  %0 = load atomic i16, ptr inttoptr (i64 4080 to ptr) monotonic, align 161694  %conv = trunc i16 %0 to i81695  ret i8 %conv1696}1697 1698; Function Attrs: nofree norecurse nounwind uwtable willreturn1699define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint16_t() {1700; CHECK-LABEL: ld_cst_align32_uint8_t_uint16_t:1701; CHECK:       # %bb.0: # %entry1702; CHECK-NEXT:    lis r3, 1531703; CHECK-NEXT:    lhz r3, -27108(r3)1704; CHECK-NEXT:    clrldi r3, r3, 561705; CHECK-NEXT:    blr1706entry:1707  %0 = load atomic i16, ptr inttoptr (i64 9999900 to ptr) monotonic, align 41708  %conv = trunc i16 %0 to i81709  ret i8 %conv1710}1711 1712; Function Attrs: nofree norecurse nounwind uwtable willreturn1713define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint16_t() {1714; CHECK-P10-LABEL: ld_cst_align64_uint8_t_uint16_t:1715; CHECK-P10:       # %bb.0: # %entry1716; CHECK-P10-NEXT:    pli r3, 2441406251717; CHECK-P10-NEXT:    rldic r3, r3, 12, 241718; CHECK-P10-NEXT:    lhz r3, 0(r3)1719; CHECK-P10-NEXT:    clrldi r3, r3, 561720; CHECK-P10-NEXT:    blr1721;1722; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_uint16_t:1723; CHECK-PREP10:       # %bb.0: # %entry1724; CHECK-PREP10-NEXT:    lis r3, 37251725; CHECK-PREP10-NEXT:    ori r3, r3, 190251726; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 241727; CHECK-PREP10-NEXT:    lhz r3, 0(r3)1728; CHECK-PREP10-NEXT:    clrldi r3, r3, 561729; CHECK-PREP10-NEXT:    blr1730entry:1731  %0 = load atomic i16, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40961732  %conv = trunc i16 %0 to i81733  ret i8 %conv1734}1735 1736; Function Attrs: nofree norecurse nounwind uwtable willreturn1737define dso_local zeroext i8 @ld_0_uint8_t_uint32_t(i64 %ptr) {1738; CHECK-LABEL: ld_0_uint8_t_uint32_t:1739; CHECK:       # %bb.0: # %entry1740; CHECK-NEXT:    lwz r3, 0(r3)1741; CHECK-NEXT:    clrldi r3, r3, 561742; CHECK-NEXT:    blr1743entry:1744  %0 = inttoptr i64 %ptr to ptr1745  %1 = load atomic i32, ptr %0 monotonic, align 41746  %conv = trunc i32 %1 to i81747  ret i8 %conv1748}1749 1750; Function Attrs: nofree norecurse nounwind uwtable willreturn1751define dso_local zeroext i8 @ld_align16_uint8_t_uint32_t(ptr nocapture readonly %ptr) {1752; CHECK-LABEL: ld_align16_uint8_t_uint32_t:1753; CHECK:       # %bb.0: # %entry1754; CHECK-NEXT:    lwz r3, 8(r3)1755; CHECK-NEXT:    clrldi r3, r3, 561756; CHECK-NEXT:    blr1757entry:1758  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81759  %0 = load atomic i32, ptr %add.ptr monotonic, align 41760  %conv = trunc i32 %0 to i81761  ret i8 %conv1762}1763 1764; Function Attrs: nofree norecurse nounwind uwtable willreturn1765define dso_local zeroext i8 @ld_align32_uint8_t_uint32_t(ptr nocapture readonly %ptr) {1766; CHECK-P10-LABEL: ld_align32_uint8_t_uint32_t:1767; CHECK-P10:       # %bb.0: # %entry1768; CHECK-P10-NEXT:    plwz r3, 99999000(r3), 01769; CHECK-P10-NEXT:    clrldi r3, r3, 561770; CHECK-P10-NEXT:    blr1771;1772; CHECK-PREP10-LABEL: ld_align32_uint8_t_uint32_t:1773; CHECK-PREP10:       # %bb.0: # %entry1774; CHECK-PREP10-NEXT:    lis r4, 15251775; CHECK-PREP10-NEXT:    ori r4, r4, 566001776; CHECK-PREP10-NEXT:    lwzx r3, r3, r41777; CHECK-PREP10-NEXT:    clrldi r3, r3, 561778; CHECK-PREP10-NEXT:    blr1779entry:1780  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001781  %0 = load atomic i32, ptr %add.ptr monotonic, align 41782  %conv = trunc i32 %0 to i81783  ret i8 %conv1784}1785 1786; Function Attrs: nofree norecurse nounwind uwtable willreturn1787define dso_local zeroext i8 @ld_align64_uint8_t_uint32_t(ptr nocapture readonly %ptr) {1788; CHECK-P10-LABEL: ld_align64_uint8_t_uint32_t:1789; CHECK-P10:       # %bb.0: # %entry1790; CHECK-P10-NEXT:    pli r4, 2441406251791; CHECK-P10-NEXT:    rldic r4, r4, 12, 241792; CHECK-P10-NEXT:    lwzx r3, r3, r41793; CHECK-P10-NEXT:    clrldi r3, r3, 561794; CHECK-P10-NEXT:    blr1795;1796; CHECK-PREP10-LABEL: ld_align64_uint8_t_uint32_t:1797; CHECK-PREP10:       # %bb.0: # %entry1798; CHECK-PREP10-NEXT:    lis r4, 37251799; CHECK-PREP10-NEXT:    ori r4, r4, 190251800; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241801; CHECK-PREP10-NEXT:    lwzx r3, r3, r41802; CHECK-PREP10-NEXT:    clrldi r3, r3, 561803; CHECK-PREP10-NEXT:    blr1804entry:1805  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001806  %0 = load atomic i32, ptr %add.ptr monotonic, align 41807  %conv = trunc i32 %0 to i81808  ret i8 %conv1809}1810 1811; Function Attrs: nofree norecurse nounwind uwtable willreturn1812define dso_local zeroext i8 @ld_reg_uint8_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {1813; CHECK-LABEL: ld_reg_uint8_t_uint32_t:1814; CHECK:       # %bb.0: # %entry1815; CHECK-NEXT:    lwzx r3, r3, r41816; CHECK-NEXT:    clrldi r3, r3, 561817; CHECK-NEXT:    blr1818entry:1819  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1820  %0 = load atomic i32, ptr %add.ptr monotonic, align 41821  %conv = trunc i32 %0 to i81822  ret i8 %conv1823}1824 1825; Function Attrs: nofree norecurse nounwind uwtable willreturn1826define dso_local zeroext i8 @ld_or_uint8_t_uint32_t(i64 %ptr, i8 zeroext %off) {1827; CHECK-LABEL: ld_or_uint8_t_uint32_t:1828; CHECK:       # %bb.0: # %entry1829; CHECK-NEXT:    or r3, r4, r31830; CHECK-NEXT:    lwz r3, 0(r3)1831; CHECK-NEXT:    clrldi r3, r3, 561832; CHECK-NEXT:    blr1833entry:1834  %conv = zext i8 %off to i641835  %or = or i64 %conv, %ptr1836  %0 = inttoptr i64 %or to ptr1837  %1 = load atomic i32, ptr %0 monotonic, align 41838  %conv1 = trunc i32 %1 to i81839  ret i8 %conv11840}1841 1842; Function Attrs: nofree norecurse nounwind uwtable willreturn1843define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint32_t(i64 %ptr) {1844; CHECK-LABEL: ld_not_disjoint16_uint8_t_uint32_t:1845; CHECK:       # %bb.0: # %entry1846; CHECK-NEXT:    ori r3, r3, 61847; CHECK-NEXT:    lwz r3, 0(r3)1848; CHECK-NEXT:    clrldi r3, r3, 561849; CHECK-NEXT:    blr1850entry:1851  %or = or i64 %ptr, 61852  %0 = inttoptr i64 %or to ptr1853  %1 = load atomic i32, ptr %0 monotonic, align 41854  %conv = trunc i32 %1 to i81855  ret i8 %conv1856}1857 1858; Function Attrs: nofree norecurse nounwind uwtable willreturn1859define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint32_t(i64 %ptr) {1860; CHECK-LABEL: ld_disjoint_align16_uint8_t_uint32_t:1861; CHECK:       # %bb.0: # %entry1862; CHECK-NEXT:    rldicr r3, r3, 0, 511863; CHECK-NEXT:    lwz r3, 24(r3)1864; CHECK-NEXT:    clrldi r3, r3, 561865; CHECK-NEXT:    blr1866entry:1867  %and = and i64 %ptr, -40961868  %or = or i64 %and, 241869  %0 = inttoptr i64 %or to ptr1870  %1 = load atomic i32, ptr %0 monotonic, align 81871  %conv = trunc i32 %1 to i81872  ret i8 %conv1873}1874 1875; Function Attrs: nofree norecurse nounwind uwtable willreturn1876define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint32_t(i64 %ptr) {1877; CHECK-LABEL: ld_not_disjoint32_uint8_t_uint32_t:1878; CHECK:       # %bb.0: # %entry1879; CHECK-NEXT:    ori r3, r3, 344631880; CHECK-NEXT:    oris r3, r3, 11881; CHECK-NEXT:    lwz r3, 0(r3)1882; CHECK-NEXT:    clrldi r3, r3, 561883; CHECK-NEXT:    blr1884entry:1885  %or = or i64 %ptr, 999991886  %0 = inttoptr i64 %or to ptr1887  %1 = load atomic i32, ptr %0 monotonic, align 41888  %conv = trunc i32 %1 to i81889  ret i8 %conv1890}1891 1892; Function Attrs: nofree norecurse nounwind uwtable willreturn1893define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint32_t(i64 %ptr) {1894; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_uint32_t:1895; CHECK-P10:       # %bb.0: # %entry1896; CHECK-P10-NEXT:    lis r4, -152641897; CHECK-P10-NEXT:    and r3, r3, r41898; CHECK-P10-NEXT:    plwz r3, 999990000(r3), 01899; CHECK-P10-NEXT:    clrldi r3, r3, 561900; CHECK-P10-NEXT:    blr1901;1902; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_uint32_t:1903; CHECK-PREP10:       # %bb.0: # %entry1904; CHECK-PREP10-NEXT:    lis r4, -152641905; CHECK-PREP10-NEXT:    and r3, r3, r41906; CHECK-PREP10-NEXT:    lis r4, 152581907; CHECK-PREP10-NEXT:    ori r4, r4, 417121908; CHECK-PREP10-NEXT:    lwzx r3, r3, r41909; CHECK-PREP10-NEXT:    clrldi r3, r3, 561910; CHECK-PREP10-NEXT:    blr1911entry:1912  %and = and i64 %ptr, -10003415041913  %or = or i64 %and, 9999900001914  %0 = inttoptr i64 %or to ptr1915  %1 = load atomic i32, ptr %0 monotonic, align 161916  %conv = trunc i32 %1 to i81917  ret i8 %conv1918}1919 1920; Function Attrs: nofree norecurse nounwind uwtable willreturn1921define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint32_t(i64 %ptr) {1922; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_uint32_t:1923; CHECK-P10:       # %bb.0: # %entry1924; CHECK-P10-NEXT:    pli r4, 2321925; CHECK-P10-NEXT:    pli r5, 35675873291926; CHECK-P10-NEXT:    rldimi r5, r4, 32, 01927; CHECK-P10-NEXT:    or r3, r3, r51928; CHECK-P10-NEXT:    lwz r3, 0(r3)1929; CHECK-P10-NEXT:    clrldi r3, r3, 561930; CHECK-P10-NEXT:    blr1931;1932; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_uint32_t:1933; CHECK-PREP10:       # %bb.0: # %entry1934; CHECK-PREP10-NEXT:    li r4, 291935; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 241936; CHECK-PREP10-NEXT:    oris r4, r4, 544371937; CHECK-PREP10-NEXT:    ori r4, r4, 40971938; CHECK-PREP10-NEXT:    or r3, r3, r41939; CHECK-PREP10-NEXT:    lwz r3, 0(r3)1940; CHECK-PREP10-NEXT:    clrldi r3, r3, 561941; CHECK-PREP10-NEXT:    blr1942entry:1943  %or = or i64 %ptr, 10000000000011944  %0 = inttoptr i64 %or to ptr1945  %1 = load atomic i32, ptr %0 monotonic, align 41946  %conv = trunc i32 %1 to i81947  ret i8 %conv1948}1949 1950; Function Attrs: nofree norecurse nounwind uwtable willreturn1951define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint32_t(i64 %ptr) {1952; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_uint32_t:1953; CHECK-P10:       # %bb.0: # %entry1954; CHECK-P10-NEXT:    pli r4, 2441406251955; CHECK-P10-NEXT:    rldicr r3, r3, 0, 231956; CHECK-P10-NEXT:    rldic r4, r4, 12, 241957; CHECK-P10-NEXT:    lwzx r3, r3, r41958; CHECK-P10-NEXT:    clrldi r3, r3, 561959; CHECK-P10-NEXT:    blr1960;1961; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_uint32_t:1962; CHECK-PREP10:       # %bb.0: # %entry1963; CHECK-PREP10-NEXT:    lis r4, 37251964; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 231965; CHECK-PREP10-NEXT:    ori r4, r4, 190251966; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 241967; CHECK-PREP10-NEXT:    lwzx r3, r3, r41968; CHECK-PREP10-NEXT:    clrldi r3, r3, 561969; CHECK-PREP10-NEXT:    blr1970entry:1971  %and = and i64 %ptr, -10995116277761972  %or = or i64 %and, 10000000000001973  %0 = inttoptr i64 %or to ptr1974  %1 = load atomic i32, ptr %0 monotonic, align 40961975  %conv = trunc i32 %1 to i81976  ret i8 %conv1977}1978 1979; Function Attrs: nofree norecurse nounwind uwtable willreturn1980define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint32_t() {1981; CHECK-LABEL: ld_cst_align16_uint8_t_uint32_t:1982; CHECK:       # %bb.0: # %entry1983; CHECK-NEXT:    lwz r3, 4080(0)1984; CHECK-NEXT:    clrldi r3, r3, 561985; CHECK-NEXT:    blr1986entry:1987  %0 = load atomic i32, ptr inttoptr (i64 4080 to ptr) monotonic, align 161988  %conv = trunc i32 %0 to i81989  ret i8 %conv1990}1991 1992; Function Attrs: nofree norecurse nounwind uwtable willreturn1993define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint32_t() {1994; CHECK-LABEL: ld_cst_align32_uint8_t_uint32_t:1995; CHECK:       # %bb.0: # %entry1996; CHECK-NEXT:    lis r3, 1531997; CHECK-NEXT:    lwz r3, -27108(r3)1998; CHECK-NEXT:    clrldi r3, r3, 561999; CHECK-NEXT:    blr2000entry:2001  %0 = load atomic i32, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42002  %conv = trunc i32 %0 to i82003  ret i8 %conv2004}2005 2006; Function Attrs: nofree norecurse nounwind uwtable willreturn2007define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint32_t() {2008; CHECK-P10-LABEL: ld_cst_align64_uint8_t_uint32_t:2009; CHECK-P10:       # %bb.0: # %entry2010; CHECK-P10-NEXT:    pli r3, 2441406252011; CHECK-P10-NEXT:    rldic r3, r3, 12, 242012; CHECK-P10-NEXT:    lwz r3, 0(r3)2013; CHECK-P10-NEXT:    clrldi r3, r3, 562014; CHECK-P10-NEXT:    blr2015;2016; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_uint32_t:2017; CHECK-PREP10:       # %bb.0: # %entry2018; CHECK-PREP10-NEXT:    lis r3, 37252019; CHECK-PREP10-NEXT:    ori r3, r3, 190252020; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242021; CHECK-PREP10-NEXT:    lwz r3, 0(r3)2022; CHECK-PREP10-NEXT:    clrldi r3, r3, 562023; CHECK-PREP10-NEXT:    blr2024entry:2025  %0 = load atomic i32, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962026  %conv = trunc i32 %0 to i82027  ret i8 %conv2028}2029 2030; Function Attrs: nofree norecurse nounwind uwtable willreturn2031define dso_local zeroext i8 @ld_0_uint8_t_uint64_t(i64 %ptr) {2032; CHECK-LABEL: ld_0_uint8_t_uint64_t:2033; CHECK:       # %bb.0: # %entry2034; CHECK-NEXT:    ld r3, 0(r3)2035; CHECK-NEXT:    clrldi r3, r3, 562036; CHECK-NEXT:    blr2037entry:2038  %0 = inttoptr i64 %ptr to ptr2039  %1 = load atomic i64, ptr %0 monotonic, align 82040  %conv = trunc i64 %1 to i82041  ret i8 %conv2042}2043 2044; Function Attrs: nofree norecurse nounwind uwtable willreturn2045define dso_local zeroext i8 @ld_align16_uint8_t_uint64_t(ptr nocapture readonly %ptr) {2046; CHECK-LABEL: ld_align16_uint8_t_uint64_t:2047; CHECK:       # %bb.0: # %entry2048; CHECK-NEXT:    ld r3, 8(r3)2049; CHECK-NEXT:    clrldi r3, r3, 562050; CHECK-NEXT:    blr2051entry:2052  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82053  %0 = load atomic i64, ptr %add.ptr monotonic, align 82054  %conv = trunc i64 %0 to i82055  ret i8 %conv2056}2057 2058; Function Attrs: nofree norecurse nounwind uwtable willreturn2059define dso_local zeroext i8 @ld_align32_uint8_t_uint64_t(ptr nocapture readonly %ptr) {2060; CHECK-P10-LABEL: ld_align32_uint8_t_uint64_t:2061; CHECK-P10:       # %bb.0: # %entry2062; CHECK-P10-NEXT:    pld r3, 99999000(r3), 02063; CHECK-P10-NEXT:    clrldi r3, r3, 562064; CHECK-P10-NEXT:    blr2065;2066; CHECK-PREP10-LABEL: ld_align32_uint8_t_uint64_t:2067; CHECK-PREP10:       # %bb.0: # %entry2068; CHECK-PREP10-NEXT:    lis r4, 15252069; CHECK-PREP10-NEXT:    ori r4, r4, 566002070; CHECK-PREP10-NEXT:    ldx r3, r3, r42071; CHECK-PREP10-NEXT:    clrldi r3, r3, 562072; CHECK-PREP10-NEXT:    blr2073entry:2074  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002075  %0 = load atomic i64, ptr %add.ptr monotonic, align 82076  %conv = trunc i64 %0 to i82077  ret i8 %conv2078}2079 2080; Function Attrs: nofree norecurse nounwind uwtable willreturn2081define dso_local zeroext i8 @ld_align64_uint8_t_uint64_t(ptr nocapture readonly %ptr) {2082; CHECK-P10-LABEL: ld_align64_uint8_t_uint64_t:2083; CHECK-P10:       # %bb.0: # %entry2084; CHECK-P10-NEXT:    pli r4, 2441406252085; CHECK-P10-NEXT:    rldic r4, r4, 12, 242086; CHECK-P10-NEXT:    ldx r3, r3, r42087; CHECK-P10-NEXT:    clrldi r3, r3, 562088; CHECK-P10-NEXT:    blr2089;2090; CHECK-PREP10-LABEL: ld_align64_uint8_t_uint64_t:2091; CHECK-PREP10:       # %bb.0: # %entry2092; CHECK-PREP10-NEXT:    lis r4, 37252093; CHECK-PREP10-NEXT:    ori r4, r4, 190252094; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242095; CHECK-PREP10-NEXT:    ldx r3, r3, r42096; CHECK-PREP10-NEXT:    clrldi r3, r3, 562097; CHECK-PREP10-NEXT:    blr2098entry:2099  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002100  %0 = load atomic i64, ptr %add.ptr monotonic, align 82101  %conv = trunc i64 %0 to i82102  ret i8 %conv2103}2104 2105; Function Attrs: nofree norecurse nounwind uwtable willreturn2106define dso_local zeroext i8 @ld_reg_uint8_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {2107; CHECK-LABEL: ld_reg_uint8_t_uint64_t:2108; CHECK:       # %bb.0: # %entry2109; CHECK-NEXT:    ldx r3, r3, r42110; CHECK-NEXT:    clrldi r3, r3, 562111; CHECK-NEXT:    blr2112entry:2113  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2114  %0 = load atomic i64, ptr %add.ptr monotonic, align 82115  %conv = trunc i64 %0 to i82116  ret i8 %conv2117}2118 2119; Function Attrs: nofree norecurse nounwind uwtable willreturn2120define dso_local zeroext i8 @ld_or_uint8_t_uint64_t(i64 %ptr, i8 zeroext %off) {2121; CHECK-LABEL: ld_or_uint8_t_uint64_t:2122; CHECK:       # %bb.0: # %entry2123; CHECK-NEXT:    or r3, r4, r32124; CHECK-NEXT:    ld r3, 0(r3)2125; CHECK-NEXT:    clrldi r3, r3, 562126; CHECK-NEXT:    blr2127entry:2128  %conv = zext i8 %off to i642129  %or = or i64 %conv, %ptr2130  %0 = inttoptr i64 %or to ptr2131  %1 = load atomic i64, ptr %0 monotonic, align 82132  %conv1 = trunc i64 %1 to i82133  ret i8 %conv12134}2135 2136; Function Attrs: nofree norecurse nounwind uwtable willreturn2137define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint64_t(i64 %ptr) {2138; CHECK-LABEL: ld_not_disjoint16_uint8_t_uint64_t:2139; CHECK:       # %bb.0: # %entry2140; CHECK-NEXT:    ori r3, r3, 62141; CHECK-NEXT:    ld r3, 0(r3)2142; CHECK-NEXT:    clrldi r3, r3, 562143; CHECK-NEXT:    blr2144entry:2145  %or = or i64 %ptr, 62146  %0 = inttoptr i64 %or to ptr2147  %1 = load atomic i64, ptr %0 monotonic, align 82148  %conv = trunc i64 %1 to i82149  ret i8 %conv2150}2151 2152; Function Attrs: nofree norecurse nounwind uwtable willreturn2153define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint64_t(i64 %ptr) {2154; CHECK-LABEL: ld_disjoint_align16_uint8_t_uint64_t:2155; CHECK:       # %bb.0: # %entry2156; CHECK-NEXT:    rldicr r3, r3, 0, 512157; CHECK-NEXT:    ld r3, 24(r3)2158; CHECK-NEXT:    clrldi r3, r3, 562159; CHECK-NEXT:    blr2160entry:2161  %and = and i64 %ptr, -40962162  %or = or i64 %and, 242163  %0 = inttoptr i64 %or to ptr2164  %1 = load atomic i64, ptr %0 monotonic, align 82165  %conv = trunc i64 %1 to i82166  ret i8 %conv2167}2168 2169; Function Attrs: nofree norecurse nounwind uwtable willreturn2170define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint64_t(i64 %ptr) {2171; CHECK-LABEL: ld_not_disjoint32_uint8_t_uint64_t:2172; CHECK:       # %bb.0: # %entry2173; CHECK-NEXT:    ori r3, r3, 344632174; CHECK-NEXT:    oris r3, r3, 12175; CHECK-NEXT:    ld r3, 0(r3)2176; CHECK-NEXT:    clrldi r3, r3, 562177; CHECK-NEXT:    blr2178entry:2179  %or = or i64 %ptr, 999992180  %0 = inttoptr i64 %or to ptr2181  %1 = load atomic i64, ptr %0 monotonic, align 82182  %conv = trunc i64 %1 to i82183  ret i8 %conv2184}2185 2186; Function Attrs: nofree norecurse nounwind uwtable willreturn2187define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint64_t(i64 %ptr) {2188; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_uint64_t:2189; CHECK-P10:       # %bb.0: # %entry2190; CHECK-P10-NEXT:    lis r4, -152642191; CHECK-P10-NEXT:    and r3, r3, r42192; CHECK-P10-NEXT:    pld r3, 999990000(r3), 02193; CHECK-P10-NEXT:    clrldi r3, r3, 562194; CHECK-P10-NEXT:    blr2195;2196; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_uint64_t:2197; CHECK-PREP10:       # %bb.0: # %entry2198; CHECK-PREP10-NEXT:    lis r4, -152642199; CHECK-PREP10-NEXT:    and r3, r3, r42200; CHECK-PREP10-NEXT:    lis r4, 152582201; CHECK-PREP10-NEXT:    ori r4, r4, 417122202; CHECK-PREP10-NEXT:    ldx r3, r3, r42203; CHECK-PREP10-NEXT:    clrldi r3, r3, 562204; CHECK-PREP10-NEXT:    blr2205entry:2206  %and = and i64 %ptr, -10003415042207  %or = or i64 %and, 9999900002208  %0 = inttoptr i64 %or to ptr2209  %1 = load atomic i64, ptr %0 monotonic, align 162210  %conv = trunc i64 %1 to i82211  ret i8 %conv2212}2213 2214; Function Attrs: nofree norecurse nounwind uwtable willreturn2215define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint64_t(i64 %ptr) {2216; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_uint64_t:2217; CHECK-P10:       # %bb.0: # %entry2218; CHECK-P10-NEXT:    pli r4, 2322219; CHECK-P10-NEXT:    pli r5, 35675873292220; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02221; CHECK-P10-NEXT:    or r3, r3, r52222; CHECK-P10-NEXT:    ld r3, 0(r3)2223; CHECK-P10-NEXT:    clrldi r3, r3, 562224; CHECK-P10-NEXT:    blr2225;2226; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_uint64_t:2227; CHECK-PREP10:       # %bb.0: # %entry2228; CHECK-PREP10-NEXT:    li r4, 292229; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242230; CHECK-PREP10-NEXT:    oris r4, r4, 544372231; CHECK-PREP10-NEXT:    ori r4, r4, 40972232; CHECK-PREP10-NEXT:    or r3, r3, r42233; CHECK-PREP10-NEXT:    ld r3, 0(r3)2234; CHECK-PREP10-NEXT:    clrldi r3, r3, 562235; CHECK-PREP10-NEXT:    blr2236entry:2237  %or = or i64 %ptr, 10000000000012238  %0 = inttoptr i64 %or to ptr2239  %1 = load atomic i64, ptr %0 monotonic, align 82240  %conv = trunc i64 %1 to i82241  ret i8 %conv2242}2243 2244; Function Attrs: nofree norecurse nounwind uwtable willreturn2245define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint64_t(i64 %ptr) {2246; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_uint64_t:2247; CHECK-P10:       # %bb.0: # %entry2248; CHECK-P10-NEXT:    pli r4, 2441406252249; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232250; CHECK-P10-NEXT:    rldic r4, r4, 12, 242251; CHECK-P10-NEXT:    ldx r3, r3, r42252; CHECK-P10-NEXT:    clrldi r3, r3, 562253; CHECK-P10-NEXT:    blr2254;2255; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_uint64_t:2256; CHECK-PREP10:       # %bb.0: # %entry2257; CHECK-PREP10-NEXT:    lis r4, 37252258; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232259; CHECK-PREP10-NEXT:    ori r4, r4, 190252260; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242261; CHECK-PREP10-NEXT:    ldx r3, r3, r42262; CHECK-PREP10-NEXT:    clrldi r3, r3, 562263; CHECK-PREP10-NEXT:    blr2264entry:2265  %and = and i64 %ptr, -10995116277762266  %or = or i64 %and, 10000000000002267  %0 = inttoptr i64 %or to ptr2268  %1 = load atomic i64, ptr %0 monotonic, align 40962269  %conv = trunc i64 %1 to i82270  ret i8 %conv2271}2272 2273; Function Attrs: nofree norecurse nounwind uwtable willreturn2274define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint64_t() {2275; CHECK-LABEL: ld_cst_align16_uint8_t_uint64_t:2276; CHECK:       # %bb.0: # %entry2277; CHECK-NEXT:    ld r3, 4080(0)2278; CHECK-NEXT:    clrldi r3, r3, 562279; CHECK-NEXT:    blr2280entry:2281  %0 = load atomic i64, ptr inttoptr (i64 4080 to ptr) monotonic, align 162282  %conv = trunc i64 %0 to i82283  ret i8 %conv2284}2285 2286; Function Attrs: nofree norecurse nounwind uwtable willreturn2287define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint64_t() {2288; CHECK-LABEL: ld_cst_align32_uint8_t_uint64_t:2289; CHECK:       # %bb.0: # %entry2290; CHECK-NEXT:    lis r3, 1532291; CHECK-NEXT:    ld r3, -27108(r3)2292; CHECK-NEXT:    clrldi r3, r3, 562293; CHECK-NEXT:    blr2294entry:2295  %0 = load atomic i64, ptr inttoptr (i64 9999900 to ptr) monotonic, align 82296  %conv = trunc i64 %0 to i82297  ret i8 %conv2298}2299 2300; Function Attrs: nofree norecurse nounwind uwtable willreturn2301define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint64_t() {2302; CHECK-P10-LABEL: ld_cst_align64_uint8_t_uint64_t:2303; CHECK-P10:       # %bb.0: # %entry2304; CHECK-P10-NEXT:    pli r3, 2441406252305; CHECK-P10-NEXT:    rldic r3, r3, 12, 242306; CHECK-P10-NEXT:    ld r3, 0(r3)2307; CHECK-P10-NEXT:    clrldi r3, r3, 562308; CHECK-P10-NEXT:    blr2309;2310; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_uint64_t:2311; CHECK-PREP10:       # %bb.0: # %entry2312; CHECK-PREP10-NEXT:    lis r3, 37252313; CHECK-PREP10-NEXT:    ori r3, r3, 190252314; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242315; CHECK-PREP10-NEXT:    ld r3, 0(r3)2316; CHECK-PREP10-NEXT:    clrldi r3, r3, 562317; CHECK-PREP10-NEXT:    blr2318entry:2319  %0 = load atomic i64, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962320  %conv = trunc i64 %0 to i82321  ret i8 %conv2322}2323 2324; Function Attrs: nofree norecurse nounwind uwtable willreturn2325define dso_local void @st_0_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2326; CHECK-LABEL: st_0_uint8_t_uint8_t:2327; CHECK:       # %bb.0: # %entry2328; CHECK-NEXT:    stb r4, 0(r3)2329; CHECK-NEXT:    blr2330entry:2331  %0 = inttoptr i64 %ptr to ptr2332  store atomic i8 %str, ptr %0 monotonic, align 12333  ret void2334}2335 2336; Function Attrs: nofree norecurse nounwind uwtable willreturn2337define dso_local void @st_align16_uint8_t_uint8_t(ptr nocapture %ptr, i8 zeroext %str) {2338; CHECK-LABEL: st_align16_uint8_t_uint8_t:2339; CHECK:       # %bb.0: # %entry2340; CHECK-NEXT:    stb r4, 8(r3)2341; CHECK-NEXT:    blr2342entry:2343  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82344  store atomic i8 %str, ptr %add.ptr monotonic, align 12345  ret void2346}2347 2348; Function Attrs: nofree norecurse nounwind uwtable willreturn2349define dso_local void @st_align32_uint8_t_uint8_t(ptr nocapture %ptr, i8 zeroext %str) {2350; CHECK-P10-LABEL: st_align32_uint8_t_uint8_t:2351; CHECK-P10:       # %bb.0: # %entry2352; CHECK-P10-NEXT:    pstb r4, 99999000(r3), 02353; CHECK-P10-NEXT:    blr2354;2355; CHECK-PREP10-LABEL: st_align32_uint8_t_uint8_t:2356; CHECK-PREP10:       # %bb.0: # %entry2357; CHECK-PREP10-NEXT:    lis r5, 15252358; CHECK-PREP10-NEXT:    ori r5, r5, 566002359; CHECK-PREP10-NEXT:    stbx r4, r3, r52360; CHECK-PREP10-NEXT:    blr2361entry:2362  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002363  store atomic i8 %str, ptr %add.ptr monotonic, align 12364  ret void2365}2366 2367; Function Attrs: nofree norecurse nounwind uwtable willreturn2368define dso_local void @st_align64_uint8_t_uint8_t(ptr nocapture %ptr, i8 zeroext %str) {2369; CHECK-P10-LABEL: st_align64_uint8_t_uint8_t:2370; CHECK-P10:       # %bb.0: # %entry2371; CHECK-P10-NEXT:    pli r5, 2441406252372; CHECK-P10-NEXT:    rldic r5, r5, 12, 242373; CHECK-P10-NEXT:    stbx r4, r3, r52374; CHECK-P10-NEXT:    blr2375;2376; CHECK-PREP10-LABEL: st_align64_uint8_t_uint8_t:2377; CHECK-PREP10:       # %bb.0: # %entry2378; CHECK-PREP10-NEXT:    lis r5, 37252379; CHECK-PREP10-NEXT:    ori r5, r5, 190252380; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 242381; CHECK-PREP10-NEXT:    stbx r4, r3, r52382; CHECK-PREP10-NEXT:    blr2383entry:2384  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002385  store atomic i8 %str, ptr %add.ptr monotonic, align 12386  ret void2387}2388 2389; Function Attrs: nofree norecurse nounwind uwtable willreturn2390define dso_local void @st_reg_uint8_t_uint8_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {2391; CHECK-LABEL: st_reg_uint8_t_uint8_t:2392; CHECK:       # %bb.0: # %entry2393; CHECK-NEXT:    stbx r5, r3, r42394; CHECK-NEXT:    blr2395entry:2396  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2397  store atomic i8 %str, ptr %add.ptr monotonic, align 12398  ret void2399}2400 2401; Function Attrs: nofree norecurse nounwind uwtable willreturn2402define dso_local void @st_or1_uint8_t_uint8_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {2403; CHECK-LABEL: st_or1_uint8_t_uint8_t:2404; CHECK:       # %bb.0: # %entry2405; CHECK-NEXT:    or r3, r4, r32406; CHECK-NEXT:    stb r5, 0(r3)2407; CHECK-NEXT:    blr2408entry:2409  %conv = zext i8 %off to i642410  %or = or i64 %conv, %ptr2411  %0 = inttoptr i64 %or to ptr2412  store atomic i8 %str, ptr %0 monotonic, align 12413  ret void2414}2415 2416; Function Attrs: nofree norecurse nounwind uwtable willreturn2417define dso_local void @st_not_disjoint16_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2418; CHECK-LABEL: st_not_disjoint16_uint8_t_uint8_t:2419; CHECK:       # %bb.0: # %entry2420; CHECK-NEXT:    ori r3, r3, 62421; CHECK-NEXT:    stb r4, 0(r3)2422; CHECK-NEXT:    blr2423entry:2424  %or = or i64 %ptr, 62425  %0 = inttoptr i64 %or to ptr2426  store atomic i8 %str, ptr %0 monotonic, align 12427  ret void2428}2429 2430; Function Attrs: nofree norecurse nounwind uwtable willreturn2431define dso_local void @st_disjoint_align16_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2432; CHECK-LABEL: st_disjoint_align16_uint8_t_uint8_t:2433; CHECK:       # %bb.0: # %entry2434; CHECK-NEXT:    rldicr r3, r3, 0, 512435; CHECK-NEXT:    stb r4, 24(r3)2436; CHECK-NEXT:    blr2437entry:2438  %and = and i64 %ptr, -40962439  %or = or i64 %and, 242440  %0 = inttoptr i64 %or to ptr2441  store atomic i8 %str, ptr %0 monotonic, align 82442  ret void2443}2444 2445; Function Attrs: nofree norecurse nounwind uwtable willreturn2446define dso_local void @st_not_disjoint32_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2447; CHECK-LABEL: st_not_disjoint32_uint8_t_uint8_t:2448; CHECK:       # %bb.0: # %entry2449; CHECK-NEXT:    ori r3, r3, 344632450; CHECK-NEXT:    oris r3, r3, 12451; CHECK-NEXT:    stb r4, 0(r3)2452; CHECK-NEXT:    blr2453entry:2454  %or = or i64 %ptr, 999992455  %0 = inttoptr i64 %or to ptr2456  store atomic i8 %str, ptr %0 monotonic, align 12457  ret void2458}2459 2460; Function Attrs: nofree norecurse nounwind uwtable willreturn2461define dso_local void @st_disjoint_align32_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2462; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint8_t:2463; CHECK-P10:       # %bb.0: # %entry2464; CHECK-P10-NEXT:    lis r5, -152642465; CHECK-P10-NEXT:    and r3, r3, r52466; CHECK-P10-NEXT:    pstb r4, 999990000(r3), 02467; CHECK-P10-NEXT:    blr2468;2469; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint8_t:2470; CHECK-PREP10:       # %bb.0: # %entry2471; CHECK-PREP10-NEXT:    lis r5, -152642472; CHECK-PREP10-NEXT:    and r3, r3, r52473; CHECK-PREP10-NEXT:    lis r5, 152582474; CHECK-PREP10-NEXT:    ori r5, r5, 417122475; CHECK-PREP10-NEXT:    stbx r4, r3, r52476; CHECK-PREP10-NEXT:    blr2477entry:2478  %and = and i64 %ptr, -10003415042479  %or = or i64 %and, 9999900002480  %0 = inttoptr i64 %or to ptr2481  store atomic i8 %str, ptr %0 monotonic, align 162482  ret void2483}2484 2485; Function Attrs: nofree norecurse nounwind uwtable willreturn2486define dso_local void @st_not_disjoint64_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2487; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint8_t:2488; CHECK-P10:       # %bb.0: # %entry2489; CHECK-P10-NEXT:    pli r5, 2322490; CHECK-P10-NEXT:    pli r6, 35675873292491; CHECK-P10-NEXT:    rldimi r6, r5, 32, 02492; CHECK-P10-NEXT:    or r3, r3, r62493; CHECK-P10-NEXT:    stb r4, 0(r3)2494; CHECK-P10-NEXT:    blr2495;2496; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint8_t:2497; CHECK-PREP10:       # %bb.0: # %entry2498; CHECK-PREP10-NEXT:    li r5, 292499; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 242500; CHECK-PREP10-NEXT:    oris r5, r5, 544372501; CHECK-PREP10-NEXT:    ori r5, r5, 40972502; CHECK-PREP10-NEXT:    or r3, r3, r52503; CHECK-PREP10-NEXT:    stb r4, 0(r3)2504; CHECK-PREP10-NEXT:    blr2505entry:2506  %or = or i64 %ptr, 10000000000012507  %0 = inttoptr i64 %or to ptr2508  store atomic i8 %str, ptr %0 monotonic, align 12509  ret void2510}2511 2512; Function Attrs: nofree norecurse nounwind uwtable willreturn2513define dso_local void @st_disjoint_align64_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {2514; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint8_t:2515; CHECK-P10:       # %bb.0: # %entry2516; CHECK-P10-NEXT:    pli r5, 2441406252517; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232518; CHECK-P10-NEXT:    rldic r5, r5, 12, 242519; CHECK-P10-NEXT:    stbx r4, r3, r52520; CHECK-P10-NEXT:    blr2521;2522; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint8_t:2523; CHECK-PREP10:       # %bb.0: # %entry2524; CHECK-PREP10-NEXT:    lis r5, 37252525; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232526; CHECK-PREP10-NEXT:    ori r5, r5, 190252527; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 242528; CHECK-PREP10-NEXT:    stbx r4, r3, r52529; CHECK-PREP10-NEXT:    blr2530entry:2531  %and = and i64 %ptr, -10995116277762532  %or = or i64 %and, 10000000000002533  %0 = inttoptr i64 %or to ptr2534  store atomic i8 %str, ptr %0 monotonic, align 40962535  ret void2536}2537 2538; Function Attrs: nofree norecurse nounwind uwtable willreturn2539define dso_local void @st_cst_align16_uint8_t_uint8_t(i8 zeroext %str) {2540; CHECK-LABEL: st_cst_align16_uint8_t_uint8_t:2541; CHECK:       # %bb.0: # %entry2542; CHECK-NEXT:    stb r3, 4080(0)2543; CHECK-NEXT:    blr2544entry:2545  store atomic i8 %str, ptr inttoptr (i64 4080 to ptr) monotonic, align 162546  ret void2547}2548 2549; Function Attrs: nofree norecurse nounwind uwtable willreturn2550define dso_local void @st_cst_align32_uint8_t_uint8_t(i8 zeroext %str) {2551; CHECK-LABEL: st_cst_align32_uint8_t_uint8_t:2552; CHECK:       # %bb.0: # %entry2553; CHECK-NEXT:    lis r4, 1532554; CHECK-NEXT:    stb r3, -27108(r4)2555; CHECK-NEXT:    blr2556entry:2557  store atomic i8 %str, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42558  ret void2559}2560 2561; Function Attrs: nofree norecurse nounwind uwtable willreturn2562define dso_local void @st_cst_align64_uint8_t_uint8_t(i8 zeroext %str) {2563; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint8_t:2564; CHECK-P10:       # %bb.0: # %entry2565; CHECK-P10-NEXT:    pli r4, 2441406252566; CHECK-P10-NEXT:    rldic r4, r4, 12, 242567; CHECK-P10-NEXT:    stb r3, 0(r4)2568; CHECK-P10-NEXT:    blr2569;2570; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint8_t:2571; CHECK-PREP10:       # %bb.0: # %entry2572; CHECK-PREP10-NEXT:    lis r4, 37252573; CHECK-PREP10-NEXT:    ori r4, r4, 190252574; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242575; CHECK-PREP10-NEXT:    stb r3, 0(r4)2576; CHECK-PREP10-NEXT:    blr2577entry:2578  store atomic i8 %str, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962579  ret void2580}2581 2582; Function Attrs: nofree norecurse nounwind uwtable willreturn2583define dso_local void @st_0_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2584; CHECK-LABEL: st_0_uint8_t_uint16_t:2585; CHECK:       # %bb.0: # %entry2586; CHECK-NEXT:    sth r4, 0(r3)2587; CHECK-NEXT:    blr2588entry:2589  %0 = inttoptr i64 %ptr to ptr2590  %conv = zext i8 %str to i162591  store atomic i16 %conv, ptr %0 monotonic, align 22592  ret void2593}2594 2595; Function Attrs: nofree norecurse nounwind uwtable willreturn2596define dso_local void @st_align16_uint8_t_uint16_t(ptr nocapture %ptr, i8 zeroext %str) {2597; CHECK-LABEL: st_align16_uint8_t_uint16_t:2598; CHECK:       # %bb.0: # %entry2599; CHECK-NEXT:    sth r4, 8(r3)2600; CHECK-NEXT:    blr2601entry:2602  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82603  %conv = zext i8 %str to i162604  store atomic i16 %conv, ptr %add.ptr monotonic, align 22605  ret void2606}2607 2608; Function Attrs: nofree norecurse nounwind uwtable willreturn2609define dso_local void @st_align32_uint8_t_uint16_t(ptr nocapture %ptr, i8 zeroext %str) {2610; CHECK-P10-LABEL: st_align32_uint8_t_uint16_t:2611; CHECK-P10:       # %bb.0: # %entry2612; CHECK-P10-NEXT:    psth r4, 99999000(r3), 02613; CHECK-P10-NEXT:    blr2614;2615; CHECK-PREP10-LABEL: st_align32_uint8_t_uint16_t:2616; CHECK-PREP10:       # %bb.0: # %entry2617; CHECK-PREP10-NEXT:    lis r5, 15252618; CHECK-PREP10-NEXT:    ori r5, r5, 566002619; CHECK-PREP10-NEXT:    sthx r4, r3, r52620; CHECK-PREP10-NEXT:    blr2621entry:2622  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002623  %conv = zext i8 %str to i162624  store atomic i16 %conv, ptr %add.ptr monotonic, align 22625  ret void2626}2627 2628; Function Attrs: nofree norecurse nounwind uwtable willreturn2629define dso_local void @st_align64_uint8_t_uint16_t(ptr nocapture %ptr, i8 zeroext %str) {2630; CHECK-P10-LABEL: st_align64_uint8_t_uint16_t:2631; CHECK-P10:       # %bb.0: # %entry2632; CHECK-P10-NEXT:    pli r5, 2441406252633; CHECK-P10-NEXT:    rldic r5, r5, 12, 242634; CHECK-P10-NEXT:    sthx r4, r3, r52635; CHECK-P10-NEXT:    blr2636;2637; CHECK-PREP10-LABEL: st_align64_uint8_t_uint16_t:2638; CHECK-PREP10:       # %bb.0: # %entry2639; CHECK-PREP10-NEXT:    lis r5, 37252640; CHECK-PREP10-NEXT:    ori r5, r5, 190252641; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 242642; CHECK-PREP10-NEXT:    sthx r4, r3, r52643; CHECK-PREP10-NEXT:    blr2644entry:2645  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002646  %conv = zext i8 %str to i162647  store atomic i16 %conv, ptr %add.ptr monotonic, align 22648  ret void2649}2650 2651; Function Attrs: nofree norecurse nounwind uwtable willreturn2652define dso_local void @st_reg_uint8_t_uint16_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {2653; CHECK-LABEL: st_reg_uint8_t_uint16_t:2654; CHECK:       # %bb.0: # %entry2655; CHECK-NEXT:    sthx r5, r3, r42656; CHECK-NEXT:    blr2657entry:2658  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2659  %conv = zext i8 %str to i162660  store atomic i16 %conv, ptr %add.ptr monotonic, align 22661  ret void2662}2663 2664; Function Attrs: nofree norecurse nounwind uwtable willreturn2665define dso_local void @st_or1_uint8_t_uint16_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {2666; CHECK-LABEL: st_or1_uint8_t_uint16_t:2667; CHECK:       # %bb.0: # %entry2668; CHECK-NEXT:    or r3, r4, r32669; CHECK-NEXT:    sth r5, 0(r3)2670; CHECK-NEXT:    blr2671entry:2672  %conv = zext i8 %off to i642673  %or = or i64 %conv, %ptr2674  %0 = inttoptr i64 %or to ptr2675  %conv1 = zext i8 %str to i162676  store atomic i16 %conv1, ptr %0 monotonic, align 22677  ret void2678}2679 2680; Function Attrs: nofree norecurse nounwind uwtable willreturn2681define dso_local void @st_not_disjoint16_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2682; CHECK-LABEL: st_not_disjoint16_uint8_t_uint16_t:2683; CHECK:       # %bb.0: # %entry2684; CHECK-NEXT:    ori r3, r3, 62685; CHECK-NEXT:    sth r4, 0(r3)2686; CHECK-NEXT:    blr2687entry:2688  %or = or i64 %ptr, 62689  %0 = inttoptr i64 %or to ptr2690  %conv = zext i8 %str to i162691  store atomic i16 %conv, ptr %0 monotonic, align 22692  ret void2693}2694 2695; Function Attrs: nofree norecurse nounwind uwtable willreturn2696define dso_local void @st_disjoint_align16_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2697; CHECK-LABEL: st_disjoint_align16_uint8_t_uint16_t:2698; CHECK:       # %bb.0: # %entry2699; CHECK-NEXT:    rldicr r3, r3, 0, 512700; CHECK-NEXT:    sth r4, 24(r3)2701; CHECK-NEXT:    blr2702entry:2703  %and = and i64 %ptr, -40962704  %or = or i64 %and, 242705  %0 = inttoptr i64 %or to ptr2706  %conv = zext i8 %str to i162707  store atomic i16 %conv, ptr %0 monotonic, align 82708  ret void2709}2710 2711; Function Attrs: nofree norecurse nounwind uwtable willreturn2712define dso_local void @st_not_disjoint32_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2713; CHECK-LABEL: st_not_disjoint32_uint8_t_uint16_t:2714; CHECK:       # %bb.0: # %entry2715; CHECK-NEXT:    ori r3, r3, 344632716; CHECK-NEXT:    oris r3, r3, 12717; CHECK-NEXT:    sth r4, 0(r3)2718; CHECK-NEXT:    blr2719entry:2720  %or = or i64 %ptr, 999992721  %0 = inttoptr i64 %or to ptr2722  %conv = zext i8 %str to i162723  store atomic i16 %conv, ptr %0 monotonic, align 22724  ret void2725}2726 2727; Function Attrs: nofree norecurse nounwind uwtable willreturn2728define dso_local void @st_disjoint_align32_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2729; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint16_t:2730; CHECK-P10:       # %bb.0: # %entry2731; CHECK-P10-NEXT:    lis r5, -152642732; CHECK-P10-NEXT:    and r3, r3, r52733; CHECK-P10-NEXT:    psth r4, 999990000(r3), 02734; CHECK-P10-NEXT:    blr2735;2736; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint16_t:2737; CHECK-PREP10:       # %bb.0: # %entry2738; CHECK-PREP10-NEXT:    lis r5, -152642739; CHECK-PREP10-NEXT:    and r3, r3, r52740; CHECK-PREP10-NEXT:    lis r5, 152582741; CHECK-PREP10-NEXT:    ori r5, r5, 417122742; CHECK-PREP10-NEXT:    sthx r4, r3, r52743; CHECK-PREP10-NEXT:    blr2744entry:2745  %and = and i64 %ptr, -10003415042746  %or = or i64 %and, 9999900002747  %0 = inttoptr i64 %or to ptr2748  %conv = zext i8 %str to i162749  store atomic i16 %conv, ptr %0 monotonic, align 162750  ret void2751}2752 2753; Function Attrs: nofree norecurse nounwind uwtable willreturn2754define dso_local void @st_not_disjoint64_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2755; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint16_t:2756; CHECK-P10:       # %bb.0: # %entry2757; CHECK-P10-NEXT:    pli r5, 2322758; CHECK-P10-NEXT:    pli r6, 35675873292759; CHECK-P10-NEXT:    rldimi r6, r5, 32, 02760; CHECK-P10-NEXT:    or r3, r3, r62761; CHECK-P10-NEXT:    sth r4, 0(r3)2762; CHECK-P10-NEXT:    blr2763;2764; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint16_t:2765; CHECK-PREP10:       # %bb.0: # %entry2766; CHECK-PREP10-NEXT:    li r5, 292767; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 242768; CHECK-PREP10-NEXT:    oris r5, r5, 544372769; CHECK-PREP10-NEXT:    ori r5, r5, 40972770; CHECK-PREP10-NEXT:    or r3, r3, r52771; CHECK-PREP10-NEXT:    sth r4, 0(r3)2772; CHECK-PREP10-NEXT:    blr2773entry:2774  %or = or i64 %ptr, 10000000000012775  %0 = inttoptr i64 %or to ptr2776  %conv = zext i8 %str to i162777  store atomic i16 %conv, ptr %0 monotonic, align 22778  ret void2779}2780 2781; Function Attrs: nofree norecurse nounwind uwtable willreturn2782define dso_local void @st_disjoint_align64_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {2783; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint16_t:2784; CHECK-P10:       # %bb.0: # %entry2785; CHECK-P10-NEXT:    pli r5, 2441406252786; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232787; CHECK-P10-NEXT:    rldic r5, r5, 12, 242788; CHECK-P10-NEXT:    sthx r4, r3, r52789; CHECK-P10-NEXT:    blr2790;2791; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint16_t:2792; CHECK-PREP10:       # %bb.0: # %entry2793; CHECK-PREP10-NEXT:    lis r5, 37252794; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232795; CHECK-PREP10-NEXT:    ori r5, r5, 190252796; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 242797; CHECK-PREP10-NEXT:    sthx r4, r3, r52798; CHECK-PREP10-NEXT:    blr2799entry:2800  %and = and i64 %ptr, -10995116277762801  %or = or i64 %and, 10000000000002802  %0 = inttoptr i64 %or to ptr2803  %conv = zext i8 %str to i162804  store atomic i16 %conv, ptr %0 monotonic, align 40962805  ret void2806}2807 2808; Function Attrs: nofree norecurse nounwind uwtable willreturn2809define dso_local void @st_cst_align16_uint8_t_uint16_t(i8 zeroext %str) {2810; CHECK-LABEL: st_cst_align16_uint8_t_uint16_t:2811; CHECK:       # %bb.0: # %entry2812; CHECK-NEXT:    sth r3, 4080(0)2813; CHECK-NEXT:    blr2814entry:2815  %conv = zext i8 %str to i162816  store atomic i16 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 162817  ret void2818}2819 2820; Function Attrs: nofree norecurse nounwind uwtable willreturn2821define dso_local void @st_cst_align32_uint8_t_uint16_t(i8 zeroext %str) {2822; CHECK-LABEL: st_cst_align32_uint8_t_uint16_t:2823; CHECK:       # %bb.0: # %entry2824; CHECK-NEXT:    lis r4, 1532825; CHECK-NEXT:    sth r3, -27108(r4)2826; CHECK-NEXT:    blr2827entry:2828  %conv = zext i8 %str to i162829  store atomic i16 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 42830  ret void2831}2832 2833; Function Attrs: nofree norecurse nounwind uwtable willreturn2834define dso_local void @st_cst_align64_uint8_t_uint16_t(i8 zeroext %str) {2835; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint16_t:2836; CHECK-P10:       # %bb.0: # %entry2837; CHECK-P10-NEXT:    pli r4, 2441406252838; CHECK-P10-NEXT:    rldic r4, r4, 12, 242839; CHECK-P10-NEXT:    sth r3, 0(r4)2840; CHECK-P10-NEXT:    blr2841;2842; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint16_t:2843; CHECK-PREP10:       # %bb.0: # %entry2844; CHECK-PREP10-NEXT:    lis r4, 37252845; CHECK-PREP10-NEXT:    ori r4, r4, 190252846; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242847; CHECK-PREP10-NEXT:    sth r3, 0(r4)2848; CHECK-PREP10-NEXT:    blr2849entry:2850  %conv = zext i8 %str to i162851  store atomic i16 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40962852  ret void2853}2854 2855; Function Attrs: nofree norecurse nounwind uwtable willreturn2856define dso_local void @st_0_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {2857; CHECK-LABEL: st_0_uint8_t_uint32_t:2858; CHECK:       # %bb.0: # %entry2859; CHECK-NEXT:    stw r4, 0(r3)2860; CHECK-NEXT:    blr2861entry:2862  %0 = inttoptr i64 %ptr to ptr2863  %conv = zext i8 %str to i322864  store atomic i32 %conv, ptr %0 monotonic, align 42865  ret void2866}2867 2868; Function Attrs: nofree norecurse nounwind uwtable willreturn2869define dso_local void @st_align16_uint8_t_uint32_t(ptr nocapture %ptr, i8 zeroext %str) {2870; CHECK-LABEL: st_align16_uint8_t_uint32_t:2871; CHECK:       # %bb.0: # %entry2872; CHECK-NEXT:    stw r4, 8(r3)2873; CHECK-NEXT:    blr2874entry:2875  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82876  %conv = zext i8 %str to i322877  store atomic i32 %conv, ptr %add.ptr monotonic, align 42878  ret void2879}2880 2881; Function Attrs: nofree norecurse nounwind uwtable willreturn2882define dso_local void @st_align32_uint8_t_uint32_t(ptr nocapture %ptr, i8 zeroext %str) {2883; CHECK-P10-LABEL: st_align32_uint8_t_uint32_t:2884; CHECK-P10:       # %bb.0: # %entry2885; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 02886; CHECK-P10-NEXT:    blr2887;2888; CHECK-PREP10-LABEL: st_align32_uint8_t_uint32_t:2889; CHECK-PREP10:       # %bb.0: # %entry2890; CHECK-PREP10-NEXT:    lis r5, 15252891; CHECK-PREP10-NEXT:    ori r5, r5, 566002892; CHECK-PREP10-NEXT:    stwx r4, r3, r52893; CHECK-PREP10-NEXT:    blr2894entry:2895  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002896  %conv = zext i8 %str to i322897  store atomic i32 %conv, ptr %add.ptr monotonic, align 42898  ret void2899}2900 2901; Function Attrs: nofree norecurse nounwind uwtable willreturn2902define dso_local void @st_align64_uint8_t_uint32_t(ptr nocapture %ptr, i8 zeroext %str) {2903; CHECK-P10-LABEL: st_align64_uint8_t_uint32_t:2904; CHECK-P10:       # %bb.0: # %entry2905; CHECK-P10-NEXT:    pli r5, 2441406252906; CHECK-P10-NEXT:    rldic r5, r5, 12, 242907; CHECK-P10-NEXT:    stwx r4, r3, r52908; CHECK-P10-NEXT:    blr2909;2910; CHECK-PREP10-LABEL: st_align64_uint8_t_uint32_t:2911; CHECK-PREP10:       # %bb.0: # %entry2912; CHECK-PREP10-NEXT:    lis r5, 37252913; CHECK-PREP10-NEXT:    ori r5, r5, 190252914; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 242915; CHECK-PREP10-NEXT:    stwx r4, r3, r52916; CHECK-PREP10-NEXT:    blr2917entry:2918  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002919  %conv = zext i8 %str to i322920  store atomic i32 %conv, ptr %add.ptr monotonic, align 42921  ret void2922}2923 2924; Function Attrs: nofree norecurse nounwind uwtable willreturn2925define dso_local void @st_reg_uint8_t_uint32_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {2926; CHECK-LABEL: st_reg_uint8_t_uint32_t:2927; CHECK:       # %bb.0: # %entry2928; CHECK-NEXT:    stwx r5, r3, r42929; CHECK-NEXT:    blr2930entry:2931  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2932  %conv = zext i8 %str to i322933  store atomic i32 %conv, ptr %add.ptr monotonic, align 42934  ret void2935}2936 2937; Function Attrs: nofree norecurse nounwind uwtable willreturn2938define dso_local void @st_or1_uint8_t_uint32_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {2939; CHECK-LABEL: st_or1_uint8_t_uint32_t:2940; CHECK:       # %bb.0: # %entry2941; CHECK-NEXT:    or r3, r4, r32942; CHECK-NEXT:    stw r5, 0(r3)2943; CHECK-NEXT:    blr2944entry:2945  %conv = zext i8 %off to i642946  %or = or i64 %conv, %ptr2947  %0 = inttoptr i64 %or to ptr2948  %conv1 = zext i8 %str to i322949  store atomic i32 %conv1, ptr %0 monotonic, align 42950  ret void2951}2952 2953; Function Attrs: nofree norecurse nounwind uwtable willreturn2954define dso_local void @st_not_disjoint16_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {2955; CHECK-LABEL: st_not_disjoint16_uint8_t_uint32_t:2956; CHECK:       # %bb.0: # %entry2957; CHECK-NEXT:    ori r3, r3, 62958; CHECK-NEXT:    stw r4, 0(r3)2959; CHECK-NEXT:    blr2960entry:2961  %or = or i64 %ptr, 62962  %0 = inttoptr i64 %or to ptr2963  %conv = zext i8 %str to i322964  store atomic i32 %conv, ptr %0 monotonic, align 42965  ret void2966}2967 2968; Function Attrs: nofree norecurse nounwind uwtable willreturn2969define dso_local void @st_disjoint_align16_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {2970; CHECK-LABEL: st_disjoint_align16_uint8_t_uint32_t:2971; CHECK:       # %bb.0: # %entry2972; CHECK-NEXT:    rldicr r3, r3, 0, 512973; CHECK-NEXT:    stw r4, 24(r3)2974; CHECK-NEXT:    blr2975entry:2976  %and = and i64 %ptr, -40962977  %or = or i64 %and, 242978  %0 = inttoptr i64 %or to ptr2979  %conv = zext i8 %str to i322980  store atomic i32 %conv, ptr %0 monotonic, align 82981  ret void2982}2983 2984; Function Attrs: nofree norecurse nounwind uwtable willreturn2985define dso_local void @st_not_disjoint32_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {2986; CHECK-LABEL: st_not_disjoint32_uint8_t_uint32_t:2987; CHECK:       # %bb.0: # %entry2988; CHECK-NEXT:    ori r3, r3, 344632989; CHECK-NEXT:    oris r3, r3, 12990; CHECK-NEXT:    stw r4, 0(r3)2991; CHECK-NEXT:    blr2992entry:2993  %or = or i64 %ptr, 999992994  %0 = inttoptr i64 %or to ptr2995  %conv = zext i8 %str to i322996  store atomic i32 %conv, ptr %0 monotonic, align 42997  ret void2998}2999 3000; Function Attrs: nofree norecurse nounwind uwtable willreturn3001define dso_local void @st_disjoint_align32_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {3002; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint32_t:3003; CHECK-P10:       # %bb.0: # %entry3004; CHECK-P10-NEXT:    lis r5, -152643005; CHECK-P10-NEXT:    and r3, r3, r53006; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 03007; CHECK-P10-NEXT:    blr3008;3009; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint32_t:3010; CHECK-PREP10:       # %bb.0: # %entry3011; CHECK-PREP10-NEXT:    lis r5, -152643012; CHECK-PREP10-NEXT:    and r3, r3, r53013; CHECK-PREP10-NEXT:    lis r5, 152583014; CHECK-PREP10-NEXT:    ori r5, r5, 417123015; CHECK-PREP10-NEXT:    stwx r4, r3, r53016; CHECK-PREP10-NEXT:    blr3017entry:3018  %and = and i64 %ptr, -10003415043019  %or = or i64 %and, 9999900003020  %0 = inttoptr i64 %or to ptr3021  %conv = zext i8 %str to i323022  store atomic i32 %conv, ptr %0 monotonic, align 163023  ret void3024}3025 3026; Function Attrs: nofree norecurse nounwind uwtable willreturn3027define dso_local void @st_not_disjoint64_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {3028; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint32_t:3029; CHECK-P10:       # %bb.0: # %entry3030; CHECK-P10-NEXT:    pli r5, 2323031; CHECK-P10-NEXT:    pli r6, 35675873293032; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03033; CHECK-P10-NEXT:    or r3, r3, r63034; CHECK-P10-NEXT:    stw r4, 0(r3)3035; CHECK-P10-NEXT:    blr3036;3037; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint32_t:3038; CHECK-PREP10:       # %bb.0: # %entry3039; CHECK-PREP10-NEXT:    li r5, 293040; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243041; CHECK-PREP10-NEXT:    oris r5, r5, 544373042; CHECK-PREP10-NEXT:    ori r5, r5, 40973043; CHECK-PREP10-NEXT:    or r3, r3, r53044; CHECK-PREP10-NEXT:    stw r4, 0(r3)3045; CHECK-PREP10-NEXT:    blr3046entry:3047  %or = or i64 %ptr, 10000000000013048  %0 = inttoptr i64 %or to ptr3049  %conv = zext i8 %str to i323050  store atomic i32 %conv, ptr %0 monotonic, align 43051  ret void3052}3053 3054; Function Attrs: nofree norecurse nounwind uwtable willreturn3055define dso_local void @st_disjoint_align64_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {3056; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint32_t:3057; CHECK-P10:       # %bb.0: # %entry3058; CHECK-P10-NEXT:    pli r5, 2441406253059; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233060; CHECK-P10-NEXT:    rldic r5, r5, 12, 243061; CHECK-P10-NEXT:    stwx r4, r3, r53062; CHECK-P10-NEXT:    blr3063;3064; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint32_t:3065; CHECK-PREP10:       # %bb.0: # %entry3066; CHECK-PREP10-NEXT:    lis r5, 37253067; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233068; CHECK-PREP10-NEXT:    ori r5, r5, 190253069; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243070; CHECK-PREP10-NEXT:    stwx r4, r3, r53071; CHECK-PREP10-NEXT:    blr3072entry:3073  %and = and i64 %ptr, -10995116277763074  %or = or i64 %and, 10000000000003075  %0 = inttoptr i64 %or to ptr3076  %conv = zext i8 %str to i323077  store atomic i32 %conv, ptr %0 monotonic, align 40963078  ret void3079}3080 3081; Function Attrs: nofree norecurse nounwind uwtable willreturn3082define dso_local void @st_cst_align16_uint8_t_uint32_t(i8 zeroext %str) {3083; CHECK-LABEL: st_cst_align16_uint8_t_uint32_t:3084; CHECK:       # %bb.0: # %entry3085; CHECK-NEXT:    stw r3, 4080(0)3086; CHECK-NEXT:    blr3087entry:3088  %conv = zext i8 %str to i323089  store atomic i32 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163090  ret void3091}3092 3093; Function Attrs: nofree norecurse nounwind uwtable willreturn3094define dso_local void @st_cst_align32_uint8_t_uint32_t(i8 zeroext %str) {3095; CHECK-LABEL: st_cst_align32_uint8_t_uint32_t:3096; CHECK:       # %bb.0: # %entry3097; CHECK-NEXT:    lis r4, 1533098; CHECK-NEXT:    stw r3, -27108(r4)3099; CHECK-NEXT:    blr3100entry:3101  %conv = zext i8 %str to i323102  store atomic i32 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43103  ret void3104}3105 3106; Function Attrs: nofree norecurse nounwind uwtable willreturn3107define dso_local void @st_cst_align64_uint8_t_uint32_t(i8 zeroext %str) {3108; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint32_t:3109; CHECK-P10:       # %bb.0: # %entry3110; CHECK-P10-NEXT:    pli r4, 2441406253111; CHECK-P10-NEXT:    rldic r4, r4, 12, 243112; CHECK-P10-NEXT:    stw r3, 0(r4)3113; CHECK-P10-NEXT:    blr3114;3115; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint32_t:3116; CHECK-PREP10:       # %bb.0: # %entry3117; CHECK-PREP10-NEXT:    lis r4, 37253118; CHECK-PREP10-NEXT:    ori r4, r4, 190253119; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243120; CHECK-PREP10-NEXT:    stw r3, 0(r4)3121; CHECK-PREP10-NEXT:    blr3122entry:3123  %conv = zext i8 %str to i323124  store atomic i32 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963125  ret void3126}3127 3128; Function Attrs: nofree norecurse nounwind uwtable willreturn3129define dso_local void @st_0_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3130; CHECK-LABEL: st_0_uint8_t_uint64_t:3131; CHECK:       # %bb.0: # %entry3132; CHECK-NEXT:    std r4, 0(r3)3133; CHECK-NEXT:    blr3134entry:3135  %0 = inttoptr i64 %ptr to ptr3136  %conv = zext i8 %str to i643137  store atomic i64 %conv, ptr %0 monotonic, align 83138  ret void3139}3140 3141; Function Attrs: nofree norecurse nounwind uwtable willreturn3142define dso_local void @st_align16_uint8_t_uint64_t(ptr nocapture %ptr, i8 zeroext %str) {3143; CHECK-LABEL: st_align16_uint8_t_uint64_t:3144; CHECK:       # %bb.0: # %entry3145; CHECK-NEXT:    std r4, 8(r3)3146; CHECK-NEXT:    blr3147entry:3148  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83149  %conv = zext i8 %str to i643150  store atomic i64 %conv, ptr %add.ptr monotonic, align 83151  ret void3152}3153 3154; Function Attrs: nofree norecurse nounwind uwtable willreturn3155define dso_local void @st_align32_uint8_t_uint64_t(ptr nocapture %ptr, i8 zeroext %str) {3156; CHECK-P10-LABEL: st_align32_uint8_t_uint64_t:3157; CHECK-P10:       # %bb.0: # %entry3158; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 03159; CHECK-P10-NEXT:    blr3160;3161; CHECK-PREP10-LABEL: st_align32_uint8_t_uint64_t:3162; CHECK-PREP10:       # %bb.0: # %entry3163; CHECK-PREP10-NEXT:    lis r5, 15253164; CHECK-PREP10-NEXT:    ori r5, r5, 566003165; CHECK-PREP10-NEXT:    stdx r4, r3, r53166; CHECK-PREP10-NEXT:    blr3167entry:3168  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003169  %conv = zext i8 %str to i643170  store atomic i64 %conv, ptr %add.ptr monotonic, align 83171  ret void3172}3173 3174; Function Attrs: nofree norecurse nounwind uwtable willreturn3175define dso_local void @st_align64_uint8_t_uint64_t(ptr nocapture %ptr, i8 zeroext %str) {3176; CHECK-P10-LABEL: st_align64_uint8_t_uint64_t:3177; CHECK-P10:       # %bb.0: # %entry3178; CHECK-P10-NEXT:    pli r5, 2441406253179; CHECK-P10-NEXT:    rldic r5, r5, 12, 243180; CHECK-P10-NEXT:    stdx r4, r3, r53181; CHECK-P10-NEXT:    blr3182;3183; CHECK-PREP10-LABEL: st_align64_uint8_t_uint64_t:3184; CHECK-PREP10:       # %bb.0: # %entry3185; CHECK-PREP10-NEXT:    lis r5, 37253186; CHECK-PREP10-NEXT:    ori r5, r5, 190253187; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243188; CHECK-PREP10-NEXT:    stdx r4, r3, r53189; CHECK-PREP10-NEXT:    blr3190entry:3191  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003192  %conv = zext i8 %str to i643193  store atomic i64 %conv, ptr %add.ptr monotonic, align 83194  ret void3195}3196 3197; Function Attrs: nofree norecurse nounwind uwtable willreturn3198define dso_local void @st_reg_uint8_t_uint64_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {3199; CHECK-LABEL: st_reg_uint8_t_uint64_t:3200; CHECK:       # %bb.0: # %entry3201; CHECK-NEXT:    stdx r5, r3, r43202; CHECK-NEXT:    blr3203entry:3204  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3205  %conv = zext i8 %str to i643206  store atomic i64 %conv, ptr %add.ptr monotonic, align 83207  ret void3208}3209 3210; Function Attrs: nofree norecurse nounwind uwtable willreturn3211define dso_local void @st_or1_uint8_t_uint64_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {3212; CHECK-LABEL: st_or1_uint8_t_uint64_t:3213; CHECK:       # %bb.0: # %entry3214; CHECK-NEXT:    or r3, r4, r33215; CHECK-NEXT:    std r5, 0(r3)3216; CHECK-NEXT:    blr3217entry:3218  %conv = zext i8 %off to i643219  %or = or i64 %conv, %ptr3220  %0 = inttoptr i64 %or to ptr3221  %conv1 = zext i8 %str to i643222  store atomic i64 %conv1, ptr %0 monotonic, align 83223  ret void3224}3225 3226; Function Attrs: nofree norecurse nounwind uwtable willreturn3227define dso_local void @st_not_disjoint16_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3228; CHECK-LABEL: st_not_disjoint16_uint8_t_uint64_t:3229; CHECK:       # %bb.0: # %entry3230; CHECK-NEXT:    ori r3, r3, 63231; CHECK-NEXT:    std r4, 0(r3)3232; CHECK-NEXT:    blr3233entry:3234  %or = or i64 %ptr, 63235  %0 = inttoptr i64 %or to ptr3236  %conv = zext i8 %str to i643237  store atomic i64 %conv, ptr %0 monotonic, align 83238  ret void3239}3240 3241; Function Attrs: nofree norecurse nounwind uwtable willreturn3242define dso_local void @st_disjoint_align16_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3243; CHECK-LABEL: st_disjoint_align16_uint8_t_uint64_t:3244; CHECK:       # %bb.0: # %entry3245; CHECK-NEXT:    rldicr r3, r3, 0, 513246; CHECK-NEXT:    std r4, 24(r3)3247; CHECK-NEXT:    blr3248entry:3249  %and = and i64 %ptr, -40963250  %or = or i64 %and, 243251  %0 = inttoptr i64 %or to ptr3252  %conv = zext i8 %str to i643253  store atomic i64 %conv, ptr %0 monotonic, align 83254  ret void3255}3256 3257; Function Attrs: nofree norecurse nounwind uwtable willreturn3258define dso_local void @st_not_disjoint32_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3259; CHECK-LABEL: st_not_disjoint32_uint8_t_uint64_t:3260; CHECK:       # %bb.0: # %entry3261; CHECK-NEXT:    ori r3, r3, 344633262; CHECK-NEXT:    oris r3, r3, 13263; CHECK-NEXT:    std r4, 0(r3)3264; CHECK-NEXT:    blr3265entry:3266  %or = or i64 %ptr, 999993267  %0 = inttoptr i64 %or to ptr3268  %conv = zext i8 %str to i643269  store atomic i64 %conv, ptr %0 monotonic, align 83270  ret void3271}3272 3273; Function Attrs: nofree norecurse nounwind uwtable willreturn3274define dso_local void @st_disjoint_align32_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3275; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint64_t:3276; CHECK-P10:       # %bb.0: # %entry3277; CHECK-P10-NEXT:    lis r5, -152643278; CHECK-P10-NEXT:    and r3, r3, r53279; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 03280; CHECK-P10-NEXT:    blr3281;3282; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint64_t:3283; CHECK-PREP10:       # %bb.0: # %entry3284; CHECK-PREP10-NEXT:    lis r5, -152643285; CHECK-PREP10-NEXT:    and r3, r3, r53286; CHECK-PREP10-NEXT:    lis r5, 152583287; CHECK-PREP10-NEXT:    ori r5, r5, 417123288; CHECK-PREP10-NEXT:    stdx r4, r3, r53289; CHECK-PREP10-NEXT:    blr3290entry:3291  %and = and i64 %ptr, -10003415043292  %or = or i64 %and, 9999900003293  %0 = inttoptr i64 %or to ptr3294  %conv = zext i8 %str to i643295  store atomic i64 %conv, ptr %0 monotonic, align 163296  ret void3297}3298 3299; Function Attrs: nofree norecurse nounwind uwtable willreturn3300define dso_local void @st_not_disjoint64_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3301; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint64_t:3302; CHECK-P10:       # %bb.0: # %entry3303; CHECK-P10-NEXT:    pli r5, 2323304; CHECK-P10-NEXT:    pli r6, 35675873293305; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03306; CHECK-P10-NEXT:    or r3, r3, r63307; CHECK-P10-NEXT:    std r4, 0(r3)3308; CHECK-P10-NEXT:    blr3309;3310; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint64_t:3311; CHECK-PREP10:       # %bb.0: # %entry3312; CHECK-PREP10-NEXT:    li r5, 293313; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243314; CHECK-PREP10-NEXT:    oris r5, r5, 544373315; CHECK-PREP10-NEXT:    ori r5, r5, 40973316; CHECK-PREP10-NEXT:    or r3, r3, r53317; CHECK-PREP10-NEXT:    std r4, 0(r3)3318; CHECK-PREP10-NEXT:    blr3319entry:3320  %or = or i64 %ptr, 10000000000013321  %0 = inttoptr i64 %or to ptr3322  %conv = zext i8 %str to i643323  store atomic i64 %conv, ptr %0 monotonic, align 83324  ret void3325}3326 3327; Function Attrs: nofree norecurse nounwind uwtable willreturn3328define dso_local void @st_disjoint_align64_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {3329; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint64_t:3330; CHECK-P10:       # %bb.0: # %entry3331; CHECK-P10-NEXT:    pli r5, 2441406253332; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233333; CHECK-P10-NEXT:    rldic r5, r5, 12, 243334; CHECK-P10-NEXT:    stdx r4, r3, r53335; CHECK-P10-NEXT:    blr3336;3337; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint64_t:3338; CHECK-PREP10:       # %bb.0: # %entry3339; CHECK-PREP10-NEXT:    lis r5, 37253340; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233341; CHECK-PREP10-NEXT:    ori r5, r5, 190253342; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243343; CHECK-PREP10-NEXT:    stdx r4, r3, r53344; CHECK-PREP10-NEXT:    blr3345entry:3346  %and = and i64 %ptr, -10995116277763347  %or = or i64 %and, 10000000000003348  %0 = inttoptr i64 %or to ptr3349  %conv = zext i8 %str to i643350  store atomic i64 %conv, ptr %0 monotonic, align 40963351  ret void3352}3353 3354; Function Attrs: nofree norecurse nounwind uwtable willreturn3355define dso_local void @st_cst_align16_uint8_t_uint64_t(i8 zeroext %str) {3356; CHECK-LABEL: st_cst_align16_uint8_t_uint64_t:3357; CHECK:       # %bb.0: # %entry3358; CHECK-NEXT:    std r3, 4080(0)3359; CHECK-NEXT:    blr3360entry:3361  %conv = zext i8 %str to i643362  store atomic i64 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163363  ret void3364}3365 3366; Function Attrs: nofree norecurse nounwind uwtable willreturn3367define dso_local void @st_cst_align32_uint8_t_uint64_t(i8 zeroext %str) {3368; CHECK-LABEL: st_cst_align32_uint8_t_uint64_t:3369; CHECK:       # %bb.0: # %entry3370; CHECK-NEXT:    lis r4, 1533371; CHECK-NEXT:    std r3, -27108(r4)3372; CHECK-NEXT:    blr3373entry:3374  %conv = zext i8 %str to i643375  store atomic i64 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 83376  ret void3377}3378 3379; Function Attrs: nofree norecurse nounwind uwtable willreturn3380define dso_local void @st_cst_align64_uint8_t_uint64_t(i8 zeroext %str) {3381; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint64_t:3382; CHECK-P10:       # %bb.0: # %entry3383; CHECK-P10-NEXT:    pli r4, 2441406253384; CHECK-P10-NEXT:    rldic r4, r4, 12, 243385; CHECK-P10-NEXT:    std r3, 0(r4)3386; CHECK-P10-NEXT:    blr3387;3388; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint64_t:3389; CHECK-PREP10:       # %bb.0: # %entry3390; CHECK-PREP10-NEXT:    lis r4, 37253391; CHECK-PREP10-NEXT:    ori r4, r4, 190253392; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243393; CHECK-PREP10-NEXT:    std r3, 0(r4)3394; CHECK-PREP10-NEXT:    blr3395entry:3396  %conv = zext i8 %str to i643397  store atomic i64 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963398  ret void3399}3400 3401; Function Attrs: nofree norecurse nounwind uwtable willreturn3402define dso_local void @st_0_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3403; CHECK-LABEL: st_0_int8_t_uint16_t:3404; CHECK:       # %bb.0: # %entry3405; CHECK-NEXT:    sth r4, 0(r3)3406; CHECK-NEXT:    blr3407entry:3408  %0 = inttoptr i64 %ptr to ptr3409  %conv = sext i8 %str to i163410  store atomic i16 %conv, ptr %0 monotonic, align 23411  ret void3412}3413 3414; Function Attrs: nofree norecurse nounwind uwtable willreturn3415define dso_local void @st_align16_int8_t_uint16_t(ptr nocapture %ptr, i8 signext %str) {3416; CHECK-LABEL: st_align16_int8_t_uint16_t:3417; CHECK:       # %bb.0: # %entry3418; CHECK-NEXT:    sth r4, 8(r3)3419; CHECK-NEXT:    blr3420entry:3421  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83422  %conv = sext i8 %str to i163423  store atomic i16 %conv, ptr %add.ptr monotonic, align 23424  ret void3425}3426 3427; Function Attrs: nofree norecurse nounwind uwtable willreturn3428define dso_local void @st_align32_int8_t_uint16_t(ptr nocapture %ptr, i8 signext %str) {3429; CHECK-P10-LABEL: st_align32_int8_t_uint16_t:3430; CHECK-P10:       # %bb.0: # %entry3431; CHECK-P10-NEXT:    psth r4, 99999000(r3), 03432; CHECK-P10-NEXT:    blr3433;3434; CHECK-PREP10-LABEL: st_align32_int8_t_uint16_t:3435; CHECK-PREP10:       # %bb.0: # %entry3436; CHECK-PREP10-NEXT:    lis r5, 15253437; CHECK-PREP10-NEXT:    ori r5, r5, 566003438; CHECK-PREP10-NEXT:    sthx r4, r3, r53439; CHECK-PREP10-NEXT:    blr3440entry:3441  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003442  %conv = sext i8 %str to i163443  store atomic i16 %conv, ptr %add.ptr monotonic, align 23444  ret void3445}3446 3447; Function Attrs: nofree norecurse nounwind uwtable willreturn3448define dso_local void @st_align64_int8_t_uint16_t(ptr nocapture %ptr, i8 signext %str) {3449; CHECK-P10-LABEL: st_align64_int8_t_uint16_t:3450; CHECK-P10:       # %bb.0: # %entry3451; CHECK-P10-NEXT:    pli r5, 2441406253452; CHECK-P10-NEXT:    rldic r5, r5, 12, 243453; CHECK-P10-NEXT:    sthx r4, r3, r53454; CHECK-P10-NEXT:    blr3455;3456; CHECK-PREP10-LABEL: st_align64_int8_t_uint16_t:3457; CHECK-PREP10:       # %bb.0: # %entry3458; CHECK-PREP10-NEXT:    lis r5, 37253459; CHECK-PREP10-NEXT:    ori r5, r5, 190253460; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243461; CHECK-PREP10-NEXT:    sthx r4, r3, r53462; CHECK-PREP10-NEXT:    blr3463entry:3464  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003465  %conv = sext i8 %str to i163466  store atomic i16 %conv, ptr %add.ptr monotonic, align 23467  ret void3468}3469 3470; Function Attrs: nofree norecurse nounwind uwtable willreturn3471define dso_local void @st_reg_int8_t_uint16_t(ptr nocapture %ptr, i64 %off, i8 signext %str) {3472; CHECK-LABEL: st_reg_int8_t_uint16_t:3473; CHECK:       # %bb.0: # %entry3474; CHECK-NEXT:    sthx r5, r3, r43475; CHECK-NEXT:    blr3476entry:3477  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3478  %conv = sext i8 %str to i163479  store atomic i16 %conv, ptr %add.ptr monotonic, align 23480  ret void3481}3482 3483; Function Attrs: nofree norecurse nounwind uwtable willreturn3484define dso_local void @st_or1_int8_t_uint16_t(i64 %ptr, i8 zeroext %off, i8 signext %str) {3485; CHECK-LABEL: st_or1_int8_t_uint16_t:3486; CHECK:       # %bb.0: # %entry3487; CHECK-NEXT:    or r3, r4, r33488; CHECK-NEXT:    sth r5, 0(r3)3489; CHECK-NEXT:    blr3490entry:3491  %conv = zext i8 %off to i643492  %or = or i64 %conv, %ptr3493  %0 = inttoptr i64 %or to ptr3494  %conv1 = sext i8 %str to i163495  store atomic i16 %conv1, ptr %0 monotonic, align 23496  ret void3497}3498 3499; Function Attrs: nofree norecurse nounwind uwtable willreturn3500define dso_local void @st_not_disjoint16_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3501; CHECK-LABEL: st_not_disjoint16_int8_t_uint16_t:3502; CHECK:       # %bb.0: # %entry3503; CHECK-NEXT:    ori r3, r3, 63504; CHECK-NEXT:    sth r4, 0(r3)3505; CHECK-NEXT:    blr3506entry:3507  %or = or i64 %ptr, 63508  %0 = inttoptr i64 %or to ptr3509  %conv = sext i8 %str to i163510  store atomic i16 %conv, ptr %0 monotonic, align 23511  ret void3512}3513 3514; Function Attrs: nofree norecurse nounwind uwtable willreturn3515define dso_local void @st_disjoint_align16_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3516; CHECK-LABEL: st_disjoint_align16_int8_t_uint16_t:3517; CHECK:       # %bb.0: # %entry3518; CHECK-NEXT:    rldicr r3, r3, 0, 513519; CHECK-NEXT:    sth r4, 24(r3)3520; CHECK-NEXT:    blr3521entry:3522  %and = and i64 %ptr, -40963523  %or = or i64 %and, 243524  %0 = inttoptr i64 %or to ptr3525  %conv = sext i8 %str to i163526  store atomic i16 %conv, ptr %0 monotonic, align 83527  ret void3528}3529 3530; Function Attrs: nofree norecurse nounwind uwtable willreturn3531define dso_local void @st_not_disjoint32_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3532; CHECK-LABEL: st_not_disjoint32_int8_t_uint16_t:3533; CHECK:       # %bb.0: # %entry3534; CHECK-NEXT:    ori r3, r3, 344633535; CHECK-NEXT:    oris r3, r3, 13536; CHECK-NEXT:    sth r4, 0(r3)3537; CHECK-NEXT:    blr3538entry:3539  %or = or i64 %ptr, 999993540  %0 = inttoptr i64 %or to ptr3541  %conv = sext i8 %str to i163542  store atomic i16 %conv, ptr %0 monotonic, align 23543  ret void3544}3545 3546; Function Attrs: nofree norecurse nounwind uwtable willreturn3547define dso_local void @st_disjoint_align32_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3548; CHECK-P10-LABEL: st_disjoint_align32_int8_t_uint16_t:3549; CHECK-P10:       # %bb.0: # %entry3550; CHECK-P10-NEXT:    lis r5, -152643551; CHECK-P10-NEXT:    and r3, r3, r53552; CHECK-P10-NEXT:    psth r4, 999990000(r3), 03553; CHECK-P10-NEXT:    blr3554;3555; CHECK-PREP10-LABEL: st_disjoint_align32_int8_t_uint16_t:3556; CHECK-PREP10:       # %bb.0: # %entry3557; CHECK-PREP10-NEXT:    lis r5, -152643558; CHECK-PREP10-NEXT:    and r3, r3, r53559; CHECK-PREP10-NEXT:    lis r5, 152583560; CHECK-PREP10-NEXT:    ori r5, r5, 417123561; CHECK-PREP10-NEXT:    sthx r4, r3, r53562; CHECK-PREP10-NEXT:    blr3563entry:3564  %and = and i64 %ptr, -10003415043565  %or = or i64 %and, 9999900003566  %0 = inttoptr i64 %or to ptr3567  %conv = sext i8 %str to i163568  store atomic i16 %conv, ptr %0 monotonic, align 163569  ret void3570}3571 3572; Function Attrs: nofree norecurse nounwind uwtable willreturn3573define dso_local void @st_not_disjoint64_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3574; CHECK-P10-LABEL: st_not_disjoint64_int8_t_uint16_t:3575; CHECK-P10:       # %bb.0: # %entry3576; CHECK-P10-NEXT:    pli r5, 2323577; CHECK-P10-NEXT:    pli r6, 35675873293578; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03579; CHECK-P10-NEXT:    or r3, r3, r63580; CHECK-P10-NEXT:    sth r4, 0(r3)3581; CHECK-P10-NEXT:    blr3582;3583; CHECK-PREP10-LABEL: st_not_disjoint64_int8_t_uint16_t:3584; CHECK-PREP10:       # %bb.0: # %entry3585; CHECK-PREP10-NEXT:    li r5, 293586; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243587; CHECK-PREP10-NEXT:    oris r5, r5, 544373588; CHECK-PREP10-NEXT:    ori r5, r5, 40973589; CHECK-PREP10-NEXT:    or r3, r3, r53590; CHECK-PREP10-NEXT:    sth r4, 0(r3)3591; CHECK-PREP10-NEXT:    blr3592entry:3593  %or = or i64 %ptr, 10000000000013594  %0 = inttoptr i64 %or to ptr3595  %conv = sext i8 %str to i163596  store atomic i16 %conv, ptr %0 monotonic, align 23597  ret void3598}3599 3600; Function Attrs: nofree norecurse nounwind uwtable willreturn3601define dso_local void @st_disjoint_align64_int8_t_uint16_t(i64 %ptr, i8 signext %str) {3602; CHECK-P10-LABEL: st_disjoint_align64_int8_t_uint16_t:3603; CHECK-P10:       # %bb.0: # %entry3604; CHECK-P10-NEXT:    pli r5, 2441406253605; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233606; CHECK-P10-NEXT:    rldic r5, r5, 12, 243607; CHECK-P10-NEXT:    sthx r4, r3, r53608; CHECK-P10-NEXT:    blr3609;3610; CHECK-PREP10-LABEL: st_disjoint_align64_int8_t_uint16_t:3611; CHECK-PREP10:       # %bb.0: # %entry3612; CHECK-PREP10-NEXT:    lis r5, 37253613; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233614; CHECK-PREP10-NEXT:    ori r5, r5, 190253615; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243616; CHECK-PREP10-NEXT:    sthx r4, r3, r53617; CHECK-PREP10-NEXT:    blr3618entry:3619  %and = and i64 %ptr, -10995116277763620  %or = or i64 %and, 10000000000003621  %0 = inttoptr i64 %or to ptr3622  %conv = sext i8 %str to i163623  store atomic i16 %conv, ptr %0 monotonic, align 40963624  ret void3625}3626 3627; Function Attrs: nofree norecurse nounwind uwtable willreturn3628define dso_local void @st_cst_align16_int8_t_uint16_t(i8 signext %str) {3629; CHECK-LABEL: st_cst_align16_int8_t_uint16_t:3630; CHECK:       # %bb.0: # %entry3631; CHECK-NEXT:    sth r3, 4080(0)3632; CHECK-NEXT:    blr3633entry:3634  %conv = sext i8 %str to i163635  store atomic i16 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163636  ret void3637}3638 3639; Function Attrs: nofree norecurse nounwind uwtable willreturn3640define dso_local void @st_cst_align32_int8_t_uint16_t(i8 signext %str) {3641; CHECK-LABEL: st_cst_align32_int8_t_uint16_t:3642; CHECK:       # %bb.0: # %entry3643; CHECK-NEXT:    lis r4, 1533644; CHECK-NEXT:    sth r3, -27108(r4)3645; CHECK-NEXT:    blr3646entry:3647  %conv = sext i8 %str to i163648  store atomic i16 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43649  ret void3650}3651 3652; Function Attrs: nofree norecurse nounwind uwtable willreturn3653define dso_local void @st_cst_align64_int8_t_uint16_t(i8 signext %str) {3654; CHECK-P10-LABEL: st_cst_align64_int8_t_uint16_t:3655; CHECK-P10:       # %bb.0: # %entry3656; CHECK-P10-NEXT:    pli r4, 2441406253657; CHECK-P10-NEXT:    rldic r4, r4, 12, 243658; CHECK-P10-NEXT:    sth r3, 0(r4)3659; CHECK-P10-NEXT:    blr3660;3661; CHECK-PREP10-LABEL: st_cst_align64_int8_t_uint16_t:3662; CHECK-PREP10:       # %bb.0: # %entry3663; CHECK-PREP10-NEXT:    lis r4, 37253664; CHECK-PREP10-NEXT:    ori r4, r4, 190253665; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243666; CHECK-PREP10-NEXT:    sth r3, 0(r4)3667; CHECK-PREP10-NEXT:    blr3668entry:3669  %conv = sext i8 %str to i163670  store atomic i16 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963671  ret void3672}3673 3674; Function Attrs: nofree norecurse nounwind uwtable willreturn3675define dso_local void @st_0_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3676; CHECK-LABEL: st_0_int8_t_uint32_t:3677; CHECK:       # %bb.0: # %entry3678; CHECK-NEXT:    stw r4, 0(r3)3679; CHECK-NEXT:    blr3680entry:3681  %0 = inttoptr i64 %ptr to ptr3682  %conv = sext i8 %str to i323683  store atomic i32 %conv, ptr %0 monotonic, align 43684  ret void3685}3686 3687; Function Attrs: nofree norecurse nounwind uwtable willreturn3688define dso_local void @st_align16_int8_t_uint32_t(ptr nocapture %ptr, i8 signext %str) {3689; CHECK-LABEL: st_align16_int8_t_uint32_t:3690; CHECK:       # %bb.0: # %entry3691; CHECK-NEXT:    stw r4, 8(r3)3692; CHECK-NEXT:    blr3693entry:3694  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83695  %conv = sext i8 %str to i323696  store atomic i32 %conv, ptr %add.ptr monotonic, align 43697  ret void3698}3699 3700; Function Attrs: nofree norecurse nounwind uwtable willreturn3701define dso_local void @st_align32_int8_t_uint32_t(ptr nocapture %ptr, i8 signext %str) {3702; CHECK-P10-LABEL: st_align32_int8_t_uint32_t:3703; CHECK-P10:       # %bb.0: # %entry3704; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 03705; CHECK-P10-NEXT:    blr3706;3707; CHECK-PREP10-LABEL: st_align32_int8_t_uint32_t:3708; CHECK-PREP10:       # %bb.0: # %entry3709; CHECK-PREP10-NEXT:    lis r5, 15253710; CHECK-PREP10-NEXT:    ori r5, r5, 566003711; CHECK-PREP10-NEXT:    stwx r4, r3, r53712; CHECK-PREP10-NEXT:    blr3713entry:3714  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003715  %conv = sext i8 %str to i323716  store atomic i32 %conv, ptr %add.ptr monotonic, align 43717  ret void3718}3719 3720; Function Attrs: nofree norecurse nounwind uwtable willreturn3721define dso_local void @st_align64_int8_t_uint32_t(ptr nocapture %ptr, i8 signext %str) {3722; CHECK-P10-LABEL: st_align64_int8_t_uint32_t:3723; CHECK-P10:       # %bb.0: # %entry3724; CHECK-P10-NEXT:    pli r5, 2441406253725; CHECK-P10-NEXT:    rldic r5, r5, 12, 243726; CHECK-P10-NEXT:    stwx r4, r3, r53727; CHECK-P10-NEXT:    blr3728;3729; CHECK-PREP10-LABEL: st_align64_int8_t_uint32_t:3730; CHECK-PREP10:       # %bb.0: # %entry3731; CHECK-PREP10-NEXT:    lis r5, 37253732; CHECK-PREP10-NEXT:    ori r5, r5, 190253733; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243734; CHECK-PREP10-NEXT:    stwx r4, r3, r53735; CHECK-PREP10-NEXT:    blr3736entry:3737  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003738  %conv = sext i8 %str to i323739  store atomic i32 %conv, ptr %add.ptr monotonic, align 43740  ret void3741}3742 3743; Function Attrs: nofree norecurse nounwind uwtable willreturn3744define dso_local void @st_reg_int8_t_uint32_t(ptr nocapture %ptr, i64 %off, i8 signext %str) {3745; CHECK-LABEL: st_reg_int8_t_uint32_t:3746; CHECK:       # %bb.0: # %entry3747; CHECK-NEXT:    stwx r5, r3, r43748; CHECK-NEXT:    blr3749entry:3750  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3751  %conv = sext i8 %str to i323752  store atomic i32 %conv, ptr %add.ptr monotonic, align 43753  ret void3754}3755 3756; Function Attrs: nofree norecurse nounwind uwtable willreturn3757define dso_local void @st_or1_int8_t_uint32_t(i64 %ptr, i8 zeroext %off, i8 signext %str) {3758; CHECK-LABEL: st_or1_int8_t_uint32_t:3759; CHECK:       # %bb.0: # %entry3760; CHECK-NEXT:    or r3, r4, r33761; CHECK-NEXT:    stw r5, 0(r3)3762; CHECK-NEXT:    blr3763entry:3764  %conv = zext i8 %off to i643765  %or = or i64 %conv, %ptr3766  %0 = inttoptr i64 %or to ptr3767  %conv1 = sext i8 %str to i323768  store atomic i32 %conv1, ptr %0 monotonic, align 43769  ret void3770}3771 3772; Function Attrs: nofree norecurse nounwind uwtable willreturn3773define dso_local void @st_not_disjoint16_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3774; CHECK-LABEL: st_not_disjoint16_int8_t_uint32_t:3775; CHECK:       # %bb.0: # %entry3776; CHECK-NEXT:    ori r3, r3, 63777; CHECK-NEXT:    stw r4, 0(r3)3778; CHECK-NEXT:    blr3779entry:3780  %or = or i64 %ptr, 63781  %0 = inttoptr i64 %or to ptr3782  %conv = sext i8 %str to i323783  store atomic i32 %conv, ptr %0 monotonic, align 43784  ret void3785}3786 3787; Function Attrs: nofree norecurse nounwind uwtable willreturn3788define dso_local void @st_disjoint_align16_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3789; CHECK-LABEL: st_disjoint_align16_int8_t_uint32_t:3790; CHECK:       # %bb.0: # %entry3791; CHECK-NEXT:    rldicr r3, r3, 0, 513792; CHECK-NEXT:    stw r4, 24(r3)3793; CHECK-NEXT:    blr3794entry:3795  %and = and i64 %ptr, -40963796  %or = or i64 %and, 243797  %0 = inttoptr i64 %or to ptr3798  %conv = sext i8 %str to i323799  store atomic i32 %conv, ptr %0 monotonic, align 83800  ret void3801}3802 3803; Function Attrs: nofree norecurse nounwind uwtable willreturn3804define dso_local void @st_not_disjoint32_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3805; CHECK-LABEL: st_not_disjoint32_int8_t_uint32_t:3806; CHECK:       # %bb.0: # %entry3807; CHECK-NEXT:    ori r3, r3, 344633808; CHECK-NEXT:    oris r3, r3, 13809; CHECK-NEXT:    stw r4, 0(r3)3810; CHECK-NEXT:    blr3811entry:3812  %or = or i64 %ptr, 999993813  %0 = inttoptr i64 %or to ptr3814  %conv = sext i8 %str to i323815  store atomic i32 %conv, ptr %0 monotonic, align 43816  ret void3817}3818 3819; Function Attrs: nofree norecurse nounwind uwtable willreturn3820define dso_local void @st_disjoint_align32_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3821; CHECK-P10-LABEL: st_disjoint_align32_int8_t_uint32_t:3822; CHECK-P10:       # %bb.0: # %entry3823; CHECK-P10-NEXT:    lis r5, -152643824; CHECK-P10-NEXT:    and r3, r3, r53825; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 03826; CHECK-P10-NEXT:    blr3827;3828; CHECK-PREP10-LABEL: st_disjoint_align32_int8_t_uint32_t:3829; CHECK-PREP10:       # %bb.0: # %entry3830; CHECK-PREP10-NEXT:    lis r5, -152643831; CHECK-PREP10-NEXT:    and r3, r3, r53832; CHECK-PREP10-NEXT:    lis r5, 152583833; CHECK-PREP10-NEXT:    ori r5, r5, 417123834; CHECK-PREP10-NEXT:    stwx r4, r3, r53835; CHECK-PREP10-NEXT:    blr3836entry:3837  %and = and i64 %ptr, -10003415043838  %or = or i64 %and, 9999900003839  %0 = inttoptr i64 %or to ptr3840  %conv = sext i8 %str to i323841  store atomic i32 %conv, ptr %0 monotonic, align 163842  ret void3843}3844 3845; Function Attrs: nofree norecurse nounwind uwtable willreturn3846define dso_local void @st_not_disjoint64_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3847; CHECK-P10-LABEL: st_not_disjoint64_int8_t_uint32_t:3848; CHECK-P10:       # %bb.0: # %entry3849; CHECK-P10-NEXT:    pli r5, 2323850; CHECK-P10-NEXT:    pli r6, 35675873293851; CHECK-P10-NEXT:    rldimi r6, r5, 32, 03852; CHECK-P10-NEXT:    or r3, r3, r63853; CHECK-P10-NEXT:    stw r4, 0(r3)3854; CHECK-P10-NEXT:    blr3855;3856; CHECK-PREP10-LABEL: st_not_disjoint64_int8_t_uint32_t:3857; CHECK-PREP10:       # %bb.0: # %entry3858; CHECK-PREP10-NEXT:    li r5, 293859; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 243860; CHECK-PREP10-NEXT:    oris r5, r5, 544373861; CHECK-PREP10-NEXT:    ori r5, r5, 40973862; CHECK-PREP10-NEXT:    or r3, r3, r53863; CHECK-PREP10-NEXT:    stw r4, 0(r3)3864; CHECK-PREP10-NEXT:    blr3865entry:3866  %or = or i64 %ptr, 10000000000013867  %0 = inttoptr i64 %or to ptr3868  %conv = sext i8 %str to i323869  store atomic i32 %conv, ptr %0 monotonic, align 43870  ret void3871}3872 3873; Function Attrs: nofree norecurse nounwind uwtable willreturn3874define dso_local void @st_disjoint_align64_int8_t_uint32_t(i64 %ptr, i8 signext %str) {3875; CHECK-P10-LABEL: st_disjoint_align64_int8_t_uint32_t:3876; CHECK-P10:       # %bb.0: # %entry3877; CHECK-P10-NEXT:    pli r5, 2441406253878; CHECK-P10-NEXT:    rldicr r3, r3, 0, 233879; CHECK-P10-NEXT:    rldic r5, r5, 12, 243880; CHECK-P10-NEXT:    stwx r4, r3, r53881; CHECK-P10-NEXT:    blr3882;3883; CHECK-PREP10-LABEL: st_disjoint_align64_int8_t_uint32_t:3884; CHECK-PREP10:       # %bb.0: # %entry3885; CHECK-PREP10-NEXT:    lis r5, 37253886; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 233887; CHECK-PREP10-NEXT:    ori r5, r5, 190253888; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 243889; CHECK-PREP10-NEXT:    stwx r4, r3, r53890; CHECK-PREP10-NEXT:    blr3891entry:3892  %and = and i64 %ptr, -10995116277763893  %or = or i64 %and, 10000000000003894  %0 = inttoptr i64 %or to ptr3895  %conv = sext i8 %str to i323896  store atomic i32 %conv, ptr %0 monotonic, align 40963897  ret void3898}3899 3900; Function Attrs: nofree norecurse nounwind uwtable willreturn3901define dso_local void @st_cst_align16_int8_t_uint32_t(i8 signext %str) {3902; CHECK-LABEL: st_cst_align16_int8_t_uint32_t:3903; CHECK:       # %bb.0: # %entry3904; CHECK-NEXT:    stw r3, 4080(0)3905; CHECK-NEXT:    blr3906entry:3907  %conv = sext i8 %str to i323908  store atomic i32 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 163909  ret void3910}3911 3912; Function Attrs: nofree norecurse nounwind uwtable willreturn3913define dso_local void @st_cst_align32_int8_t_uint32_t(i8 signext %str) {3914; CHECK-LABEL: st_cst_align32_int8_t_uint32_t:3915; CHECK:       # %bb.0: # %entry3916; CHECK-NEXT:    lis r4, 1533917; CHECK-NEXT:    stw r3, -27108(r4)3918; CHECK-NEXT:    blr3919entry:3920  %conv = sext i8 %str to i323921  store atomic i32 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 43922  ret void3923}3924 3925; Function Attrs: nofree norecurse nounwind uwtable willreturn3926define dso_local void @st_cst_align64_int8_t_uint32_t(i8 signext %str) {3927; CHECK-P10-LABEL: st_cst_align64_int8_t_uint32_t:3928; CHECK-P10:       # %bb.0: # %entry3929; CHECK-P10-NEXT:    pli r4, 2441406253930; CHECK-P10-NEXT:    rldic r4, r4, 12, 243931; CHECK-P10-NEXT:    stw r3, 0(r4)3932; CHECK-P10-NEXT:    blr3933;3934; CHECK-PREP10-LABEL: st_cst_align64_int8_t_uint32_t:3935; CHECK-PREP10:       # %bb.0: # %entry3936; CHECK-PREP10-NEXT:    lis r4, 37253937; CHECK-PREP10-NEXT:    ori r4, r4, 190253938; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 243939; CHECK-PREP10-NEXT:    stw r3, 0(r4)3940; CHECK-PREP10-NEXT:    blr3941entry:3942  %conv = sext i8 %str to i323943  store atomic i32 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40963944  ret void3945}3946 3947; Function Attrs: nofree norecurse nounwind uwtable willreturn3948define dso_local void @st_0_int8_t_uint64_t(i64 %ptr, i8 signext %str) {3949; CHECK-LABEL: st_0_int8_t_uint64_t:3950; CHECK:       # %bb.0: # %entry3951; CHECK-NEXT:    std r4, 0(r3)3952; CHECK-NEXT:    blr3953entry:3954  %0 = inttoptr i64 %ptr to ptr3955  %conv = sext i8 %str to i643956  store atomic i64 %conv, ptr %0 monotonic, align 83957  ret void3958}3959 3960; Function Attrs: nofree norecurse nounwind uwtable willreturn3961define dso_local void @st_align16_int8_t_uint64_t(ptr nocapture %ptr, i8 signext %str) {3962; CHECK-LABEL: st_align16_int8_t_uint64_t:3963; CHECK:       # %bb.0: # %entry3964; CHECK-NEXT:    std r4, 8(r3)3965; CHECK-NEXT:    blr3966entry:3967  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83968  %conv = sext i8 %str to i643969  store atomic i64 %conv, ptr %add.ptr monotonic, align 83970  ret void3971}3972 3973; Function Attrs: nofree norecurse nounwind uwtable willreturn3974define dso_local void @st_align32_int8_t_uint64_t(ptr nocapture %ptr, i8 signext %str) {3975; CHECK-P10-LABEL: st_align32_int8_t_uint64_t:3976; CHECK-P10:       # %bb.0: # %entry3977; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 03978; CHECK-P10-NEXT:    blr3979;3980; CHECK-PREP10-LABEL: st_align32_int8_t_uint64_t:3981; CHECK-PREP10:       # %bb.0: # %entry3982; CHECK-PREP10-NEXT:    lis r5, 15253983; CHECK-PREP10-NEXT:    ori r5, r5, 566003984; CHECK-PREP10-NEXT:    stdx r4, r3, r53985; CHECK-PREP10-NEXT:    blr3986entry:3987  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003988  %conv = sext i8 %str to i643989  store atomic i64 %conv, ptr %add.ptr monotonic, align 83990  ret void3991}3992 3993; Function Attrs: nofree norecurse nounwind uwtable willreturn3994define dso_local void @st_align64_int8_t_uint64_t(ptr nocapture %ptr, i8 signext %str) {3995; CHECK-P10-LABEL: st_align64_int8_t_uint64_t:3996; CHECK-P10:       # %bb.0: # %entry3997; CHECK-P10-NEXT:    pli r5, 2441406253998; CHECK-P10-NEXT:    rldic r5, r5, 12, 243999; CHECK-P10-NEXT:    stdx r4, r3, r54000; CHECK-P10-NEXT:    blr4001;4002; CHECK-PREP10-LABEL: st_align64_int8_t_uint64_t:4003; CHECK-PREP10:       # %bb.0: # %entry4004; CHECK-PREP10-NEXT:    lis r5, 37254005; CHECK-PREP10-NEXT:    ori r5, r5, 190254006; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244007; CHECK-PREP10-NEXT:    stdx r4, r3, r54008; CHECK-PREP10-NEXT:    blr4009entry:4010  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004011  %conv = sext i8 %str to i644012  store atomic i64 %conv, ptr %add.ptr monotonic, align 84013  ret void4014}4015 4016; Function Attrs: nofree norecurse nounwind uwtable willreturn4017define dso_local void @st_reg_int8_t_uint64_t(ptr nocapture %ptr, i64 %off, i8 signext %str) {4018; CHECK-LABEL: st_reg_int8_t_uint64_t:4019; CHECK:       # %bb.0: # %entry4020; CHECK-NEXT:    stdx r5, r3, r44021; CHECK-NEXT:    blr4022entry:4023  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4024  %conv = sext i8 %str to i644025  store atomic i64 %conv, ptr %add.ptr monotonic, align 84026  ret void4027}4028 4029; Function Attrs: nofree norecurse nounwind uwtable willreturn4030define dso_local void @st_or1_int8_t_uint64_t(i64 %ptr, i8 zeroext %off, i8 signext %str) {4031; CHECK-LABEL: st_or1_int8_t_uint64_t:4032; CHECK:       # %bb.0: # %entry4033; CHECK-NEXT:    or r3, r4, r34034; CHECK-NEXT:    std r5, 0(r3)4035; CHECK-NEXT:    blr4036entry:4037  %conv = zext i8 %off to i644038  %or = or i64 %conv, %ptr4039  %0 = inttoptr i64 %or to ptr4040  %conv1 = sext i8 %str to i644041  store atomic i64 %conv1, ptr %0 monotonic, align 84042  ret void4043}4044 4045; Function Attrs: nofree norecurse nounwind uwtable willreturn4046define dso_local void @st_not_disjoint16_int8_t_uint64_t(i64 %ptr, i8 signext %str) {4047; CHECK-LABEL: st_not_disjoint16_int8_t_uint64_t:4048; CHECK:       # %bb.0: # %entry4049; CHECK-NEXT:    ori r3, r3, 64050; CHECK-NEXT:    std r4, 0(r3)4051; CHECK-NEXT:    blr4052entry:4053  %or = or i64 %ptr, 64054  %0 = inttoptr i64 %or to ptr4055  %conv = sext i8 %str to i644056  store atomic i64 %conv, ptr %0 monotonic, align 84057  ret void4058}4059 4060; Function Attrs: nofree norecurse nounwind uwtable willreturn4061define dso_local void @st_disjoint_align16_int8_t_uint64_t(i64 %ptr, i8 signext %str) {4062; CHECK-LABEL: st_disjoint_align16_int8_t_uint64_t:4063; CHECK:       # %bb.0: # %entry4064; CHECK-NEXT:    rldicr r3, r3, 0, 514065; CHECK-NEXT:    std r4, 24(r3)4066; CHECK-NEXT:    blr4067entry:4068  %and = and i64 %ptr, -40964069  %or = or i64 %and, 244070  %0 = inttoptr i64 %or to ptr4071  %conv = sext i8 %str to i644072  store atomic i64 %conv, ptr %0 monotonic, align 84073  ret void4074}4075 4076; Function Attrs: nofree norecurse nounwind uwtable willreturn4077define dso_local void @st_not_disjoint32_int8_t_uint64_t(i64 %ptr, i8 signext %str) {4078; CHECK-LABEL: st_not_disjoint32_int8_t_uint64_t:4079; CHECK:       # %bb.0: # %entry4080; CHECK-NEXT:    ori r3, r3, 344634081; CHECK-NEXT:    oris r3, r3, 14082; CHECK-NEXT:    std r4, 0(r3)4083; CHECK-NEXT:    blr4084entry:4085  %or = or i64 %ptr, 999994086  %0 = inttoptr i64 %or to ptr4087  %conv = sext i8 %str to i644088  store atomic i64 %conv, ptr %0 monotonic, align 84089  ret void4090}4091 4092; Function Attrs: nofree norecurse nounwind uwtable willreturn4093define dso_local void @st_disjoint_align32_int8_t_uint64_t(i64 %ptr, i8 signext %str) {4094; CHECK-P10-LABEL: st_disjoint_align32_int8_t_uint64_t:4095; CHECK-P10:       # %bb.0: # %entry4096; CHECK-P10-NEXT:    lis r5, -152644097; CHECK-P10-NEXT:    and r3, r3, r54098; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 04099; CHECK-P10-NEXT:    blr4100;4101; CHECK-PREP10-LABEL: st_disjoint_align32_int8_t_uint64_t:4102; CHECK-PREP10:       # %bb.0: # %entry4103; CHECK-PREP10-NEXT:    lis r5, -152644104; CHECK-PREP10-NEXT:    and r3, r3, r54105; CHECK-PREP10-NEXT:    lis r5, 152584106; CHECK-PREP10-NEXT:    ori r5, r5, 417124107; CHECK-PREP10-NEXT:    stdx r4, r3, r54108; CHECK-PREP10-NEXT:    blr4109entry:4110  %and = and i64 %ptr, -10003415044111  %or = or i64 %and, 9999900004112  %0 = inttoptr i64 %or to ptr4113  %conv = sext i8 %str to i644114  store atomic i64 %conv, ptr %0 monotonic, align 164115  ret void4116}4117 4118; Function Attrs: nofree norecurse nounwind uwtable willreturn4119define dso_local void @st_not_disjoint64_int8_t_uint64_t(i64 %ptr, i8 signext %str) {4120; CHECK-P10-LABEL: st_not_disjoint64_int8_t_uint64_t:4121; CHECK-P10:       # %bb.0: # %entry4122; CHECK-P10-NEXT:    pli r5, 2324123; CHECK-P10-NEXT:    pli r6, 35675873294124; CHECK-P10-NEXT:    rldimi r6, r5, 32, 04125; CHECK-P10-NEXT:    or r3, r3, r64126; CHECK-P10-NEXT:    std r4, 0(r3)4127; CHECK-P10-NEXT:    blr4128;4129; CHECK-PREP10-LABEL: st_not_disjoint64_int8_t_uint64_t:4130; CHECK-PREP10:       # %bb.0: # %entry4131; CHECK-PREP10-NEXT:    li r5, 294132; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 244133; CHECK-PREP10-NEXT:    oris r5, r5, 544374134; CHECK-PREP10-NEXT:    ori r5, r5, 40974135; CHECK-PREP10-NEXT:    or r3, r3, r54136; CHECK-PREP10-NEXT:    std r4, 0(r3)4137; CHECK-PREP10-NEXT:    blr4138entry:4139  %or = or i64 %ptr, 10000000000014140  %0 = inttoptr i64 %or to ptr4141  %conv = sext i8 %str to i644142  store atomic i64 %conv, ptr %0 monotonic, align 84143  ret void4144}4145 4146; Function Attrs: nofree norecurse nounwind uwtable willreturn4147define dso_local void @st_disjoint_align64_int8_t_uint64_t(i64 %ptr, i8 signext %str) {4148; CHECK-P10-LABEL: st_disjoint_align64_int8_t_uint64_t:4149; CHECK-P10:       # %bb.0: # %entry4150; CHECK-P10-NEXT:    pli r5, 2441406254151; CHECK-P10-NEXT:    rldicr r3, r3, 0, 234152; CHECK-P10-NEXT:    rldic r5, r5, 12, 244153; CHECK-P10-NEXT:    stdx r4, r3, r54154; CHECK-P10-NEXT:    blr4155;4156; CHECK-PREP10-LABEL: st_disjoint_align64_int8_t_uint64_t:4157; CHECK-PREP10:       # %bb.0: # %entry4158; CHECK-PREP10-NEXT:    lis r5, 37254159; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 234160; CHECK-PREP10-NEXT:    ori r5, r5, 190254161; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 244162; CHECK-PREP10-NEXT:    stdx r4, r3, r54163; CHECK-PREP10-NEXT:    blr4164entry:4165  %and = and i64 %ptr, -10995116277764166  %or = or i64 %and, 10000000000004167  %0 = inttoptr i64 %or to ptr4168  %conv = sext i8 %str to i644169  store atomic i64 %conv, ptr %0 monotonic, align 40964170  ret void4171}4172 4173; Function Attrs: nofree norecurse nounwind uwtable willreturn4174define dso_local void @st_cst_align16_int8_t_uint64_t(i8 signext %str) {4175; CHECK-LABEL: st_cst_align16_int8_t_uint64_t:4176; CHECK:       # %bb.0: # %entry4177; CHECK-NEXT:    std r3, 4080(0)4178; CHECK-NEXT:    blr4179entry:4180  %conv = sext i8 %str to i644181  store atomic i64 %conv, ptr inttoptr (i64 4080 to ptr) monotonic, align 164182  ret void4183}4184 4185; Function Attrs: nofree norecurse nounwind uwtable willreturn4186define dso_local void @st_cst_align32_int8_t_uint64_t(i8 signext %str) {4187; CHECK-LABEL: st_cst_align32_int8_t_uint64_t:4188; CHECK:       # %bb.0: # %entry4189; CHECK-NEXT:    lis r4, 1534190; CHECK-NEXT:    std r3, -27108(r4)4191; CHECK-NEXT:    blr4192entry:4193  %conv = sext i8 %str to i644194  store atomic i64 %conv, ptr inttoptr (i64 9999900 to ptr) monotonic, align 84195  ret void4196}4197 4198; Function Attrs: nofree norecurse nounwind uwtable willreturn4199define dso_local void @st_cst_align64_int8_t_uint64_t(i8 signext %str) {4200; CHECK-P10-LABEL: st_cst_align64_int8_t_uint64_t:4201; CHECK-P10:       # %bb.0: # %entry4202; CHECK-P10-NEXT:    pli r4, 2441406254203; CHECK-P10-NEXT:    rldic r4, r4, 12, 244204; CHECK-P10-NEXT:    std r3, 0(r4)4205; CHECK-P10-NEXT:    blr4206;4207; CHECK-PREP10-LABEL: st_cst_align64_int8_t_uint64_t:4208; CHECK-PREP10:       # %bb.0: # %entry4209; CHECK-PREP10-NEXT:    lis r4, 37254210; CHECK-PREP10-NEXT:    ori r4, r4, 190254211; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 244212; CHECK-PREP10-NEXT:    std r3, 0(r4)4213; CHECK-PREP10-NEXT:    blr4214entry:4215  %conv = sext i8 %str to i644216  store atomic i64 %conv, ptr inttoptr (i64 1000000000000 to ptr) monotonic, align 40964217  ret void4218}4219