brintos

brintos / llvm-project-archived public Read only

0
0
Text · 316.3 KiB · 59a8455 Raw
9497 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-P10,CHECK-LE,CHECK-P10-LE5; 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-P10,CHECK-BE,CHECK-P10-BE8; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \9; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \10; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P9,CHECK-LE,CHECK-P9-LE11; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \12; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \13; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P9,CHECK-BE,CHECK-P9-BE14; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \15; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \16; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8,CHECK-LE,CHECK-P8-LE17; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \18; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \19; RUN:   < %s | FileCheck %s --check-prefixes=CHECK,CHECK-PREP10,CHECK-P8,CHECK-BE,CHECK-P8-BE20 21; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 131  ret i8 %132}33 34; Function Attrs: norecurse nounwind readonly 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 i8, ptr %add.ptr, align 144  ret i8 %045}46 47; Function Attrs: norecurse nounwind readonly 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 i8, ptr %add.ptr, align 165  ret i8 %066}67 68; Function Attrs: norecurse nounwind readonly 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 i8, ptr %add.ptr, align 189  ret i8 %090}91 92; Function Attrs: norecurse nounwind readonly 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 i8, ptr %add.ptr, align 1102  ret i8 %0103}104 105; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 1118  ret i8 %1119}120 121; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 1133  ret i8 %1134}135 136; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 8149  ret i8 %1150}151 152; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 1165  ret i8 %1166}167 168; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 16192  ret i8 %1193}194 195; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 1221  ret i8 %1222}223 224; Function Attrs: norecurse nounwind readonly 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 i8, ptr %0, align 4096249  ret i8 %1250}251 252; Function Attrs: norecurse nounwind readonly 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 i8, ptr inttoptr (i64 4080 to ptr), align 16261  ret i8 %0262}263 264; Function Attrs: norecurse nounwind readonly 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 i8, ptr inttoptr (i64 9999900 to ptr), align 4274  ret i8 %0275}276 277; Function Attrs: norecurse nounwind readonly 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 i8, ptr inttoptr (i64 1000000000000 to ptr), align 4096297  ret i8 %0298}299 300; Function Attrs: norecurse nounwind readonly uwtable willreturn301define dso_local signext i8 @ld_0_int8_t_uint16_t(i64 %ptr) {302; CHECK-LE-LABEL: ld_0_int8_t_uint16_t:303; CHECK-LE:       # %bb.0: # %entry304; CHECK-LE-NEXT:    lbz r3, 0(r3)305; CHECK-LE-NEXT:    extsb r3, r3306; CHECK-LE-NEXT:    blr307;308; CHECK-BE-LABEL: ld_0_int8_t_uint16_t:309; CHECK-BE:       # %bb.0: # %entry310; CHECK-BE-NEXT:    lbz r3, 1(r3)311; CHECK-BE-NEXT:    extsb r3, r3312; CHECK-BE-NEXT:    blr313entry:314  %0 = inttoptr i64 %ptr to ptr315  %1 = load i16, ptr %0, align 2316  %conv = trunc i16 %1 to i8317  ret i8 %conv318}319 320; Function Attrs: norecurse nounwind readonly uwtable willreturn321define dso_local signext i8 @ld_align16_int8_t_uint16_t(ptr nocapture readonly %ptr) {322; CHECK-LE-LABEL: ld_align16_int8_t_uint16_t:323; CHECK-LE:       # %bb.0: # %entry324; CHECK-LE-NEXT:    lbz r3, 8(r3)325; CHECK-LE-NEXT:    extsb r3, r3326; CHECK-LE-NEXT:    blr327;328; CHECK-BE-LABEL: ld_align16_int8_t_uint16_t:329; CHECK-BE:       # %bb.0: # %entry330; CHECK-BE-NEXT:    lbz r3, 9(r3)331; CHECK-BE-NEXT:    extsb r3, r3332; CHECK-BE-NEXT:    blr333entry:334  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8335  %0 = load i16, ptr %add.ptr, align 2336  %conv = trunc i16 %0 to i8337  ret i8 %conv338}339 340; Function Attrs: norecurse nounwind readonly uwtable willreturn341define dso_local signext i8 @ld_align32_int8_t_uint16_t(ptr nocapture readonly %ptr) {342; CHECK-P10-LE-LABEL: ld_align32_int8_t_uint16_t:343; CHECK-P10-LE:       # %bb.0: # %entry344; CHECK-P10-LE-NEXT:    plbz r3, 99999000(r3), 0345; CHECK-P10-LE-NEXT:    extsb r3, r3346; CHECK-P10-LE-NEXT:    blr347;348; CHECK-P10-BE-LABEL: ld_align32_int8_t_uint16_t:349; CHECK-P10-BE:       # %bb.0: # %entry350; CHECK-P10-BE-NEXT:    plbz r3, 99999001(r3), 0351; CHECK-P10-BE-NEXT:    extsb r3, r3352; CHECK-P10-BE-NEXT:    blr353;354; CHECK-P9-LE-LABEL: ld_align32_int8_t_uint16_t:355; CHECK-P9-LE:       # %bb.0: # %entry356; CHECK-P9-LE-NEXT:    lis r4, 1525357; CHECK-P9-LE-NEXT:    ori r4, r4, 56600358; CHECK-P9-LE-NEXT:    lbzx r3, r3, r4359; CHECK-P9-LE-NEXT:    extsb r3, r3360; CHECK-P9-LE-NEXT:    blr361;362; CHECK-P9-BE-LABEL: ld_align32_int8_t_uint16_t:363; CHECK-P9-BE:       # %bb.0: # %entry364; CHECK-P9-BE-NEXT:    lis r4, 1525365; CHECK-P9-BE-NEXT:    ori r4, r4, 56601366; CHECK-P9-BE-NEXT:    lbzx r3, r3, r4367; CHECK-P9-BE-NEXT:    extsb r3, r3368; CHECK-P9-BE-NEXT:    blr369;370; CHECK-P8-LE-LABEL: ld_align32_int8_t_uint16_t:371; CHECK-P8-LE:       # %bb.0: # %entry372; CHECK-P8-LE-NEXT:    lis r4, 1525373; CHECK-P8-LE-NEXT:    ori r4, r4, 56600374; CHECK-P8-LE-NEXT:    lbzx r3, r3, r4375; CHECK-P8-LE-NEXT:    extsb r3, r3376; CHECK-P8-LE-NEXT:    blr377;378; CHECK-P8-BE-LABEL: ld_align32_int8_t_uint16_t:379; CHECK-P8-BE:       # %bb.0: # %entry380; CHECK-P8-BE-NEXT:    lis r4, 1525381; CHECK-P8-BE-NEXT:    ori r4, r4, 56601382; CHECK-P8-BE-NEXT:    lbzx r3, r3, r4383; CHECK-P8-BE-NEXT:    extsb r3, r3384; CHECK-P8-BE-NEXT:    blr385entry:386  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000387  %0 = load i16, ptr %add.ptr, align 2388  %conv = trunc i16 %0 to i8389  ret i8 %conv390}391 392; Function Attrs: norecurse nounwind readonly uwtable willreturn393define dso_local signext i8 @ld_align64_int8_t_uint16_t(ptr nocapture readonly %ptr) {394; CHECK-P10-LE-LABEL: ld_align64_int8_t_uint16_t:395; CHECK-P10-LE:       # %bb.0: # %entry396; CHECK-P10-LE-NEXT:    pli r4, 244140625397; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 24398; CHECK-P10-LE-NEXT:    lbzx r3, r3, r4399; CHECK-P10-LE-NEXT:    extsb r3, r3400; CHECK-P10-LE-NEXT:    blr401;402; CHECK-P10-BE-LABEL: ld_align64_int8_t_uint16_t:403; CHECK-P10-BE:       # %bb.0: # %entry404; CHECK-P10-BE-NEXT:    pli r4, 232405; CHECK-P10-BE-NEXT:    pli r5, 3567587329406; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 0407; CHECK-P10-BE-NEXT:    lbzx r3, r3, r5408; CHECK-P10-BE-NEXT:    extsb r3, r3409; CHECK-P10-BE-NEXT:    blr410;411; CHECK-P9-LE-LABEL: ld_align64_int8_t_uint16_t:412; CHECK-P9-LE:       # %bb.0: # %entry413; CHECK-P9-LE-NEXT:    lis r4, 3725414; CHECK-P9-LE-NEXT:    ori r4, r4, 19025415; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 24416; CHECK-P9-LE-NEXT:    lbzx r3, r3, r4417; CHECK-P9-LE-NEXT:    extsb r3, r3418; CHECK-P9-LE-NEXT:    blr419;420; CHECK-P9-BE-LABEL: ld_align64_int8_t_uint16_t:421; CHECK-P9-BE:       # %bb.0: # %entry422; CHECK-P9-BE-NEXT:    li r4, 29423; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 24424; CHECK-P9-BE-NEXT:    oris r4, r4, 54437425; CHECK-P9-BE-NEXT:    ori r4, r4, 4097426; CHECK-P9-BE-NEXT:    lbzx r3, r3, r4427; CHECK-P9-BE-NEXT:    extsb r3, r3428; CHECK-P9-BE-NEXT:    blr429;430; CHECK-P8-LE-LABEL: ld_align64_int8_t_uint16_t:431; CHECK-P8-LE:       # %bb.0: # %entry432; CHECK-P8-LE-NEXT:    lis r4, 3725433; CHECK-P8-LE-NEXT:    ori r4, r4, 19025434; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 24435; CHECK-P8-LE-NEXT:    lbzx r3, r3, r4436; CHECK-P8-LE-NEXT:    extsb r3, r3437; CHECK-P8-LE-NEXT:    blr438;439; CHECK-P8-BE-LABEL: ld_align64_int8_t_uint16_t:440; CHECK-P8-BE:       # %bb.0: # %entry441; CHECK-P8-BE-NEXT:    li r4, 29442; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 24443; CHECK-P8-BE-NEXT:    oris r4, r4, 54437444; CHECK-P8-BE-NEXT:    ori r4, r4, 4097445; CHECK-P8-BE-NEXT:    lbzx r3, r3, r4446; CHECK-P8-BE-NEXT:    extsb r3, r3447; CHECK-P8-BE-NEXT:    blr448entry:449  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000450  %0 = load i16, ptr %add.ptr, align 2451  %conv = trunc i16 %0 to i8452  ret i8 %conv453}454 455; Function Attrs: norecurse nounwind readonly uwtable willreturn456define dso_local signext i8 @ld_reg_int8_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {457; CHECK-LE-LABEL: ld_reg_int8_t_uint16_t:458; CHECK-LE:       # %bb.0: # %entry459; CHECK-LE-NEXT:    lbzx r3, r3, r4460; CHECK-LE-NEXT:    extsb r3, r3461; CHECK-LE-NEXT:    blr462;463; CHECK-BE-LABEL: ld_reg_int8_t_uint16_t:464; CHECK-BE:       # %bb.0: # %entry465; CHECK-BE-NEXT:    add r3, r3, r4466; CHECK-BE-NEXT:    lbz r3, 1(r3)467; CHECK-BE-NEXT:    extsb r3, r3468; CHECK-BE-NEXT:    blr469entry:470  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off471  %0 = load i16, ptr %add.ptr, align 2472  %conv = trunc i16 %0 to i8473  ret i8 %conv474}475 476; Function Attrs: norecurse nounwind readonly uwtable willreturn477define dso_local signext i8 @ld_or_int8_t_uint16_t(i64 %ptr, i8 zeroext %off) {478; CHECK-LE-LABEL: ld_or_int8_t_uint16_t:479; CHECK-LE:       # %bb.0: # %entry480; CHECK-LE-NEXT:    or r3, r4, r3481; CHECK-LE-NEXT:    lbz r3, 0(r3)482; CHECK-LE-NEXT:    extsb r3, r3483; CHECK-LE-NEXT:    blr484;485; CHECK-BE-LABEL: ld_or_int8_t_uint16_t:486; CHECK-BE:       # %bb.0: # %entry487; CHECK-BE-NEXT:    or r3, r4, r3488; CHECK-BE-NEXT:    lbz r3, 1(r3)489; CHECK-BE-NEXT:    extsb r3, r3490; CHECK-BE-NEXT:    blr491entry:492  %conv = zext i8 %off to i64493  %or = or i64 %conv, %ptr494  %0 = inttoptr i64 %or to ptr495  %1 = load i16, ptr %0, align 2496  %conv1 = trunc i16 %1 to i8497  ret i8 %conv1498}499 500; Function Attrs: norecurse nounwind readonly uwtable willreturn501define dso_local signext i8 @ld_not_disjoint16_int8_t_uint16_t(i64 %ptr) {502; CHECK-LE-LABEL: ld_not_disjoint16_int8_t_uint16_t:503; CHECK-LE:       # %bb.0: # %entry504; CHECK-LE-NEXT:    ori r3, r3, 6505; CHECK-LE-NEXT:    lbz r3, 0(r3)506; CHECK-LE-NEXT:    extsb r3, r3507; CHECK-LE-NEXT:    blr508;509; CHECK-BE-LABEL: ld_not_disjoint16_int8_t_uint16_t:510; CHECK-BE:       # %bb.0: # %entry511; CHECK-BE-NEXT:    ori r3, r3, 6512; CHECK-BE-NEXT:    lbz r3, 1(r3)513; CHECK-BE-NEXT:    extsb r3, r3514; CHECK-BE-NEXT:    blr515entry:516  %or = or i64 %ptr, 6517  %0 = inttoptr i64 %or to ptr518  %1 = load i16, ptr %0, align 2519  %conv = trunc i16 %1 to i8520  ret i8 %conv521}522 523; Function Attrs: norecurse nounwind readonly uwtable willreturn524define dso_local signext i8 @ld_disjoint_align16_int8_t_uint16_t(i64 %ptr) {525; CHECK-LE-LABEL: ld_disjoint_align16_int8_t_uint16_t:526; CHECK-LE:       # %bb.0: # %entry527; CHECK-LE-NEXT:    rldicr r3, r3, 0, 51528; CHECK-LE-NEXT:    lbz r3, 24(r3)529; CHECK-LE-NEXT:    extsb r3, r3530; CHECK-LE-NEXT:    blr531;532; CHECK-BE-LABEL: ld_disjoint_align16_int8_t_uint16_t:533; CHECK-BE:       # %bb.0: # %entry534; CHECK-BE-NEXT:    rldicr r3, r3, 0, 51535; CHECK-BE-NEXT:    lbz r3, 25(r3)536; CHECK-BE-NEXT:    extsb r3, r3537; CHECK-BE-NEXT:    blr538entry:539  %and = and i64 %ptr, -4096540  %or = or i64 %and, 24541  %0 = inttoptr i64 %or to ptr542  %1 = load i16, ptr %0, align 8543  %conv = trunc i16 %1 to i8544  ret i8 %conv545}546 547; Function Attrs: norecurse nounwind readonly uwtable willreturn548define dso_local signext i8 @ld_not_disjoint32_int8_t_uint16_t(i64 %ptr) {549; CHECK-LE-LABEL: ld_not_disjoint32_int8_t_uint16_t:550; CHECK-LE:       # %bb.0: # %entry551; CHECK-LE-NEXT:    ori r3, r3, 34463552; CHECK-LE-NEXT:    oris r3, r3, 1553; CHECK-LE-NEXT:    lbz r3, 0(r3)554; CHECK-LE-NEXT:    extsb r3, r3555; CHECK-LE-NEXT:    blr556;557; CHECK-BE-LABEL: ld_not_disjoint32_int8_t_uint16_t:558; CHECK-BE:       # %bb.0: # %entry559; CHECK-BE-NEXT:    ori r3, r3, 34463560; CHECK-BE-NEXT:    oris r3, r3, 1561; CHECK-BE-NEXT:    lbz r3, 1(r3)562; CHECK-BE-NEXT:    extsb r3, r3563; CHECK-BE-NEXT:    blr564entry:565  %or = or i64 %ptr, 99999566  %0 = inttoptr i64 %or to ptr567  %1 = load i16, ptr %0, align 2568  %conv = trunc i16 %1 to i8569  ret i8 %conv570}571 572; Function Attrs: norecurse nounwind readonly uwtable willreturn573define dso_local signext i8 @ld_disjoint_align32_int8_t_uint16_t(i64 %ptr) {574; CHECK-P10-LE-LABEL: ld_disjoint_align32_int8_t_uint16_t:575; CHECK-P10-LE:       # %bb.0: # %entry576; CHECK-P10-LE-NEXT:    lis r4, -15264577; CHECK-P10-LE-NEXT:    and r3, r3, r4578; CHECK-P10-LE-NEXT:    plbz r3, 999990000(r3), 0579; CHECK-P10-LE-NEXT:    extsb r3, r3580; CHECK-P10-LE-NEXT:    blr581;582; CHECK-P10-BE-LABEL: ld_disjoint_align32_int8_t_uint16_t:583; CHECK-P10-BE:       # %bb.0: # %entry584; CHECK-P10-BE-NEXT:    lis r4, -15264585; CHECK-P10-BE-NEXT:    and r3, r3, r4586; CHECK-P10-BE-NEXT:    plbz r3, 999990001(r3), 0587; CHECK-P10-BE-NEXT:    extsb r3, r3588; CHECK-P10-BE-NEXT:    blr589;590; CHECK-P9-LE-LABEL: ld_disjoint_align32_int8_t_uint16_t:591; CHECK-P9-LE:       # %bb.0: # %entry592; CHECK-P9-LE-NEXT:    lis r4, -15264593; CHECK-P9-LE-NEXT:    and r3, r3, r4594; CHECK-P9-LE-NEXT:    lis r4, 15258595; CHECK-P9-LE-NEXT:    ori r4, r4, 41712596; CHECK-P9-LE-NEXT:    lbzx r3, r3, r4597; CHECK-P9-LE-NEXT:    extsb r3, r3598; CHECK-P9-LE-NEXT:    blr599;600; CHECK-P9-BE-LABEL: ld_disjoint_align32_int8_t_uint16_t:601; CHECK-P9-BE:       # %bb.0: # %entry602; CHECK-P9-BE-NEXT:    lis r4, -15264603; CHECK-P9-BE-NEXT:    and r3, r3, r4604; CHECK-P9-BE-NEXT:    lis r4, 15258605; CHECK-P9-BE-NEXT:    ori r4, r4, 41713606; CHECK-P9-BE-NEXT:    lbzx r3, r3, r4607; CHECK-P9-BE-NEXT:    extsb r3, r3608; CHECK-P9-BE-NEXT:    blr609;610; CHECK-P8-LE-LABEL: ld_disjoint_align32_int8_t_uint16_t:611; CHECK-P8-LE:       # %bb.0: # %entry612; CHECK-P8-LE-NEXT:    lis r4, -15264613; CHECK-P8-LE-NEXT:    and r3, r3, r4614; CHECK-P8-LE-NEXT:    lis r4, 15258615; CHECK-P8-LE-NEXT:    ori r4, r4, 41712616; CHECK-P8-LE-NEXT:    lbzx r3, r3, r4617; CHECK-P8-LE-NEXT:    extsb r3, r3618; CHECK-P8-LE-NEXT:    blr619;620; CHECK-P8-BE-LABEL: ld_disjoint_align32_int8_t_uint16_t:621; CHECK-P8-BE:       # %bb.0: # %entry622; CHECK-P8-BE-NEXT:    lis r4, -15264623; CHECK-P8-BE-NEXT:    and r3, r3, r4624; CHECK-P8-BE-NEXT:    lis r4, 15258625; CHECK-P8-BE-NEXT:    ori r4, r4, 41713626; CHECK-P8-BE-NEXT:    lbzx r3, r3, r4627; CHECK-P8-BE-NEXT:    extsb r3, r3628; CHECK-P8-BE-NEXT:    blr629entry:630  %and = and i64 %ptr, -1000341504631  %or = or i64 %and, 999990000632  %0 = inttoptr i64 %or to ptr633  %1 = load i16, ptr %0, align 16634  %conv = trunc i16 %1 to i8635  ret i8 %conv636}637 638; Function Attrs: norecurse nounwind readonly uwtable willreturn639define dso_local signext i8 @ld_not_disjoint64_int8_t_uint16_t(i64 %ptr) {640; CHECK-P10-LE-LABEL: ld_not_disjoint64_int8_t_uint16_t:641; CHECK-P10-LE:       # %bb.0: # %entry642; CHECK-P10-LE-NEXT:    pli r4, 232643; CHECK-P10-LE-NEXT:    pli r5, 3567587329644; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 0645; CHECK-P10-LE-NEXT:    or r3, r3, r5646; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)647; CHECK-P10-LE-NEXT:    extsb r3, r3648; CHECK-P10-LE-NEXT:    blr649;650; CHECK-P10-BE-LABEL: ld_not_disjoint64_int8_t_uint16_t:651; CHECK-P10-BE:       # %bb.0: # %entry652; CHECK-P10-BE-NEXT:    pli r4, 232653; CHECK-P10-BE-NEXT:    pli r5, 3567587329654; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 0655; CHECK-P10-BE-NEXT:    or r3, r3, r5656; CHECK-P10-BE-NEXT:    lbz r3, 1(r3)657; CHECK-P10-BE-NEXT:    extsb r3, r3658; CHECK-P10-BE-NEXT:    blr659;660; CHECK-P9-LE-LABEL: ld_not_disjoint64_int8_t_uint16_t:661; CHECK-P9-LE:       # %bb.0: # %entry662; CHECK-P9-LE-NEXT:    li r4, 29663; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 24664; CHECK-P9-LE-NEXT:    oris r4, r4, 54437665; CHECK-P9-LE-NEXT:    ori r4, r4, 4097666; CHECK-P9-LE-NEXT:    or r3, r3, r4667; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)668; CHECK-P9-LE-NEXT:    extsb r3, r3669; CHECK-P9-LE-NEXT:    blr670;671; CHECK-P9-BE-LABEL: ld_not_disjoint64_int8_t_uint16_t:672; CHECK-P9-BE:       # %bb.0: # %entry673; CHECK-P9-BE-NEXT:    li r4, 29674; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 24675; CHECK-P9-BE-NEXT:    oris r4, r4, 54437676; CHECK-P9-BE-NEXT:    ori r4, r4, 4097677; CHECK-P9-BE-NEXT:    or r3, r3, r4678; CHECK-P9-BE-NEXT:    lbz r3, 1(r3)679; CHECK-P9-BE-NEXT:    extsb r3, r3680; CHECK-P9-BE-NEXT:    blr681;682; CHECK-P8-LE-LABEL: ld_not_disjoint64_int8_t_uint16_t:683; CHECK-P8-LE:       # %bb.0: # %entry684; CHECK-P8-LE-NEXT:    li r4, 29685; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 24686; CHECK-P8-LE-NEXT:    oris r4, r4, 54437687; CHECK-P8-LE-NEXT:    ori r4, r4, 4097688; CHECK-P8-LE-NEXT:    or r3, r3, r4689; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)690; CHECK-P8-LE-NEXT:    extsb r3, r3691; CHECK-P8-LE-NEXT:    blr692;693; CHECK-P8-BE-LABEL: ld_not_disjoint64_int8_t_uint16_t:694; CHECK-P8-BE:       # %bb.0: # %entry695; CHECK-P8-BE-NEXT:    li r4, 29696; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 24697; CHECK-P8-BE-NEXT:    oris r4, r4, 54437698; CHECK-P8-BE-NEXT:    ori r4, r4, 4097699; CHECK-P8-BE-NEXT:    or r3, r3, r4700; CHECK-P8-BE-NEXT:    lbz r3, 1(r3)701; CHECK-P8-BE-NEXT:    extsb r3, r3702; CHECK-P8-BE-NEXT:    blr703entry:704  %or = or i64 %ptr, 1000000000001705  %0 = inttoptr i64 %or to ptr706  %1 = load i16, ptr %0, align 2707  %conv = trunc i16 %1 to i8708  ret i8 %conv709}710 711; Function Attrs: norecurse nounwind readonly uwtable willreturn712define dso_local signext i8 @ld_disjoint_align64_int8_t_uint16_t(i64 %ptr) {713; CHECK-P10-LE-LABEL: ld_disjoint_align64_int8_t_uint16_t:714; CHECK-P10-LE:       # %bb.0: # %entry715; CHECK-P10-LE-NEXT:    pli r4, 244140625716; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 23717; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 24718; CHECK-P10-LE-NEXT:    lbzx r3, r3, r4719; CHECK-P10-LE-NEXT:    extsb r3, r3720; CHECK-P10-LE-NEXT:    blr721;722; CHECK-P10-BE-LABEL: ld_disjoint_align64_int8_t_uint16_t:723; CHECK-P10-BE:       # %bb.0: # %entry724; CHECK-P10-BE-NEXT:    pli r4, 232725; CHECK-P10-BE-NEXT:    pli r5, 3567587329726; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 23727; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 0728; CHECK-P10-BE-NEXT:    lbzx r3, r3, r5729; CHECK-P10-BE-NEXT:    extsb r3, r3730; CHECK-P10-BE-NEXT:    blr731;732; CHECK-P9-LE-LABEL: ld_disjoint_align64_int8_t_uint16_t:733; CHECK-P9-LE:       # %bb.0: # %entry734; CHECK-P9-LE-NEXT:    lis r4, 3725735; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 23736; CHECK-P9-LE-NEXT:    ori r4, r4, 19025737; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 24738; CHECK-P9-LE-NEXT:    lbzx r3, r3, r4739; CHECK-P9-LE-NEXT:    extsb r3, r3740; CHECK-P9-LE-NEXT:    blr741;742; CHECK-P9-BE-LABEL: ld_disjoint_align64_int8_t_uint16_t:743; CHECK-P9-BE:       # %bb.0: # %entry744; CHECK-P9-BE-NEXT:    li r4, 29745; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 23746; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 24747; CHECK-P9-BE-NEXT:    oris r4, r4, 54437748; CHECK-P9-BE-NEXT:    ori r4, r4, 4097749; CHECK-P9-BE-NEXT:    lbzx r3, r3, r4750; CHECK-P9-BE-NEXT:    extsb r3, r3751; CHECK-P9-BE-NEXT:    blr752;753; CHECK-P8-LE-LABEL: ld_disjoint_align64_int8_t_uint16_t:754; CHECK-P8-LE:       # %bb.0: # %entry755; CHECK-P8-LE-NEXT:    lis r4, 3725756; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 23757; CHECK-P8-LE-NEXT:    ori r4, r4, 19025758; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 24759; CHECK-P8-LE-NEXT:    lbzx r3, r3, r4760; CHECK-P8-LE-NEXT:    extsb r3, r3761; CHECK-P8-LE-NEXT:    blr762;763; CHECK-P8-BE-LABEL: ld_disjoint_align64_int8_t_uint16_t:764; CHECK-P8-BE:       # %bb.0: # %entry765; CHECK-P8-BE-NEXT:    li r4, 29766; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 23767; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 24768; CHECK-P8-BE-NEXT:    oris r4, r4, 54437769; CHECK-P8-BE-NEXT:    ori r4, r4, 4097770; CHECK-P8-BE-NEXT:    lbzx r3, r3, r4771; CHECK-P8-BE-NEXT:    extsb r3, r3772; CHECK-P8-BE-NEXT:    blr773entry:774  %and = and i64 %ptr, -1099511627776775  %or = or i64 %and, 1000000000000776  %0 = inttoptr i64 %or to ptr777  %1 = load i16, ptr %0, align 4096778  %conv = trunc i16 %1 to i8779  ret i8 %conv780}781 782; Function Attrs: norecurse nounwind readonly uwtable willreturn783define dso_local signext i8 @ld_cst_align16_int8_t_uint16_t() {784; CHECK-LE-LABEL: ld_cst_align16_int8_t_uint16_t:785; CHECK-LE:       # %bb.0: # %entry786; CHECK-LE-NEXT:    lbz r3, 4080(0)787; CHECK-LE-NEXT:    extsb r3, r3788; CHECK-LE-NEXT:    blr789;790; CHECK-BE-LABEL: ld_cst_align16_int8_t_uint16_t:791; CHECK-BE:       # %bb.0: # %entry792; CHECK-BE-NEXT:    lbz r3, 4081(0)793; CHECK-BE-NEXT:    extsb r3, r3794; CHECK-BE-NEXT:    blr795entry:796  %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 16797  %conv = trunc i16 %0 to i8798  ret i8 %conv799}800 801; Function Attrs: norecurse nounwind readonly uwtable willreturn802define dso_local signext i8 @ld_cst_align32_int8_t_uint16_t() {803; CHECK-LE-LABEL: ld_cst_align32_int8_t_uint16_t:804; CHECK-LE:       # %bb.0: # %entry805; CHECK-LE-NEXT:    lis r3, 153806; CHECK-LE-NEXT:    lbz r3, -27108(r3)807; CHECK-LE-NEXT:    extsb r3, r3808; CHECK-LE-NEXT:    blr809;810; CHECK-BE-LABEL: ld_cst_align32_int8_t_uint16_t:811; CHECK-BE:       # %bb.0: # %entry812; CHECK-BE-NEXT:    lis r3, 153813; CHECK-BE-NEXT:    lbz r3, -27107(r3)814; CHECK-BE-NEXT:    extsb r3, r3815; CHECK-BE-NEXT:    blr816entry:817  %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 4818  %conv = trunc i16 %0 to i8819  ret i8 %conv820}821 822; Function Attrs: norecurse nounwind readonly uwtable willreturn823define dso_local signext i8 @ld_cst_align64_int8_t_uint16_t() {824; CHECK-P10-LE-LABEL: ld_cst_align64_int8_t_uint16_t:825; CHECK-P10-LE:       # %bb.0: # %entry826; CHECK-P10-LE-NEXT:    pli r3, 244140625827; CHECK-P10-LE-NEXT:    rldic r3, r3, 12, 24828; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)829; CHECK-P10-LE-NEXT:    extsb r3, r3830; CHECK-P10-LE-NEXT:    blr831;832; CHECK-P10-BE-LABEL: ld_cst_align64_int8_t_uint16_t:833; CHECK-P10-BE:       # %bb.0: # %entry834; CHECK-P10-BE-NEXT:    pli r3, 232835; CHECK-P10-BE-NEXT:    pli r4, 3567587329836; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 0837; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)838; CHECK-P10-BE-NEXT:    extsb r3, r3839; CHECK-P10-BE-NEXT:    blr840;841; CHECK-P9-LE-LABEL: ld_cst_align64_int8_t_uint16_t:842; CHECK-P9-LE:       # %bb.0: # %entry843; CHECK-P9-LE-NEXT:    lis r3, 3725844; CHECK-P9-LE-NEXT:    ori r3, r3, 19025845; CHECK-P9-LE-NEXT:    rldic r3, r3, 12, 24846; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)847; CHECK-P9-LE-NEXT:    extsb r3, r3848; CHECK-P9-LE-NEXT:    blr849;850; CHECK-P9-BE-LABEL: ld_cst_align64_int8_t_uint16_t:851; CHECK-P9-BE:       # %bb.0: # %entry852; CHECK-P9-BE-NEXT:    li r3, 29853; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 24854; CHECK-P9-BE-NEXT:    oris r3, r3, 54437855; CHECK-P9-BE-NEXT:    ori r3, r3, 4097856; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)857; CHECK-P9-BE-NEXT:    extsb r3, r3858; CHECK-P9-BE-NEXT:    blr859;860; CHECK-P8-LE-LABEL: ld_cst_align64_int8_t_uint16_t:861; CHECK-P8-LE:       # %bb.0: # %entry862; CHECK-P8-LE-NEXT:    lis r3, 3725863; CHECK-P8-LE-NEXT:    ori r3, r3, 19025864; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 24865; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)866; CHECK-P8-LE-NEXT:    extsb r3, r3867; CHECK-P8-LE-NEXT:    blr868;869; CHECK-P8-BE-LABEL: ld_cst_align64_int8_t_uint16_t:870; CHECK-P8-BE:       # %bb.0: # %entry871; CHECK-P8-BE-NEXT:    li r3, 29872; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 24873; CHECK-P8-BE-NEXT:    oris r3, r3, 54437874; CHECK-P8-BE-NEXT:    ori r3, r3, 4097875; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)876; CHECK-P8-BE-NEXT:    extsb r3, r3877; CHECK-P8-BE-NEXT:    blr878entry:879  %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 4096880  %conv = trunc i16 %0 to i8881  ret i8 %conv882}883 884; Function Attrs: norecurse nounwind readonly uwtable willreturn885define dso_local signext i8 @ld_0_int8_t_uint32_t(i64 %ptr) {886; CHECK-LE-LABEL: ld_0_int8_t_uint32_t:887; CHECK-LE:       # %bb.0: # %entry888; CHECK-LE-NEXT:    lbz r3, 0(r3)889; CHECK-LE-NEXT:    extsb r3, r3890; CHECK-LE-NEXT:    blr891;892; CHECK-BE-LABEL: ld_0_int8_t_uint32_t:893; CHECK-BE:       # %bb.0: # %entry894; CHECK-BE-NEXT:    lbz r3, 3(r3)895; CHECK-BE-NEXT:    extsb r3, r3896; CHECK-BE-NEXT:    blr897entry:898  %0 = inttoptr i64 %ptr to ptr899  %1 = load i32, ptr %0, align 4900  %conv = trunc i32 %1 to i8901  ret i8 %conv902}903 904; Function Attrs: norecurse nounwind readonly uwtable willreturn905define dso_local signext i8 @ld_align16_int8_t_uint32_t(ptr nocapture readonly %ptr) {906; CHECK-LE-LABEL: ld_align16_int8_t_uint32_t:907; CHECK-LE:       # %bb.0: # %entry908; CHECK-LE-NEXT:    lbz r3, 8(r3)909; CHECK-LE-NEXT:    extsb r3, r3910; CHECK-LE-NEXT:    blr911;912; CHECK-BE-LABEL: ld_align16_int8_t_uint32_t:913; CHECK-BE:       # %bb.0: # %entry914; CHECK-BE-NEXT:    lbz r3, 11(r3)915; CHECK-BE-NEXT:    extsb r3, r3916; CHECK-BE-NEXT:    blr917entry:918  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8919  %0 = load i32, ptr %add.ptr, align 4920  %conv = trunc i32 %0 to i8921  ret i8 %conv922}923 924; Function Attrs: norecurse nounwind readonly uwtable willreturn925define dso_local signext i8 @ld_align32_int8_t_uint32_t(ptr nocapture readonly %ptr) {926; CHECK-P10-LE-LABEL: ld_align32_int8_t_uint32_t:927; CHECK-P10-LE:       # %bb.0: # %entry928; CHECK-P10-LE-NEXT:    plbz r3, 99999000(r3), 0929; CHECK-P10-LE-NEXT:    extsb r3, r3930; CHECK-P10-LE-NEXT:    blr931;932; CHECK-P10-BE-LABEL: ld_align32_int8_t_uint32_t:933; CHECK-P10-BE:       # %bb.0: # %entry934; CHECK-P10-BE-NEXT:    plbz r3, 99999003(r3), 0935; CHECK-P10-BE-NEXT:    extsb r3, r3936; CHECK-P10-BE-NEXT:    blr937;938; CHECK-P9-LE-LABEL: ld_align32_int8_t_uint32_t:939; CHECK-P9-LE:       # %bb.0: # %entry940; CHECK-P9-LE-NEXT:    lis r4, 1525941; CHECK-P9-LE-NEXT:    ori r4, r4, 56600942; CHECK-P9-LE-NEXT:    lbzx r3, r3, r4943; CHECK-P9-LE-NEXT:    extsb r3, r3944; CHECK-P9-LE-NEXT:    blr945;946; CHECK-P9-BE-LABEL: ld_align32_int8_t_uint32_t:947; CHECK-P9-BE:       # %bb.0: # %entry948; CHECK-P9-BE-NEXT:    lis r4, 1525949; CHECK-P9-BE-NEXT:    ori r4, r4, 56603950; CHECK-P9-BE-NEXT:    lbzx r3, r3, r4951; CHECK-P9-BE-NEXT:    extsb r3, r3952; CHECK-P9-BE-NEXT:    blr953;954; CHECK-P8-LE-LABEL: ld_align32_int8_t_uint32_t:955; CHECK-P8-LE:       # %bb.0: # %entry956; CHECK-P8-LE-NEXT:    lis r4, 1525957; CHECK-P8-LE-NEXT:    ori r4, r4, 56600958; CHECK-P8-LE-NEXT:    lbzx r3, r3, r4959; CHECK-P8-LE-NEXT:    extsb r3, r3960; CHECK-P8-LE-NEXT:    blr961;962; CHECK-P8-BE-LABEL: ld_align32_int8_t_uint32_t:963; CHECK-P8-BE:       # %bb.0: # %entry964; CHECK-P8-BE-NEXT:    lis r4, 1525965; CHECK-P8-BE-NEXT:    ori r4, r4, 56603966; CHECK-P8-BE-NEXT:    lbzx r3, r3, r4967; CHECK-P8-BE-NEXT:    extsb r3, r3968; CHECK-P8-BE-NEXT:    blr969entry:970  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000971  %0 = load i32, ptr %add.ptr, align 4972  %conv = trunc i32 %0 to i8973  ret i8 %conv974}975 976; Function Attrs: norecurse nounwind readonly uwtable willreturn977define dso_local signext i8 @ld_align64_int8_t_uint32_t(ptr nocapture readonly %ptr) {978; CHECK-P10-LE-LABEL: ld_align64_int8_t_uint32_t:979; CHECK-P10-LE:       # %bb.0: # %entry980; CHECK-P10-LE-NEXT:    pli r4, 244140625981; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 24982; CHECK-P10-LE-NEXT:    lbzx r3, r3, r4983; CHECK-P10-LE-NEXT:    extsb r3, r3984; CHECK-P10-LE-NEXT:    blr985;986; CHECK-P10-BE-LABEL: ld_align64_int8_t_uint32_t:987; CHECK-P10-BE:       # %bb.0: # %entry988; CHECK-P10-BE-NEXT:    pli r4, 232989; CHECK-P10-BE-NEXT:    pli r5, 3567587331990; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 0991; CHECK-P10-BE-NEXT:    lbzx r3, r3, r5992; CHECK-P10-BE-NEXT:    extsb r3, r3993; CHECK-P10-BE-NEXT:    blr994;995; CHECK-P9-LE-LABEL: ld_align64_int8_t_uint32_t:996; CHECK-P9-LE:       # %bb.0: # %entry997; CHECK-P9-LE-NEXT:    lis r4, 3725998; CHECK-P9-LE-NEXT:    ori r4, r4, 19025999; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 241000; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41001; CHECK-P9-LE-NEXT:    extsb r3, r31002; CHECK-P9-LE-NEXT:    blr1003;1004; CHECK-P9-BE-LABEL: ld_align64_int8_t_uint32_t:1005; CHECK-P9-BE:       # %bb.0: # %entry1006; CHECK-P9-BE-NEXT:    li r4, 291007; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 241008; CHECK-P9-BE-NEXT:    oris r4, r4, 544371009; CHECK-P9-BE-NEXT:    ori r4, r4, 40991010; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41011; CHECK-P9-BE-NEXT:    extsb r3, r31012; CHECK-P9-BE-NEXT:    blr1013;1014; CHECK-P8-LE-LABEL: ld_align64_int8_t_uint32_t:1015; CHECK-P8-LE:       # %bb.0: # %entry1016; CHECK-P8-LE-NEXT:    lis r4, 37251017; CHECK-P8-LE-NEXT:    ori r4, r4, 190251018; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 241019; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41020; CHECK-P8-LE-NEXT:    extsb r3, r31021; CHECK-P8-LE-NEXT:    blr1022;1023; CHECK-P8-BE-LABEL: ld_align64_int8_t_uint32_t:1024; CHECK-P8-BE:       # %bb.0: # %entry1025; CHECK-P8-BE-NEXT:    li r4, 291026; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241027; CHECK-P8-BE-NEXT:    oris r4, r4, 544371028; CHECK-P8-BE-NEXT:    ori r4, r4, 40991029; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41030; CHECK-P8-BE-NEXT:    extsb r3, r31031; CHECK-P8-BE-NEXT:    blr1032entry:1033  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001034  %0 = load i32, ptr %add.ptr, align 41035  %conv = trunc i32 %0 to i81036  ret i8 %conv1037}1038 1039; Function Attrs: norecurse nounwind readonly uwtable willreturn1040define dso_local signext i8 @ld_reg_int8_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {1041; CHECK-LE-LABEL: ld_reg_int8_t_uint32_t:1042; CHECK-LE:       # %bb.0: # %entry1043; CHECK-LE-NEXT:    lbzx r3, r3, r41044; CHECK-LE-NEXT:    extsb r3, r31045; CHECK-LE-NEXT:    blr1046;1047; CHECK-BE-LABEL: ld_reg_int8_t_uint32_t:1048; CHECK-BE:       # %bb.0: # %entry1049; CHECK-BE-NEXT:    add r3, r3, r41050; CHECK-BE-NEXT:    lbz r3, 3(r3)1051; CHECK-BE-NEXT:    extsb r3, r31052; CHECK-BE-NEXT:    blr1053entry:1054  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1055  %0 = load i32, ptr %add.ptr, align 41056  %conv = trunc i32 %0 to i81057  ret i8 %conv1058}1059 1060; Function Attrs: norecurse nounwind readonly uwtable willreturn1061define dso_local signext i8 @ld_or_int8_t_uint32_t(i64 %ptr, i8 zeroext %off) {1062; CHECK-LE-LABEL: ld_or_int8_t_uint32_t:1063; CHECK-LE:       # %bb.0: # %entry1064; CHECK-LE-NEXT:    or r3, r4, r31065; CHECK-LE-NEXT:    lbz r3, 0(r3)1066; CHECK-LE-NEXT:    extsb r3, r31067; CHECK-LE-NEXT:    blr1068;1069; CHECK-BE-LABEL: ld_or_int8_t_uint32_t:1070; CHECK-BE:       # %bb.0: # %entry1071; CHECK-BE-NEXT:    or r3, r4, r31072; CHECK-BE-NEXT:    lbz r3, 3(r3)1073; CHECK-BE-NEXT:    extsb r3, r31074; CHECK-BE-NEXT:    blr1075entry:1076  %conv = zext i8 %off to i641077  %or = or i64 %conv, %ptr1078  %0 = inttoptr i64 %or to ptr1079  %1 = load i32, ptr %0, align 41080  %conv1 = trunc i32 %1 to i81081  ret i8 %conv11082}1083 1084; Function Attrs: norecurse nounwind readonly uwtable willreturn1085define dso_local signext i8 @ld_not_disjoint16_int8_t_uint32_t(i64 %ptr) {1086; CHECK-LE-LABEL: ld_not_disjoint16_int8_t_uint32_t:1087; CHECK-LE:       # %bb.0: # %entry1088; CHECK-LE-NEXT:    ori r3, r3, 61089; CHECK-LE-NEXT:    lbz r3, 0(r3)1090; CHECK-LE-NEXT:    extsb r3, r31091; CHECK-LE-NEXT:    blr1092;1093; CHECK-BE-LABEL: ld_not_disjoint16_int8_t_uint32_t:1094; CHECK-BE:       # %bb.0: # %entry1095; CHECK-BE-NEXT:    ori r3, r3, 61096; CHECK-BE-NEXT:    lbz r3, 3(r3)1097; CHECK-BE-NEXT:    extsb r3, r31098; CHECK-BE-NEXT:    blr1099entry:1100  %or = or i64 %ptr, 61101  %0 = inttoptr i64 %or to ptr1102  %1 = load i32, ptr %0, align 41103  %conv = trunc i32 %1 to i81104  ret i8 %conv1105}1106 1107; Function Attrs: norecurse nounwind readonly uwtable willreturn1108define dso_local signext i8 @ld_disjoint_align16_int8_t_uint32_t(i64 %ptr) {1109; CHECK-LE-LABEL: ld_disjoint_align16_int8_t_uint32_t:1110; CHECK-LE:       # %bb.0: # %entry1111; CHECK-LE-NEXT:    rldicr r3, r3, 0, 511112; CHECK-LE-NEXT:    lbz r3, 24(r3)1113; CHECK-LE-NEXT:    extsb r3, r31114; CHECK-LE-NEXT:    blr1115;1116; CHECK-BE-LABEL: ld_disjoint_align16_int8_t_uint32_t:1117; CHECK-BE:       # %bb.0: # %entry1118; CHECK-BE-NEXT:    rldicr r3, r3, 0, 511119; CHECK-BE-NEXT:    lbz r3, 27(r3)1120; CHECK-BE-NEXT:    extsb r3, r31121; CHECK-BE-NEXT:    blr1122entry:1123  %and = and i64 %ptr, -40961124  %or = or i64 %and, 241125  %0 = inttoptr i64 %or to ptr1126  %1 = load i32, ptr %0, align 81127  %conv = trunc i32 %1 to i81128  ret i8 %conv1129}1130 1131; Function Attrs: norecurse nounwind readonly uwtable willreturn1132define dso_local signext i8 @ld_not_disjoint32_int8_t_uint32_t(i64 %ptr) {1133; CHECK-LE-LABEL: ld_not_disjoint32_int8_t_uint32_t:1134; CHECK-LE:       # %bb.0: # %entry1135; CHECK-LE-NEXT:    ori r3, r3, 344631136; CHECK-LE-NEXT:    oris r3, r3, 11137; CHECK-LE-NEXT:    lbz r3, 0(r3)1138; CHECK-LE-NEXT:    extsb r3, r31139; CHECK-LE-NEXT:    blr1140;1141; CHECK-BE-LABEL: ld_not_disjoint32_int8_t_uint32_t:1142; CHECK-BE:       # %bb.0: # %entry1143; CHECK-BE-NEXT:    ori r3, r3, 344631144; CHECK-BE-NEXT:    oris r3, r3, 11145; CHECK-BE-NEXT:    lbz r3, 3(r3)1146; CHECK-BE-NEXT:    extsb r3, r31147; CHECK-BE-NEXT:    blr1148entry:1149  %or = or i64 %ptr, 999991150  %0 = inttoptr i64 %or to ptr1151  %1 = load i32, ptr %0, align 41152  %conv = trunc i32 %1 to i81153  ret i8 %conv1154}1155 1156; Function Attrs: norecurse nounwind readonly uwtable willreturn1157define dso_local signext i8 @ld_disjoint_align32_int8_t_uint32_t(i64 %ptr) {1158; CHECK-P10-LE-LABEL: ld_disjoint_align32_int8_t_uint32_t:1159; CHECK-P10-LE:       # %bb.0: # %entry1160; CHECK-P10-LE-NEXT:    lis r4, -152641161; CHECK-P10-LE-NEXT:    and r3, r3, r41162; CHECK-P10-LE-NEXT:    plbz r3, 999990000(r3), 01163; CHECK-P10-LE-NEXT:    extsb r3, r31164; CHECK-P10-LE-NEXT:    blr1165;1166; CHECK-P10-BE-LABEL: ld_disjoint_align32_int8_t_uint32_t:1167; CHECK-P10-BE:       # %bb.0: # %entry1168; CHECK-P10-BE-NEXT:    lis r4, -152641169; CHECK-P10-BE-NEXT:    and r3, r3, r41170; CHECK-P10-BE-NEXT:    plbz r3, 999990003(r3), 01171; CHECK-P10-BE-NEXT:    extsb r3, r31172; CHECK-P10-BE-NEXT:    blr1173;1174; CHECK-P9-LE-LABEL: ld_disjoint_align32_int8_t_uint32_t:1175; CHECK-P9-LE:       # %bb.0: # %entry1176; CHECK-P9-LE-NEXT:    lis r4, -152641177; CHECK-P9-LE-NEXT:    and r3, r3, r41178; CHECK-P9-LE-NEXT:    lis r4, 152581179; CHECK-P9-LE-NEXT:    ori r4, r4, 417121180; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41181; CHECK-P9-LE-NEXT:    extsb r3, r31182; CHECK-P9-LE-NEXT:    blr1183;1184; CHECK-P9-BE-LABEL: ld_disjoint_align32_int8_t_uint32_t:1185; CHECK-P9-BE:       # %bb.0: # %entry1186; CHECK-P9-BE-NEXT:    lis r4, -152641187; CHECK-P9-BE-NEXT:    and r3, r3, r41188; CHECK-P9-BE-NEXT:    lis r4, 152581189; CHECK-P9-BE-NEXT:    ori r4, r4, 417151190; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41191; CHECK-P9-BE-NEXT:    extsb r3, r31192; CHECK-P9-BE-NEXT:    blr1193;1194; CHECK-P8-LE-LABEL: ld_disjoint_align32_int8_t_uint32_t:1195; CHECK-P8-LE:       # %bb.0: # %entry1196; CHECK-P8-LE-NEXT:    lis r4, -152641197; CHECK-P8-LE-NEXT:    and r3, r3, r41198; CHECK-P8-LE-NEXT:    lis r4, 152581199; CHECK-P8-LE-NEXT:    ori r4, r4, 417121200; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41201; CHECK-P8-LE-NEXT:    extsb r3, r31202; CHECK-P8-LE-NEXT:    blr1203;1204; CHECK-P8-BE-LABEL: ld_disjoint_align32_int8_t_uint32_t:1205; CHECK-P8-BE:       # %bb.0: # %entry1206; CHECK-P8-BE-NEXT:    lis r4, -152641207; CHECK-P8-BE-NEXT:    and r3, r3, r41208; CHECK-P8-BE-NEXT:    lis r4, 152581209; CHECK-P8-BE-NEXT:    ori r4, r4, 417151210; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41211; CHECK-P8-BE-NEXT:    extsb r3, r31212; CHECK-P8-BE-NEXT:    blr1213entry:1214  %and = and i64 %ptr, -10003415041215  %or = or i64 %and, 9999900001216  %0 = inttoptr i64 %or to ptr1217  %1 = load i32, ptr %0, align 161218  %conv = trunc i32 %1 to i81219  ret i8 %conv1220}1221 1222; Function Attrs: norecurse nounwind readonly uwtable willreturn1223define dso_local signext i8 @ld_not_disjoint64_int8_t_uint32_t(i64 %ptr) {1224; CHECK-P10-LE-LABEL: ld_not_disjoint64_int8_t_uint32_t:1225; CHECK-P10-LE:       # %bb.0: # %entry1226; CHECK-P10-LE-NEXT:    pli r4, 2321227; CHECK-P10-LE-NEXT:    pli r5, 35675873291228; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 01229; CHECK-P10-LE-NEXT:    or r3, r3, r51230; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)1231; CHECK-P10-LE-NEXT:    extsb r3, r31232; CHECK-P10-LE-NEXT:    blr1233;1234; CHECK-P10-BE-LABEL: ld_not_disjoint64_int8_t_uint32_t:1235; CHECK-P10-BE:       # %bb.0: # %entry1236; CHECK-P10-BE-NEXT:    pli r4, 2321237; CHECK-P10-BE-NEXT:    pli r5, 35675873291238; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 01239; CHECK-P10-BE-NEXT:    or r3, r3, r51240; CHECK-P10-BE-NEXT:    lbz r3, 3(r3)1241; CHECK-P10-BE-NEXT:    extsb r3, r31242; CHECK-P10-BE-NEXT:    blr1243;1244; CHECK-P9-LE-LABEL: ld_not_disjoint64_int8_t_uint32_t:1245; CHECK-P9-LE:       # %bb.0: # %entry1246; CHECK-P9-LE-NEXT:    li r4, 291247; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 241248; CHECK-P9-LE-NEXT:    oris r4, r4, 544371249; CHECK-P9-LE-NEXT:    ori r4, r4, 40971250; CHECK-P9-LE-NEXT:    or r3, r3, r41251; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)1252; CHECK-P9-LE-NEXT:    extsb r3, r31253; CHECK-P9-LE-NEXT:    blr1254;1255; CHECK-P9-BE-LABEL: ld_not_disjoint64_int8_t_uint32_t:1256; CHECK-P9-BE:       # %bb.0: # %entry1257; CHECK-P9-BE-NEXT:    li r4, 291258; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 241259; CHECK-P9-BE-NEXT:    oris r4, r4, 544371260; CHECK-P9-BE-NEXT:    ori r4, r4, 40971261; CHECK-P9-BE-NEXT:    or r3, r3, r41262; CHECK-P9-BE-NEXT:    lbz r3, 3(r3)1263; CHECK-P9-BE-NEXT:    extsb r3, r31264; CHECK-P9-BE-NEXT:    blr1265;1266; CHECK-P8-LE-LABEL: ld_not_disjoint64_int8_t_uint32_t:1267; CHECK-P8-LE:       # %bb.0: # %entry1268; CHECK-P8-LE-NEXT:    li r4, 291269; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 241270; CHECK-P8-LE-NEXT:    oris r4, r4, 544371271; CHECK-P8-LE-NEXT:    ori r4, r4, 40971272; CHECK-P8-LE-NEXT:    or r3, r3, r41273; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)1274; CHECK-P8-LE-NEXT:    extsb r3, r31275; CHECK-P8-LE-NEXT:    blr1276;1277; CHECK-P8-BE-LABEL: ld_not_disjoint64_int8_t_uint32_t:1278; CHECK-P8-BE:       # %bb.0: # %entry1279; CHECK-P8-BE-NEXT:    li r4, 291280; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241281; CHECK-P8-BE-NEXT:    oris r4, r4, 544371282; CHECK-P8-BE-NEXT:    ori r4, r4, 40971283; CHECK-P8-BE-NEXT:    or r3, r3, r41284; CHECK-P8-BE-NEXT:    lbz r3, 3(r3)1285; CHECK-P8-BE-NEXT:    extsb r3, r31286; CHECK-P8-BE-NEXT:    blr1287entry:1288  %or = or i64 %ptr, 10000000000011289  %0 = inttoptr i64 %or to ptr1290  %1 = load i32, ptr %0, align 41291  %conv = trunc i32 %1 to i81292  ret i8 %conv1293}1294 1295; Function Attrs: norecurse nounwind readonly uwtable willreturn1296define dso_local signext i8 @ld_disjoint_align64_int8_t_uint32_t(i64 %ptr) {1297; CHECK-P10-LE-LABEL: ld_disjoint_align64_int8_t_uint32_t:1298; CHECK-P10-LE:       # %bb.0: # %entry1299; CHECK-P10-LE-NEXT:    pli r4, 2441406251300; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 231301; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 241302; CHECK-P10-LE-NEXT:    lbzx r3, r3, r41303; CHECK-P10-LE-NEXT:    extsb r3, r31304; CHECK-P10-LE-NEXT:    blr1305;1306; CHECK-P10-BE-LABEL: ld_disjoint_align64_int8_t_uint32_t:1307; CHECK-P10-BE:       # %bb.0: # %entry1308; CHECK-P10-BE-NEXT:    pli r4, 2321309; CHECK-P10-BE-NEXT:    pli r5, 35675873311310; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 231311; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 01312; CHECK-P10-BE-NEXT:    lbzx r3, r3, r51313; CHECK-P10-BE-NEXT:    extsb r3, r31314; CHECK-P10-BE-NEXT:    blr1315;1316; CHECK-P9-LE-LABEL: ld_disjoint_align64_int8_t_uint32_t:1317; CHECK-P9-LE:       # %bb.0: # %entry1318; CHECK-P9-LE-NEXT:    lis r4, 37251319; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 231320; CHECK-P9-LE-NEXT:    ori r4, r4, 190251321; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 241322; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41323; CHECK-P9-LE-NEXT:    extsb r3, r31324; CHECK-P9-LE-NEXT:    blr1325;1326; CHECK-P9-BE-LABEL: ld_disjoint_align64_int8_t_uint32_t:1327; CHECK-P9-BE:       # %bb.0: # %entry1328; CHECK-P9-BE-NEXT:    li r4, 291329; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 231330; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 241331; CHECK-P9-BE-NEXT:    oris r4, r4, 544371332; CHECK-P9-BE-NEXT:    ori r4, r4, 40991333; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41334; CHECK-P9-BE-NEXT:    extsb r3, r31335; CHECK-P9-BE-NEXT:    blr1336;1337; CHECK-P8-LE-LABEL: ld_disjoint_align64_int8_t_uint32_t:1338; CHECK-P8-LE:       # %bb.0: # %entry1339; CHECK-P8-LE-NEXT:    lis r4, 37251340; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 231341; CHECK-P8-LE-NEXT:    ori r4, r4, 190251342; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 241343; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41344; CHECK-P8-LE-NEXT:    extsb r3, r31345; CHECK-P8-LE-NEXT:    blr1346;1347; CHECK-P8-BE-LABEL: ld_disjoint_align64_int8_t_uint32_t:1348; CHECK-P8-BE:       # %bb.0: # %entry1349; CHECK-P8-BE-NEXT:    li r4, 291350; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 231351; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241352; CHECK-P8-BE-NEXT:    oris r4, r4, 544371353; CHECK-P8-BE-NEXT:    ori r4, r4, 40991354; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41355; CHECK-P8-BE-NEXT:    extsb r3, r31356; CHECK-P8-BE-NEXT:    blr1357entry:1358  %and = and i64 %ptr, -10995116277761359  %or = or i64 %and, 10000000000001360  %0 = inttoptr i64 %or to ptr1361  %1 = load i32, ptr %0, align 40961362  %conv = trunc i32 %1 to i81363  ret i8 %conv1364}1365 1366; Function Attrs: norecurse nounwind readonly uwtable willreturn1367define dso_local signext i8 @ld_cst_align16_int8_t_uint32_t() {1368; CHECK-LE-LABEL: ld_cst_align16_int8_t_uint32_t:1369; CHECK-LE:       # %bb.0: # %entry1370; CHECK-LE-NEXT:    lbz r3, 4080(0)1371; CHECK-LE-NEXT:    extsb r3, r31372; CHECK-LE-NEXT:    blr1373;1374; CHECK-BE-LABEL: ld_cst_align16_int8_t_uint32_t:1375; CHECK-BE:       # %bb.0: # %entry1376; CHECK-BE-NEXT:    lbz r3, 4083(0)1377; CHECK-BE-NEXT:    extsb r3, r31378; CHECK-BE-NEXT:    blr1379entry:1380  %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 161381  %conv = trunc i32 %0 to i81382  ret i8 %conv1383}1384 1385; Function Attrs: norecurse nounwind readonly uwtable willreturn1386define dso_local signext i8 @ld_cst_align32_int8_t_uint32_t() {1387; CHECK-LE-LABEL: ld_cst_align32_int8_t_uint32_t:1388; CHECK-LE:       # %bb.0: # %entry1389; CHECK-LE-NEXT:    lis r3, 1531390; CHECK-LE-NEXT:    lbz r3, -27108(r3)1391; CHECK-LE-NEXT:    extsb r3, r31392; CHECK-LE-NEXT:    blr1393;1394; CHECK-BE-LABEL: ld_cst_align32_int8_t_uint32_t:1395; CHECK-BE:       # %bb.0: # %entry1396; CHECK-BE-NEXT:    lis r3, 1531397; CHECK-BE-NEXT:    lbz r3, -27105(r3)1398; CHECK-BE-NEXT:    extsb r3, r31399; CHECK-BE-NEXT:    blr1400entry:1401  %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 41402  %conv = trunc i32 %0 to i81403  ret i8 %conv1404}1405 1406; Function Attrs: norecurse nounwind readonly uwtable willreturn1407define dso_local signext i8 @ld_cst_align64_int8_t_uint32_t() {1408; CHECK-P10-LE-LABEL: ld_cst_align64_int8_t_uint32_t:1409; CHECK-P10-LE:       # %bb.0: # %entry1410; CHECK-P10-LE-NEXT:    pli r3, 2441406251411; CHECK-P10-LE-NEXT:    rldic r3, r3, 12, 241412; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)1413; CHECK-P10-LE-NEXT:    extsb r3, r31414; CHECK-P10-LE-NEXT:    blr1415;1416; CHECK-P10-BE-LABEL: ld_cst_align64_int8_t_uint32_t:1417; CHECK-P10-BE:       # %bb.0: # %entry1418; CHECK-P10-BE-NEXT:    pli r3, 2321419; CHECK-P10-BE-NEXT:    pli r4, 35675873311420; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 01421; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)1422; CHECK-P10-BE-NEXT:    extsb r3, r31423; CHECK-P10-BE-NEXT:    blr1424;1425; CHECK-P9-LE-LABEL: ld_cst_align64_int8_t_uint32_t:1426; CHECK-P9-LE:       # %bb.0: # %entry1427; CHECK-P9-LE-NEXT:    lis r3, 37251428; CHECK-P9-LE-NEXT:    ori r3, r3, 190251429; CHECK-P9-LE-NEXT:    rldic r3, r3, 12, 241430; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)1431; CHECK-P9-LE-NEXT:    extsb r3, r31432; CHECK-P9-LE-NEXT:    blr1433;1434; CHECK-P9-BE-LABEL: ld_cst_align64_int8_t_uint32_t:1435; CHECK-P9-BE:       # %bb.0: # %entry1436; CHECK-P9-BE-NEXT:    li r3, 291437; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 241438; CHECK-P9-BE-NEXT:    oris r3, r3, 544371439; CHECK-P9-BE-NEXT:    ori r3, r3, 40991440; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)1441; CHECK-P9-BE-NEXT:    extsb r3, r31442; CHECK-P9-BE-NEXT:    blr1443;1444; CHECK-P8-LE-LABEL: ld_cst_align64_int8_t_uint32_t:1445; CHECK-P8-LE:       # %bb.0: # %entry1446; CHECK-P8-LE-NEXT:    lis r3, 37251447; CHECK-P8-LE-NEXT:    ori r3, r3, 190251448; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 241449; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)1450; CHECK-P8-LE-NEXT:    extsb r3, r31451; CHECK-P8-LE-NEXT:    blr1452;1453; CHECK-P8-BE-LABEL: ld_cst_align64_int8_t_uint32_t:1454; CHECK-P8-BE:       # %bb.0: # %entry1455; CHECK-P8-BE-NEXT:    li r3, 291456; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 241457; CHECK-P8-BE-NEXT:    oris r3, r3, 544371458; CHECK-P8-BE-NEXT:    ori r3, r3, 40991459; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)1460; CHECK-P8-BE-NEXT:    extsb r3, r31461; CHECK-P8-BE-NEXT:    blr1462entry:1463  %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40961464  %conv = trunc i32 %0 to i81465  ret i8 %conv1466}1467 1468; Function Attrs: norecurse nounwind readonly uwtable willreturn1469define dso_local signext i8 @ld_0_int8_t_uint64_t(i64 %ptr) {1470; CHECK-LE-LABEL: ld_0_int8_t_uint64_t:1471; CHECK-LE:       # %bb.0: # %entry1472; CHECK-LE-NEXT:    lbz r3, 0(r3)1473; CHECK-LE-NEXT:    extsb r3, r31474; CHECK-LE-NEXT:    blr1475;1476; CHECK-BE-LABEL: ld_0_int8_t_uint64_t:1477; CHECK-BE:       # %bb.0: # %entry1478; CHECK-BE-NEXT:    lbz r3, 7(r3)1479; CHECK-BE-NEXT:    extsb r3, r31480; CHECK-BE-NEXT:    blr1481entry:1482  %0 = inttoptr i64 %ptr to ptr1483  %1 = load i64, ptr %0, align 81484  %conv = trunc i64 %1 to i81485  ret i8 %conv1486}1487 1488; Function Attrs: norecurse nounwind readonly uwtable willreturn1489define dso_local signext i8 @ld_align16_int8_t_uint64_t(ptr nocapture readonly %ptr) {1490; CHECK-LE-LABEL: ld_align16_int8_t_uint64_t:1491; CHECK-LE:       # %bb.0: # %entry1492; CHECK-LE-NEXT:    lbz r3, 8(r3)1493; CHECK-LE-NEXT:    extsb r3, r31494; CHECK-LE-NEXT:    blr1495;1496; CHECK-BE-LABEL: ld_align16_int8_t_uint64_t:1497; CHECK-BE:       # %bb.0: # %entry1498; CHECK-BE-NEXT:    lbz r3, 15(r3)1499; CHECK-BE-NEXT:    extsb r3, r31500; CHECK-BE-NEXT:    blr1501entry:1502  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81503  %0 = load i64, ptr %add.ptr, align 81504  %conv = trunc i64 %0 to i81505  ret i8 %conv1506}1507 1508; Function Attrs: norecurse nounwind readonly uwtable willreturn1509define dso_local signext i8 @ld_align32_int8_t_uint64_t(ptr nocapture readonly %ptr) {1510; CHECK-P10-LE-LABEL: ld_align32_int8_t_uint64_t:1511; CHECK-P10-LE:       # %bb.0: # %entry1512; CHECK-P10-LE-NEXT:    plbz r3, 99999000(r3), 01513; CHECK-P10-LE-NEXT:    extsb r3, r31514; CHECK-P10-LE-NEXT:    blr1515;1516; CHECK-P10-BE-LABEL: ld_align32_int8_t_uint64_t:1517; CHECK-P10-BE:       # %bb.0: # %entry1518; CHECK-P10-BE-NEXT:    plbz r3, 99999007(r3), 01519; CHECK-P10-BE-NEXT:    extsb r3, r31520; CHECK-P10-BE-NEXT:    blr1521;1522; CHECK-P9-LE-LABEL: ld_align32_int8_t_uint64_t:1523; CHECK-P9-LE:       # %bb.0: # %entry1524; CHECK-P9-LE-NEXT:    lis r4, 15251525; CHECK-P9-LE-NEXT:    ori r4, r4, 566001526; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41527; CHECK-P9-LE-NEXT:    extsb r3, r31528; CHECK-P9-LE-NEXT:    blr1529;1530; CHECK-P9-BE-LABEL: ld_align32_int8_t_uint64_t:1531; CHECK-P9-BE:       # %bb.0: # %entry1532; CHECK-P9-BE-NEXT:    lis r4, 15251533; CHECK-P9-BE-NEXT:    ori r4, r4, 566071534; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41535; CHECK-P9-BE-NEXT:    extsb r3, r31536; CHECK-P9-BE-NEXT:    blr1537;1538; CHECK-P8-LE-LABEL: ld_align32_int8_t_uint64_t:1539; CHECK-P8-LE:       # %bb.0: # %entry1540; CHECK-P8-LE-NEXT:    lis r4, 15251541; CHECK-P8-LE-NEXT:    ori r4, r4, 566001542; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41543; CHECK-P8-LE-NEXT:    extsb r3, r31544; CHECK-P8-LE-NEXT:    blr1545;1546; CHECK-P8-BE-LABEL: ld_align32_int8_t_uint64_t:1547; CHECK-P8-BE:       # %bb.0: # %entry1548; CHECK-P8-BE-NEXT:    lis r4, 15251549; CHECK-P8-BE-NEXT:    ori r4, r4, 566071550; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41551; CHECK-P8-BE-NEXT:    extsb r3, r31552; CHECK-P8-BE-NEXT:    blr1553entry:1554  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001555  %0 = load i64, ptr %add.ptr, align 81556  %conv = trunc i64 %0 to i81557  ret i8 %conv1558}1559 1560; Function Attrs: norecurse nounwind readonly uwtable willreturn1561define dso_local signext i8 @ld_align64_int8_t_uint64_t(ptr nocapture readonly %ptr) {1562; CHECK-P10-LE-LABEL: ld_align64_int8_t_uint64_t:1563; CHECK-P10-LE:       # %bb.0: # %entry1564; CHECK-P10-LE-NEXT:    pli r4, 2441406251565; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 241566; CHECK-P10-LE-NEXT:    lbzx r3, r3, r41567; CHECK-P10-LE-NEXT:    extsb r3, r31568; CHECK-P10-LE-NEXT:    blr1569;1570; CHECK-P10-BE-LABEL: ld_align64_int8_t_uint64_t:1571; CHECK-P10-BE:       # %bb.0: # %entry1572; CHECK-P10-BE-NEXT:    pli r4, 2321573; CHECK-P10-BE-NEXT:    pli r5, 35675873351574; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 01575; CHECK-P10-BE-NEXT:    lbzx r3, r3, r51576; CHECK-P10-BE-NEXT:    extsb r3, r31577; CHECK-P10-BE-NEXT:    blr1578;1579; CHECK-P9-LE-LABEL: ld_align64_int8_t_uint64_t:1580; CHECK-P9-LE:       # %bb.0: # %entry1581; CHECK-P9-LE-NEXT:    lis r4, 37251582; CHECK-P9-LE-NEXT:    ori r4, r4, 190251583; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 241584; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41585; CHECK-P9-LE-NEXT:    extsb r3, r31586; CHECK-P9-LE-NEXT:    blr1587;1588; CHECK-P9-BE-LABEL: ld_align64_int8_t_uint64_t:1589; CHECK-P9-BE:       # %bb.0: # %entry1590; CHECK-P9-BE-NEXT:    li r4, 291591; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 241592; CHECK-P9-BE-NEXT:    oris r4, r4, 544371593; CHECK-P9-BE-NEXT:    ori r4, r4, 41031594; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41595; CHECK-P9-BE-NEXT:    extsb r3, r31596; CHECK-P9-BE-NEXT:    blr1597;1598; CHECK-P8-LE-LABEL: ld_align64_int8_t_uint64_t:1599; CHECK-P8-LE:       # %bb.0: # %entry1600; CHECK-P8-LE-NEXT:    lis r4, 37251601; CHECK-P8-LE-NEXT:    ori r4, r4, 190251602; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 241603; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41604; CHECK-P8-LE-NEXT:    extsb r3, r31605; CHECK-P8-LE-NEXT:    blr1606;1607; CHECK-P8-BE-LABEL: ld_align64_int8_t_uint64_t:1608; CHECK-P8-BE:       # %bb.0: # %entry1609; CHECK-P8-BE-NEXT:    li r4, 291610; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241611; CHECK-P8-BE-NEXT:    oris r4, r4, 544371612; CHECK-P8-BE-NEXT:    ori r4, r4, 41031613; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41614; CHECK-P8-BE-NEXT:    extsb r3, r31615; CHECK-P8-BE-NEXT:    blr1616entry:1617  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001618  %0 = load i64, ptr %add.ptr, align 81619  %conv = trunc i64 %0 to i81620  ret i8 %conv1621}1622 1623; Function Attrs: norecurse nounwind readonly uwtable willreturn1624define dso_local signext i8 @ld_reg_int8_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {1625; CHECK-LE-LABEL: ld_reg_int8_t_uint64_t:1626; CHECK-LE:       # %bb.0: # %entry1627; CHECK-LE-NEXT:    lbzx r3, r3, r41628; CHECK-LE-NEXT:    extsb r3, r31629; CHECK-LE-NEXT:    blr1630;1631; CHECK-BE-LABEL: ld_reg_int8_t_uint64_t:1632; CHECK-BE:       # %bb.0: # %entry1633; CHECK-BE-NEXT:    add r3, r3, r41634; CHECK-BE-NEXT:    lbz r3, 7(r3)1635; CHECK-BE-NEXT:    extsb r3, r31636; CHECK-BE-NEXT:    blr1637entry:1638  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1639  %0 = load i64, ptr %add.ptr, align 81640  %conv = trunc i64 %0 to i81641  ret i8 %conv1642}1643 1644; Function Attrs: norecurse nounwind readonly uwtable willreturn1645define dso_local signext i8 @ld_or_int8_t_uint64_t(i64 %ptr, i8 zeroext %off) {1646; CHECK-LE-LABEL: ld_or_int8_t_uint64_t:1647; CHECK-LE:       # %bb.0: # %entry1648; CHECK-LE-NEXT:    or r3, r4, r31649; CHECK-LE-NEXT:    lbz r3, 0(r3)1650; CHECK-LE-NEXT:    extsb r3, r31651; CHECK-LE-NEXT:    blr1652;1653; CHECK-BE-LABEL: ld_or_int8_t_uint64_t:1654; CHECK-BE:       # %bb.0: # %entry1655; CHECK-BE-NEXT:    or r3, r4, r31656; CHECK-BE-NEXT:    lbz r3, 7(r3)1657; CHECK-BE-NEXT:    extsb r3, r31658; CHECK-BE-NEXT:    blr1659entry:1660  %conv = zext i8 %off to i641661  %or = or i64 %conv, %ptr1662  %0 = inttoptr i64 %or to ptr1663  %1 = load i64, ptr %0, align 81664  %conv1 = trunc i64 %1 to i81665  ret i8 %conv11666}1667 1668; Function Attrs: norecurse nounwind readonly uwtable willreturn1669define dso_local signext i8 @ld_not_disjoint16_int8_t_uint64_t(i64 %ptr) {1670; CHECK-LE-LABEL: ld_not_disjoint16_int8_t_uint64_t:1671; CHECK-LE:       # %bb.0: # %entry1672; CHECK-LE-NEXT:    ori r3, r3, 61673; CHECK-LE-NEXT:    lbz r3, 0(r3)1674; CHECK-LE-NEXT:    extsb r3, r31675; CHECK-LE-NEXT:    blr1676;1677; CHECK-BE-LABEL: ld_not_disjoint16_int8_t_uint64_t:1678; CHECK-BE:       # %bb.0: # %entry1679; CHECK-BE-NEXT:    ori r3, r3, 61680; CHECK-BE-NEXT:    lbz r3, 7(r3)1681; CHECK-BE-NEXT:    extsb r3, r31682; CHECK-BE-NEXT:    blr1683entry:1684  %or = or i64 %ptr, 61685  %0 = inttoptr i64 %or to ptr1686  %1 = load i64, ptr %0, align 81687  %conv = trunc i64 %1 to i81688  ret i8 %conv1689}1690 1691; Function Attrs: norecurse nounwind readonly uwtable willreturn1692define dso_local signext i8 @ld_disjoint_align16_int8_t_uint64_t(i64 %ptr) {1693; CHECK-LE-LABEL: ld_disjoint_align16_int8_t_uint64_t:1694; CHECK-LE:       # %bb.0: # %entry1695; CHECK-LE-NEXT:    rldicr r3, r3, 0, 511696; CHECK-LE-NEXT:    lbz r3, 24(r3)1697; CHECK-LE-NEXT:    extsb r3, r31698; CHECK-LE-NEXT:    blr1699;1700; CHECK-BE-LABEL: ld_disjoint_align16_int8_t_uint64_t:1701; CHECK-BE:       # %bb.0: # %entry1702; CHECK-BE-NEXT:    rldicr r3, r3, 0, 511703; CHECK-BE-NEXT:    lbz r3, 31(r3)1704; CHECK-BE-NEXT:    extsb r3, r31705; CHECK-BE-NEXT:    blr1706entry:1707  %and = and i64 %ptr, -40961708  %or = or i64 %and, 241709  %0 = inttoptr i64 %or to ptr1710  %1 = load i64, ptr %0, align 81711  %conv = trunc i64 %1 to i81712  ret i8 %conv1713}1714 1715; Function Attrs: norecurse nounwind readonly uwtable willreturn1716define dso_local signext i8 @ld_not_disjoint32_int8_t_uint64_t(i64 %ptr) {1717; CHECK-LE-LABEL: ld_not_disjoint32_int8_t_uint64_t:1718; CHECK-LE:       # %bb.0: # %entry1719; CHECK-LE-NEXT:    ori r3, r3, 344631720; CHECK-LE-NEXT:    oris r3, r3, 11721; CHECK-LE-NEXT:    lbz r3, 0(r3)1722; CHECK-LE-NEXT:    extsb r3, r31723; CHECK-LE-NEXT:    blr1724;1725; CHECK-BE-LABEL: ld_not_disjoint32_int8_t_uint64_t:1726; CHECK-BE:       # %bb.0: # %entry1727; CHECK-BE-NEXT:    ori r3, r3, 344631728; CHECK-BE-NEXT:    oris r3, r3, 11729; CHECK-BE-NEXT:    lbz r3, 7(r3)1730; CHECK-BE-NEXT:    extsb r3, r31731; CHECK-BE-NEXT:    blr1732entry:1733  %or = or i64 %ptr, 999991734  %0 = inttoptr i64 %or to ptr1735  %1 = load i64, ptr %0, align 81736  %conv = trunc i64 %1 to i81737  ret i8 %conv1738}1739 1740; Function Attrs: norecurse nounwind readonly uwtable willreturn1741define dso_local signext i8 @ld_disjoint_align32_int8_t_uint64_t(i64 %ptr) {1742; CHECK-P10-LE-LABEL: ld_disjoint_align32_int8_t_uint64_t:1743; CHECK-P10-LE:       # %bb.0: # %entry1744; CHECK-P10-LE-NEXT:    lis r4, -152641745; CHECK-P10-LE-NEXT:    and r3, r3, r41746; CHECK-P10-LE-NEXT:    plbz r3, 999990000(r3), 01747; CHECK-P10-LE-NEXT:    extsb r3, r31748; CHECK-P10-LE-NEXT:    blr1749;1750; CHECK-P10-BE-LABEL: ld_disjoint_align32_int8_t_uint64_t:1751; CHECK-P10-BE:       # %bb.0: # %entry1752; CHECK-P10-BE-NEXT:    lis r4, -152641753; CHECK-P10-BE-NEXT:    and r3, r3, r41754; CHECK-P10-BE-NEXT:    plbz r3, 999990007(r3), 01755; CHECK-P10-BE-NEXT:    extsb r3, r31756; CHECK-P10-BE-NEXT:    blr1757;1758; CHECK-P9-LE-LABEL: ld_disjoint_align32_int8_t_uint64_t:1759; CHECK-P9-LE:       # %bb.0: # %entry1760; CHECK-P9-LE-NEXT:    lis r4, -152641761; CHECK-P9-LE-NEXT:    and r3, r3, r41762; CHECK-P9-LE-NEXT:    lis r4, 152581763; CHECK-P9-LE-NEXT:    ori r4, r4, 417121764; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41765; CHECK-P9-LE-NEXT:    extsb r3, r31766; CHECK-P9-LE-NEXT:    blr1767;1768; CHECK-P9-BE-LABEL: ld_disjoint_align32_int8_t_uint64_t:1769; CHECK-P9-BE:       # %bb.0: # %entry1770; CHECK-P9-BE-NEXT:    lis r4, -152641771; CHECK-P9-BE-NEXT:    and r3, r3, r41772; CHECK-P9-BE-NEXT:    lis r4, 152581773; CHECK-P9-BE-NEXT:    ori r4, r4, 417191774; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41775; CHECK-P9-BE-NEXT:    extsb r3, r31776; CHECK-P9-BE-NEXT:    blr1777;1778; CHECK-P8-LE-LABEL: ld_disjoint_align32_int8_t_uint64_t:1779; CHECK-P8-LE:       # %bb.0: # %entry1780; CHECK-P8-LE-NEXT:    lis r4, -152641781; CHECK-P8-LE-NEXT:    and r3, r3, r41782; CHECK-P8-LE-NEXT:    lis r4, 152581783; CHECK-P8-LE-NEXT:    ori r4, r4, 417121784; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41785; CHECK-P8-LE-NEXT:    extsb r3, r31786; CHECK-P8-LE-NEXT:    blr1787;1788; CHECK-P8-BE-LABEL: ld_disjoint_align32_int8_t_uint64_t:1789; CHECK-P8-BE:       # %bb.0: # %entry1790; CHECK-P8-BE-NEXT:    lis r4, -152641791; CHECK-P8-BE-NEXT:    and r3, r3, r41792; CHECK-P8-BE-NEXT:    lis r4, 152581793; CHECK-P8-BE-NEXT:    ori r4, r4, 417191794; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41795; CHECK-P8-BE-NEXT:    extsb r3, r31796; CHECK-P8-BE-NEXT:    blr1797entry:1798  %and = and i64 %ptr, -10003415041799  %or = or i64 %and, 9999900001800  %0 = inttoptr i64 %or to ptr1801  %1 = load i64, ptr %0, align 161802  %conv = trunc i64 %1 to i81803  ret i8 %conv1804}1805 1806; Function Attrs: norecurse nounwind readonly uwtable willreturn1807define dso_local signext i8 @ld_not_disjoint64_int8_t_uint64_t(i64 %ptr) {1808; CHECK-P10-LE-LABEL: ld_not_disjoint64_int8_t_uint64_t:1809; CHECK-P10-LE:       # %bb.0: # %entry1810; CHECK-P10-LE-NEXT:    pli r4, 2321811; CHECK-P10-LE-NEXT:    pli r5, 35675873291812; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 01813; CHECK-P10-LE-NEXT:    or r3, r3, r51814; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)1815; CHECK-P10-LE-NEXT:    extsb r3, r31816; CHECK-P10-LE-NEXT:    blr1817;1818; CHECK-P10-BE-LABEL: ld_not_disjoint64_int8_t_uint64_t:1819; CHECK-P10-BE:       # %bb.0: # %entry1820; CHECK-P10-BE-NEXT:    pli r4, 2321821; CHECK-P10-BE-NEXT:    pli r5, 35675873291822; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 01823; CHECK-P10-BE-NEXT:    or r3, r3, r51824; CHECK-P10-BE-NEXT:    lbz r3, 7(r3)1825; CHECK-P10-BE-NEXT:    extsb r3, r31826; CHECK-P10-BE-NEXT:    blr1827;1828; CHECK-P9-LE-LABEL: ld_not_disjoint64_int8_t_uint64_t:1829; CHECK-P9-LE:       # %bb.0: # %entry1830; CHECK-P9-LE-NEXT:    li r4, 291831; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 241832; CHECK-P9-LE-NEXT:    oris r4, r4, 544371833; CHECK-P9-LE-NEXT:    ori r4, r4, 40971834; CHECK-P9-LE-NEXT:    or r3, r3, r41835; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)1836; CHECK-P9-LE-NEXT:    extsb r3, r31837; CHECK-P9-LE-NEXT:    blr1838;1839; CHECK-P9-BE-LABEL: ld_not_disjoint64_int8_t_uint64_t:1840; CHECK-P9-BE:       # %bb.0: # %entry1841; CHECK-P9-BE-NEXT:    li r4, 291842; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 241843; CHECK-P9-BE-NEXT:    oris r4, r4, 544371844; CHECK-P9-BE-NEXT:    ori r4, r4, 40971845; CHECK-P9-BE-NEXT:    or r3, r3, r41846; CHECK-P9-BE-NEXT:    lbz r3, 7(r3)1847; CHECK-P9-BE-NEXT:    extsb r3, r31848; CHECK-P9-BE-NEXT:    blr1849;1850; CHECK-P8-LE-LABEL: ld_not_disjoint64_int8_t_uint64_t:1851; CHECK-P8-LE:       # %bb.0: # %entry1852; CHECK-P8-LE-NEXT:    li r4, 291853; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 241854; CHECK-P8-LE-NEXT:    oris r4, r4, 544371855; CHECK-P8-LE-NEXT:    ori r4, r4, 40971856; CHECK-P8-LE-NEXT:    or r3, r3, r41857; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)1858; CHECK-P8-LE-NEXT:    extsb r3, r31859; CHECK-P8-LE-NEXT:    blr1860;1861; CHECK-P8-BE-LABEL: ld_not_disjoint64_int8_t_uint64_t:1862; CHECK-P8-BE:       # %bb.0: # %entry1863; CHECK-P8-BE-NEXT:    li r4, 291864; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241865; CHECK-P8-BE-NEXT:    oris r4, r4, 544371866; CHECK-P8-BE-NEXT:    ori r4, r4, 40971867; CHECK-P8-BE-NEXT:    or r3, r3, r41868; CHECK-P8-BE-NEXT:    lbz r3, 7(r3)1869; CHECK-P8-BE-NEXT:    extsb r3, r31870; CHECK-P8-BE-NEXT:    blr1871entry:1872  %or = or i64 %ptr, 10000000000011873  %0 = inttoptr i64 %or to ptr1874  %1 = load i64, ptr %0, align 81875  %conv = trunc i64 %1 to i81876  ret i8 %conv1877}1878 1879; Function Attrs: norecurse nounwind readonly uwtable willreturn1880define dso_local signext i8 @ld_disjoint_align64_int8_t_uint64_t(i64 %ptr) {1881; CHECK-P10-LE-LABEL: ld_disjoint_align64_int8_t_uint64_t:1882; CHECK-P10-LE:       # %bb.0: # %entry1883; CHECK-P10-LE-NEXT:    pli r4, 2441406251884; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 231885; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 241886; CHECK-P10-LE-NEXT:    lbzx r3, r3, r41887; CHECK-P10-LE-NEXT:    extsb r3, r31888; CHECK-P10-LE-NEXT:    blr1889;1890; CHECK-P10-BE-LABEL: ld_disjoint_align64_int8_t_uint64_t:1891; CHECK-P10-BE:       # %bb.0: # %entry1892; CHECK-P10-BE-NEXT:    pli r4, 2321893; CHECK-P10-BE-NEXT:    pli r5, 35675873351894; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 231895; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 01896; CHECK-P10-BE-NEXT:    lbzx r3, r3, r51897; CHECK-P10-BE-NEXT:    extsb r3, r31898; CHECK-P10-BE-NEXT:    blr1899;1900; CHECK-P9-LE-LABEL: ld_disjoint_align64_int8_t_uint64_t:1901; CHECK-P9-LE:       # %bb.0: # %entry1902; CHECK-P9-LE-NEXT:    lis r4, 37251903; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 231904; CHECK-P9-LE-NEXT:    ori r4, r4, 190251905; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 241906; CHECK-P9-LE-NEXT:    lbzx r3, r3, r41907; CHECK-P9-LE-NEXT:    extsb r3, r31908; CHECK-P9-LE-NEXT:    blr1909;1910; CHECK-P9-BE-LABEL: ld_disjoint_align64_int8_t_uint64_t:1911; CHECK-P9-BE:       # %bb.0: # %entry1912; CHECK-P9-BE-NEXT:    li r4, 291913; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 231914; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 241915; CHECK-P9-BE-NEXT:    oris r4, r4, 544371916; CHECK-P9-BE-NEXT:    ori r4, r4, 41031917; CHECK-P9-BE-NEXT:    lbzx r3, r3, r41918; CHECK-P9-BE-NEXT:    extsb r3, r31919; CHECK-P9-BE-NEXT:    blr1920;1921; CHECK-P8-LE-LABEL: ld_disjoint_align64_int8_t_uint64_t:1922; CHECK-P8-LE:       # %bb.0: # %entry1923; CHECK-P8-LE-NEXT:    lis r4, 37251924; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 231925; CHECK-P8-LE-NEXT:    ori r4, r4, 190251926; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 241927; CHECK-P8-LE-NEXT:    lbzx r3, r3, r41928; CHECK-P8-LE-NEXT:    extsb r3, r31929; CHECK-P8-LE-NEXT:    blr1930;1931; CHECK-P8-BE-LABEL: ld_disjoint_align64_int8_t_uint64_t:1932; CHECK-P8-BE:       # %bb.0: # %entry1933; CHECK-P8-BE-NEXT:    li r4, 291934; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 231935; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 241936; CHECK-P8-BE-NEXT:    oris r4, r4, 544371937; CHECK-P8-BE-NEXT:    ori r4, r4, 41031938; CHECK-P8-BE-NEXT:    lbzx r3, r3, r41939; CHECK-P8-BE-NEXT:    extsb r3, r31940; CHECK-P8-BE-NEXT:    blr1941entry:1942  %and = and i64 %ptr, -10995116277761943  %or = or i64 %and, 10000000000001944  %0 = inttoptr i64 %or to ptr1945  %1 = load i64, ptr %0, align 40961946  %conv = trunc i64 %1 to i81947  ret i8 %conv1948}1949 1950; Function Attrs: norecurse nounwind readonly uwtable willreturn1951define dso_local signext i8 @ld_cst_align16_int8_t_uint64_t() {1952; CHECK-LE-LABEL: ld_cst_align16_int8_t_uint64_t:1953; CHECK-LE:       # %bb.0: # %entry1954; CHECK-LE-NEXT:    lbz r3, 4080(0)1955; CHECK-LE-NEXT:    extsb r3, r31956; CHECK-LE-NEXT:    blr1957;1958; CHECK-BE-LABEL: ld_cst_align16_int8_t_uint64_t:1959; CHECK-BE:       # %bb.0: # %entry1960; CHECK-BE-NEXT:    lbz r3, 4087(0)1961; CHECK-BE-NEXT:    extsb r3, r31962; CHECK-BE-NEXT:    blr1963entry:1964  %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 161965  %conv = trunc i64 %0 to i81966  ret i8 %conv1967}1968 1969; Function Attrs: norecurse nounwind readonly uwtable willreturn1970define dso_local signext i8 @ld_cst_align32_int8_t_uint64_t() {1971; CHECK-LE-LABEL: ld_cst_align32_int8_t_uint64_t:1972; CHECK-LE:       # %bb.0: # %entry1973; CHECK-LE-NEXT:    lis r3, 1531974; CHECK-LE-NEXT:    lbz r3, -27108(r3)1975; CHECK-LE-NEXT:    extsb r3, r31976; CHECK-LE-NEXT:    blr1977;1978; CHECK-BE-LABEL: ld_cst_align32_int8_t_uint64_t:1979; CHECK-BE:       # %bb.0: # %entry1980; CHECK-BE-NEXT:    lis r3, 1531981; CHECK-BE-NEXT:    lbz r3, -27101(r3)1982; CHECK-BE-NEXT:    extsb r3, r31983; CHECK-BE-NEXT:    blr1984entry:1985  %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 81986  %conv = trunc i64 %0 to i81987  ret i8 %conv1988}1989 1990; Function Attrs: norecurse nounwind readonly uwtable willreturn1991define dso_local signext i8 @ld_cst_align64_int8_t_uint64_t() {1992; CHECK-P10-LE-LABEL: ld_cst_align64_int8_t_uint64_t:1993; CHECK-P10-LE:       # %bb.0: # %entry1994; CHECK-P10-LE-NEXT:    pli r3, 2441406251995; CHECK-P10-LE-NEXT:    rldic r3, r3, 12, 241996; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)1997; CHECK-P10-LE-NEXT:    extsb r3, r31998; CHECK-P10-LE-NEXT:    blr1999;2000; CHECK-P10-BE-LABEL: ld_cst_align64_int8_t_uint64_t:2001; CHECK-P10-BE:       # %bb.0: # %entry2002; CHECK-P10-BE-NEXT:    pli r3, 2322003; CHECK-P10-BE-NEXT:    pli r4, 35675873352004; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 02005; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)2006; CHECK-P10-BE-NEXT:    extsb r3, r32007; CHECK-P10-BE-NEXT:    blr2008;2009; CHECK-P9-LE-LABEL: ld_cst_align64_int8_t_uint64_t:2010; CHECK-P9-LE:       # %bb.0: # %entry2011; CHECK-P9-LE-NEXT:    lis r3, 37252012; CHECK-P9-LE-NEXT:    ori r3, r3, 190252013; CHECK-P9-LE-NEXT:    rldic r3, r3, 12, 242014; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)2015; CHECK-P9-LE-NEXT:    extsb r3, r32016; CHECK-P9-LE-NEXT:    blr2017;2018; CHECK-P9-BE-LABEL: ld_cst_align64_int8_t_uint64_t:2019; CHECK-P9-BE:       # %bb.0: # %entry2020; CHECK-P9-BE-NEXT:    li r3, 292021; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 242022; CHECK-P9-BE-NEXT:    oris r3, r3, 544372023; CHECK-P9-BE-NEXT:    ori r3, r3, 41032024; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)2025; CHECK-P9-BE-NEXT:    extsb r3, r32026; CHECK-P9-BE-NEXT:    blr2027;2028; CHECK-P8-LE-LABEL: ld_cst_align64_int8_t_uint64_t:2029; CHECK-P8-LE:       # %bb.0: # %entry2030; CHECK-P8-LE-NEXT:    lis r3, 37252031; CHECK-P8-LE-NEXT:    ori r3, r3, 190252032; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 242033; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)2034; CHECK-P8-LE-NEXT:    extsb r3, r32035; CHECK-P8-LE-NEXT:    blr2036;2037; CHECK-P8-BE-LABEL: ld_cst_align64_int8_t_uint64_t:2038; CHECK-P8-BE:       # %bb.0: # %entry2039; CHECK-P8-BE-NEXT:    li r3, 292040; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 242041; CHECK-P8-BE-NEXT:    oris r3, r3, 544372042; CHECK-P8-BE-NEXT:    ori r3, r3, 41032043; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)2044; CHECK-P8-BE-NEXT:    extsb r3, r32045; CHECK-P8-BE-NEXT:    blr2046entry:2047  %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40962048  %conv = trunc i64 %0 to i82049  ret i8 %conv2050}2051 2052; Function Attrs: norecurse nounwind readonly uwtable willreturn2053define dso_local signext i8 @ld_0_int8_t_float(i64 %ptr) {2054; CHECK-LABEL: ld_0_int8_t_float:2055; CHECK:       # %bb.0: # %entry2056; CHECK-NEXT:    lfs f0, 0(r3)2057; CHECK-NEXT:    xscvdpsxws f0, f02058; CHECK-NEXT:    mffprwz r3, f02059; CHECK-NEXT:    extsw r3, r32060; CHECK-NEXT:    blr2061entry:2062  %0 = inttoptr i64 %ptr to ptr2063  %1 = load float, ptr %0, align 42064  %conv = fptosi float %1 to i82065  ret i8 %conv2066}2067 2068; Function Attrs: norecurse nounwind readonly uwtable willreturn2069define dso_local signext i8 @ld_align16_int8_t_float(ptr nocapture readonly %ptr) {2070; CHECK-LABEL: ld_align16_int8_t_float:2071; CHECK:       # %bb.0: # %entry2072; CHECK-NEXT:    lfs f0, 8(r3)2073; CHECK-NEXT:    xscvdpsxws f0, f02074; CHECK-NEXT:    mffprwz r3, f02075; CHECK-NEXT:    extsw r3, r32076; CHECK-NEXT:    blr2077entry:2078  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82079  %0 = load float, ptr %add.ptr, align 42080  %conv = fptosi float %0 to i82081  ret i8 %conv2082}2083 2084; Function Attrs: norecurse nounwind readonly uwtable willreturn2085define dso_local signext i8 @ld_align32_int8_t_float(ptr nocapture readonly %ptr) {2086; CHECK-P10-LABEL: ld_align32_int8_t_float:2087; CHECK-P10:       # %bb.0: # %entry2088; CHECK-P10-NEXT:    plfs f0, 99999000(r3), 02089; CHECK-P10-NEXT:    xscvdpsxws f0, f02090; CHECK-P10-NEXT:    mffprwz r3, f02091; CHECK-P10-NEXT:    extsw r3, r32092; CHECK-P10-NEXT:    blr2093;2094; CHECK-PREP10-LABEL: ld_align32_int8_t_float:2095; CHECK-PREP10:       # %bb.0: # %entry2096; CHECK-PREP10-NEXT:    lis r4, 15252097; CHECK-PREP10-NEXT:    ori r4, r4, 566002098; CHECK-PREP10-NEXT:    lfsx f0, r3, r42099; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02100; CHECK-PREP10-NEXT:    mffprwz r3, f02101; CHECK-PREP10-NEXT:    extsw r3, r32102; CHECK-PREP10-NEXT:    blr2103entry:2104  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002105  %0 = load float, ptr %add.ptr, align 42106  %conv = fptosi float %0 to i82107  ret i8 %conv2108}2109 2110; Function Attrs: norecurse nounwind readonly uwtable willreturn2111define dso_local signext i8 @ld_align64_int8_t_float(ptr nocapture readonly %ptr) {2112; CHECK-P10-LABEL: ld_align64_int8_t_float:2113; CHECK-P10:       # %bb.0: # %entry2114; CHECK-P10-NEXT:    pli r4, 2441406252115; CHECK-P10-NEXT:    rldic r4, r4, 12, 242116; CHECK-P10-NEXT:    lfsx f0, r3, r42117; CHECK-P10-NEXT:    xscvdpsxws f0, f02118; CHECK-P10-NEXT:    mffprwz r3, f02119; CHECK-P10-NEXT:    extsw r3, r32120; CHECK-P10-NEXT:    blr2121;2122; CHECK-PREP10-LABEL: ld_align64_int8_t_float:2123; CHECK-PREP10:       # %bb.0: # %entry2124; CHECK-PREP10-NEXT:    lis r4, 37252125; CHECK-PREP10-NEXT:    ori r4, r4, 190252126; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242127; CHECK-PREP10-NEXT:    lfsx f0, r3, r42128; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02129; CHECK-PREP10-NEXT:    mffprwz r3, f02130; CHECK-PREP10-NEXT:    extsw r3, r32131; CHECK-PREP10-NEXT:    blr2132entry:2133  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002134  %0 = load float, ptr %add.ptr, align 42135  %conv = fptosi float %0 to i82136  ret i8 %conv2137}2138 2139; Function Attrs: norecurse nounwind readonly uwtable willreturn2140define dso_local signext i8 @ld_reg_int8_t_float(ptr nocapture readonly %ptr, i64 %off) {2141; CHECK-LABEL: ld_reg_int8_t_float:2142; CHECK:       # %bb.0: # %entry2143; CHECK-NEXT:    lfsx f0, r3, r42144; CHECK-NEXT:    xscvdpsxws f0, f02145; CHECK-NEXT:    mffprwz r3, f02146; CHECK-NEXT:    extsw r3, r32147; CHECK-NEXT:    blr2148entry:2149  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2150  %0 = load float, ptr %add.ptr, align 42151  %conv = fptosi float %0 to i82152  ret i8 %conv2153}2154 2155; Function Attrs: norecurse nounwind readonly uwtable willreturn2156define dso_local signext i8 @ld_or_int8_t_float(i64 %ptr, i8 zeroext %off) {2157; CHECK-LABEL: ld_or_int8_t_float:2158; CHECK:       # %bb.0: # %entry2159; CHECK-NEXT:    or r3, r4, r32160; CHECK-NEXT:    lfs f0, 0(r3)2161; CHECK-NEXT:    xscvdpsxws f0, f02162; CHECK-NEXT:    mffprwz r3, f02163; CHECK-NEXT:    extsw r3, r32164; CHECK-NEXT:    blr2165entry:2166  %conv = zext i8 %off to i642167  %or = or i64 %conv, %ptr2168  %0 = inttoptr i64 %or to ptr2169  %1 = load float, ptr %0, align 42170  %conv1 = fptosi float %1 to i82171  ret i8 %conv12172}2173 2174; Function Attrs: norecurse nounwind readonly uwtable willreturn2175define dso_local signext i8 @ld_not_disjoint16_int8_t_float(i64 %ptr) {2176; CHECK-LABEL: ld_not_disjoint16_int8_t_float:2177; CHECK:       # %bb.0: # %entry2178; CHECK-NEXT:    ori r3, r3, 62179; CHECK-NEXT:    lfs f0, 0(r3)2180; CHECK-NEXT:    xscvdpsxws f0, f02181; CHECK-NEXT:    mffprwz r3, f02182; CHECK-NEXT:    extsw r3, r32183; CHECK-NEXT:    blr2184entry:2185  %or = or i64 %ptr, 62186  %0 = inttoptr i64 %or to ptr2187  %1 = load float, ptr %0, align 42188  %conv = fptosi float %1 to i82189  ret i8 %conv2190}2191 2192; Function Attrs: norecurse nounwind readonly uwtable willreturn2193define dso_local signext i8 @ld_disjoint_align16_int8_t_float(i64 %ptr) {2194; CHECK-LABEL: ld_disjoint_align16_int8_t_float:2195; CHECK:       # %bb.0: # %entry2196; CHECK-NEXT:    rldicr r3, r3, 0, 512197; CHECK-NEXT:    lfs f0, 24(r3)2198; CHECK-NEXT:    xscvdpsxws f0, f02199; CHECK-NEXT:    mffprwz r3, f02200; CHECK-NEXT:    extsw r3, r32201; CHECK-NEXT:    blr2202entry:2203  %and = and i64 %ptr, -40962204  %or = or i64 %and, 242205  %0 = inttoptr i64 %or to ptr2206  %1 = load float, ptr %0, align 82207  %conv = fptosi float %1 to i82208  ret i8 %conv2209}2210 2211; Function Attrs: norecurse nounwind readonly uwtable willreturn2212define dso_local signext i8 @ld_not_disjoint32_int8_t_float(i64 %ptr) {2213; CHECK-LABEL: ld_not_disjoint32_int8_t_float:2214; CHECK:       # %bb.0: # %entry2215; CHECK-NEXT:    ori r3, r3, 344632216; CHECK-NEXT:    oris r3, r3, 12217; CHECK-NEXT:    lfs f0, 0(r3)2218; CHECK-NEXT:    xscvdpsxws f0, f02219; CHECK-NEXT:    mffprwz r3, f02220; CHECK-NEXT:    extsw r3, r32221; CHECK-NEXT:    blr2222entry:2223  %or = or i64 %ptr, 999992224  %0 = inttoptr i64 %or to ptr2225  %1 = load float, ptr %0, align 42226  %conv = fptosi float %1 to i82227  ret i8 %conv2228}2229 2230; Function Attrs: norecurse nounwind readonly uwtable willreturn2231define dso_local signext i8 @ld_disjoint_align32_int8_t_float(i64 %ptr) {2232; CHECK-P10-LABEL: ld_disjoint_align32_int8_t_float:2233; CHECK-P10:       # %bb.0: # %entry2234; CHECK-P10-NEXT:    lis r4, -152642235; CHECK-P10-NEXT:    and r3, r3, r42236; CHECK-P10-NEXT:    plfs f0, 999990000(r3), 02237; CHECK-P10-NEXT:    xscvdpsxws f0, f02238; CHECK-P10-NEXT:    mffprwz r3, f02239; CHECK-P10-NEXT:    extsw r3, r32240; CHECK-P10-NEXT:    blr2241;2242; CHECK-PREP10-LABEL: ld_disjoint_align32_int8_t_float:2243; CHECK-PREP10:       # %bb.0: # %entry2244; CHECK-PREP10-NEXT:    lis r4, -152642245; CHECK-PREP10-NEXT:    and r3, r3, r42246; CHECK-PREP10-NEXT:    lis r4, 152582247; CHECK-PREP10-NEXT:    ori r4, r4, 417122248; CHECK-PREP10-NEXT:    lfsx f0, r3, r42249; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02250; CHECK-PREP10-NEXT:    mffprwz r3, f02251; CHECK-PREP10-NEXT:    extsw r3, r32252; CHECK-PREP10-NEXT:    blr2253entry:2254  %and = and i64 %ptr, -10003415042255  %or = or i64 %and, 9999900002256  %0 = inttoptr i64 %or to ptr2257  %1 = load float, ptr %0, align 162258  %conv = fptosi float %1 to i82259  ret i8 %conv2260}2261 2262; Function Attrs: norecurse nounwind readonly uwtable willreturn2263define dso_local signext i8 @ld_not_disjoint64_int8_t_float(i64 %ptr) {2264; CHECK-P10-LABEL: ld_not_disjoint64_int8_t_float:2265; CHECK-P10:       # %bb.0: # %entry2266; CHECK-P10-NEXT:    pli r4, 2322267; CHECK-P10-NEXT:    pli r5, 35675873292268; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02269; CHECK-P10-NEXT:    or r3, r3, r52270; CHECK-P10-NEXT:    lfs f0, 0(r3)2271; CHECK-P10-NEXT:    xscvdpsxws f0, f02272; CHECK-P10-NEXT:    mffprwz r3, f02273; CHECK-P10-NEXT:    extsw r3, r32274; CHECK-P10-NEXT:    blr2275;2276; CHECK-PREP10-LABEL: ld_not_disjoint64_int8_t_float:2277; CHECK-PREP10:       # %bb.0: # %entry2278; CHECK-PREP10-NEXT:    li r4, 292279; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242280; CHECK-PREP10-NEXT:    oris r4, r4, 544372281; CHECK-PREP10-NEXT:    ori r4, r4, 40972282; CHECK-PREP10-NEXT:    or r3, r3, r42283; CHECK-PREP10-NEXT:    lfs f0, 0(r3)2284; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02285; CHECK-PREP10-NEXT:    mffprwz r3, f02286; CHECK-PREP10-NEXT:    extsw r3, r32287; CHECK-PREP10-NEXT:    blr2288entry:2289  %or = or i64 %ptr, 10000000000012290  %0 = inttoptr i64 %or to ptr2291  %1 = load float, ptr %0, align 42292  %conv = fptosi float %1 to i82293  ret i8 %conv2294}2295 2296; Function Attrs: norecurse nounwind readonly uwtable willreturn2297define dso_local signext i8 @ld_disjoint_align64_int8_t_float(i64 %ptr) {2298; CHECK-P10-LABEL: ld_disjoint_align64_int8_t_float:2299; CHECK-P10:       # %bb.0: # %entry2300; CHECK-P10-NEXT:    pli r4, 2441406252301; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232302; CHECK-P10-NEXT:    rldic r4, r4, 12, 242303; CHECK-P10-NEXT:    lfsx f0, r3, r42304; CHECK-P10-NEXT:    xscvdpsxws f0, f02305; CHECK-P10-NEXT:    mffprwz r3, f02306; CHECK-P10-NEXT:    extsw r3, r32307; CHECK-P10-NEXT:    blr2308;2309; CHECK-PREP10-LABEL: ld_disjoint_align64_int8_t_float:2310; CHECK-PREP10:       # %bb.0: # %entry2311; CHECK-PREP10-NEXT:    lis r4, 37252312; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232313; CHECK-PREP10-NEXT:    ori r4, r4, 190252314; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242315; CHECK-PREP10-NEXT:    lfsx f0, r3, r42316; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02317; CHECK-PREP10-NEXT:    mffprwz r3, f02318; CHECK-PREP10-NEXT:    extsw r3, r32319; CHECK-PREP10-NEXT:    blr2320entry:2321  %and = and i64 %ptr, -10995116277762322  %or = or i64 %and, 10000000000002323  %0 = inttoptr i64 %or to ptr2324  %1 = load float, ptr %0, align 40962325  %conv = fptosi float %1 to i82326  ret i8 %conv2327}2328 2329; Function Attrs: norecurse nounwind readonly uwtable willreturn2330define dso_local signext i8 @ld_cst_align16_int8_t_float() {2331; CHECK-LABEL: ld_cst_align16_int8_t_float:2332; CHECK:       # %bb.0: # %entry2333; CHECK-NEXT:    lfs f0, 4080(0)2334; CHECK-NEXT:    xscvdpsxws f0, f02335; CHECK-NEXT:    mffprwz r3, f02336; CHECK-NEXT:    extsw r3, r32337; CHECK-NEXT:    blr2338entry:2339  %0 = load float, ptr inttoptr (i64 4080 to ptr), align 162340  %conv = fptosi float %0 to i82341  ret i8 %conv2342}2343 2344; Function Attrs: norecurse nounwind readonly uwtable willreturn2345define dso_local signext i8 @ld_cst_align32_int8_t_float() {2346; CHECK-LABEL: ld_cst_align32_int8_t_float:2347; CHECK:       # %bb.0: # %entry2348; CHECK-NEXT:    lis r3, 1532349; CHECK-NEXT:    lfs f0, -27108(r3)2350; CHECK-NEXT:    xscvdpsxws f0, f02351; CHECK-NEXT:    mffprwz r3, f02352; CHECK-NEXT:    extsw r3, r32353; CHECK-NEXT:    blr2354entry:2355  %0 = load float, ptr inttoptr (i64 9999900 to ptr), align 42356  %conv = fptosi float %0 to i82357  ret i8 %conv2358}2359 2360; Function Attrs: norecurse nounwind readonly uwtable willreturn2361define dso_local signext i8 @ld_cst_align64_int8_t_float() {2362; CHECK-P10-LABEL: ld_cst_align64_int8_t_float:2363; CHECK-P10:       # %bb.0: # %entry2364; CHECK-P10-NEXT:    pli r3, 2441406252365; CHECK-P10-NEXT:    rldic r3, r3, 12, 242366; CHECK-P10-NEXT:    lfs f0, 0(r3)2367; CHECK-P10-NEXT:    xscvdpsxws f0, f02368; CHECK-P10-NEXT:    mffprwz r3, f02369; CHECK-P10-NEXT:    extsw r3, r32370; CHECK-P10-NEXT:    blr2371;2372; CHECK-PREP10-LABEL: ld_cst_align64_int8_t_float:2373; CHECK-PREP10:       # %bb.0: # %entry2374; CHECK-PREP10-NEXT:    lis r3, 37252375; CHECK-PREP10-NEXT:    ori r3, r3, 190252376; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242377; CHECK-PREP10-NEXT:    lfs f0, 0(r3)2378; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02379; CHECK-PREP10-NEXT:    mffprwz r3, f02380; CHECK-PREP10-NEXT:    extsw r3, r32381; CHECK-PREP10-NEXT:    blr2382entry:2383  %0 = load float, ptr inttoptr (i64 1000000000000 to ptr), align 40962384  %conv = fptosi float %0 to i82385  ret i8 %conv2386}2387 2388; Function Attrs: norecurse nounwind readonly uwtable willreturn2389define dso_local signext i8 @ld_0_int8_t_double(i64 %ptr) {2390; CHECK-LABEL: ld_0_int8_t_double:2391; CHECK:       # %bb.0: # %entry2392; CHECK-NEXT:    lfd f0, 0(r3)2393; CHECK-NEXT:    xscvdpsxws f0, f02394; CHECK-NEXT:    mffprwz r3, f02395; CHECK-NEXT:    extsw r3, r32396; CHECK-NEXT:    blr2397entry:2398  %0 = inttoptr i64 %ptr to ptr2399  %1 = load double, ptr %0, align 82400  %conv = fptosi double %1 to i82401  ret i8 %conv2402}2403 2404; Function Attrs: norecurse nounwind readonly uwtable willreturn2405define dso_local signext i8 @ld_align16_int8_t_double(ptr nocapture readonly %ptr) {2406; CHECK-LABEL: ld_align16_int8_t_double:2407; CHECK:       # %bb.0: # %entry2408; CHECK-NEXT:    lfd f0, 8(r3)2409; CHECK-NEXT:    xscvdpsxws f0, f02410; CHECK-NEXT:    mffprwz r3, f02411; CHECK-NEXT:    extsw r3, r32412; CHECK-NEXT:    blr2413entry:2414  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82415  %0 = load double, ptr %add.ptr, align 82416  %conv = fptosi double %0 to i82417  ret i8 %conv2418}2419 2420; Function Attrs: norecurse nounwind readonly uwtable willreturn2421define dso_local signext i8 @ld_align32_int8_t_double(ptr nocapture readonly %ptr) {2422; CHECK-P10-LABEL: ld_align32_int8_t_double:2423; CHECK-P10:       # %bb.0: # %entry2424; CHECK-P10-NEXT:    plfd f0, 99999000(r3), 02425; CHECK-P10-NEXT:    xscvdpsxws f0, f02426; CHECK-P10-NEXT:    mffprwz r3, f02427; CHECK-P10-NEXT:    extsw r3, r32428; CHECK-P10-NEXT:    blr2429;2430; CHECK-PREP10-LABEL: ld_align32_int8_t_double:2431; CHECK-PREP10:       # %bb.0: # %entry2432; CHECK-PREP10-NEXT:    lis r4, 15252433; CHECK-PREP10-NEXT:    ori r4, r4, 566002434; CHECK-PREP10-NEXT:    lfdx f0, r3, r42435; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02436; CHECK-PREP10-NEXT:    mffprwz r3, f02437; CHECK-PREP10-NEXT:    extsw r3, r32438; CHECK-PREP10-NEXT:    blr2439entry:2440  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002441  %0 = load double, ptr %add.ptr, align 82442  %conv = fptosi double %0 to i82443  ret i8 %conv2444}2445 2446; Function Attrs: norecurse nounwind readonly uwtable willreturn2447define dso_local signext i8 @ld_align64_int8_t_double(ptr nocapture readonly %ptr) {2448; CHECK-P10-LABEL: ld_align64_int8_t_double:2449; CHECK-P10:       # %bb.0: # %entry2450; CHECK-P10-NEXT:    pli r4, 2441406252451; CHECK-P10-NEXT:    rldic r4, r4, 12, 242452; CHECK-P10-NEXT:    lfdx f0, r3, r42453; CHECK-P10-NEXT:    xscvdpsxws f0, f02454; CHECK-P10-NEXT:    mffprwz r3, f02455; CHECK-P10-NEXT:    extsw r3, r32456; CHECK-P10-NEXT:    blr2457;2458; CHECK-PREP10-LABEL: ld_align64_int8_t_double:2459; CHECK-PREP10:       # %bb.0: # %entry2460; CHECK-PREP10-NEXT:    lis r4, 37252461; CHECK-PREP10-NEXT:    ori r4, r4, 190252462; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242463; CHECK-PREP10-NEXT:    lfdx f0, r3, r42464; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02465; CHECK-PREP10-NEXT:    mffprwz r3, f02466; CHECK-PREP10-NEXT:    extsw r3, r32467; CHECK-PREP10-NEXT:    blr2468entry:2469  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002470  %0 = load double, ptr %add.ptr, align 82471  %conv = fptosi double %0 to i82472  ret i8 %conv2473}2474 2475; Function Attrs: norecurse nounwind readonly uwtable willreturn2476define dso_local signext i8 @ld_reg_int8_t_double(ptr nocapture readonly %ptr, i64 %off) {2477; CHECK-LABEL: ld_reg_int8_t_double:2478; CHECK:       # %bb.0: # %entry2479; CHECK-NEXT:    lfdx f0, r3, r42480; CHECK-NEXT:    xscvdpsxws f0, f02481; CHECK-NEXT:    mffprwz r3, f02482; CHECK-NEXT:    extsw r3, r32483; CHECK-NEXT:    blr2484entry:2485  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2486  %0 = load double, ptr %add.ptr, align 82487  %conv = fptosi double %0 to i82488  ret i8 %conv2489}2490 2491; Function Attrs: norecurse nounwind readonly uwtable willreturn2492define dso_local signext i8 @ld_or_int8_t_double(i64 %ptr, i8 zeroext %off) {2493; CHECK-LABEL: ld_or_int8_t_double:2494; CHECK:       # %bb.0: # %entry2495; CHECK-NEXT:    or r3, r4, r32496; CHECK-NEXT:    lfd f0, 0(r3)2497; CHECK-NEXT:    xscvdpsxws f0, f02498; CHECK-NEXT:    mffprwz r3, f02499; CHECK-NEXT:    extsw r3, r32500; CHECK-NEXT:    blr2501entry:2502  %conv = zext i8 %off to i642503  %or = or i64 %conv, %ptr2504  %0 = inttoptr i64 %or to ptr2505  %1 = load double, ptr %0, align 82506  %conv1 = fptosi double %1 to i82507  ret i8 %conv12508}2509 2510; Function Attrs: norecurse nounwind readonly uwtable willreturn2511define dso_local signext i8 @ld_not_disjoint16_int8_t_double(i64 %ptr) {2512; CHECK-LABEL: ld_not_disjoint16_int8_t_double:2513; CHECK:       # %bb.0: # %entry2514; CHECK-NEXT:    ori r3, r3, 62515; CHECK-NEXT:    lfd f0, 0(r3)2516; CHECK-NEXT:    xscvdpsxws f0, f02517; CHECK-NEXT:    mffprwz r3, f02518; CHECK-NEXT:    extsw r3, r32519; CHECK-NEXT:    blr2520entry:2521  %or = or i64 %ptr, 62522  %0 = inttoptr i64 %or to ptr2523  %1 = load double, ptr %0, align 82524  %conv = fptosi double %1 to i82525  ret i8 %conv2526}2527 2528; Function Attrs: norecurse nounwind readonly uwtable willreturn2529define dso_local signext i8 @ld_disjoint_align16_int8_t_double(i64 %ptr) {2530; CHECK-LABEL: ld_disjoint_align16_int8_t_double:2531; CHECK:       # %bb.0: # %entry2532; CHECK-NEXT:    rldicr r3, r3, 0, 512533; CHECK-NEXT:    lfd f0, 24(r3)2534; CHECK-NEXT:    xscvdpsxws f0, f02535; CHECK-NEXT:    mffprwz r3, f02536; CHECK-NEXT:    extsw r3, r32537; CHECK-NEXT:    blr2538entry:2539  %and = and i64 %ptr, -40962540  %or = or i64 %and, 242541  %0 = inttoptr i64 %or to ptr2542  %1 = load double, ptr %0, align 82543  %conv = fptosi double %1 to i82544  ret i8 %conv2545}2546 2547; Function Attrs: norecurse nounwind readonly uwtable willreturn2548define dso_local signext i8 @ld_not_disjoint32_int8_t_double(i64 %ptr) {2549; CHECK-LABEL: ld_not_disjoint32_int8_t_double:2550; CHECK:       # %bb.0: # %entry2551; CHECK-NEXT:    ori r3, r3, 344632552; CHECK-NEXT:    oris r3, r3, 12553; CHECK-NEXT:    lfd f0, 0(r3)2554; CHECK-NEXT:    xscvdpsxws f0, f02555; CHECK-NEXT:    mffprwz r3, f02556; CHECK-NEXT:    extsw r3, r32557; CHECK-NEXT:    blr2558entry:2559  %or = or i64 %ptr, 999992560  %0 = inttoptr i64 %or to ptr2561  %1 = load double, ptr %0, align 82562  %conv = fptosi double %1 to i82563  ret i8 %conv2564}2565 2566; Function Attrs: norecurse nounwind readonly uwtable willreturn2567define dso_local signext i8 @ld_disjoint_align32_int8_t_double(i64 %ptr) {2568; CHECK-P10-LABEL: ld_disjoint_align32_int8_t_double:2569; CHECK-P10:       # %bb.0: # %entry2570; CHECK-P10-NEXT:    lis r4, -152642571; CHECK-P10-NEXT:    and r3, r3, r42572; CHECK-P10-NEXT:    plfd f0, 999990000(r3), 02573; CHECK-P10-NEXT:    xscvdpsxws f0, f02574; CHECK-P10-NEXT:    mffprwz r3, f02575; CHECK-P10-NEXT:    extsw r3, r32576; CHECK-P10-NEXT:    blr2577;2578; CHECK-PREP10-LABEL: ld_disjoint_align32_int8_t_double:2579; CHECK-PREP10:       # %bb.0: # %entry2580; CHECK-PREP10-NEXT:    lis r4, -152642581; CHECK-PREP10-NEXT:    and r3, r3, r42582; CHECK-PREP10-NEXT:    lis r4, 152582583; CHECK-PREP10-NEXT:    ori r4, r4, 417122584; CHECK-PREP10-NEXT:    lfdx f0, r3, r42585; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02586; CHECK-PREP10-NEXT:    mffprwz r3, f02587; CHECK-PREP10-NEXT:    extsw r3, r32588; CHECK-PREP10-NEXT:    blr2589entry:2590  %and = and i64 %ptr, -10003415042591  %or = or i64 %and, 9999900002592  %0 = inttoptr i64 %or to ptr2593  %1 = load double, ptr %0, align 162594  %conv = fptosi double %1 to i82595  ret i8 %conv2596}2597 2598; Function Attrs: norecurse nounwind readonly uwtable willreturn2599define dso_local signext i8 @ld_not_disjoint64_int8_t_double(i64 %ptr) {2600; CHECK-P10-LABEL: ld_not_disjoint64_int8_t_double:2601; CHECK-P10:       # %bb.0: # %entry2602; CHECK-P10-NEXT:    pli r4, 2322603; CHECK-P10-NEXT:    pli r5, 35675873292604; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02605; CHECK-P10-NEXT:    or r3, r3, r52606; CHECK-P10-NEXT:    lfd f0, 0(r3)2607; CHECK-P10-NEXT:    xscvdpsxws f0, f02608; CHECK-P10-NEXT:    mffprwz r3, f02609; CHECK-P10-NEXT:    extsw r3, r32610; CHECK-P10-NEXT:    blr2611;2612; CHECK-PREP10-LABEL: ld_not_disjoint64_int8_t_double:2613; CHECK-PREP10:       # %bb.0: # %entry2614; CHECK-PREP10-NEXT:    li r4, 292615; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242616; CHECK-PREP10-NEXT:    oris r4, r4, 544372617; CHECK-PREP10-NEXT:    ori r4, r4, 40972618; CHECK-PREP10-NEXT:    or r3, r3, r42619; CHECK-PREP10-NEXT:    lfd f0, 0(r3)2620; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02621; CHECK-PREP10-NEXT:    mffprwz r3, f02622; CHECK-PREP10-NEXT:    extsw r3, r32623; CHECK-PREP10-NEXT:    blr2624entry:2625  %or = or i64 %ptr, 10000000000012626  %0 = inttoptr i64 %or to ptr2627  %1 = load double, ptr %0, align 82628  %conv = fptosi double %1 to i82629  ret i8 %conv2630}2631 2632; Function Attrs: norecurse nounwind readonly uwtable willreturn2633define dso_local signext i8 @ld_disjoint_align64_int8_t_double(i64 %ptr) {2634; CHECK-P10-LABEL: ld_disjoint_align64_int8_t_double:2635; CHECK-P10:       # %bb.0: # %entry2636; CHECK-P10-NEXT:    pli r4, 2441406252637; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232638; CHECK-P10-NEXT:    rldic r4, r4, 12, 242639; CHECK-P10-NEXT:    lfdx f0, r3, r42640; CHECK-P10-NEXT:    xscvdpsxws f0, f02641; CHECK-P10-NEXT:    mffprwz r3, f02642; CHECK-P10-NEXT:    extsw r3, r32643; CHECK-P10-NEXT:    blr2644;2645; CHECK-PREP10-LABEL: ld_disjoint_align64_int8_t_double:2646; CHECK-PREP10:       # %bb.0: # %entry2647; CHECK-PREP10-NEXT:    lis r4, 37252648; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232649; CHECK-PREP10-NEXT:    ori r4, r4, 190252650; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242651; CHECK-PREP10-NEXT:    lfdx f0, r3, r42652; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02653; CHECK-PREP10-NEXT:    mffprwz r3, f02654; CHECK-PREP10-NEXT:    extsw r3, r32655; CHECK-PREP10-NEXT:    blr2656entry:2657  %and = and i64 %ptr, -10995116277762658  %or = or i64 %and, 10000000000002659  %0 = inttoptr i64 %or to ptr2660  %1 = load double, ptr %0, align 40962661  %conv = fptosi double %1 to i82662  ret i8 %conv2663}2664 2665; Function Attrs: norecurse nounwind readonly uwtable willreturn2666define dso_local signext i8 @ld_cst_align16_int8_t_double() {2667; CHECK-LABEL: ld_cst_align16_int8_t_double:2668; CHECK:       # %bb.0: # %entry2669; CHECK-NEXT:    lfd f0, 4080(0)2670; CHECK-NEXT:    xscvdpsxws f0, f02671; CHECK-NEXT:    mffprwz r3, f02672; CHECK-NEXT:    extsw r3, r32673; CHECK-NEXT:    blr2674entry:2675  %0 = load double, ptr inttoptr (i64 4080 to ptr), align 162676  %conv = fptosi double %0 to i82677  ret i8 %conv2678}2679 2680; Function Attrs: norecurse nounwind readonly uwtable willreturn2681define dso_local signext i8 @ld_cst_align32_int8_t_double() {2682; CHECK-LABEL: ld_cst_align32_int8_t_double:2683; CHECK:       # %bb.0: # %entry2684; CHECK-NEXT:    lis r3, 1532685; CHECK-NEXT:    lfd f0, -27108(r3)2686; CHECK-NEXT:    xscvdpsxws f0, f02687; CHECK-NEXT:    mffprwz r3, f02688; CHECK-NEXT:    extsw r3, r32689; CHECK-NEXT:    blr2690entry:2691  %0 = load double, ptr inttoptr (i64 9999900 to ptr), align 82692  %conv = fptosi double %0 to i82693  ret i8 %conv2694}2695 2696; Function Attrs: norecurse nounwind readonly uwtable willreturn2697define dso_local signext i8 @ld_cst_align64_int8_t_double() {2698; CHECK-P10-LABEL: ld_cst_align64_int8_t_double:2699; CHECK-P10:       # %bb.0: # %entry2700; CHECK-P10-NEXT:    pli r3, 2441406252701; CHECK-P10-NEXT:    rldic r3, r3, 12, 242702; CHECK-P10-NEXT:    lfd f0, 0(r3)2703; CHECK-P10-NEXT:    xscvdpsxws f0, f02704; CHECK-P10-NEXT:    mffprwz r3, f02705; CHECK-P10-NEXT:    extsw r3, r32706; CHECK-P10-NEXT:    blr2707;2708; CHECK-PREP10-LABEL: ld_cst_align64_int8_t_double:2709; CHECK-PREP10:       # %bb.0: # %entry2710; CHECK-PREP10-NEXT:    lis r3, 37252711; CHECK-PREP10-NEXT:    ori r3, r3, 190252712; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 242713; CHECK-PREP10-NEXT:    lfd f0, 0(r3)2714; CHECK-PREP10-NEXT:    xscvdpsxws f0, f02715; CHECK-PREP10-NEXT:    mffprwz r3, f02716; CHECK-PREP10-NEXT:    extsw r3, r32717; CHECK-PREP10-NEXT:    blr2718entry:2719  %0 = load double, ptr inttoptr (i64 1000000000000 to ptr), align 40962720  %conv = fptosi double %0 to i82721  ret i8 %conv2722}2723 2724; Function Attrs: norecurse nounwind readonly uwtable willreturn2725define dso_local zeroext i8 @ld_0_uint8_t_uint8_t(i64 %ptr) {2726; CHECK-LABEL: ld_0_uint8_t_uint8_t:2727; CHECK:       # %bb.0: # %entry2728; CHECK-NEXT:    lbz r3, 0(r3)2729; CHECK-NEXT:    blr2730entry:2731  %0 = inttoptr i64 %ptr to ptr2732  %1 = load i8, ptr %0, align 12733  ret i8 %12734}2735 2736; Function Attrs: norecurse nounwind readonly uwtable willreturn2737define dso_local zeroext i8 @ld_align16_uint8_t_uint8_t(ptr nocapture readonly %ptr) {2738; CHECK-LABEL: ld_align16_uint8_t_uint8_t:2739; CHECK:       # %bb.0: # %entry2740; CHECK-NEXT:    lbz r3, 8(r3)2741; CHECK-NEXT:    blr2742entry:2743  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82744  %0 = load i8, ptr %add.ptr, align 12745  ret i8 %02746}2747 2748; Function Attrs: norecurse nounwind readonly uwtable willreturn2749define dso_local zeroext i8 @ld_align32_uint8_t_uint8_t(ptr nocapture readonly %ptr) {2750; CHECK-P10-LABEL: ld_align32_uint8_t_uint8_t:2751; CHECK-P10:       # %bb.0: # %entry2752; CHECK-P10-NEXT:    plbz r3, 99999000(r3), 02753; CHECK-P10-NEXT:    blr2754;2755; CHECK-PREP10-LABEL: ld_align32_uint8_t_uint8_t:2756; CHECK-PREP10:       # %bb.0: # %entry2757; CHECK-PREP10-NEXT:    lis r4, 15252758; CHECK-PREP10-NEXT:    ori r4, r4, 566002759; CHECK-PREP10-NEXT:    lbzx r3, r3, r42760; CHECK-PREP10-NEXT:    blr2761entry:2762  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002763  %0 = load i8, ptr %add.ptr, align 12764  ret i8 %02765}2766 2767; Function Attrs: norecurse nounwind readonly uwtable willreturn2768define dso_local zeroext i8 @ld_unalign64_uint8_t_uint8_t(ptr nocapture readonly %ptr) {2769; CHECK-P10-LABEL: ld_unalign64_uint8_t_uint8_t:2770; CHECK-P10:       # %bb.0: # %entry2771; CHECK-P10-NEXT:    pli r4, 2322772; CHECK-P10-NEXT:    pli r5, 35675873292773; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02774; CHECK-P10-NEXT:    lbzx r3, r3, r52775; CHECK-P10-NEXT:    blr2776;2777; CHECK-PREP10-LABEL: ld_unalign64_uint8_t_uint8_t:2778; CHECK-PREP10:       # %bb.0: # %entry2779; CHECK-PREP10-NEXT:    li r4, 292780; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242781; CHECK-PREP10-NEXT:    oris r4, r4, 544372782; CHECK-PREP10-NEXT:    ori r4, r4, 40972783; CHECK-PREP10-NEXT:    lbzx r3, r3, r42784; CHECK-PREP10-NEXT:    blr2785entry:2786  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000012787  %0 = load i8, ptr %add.ptr, align 12788  ret i8 %02789}2790 2791; Function Attrs: norecurse nounwind readonly uwtable willreturn2792define dso_local zeroext i8 @ld_align64_uint8_t_uint8_t(ptr nocapture readonly %ptr) {2793; CHECK-P10-LABEL: ld_align64_uint8_t_uint8_t:2794; CHECK-P10:       # %bb.0: # %entry2795; CHECK-P10-NEXT:    pli r4, 2441406252796; CHECK-P10-NEXT:    rldic r4, r4, 12, 242797; CHECK-P10-NEXT:    lbzx r3, r3, r42798; CHECK-P10-NEXT:    blr2799;2800; CHECK-PREP10-LABEL: ld_align64_uint8_t_uint8_t:2801; CHECK-PREP10:       # %bb.0: # %entry2802; CHECK-PREP10-NEXT:    lis r4, 37252803; CHECK-PREP10-NEXT:    ori r4, r4, 190252804; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242805; CHECK-PREP10-NEXT:    lbzx r3, r3, r42806; CHECK-PREP10-NEXT:    blr2807entry:2808  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002809  %0 = load i8, ptr %add.ptr, align 12810  ret i8 %02811}2812 2813; Function Attrs: norecurse nounwind readonly uwtable willreturn2814define dso_local zeroext i8 @ld_reg_uint8_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {2815; CHECK-LABEL: ld_reg_uint8_t_uint8_t:2816; CHECK:       # %bb.0: # %entry2817; CHECK-NEXT:    lbzx r3, r3, r42818; CHECK-NEXT:    blr2819entry:2820  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2821  %0 = load i8, ptr %add.ptr, align 12822  ret i8 %02823}2824 2825; Function Attrs: norecurse nounwind readonly uwtable willreturn2826define dso_local zeroext i8 @ld_or_uint8_t_uint8_t(i64 %ptr, i8 zeroext %off) {2827; CHECK-LABEL: ld_or_uint8_t_uint8_t:2828; CHECK:       # %bb.0: # %entry2829; CHECK-NEXT:    or r3, r4, r32830; CHECK-NEXT:    lbz r3, 0(r3)2831; CHECK-NEXT:    blr2832entry:2833  %conv = zext i8 %off to i642834  %or = or i64 %conv, %ptr2835  %0 = inttoptr i64 %or to ptr2836  %1 = load i8, ptr %0, align 12837  ret i8 %12838}2839 2840; Function Attrs: norecurse nounwind readonly uwtable willreturn2841define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint8_t(i64 %ptr) {2842; CHECK-LABEL: ld_not_disjoint16_uint8_t_uint8_t:2843; CHECK:       # %bb.0: # %entry2844; CHECK-NEXT:    ori r3, r3, 62845; CHECK-NEXT:    lbz r3, 0(r3)2846; CHECK-NEXT:    blr2847entry:2848  %or = or i64 %ptr, 62849  %0 = inttoptr i64 %or to ptr2850  %1 = load i8, ptr %0, align 12851  ret i8 %12852}2853 2854; Function Attrs: norecurse nounwind readonly uwtable willreturn2855define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint8_t(i64 %ptr) {2856; CHECK-LABEL: ld_disjoint_align16_uint8_t_uint8_t:2857; CHECK:       # %bb.0: # %entry2858; CHECK-NEXT:    rldicr r3, r3, 0, 512859; CHECK-NEXT:    lbz r3, 24(r3)2860; CHECK-NEXT:    blr2861entry:2862  %and = and i64 %ptr, -40962863  %or = or i64 %and, 242864  %0 = inttoptr i64 %or to ptr2865  %1 = load i8, ptr %0, align 82866  ret i8 %12867}2868 2869; Function Attrs: norecurse nounwind readonly uwtable willreturn2870define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint8_t(i64 %ptr) {2871; CHECK-LABEL: ld_not_disjoint32_uint8_t_uint8_t:2872; CHECK:       # %bb.0: # %entry2873; CHECK-NEXT:    ori r3, r3, 344632874; CHECK-NEXT:    oris r3, r3, 12875; CHECK-NEXT:    lbz r3, 0(r3)2876; CHECK-NEXT:    blr2877entry:2878  %or = or i64 %ptr, 999992879  %0 = inttoptr i64 %or to ptr2880  %1 = load i8, ptr %0, align 12881  ret i8 %12882}2883 2884; Function Attrs: norecurse nounwind readonly uwtable willreturn2885define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint8_t(i64 %ptr) {2886; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_uint8_t:2887; CHECK-P10:       # %bb.0: # %entry2888; CHECK-P10-NEXT:    lis r4, -152642889; CHECK-P10-NEXT:    and r3, r3, r42890; CHECK-P10-NEXT:    plbz r3, 999990000(r3), 02891; CHECK-P10-NEXT:    blr2892;2893; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_uint8_t:2894; CHECK-PREP10:       # %bb.0: # %entry2895; CHECK-PREP10-NEXT:    lis r4, -152642896; CHECK-PREP10-NEXT:    and r3, r3, r42897; CHECK-PREP10-NEXT:    lis r4, 152582898; CHECK-PREP10-NEXT:    ori r4, r4, 417122899; CHECK-PREP10-NEXT:    lbzx r3, r3, r42900; CHECK-PREP10-NEXT:    blr2901entry:2902  %and = and i64 %ptr, -10003415042903  %or = or i64 %and, 9999900002904  %0 = inttoptr i64 %or to ptr2905  %1 = load i8, ptr %0, align 162906  ret i8 %12907}2908 2909; Function Attrs: norecurse nounwind readonly uwtable willreturn2910define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint8_t(i64 %ptr) {2911; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_uint8_t:2912; CHECK-P10:       # %bb.0: # %entry2913; CHECK-P10-NEXT:    pli r4, 2322914; CHECK-P10-NEXT:    pli r5, 35675873292915; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02916; CHECK-P10-NEXT:    or r3, r3, r52917; CHECK-P10-NEXT:    lbz r3, 0(r3)2918; CHECK-P10-NEXT:    blr2919;2920; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_uint8_t:2921; CHECK-PREP10:       # %bb.0: # %entry2922; CHECK-PREP10-NEXT:    li r4, 292923; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242924; CHECK-PREP10-NEXT:    oris r4, r4, 544372925; CHECK-PREP10-NEXT:    ori r4, r4, 40972926; CHECK-PREP10-NEXT:    or r3, r3, r42927; CHECK-PREP10-NEXT:    lbz r3, 0(r3)2928; CHECK-PREP10-NEXT:    blr2929entry:2930  %or = or i64 %ptr, 10000000000012931  %0 = inttoptr i64 %or to ptr2932  %1 = load i8, ptr %0, align 12933  ret i8 %12934}2935 2936; Function Attrs: norecurse nounwind readonly uwtable willreturn2937define dso_local zeroext i8 @ld_disjoint_unalign64_uint8_t_uint8_t(i64 %ptr) {2938; CHECK-P10-LABEL: ld_disjoint_unalign64_uint8_t_uint8_t:2939; CHECK-P10:       # %bb.0: # %entry2940; CHECK-P10-NEXT:    pli r4, 2322941; CHECK-P10-NEXT:    pli r5, 35675873292942; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232943; CHECK-P10-NEXT:    rldimi r5, r4, 32, 02944; CHECK-P10-NEXT:    lbzx r3, r3, r52945; CHECK-P10-NEXT:    blr2946;2947; CHECK-PREP10-LABEL: ld_disjoint_unalign64_uint8_t_uint8_t:2948; CHECK-PREP10:       # %bb.0: # %entry2949; CHECK-PREP10-NEXT:    li r4, 292950; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232951; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 242952; CHECK-PREP10-NEXT:    oris r4, r4, 544372953; CHECK-PREP10-NEXT:    ori r4, r4, 40972954; CHECK-PREP10-NEXT:    lbzx r3, r3, r42955; CHECK-PREP10-NEXT:    blr2956entry:2957  %and = and i64 %ptr, -10995116277762958  %or = or i64 %and, 10000000000012959  %0 = inttoptr i64 %or to ptr2960  %1 = load i8, ptr %0, align 12961  ret i8 %12962}2963 2964; Function Attrs: norecurse nounwind readonly uwtable willreturn2965define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint8_t(i64 %ptr) {2966; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_uint8_t:2967; CHECK-P10:       # %bb.0: # %entry2968; CHECK-P10-NEXT:    pli r4, 2441406252969; CHECK-P10-NEXT:    rldicr r3, r3, 0, 232970; CHECK-P10-NEXT:    rldic r4, r4, 12, 242971; CHECK-P10-NEXT:    lbzx r3, r3, r42972; CHECK-P10-NEXT:    blr2973;2974; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_uint8_t:2975; CHECK-PREP10:       # %bb.0: # %entry2976; CHECK-PREP10-NEXT:    lis r4, 37252977; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 232978; CHECK-PREP10-NEXT:    ori r4, r4, 190252979; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 242980; CHECK-PREP10-NEXT:    lbzx r3, r3, r42981; CHECK-PREP10-NEXT:    blr2982entry:2983  %and = and i64 %ptr, -10995116277762984  %or = or i64 %and, 10000000000002985  %0 = inttoptr i64 %or to ptr2986  %1 = load i8, ptr %0, align 40962987  ret i8 %12988}2989 2990; Function Attrs: norecurse nounwind readonly uwtable willreturn2991define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint8_t() {2992; CHECK-LABEL: ld_cst_align16_uint8_t_uint8_t:2993; CHECK:       # %bb.0: # %entry2994; CHECK-NEXT:    lbz r3, 4080(0)2995; CHECK-NEXT:    blr2996entry:2997  %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 162998  ret i8 %02999}3000 3001; Function Attrs: norecurse nounwind readonly uwtable willreturn3002define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint8_t() {3003; CHECK-LABEL: ld_cst_align32_uint8_t_uint8_t:3004; CHECK:       # %bb.0: # %entry3005; CHECK-NEXT:    lis r3, 1533006; CHECK-NEXT:    lbz r3, -27108(r3)3007; CHECK-NEXT:    blr3008entry:3009  %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 43010  ret i8 %03011}3012 3013; Function Attrs: norecurse nounwind readonly uwtable willreturn3014define dso_local zeroext i8 @ld_cst_unalign64_uint8_t_uint8_t() {3015; CHECK-P10-LABEL: ld_cst_unalign64_uint8_t_uint8_t:3016; CHECK-P10:       # %bb.0: # %entry3017; CHECK-P10-NEXT:    pli r3, 2323018; CHECK-P10-NEXT:    pli r4, 35675873293019; CHECK-P10-NEXT:    rldimi r4, r3, 32, 03020; CHECK-P10-NEXT:    lbz r3, 0(r4)3021; CHECK-P10-NEXT:    blr3022;3023; CHECK-PREP10-LABEL: ld_cst_unalign64_uint8_t_uint8_t:3024; CHECK-PREP10:       # %bb.0: # %entry3025; CHECK-PREP10-NEXT:    li r3, 293026; CHECK-PREP10-NEXT:    rldic r3, r3, 35, 243027; CHECK-PREP10-NEXT:    oris r3, r3, 544373028; CHECK-PREP10-NEXT:    ori r3, r3, 40973029; CHECK-PREP10-NEXT:    lbz r3, 0(r3)3030; CHECK-PREP10-NEXT:    blr3031entry:3032  %0 = load i8, ptr inttoptr (i64 1000000000001 to ptr), align 13033  ret i8 %03034}3035 3036; Function Attrs: norecurse nounwind readonly uwtable willreturn3037define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint8_t() {3038; CHECK-P10-LABEL: ld_cst_align64_uint8_t_uint8_t:3039; CHECK-P10:       # %bb.0: # %entry3040; CHECK-P10-NEXT:    pli r3, 2441406253041; CHECK-P10-NEXT:    rldic r3, r3, 12, 243042; CHECK-P10-NEXT:    lbz r3, 0(r3)3043; CHECK-P10-NEXT:    blr3044;3045; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_uint8_t:3046; CHECK-PREP10:       # %bb.0: # %entry3047; CHECK-PREP10-NEXT:    lis r3, 37253048; CHECK-PREP10-NEXT:    ori r3, r3, 190253049; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 243050; CHECK-PREP10-NEXT:    lbz r3, 0(r3)3051; CHECK-PREP10-NEXT:    blr3052entry:3053  %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 40963054  ret i8 %03055}3056 3057; Function Attrs: norecurse nounwind readonly uwtable willreturn3058define dso_local zeroext i8 @ld_0_uint8_t_uint16_t(i64 %ptr) {3059; CHECK-LE-LABEL: ld_0_uint8_t_uint16_t:3060; CHECK-LE:       # %bb.0: # %entry3061; CHECK-LE-NEXT:    lbz r3, 0(r3)3062; CHECK-LE-NEXT:    blr3063;3064; CHECK-BE-LABEL: ld_0_uint8_t_uint16_t:3065; CHECK-BE:       # %bb.0: # %entry3066; CHECK-BE-NEXT:    lbz r3, 1(r3)3067; CHECK-BE-NEXT:    blr3068entry:3069  %0 = inttoptr i64 %ptr to ptr3070  %1 = load i16, ptr %0, align 23071  %conv = trunc i16 %1 to i83072  ret i8 %conv3073}3074 3075; Function Attrs: norecurse nounwind readonly uwtable willreturn3076define dso_local zeroext i8 @ld_align16_uint8_t_uint16_t(ptr nocapture readonly %ptr) {3077; CHECK-LE-LABEL: ld_align16_uint8_t_uint16_t:3078; CHECK-LE:       # %bb.0: # %entry3079; CHECK-LE-NEXT:    lbz r3, 8(r3)3080; CHECK-LE-NEXT:    blr3081;3082; CHECK-BE-LABEL: ld_align16_uint8_t_uint16_t:3083; CHECK-BE:       # %bb.0: # %entry3084; CHECK-BE-NEXT:    lbz r3, 9(r3)3085; CHECK-BE-NEXT:    blr3086entry:3087  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83088  %0 = load i16, ptr %add.ptr, align 23089  %conv = trunc i16 %0 to i83090  ret i8 %conv3091}3092 3093; Function Attrs: norecurse nounwind readonly uwtable willreturn3094define dso_local zeroext i8 @ld_align32_uint8_t_uint16_t(ptr nocapture readonly %ptr) {3095; CHECK-P10-LE-LABEL: ld_align32_uint8_t_uint16_t:3096; CHECK-P10-LE:       # %bb.0: # %entry3097; CHECK-P10-LE-NEXT:    plbz r3, 99999000(r3), 03098; CHECK-P10-LE-NEXT:    blr3099;3100; CHECK-P10-BE-LABEL: ld_align32_uint8_t_uint16_t:3101; CHECK-P10-BE:       # %bb.0: # %entry3102; CHECK-P10-BE-NEXT:    plbz r3, 99999001(r3), 03103; CHECK-P10-BE-NEXT:    blr3104;3105; CHECK-P9-LE-LABEL: ld_align32_uint8_t_uint16_t:3106; CHECK-P9-LE:       # %bb.0: # %entry3107; CHECK-P9-LE-NEXT:    lis r4, 15253108; CHECK-P9-LE-NEXT:    ori r4, r4, 566003109; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43110; CHECK-P9-LE-NEXT:    blr3111;3112; CHECK-P9-BE-LABEL: ld_align32_uint8_t_uint16_t:3113; CHECK-P9-BE:       # %bb.0: # %entry3114; CHECK-P9-BE-NEXT:    lis r4, 15253115; CHECK-P9-BE-NEXT:    ori r4, r4, 566013116; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43117; CHECK-P9-BE-NEXT:    blr3118;3119; CHECK-P8-LE-LABEL: ld_align32_uint8_t_uint16_t:3120; CHECK-P8-LE:       # %bb.0: # %entry3121; CHECK-P8-LE-NEXT:    lis r4, 15253122; CHECK-P8-LE-NEXT:    ori r4, r4, 566003123; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43124; CHECK-P8-LE-NEXT:    blr3125;3126; CHECK-P8-BE-LABEL: ld_align32_uint8_t_uint16_t:3127; CHECK-P8-BE:       # %bb.0: # %entry3128; CHECK-P8-BE-NEXT:    lis r4, 15253129; CHECK-P8-BE-NEXT:    ori r4, r4, 566013130; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43131; CHECK-P8-BE-NEXT:    blr3132entry:3133  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003134  %0 = load i16, ptr %add.ptr, align 23135  %conv = trunc i16 %0 to i83136  ret i8 %conv3137}3138 3139; Function Attrs: norecurse nounwind readonly uwtable willreturn3140define dso_local zeroext i8 @ld_unalign64_uint8_t_uint16_t(ptr nocapture readonly %ptr) {3141; CHECK-P10-LE-LABEL: ld_unalign64_uint8_t_uint16_t:3142; CHECK-P10-LE:       # %bb.0: # %entry3143; CHECK-P10-LE-NEXT:    pli r4, 2323144; CHECK-P10-LE-NEXT:    pli r5, 35675873293145; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 03146; CHECK-P10-LE-NEXT:    lbzx r3, r3, r53147; CHECK-P10-LE-NEXT:    blr3148;3149; CHECK-P10-BE-LABEL: ld_unalign64_uint8_t_uint16_t:3150; CHECK-P10-BE:       # %bb.0: # %entry3151; CHECK-P10-BE-NEXT:    pli r4, 2323152; CHECK-P10-BE-NEXT:    pli r5, 35675873303153; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03154; CHECK-P10-BE-NEXT:    lbzx r3, r3, r53155; CHECK-P10-BE-NEXT:    blr3156;3157; CHECK-P9-LE-LABEL: ld_unalign64_uint8_t_uint16_t:3158; CHECK-P9-LE:       # %bb.0: # %entry3159; CHECK-P9-LE-NEXT:    li r4, 293160; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 243161; CHECK-P9-LE-NEXT:    oris r4, r4, 544373162; CHECK-P9-LE-NEXT:    ori r4, r4, 40973163; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43164; CHECK-P9-LE-NEXT:    blr3165;3166; CHECK-P9-BE-LABEL: ld_unalign64_uint8_t_uint16_t:3167; CHECK-P9-BE:       # %bb.0: # %entry3168; CHECK-P9-BE-NEXT:    li r4, 293169; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243170; CHECK-P9-BE-NEXT:    oris r4, r4, 544373171; CHECK-P9-BE-NEXT:    ori r4, r4, 40983172; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43173; CHECK-P9-BE-NEXT:    blr3174;3175; CHECK-P8-LE-LABEL: ld_unalign64_uint8_t_uint16_t:3176; CHECK-P8-LE:       # %bb.0: # %entry3177; CHECK-P8-LE-NEXT:    li r4, 293178; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 243179; CHECK-P8-LE-NEXT:    oris r4, r4, 544373180; CHECK-P8-LE-NEXT:    ori r4, r4, 40973181; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43182; CHECK-P8-LE-NEXT:    blr3183;3184; CHECK-P8-BE-LABEL: ld_unalign64_uint8_t_uint16_t:3185; CHECK-P8-BE:       # %bb.0: # %entry3186; CHECK-P8-BE-NEXT:    li r4, 293187; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243188; CHECK-P8-BE-NEXT:    oris r4, r4, 544373189; CHECK-P8-BE-NEXT:    ori r4, r4, 40983190; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43191; CHECK-P8-BE-NEXT:    blr3192entry:3193  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000013194  %0 = load i16, ptr %add.ptr, align 23195  %conv = trunc i16 %0 to i83196  ret i8 %conv3197}3198 3199; Function Attrs: norecurse nounwind readonly uwtable willreturn3200define dso_local zeroext i8 @ld_align64_uint8_t_uint16_t(ptr nocapture readonly %ptr) {3201; CHECK-P10-LE-LABEL: ld_align64_uint8_t_uint16_t:3202; CHECK-P10-LE:       # %bb.0: # %entry3203; CHECK-P10-LE-NEXT:    pli r4, 2441406253204; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 243205; CHECK-P10-LE-NEXT:    lbzx r3, r3, r43206; CHECK-P10-LE-NEXT:    blr3207;3208; CHECK-P10-BE-LABEL: ld_align64_uint8_t_uint16_t:3209; CHECK-P10-BE:       # %bb.0: # %entry3210; CHECK-P10-BE-NEXT:    pli r4, 2323211; CHECK-P10-BE-NEXT:    pli r5, 35675873293212; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03213; CHECK-P10-BE-NEXT:    lbzx r3, r3, r53214; CHECK-P10-BE-NEXT:    blr3215;3216; CHECK-P9-LE-LABEL: ld_align64_uint8_t_uint16_t:3217; CHECK-P9-LE:       # %bb.0: # %entry3218; CHECK-P9-LE-NEXT:    lis r4, 37253219; CHECK-P9-LE-NEXT:    ori r4, r4, 190253220; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 243221; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43222; CHECK-P9-LE-NEXT:    blr3223;3224; CHECK-P9-BE-LABEL: ld_align64_uint8_t_uint16_t:3225; CHECK-P9-BE:       # %bb.0: # %entry3226; CHECK-P9-BE-NEXT:    li r4, 293227; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243228; CHECK-P9-BE-NEXT:    oris r4, r4, 544373229; CHECK-P9-BE-NEXT:    ori r4, r4, 40973230; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43231; CHECK-P9-BE-NEXT:    blr3232;3233; CHECK-P8-LE-LABEL: ld_align64_uint8_t_uint16_t:3234; CHECK-P8-LE:       # %bb.0: # %entry3235; CHECK-P8-LE-NEXT:    lis r4, 37253236; CHECK-P8-LE-NEXT:    ori r4, r4, 190253237; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 243238; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43239; CHECK-P8-LE-NEXT:    blr3240;3241; CHECK-P8-BE-LABEL: ld_align64_uint8_t_uint16_t:3242; CHECK-P8-BE:       # %bb.0: # %entry3243; CHECK-P8-BE-NEXT:    li r4, 293244; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243245; CHECK-P8-BE-NEXT:    oris r4, r4, 544373246; CHECK-P8-BE-NEXT:    ori r4, r4, 40973247; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43248; CHECK-P8-BE-NEXT:    blr3249entry:3250  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003251  %0 = load i16, ptr %add.ptr, align 23252  %conv = trunc i16 %0 to i83253  ret i8 %conv3254}3255 3256; Function Attrs: norecurse nounwind readonly uwtable willreturn3257define dso_local zeroext i8 @ld_reg_uint8_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {3258; CHECK-LE-LABEL: ld_reg_uint8_t_uint16_t:3259; CHECK-LE:       # %bb.0: # %entry3260; CHECK-LE-NEXT:    lbzx r3, r3, r43261; CHECK-LE-NEXT:    blr3262;3263; CHECK-BE-LABEL: ld_reg_uint8_t_uint16_t:3264; CHECK-BE:       # %bb.0: # %entry3265; CHECK-BE-NEXT:    add r3, r3, r43266; CHECK-BE-NEXT:    lbz r3, 1(r3)3267; CHECK-BE-NEXT:    blr3268entry:3269  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3270  %0 = load i16, ptr %add.ptr, align 23271  %conv = trunc i16 %0 to i83272  ret i8 %conv3273}3274 3275; Function Attrs: norecurse nounwind readonly uwtable willreturn3276define dso_local zeroext i8 @ld_or_uint8_t_uint16_t(i64 %ptr, i8 zeroext %off) {3277; CHECK-LE-LABEL: ld_or_uint8_t_uint16_t:3278; CHECK-LE:       # %bb.0: # %entry3279; CHECK-LE-NEXT:    or r3, r4, r33280; CHECK-LE-NEXT:    lbz r3, 0(r3)3281; CHECK-LE-NEXT:    blr3282;3283; CHECK-BE-LABEL: ld_or_uint8_t_uint16_t:3284; CHECK-BE:       # %bb.0: # %entry3285; CHECK-BE-NEXT:    or r3, r4, r33286; CHECK-BE-NEXT:    lbz r3, 1(r3)3287; CHECK-BE-NEXT:    blr3288entry:3289  %conv = zext i8 %off to i643290  %or = or i64 %conv, %ptr3291  %0 = inttoptr i64 %or to ptr3292  %1 = load i16, ptr %0, align 23293  %conv1 = trunc i16 %1 to i83294  ret i8 %conv13295}3296 3297; Function Attrs: norecurse nounwind readonly uwtable willreturn3298define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint16_t(i64 %ptr) {3299; CHECK-LE-LABEL: ld_not_disjoint16_uint8_t_uint16_t:3300; CHECK-LE:       # %bb.0: # %entry3301; CHECK-LE-NEXT:    ori r3, r3, 63302; CHECK-LE-NEXT:    lbz r3, 0(r3)3303; CHECK-LE-NEXT:    blr3304;3305; CHECK-BE-LABEL: ld_not_disjoint16_uint8_t_uint16_t:3306; CHECK-BE:       # %bb.0: # %entry3307; CHECK-BE-NEXT:    ori r3, r3, 63308; CHECK-BE-NEXT:    lbz r3, 1(r3)3309; CHECK-BE-NEXT:    blr3310entry:3311  %or = or i64 %ptr, 63312  %0 = inttoptr i64 %or to ptr3313  %1 = load i16, ptr %0, align 23314  %conv = trunc i16 %1 to i83315  ret i8 %conv3316}3317 3318; Function Attrs: norecurse nounwind readonly uwtable willreturn3319define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint16_t(i64 %ptr) {3320; CHECK-LE-LABEL: ld_disjoint_align16_uint8_t_uint16_t:3321; CHECK-LE:       # %bb.0: # %entry3322; CHECK-LE-NEXT:    rldicr r3, r3, 0, 513323; CHECK-LE-NEXT:    lbz r3, 24(r3)3324; CHECK-LE-NEXT:    blr3325;3326; CHECK-BE-LABEL: ld_disjoint_align16_uint8_t_uint16_t:3327; CHECK-BE:       # %bb.0: # %entry3328; CHECK-BE-NEXT:    rldicr r3, r3, 0, 513329; CHECK-BE-NEXT:    lbz r3, 25(r3)3330; CHECK-BE-NEXT:    blr3331entry:3332  %and = and i64 %ptr, -40963333  %or = or i64 %and, 243334  %0 = inttoptr i64 %or to ptr3335  %1 = load i16, ptr %0, align 83336  %conv = trunc i16 %1 to i83337  ret i8 %conv3338}3339 3340; Function Attrs: norecurse nounwind readonly uwtable willreturn3341define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint16_t(i64 %ptr) {3342; CHECK-LE-LABEL: ld_not_disjoint32_uint8_t_uint16_t:3343; CHECK-LE:       # %bb.0: # %entry3344; CHECK-LE-NEXT:    ori r3, r3, 344633345; CHECK-LE-NEXT:    oris r3, r3, 13346; CHECK-LE-NEXT:    lbz r3, 0(r3)3347; CHECK-LE-NEXT:    blr3348;3349; CHECK-BE-LABEL: ld_not_disjoint32_uint8_t_uint16_t:3350; CHECK-BE:       # %bb.0: # %entry3351; CHECK-BE-NEXT:    ori r3, r3, 344633352; CHECK-BE-NEXT:    oris r3, r3, 13353; CHECK-BE-NEXT:    lbz r3, 1(r3)3354; CHECK-BE-NEXT:    blr3355entry:3356  %or = or i64 %ptr, 999993357  %0 = inttoptr i64 %or to ptr3358  %1 = load i16, ptr %0, align 23359  %conv = trunc i16 %1 to i83360  ret i8 %conv3361}3362 3363; Function Attrs: norecurse nounwind readonly uwtable willreturn3364define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint16_t(i64 %ptr) {3365; CHECK-P10-LE-LABEL: ld_disjoint_align32_uint8_t_uint16_t:3366; CHECK-P10-LE:       # %bb.0: # %entry3367; CHECK-P10-LE-NEXT:    lis r4, -152643368; CHECK-P10-LE-NEXT:    and r3, r3, r43369; CHECK-P10-LE-NEXT:    plbz r3, 999990000(r3), 03370; CHECK-P10-LE-NEXT:    blr3371;3372; CHECK-P10-BE-LABEL: ld_disjoint_align32_uint8_t_uint16_t:3373; CHECK-P10-BE:       # %bb.0: # %entry3374; CHECK-P10-BE-NEXT:    lis r4, -152643375; CHECK-P10-BE-NEXT:    and r3, r3, r43376; CHECK-P10-BE-NEXT:    plbz r3, 999990001(r3), 03377; CHECK-P10-BE-NEXT:    blr3378;3379; CHECK-P9-LE-LABEL: ld_disjoint_align32_uint8_t_uint16_t:3380; CHECK-P9-LE:       # %bb.0: # %entry3381; CHECK-P9-LE-NEXT:    lis r4, -152643382; CHECK-P9-LE-NEXT:    and r3, r3, r43383; CHECK-P9-LE-NEXT:    lis r4, 152583384; CHECK-P9-LE-NEXT:    ori r4, r4, 417123385; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43386; CHECK-P9-LE-NEXT:    blr3387;3388; CHECK-P9-BE-LABEL: ld_disjoint_align32_uint8_t_uint16_t:3389; CHECK-P9-BE:       # %bb.0: # %entry3390; CHECK-P9-BE-NEXT:    lis r4, -152643391; CHECK-P9-BE-NEXT:    and r3, r3, r43392; CHECK-P9-BE-NEXT:    lis r4, 152583393; CHECK-P9-BE-NEXT:    ori r4, r4, 417133394; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43395; CHECK-P9-BE-NEXT:    blr3396;3397; CHECK-P8-LE-LABEL: ld_disjoint_align32_uint8_t_uint16_t:3398; CHECK-P8-LE:       # %bb.0: # %entry3399; CHECK-P8-LE-NEXT:    lis r4, -152643400; CHECK-P8-LE-NEXT:    and r3, r3, r43401; CHECK-P8-LE-NEXT:    lis r4, 152583402; CHECK-P8-LE-NEXT:    ori r4, r4, 417123403; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43404; CHECK-P8-LE-NEXT:    blr3405;3406; CHECK-P8-BE-LABEL: ld_disjoint_align32_uint8_t_uint16_t:3407; CHECK-P8-BE:       # %bb.0: # %entry3408; CHECK-P8-BE-NEXT:    lis r4, -152643409; CHECK-P8-BE-NEXT:    and r3, r3, r43410; CHECK-P8-BE-NEXT:    lis r4, 152583411; CHECK-P8-BE-NEXT:    ori r4, r4, 417133412; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43413; CHECK-P8-BE-NEXT:    blr3414entry:3415  %and = and i64 %ptr, -10003415043416  %or = or i64 %and, 9999900003417  %0 = inttoptr i64 %or to ptr3418  %1 = load i16, ptr %0, align 163419  %conv = trunc i16 %1 to i83420  ret i8 %conv3421}3422 3423; Function Attrs: norecurse nounwind readonly uwtable willreturn3424define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint16_t(i64 %ptr) {3425; CHECK-P10-LE-LABEL: ld_not_disjoint64_uint8_t_uint16_t:3426; CHECK-P10-LE:       # %bb.0: # %entry3427; CHECK-P10-LE-NEXT:    pli r4, 2323428; CHECK-P10-LE-NEXT:    pli r5, 35675873293429; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 03430; CHECK-P10-LE-NEXT:    or r3, r3, r53431; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)3432; CHECK-P10-LE-NEXT:    blr3433;3434; CHECK-P10-BE-LABEL: ld_not_disjoint64_uint8_t_uint16_t:3435; CHECK-P10-BE:       # %bb.0: # %entry3436; CHECK-P10-BE-NEXT:    pli r4, 2323437; CHECK-P10-BE-NEXT:    pli r5, 35675873293438; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03439; CHECK-P10-BE-NEXT:    or r3, r3, r53440; CHECK-P10-BE-NEXT:    lbz r3, 1(r3)3441; CHECK-P10-BE-NEXT:    blr3442;3443; CHECK-P9-LE-LABEL: ld_not_disjoint64_uint8_t_uint16_t:3444; CHECK-P9-LE:       # %bb.0: # %entry3445; CHECK-P9-LE-NEXT:    li r4, 293446; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 243447; CHECK-P9-LE-NEXT:    oris r4, r4, 544373448; CHECK-P9-LE-NEXT:    ori r4, r4, 40973449; CHECK-P9-LE-NEXT:    or r3, r3, r43450; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)3451; CHECK-P9-LE-NEXT:    blr3452;3453; CHECK-P9-BE-LABEL: ld_not_disjoint64_uint8_t_uint16_t:3454; CHECK-P9-BE:       # %bb.0: # %entry3455; CHECK-P9-BE-NEXT:    li r4, 293456; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243457; CHECK-P9-BE-NEXT:    oris r4, r4, 544373458; CHECK-P9-BE-NEXT:    ori r4, r4, 40973459; CHECK-P9-BE-NEXT:    or r3, r3, r43460; CHECK-P9-BE-NEXT:    lbz r3, 1(r3)3461; CHECK-P9-BE-NEXT:    blr3462;3463; CHECK-P8-LE-LABEL: ld_not_disjoint64_uint8_t_uint16_t:3464; CHECK-P8-LE:       # %bb.0: # %entry3465; CHECK-P8-LE-NEXT:    li r4, 293466; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 243467; CHECK-P8-LE-NEXT:    oris r4, r4, 544373468; CHECK-P8-LE-NEXT:    ori r4, r4, 40973469; CHECK-P8-LE-NEXT:    or r3, r3, r43470; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)3471; CHECK-P8-LE-NEXT:    blr3472;3473; CHECK-P8-BE-LABEL: ld_not_disjoint64_uint8_t_uint16_t:3474; CHECK-P8-BE:       # %bb.0: # %entry3475; CHECK-P8-BE-NEXT:    li r4, 293476; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243477; CHECK-P8-BE-NEXT:    oris r4, r4, 544373478; CHECK-P8-BE-NEXT:    ori r4, r4, 40973479; CHECK-P8-BE-NEXT:    or r3, r3, r43480; CHECK-P8-BE-NEXT:    lbz r3, 1(r3)3481; CHECK-P8-BE-NEXT:    blr3482entry:3483  %or = or i64 %ptr, 10000000000013484  %0 = inttoptr i64 %or to ptr3485  %1 = load i16, ptr %0, align 23486  %conv = trunc i16 %1 to i83487  ret i8 %conv3488}3489 3490; Function Attrs: norecurse nounwind readonly uwtable willreturn3491define dso_local zeroext i8 @ld_disjoint_unalign64_uint8_t_uint16_t(i64 %ptr) {3492; CHECK-P10-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint16_t:3493; CHECK-P10-LE:       # %bb.0: # %entry3494; CHECK-P10-LE-NEXT:    pli r4, 2323495; CHECK-P10-LE-NEXT:    pli r5, 35675873293496; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 233497; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 03498; CHECK-P10-LE-NEXT:    lbzx r3, r3, r53499; CHECK-P10-LE-NEXT:    blr3500;3501; CHECK-P10-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint16_t:3502; CHECK-P10-BE:       # %bb.0: # %entry3503; CHECK-P10-BE-NEXT:    pli r4, 2323504; CHECK-P10-BE-NEXT:    pli r5, 35675873303505; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 233506; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03507; CHECK-P10-BE-NEXT:    lbzx r3, r3, r53508; CHECK-P10-BE-NEXT:    blr3509;3510; CHECK-P9-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint16_t:3511; CHECK-P9-LE:       # %bb.0: # %entry3512; CHECK-P9-LE-NEXT:    li r4, 293513; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 233514; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 243515; CHECK-P9-LE-NEXT:    oris r4, r4, 544373516; CHECK-P9-LE-NEXT:    ori r4, r4, 40973517; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43518; CHECK-P9-LE-NEXT:    blr3519;3520; CHECK-P9-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint16_t:3521; CHECK-P9-BE:       # %bb.0: # %entry3522; CHECK-P9-BE-NEXT:    li r4, 293523; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 233524; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243525; CHECK-P9-BE-NEXT:    oris r4, r4, 544373526; CHECK-P9-BE-NEXT:    ori r4, r4, 40983527; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43528; CHECK-P9-BE-NEXT:    blr3529;3530; CHECK-P8-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint16_t:3531; CHECK-P8-LE:       # %bb.0: # %entry3532; CHECK-P8-LE-NEXT:    li r4, 293533; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 233534; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 243535; CHECK-P8-LE-NEXT:    oris r4, r4, 544373536; CHECK-P8-LE-NEXT:    ori r4, r4, 40973537; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43538; CHECK-P8-LE-NEXT:    blr3539;3540; CHECK-P8-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint16_t:3541; CHECK-P8-BE:       # %bb.0: # %entry3542; CHECK-P8-BE-NEXT:    li r4, 293543; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 233544; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243545; CHECK-P8-BE-NEXT:    oris r4, r4, 544373546; CHECK-P8-BE-NEXT:    ori r4, r4, 40983547; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43548; CHECK-P8-BE-NEXT:    blr3549entry:3550  %and = and i64 %ptr, -10995116277763551  %or = or i64 %and, 10000000000013552  %0 = inttoptr i64 %or to ptr3553  %1 = load i16, ptr %0, align 23554  %conv = trunc i16 %1 to i83555  ret i8 %conv3556}3557 3558; Function Attrs: norecurse nounwind readonly uwtable willreturn3559define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint16_t(i64 %ptr) {3560; CHECK-P10-LE-LABEL: ld_disjoint_align64_uint8_t_uint16_t:3561; CHECK-P10-LE:       # %bb.0: # %entry3562; CHECK-P10-LE-NEXT:    pli r4, 2441406253563; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 233564; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 243565; CHECK-P10-LE-NEXT:    lbzx r3, r3, r43566; CHECK-P10-LE-NEXT:    blr3567;3568; CHECK-P10-BE-LABEL: ld_disjoint_align64_uint8_t_uint16_t:3569; CHECK-P10-BE:       # %bb.0: # %entry3570; CHECK-P10-BE-NEXT:    pli r4, 2323571; CHECK-P10-BE-NEXT:    pli r5, 35675873293572; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 233573; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03574; CHECK-P10-BE-NEXT:    lbzx r3, r3, r53575; CHECK-P10-BE-NEXT:    blr3576;3577; CHECK-P9-LE-LABEL: ld_disjoint_align64_uint8_t_uint16_t:3578; CHECK-P9-LE:       # %bb.0: # %entry3579; CHECK-P9-LE-NEXT:    lis r4, 37253580; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 233581; CHECK-P9-LE-NEXT:    ori r4, r4, 190253582; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 243583; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43584; CHECK-P9-LE-NEXT:    blr3585;3586; CHECK-P9-BE-LABEL: ld_disjoint_align64_uint8_t_uint16_t:3587; CHECK-P9-BE:       # %bb.0: # %entry3588; CHECK-P9-BE-NEXT:    li r4, 293589; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 233590; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243591; CHECK-P9-BE-NEXT:    oris r4, r4, 544373592; CHECK-P9-BE-NEXT:    ori r4, r4, 40973593; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43594; CHECK-P9-BE-NEXT:    blr3595;3596; CHECK-P8-LE-LABEL: ld_disjoint_align64_uint8_t_uint16_t:3597; CHECK-P8-LE:       # %bb.0: # %entry3598; CHECK-P8-LE-NEXT:    lis r4, 37253599; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 233600; CHECK-P8-LE-NEXT:    ori r4, r4, 190253601; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 243602; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43603; CHECK-P8-LE-NEXT:    blr3604;3605; CHECK-P8-BE-LABEL: ld_disjoint_align64_uint8_t_uint16_t:3606; CHECK-P8-BE:       # %bb.0: # %entry3607; CHECK-P8-BE-NEXT:    li r4, 293608; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 233609; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243610; CHECK-P8-BE-NEXT:    oris r4, r4, 544373611; CHECK-P8-BE-NEXT:    ori r4, r4, 40973612; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43613; CHECK-P8-BE-NEXT:    blr3614entry:3615  %and = and i64 %ptr, -10995116277763616  %or = or i64 %and, 10000000000003617  %0 = inttoptr i64 %or to ptr3618  %1 = load i16, ptr %0, align 40963619  %conv = trunc i16 %1 to i83620  ret i8 %conv3621}3622 3623; Function Attrs: norecurse nounwind readonly uwtable willreturn3624define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint16_t() {3625; CHECK-LE-LABEL: ld_cst_align16_uint8_t_uint16_t:3626; CHECK-LE:       # %bb.0: # %entry3627; CHECK-LE-NEXT:    lbz r3, 4080(0)3628; CHECK-LE-NEXT:    blr3629;3630; CHECK-BE-LABEL: ld_cst_align16_uint8_t_uint16_t:3631; CHECK-BE:       # %bb.0: # %entry3632; CHECK-BE-NEXT:    lbz r3, 4081(0)3633; CHECK-BE-NEXT:    blr3634entry:3635  %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 163636  %conv = trunc i16 %0 to i83637  ret i8 %conv3638}3639 3640; Function Attrs: norecurse nounwind readonly uwtable willreturn3641define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint16_t() {3642; CHECK-LE-LABEL: ld_cst_align32_uint8_t_uint16_t:3643; CHECK-LE:       # %bb.0: # %entry3644; CHECK-LE-NEXT:    lis r3, 1533645; CHECK-LE-NEXT:    lbz r3, -27108(r3)3646; CHECK-LE-NEXT:    blr3647;3648; CHECK-BE-LABEL: ld_cst_align32_uint8_t_uint16_t:3649; CHECK-BE:       # %bb.0: # %entry3650; CHECK-BE-NEXT:    lis r3, 1533651; CHECK-BE-NEXT:    lbz r3, -27107(r3)3652; CHECK-BE-NEXT:    blr3653entry:3654  %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 43655  %conv = trunc i16 %0 to i83656  ret i8 %conv3657}3658 3659; Function Attrs: norecurse nounwind readonly uwtable willreturn3660define dso_local zeroext i8 @ld_cst_unalign64_uint8_t_uint16_t() {3661; CHECK-P10-LE-LABEL: ld_cst_unalign64_uint8_t_uint16_t:3662; CHECK-P10-LE:       # %bb.0: # %entry3663; CHECK-P10-LE-NEXT:    pli r3, 2323664; CHECK-P10-LE-NEXT:    pli r4, 35675873293665; CHECK-P10-LE-NEXT:    rldimi r4, r3, 32, 03666; CHECK-P10-LE-NEXT:    lbz r3, 0(r4)3667; CHECK-P10-LE-NEXT:    blr3668;3669; CHECK-P10-BE-LABEL: ld_cst_unalign64_uint8_t_uint16_t:3670; CHECK-P10-BE:       # %bb.0: # %entry3671; CHECK-P10-BE-NEXT:    pli r3, 2323672; CHECK-P10-BE-NEXT:    pli r4, 35675873303673; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 03674; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)3675; CHECK-P10-BE-NEXT:    blr3676;3677; CHECK-P9-LE-LABEL: ld_cst_unalign64_uint8_t_uint16_t:3678; CHECK-P9-LE:       # %bb.0: # %entry3679; CHECK-P9-LE-NEXT:    li r3, 293680; CHECK-P9-LE-NEXT:    rldic r3, r3, 35, 243681; CHECK-P9-LE-NEXT:    oris r3, r3, 544373682; CHECK-P9-LE-NEXT:    ori r3, r3, 40973683; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)3684; CHECK-P9-LE-NEXT:    blr3685;3686; CHECK-P9-BE-LABEL: ld_cst_unalign64_uint8_t_uint16_t:3687; CHECK-P9-BE:       # %bb.0: # %entry3688; CHECK-P9-BE-NEXT:    li r3, 293689; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 243690; CHECK-P9-BE-NEXT:    oris r3, r3, 544373691; CHECK-P9-BE-NEXT:    ori r3, r3, 40983692; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)3693; CHECK-P9-BE-NEXT:    blr3694;3695; CHECK-P8-LE-LABEL: ld_cst_unalign64_uint8_t_uint16_t:3696; CHECK-P8-LE:       # %bb.0: # %entry3697; CHECK-P8-LE-NEXT:    li r3, 293698; CHECK-P8-LE-NEXT:    rldic r3, r3, 35, 243699; CHECK-P8-LE-NEXT:    oris r3, r3, 544373700; CHECK-P8-LE-NEXT:    ori r3, r3, 40973701; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)3702; CHECK-P8-LE-NEXT:    blr3703;3704; CHECK-P8-BE-LABEL: ld_cst_unalign64_uint8_t_uint16_t:3705; CHECK-P8-BE:       # %bb.0: # %entry3706; CHECK-P8-BE-NEXT:    li r3, 293707; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 243708; CHECK-P8-BE-NEXT:    oris r3, r3, 544373709; CHECK-P8-BE-NEXT:    ori r3, r3, 40983710; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)3711; CHECK-P8-BE-NEXT:    blr3712entry:3713  %0 = load i16, ptr inttoptr (i64 1000000000001 to ptr), align 23714  %conv = trunc i16 %0 to i83715  ret i8 %conv3716}3717 3718; Function Attrs: norecurse nounwind readonly uwtable willreturn3719define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint16_t() {3720; CHECK-P10-LE-LABEL: ld_cst_align64_uint8_t_uint16_t:3721; CHECK-P10-LE:       # %bb.0: # %entry3722; CHECK-P10-LE-NEXT:    pli r3, 2441406253723; CHECK-P10-LE-NEXT:    rldic r3, r3, 12, 243724; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)3725; CHECK-P10-LE-NEXT:    blr3726;3727; CHECK-P10-BE-LABEL: ld_cst_align64_uint8_t_uint16_t:3728; CHECK-P10-BE:       # %bb.0: # %entry3729; CHECK-P10-BE-NEXT:    pli r3, 2323730; CHECK-P10-BE-NEXT:    pli r4, 35675873293731; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 03732; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)3733; CHECK-P10-BE-NEXT:    blr3734;3735; CHECK-P9-LE-LABEL: ld_cst_align64_uint8_t_uint16_t:3736; CHECK-P9-LE:       # %bb.0: # %entry3737; CHECK-P9-LE-NEXT:    lis r3, 37253738; CHECK-P9-LE-NEXT:    ori r3, r3, 190253739; CHECK-P9-LE-NEXT:    rldic r3, r3, 12, 243740; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)3741; CHECK-P9-LE-NEXT:    blr3742;3743; CHECK-P9-BE-LABEL: ld_cst_align64_uint8_t_uint16_t:3744; CHECK-P9-BE:       # %bb.0: # %entry3745; CHECK-P9-BE-NEXT:    li r3, 293746; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 243747; CHECK-P9-BE-NEXT:    oris r3, r3, 544373748; CHECK-P9-BE-NEXT:    ori r3, r3, 40973749; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)3750; CHECK-P9-BE-NEXT:    blr3751;3752; CHECK-P8-LE-LABEL: ld_cst_align64_uint8_t_uint16_t:3753; CHECK-P8-LE:       # %bb.0: # %entry3754; CHECK-P8-LE-NEXT:    lis r3, 37253755; CHECK-P8-LE-NEXT:    ori r3, r3, 190253756; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 243757; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)3758; CHECK-P8-LE-NEXT:    blr3759;3760; CHECK-P8-BE-LABEL: ld_cst_align64_uint8_t_uint16_t:3761; CHECK-P8-BE:       # %bb.0: # %entry3762; CHECK-P8-BE-NEXT:    li r3, 293763; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 243764; CHECK-P8-BE-NEXT:    oris r3, r3, 544373765; CHECK-P8-BE-NEXT:    ori r3, r3, 40973766; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)3767; CHECK-P8-BE-NEXT:    blr3768entry:3769  %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40963770  %conv = trunc i16 %0 to i83771  ret i8 %conv3772}3773 3774; Function Attrs: norecurse nounwind readonly uwtable willreturn3775define dso_local zeroext i8 @ld_0_uint8_t_uint32_t(i64 %ptr) {3776; CHECK-LE-LABEL: ld_0_uint8_t_uint32_t:3777; CHECK-LE:       # %bb.0: # %entry3778; CHECK-LE-NEXT:    lbz r3, 0(r3)3779; CHECK-LE-NEXT:    blr3780;3781; CHECK-BE-LABEL: ld_0_uint8_t_uint32_t:3782; CHECK-BE:       # %bb.0: # %entry3783; CHECK-BE-NEXT:    lbz r3, 3(r3)3784; CHECK-BE-NEXT:    blr3785entry:3786  %0 = inttoptr i64 %ptr to ptr3787  %1 = load i32, ptr %0, align 43788  %conv = trunc i32 %1 to i83789  ret i8 %conv3790}3791 3792; Function Attrs: norecurse nounwind readonly uwtable willreturn3793define dso_local zeroext i8 @ld_align16_uint8_t_uint32_t(ptr nocapture readonly %ptr) {3794; CHECK-LE-LABEL: ld_align16_uint8_t_uint32_t:3795; CHECK-LE:       # %bb.0: # %entry3796; CHECK-LE-NEXT:    lbz r3, 8(r3)3797; CHECK-LE-NEXT:    blr3798;3799; CHECK-BE-LABEL: ld_align16_uint8_t_uint32_t:3800; CHECK-BE:       # %bb.0: # %entry3801; CHECK-BE-NEXT:    lbz r3, 11(r3)3802; CHECK-BE-NEXT:    blr3803entry:3804  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83805  %0 = load i32, ptr %add.ptr, align 43806  %conv = trunc i32 %0 to i83807  ret i8 %conv3808}3809 3810; Function Attrs: norecurse nounwind readonly uwtable willreturn3811define dso_local zeroext i8 @ld_align32_uint8_t_uint32_t(ptr nocapture readonly %ptr) {3812; CHECK-P10-LE-LABEL: ld_align32_uint8_t_uint32_t:3813; CHECK-P10-LE:       # %bb.0: # %entry3814; CHECK-P10-LE-NEXT:    plbz r3, 99999000(r3), 03815; CHECK-P10-LE-NEXT:    blr3816;3817; CHECK-P10-BE-LABEL: ld_align32_uint8_t_uint32_t:3818; CHECK-P10-BE:       # %bb.0: # %entry3819; CHECK-P10-BE-NEXT:    plbz r3, 99999003(r3), 03820; CHECK-P10-BE-NEXT:    blr3821;3822; CHECK-P9-LE-LABEL: ld_align32_uint8_t_uint32_t:3823; CHECK-P9-LE:       # %bb.0: # %entry3824; CHECK-P9-LE-NEXT:    lis r4, 15253825; CHECK-P9-LE-NEXT:    ori r4, r4, 566003826; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43827; CHECK-P9-LE-NEXT:    blr3828;3829; CHECK-P9-BE-LABEL: ld_align32_uint8_t_uint32_t:3830; CHECK-P9-BE:       # %bb.0: # %entry3831; CHECK-P9-BE-NEXT:    lis r4, 15253832; CHECK-P9-BE-NEXT:    ori r4, r4, 566033833; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43834; CHECK-P9-BE-NEXT:    blr3835;3836; CHECK-P8-LE-LABEL: ld_align32_uint8_t_uint32_t:3837; CHECK-P8-LE:       # %bb.0: # %entry3838; CHECK-P8-LE-NEXT:    lis r4, 15253839; CHECK-P8-LE-NEXT:    ori r4, r4, 566003840; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43841; CHECK-P8-LE-NEXT:    blr3842;3843; CHECK-P8-BE-LABEL: ld_align32_uint8_t_uint32_t:3844; CHECK-P8-BE:       # %bb.0: # %entry3845; CHECK-P8-BE-NEXT:    lis r4, 15253846; CHECK-P8-BE-NEXT:    ori r4, r4, 566033847; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43848; CHECK-P8-BE-NEXT:    blr3849entry:3850  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003851  %0 = load i32, ptr %add.ptr, align 43852  %conv = trunc i32 %0 to i83853  ret i8 %conv3854}3855 3856; Function Attrs: norecurse nounwind readonly uwtable willreturn3857define dso_local zeroext i8 @ld_unalign64_uint8_t_uint32_t(ptr nocapture readonly %ptr) {3858; CHECK-P10-LE-LABEL: ld_unalign64_uint8_t_uint32_t:3859; CHECK-P10-LE:       # %bb.0: # %entry3860; CHECK-P10-LE-NEXT:    pli r4, 2323861; CHECK-P10-LE-NEXT:    pli r5, 35675873293862; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 03863; CHECK-P10-LE-NEXT:    lbzx r3, r3, r53864; CHECK-P10-LE-NEXT:    blr3865;3866; CHECK-P10-BE-LABEL: ld_unalign64_uint8_t_uint32_t:3867; CHECK-P10-BE:       # %bb.0: # %entry3868; CHECK-P10-BE-NEXT:    pli r4, 2323869; CHECK-P10-BE-NEXT:    pli r5, 35675873323870; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03871; CHECK-P10-BE-NEXT:    lbzx r3, r3, r53872; CHECK-P10-BE-NEXT:    blr3873;3874; CHECK-P9-LE-LABEL: ld_unalign64_uint8_t_uint32_t:3875; CHECK-P9-LE:       # %bb.0: # %entry3876; CHECK-P9-LE-NEXT:    li r4, 293877; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 243878; CHECK-P9-LE-NEXT:    oris r4, r4, 544373879; CHECK-P9-LE-NEXT:    ori r4, r4, 40973880; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43881; CHECK-P9-LE-NEXT:    blr3882;3883; CHECK-P9-BE-LABEL: ld_unalign64_uint8_t_uint32_t:3884; CHECK-P9-BE:       # %bb.0: # %entry3885; CHECK-P9-BE-NEXT:    li r4, 293886; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243887; CHECK-P9-BE-NEXT:    oris r4, r4, 544373888; CHECK-P9-BE-NEXT:    ori r4, r4, 41003889; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43890; CHECK-P9-BE-NEXT:    blr3891;3892; CHECK-P8-LE-LABEL: ld_unalign64_uint8_t_uint32_t:3893; CHECK-P8-LE:       # %bb.0: # %entry3894; CHECK-P8-LE-NEXT:    li r4, 293895; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 243896; CHECK-P8-LE-NEXT:    oris r4, r4, 544373897; CHECK-P8-LE-NEXT:    ori r4, r4, 40973898; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43899; CHECK-P8-LE-NEXT:    blr3900;3901; CHECK-P8-BE-LABEL: ld_unalign64_uint8_t_uint32_t:3902; CHECK-P8-BE:       # %bb.0: # %entry3903; CHECK-P8-BE-NEXT:    li r4, 293904; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243905; CHECK-P8-BE-NEXT:    oris r4, r4, 544373906; CHECK-P8-BE-NEXT:    ori r4, r4, 41003907; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43908; CHECK-P8-BE-NEXT:    blr3909entry:3910  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000013911  %0 = load i32, ptr %add.ptr, align 43912  %conv = trunc i32 %0 to i83913  ret i8 %conv3914}3915 3916; Function Attrs: norecurse nounwind readonly uwtable willreturn3917define dso_local zeroext i8 @ld_align64_uint8_t_uint32_t(ptr nocapture readonly %ptr) {3918; CHECK-P10-LE-LABEL: ld_align64_uint8_t_uint32_t:3919; CHECK-P10-LE:       # %bb.0: # %entry3920; CHECK-P10-LE-NEXT:    pli r4, 2441406253921; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 243922; CHECK-P10-LE-NEXT:    lbzx r3, r3, r43923; CHECK-P10-LE-NEXT:    blr3924;3925; CHECK-P10-BE-LABEL: ld_align64_uint8_t_uint32_t:3926; CHECK-P10-BE:       # %bb.0: # %entry3927; CHECK-P10-BE-NEXT:    pli r4, 2323928; CHECK-P10-BE-NEXT:    pli r5, 35675873313929; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 03930; CHECK-P10-BE-NEXT:    lbzx r3, r3, r53931; CHECK-P10-BE-NEXT:    blr3932;3933; CHECK-P9-LE-LABEL: ld_align64_uint8_t_uint32_t:3934; CHECK-P9-LE:       # %bb.0: # %entry3935; CHECK-P9-LE-NEXT:    lis r4, 37253936; CHECK-P9-LE-NEXT:    ori r4, r4, 190253937; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 243938; CHECK-P9-LE-NEXT:    lbzx r3, r3, r43939; CHECK-P9-LE-NEXT:    blr3940;3941; CHECK-P9-BE-LABEL: ld_align64_uint8_t_uint32_t:3942; CHECK-P9-BE:       # %bb.0: # %entry3943; CHECK-P9-BE-NEXT:    li r4, 293944; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 243945; CHECK-P9-BE-NEXT:    oris r4, r4, 544373946; CHECK-P9-BE-NEXT:    ori r4, r4, 40993947; CHECK-P9-BE-NEXT:    lbzx r3, r3, r43948; CHECK-P9-BE-NEXT:    blr3949;3950; CHECK-P8-LE-LABEL: ld_align64_uint8_t_uint32_t:3951; CHECK-P8-LE:       # %bb.0: # %entry3952; CHECK-P8-LE-NEXT:    lis r4, 37253953; CHECK-P8-LE-NEXT:    ori r4, r4, 190253954; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 243955; CHECK-P8-LE-NEXT:    lbzx r3, r3, r43956; CHECK-P8-LE-NEXT:    blr3957;3958; CHECK-P8-BE-LABEL: ld_align64_uint8_t_uint32_t:3959; CHECK-P8-BE:       # %bb.0: # %entry3960; CHECK-P8-BE-NEXT:    li r4, 293961; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 243962; CHECK-P8-BE-NEXT:    oris r4, r4, 544373963; CHECK-P8-BE-NEXT:    ori r4, r4, 40993964; CHECK-P8-BE-NEXT:    lbzx r3, r3, r43965; CHECK-P8-BE-NEXT:    blr3966entry:3967  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003968  %0 = load i32, ptr %add.ptr, align 43969  %conv = trunc i32 %0 to i83970  ret i8 %conv3971}3972 3973; Function Attrs: norecurse nounwind readonly uwtable willreturn3974define dso_local zeroext i8 @ld_reg_uint8_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {3975; CHECK-LE-LABEL: ld_reg_uint8_t_uint32_t:3976; CHECK-LE:       # %bb.0: # %entry3977; CHECK-LE-NEXT:    lbzx r3, r3, r43978; CHECK-LE-NEXT:    blr3979;3980; CHECK-BE-LABEL: ld_reg_uint8_t_uint32_t:3981; CHECK-BE:       # %bb.0: # %entry3982; CHECK-BE-NEXT:    add r3, r3, r43983; CHECK-BE-NEXT:    lbz r3, 3(r3)3984; CHECK-BE-NEXT:    blr3985entry:3986  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3987  %0 = load i32, ptr %add.ptr, align 43988  %conv = trunc i32 %0 to i83989  ret i8 %conv3990}3991 3992; Function Attrs: norecurse nounwind readonly uwtable willreturn3993define dso_local zeroext i8 @ld_or_uint8_t_uint32_t(i64 %ptr, i8 zeroext %off) {3994; CHECK-LE-LABEL: ld_or_uint8_t_uint32_t:3995; CHECK-LE:       # %bb.0: # %entry3996; CHECK-LE-NEXT:    or r3, r4, r33997; CHECK-LE-NEXT:    lbz r3, 0(r3)3998; CHECK-LE-NEXT:    blr3999;4000; CHECK-BE-LABEL: ld_or_uint8_t_uint32_t:4001; CHECK-BE:       # %bb.0: # %entry4002; CHECK-BE-NEXT:    or r3, r4, r34003; CHECK-BE-NEXT:    lbz r3, 3(r3)4004; CHECK-BE-NEXT:    blr4005entry:4006  %conv = zext i8 %off to i644007  %or = or i64 %conv, %ptr4008  %0 = inttoptr i64 %or to ptr4009  %1 = load i32, ptr %0, align 44010  %conv1 = trunc i32 %1 to i84011  ret i8 %conv14012}4013 4014; Function Attrs: norecurse nounwind readonly uwtable willreturn4015define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint32_t(i64 %ptr) {4016; CHECK-LE-LABEL: ld_not_disjoint16_uint8_t_uint32_t:4017; CHECK-LE:       # %bb.0: # %entry4018; CHECK-LE-NEXT:    ori r3, r3, 64019; CHECK-LE-NEXT:    lbz r3, 0(r3)4020; CHECK-LE-NEXT:    blr4021;4022; CHECK-BE-LABEL: ld_not_disjoint16_uint8_t_uint32_t:4023; CHECK-BE:       # %bb.0: # %entry4024; CHECK-BE-NEXT:    ori r3, r3, 64025; CHECK-BE-NEXT:    lbz r3, 3(r3)4026; CHECK-BE-NEXT:    blr4027entry:4028  %or = or i64 %ptr, 64029  %0 = inttoptr i64 %or to ptr4030  %1 = load i32, ptr %0, align 44031  %conv = trunc i32 %1 to i84032  ret i8 %conv4033}4034 4035; Function Attrs: norecurse nounwind readonly uwtable willreturn4036define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint32_t(i64 %ptr) {4037; CHECK-LE-LABEL: ld_disjoint_align16_uint8_t_uint32_t:4038; CHECK-LE:       # %bb.0: # %entry4039; CHECK-LE-NEXT:    rldicr r3, r3, 0, 514040; CHECK-LE-NEXT:    lbz r3, 24(r3)4041; CHECK-LE-NEXT:    blr4042;4043; CHECK-BE-LABEL: ld_disjoint_align16_uint8_t_uint32_t:4044; CHECK-BE:       # %bb.0: # %entry4045; CHECK-BE-NEXT:    rldicr r3, r3, 0, 514046; CHECK-BE-NEXT:    lbz r3, 27(r3)4047; CHECK-BE-NEXT:    blr4048entry:4049  %and = and i64 %ptr, -40964050  %or = or i64 %and, 244051  %0 = inttoptr i64 %or to ptr4052  %1 = load i32, ptr %0, align 84053  %conv = trunc i32 %1 to i84054  ret i8 %conv4055}4056 4057; Function Attrs: norecurse nounwind readonly uwtable willreturn4058define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint32_t(i64 %ptr) {4059; CHECK-LE-LABEL: ld_not_disjoint32_uint8_t_uint32_t:4060; CHECK-LE:       # %bb.0: # %entry4061; CHECK-LE-NEXT:    ori r3, r3, 344634062; CHECK-LE-NEXT:    oris r3, r3, 14063; CHECK-LE-NEXT:    lbz r3, 0(r3)4064; CHECK-LE-NEXT:    blr4065;4066; CHECK-BE-LABEL: ld_not_disjoint32_uint8_t_uint32_t:4067; CHECK-BE:       # %bb.0: # %entry4068; CHECK-BE-NEXT:    ori r3, r3, 344634069; CHECK-BE-NEXT:    oris r3, r3, 14070; CHECK-BE-NEXT:    lbz r3, 3(r3)4071; CHECK-BE-NEXT:    blr4072entry:4073  %or = or i64 %ptr, 999994074  %0 = inttoptr i64 %or to ptr4075  %1 = load i32, ptr %0, align 44076  %conv = trunc i32 %1 to i84077  ret i8 %conv4078}4079 4080; Function Attrs: norecurse nounwind readonly uwtable willreturn4081define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint32_t(i64 %ptr) {4082; CHECK-P10-LE-LABEL: ld_disjoint_align32_uint8_t_uint32_t:4083; CHECK-P10-LE:       # %bb.0: # %entry4084; CHECK-P10-LE-NEXT:    lis r4, -152644085; CHECK-P10-LE-NEXT:    and r3, r3, r44086; CHECK-P10-LE-NEXT:    plbz r3, 999990000(r3), 04087; CHECK-P10-LE-NEXT:    blr4088;4089; CHECK-P10-BE-LABEL: ld_disjoint_align32_uint8_t_uint32_t:4090; CHECK-P10-BE:       # %bb.0: # %entry4091; CHECK-P10-BE-NEXT:    lis r4, -152644092; CHECK-P10-BE-NEXT:    and r3, r3, r44093; CHECK-P10-BE-NEXT:    plbz r3, 999990003(r3), 04094; CHECK-P10-BE-NEXT:    blr4095;4096; CHECK-P9-LE-LABEL: ld_disjoint_align32_uint8_t_uint32_t:4097; CHECK-P9-LE:       # %bb.0: # %entry4098; CHECK-P9-LE-NEXT:    lis r4, -152644099; CHECK-P9-LE-NEXT:    and r3, r3, r44100; CHECK-P9-LE-NEXT:    lis r4, 152584101; CHECK-P9-LE-NEXT:    ori r4, r4, 417124102; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44103; CHECK-P9-LE-NEXT:    blr4104;4105; CHECK-P9-BE-LABEL: ld_disjoint_align32_uint8_t_uint32_t:4106; CHECK-P9-BE:       # %bb.0: # %entry4107; CHECK-P9-BE-NEXT:    lis r4, -152644108; CHECK-P9-BE-NEXT:    and r3, r3, r44109; CHECK-P9-BE-NEXT:    lis r4, 152584110; CHECK-P9-BE-NEXT:    ori r4, r4, 417154111; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44112; CHECK-P9-BE-NEXT:    blr4113;4114; CHECK-P8-LE-LABEL: ld_disjoint_align32_uint8_t_uint32_t:4115; CHECK-P8-LE:       # %bb.0: # %entry4116; CHECK-P8-LE-NEXT:    lis r4, -152644117; CHECK-P8-LE-NEXT:    and r3, r3, r44118; CHECK-P8-LE-NEXT:    lis r4, 152584119; CHECK-P8-LE-NEXT:    ori r4, r4, 417124120; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44121; CHECK-P8-LE-NEXT:    blr4122;4123; CHECK-P8-BE-LABEL: ld_disjoint_align32_uint8_t_uint32_t:4124; CHECK-P8-BE:       # %bb.0: # %entry4125; CHECK-P8-BE-NEXT:    lis r4, -152644126; CHECK-P8-BE-NEXT:    and r3, r3, r44127; CHECK-P8-BE-NEXT:    lis r4, 152584128; CHECK-P8-BE-NEXT:    ori r4, r4, 417154129; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44130; CHECK-P8-BE-NEXT:    blr4131entry:4132  %and = and i64 %ptr, -10003415044133  %or = or i64 %and, 9999900004134  %0 = inttoptr i64 %or to ptr4135  %1 = load i32, ptr %0, align 164136  %conv = trunc i32 %1 to i84137  ret i8 %conv4138}4139 4140; Function Attrs: norecurse nounwind readonly uwtable willreturn4141define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint32_t(i64 %ptr) {4142; CHECK-P10-LE-LABEL: ld_not_disjoint64_uint8_t_uint32_t:4143; CHECK-P10-LE:       # %bb.0: # %entry4144; CHECK-P10-LE-NEXT:    pli r4, 2324145; CHECK-P10-LE-NEXT:    pli r5, 35675873294146; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 04147; CHECK-P10-LE-NEXT:    or r3, r3, r54148; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)4149; CHECK-P10-LE-NEXT:    blr4150;4151; CHECK-P10-BE-LABEL: ld_not_disjoint64_uint8_t_uint32_t:4152; CHECK-P10-BE:       # %bb.0: # %entry4153; CHECK-P10-BE-NEXT:    pli r4, 2324154; CHECK-P10-BE-NEXT:    pli r5, 35675873294155; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04156; CHECK-P10-BE-NEXT:    or r3, r3, r54157; CHECK-P10-BE-NEXT:    lbz r3, 3(r3)4158; CHECK-P10-BE-NEXT:    blr4159;4160; CHECK-P9-LE-LABEL: ld_not_disjoint64_uint8_t_uint32_t:4161; CHECK-P9-LE:       # %bb.0: # %entry4162; CHECK-P9-LE-NEXT:    li r4, 294163; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 244164; CHECK-P9-LE-NEXT:    oris r4, r4, 544374165; CHECK-P9-LE-NEXT:    ori r4, r4, 40974166; CHECK-P9-LE-NEXT:    or r3, r3, r44167; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)4168; CHECK-P9-LE-NEXT:    blr4169;4170; CHECK-P9-BE-LABEL: ld_not_disjoint64_uint8_t_uint32_t:4171; CHECK-P9-BE:       # %bb.0: # %entry4172; CHECK-P9-BE-NEXT:    li r4, 294173; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244174; CHECK-P9-BE-NEXT:    oris r4, r4, 544374175; CHECK-P9-BE-NEXT:    ori r4, r4, 40974176; CHECK-P9-BE-NEXT:    or r3, r3, r44177; CHECK-P9-BE-NEXT:    lbz r3, 3(r3)4178; CHECK-P9-BE-NEXT:    blr4179;4180; CHECK-P8-LE-LABEL: ld_not_disjoint64_uint8_t_uint32_t:4181; CHECK-P8-LE:       # %bb.0: # %entry4182; CHECK-P8-LE-NEXT:    li r4, 294183; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 244184; CHECK-P8-LE-NEXT:    oris r4, r4, 544374185; CHECK-P8-LE-NEXT:    ori r4, r4, 40974186; CHECK-P8-LE-NEXT:    or r3, r3, r44187; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)4188; CHECK-P8-LE-NEXT:    blr4189;4190; CHECK-P8-BE-LABEL: ld_not_disjoint64_uint8_t_uint32_t:4191; CHECK-P8-BE:       # %bb.0: # %entry4192; CHECK-P8-BE-NEXT:    li r4, 294193; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244194; CHECK-P8-BE-NEXT:    oris r4, r4, 544374195; CHECK-P8-BE-NEXT:    ori r4, r4, 40974196; CHECK-P8-BE-NEXT:    or r3, r3, r44197; CHECK-P8-BE-NEXT:    lbz r3, 3(r3)4198; CHECK-P8-BE-NEXT:    blr4199entry:4200  %or = or i64 %ptr, 10000000000014201  %0 = inttoptr i64 %or to ptr4202  %1 = load i32, ptr %0, align 44203  %conv = trunc i32 %1 to i84204  ret i8 %conv4205}4206 4207; Function Attrs: norecurse nounwind readonly uwtable willreturn4208define dso_local zeroext i8 @ld_disjoint_unalign64_uint8_t_uint32_t(i64 %ptr) {4209; CHECK-P10-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint32_t:4210; CHECK-P10-LE:       # %bb.0: # %entry4211; CHECK-P10-LE-NEXT:    pli r4, 2324212; CHECK-P10-LE-NEXT:    pli r5, 35675873294213; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 234214; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 04215; CHECK-P10-LE-NEXT:    lbzx r3, r3, r54216; CHECK-P10-LE-NEXT:    blr4217;4218; CHECK-P10-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint32_t:4219; CHECK-P10-BE:       # %bb.0: # %entry4220; CHECK-P10-BE-NEXT:    pli r4, 2324221; CHECK-P10-BE-NEXT:    pli r5, 35675873324222; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 234223; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04224; CHECK-P10-BE-NEXT:    lbzx r3, r3, r54225; CHECK-P10-BE-NEXT:    blr4226;4227; CHECK-P9-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint32_t:4228; CHECK-P9-LE:       # %bb.0: # %entry4229; CHECK-P9-LE-NEXT:    li r4, 294230; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 234231; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 244232; CHECK-P9-LE-NEXT:    oris r4, r4, 544374233; CHECK-P9-LE-NEXT:    ori r4, r4, 40974234; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44235; CHECK-P9-LE-NEXT:    blr4236;4237; CHECK-P9-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint32_t:4238; CHECK-P9-BE:       # %bb.0: # %entry4239; CHECK-P9-BE-NEXT:    li r4, 294240; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 234241; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244242; CHECK-P9-BE-NEXT:    oris r4, r4, 544374243; CHECK-P9-BE-NEXT:    ori r4, r4, 41004244; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44245; CHECK-P9-BE-NEXT:    blr4246;4247; CHECK-P8-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint32_t:4248; CHECK-P8-LE:       # %bb.0: # %entry4249; CHECK-P8-LE-NEXT:    li r4, 294250; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 234251; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 244252; CHECK-P8-LE-NEXT:    oris r4, r4, 544374253; CHECK-P8-LE-NEXT:    ori r4, r4, 40974254; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44255; CHECK-P8-LE-NEXT:    blr4256;4257; CHECK-P8-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint32_t:4258; CHECK-P8-BE:       # %bb.0: # %entry4259; CHECK-P8-BE-NEXT:    li r4, 294260; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 234261; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244262; CHECK-P8-BE-NEXT:    oris r4, r4, 544374263; CHECK-P8-BE-NEXT:    ori r4, r4, 41004264; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44265; CHECK-P8-BE-NEXT:    blr4266entry:4267  %and = and i64 %ptr, -10995116277764268  %or = or i64 %and, 10000000000014269  %0 = inttoptr i64 %or to ptr4270  %1 = load i32, ptr %0, align 44271  %conv = trunc i32 %1 to i84272  ret i8 %conv4273}4274 4275; Function Attrs: norecurse nounwind readonly uwtable willreturn4276define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint32_t(i64 %ptr) {4277; CHECK-P10-LE-LABEL: ld_disjoint_align64_uint8_t_uint32_t:4278; CHECK-P10-LE:       # %bb.0: # %entry4279; CHECK-P10-LE-NEXT:    pli r4, 2441406254280; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 234281; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 244282; CHECK-P10-LE-NEXT:    lbzx r3, r3, r44283; CHECK-P10-LE-NEXT:    blr4284;4285; CHECK-P10-BE-LABEL: ld_disjoint_align64_uint8_t_uint32_t:4286; CHECK-P10-BE:       # %bb.0: # %entry4287; CHECK-P10-BE-NEXT:    pli r4, 2324288; CHECK-P10-BE-NEXT:    pli r5, 35675873314289; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 234290; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04291; CHECK-P10-BE-NEXT:    lbzx r3, r3, r54292; CHECK-P10-BE-NEXT:    blr4293;4294; CHECK-P9-LE-LABEL: ld_disjoint_align64_uint8_t_uint32_t:4295; CHECK-P9-LE:       # %bb.0: # %entry4296; CHECK-P9-LE-NEXT:    lis r4, 37254297; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 234298; CHECK-P9-LE-NEXT:    ori r4, r4, 190254299; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 244300; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44301; CHECK-P9-LE-NEXT:    blr4302;4303; CHECK-P9-BE-LABEL: ld_disjoint_align64_uint8_t_uint32_t:4304; CHECK-P9-BE:       # %bb.0: # %entry4305; CHECK-P9-BE-NEXT:    li r4, 294306; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 234307; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244308; CHECK-P9-BE-NEXT:    oris r4, r4, 544374309; CHECK-P9-BE-NEXT:    ori r4, r4, 40994310; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44311; CHECK-P9-BE-NEXT:    blr4312;4313; CHECK-P8-LE-LABEL: ld_disjoint_align64_uint8_t_uint32_t:4314; CHECK-P8-LE:       # %bb.0: # %entry4315; CHECK-P8-LE-NEXT:    lis r4, 37254316; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 234317; CHECK-P8-LE-NEXT:    ori r4, r4, 190254318; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 244319; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44320; CHECK-P8-LE-NEXT:    blr4321;4322; CHECK-P8-BE-LABEL: ld_disjoint_align64_uint8_t_uint32_t:4323; CHECK-P8-BE:       # %bb.0: # %entry4324; CHECK-P8-BE-NEXT:    li r4, 294325; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 234326; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244327; CHECK-P8-BE-NEXT:    oris r4, r4, 544374328; CHECK-P8-BE-NEXT:    ori r4, r4, 40994329; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44330; CHECK-P8-BE-NEXT:    blr4331entry:4332  %and = and i64 %ptr, -10995116277764333  %or = or i64 %and, 10000000000004334  %0 = inttoptr i64 %or to ptr4335  %1 = load i32, ptr %0, align 40964336  %conv = trunc i32 %1 to i84337  ret i8 %conv4338}4339 4340; Function Attrs: norecurse nounwind readonly uwtable willreturn4341define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint32_t() {4342; CHECK-LE-LABEL: ld_cst_align16_uint8_t_uint32_t:4343; CHECK-LE:       # %bb.0: # %entry4344; CHECK-LE-NEXT:    lbz r3, 4080(0)4345; CHECK-LE-NEXT:    blr4346;4347; CHECK-BE-LABEL: ld_cst_align16_uint8_t_uint32_t:4348; CHECK-BE:       # %bb.0: # %entry4349; CHECK-BE-NEXT:    lbz r3, 4083(0)4350; CHECK-BE-NEXT:    blr4351entry:4352  %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 164353  %conv = trunc i32 %0 to i84354  ret i8 %conv4355}4356 4357; Function Attrs: norecurse nounwind readonly uwtable willreturn4358define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint32_t() {4359; CHECK-LE-LABEL: ld_cst_align32_uint8_t_uint32_t:4360; CHECK-LE:       # %bb.0: # %entry4361; CHECK-LE-NEXT:    lis r3, 1534362; CHECK-LE-NEXT:    lbz r3, -27108(r3)4363; CHECK-LE-NEXT:    blr4364;4365; CHECK-BE-LABEL: ld_cst_align32_uint8_t_uint32_t:4366; CHECK-BE:       # %bb.0: # %entry4367; CHECK-BE-NEXT:    lis r3, 1534368; CHECK-BE-NEXT:    lbz r3, -27105(r3)4369; CHECK-BE-NEXT:    blr4370entry:4371  %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 44372  %conv = trunc i32 %0 to i84373  ret i8 %conv4374}4375 4376; Function Attrs: norecurse nounwind readonly uwtable willreturn4377define dso_local zeroext i8 @ld_cst_unalign64_uint8_t_uint32_t() {4378; CHECK-P10-LE-LABEL: ld_cst_unalign64_uint8_t_uint32_t:4379; CHECK-P10-LE:       # %bb.0: # %entry4380; CHECK-P10-LE-NEXT:    pli r3, 2324381; CHECK-P10-LE-NEXT:    pli r4, 35675873294382; CHECK-P10-LE-NEXT:    rldimi r4, r3, 32, 04383; CHECK-P10-LE-NEXT:    lbz r3, 0(r4)4384; CHECK-P10-LE-NEXT:    blr4385;4386; CHECK-P10-BE-LABEL: ld_cst_unalign64_uint8_t_uint32_t:4387; CHECK-P10-BE:       # %bb.0: # %entry4388; CHECK-P10-BE-NEXT:    pli r3, 2324389; CHECK-P10-BE-NEXT:    pli r4, 35675873324390; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 04391; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)4392; CHECK-P10-BE-NEXT:    blr4393;4394; CHECK-P9-LE-LABEL: ld_cst_unalign64_uint8_t_uint32_t:4395; CHECK-P9-LE:       # %bb.0: # %entry4396; CHECK-P9-LE-NEXT:    li r3, 294397; CHECK-P9-LE-NEXT:    rldic r3, r3, 35, 244398; CHECK-P9-LE-NEXT:    oris r3, r3, 544374399; CHECK-P9-LE-NEXT:    ori r3, r3, 40974400; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)4401; CHECK-P9-LE-NEXT:    blr4402;4403; CHECK-P9-BE-LABEL: ld_cst_unalign64_uint8_t_uint32_t:4404; CHECK-P9-BE:       # %bb.0: # %entry4405; CHECK-P9-BE-NEXT:    li r3, 294406; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 244407; CHECK-P9-BE-NEXT:    oris r3, r3, 544374408; CHECK-P9-BE-NEXT:    ori r3, r3, 41004409; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)4410; CHECK-P9-BE-NEXT:    blr4411;4412; CHECK-P8-LE-LABEL: ld_cst_unalign64_uint8_t_uint32_t:4413; CHECK-P8-LE:       # %bb.0: # %entry4414; CHECK-P8-LE-NEXT:    li r3, 294415; CHECK-P8-LE-NEXT:    rldic r3, r3, 35, 244416; CHECK-P8-LE-NEXT:    oris r3, r3, 544374417; CHECK-P8-LE-NEXT:    ori r3, r3, 40974418; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)4419; CHECK-P8-LE-NEXT:    blr4420;4421; CHECK-P8-BE-LABEL: ld_cst_unalign64_uint8_t_uint32_t:4422; CHECK-P8-BE:       # %bb.0: # %entry4423; CHECK-P8-BE-NEXT:    li r3, 294424; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 244425; CHECK-P8-BE-NEXT:    oris r3, r3, 544374426; CHECK-P8-BE-NEXT:    ori r3, r3, 41004427; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)4428; CHECK-P8-BE-NEXT:    blr4429entry:4430  %0 = load i32, ptr inttoptr (i64 1000000000001 to ptr), align 44431  %conv = trunc i32 %0 to i84432  ret i8 %conv4433}4434 4435; Function Attrs: norecurse nounwind readonly uwtable willreturn4436define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint32_t() {4437; CHECK-P10-LE-LABEL: ld_cst_align64_uint8_t_uint32_t:4438; CHECK-P10-LE:       # %bb.0: # %entry4439; CHECK-P10-LE-NEXT:    pli r3, 2441406254440; CHECK-P10-LE-NEXT:    rldic r3, r3, 12, 244441; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)4442; CHECK-P10-LE-NEXT:    blr4443;4444; CHECK-P10-BE-LABEL: ld_cst_align64_uint8_t_uint32_t:4445; CHECK-P10-BE:       # %bb.0: # %entry4446; CHECK-P10-BE-NEXT:    pli r3, 2324447; CHECK-P10-BE-NEXT:    pli r4, 35675873314448; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 04449; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)4450; CHECK-P10-BE-NEXT:    blr4451;4452; CHECK-P9-LE-LABEL: ld_cst_align64_uint8_t_uint32_t:4453; CHECK-P9-LE:       # %bb.0: # %entry4454; CHECK-P9-LE-NEXT:    lis r3, 37254455; CHECK-P9-LE-NEXT:    ori r3, r3, 190254456; CHECK-P9-LE-NEXT:    rldic r3, r3, 12, 244457; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)4458; CHECK-P9-LE-NEXT:    blr4459;4460; CHECK-P9-BE-LABEL: ld_cst_align64_uint8_t_uint32_t:4461; CHECK-P9-BE:       # %bb.0: # %entry4462; CHECK-P9-BE-NEXT:    li r3, 294463; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 244464; CHECK-P9-BE-NEXT:    oris r3, r3, 544374465; CHECK-P9-BE-NEXT:    ori r3, r3, 40994466; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)4467; CHECK-P9-BE-NEXT:    blr4468;4469; CHECK-P8-LE-LABEL: ld_cst_align64_uint8_t_uint32_t:4470; CHECK-P8-LE:       # %bb.0: # %entry4471; CHECK-P8-LE-NEXT:    lis r3, 37254472; CHECK-P8-LE-NEXT:    ori r3, r3, 190254473; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 244474; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)4475; CHECK-P8-LE-NEXT:    blr4476;4477; CHECK-P8-BE-LABEL: ld_cst_align64_uint8_t_uint32_t:4478; CHECK-P8-BE:       # %bb.0: # %entry4479; CHECK-P8-BE-NEXT:    li r3, 294480; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 244481; CHECK-P8-BE-NEXT:    oris r3, r3, 544374482; CHECK-P8-BE-NEXT:    ori r3, r3, 40994483; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)4484; CHECK-P8-BE-NEXT:    blr4485entry:4486  %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40964487  %conv = trunc i32 %0 to i84488  ret i8 %conv4489}4490 4491; Function Attrs: norecurse nounwind readonly uwtable willreturn4492define dso_local zeroext i8 @ld_0_uint8_t_uint64_t(i64 %ptr) {4493; CHECK-LE-LABEL: ld_0_uint8_t_uint64_t:4494; CHECK-LE:       # %bb.0: # %entry4495; CHECK-LE-NEXT:    lbz r3, 0(r3)4496; CHECK-LE-NEXT:    blr4497;4498; CHECK-BE-LABEL: ld_0_uint8_t_uint64_t:4499; CHECK-BE:       # %bb.0: # %entry4500; CHECK-BE-NEXT:    lbz r3, 7(r3)4501; CHECK-BE-NEXT:    blr4502entry:4503  %0 = inttoptr i64 %ptr to ptr4504  %1 = load i64, ptr %0, align 84505  %conv = trunc i64 %1 to i84506  ret i8 %conv4507}4508 4509; Function Attrs: norecurse nounwind readonly uwtable willreturn4510define dso_local zeroext i8 @ld_align16_uint8_t_uint64_t(ptr nocapture readonly %ptr) {4511; CHECK-LE-LABEL: ld_align16_uint8_t_uint64_t:4512; CHECK-LE:       # %bb.0: # %entry4513; CHECK-LE-NEXT:    lbz r3, 8(r3)4514; CHECK-LE-NEXT:    blr4515;4516; CHECK-BE-LABEL: ld_align16_uint8_t_uint64_t:4517; CHECK-BE:       # %bb.0: # %entry4518; CHECK-BE-NEXT:    lbz r3, 15(r3)4519; CHECK-BE-NEXT:    blr4520entry:4521  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84522  %0 = load i64, ptr %add.ptr, align 84523  %conv = trunc i64 %0 to i84524  ret i8 %conv4525}4526 4527; Function Attrs: norecurse nounwind readonly uwtable willreturn4528define dso_local zeroext i8 @ld_align32_uint8_t_uint64_t(ptr nocapture readonly %ptr) {4529; CHECK-P10-LE-LABEL: ld_align32_uint8_t_uint64_t:4530; CHECK-P10-LE:       # %bb.0: # %entry4531; CHECK-P10-LE-NEXT:    plbz r3, 99999000(r3), 04532; CHECK-P10-LE-NEXT:    blr4533;4534; CHECK-P10-BE-LABEL: ld_align32_uint8_t_uint64_t:4535; CHECK-P10-BE:       # %bb.0: # %entry4536; CHECK-P10-BE-NEXT:    plbz r3, 99999007(r3), 04537; CHECK-P10-BE-NEXT:    blr4538;4539; CHECK-P9-LE-LABEL: ld_align32_uint8_t_uint64_t:4540; CHECK-P9-LE:       # %bb.0: # %entry4541; CHECK-P9-LE-NEXT:    lis r4, 15254542; CHECK-P9-LE-NEXT:    ori r4, r4, 566004543; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44544; CHECK-P9-LE-NEXT:    blr4545;4546; CHECK-P9-BE-LABEL: ld_align32_uint8_t_uint64_t:4547; CHECK-P9-BE:       # %bb.0: # %entry4548; CHECK-P9-BE-NEXT:    lis r4, 15254549; CHECK-P9-BE-NEXT:    ori r4, r4, 566074550; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44551; CHECK-P9-BE-NEXT:    blr4552;4553; CHECK-P8-LE-LABEL: ld_align32_uint8_t_uint64_t:4554; CHECK-P8-LE:       # %bb.0: # %entry4555; CHECK-P8-LE-NEXT:    lis r4, 15254556; CHECK-P8-LE-NEXT:    ori r4, r4, 566004557; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44558; CHECK-P8-LE-NEXT:    blr4559;4560; CHECK-P8-BE-LABEL: ld_align32_uint8_t_uint64_t:4561; CHECK-P8-BE:       # %bb.0: # %entry4562; CHECK-P8-BE-NEXT:    lis r4, 15254563; CHECK-P8-BE-NEXT:    ori r4, r4, 566074564; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44565; CHECK-P8-BE-NEXT:    blr4566entry:4567  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004568  %0 = load i64, ptr %add.ptr, align 84569  %conv = trunc i64 %0 to i84570  ret i8 %conv4571}4572 4573; Function Attrs: norecurse nounwind readonly uwtable willreturn4574define dso_local zeroext i8 @ld_unalign64_uint8_t_uint64_t(ptr nocapture readonly %ptr) {4575; CHECK-P10-LE-LABEL: ld_unalign64_uint8_t_uint64_t:4576; CHECK-P10-LE:       # %bb.0: # %entry4577; CHECK-P10-LE-NEXT:    pli r4, 2324578; CHECK-P10-LE-NEXT:    pli r5, 35675873294579; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 04580; CHECK-P10-LE-NEXT:    lbzx r3, r3, r54581; CHECK-P10-LE-NEXT:    blr4582;4583; CHECK-P10-BE-LABEL: ld_unalign64_uint8_t_uint64_t:4584; CHECK-P10-BE:       # %bb.0: # %entry4585; CHECK-P10-BE-NEXT:    pli r4, 2324586; CHECK-P10-BE-NEXT:    pli r5, 35675873364587; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04588; CHECK-P10-BE-NEXT:    lbzx r3, r3, r54589; CHECK-P10-BE-NEXT:    blr4590;4591; CHECK-P9-LE-LABEL: ld_unalign64_uint8_t_uint64_t:4592; CHECK-P9-LE:       # %bb.0: # %entry4593; CHECK-P9-LE-NEXT:    li r4, 294594; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 244595; CHECK-P9-LE-NEXT:    oris r4, r4, 544374596; CHECK-P9-LE-NEXT:    ori r4, r4, 40974597; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44598; CHECK-P9-LE-NEXT:    blr4599;4600; CHECK-P9-BE-LABEL: ld_unalign64_uint8_t_uint64_t:4601; CHECK-P9-BE:       # %bb.0: # %entry4602; CHECK-P9-BE-NEXT:    li r4, 294603; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244604; CHECK-P9-BE-NEXT:    oris r4, r4, 544374605; CHECK-P9-BE-NEXT:    ori r4, r4, 41044606; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44607; CHECK-P9-BE-NEXT:    blr4608;4609; CHECK-P8-LE-LABEL: ld_unalign64_uint8_t_uint64_t:4610; CHECK-P8-LE:       # %bb.0: # %entry4611; CHECK-P8-LE-NEXT:    li r4, 294612; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 244613; CHECK-P8-LE-NEXT:    oris r4, r4, 544374614; CHECK-P8-LE-NEXT:    ori r4, r4, 40974615; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44616; CHECK-P8-LE-NEXT:    blr4617;4618; CHECK-P8-BE-LABEL: ld_unalign64_uint8_t_uint64_t:4619; CHECK-P8-BE:       # %bb.0: # %entry4620; CHECK-P8-BE-NEXT:    li r4, 294621; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244622; CHECK-P8-BE-NEXT:    oris r4, r4, 544374623; CHECK-P8-BE-NEXT:    ori r4, r4, 41044624; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44625; CHECK-P8-BE-NEXT:    blr4626entry:4627  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000014628  %0 = load i64, ptr %add.ptr, align 84629  %conv = trunc i64 %0 to i84630  ret i8 %conv4631}4632 4633; Function Attrs: norecurse nounwind readonly uwtable willreturn4634define dso_local zeroext i8 @ld_align64_uint8_t_uint64_t(ptr nocapture readonly %ptr) {4635; CHECK-P10-LE-LABEL: ld_align64_uint8_t_uint64_t:4636; CHECK-P10-LE:       # %bb.0: # %entry4637; CHECK-P10-LE-NEXT:    pli r4, 2441406254638; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 244639; CHECK-P10-LE-NEXT:    lbzx r3, r3, r44640; CHECK-P10-LE-NEXT:    blr4641;4642; CHECK-P10-BE-LABEL: ld_align64_uint8_t_uint64_t:4643; CHECK-P10-BE:       # %bb.0: # %entry4644; CHECK-P10-BE-NEXT:    pli r4, 2324645; CHECK-P10-BE-NEXT:    pli r5, 35675873354646; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04647; CHECK-P10-BE-NEXT:    lbzx r3, r3, r54648; CHECK-P10-BE-NEXT:    blr4649;4650; CHECK-P9-LE-LABEL: ld_align64_uint8_t_uint64_t:4651; CHECK-P9-LE:       # %bb.0: # %entry4652; CHECK-P9-LE-NEXT:    lis r4, 37254653; CHECK-P9-LE-NEXT:    ori r4, r4, 190254654; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 244655; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44656; CHECK-P9-LE-NEXT:    blr4657;4658; CHECK-P9-BE-LABEL: ld_align64_uint8_t_uint64_t:4659; CHECK-P9-BE:       # %bb.0: # %entry4660; CHECK-P9-BE-NEXT:    li r4, 294661; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244662; CHECK-P9-BE-NEXT:    oris r4, r4, 544374663; CHECK-P9-BE-NEXT:    ori r4, r4, 41034664; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44665; CHECK-P9-BE-NEXT:    blr4666;4667; CHECK-P8-LE-LABEL: ld_align64_uint8_t_uint64_t:4668; CHECK-P8-LE:       # %bb.0: # %entry4669; CHECK-P8-LE-NEXT:    lis r4, 37254670; CHECK-P8-LE-NEXT:    ori r4, r4, 190254671; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 244672; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44673; CHECK-P8-LE-NEXT:    blr4674;4675; CHECK-P8-BE-LABEL: ld_align64_uint8_t_uint64_t:4676; CHECK-P8-BE:       # %bb.0: # %entry4677; CHECK-P8-BE-NEXT:    li r4, 294678; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244679; CHECK-P8-BE-NEXT:    oris r4, r4, 544374680; CHECK-P8-BE-NEXT:    ori r4, r4, 41034681; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44682; CHECK-P8-BE-NEXT:    blr4683entry:4684  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004685  %0 = load i64, ptr %add.ptr, align 84686  %conv = trunc i64 %0 to i84687  ret i8 %conv4688}4689 4690; Function Attrs: norecurse nounwind readonly uwtable willreturn4691define dso_local zeroext i8 @ld_reg_uint8_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {4692; CHECK-LE-LABEL: ld_reg_uint8_t_uint64_t:4693; CHECK-LE:       # %bb.0: # %entry4694; CHECK-LE-NEXT:    lbzx r3, r3, r44695; CHECK-LE-NEXT:    blr4696;4697; CHECK-BE-LABEL: ld_reg_uint8_t_uint64_t:4698; CHECK-BE:       # %bb.0: # %entry4699; CHECK-BE-NEXT:    add r3, r3, r44700; CHECK-BE-NEXT:    lbz r3, 7(r3)4701; CHECK-BE-NEXT:    blr4702entry:4703  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4704  %0 = load i64, ptr %add.ptr, align 84705  %conv = trunc i64 %0 to i84706  ret i8 %conv4707}4708 4709; Function Attrs: norecurse nounwind readonly uwtable willreturn4710define dso_local zeroext i8 @ld_or_uint8_t_uint64_t(i64 %ptr, i8 zeroext %off) {4711; CHECK-LE-LABEL: ld_or_uint8_t_uint64_t:4712; CHECK-LE:       # %bb.0: # %entry4713; CHECK-LE-NEXT:    or r3, r4, r34714; CHECK-LE-NEXT:    lbz r3, 0(r3)4715; CHECK-LE-NEXT:    blr4716;4717; CHECK-BE-LABEL: ld_or_uint8_t_uint64_t:4718; CHECK-BE:       # %bb.0: # %entry4719; CHECK-BE-NEXT:    or r3, r4, r34720; CHECK-BE-NEXT:    lbz r3, 7(r3)4721; CHECK-BE-NEXT:    blr4722entry:4723  %conv = zext i8 %off to i644724  %or = or i64 %conv, %ptr4725  %0 = inttoptr i64 %or to ptr4726  %1 = load i64, ptr %0, align 84727  %conv1 = trunc i64 %1 to i84728  ret i8 %conv14729}4730 4731; Function Attrs: norecurse nounwind readonly uwtable willreturn4732define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_uint64_t(i64 %ptr) {4733; CHECK-LE-LABEL: ld_not_disjoint16_uint8_t_uint64_t:4734; CHECK-LE:       # %bb.0: # %entry4735; CHECK-LE-NEXT:    ori r3, r3, 64736; CHECK-LE-NEXT:    lbz r3, 0(r3)4737; CHECK-LE-NEXT:    blr4738;4739; CHECK-BE-LABEL: ld_not_disjoint16_uint8_t_uint64_t:4740; CHECK-BE:       # %bb.0: # %entry4741; CHECK-BE-NEXT:    ori r3, r3, 64742; CHECK-BE-NEXT:    lbz r3, 7(r3)4743; CHECK-BE-NEXT:    blr4744entry:4745  %or = or i64 %ptr, 64746  %0 = inttoptr i64 %or to ptr4747  %1 = load i64, ptr %0, align 84748  %conv = trunc i64 %1 to i84749  ret i8 %conv4750}4751 4752; Function Attrs: norecurse nounwind readonly uwtable willreturn4753define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_uint64_t(i64 %ptr) {4754; CHECK-LE-LABEL: ld_disjoint_align16_uint8_t_uint64_t:4755; CHECK-LE:       # %bb.0: # %entry4756; CHECK-LE-NEXT:    rldicr r3, r3, 0, 514757; CHECK-LE-NEXT:    lbz r3, 24(r3)4758; CHECK-LE-NEXT:    blr4759;4760; CHECK-BE-LABEL: ld_disjoint_align16_uint8_t_uint64_t:4761; CHECK-BE:       # %bb.0: # %entry4762; CHECK-BE-NEXT:    rldicr r3, r3, 0, 514763; CHECK-BE-NEXT:    lbz r3, 31(r3)4764; CHECK-BE-NEXT:    blr4765entry:4766  %and = and i64 %ptr, -40964767  %or = or i64 %and, 244768  %0 = inttoptr i64 %or to ptr4769  %1 = load i64, ptr %0, align 84770  %conv = trunc i64 %1 to i84771  ret i8 %conv4772}4773 4774; Function Attrs: norecurse nounwind readonly uwtable willreturn4775define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_uint64_t(i64 %ptr) {4776; CHECK-LE-LABEL: ld_not_disjoint32_uint8_t_uint64_t:4777; CHECK-LE:       # %bb.0: # %entry4778; CHECK-LE-NEXT:    ori r3, r3, 344634779; CHECK-LE-NEXT:    oris r3, r3, 14780; CHECK-LE-NEXT:    lbz r3, 0(r3)4781; CHECK-LE-NEXT:    blr4782;4783; CHECK-BE-LABEL: ld_not_disjoint32_uint8_t_uint64_t:4784; CHECK-BE:       # %bb.0: # %entry4785; CHECK-BE-NEXT:    ori r3, r3, 344634786; CHECK-BE-NEXT:    oris r3, r3, 14787; CHECK-BE-NEXT:    lbz r3, 7(r3)4788; CHECK-BE-NEXT:    blr4789entry:4790  %or = or i64 %ptr, 999994791  %0 = inttoptr i64 %or to ptr4792  %1 = load i64, ptr %0, align 84793  %conv = trunc i64 %1 to i84794  ret i8 %conv4795}4796 4797; Function Attrs: norecurse nounwind readonly uwtable willreturn4798define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_uint64_t(i64 %ptr) {4799; CHECK-P10-LE-LABEL: ld_disjoint_align32_uint8_t_uint64_t:4800; CHECK-P10-LE:       # %bb.0: # %entry4801; CHECK-P10-LE-NEXT:    lis r4, -152644802; CHECK-P10-LE-NEXT:    and r3, r3, r44803; CHECK-P10-LE-NEXT:    plbz r3, 999990000(r3), 04804; CHECK-P10-LE-NEXT:    blr4805;4806; CHECK-P10-BE-LABEL: ld_disjoint_align32_uint8_t_uint64_t:4807; CHECK-P10-BE:       # %bb.0: # %entry4808; CHECK-P10-BE-NEXT:    lis r4, -152644809; CHECK-P10-BE-NEXT:    and r3, r3, r44810; CHECK-P10-BE-NEXT:    plbz r3, 999990007(r3), 04811; CHECK-P10-BE-NEXT:    blr4812;4813; CHECK-P9-LE-LABEL: ld_disjoint_align32_uint8_t_uint64_t:4814; CHECK-P9-LE:       # %bb.0: # %entry4815; CHECK-P9-LE-NEXT:    lis r4, -152644816; CHECK-P9-LE-NEXT:    and r3, r3, r44817; CHECK-P9-LE-NEXT:    lis r4, 152584818; CHECK-P9-LE-NEXT:    ori r4, r4, 417124819; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44820; CHECK-P9-LE-NEXT:    blr4821;4822; CHECK-P9-BE-LABEL: ld_disjoint_align32_uint8_t_uint64_t:4823; CHECK-P9-BE:       # %bb.0: # %entry4824; CHECK-P9-BE-NEXT:    lis r4, -152644825; CHECK-P9-BE-NEXT:    and r3, r3, r44826; CHECK-P9-BE-NEXT:    lis r4, 152584827; CHECK-P9-BE-NEXT:    ori r4, r4, 417194828; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44829; CHECK-P9-BE-NEXT:    blr4830;4831; CHECK-P8-LE-LABEL: ld_disjoint_align32_uint8_t_uint64_t:4832; CHECK-P8-LE:       # %bb.0: # %entry4833; CHECK-P8-LE-NEXT:    lis r4, -152644834; CHECK-P8-LE-NEXT:    and r3, r3, r44835; CHECK-P8-LE-NEXT:    lis r4, 152584836; CHECK-P8-LE-NEXT:    ori r4, r4, 417124837; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44838; CHECK-P8-LE-NEXT:    blr4839;4840; CHECK-P8-BE-LABEL: ld_disjoint_align32_uint8_t_uint64_t:4841; CHECK-P8-BE:       # %bb.0: # %entry4842; CHECK-P8-BE-NEXT:    lis r4, -152644843; CHECK-P8-BE-NEXT:    and r3, r3, r44844; CHECK-P8-BE-NEXT:    lis r4, 152584845; CHECK-P8-BE-NEXT:    ori r4, r4, 417194846; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44847; CHECK-P8-BE-NEXT:    blr4848entry:4849  %and = and i64 %ptr, -10003415044850  %or = or i64 %and, 9999900004851  %0 = inttoptr i64 %or to ptr4852  %1 = load i64, ptr %0, align 164853  %conv = trunc i64 %1 to i84854  ret i8 %conv4855}4856 4857; Function Attrs: norecurse nounwind readonly uwtable willreturn4858define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_uint64_t(i64 %ptr) {4859; CHECK-P10-LE-LABEL: ld_not_disjoint64_uint8_t_uint64_t:4860; CHECK-P10-LE:       # %bb.0: # %entry4861; CHECK-P10-LE-NEXT:    pli r4, 2324862; CHECK-P10-LE-NEXT:    pli r5, 35675873294863; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 04864; CHECK-P10-LE-NEXT:    or r3, r3, r54865; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)4866; CHECK-P10-LE-NEXT:    blr4867;4868; CHECK-P10-BE-LABEL: ld_not_disjoint64_uint8_t_uint64_t:4869; CHECK-P10-BE:       # %bb.0: # %entry4870; CHECK-P10-BE-NEXT:    pli r4, 2324871; CHECK-P10-BE-NEXT:    pli r5, 35675873294872; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04873; CHECK-P10-BE-NEXT:    or r3, r3, r54874; CHECK-P10-BE-NEXT:    lbz r3, 7(r3)4875; CHECK-P10-BE-NEXT:    blr4876;4877; CHECK-P9-LE-LABEL: ld_not_disjoint64_uint8_t_uint64_t:4878; CHECK-P9-LE:       # %bb.0: # %entry4879; CHECK-P9-LE-NEXT:    li r4, 294880; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 244881; CHECK-P9-LE-NEXT:    oris r4, r4, 544374882; CHECK-P9-LE-NEXT:    ori r4, r4, 40974883; CHECK-P9-LE-NEXT:    or r3, r3, r44884; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)4885; CHECK-P9-LE-NEXT:    blr4886;4887; CHECK-P9-BE-LABEL: ld_not_disjoint64_uint8_t_uint64_t:4888; CHECK-P9-BE:       # %bb.0: # %entry4889; CHECK-P9-BE-NEXT:    li r4, 294890; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244891; CHECK-P9-BE-NEXT:    oris r4, r4, 544374892; CHECK-P9-BE-NEXT:    ori r4, r4, 40974893; CHECK-P9-BE-NEXT:    or r3, r3, r44894; CHECK-P9-BE-NEXT:    lbz r3, 7(r3)4895; CHECK-P9-BE-NEXT:    blr4896;4897; CHECK-P8-LE-LABEL: ld_not_disjoint64_uint8_t_uint64_t:4898; CHECK-P8-LE:       # %bb.0: # %entry4899; CHECK-P8-LE-NEXT:    li r4, 294900; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 244901; CHECK-P8-LE-NEXT:    oris r4, r4, 544374902; CHECK-P8-LE-NEXT:    ori r4, r4, 40974903; CHECK-P8-LE-NEXT:    or r3, r3, r44904; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)4905; CHECK-P8-LE-NEXT:    blr4906;4907; CHECK-P8-BE-LABEL: ld_not_disjoint64_uint8_t_uint64_t:4908; CHECK-P8-BE:       # %bb.0: # %entry4909; CHECK-P8-BE-NEXT:    li r4, 294910; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244911; CHECK-P8-BE-NEXT:    oris r4, r4, 544374912; CHECK-P8-BE-NEXT:    ori r4, r4, 40974913; CHECK-P8-BE-NEXT:    or r3, r3, r44914; CHECK-P8-BE-NEXT:    lbz r3, 7(r3)4915; CHECK-P8-BE-NEXT:    blr4916entry:4917  %or = or i64 %ptr, 10000000000014918  %0 = inttoptr i64 %or to ptr4919  %1 = load i64, ptr %0, align 84920  %conv = trunc i64 %1 to i84921  ret i8 %conv4922}4923 4924; Function Attrs: norecurse nounwind readonly uwtable willreturn4925define dso_local zeroext i8 @ld_disjoint_unalign64_uint8_t_uint64_t(i64 %ptr) {4926; CHECK-P10-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint64_t:4927; CHECK-P10-LE:       # %bb.0: # %entry4928; CHECK-P10-LE-NEXT:    pli r4, 2324929; CHECK-P10-LE-NEXT:    pli r5, 35675873294930; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 234931; CHECK-P10-LE-NEXT:    rldimi r5, r4, 32, 04932; CHECK-P10-LE-NEXT:    lbzx r3, r3, r54933; CHECK-P10-LE-NEXT:    blr4934;4935; CHECK-P10-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint64_t:4936; CHECK-P10-BE:       # %bb.0: # %entry4937; CHECK-P10-BE-NEXT:    pli r4, 2324938; CHECK-P10-BE-NEXT:    pli r5, 35675873364939; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 234940; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 04941; CHECK-P10-BE-NEXT:    lbzx r3, r3, r54942; CHECK-P10-BE-NEXT:    blr4943;4944; CHECK-P9-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint64_t:4945; CHECK-P9-LE:       # %bb.0: # %entry4946; CHECK-P9-LE-NEXT:    li r4, 294947; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 234948; CHECK-P9-LE-NEXT:    rldic r4, r4, 35, 244949; CHECK-P9-LE-NEXT:    oris r4, r4, 544374950; CHECK-P9-LE-NEXT:    ori r4, r4, 40974951; CHECK-P9-LE-NEXT:    lbzx r3, r3, r44952; CHECK-P9-LE-NEXT:    blr4953;4954; CHECK-P9-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint64_t:4955; CHECK-P9-BE:       # %bb.0: # %entry4956; CHECK-P9-BE-NEXT:    li r4, 294957; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 234958; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 244959; CHECK-P9-BE-NEXT:    oris r4, r4, 544374960; CHECK-P9-BE-NEXT:    ori r4, r4, 41044961; CHECK-P9-BE-NEXT:    lbzx r3, r3, r44962; CHECK-P9-BE-NEXT:    blr4963;4964; CHECK-P8-LE-LABEL: ld_disjoint_unalign64_uint8_t_uint64_t:4965; CHECK-P8-LE:       # %bb.0: # %entry4966; CHECK-P8-LE-NEXT:    li r4, 294967; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 234968; CHECK-P8-LE-NEXT:    rldic r4, r4, 35, 244969; CHECK-P8-LE-NEXT:    oris r4, r4, 544374970; CHECK-P8-LE-NEXT:    ori r4, r4, 40974971; CHECK-P8-LE-NEXT:    lbzx r3, r3, r44972; CHECK-P8-LE-NEXT:    blr4973;4974; CHECK-P8-BE-LABEL: ld_disjoint_unalign64_uint8_t_uint64_t:4975; CHECK-P8-BE:       # %bb.0: # %entry4976; CHECK-P8-BE-NEXT:    li r4, 294977; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 234978; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 244979; CHECK-P8-BE-NEXT:    oris r4, r4, 544374980; CHECK-P8-BE-NEXT:    ori r4, r4, 41044981; CHECK-P8-BE-NEXT:    lbzx r3, r3, r44982; CHECK-P8-BE-NEXT:    blr4983entry:4984  %and = and i64 %ptr, -10995116277764985  %or = or i64 %and, 10000000000014986  %0 = inttoptr i64 %or to ptr4987  %1 = load i64, ptr %0, align 84988  %conv = trunc i64 %1 to i84989  ret i8 %conv4990}4991 4992; Function Attrs: norecurse nounwind readonly uwtable willreturn4993define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_uint64_t(i64 %ptr) {4994; CHECK-P10-LE-LABEL: ld_disjoint_align64_uint8_t_uint64_t:4995; CHECK-P10-LE:       # %bb.0: # %entry4996; CHECK-P10-LE-NEXT:    pli r4, 2441406254997; CHECK-P10-LE-NEXT:    rldicr r3, r3, 0, 234998; CHECK-P10-LE-NEXT:    rldic r4, r4, 12, 244999; CHECK-P10-LE-NEXT:    lbzx r3, r3, r45000; CHECK-P10-LE-NEXT:    blr5001;5002; CHECK-P10-BE-LABEL: ld_disjoint_align64_uint8_t_uint64_t:5003; CHECK-P10-BE:       # %bb.0: # %entry5004; CHECK-P10-BE-NEXT:    pli r4, 2325005; CHECK-P10-BE-NEXT:    pli r5, 35675873355006; CHECK-P10-BE-NEXT:    rldicr r3, r3, 0, 235007; CHECK-P10-BE-NEXT:    rldimi r5, r4, 32, 05008; CHECK-P10-BE-NEXT:    lbzx r3, r3, r55009; CHECK-P10-BE-NEXT:    blr5010;5011; CHECK-P9-LE-LABEL: ld_disjoint_align64_uint8_t_uint64_t:5012; CHECK-P9-LE:       # %bb.0: # %entry5013; CHECK-P9-LE-NEXT:    lis r4, 37255014; CHECK-P9-LE-NEXT:    rldicr r3, r3, 0, 235015; CHECK-P9-LE-NEXT:    ori r4, r4, 190255016; CHECK-P9-LE-NEXT:    rldic r4, r4, 12, 245017; CHECK-P9-LE-NEXT:    lbzx r3, r3, r45018; CHECK-P9-LE-NEXT:    blr5019;5020; CHECK-P9-BE-LABEL: ld_disjoint_align64_uint8_t_uint64_t:5021; CHECK-P9-BE:       # %bb.0: # %entry5022; CHECK-P9-BE-NEXT:    li r4, 295023; CHECK-P9-BE-NEXT:    rldicr r3, r3, 0, 235024; CHECK-P9-BE-NEXT:    rldic r4, r4, 35, 245025; CHECK-P9-BE-NEXT:    oris r4, r4, 544375026; CHECK-P9-BE-NEXT:    ori r4, r4, 41035027; CHECK-P9-BE-NEXT:    lbzx r3, r3, r45028; CHECK-P9-BE-NEXT:    blr5029;5030; CHECK-P8-LE-LABEL: ld_disjoint_align64_uint8_t_uint64_t:5031; CHECK-P8-LE:       # %bb.0: # %entry5032; CHECK-P8-LE-NEXT:    lis r4, 37255033; CHECK-P8-LE-NEXT:    rldicr r3, r3, 0, 235034; CHECK-P8-LE-NEXT:    ori r4, r4, 190255035; CHECK-P8-LE-NEXT:    rldic r4, r4, 12, 245036; CHECK-P8-LE-NEXT:    lbzx r3, r3, r45037; CHECK-P8-LE-NEXT:    blr5038;5039; CHECK-P8-BE-LABEL: ld_disjoint_align64_uint8_t_uint64_t:5040; CHECK-P8-BE:       # %bb.0: # %entry5041; CHECK-P8-BE-NEXT:    li r4, 295042; CHECK-P8-BE-NEXT:    rldicr r3, r3, 0, 235043; CHECK-P8-BE-NEXT:    rldic r4, r4, 35, 245044; CHECK-P8-BE-NEXT:    oris r4, r4, 544375045; CHECK-P8-BE-NEXT:    ori r4, r4, 41035046; CHECK-P8-BE-NEXT:    lbzx r3, r3, r45047; CHECK-P8-BE-NEXT:    blr5048entry:5049  %and = and i64 %ptr, -10995116277765050  %or = or i64 %and, 10000000000005051  %0 = inttoptr i64 %or to ptr5052  %1 = load i64, ptr %0, align 40965053  %conv = trunc i64 %1 to i85054  ret i8 %conv5055}5056 5057; Function Attrs: norecurse nounwind readonly uwtable willreturn5058define dso_local zeroext i8 @ld_cst_align16_uint8_t_uint64_t() {5059; CHECK-LE-LABEL: ld_cst_align16_uint8_t_uint64_t:5060; CHECK-LE:       # %bb.0: # %entry5061; CHECK-LE-NEXT:    lbz r3, 4080(0)5062; CHECK-LE-NEXT:    blr5063;5064; CHECK-BE-LABEL: ld_cst_align16_uint8_t_uint64_t:5065; CHECK-BE:       # %bb.0: # %entry5066; CHECK-BE-NEXT:    lbz r3, 4087(0)5067; CHECK-BE-NEXT:    blr5068entry:5069  %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 165070  %conv = trunc i64 %0 to i85071  ret i8 %conv5072}5073 5074; Function Attrs: norecurse nounwind readonly uwtable willreturn5075define dso_local zeroext i8 @ld_cst_align32_uint8_t_uint64_t() {5076; CHECK-LE-LABEL: ld_cst_align32_uint8_t_uint64_t:5077; CHECK-LE:       # %bb.0: # %entry5078; CHECK-LE-NEXT:    lis r3, 1535079; CHECK-LE-NEXT:    lbz r3, -27108(r3)5080; CHECK-LE-NEXT:    blr5081;5082; CHECK-BE-LABEL: ld_cst_align32_uint8_t_uint64_t:5083; CHECK-BE:       # %bb.0: # %entry5084; CHECK-BE-NEXT:    lis r3, 1535085; CHECK-BE-NEXT:    lbz r3, -27101(r3)5086; CHECK-BE-NEXT:    blr5087entry:5088  %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 85089  %conv = trunc i64 %0 to i85090  ret i8 %conv5091}5092 5093; Function Attrs: norecurse nounwind readonly uwtable willreturn5094define dso_local zeroext i8 @ld_cst_unalign64_uint8_t_uint64_t() {5095; CHECK-P10-LE-LABEL: ld_cst_unalign64_uint8_t_uint64_t:5096; CHECK-P10-LE:       # %bb.0: # %entry5097; CHECK-P10-LE-NEXT:    pli r3, 2325098; CHECK-P10-LE-NEXT:    pli r4, 35675873295099; CHECK-P10-LE-NEXT:    rldimi r4, r3, 32, 05100; CHECK-P10-LE-NEXT:    lbz r3, 0(r4)5101; CHECK-P10-LE-NEXT:    blr5102;5103; CHECK-P10-BE-LABEL: ld_cst_unalign64_uint8_t_uint64_t:5104; CHECK-P10-BE:       # %bb.0: # %entry5105; CHECK-P10-BE-NEXT:    pli r3, 2325106; CHECK-P10-BE-NEXT:    pli r4, 35675873365107; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 05108; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)5109; CHECK-P10-BE-NEXT:    blr5110;5111; CHECK-P9-LE-LABEL: ld_cst_unalign64_uint8_t_uint64_t:5112; CHECK-P9-LE:       # %bb.0: # %entry5113; CHECK-P9-LE-NEXT:    li r3, 295114; CHECK-P9-LE-NEXT:    rldic r3, r3, 35, 245115; CHECK-P9-LE-NEXT:    oris r3, r3, 544375116; CHECK-P9-LE-NEXT:    ori r3, r3, 40975117; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)5118; CHECK-P9-LE-NEXT:    blr5119;5120; CHECK-P9-BE-LABEL: ld_cst_unalign64_uint8_t_uint64_t:5121; CHECK-P9-BE:       # %bb.0: # %entry5122; CHECK-P9-BE-NEXT:    li r3, 295123; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 245124; CHECK-P9-BE-NEXT:    oris r3, r3, 544375125; CHECK-P9-BE-NEXT:    ori r3, r3, 41045126; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)5127; CHECK-P9-BE-NEXT:    blr5128;5129; CHECK-P8-LE-LABEL: ld_cst_unalign64_uint8_t_uint64_t:5130; CHECK-P8-LE:       # %bb.0: # %entry5131; CHECK-P8-LE-NEXT:    li r3, 295132; CHECK-P8-LE-NEXT:    rldic r3, r3, 35, 245133; CHECK-P8-LE-NEXT:    oris r3, r3, 544375134; CHECK-P8-LE-NEXT:    ori r3, r3, 40975135; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)5136; CHECK-P8-LE-NEXT:    blr5137;5138; CHECK-P8-BE-LABEL: ld_cst_unalign64_uint8_t_uint64_t:5139; CHECK-P8-BE:       # %bb.0: # %entry5140; CHECK-P8-BE-NEXT:    li r3, 295141; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 245142; CHECK-P8-BE-NEXT:    oris r3, r3, 544375143; CHECK-P8-BE-NEXT:    ori r3, r3, 41045144; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)5145; CHECK-P8-BE-NEXT:    blr5146entry:5147  %0 = load i64, ptr inttoptr (i64 1000000000001 to ptr), align 85148  %conv = trunc i64 %0 to i85149  ret i8 %conv5150}5151 5152; Function Attrs: norecurse nounwind readonly uwtable willreturn5153define dso_local zeroext i8 @ld_cst_align64_uint8_t_uint64_t() {5154; CHECK-P10-LE-LABEL: ld_cst_align64_uint8_t_uint64_t:5155; CHECK-P10-LE:       # %bb.0: # %entry5156; CHECK-P10-LE-NEXT:    pli r3, 2441406255157; CHECK-P10-LE-NEXT:    rldic r3, r3, 12, 245158; CHECK-P10-LE-NEXT:    lbz r3, 0(r3)5159; CHECK-P10-LE-NEXT:    blr5160;5161; CHECK-P10-BE-LABEL: ld_cst_align64_uint8_t_uint64_t:5162; CHECK-P10-BE:       # %bb.0: # %entry5163; CHECK-P10-BE-NEXT:    pli r3, 2325164; CHECK-P10-BE-NEXT:    pli r4, 35675873355165; CHECK-P10-BE-NEXT:    rldimi r4, r3, 32, 05166; CHECK-P10-BE-NEXT:    lbz r3, 0(r4)5167; CHECK-P10-BE-NEXT:    blr5168;5169; CHECK-P9-LE-LABEL: ld_cst_align64_uint8_t_uint64_t:5170; CHECK-P9-LE:       # %bb.0: # %entry5171; CHECK-P9-LE-NEXT:    lis r3, 37255172; CHECK-P9-LE-NEXT:    ori r3, r3, 190255173; CHECK-P9-LE-NEXT:    rldic r3, r3, 12, 245174; CHECK-P9-LE-NEXT:    lbz r3, 0(r3)5175; CHECK-P9-LE-NEXT:    blr5176;5177; CHECK-P9-BE-LABEL: ld_cst_align64_uint8_t_uint64_t:5178; CHECK-P9-BE:       # %bb.0: # %entry5179; CHECK-P9-BE-NEXT:    li r3, 295180; CHECK-P9-BE-NEXT:    rldic r3, r3, 35, 245181; CHECK-P9-BE-NEXT:    oris r3, r3, 544375182; CHECK-P9-BE-NEXT:    ori r3, r3, 41035183; CHECK-P9-BE-NEXT:    lbz r3, 0(r3)5184; CHECK-P9-BE-NEXT:    blr5185;5186; CHECK-P8-LE-LABEL: ld_cst_align64_uint8_t_uint64_t:5187; CHECK-P8-LE:       # %bb.0: # %entry5188; CHECK-P8-LE-NEXT:    lis r3, 37255189; CHECK-P8-LE-NEXT:    ori r3, r3, 190255190; CHECK-P8-LE-NEXT:    rldic r3, r3, 12, 245191; CHECK-P8-LE-NEXT:    lbz r3, 0(r3)5192; CHECK-P8-LE-NEXT:    blr5193;5194; CHECK-P8-BE-LABEL: ld_cst_align64_uint8_t_uint64_t:5195; CHECK-P8-BE:       # %bb.0: # %entry5196; CHECK-P8-BE-NEXT:    li r3, 295197; CHECK-P8-BE-NEXT:    rldic r3, r3, 35, 245198; CHECK-P8-BE-NEXT:    oris r3, r3, 544375199; CHECK-P8-BE-NEXT:    ori r3, r3, 41035200; CHECK-P8-BE-NEXT:    lbz r3, 0(r3)5201; CHECK-P8-BE-NEXT:    blr5202entry:5203  %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40965204  %conv = trunc i64 %0 to i85205  ret i8 %conv5206}5207 5208; Function Attrs: norecurse nounwind readonly uwtable willreturn5209define dso_local zeroext i8 @ld_0_uint8_t_float(i64 %ptr) {5210; CHECK-LABEL: ld_0_uint8_t_float:5211; CHECK:       # %bb.0: # %entry5212; CHECK-NEXT:    lfs f0, 0(r3)5213; CHECK-NEXT:    xscvdpsxws f0, f05214; CHECK-NEXT:    mffprwz r3, f05215; CHECK-NEXT:    blr5216entry:5217  %0 = inttoptr i64 %ptr to ptr5218  %1 = load float, ptr %0, align 45219  %conv = fptoui float %1 to i85220  ret i8 %conv5221}5222 5223; Function Attrs: norecurse nounwind readonly uwtable willreturn5224define dso_local zeroext i8 @ld_align16_uint8_t_float(ptr nocapture readonly %ptr) {5225; CHECK-LABEL: ld_align16_uint8_t_float:5226; CHECK:       # %bb.0: # %entry5227; CHECK-NEXT:    lfs f0, 8(r3)5228; CHECK-NEXT:    xscvdpsxws f0, f05229; CHECK-NEXT:    mffprwz r3, f05230; CHECK-NEXT:    blr5231entry:5232  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85233  %0 = load float, ptr %add.ptr, align 45234  %conv = fptoui float %0 to i85235  ret i8 %conv5236}5237 5238; Function Attrs: norecurse nounwind readonly uwtable willreturn5239define dso_local zeroext i8 @ld_align32_uint8_t_float(ptr nocapture readonly %ptr) {5240; CHECK-P10-LABEL: ld_align32_uint8_t_float:5241; CHECK-P10:       # %bb.0: # %entry5242; CHECK-P10-NEXT:    plfs f0, 99999000(r3), 05243; CHECK-P10-NEXT:    xscvdpsxws f0, f05244; CHECK-P10-NEXT:    mffprwz r3, f05245; CHECK-P10-NEXT:    blr5246;5247; CHECK-PREP10-LABEL: ld_align32_uint8_t_float:5248; CHECK-PREP10:       # %bb.0: # %entry5249; CHECK-PREP10-NEXT:    lis r4, 15255250; CHECK-PREP10-NEXT:    ori r4, r4, 566005251; CHECK-PREP10-NEXT:    lfsx f0, r3, r45252; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05253; CHECK-PREP10-NEXT:    mffprwz r3, f05254; CHECK-PREP10-NEXT:    blr5255entry:5256  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005257  %0 = load float, ptr %add.ptr, align 45258  %conv = fptoui float %0 to i85259  ret i8 %conv5260}5261 5262; Function Attrs: norecurse nounwind readonly uwtable willreturn5263define dso_local zeroext i8 @ld_unalign64_uint8_t_float(ptr nocapture readonly %ptr) {5264; CHECK-P10-LABEL: ld_unalign64_uint8_t_float:5265; CHECK-P10:       # %bb.0: # %entry5266; CHECK-P10-NEXT:    pli r4, 2325267; CHECK-P10-NEXT:    pli r5, 35675873295268; CHECK-P10-NEXT:    rldimi r5, r4, 32, 05269; CHECK-P10-NEXT:    lfsx f0, r3, r55270; CHECK-P10-NEXT:    xscvdpsxws f0, f05271; CHECK-P10-NEXT:    mffprwz r3, f05272; CHECK-P10-NEXT:    blr5273;5274; CHECK-PREP10-LABEL: ld_unalign64_uint8_t_float:5275; CHECK-PREP10:       # %bb.0: # %entry5276; CHECK-PREP10-NEXT:    li r4, 295277; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 245278; CHECK-PREP10-NEXT:    oris r4, r4, 544375279; CHECK-PREP10-NEXT:    ori r4, r4, 40975280; CHECK-PREP10-NEXT:    lfsx f0, r3, r45281; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05282; CHECK-PREP10-NEXT:    mffprwz r3, f05283; CHECK-PREP10-NEXT:    blr5284entry:5285  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000015286  %0 = load float, ptr %add.ptr, align 45287  %conv = fptoui float %0 to i85288  ret i8 %conv5289}5290 5291; Function Attrs: norecurse nounwind readonly uwtable willreturn5292define dso_local zeroext i8 @ld_align64_uint8_t_float(ptr nocapture readonly %ptr) {5293; CHECK-P10-LABEL: ld_align64_uint8_t_float:5294; CHECK-P10:       # %bb.0: # %entry5295; CHECK-P10-NEXT:    pli r4, 2441406255296; CHECK-P10-NEXT:    rldic r4, r4, 12, 245297; CHECK-P10-NEXT:    lfsx f0, r3, r45298; CHECK-P10-NEXT:    xscvdpsxws f0, f05299; CHECK-P10-NEXT:    mffprwz r3, f05300; CHECK-P10-NEXT:    blr5301;5302; CHECK-PREP10-LABEL: ld_align64_uint8_t_float:5303; CHECK-PREP10:       # %bb.0: # %entry5304; CHECK-PREP10-NEXT:    lis r4, 37255305; CHECK-PREP10-NEXT:    ori r4, r4, 190255306; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 245307; CHECK-PREP10-NEXT:    lfsx f0, r3, r45308; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05309; CHECK-PREP10-NEXT:    mffprwz r3, f05310; CHECK-PREP10-NEXT:    blr5311entry:5312  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005313  %0 = load float, ptr %add.ptr, align 45314  %conv = fptoui float %0 to i85315  ret i8 %conv5316}5317 5318; Function Attrs: norecurse nounwind readonly uwtable willreturn5319define dso_local zeroext i8 @ld_reg_uint8_t_float(ptr nocapture readonly %ptr, i64 %off) {5320; CHECK-LABEL: ld_reg_uint8_t_float:5321; CHECK:       # %bb.0: # %entry5322; CHECK-NEXT:    lfsx f0, r3, r45323; CHECK-NEXT:    xscvdpsxws f0, f05324; CHECK-NEXT:    mffprwz r3, f05325; CHECK-NEXT:    blr5326entry:5327  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5328  %0 = load float, ptr %add.ptr, align 45329  %conv = fptoui float %0 to i85330  ret i8 %conv5331}5332 5333; Function Attrs: norecurse nounwind readonly uwtable willreturn5334define dso_local zeroext i8 @ld_or_uint8_t_float(i64 %ptr, i8 zeroext %off) {5335; CHECK-LABEL: ld_or_uint8_t_float:5336; CHECK:       # %bb.0: # %entry5337; CHECK-NEXT:    or r3, r4, r35338; CHECK-NEXT:    lfs f0, 0(r3)5339; CHECK-NEXT:    xscvdpsxws f0, f05340; CHECK-NEXT:    mffprwz r3, f05341; CHECK-NEXT:    blr5342entry:5343  %conv = zext i8 %off to i645344  %or = or i64 %conv, %ptr5345  %0 = inttoptr i64 %or to ptr5346  %1 = load float, ptr %0, align 45347  %conv1 = fptoui float %1 to i85348  ret i8 %conv15349}5350 5351; Function Attrs: norecurse nounwind readonly uwtable willreturn5352define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_float(i64 %ptr) {5353; CHECK-LABEL: ld_not_disjoint16_uint8_t_float:5354; CHECK:       # %bb.0: # %entry5355; CHECK-NEXT:    ori r3, r3, 65356; CHECK-NEXT:    lfs f0, 0(r3)5357; CHECK-NEXT:    xscvdpsxws f0, f05358; CHECK-NEXT:    mffprwz r3, f05359; CHECK-NEXT:    blr5360entry:5361  %or = or i64 %ptr, 65362  %0 = inttoptr i64 %or to ptr5363  %1 = load float, ptr %0, align 45364  %conv = fptoui float %1 to i85365  ret i8 %conv5366}5367 5368; Function Attrs: norecurse nounwind readonly uwtable willreturn5369define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_float(i64 %ptr) {5370; CHECK-LABEL: ld_disjoint_align16_uint8_t_float:5371; CHECK:       # %bb.0: # %entry5372; CHECK-NEXT:    rldicr r3, r3, 0, 515373; CHECK-NEXT:    lfs f0, 24(r3)5374; CHECK-NEXT:    xscvdpsxws f0, f05375; CHECK-NEXT:    mffprwz r3, f05376; CHECK-NEXT:    blr5377entry:5378  %and = and i64 %ptr, -40965379  %or = or i64 %and, 245380  %0 = inttoptr i64 %or to ptr5381  %1 = load float, ptr %0, align 85382  %conv = fptoui float %1 to i85383  ret i8 %conv5384}5385 5386; Function Attrs: norecurse nounwind readonly uwtable willreturn5387define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_float(i64 %ptr) {5388; CHECK-LABEL: ld_not_disjoint32_uint8_t_float:5389; CHECK:       # %bb.0: # %entry5390; CHECK-NEXT:    ori r3, r3, 344635391; CHECK-NEXT:    oris r3, r3, 15392; CHECK-NEXT:    lfs f0, 0(r3)5393; CHECK-NEXT:    xscvdpsxws f0, f05394; CHECK-NEXT:    mffprwz r3, f05395; CHECK-NEXT:    blr5396entry:5397  %or = or i64 %ptr, 999995398  %0 = inttoptr i64 %or to ptr5399  %1 = load float, ptr %0, align 45400  %conv = fptoui float %1 to i85401  ret i8 %conv5402}5403 5404; Function Attrs: norecurse nounwind readonly uwtable willreturn5405define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_float(i64 %ptr) {5406; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_float:5407; CHECK-P10:       # %bb.0: # %entry5408; CHECK-P10-NEXT:    lis r4, -152645409; CHECK-P10-NEXT:    and r3, r3, r45410; CHECK-P10-NEXT:    plfs f0, 999990000(r3), 05411; CHECK-P10-NEXT:    xscvdpsxws f0, f05412; CHECK-P10-NEXT:    mffprwz r3, f05413; CHECK-P10-NEXT:    blr5414;5415; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_float:5416; CHECK-PREP10:       # %bb.0: # %entry5417; CHECK-PREP10-NEXT:    lis r4, -152645418; CHECK-PREP10-NEXT:    and r3, r3, r45419; CHECK-PREP10-NEXT:    lis r4, 152585420; CHECK-PREP10-NEXT:    ori r4, r4, 417125421; CHECK-PREP10-NEXT:    lfsx f0, r3, r45422; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05423; CHECK-PREP10-NEXT:    mffprwz r3, f05424; CHECK-PREP10-NEXT:    blr5425entry:5426  %and = and i64 %ptr, -10003415045427  %or = or i64 %and, 9999900005428  %0 = inttoptr i64 %or to ptr5429  %1 = load float, ptr %0, align 165430  %conv = fptoui float %1 to i85431  ret i8 %conv5432}5433 5434; Function Attrs: norecurse nounwind readonly uwtable willreturn5435define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_float(i64 %ptr) {5436; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_float:5437; CHECK-P10:       # %bb.0: # %entry5438; CHECK-P10-NEXT:    pli r4, 2325439; CHECK-P10-NEXT:    pli r5, 35675873295440; CHECK-P10-NEXT:    rldimi r5, r4, 32, 05441; CHECK-P10-NEXT:    or r3, r3, r55442; CHECK-P10-NEXT:    lfs f0, 0(r3)5443; CHECK-P10-NEXT:    xscvdpsxws f0, f05444; CHECK-P10-NEXT:    mffprwz r3, f05445; CHECK-P10-NEXT:    blr5446;5447; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_float:5448; CHECK-PREP10:       # %bb.0: # %entry5449; CHECK-PREP10-NEXT:    li r4, 295450; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 245451; CHECK-PREP10-NEXT:    oris r4, r4, 544375452; CHECK-PREP10-NEXT:    ori r4, r4, 40975453; CHECK-PREP10-NEXT:    or r3, r3, r45454; CHECK-PREP10-NEXT:    lfs f0, 0(r3)5455; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05456; CHECK-PREP10-NEXT:    mffprwz r3, f05457; CHECK-PREP10-NEXT:    blr5458entry:5459  %or = or i64 %ptr, 10000000000015460  %0 = inttoptr i64 %or to ptr5461  %1 = load float, ptr %0, align 45462  %conv = fptoui float %1 to i85463  ret i8 %conv5464}5465 5466; Function Attrs: norecurse nounwind readonly uwtable willreturn5467define dso_local zeroext i8 @ld_disjoint_unalign64_uint8_t_float(i64 %ptr) {5468; CHECK-P10-LABEL: ld_disjoint_unalign64_uint8_t_float:5469; CHECK-P10:       # %bb.0: # %entry5470; CHECK-P10-NEXT:    pli r4, 2325471; CHECK-P10-NEXT:    pli r5, 35675873295472; CHECK-P10-NEXT:    rldicr r3, r3, 0, 235473; CHECK-P10-NEXT:    rldimi r5, r4, 32, 05474; CHECK-P10-NEXT:    lfsx f0, r3, r55475; CHECK-P10-NEXT:    xscvdpsxws f0, f05476; CHECK-P10-NEXT:    mffprwz r3, f05477; CHECK-P10-NEXT:    blr5478;5479; CHECK-PREP10-LABEL: ld_disjoint_unalign64_uint8_t_float:5480; CHECK-PREP10:       # %bb.0: # %entry5481; CHECK-PREP10-NEXT:    li r4, 295482; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 235483; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 245484; CHECK-PREP10-NEXT:    oris r4, r4, 544375485; CHECK-PREP10-NEXT:    ori r4, r4, 40975486; CHECK-PREP10-NEXT:    lfsx f0, r3, r45487; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05488; CHECK-PREP10-NEXT:    mffprwz r3, f05489; CHECK-PREP10-NEXT:    blr5490entry:5491  %and = and i64 %ptr, -10995116277765492  %or = or i64 %and, 10000000000015493  %0 = inttoptr i64 %or to ptr5494  %1 = load float, ptr %0, align 45495  %conv = fptoui float %1 to i85496  ret i8 %conv5497}5498 5499; Function Attrs: norecurse nounwind readonly uwtable willreturn5500define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_float(i64 %ptr) {5501; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_float:5502; CHECK-P10:       # %bb.0: # %entry5503; CHECK-P10-NEXT:    pli r4, 2441406255504; CHECK-P10-NEXT:    rldicr r3, r3, 0, 235505; CHECK-P10-NEXT:    rldic r4, r4, 12, 245506; CHECK-P10-NEXT:    lfsx f0, r3, r45507; CHECK-P10-NEXT:    xscvdpsxws f0, f05508; CHECK-P10-NEXT:    mffprwz r3, f05509; CHECK-P10-NEXT:    blr5510;5511; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_float:5512; CHECK-PREP10:       # %bb.0: # %entry5513; CHECK-PREP10-NEXT:    lis r4, 37255514; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 235515; CHECK-PREP10-NEXT:    ori r4, r4, 190255516; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 245517; CHECK-PREP10-NEXT:    lfsx f0, r3, r45518; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05519; CHECK-PREP10-NEXT:    mffprwz r3, f05520; CHECK-PREP10-NEXT:    blr5521entry:5522  %and = and i64 %ptr, -10995116277765523  %or = or i64 %and, 10000000000005524  %0 = inttoptr i64 %or to ptr5525  %1 = load float, ptr %0, align 40965526  %conv = fptoui float %1 to i85527  ret i8 %conv5528}5529 5530; Function Attrs: norecurse nounwind readonly uwtable willreturn5531define dso_local zeroext i8 @ld_cst_align16_uint8_t_float() {5532; CHECK-LABEL: ld_cst_align16_uint8_t_float:5533; CHECK:       # %bb.0: # %entry5534; CHECK-NEXT:    lfs f0, 4080(0)5535; CHECK-NEXT:    xscvdpsxws f0, f05536; CHECK-NEXT:    mffprwz r3, f05537; CHECK-NEXT:    blr5538entry:5539  %0 = load float, ptr inttoptr (i64 4080 to ptr), align 165540  %conv = fptoui float %0 to i85541  ret i8 %conv5542}5543 5544; Function Attrs: norecurse nounwind readonly uwtable willreturn5545define dso_local zeroext i8 @ld_cst_align32_uint8_t_float() {5546; CHECK-LABEL: ld_cst_align32_uint8_t_float:5547; CHECK:       # %bb.0: # %entry5548; CHECK-NEXT:    lis r3, 1535549; CHECK-NEXT:    lfs f0, -27108(r3)5550; CHECK-NEXT:    xscvdpsxws f0, f05551; CHECK-NEXT:    mffprwz r3, f05552; CHECK-NEXT:    blr5553entry:5554  %0 = load float, ptr inttoptr (i64 9999900 to ptr), align 45555  %conv = fptoui float %0 to i85556  ret i8 %conv5557}5558 5559; Function Attrs: norecurse nounwind readonly uwtable willreturn5560define dso_local zeroext i8 @ld_cst_unalign64_uint8_t_float() {5561; CHECK-P10-LABEL: ld_cst_unalign64_uint8_t_float:5562; CHECK-P10:       # %bb.0: # %entry5563; CHECK-P10-NEXT:    pli r3, 2325564; CHECK-P10-NEXT:    pli r4, 35675873295565; CHECK-P10-NEXT:    rldimi r4, r3, 32, 05566; CHECK-P10-NEXT:    lfs f0, 0(r4)5567; CHECK-P10-NEXT:    xscvdpsxws f0, f05568; CHECK-P10-NEXT:    mffprwz r3, f05569; CHECK-P10-NEXT:    blr5570;5571; CHECK-PREP10-LABEL: ld_cst_unalign64_uint8_t_float:5572; CHECK-PREP10:       # %bb.0: # %entry5573; CHECK-PREP10-NEXT:    li r3, 295574; CHECK-PREP10-NEXT:    rldic r3, r3, 35, 245575; CHECK-PREP10-NEXT:    oris r3, r3, 544375576; CHECK-PREP10-NEXT:    ori r3, r3, 40975577; CHECK-PREP10-NEXT:    lfs f0, 0(r3)5578; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05579; CHECK-PREP10-NEXT:    mffprwz r3, f05580; CHECK-PREP10-NEXT:    blr5581entry:5582  %0 = load float, ptr inttoptr (i64 1000000000001 to ptr), align 45583  %conv = fptoui float %0 to i85584  ret i8 %conv5585}5586 5587; Function Attrs: norecurse nounwind readonly uwtable willreturn5588define dso_local zeroext i8 @ld_cst_align64_uint8_t_float() {5589; CHECK-P10-LABEL: ld_cst_align64_uint8_t_float:5590; CHECK-P10:       # %bb.0: # %entry5591; CHECK-P10-NEXT:    pli r3, 2441406255592; CHECK-P10-NEXT:    rldic r3, r3, 12, 245593; CHECK-P10-NEXT:    lfs f0, 0(r3)5594; CHECK-P10-NEXT:    xscvdpsxws f0, f05595; CHECK-P10-NEXT:    mffprwz r3, f05596; CHECK-P10-NEXT:    blr5597;5598; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_float:5599; CHECK-PREP10:       # %bb.0: # %entry5600; CHECK-PREP10-NEXT:    lis r3, 37255601; CHECK-PREP10-NEXT:    ori r3, r3, 190255602; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 245603; CHECK-PREP10-NEXT:    lfs f0, 0(r3)5604; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05605; CHECK-PREP10-NEXT:    mffprwz r3, f05606; CHECK-PREP10-NEXT:    blr5607entry:5608  %0 = load float, ptr inttoptr (i64 1000000000000 to ptr), align 40965609  %conv = fptoui float %0 to i85610  ret i8 %conv5611}5612 5613; Function Attrs: norecurse nounwind readonly uwtable willreturn5614define dso_local zeroext i8 @ld_0_uint8_t_double(i64 %ptr) {5615; CHECK-LABEL: ld_0_uint8_t_double:5616; CHECK:       # %bb.0: # %entry5617; CHECK-NEXT:    lfd f0, 0(r3)5618; CHECK-NEXT:    xscvdpsxws f0, f05619; CHECK-NEXT:    mffprwz r3, f05620; CHECK-NEXT:    blr5621entry:5622  %0 = inttoptr i64 %ptr to ptr5623  %1 = load double, ptr %0, align 85624  %conv = fptoui double %1 to i85625  ret i8 %conv5626}5627 5628; Function Attrs: norecurse nounwind readonly uwtable willreturn5629define dso_local zeroext i8 @ld_align16_uint8_t_double(ptr nocapture readonly %ptr) {5630; CHECK-LABEL: ld_align16_uint8_t_double:5631; CHECK:       # %bb.0: # %entry5632; CHECK-NEXT:    lfd f0, 8(r3)5633; CHECK-NEXT:    xscvdpsxws f0, f05634; CHECK-NEXT:    mffprwz r3, f05635; CHECK-NEXT:    blr5636entry:5637  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85638  %0 = load double, ptr %add.ptr, align 85639  %conv = fptoui double %0 to i85640  ret i8 %conv5641}5642 5643; Function Attrs: norecurse nounwind readonly uwtable willreturn5644define dso_local zeroext i8 @ld_align32_uint8_t_double(ptr nocapture readonly %ptr) {5645; CHECK-P10-LABEL: ld_align32_uint8_t_double:5646; CHECK-P10:       # %bb.0: # %entry5647; CHECK-P10-NEXT:    plfd f0, 99999000(r3), 05648; CHECK-P10-NEXT:    xscvdpsxws f0, f05649; CHECK-P10-NEXT:    mffprwz r3, f05650; CHECK-P10-NEXT:    blr5651;5652; CHECK-PREP10-LABEL: ld_align32_uint8_t_double:5653; CHECK-PREP10:       # %bb.0: # %entry5654; CHECK-PREP10-NEXT:    lis r4, 15255655; CHECK-PREP10-NEXT:    ori r4, r4, 566005656; CHECK-PREP10-NEXT:    lfdx f0, r3, r45657; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05658; CHECK-PREP10-NEXT:    mffprwz r3, f05659; CHECK-PREP10-NEXT:    blr5660entry:5661  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005662  %0 = load double, ptr %add.ptr, align 85663  %conv = fptoui double %0 to i85664  ret i8 %conv5665}5666 5667; Function Attrs: norecurse nounwind readonly uwtable willreturn5668define dso_local zeroext i8 @ld_unalign64_uint8_t_double(ptr nocapture readonly %ptr) {5669; CHECK-P10-LABEL: ld_unalign64_uint8_t_double:5670; CHECK-P10:       # %bb.0: # %entry5671; CHECK-P10-NEXT:    pli r4, 2325672; CHECK-P10-NEXT:    pli r5, 35675873295673; CHECK-P10-NEXT:    rldimi r5, r4, 32, 05674; CHECK-P10-NEXT:    lfdx f0, r3, r55675; CHECK-P10-NEXT:    xscvdpsxws f0, f05676; CHECK-P10-NEXT:    mffprwz r3, f05677; CHECK-P10-NEXT:    blr5678;5679; CHECK-PREP10-LABEL: ld_unalign64_uint8_t_double:5680; CHECK-PREP10:       # %bb.0: # %entry5681; CHECK-PREP10-NEXT:    li r4, 295682; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 245683; CHECK-PREP10-NEXT:    oris r4, r4, 544375684; CHECK-PREP10-NEXT:    ori r4, r4, 40975685; CHECK-PREP10-NEXT:    lfdx f0, r3, r45686; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05687; CHECK-PREP10-NEXT:    mffprwz r3, f05688; CHECK-PREP10-NEXT:    blr5689entry:5690  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000015691  %0 = load double, ptr %add.ptr, align 85692  %conv = fptoui double %0 to i85693  ret i8 %conv5694}5695 5696; Function Attrs: norecurse nounwind readonly uwtable willreturn5697define dso_local zeroext i8 @ld_align64_uint8_t_double(ptr nocapture readonly %ptr) {5698; CHECK-P10-LABEL: ld_align64_uint8_t_double:5699; CHECK-P10:       # %bb.0: # %entry5700; CHECK-P10-NEXT:    pli r4, 2441406255701; CHECK-P10-NEXT:    rldic r4, r4, 12, 245702; CHECK-P10-NEXT:    lfdx f0, r3, r45703; CHECK-P10-NEXT:    xscvdpsxws f0, f05704; CHECK-P10-NEXT:    mffprwz r3, f05705; CHECK-P10-NEXT:    blr5706;5707; CHECK-PREP10-LABEL: ld_align64_uint8_t_double:5708; CHECK-PREP10:       # %bb.0: # %entry5709; CHECK-PREP10-NEXT:    lis r4, 37255710; CHECK-PREP10-NEXT:    ori r4, r4, 190255711; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 245712; CHECK-PREP10-NEXT:    lfdx f0, r3, r45713; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05714; CHECK-PREP10-NEXT:    mffprwz r3, f05715; CHECK-PREP10-NEXT:    blr5716entry:5717  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005718  %0 = load double, ptr %add.ptr, align 85719  %conv = fptoui double %0 to i85720  ret i8 %conv5721}5722 5723; Function Attrs: norecurse nounwind readonly uwtable willreturn5724define dso_local zeroext i8 @ld_reg_uint8_t_double(ptr nocapture readonly %ptr, i64 %off) {5725; CHECK-LABEL: ld_reg_uint8_t_double:5726; CHECK:       # %bb.0: # %entry5727; CHECK-NEXT:    lfdx f0, r3, r45728; CHECK-NEXT:    xscvdpsxws f0, f05729; CHECK-NEXT:    mffprwz r3, f05730; CHECK-NEXT:    blr5731entry:5732  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5733  %0 = load double, ptr %add.ptr, align 85734  %conv = fptoui double %0 to i85735  ret i8 %conv5736}5737 5738; Function Attrs: norecurse nounwind readonly uwtable willreturn5739define dso_local zeroext i8 @ld_or_uint8_t_double(i64 %ptr, i8 zeroext %off) {5740; CHECK-LABEL: ld_or_uint8_t_double:5741; CHECK:       # %bb.0: # %entry5742; CHECK-NEXT:    or r3, r4, r35743; CHECK-NEXT:    lfd f0, 0(r3)5744; CHECK-NEXT:    xscvdpsxws f0, f05745; CHECK-NEXT:    mffprwz r3, f05746; CHECK-NEXT:    blr5747entry:5748  %conv = zext i8 %off to i645749  %or = or i64 %conv, %ptr5750  %0 = inttoptr i64 %or to ptr5751  %1 = load double, ptr %0, align 85752  %conv1 = fptoui double %1 to i85753  ret i8 %conv15754}5755 5756; Function Attrs: norecurse nounwind readonly uwtable willreturn5757define dso_local zeroext i8 @ld_not_disjoint16_uint8_t_double(i64 %ptr) {5758; CHECK-LABEL: ld_not_disjoint16_uint8_t_double:5759; CHECK:       # %bb.0: # %entry5760; CHECK-NEXT:    ori r3, r3, 65761; CHECK-NEXT:    lfd f0, 0(r3)5762; CHECK-NEXT:    xscvdpsxws f0, f05763; CHECK-NEXT:    mffprwz r3, f05764; CHECK-NEXT:    blr5765entry:5766  %or = or i64 %ptr, 65767  %0 = inttoptr i64 %or to ptr5768  %1 = load double, ptr %0, align 85769  %conv = fptoui double %1 to i85770  ret i8 %conv5771}5772 5773; Function Attrs: norecurse nounwind readonly uwtable willreturn5774define dso_local zeroext i8 @ld_disjoint_align16_uint8_t_double(i64 %ptr) {5775; CHECK-LABEL: ld_disjoint_align16_uint8_t_double:5776; CHECK:       # %bb.0: # %entry5777; CHECK-NEXT:    rldicr r3, r3, 0, 515778; CHECK-NEXT:    lfd f0, 24(r3)5779; CHECK-NEXT:    xscvdpsxws f0, f05780; CHECK-NEXT:    mffprwz r3, f05781; CHECK-NEXT:    blr5782entry:5783  %and = and i64 %ptr, -40965784  %or = or i64 %and, 245785  %0 = inttoptr i64 %or to ptr5786  %1 = load double, ptr %0, align 85787  %conv = fptoui double %1 to i85788  ret i8 %conv5789}5790 5791; Function Attrs: norecurse nounwind readonly uwtable willreturn5792define dso_local zeroext i8 @ld_not_disjoint32_uint8_t_double(i64 %ptr) {5793; CHECK-LABEL: ld_not_disjoint32_uint8_t_double:5794; CHECK:       # %bb.0: # %entry5795; CHECK-NEXT:    ori r3, r3, 344635796; CHECK-NEXT:    oris r3, r3, 15797; CHECK-NEXT:    lfd f0, 0(r3)5798; CHECK-NEXT:    xscvdpsxws f0, f05799; CHECK-NEXT:    mffprwz r3, f05800; CHECK-NEXT:    blr5801entry:5802  %or = or i64 %ptr, 999995803  %0 = inttoptr i64 %or to ptr5804  %1 = load double, ptr %0, align 85805  %conv = fptoui double %1 to i85806  ret i8 %conv5807}5808 5809; Function Attrs: norecurse nounwind readonly uwtable willreturn5810define dso_local zeroext i8 @ld_disjoint_align32_uint8_t_double(i64 %ptr) {5811; CHECK-P10-LABEL: ld_disjoint_align32_uint8_t_double:5812; CHECK-P10:       # %bb.0: # %entry5813; CHECK-P10-NEXT:    lis r4, -152645814; CHECK-P10-NEXT:    and r3, r3, r45815; CHECK-P10-NEXT:    plfd f0, 999990000(r3), 05816; CHECK-P10-NEXT:    xscvdpsxws f0, f05817; CHECK-P10-NEXT:    mffprwz r3, f05818; CHECK-P10-NEXT:    blr5819;5820; CHECK-PREP10-LABEL: ld_disjoint_align32_uint8_t_double:5821; CHECK-PREP10:       # %bb.0: # %entry5822; CHECK-PREP10-NEXT:    lis r4, -152645823; CHECK-PREP10-NEXT:    and r3, r3, r45824; CHECK-PREP10-NEXT:    lis r4, 152585825; CHECK-PREP10-NEXT:    ori r4, r4, 417125826; CHECK-PREP10-NEXT:    lfdx f0, r3, r45827; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05828; CHECK-PREP10-NEXT:    mffprwz r3, f05829; CHECK-PREP10-NEXT:    blr5830entry:5831  %and = and i64 %ptr, -10003415045832  %or = or i64 %and, 9999900005833  %0 = inttoptr i64 %or to ptr5834  %1 = load double, ptr %0, align 165835  %conv = fptoui double %1 to i85836  ret i8 %conv5837}5838 5839; Function Attrs: norecurse nounwind readonly uwtable willreturn5840define dso_local zeroext i8 @ld_not_disjoint64_uint8_t_double(i64 %ptr) {5841; CHECK-P10-LABEL: ld_not_disjoint64_uint8_t_double:5842; CHECK-P10:       # %bb.0: # %entry5843; CHECK-P10-NEXT:    pli r4, 2325844; CHECK-P10-NEXT:    pli r5, 35675873295845; CHECK-P10-NEXT:    rldimi r5, r4, 32, 05846; CHECK-P10-NEXT:    or r3, r3, r55847; CHECK-P10-NEXT:    lfd f0, 0(r3)5848; CHECK-P10-NEXT:    xscvdpsxws f0, f05849; CHECK-P10-NEXT:    mffprwz r3, f05850; CHECK-P10-NEXT:    blr5851;5852; CHECK-PREP10-LABEL: ld_not_disjoint64_uint8_t_double:5853; CHECK-PREP10:       # %bb.0: # %entry5854; CHECK-PREP10-NEXT:    li r4, 295855; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 245856; CHECK-PREP10-NEXT:    oris r4, r4, 544375857; CHECK-PREP10-NEXT:    ori r4, r4, 40975858; CHECK-PREP10-NEXT:    or r3, r3, r45859; CHECK-PREP10-NEXT:    lfd f0, 0(r3)5860; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05861; CHECK-PREP10-NEXT:    mffprwz r3, f05862; CHECK-PREP10-NEXT:    blr5863entry:5864  %or = or i64 %ptr, 10000000000015865  %0 = inttoptr i64 %or to ptr5866  %1 = load double, ptr %0, align 85867  %conv = fptoui double %1 to i85868  ret i8 %conv5869}5870 5871; Function Attrs: norecurse nounwind readonly uwtable willreturn5872define dso_local zeroext i8 @ld_disjoint_unalign64_uint8_t_double(i64 %ptr) {5873; CHECK-P10-LABEL: ld_disjoint_unalign64_uint8_t_double:5874; CHECK-P10:       # %bb.0: # %entry5875; CHECK-P10-NEXT:    pli r4, 2325876; CHECK-P10-NEXT:    pli r5, 35675873295877; CHECK-P10-NEXT:    rldicr r3, r3, 0, 235878; CHECK-P10-NEXT:    rldimi r5, r4, 32, 05879; CHECK-P10-NEXT:    lfdx f0, r3, r55880; CHECK-P10-NEXT:    xscvdpsxws f0, f05881; CHECK-P10-NEXT:    mffprwz r3, f05882; CHECK-P10-NEXT:    blr5883;5884; CHECK-PREP10-LABEL: ld_disjoint_unalign64_uint8_t_double:5885; CHECK-PREP10:       # %bb.0: # %entry5886; CHECK-PREP10-NEXT:    li r4, 295887; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 235888; CHECK-PREP10-NEXT:    rldic r4, r4, 35, 245889; CHECK-PREP10-NEXT:    oris r4, r4, 544375890; CHECK-PREP10-NEXT:    ori r4, r4, 40975891; CHECK-PREP10-NEXT:    lfdx f0, r3, r45892; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05893; CHECK-PREP10-NEXT:    mffprwz r3, f05894; CHECK-PREP10-NEXT:    blr5895entry:5896  %and = and i64 %ptr, -10995116277765897  %or = or i64 %and, 10000000000015898  %0 = inttoptr i64 %or to ptr5899  %1 = load double, ptr %0, align 85900  %conv = fptoui double %1 to i85901  ret i8 %conv5902}5903 5904; Function Attrs: norecurse nounwind readonly uwtable willreturn5905define dso_local zeroext i8 @ld_disjoint_align64_uint8_t_double(i64 %ptr) {5906; CHECK-P10-LABEL: ld_disjoint_align64_uint8_t_double:5907; CHECK-P10:       # %bb.0: # %entry5908; CHECK-P10-NEXT:    pli r4, 2441406255909; CHECK-P10-NEXT:    rldicr r3, r3, 0, 235910; CHECK-P10-NEXT:    rldic r4, r4, 12, 245911; CHECK-P10-NEXT:    lfdx f0, r3, r45912; CHECK-P10-NEXT:    xscvdpsxws f0, f05913; CHECK-P10-NEXT:    mffprwz r3, f05914; CHECK-P10-NEXT:    blr5915;5916; CHECK-PREP10-LABEL: ld_disjoint_align64_uint8_t_double:5917; CHECK-PREP10:       # %bb.0: # %entry5918; CHECK-PREP10-NEXT:    lis r4, 37255919; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 235920; CHECK-PREP10-NEXT:    ori r4, r4, 190255921; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 245922; CHECK-PREP10-NEXT:    lfdx f0, r3, r45923; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05924; CHECK-PREP10-NEXT:    mffprwz r3, f05925; CHECK-PREP10-NEXT:    blr5926entry:5927  %and = and i64 %ptr, -10995116277765928  %or = or i64 %and, 10000000000005929  %0 = inttoptr i64 %or to ptr5930  %1 = load double, ptr %0, align 40965931  %conv = fptoui double %1 to i85932  ret i8 %conv5933}5934 5935; Function Attrs: norecurse nounwind readonly uwtable willreturn5936define dso_local zeroext i8 @ld_cst_align16_uint8_t_double() {5937; CHECK-LABEL: ld_cst_align16_uint8_t_double:5938; CHECK:       # %bb.0: # %entry5939; CHECK-NEXT:    lfd f0, 4080(0)5940; CHECK-NEXT:    xscvdpsxws f0, f05941; CHECK-NEXT:    mffprwz r3, f05942; CHECK-NEXT:    blr5943entry:5944  %0 = load double, ptr inttoptr (i64 4080 to ptr), align 165945  %conv = fptoui double %0 to i85946  ret i8 %conv5947}5948 5949; Function Attrs: norecurse nounwind readonly uwtable willreturn5950define dso_local zeroext i8 @ld_cst_align32_uint8_t_double() {5951; CHECK-LABEL: ld_cst_align32_uint8_t_double:5952; CHECK:       # %bb.0: # %entry5953; CHECK-NEXT:    lis r3, 1535954; CHECK-NEXT:    lfd f0, -27108(r3)5955; CHECK-NEXT:    xscvdpsxws f0, f05956; CHECK-NEXT:    mffprwz r3, f05957; CHECK-NEXT:    blr5958entry:5959  %0 = load double, ptr inttoptr (i64 9999900 to ptr), align 85960  %conv = fptoui double %0 to i85961  ret i8 %conv5962}5963 5964; Function Attrs: norecurse nounwind readonly uwtable willreturn5965define dso_local zeroext i8 @ld_cst_unalign64_uint8_t_double() {5966; CHECK-P10-LABEL: ld_cst_unalign64_uint8_t_double:5967; CHECK-P10:       # %bb.0: # %entry5968; CHECK-P10-NEXT:    pli r3, 2325969; CHECK-P10-NEXT:    pli r4, 35675873295970; CHECK-P10-NEXT:    rldimi r4, r3, 32, 05971; CHECK-P10-NEXT:    lfd f0, 0(r4)5972; CHECK-P10-NEXT:    xscvdpsxws f0, f05973; CHECK-P10-NEXT:    mffprwz r3, f05974; CHECK-P10-NEXT:    blr5975;5976; CHECK-PREP10-LABEL: ld_cst_unalign64_uint8_t_double:5977; CHECK-PREP10:       # %bb.0: # %entry5978; CHECK-PREP10-NEXT:    li r3, 295979; CHECK-PREP10-NEXT:    rldic r3, r3, 35, 245980; CHECK-PREP10-NEXT:    oris r3, r3, 544375981; CHECK-PREP10-NEXT:    ori r3, r3, 40975982; CHECK-PREP10-NEXT:    lfd f0, 0(r3)5983; CHECK-PREP10-NEXT:    xscvdpsxws f0, f05984; CHECK-PREP10-NEXT:    mffprwz r3, f05985; CHECK-PREP10-NEXT:    blr5986entry:5987  %0 = load double, ptr inttoptr (i64 1000000000001 to ptr), align 85988  %conv = fptoui double %0 to i85989  ret i8 %conv5990}5991 5992; Function Attrs: norecurse nounwind readonly uwtable willreturn5993define dso_local zeroext i8 @ld_cst_align64_uint8_t_double() {5994; CHECK-P10-LABEL: ld_cst_align64_uint8_t_double:5995; CHECK-P10:       # %bb.0: # %entry5996; CHECK-P10-NEXT:    pli r3, 2441406255997; CHECK-P10-NEXT:    rldic r3, r3, 12, 245998; CHECK-P10-NEXT:    lfd f0, 0(r3)5999; CHECK-P10-NEXT:    xscvdpsxws f0, f06000; CHECK-P10-NEXT:    mffprwz r3, f06001; CHECK-P10-NEXT:    blr6002;6003; CHECK-PREP10-LABEL: ld_cst_align64_uint8_t_double:6004; CHECK-PREP10:       # %bb.0: # %entry6005; CHECK-PREP10-NEXT:    lis r3, 37256006; CHECK-PREP10-NEXT:    ori r3, r3, 190256007; CHECK-PREP10-NEXT:    rldic r3, r3, 12, 246008; CHECK-PREP10-NEXT:    lfd f0, 0(r3)6009; CHECK-PREP10-NEXT:    xscvdpsxws f0, f06010; CHECK-PREP10-NEXT:    mffprwz r3, f06011; CHECK-PREP10-NEXT:    blr6012entry:6013  %0 = load double, ptr inttoptr (i64 1000000000000 to ptr), align 40966014  %conv = fptoui double %0 to i86015  ret i8 %conv6016}6017 6018; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6019define dso_local void @st_0_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6020; CHECK-LABEL: st_0_uint8_t_uint8_t:6021; CHECK:       # %bb.0: # %entry6022; CHECK-NEXT:    stb r4, 0(r3)6023; CHECK-NEXT:    blr6024entry:6025  %0 = inttoptr i64 %ptr to ptr6026  store i8 %str, ptr %0, align 16027  ret void6028}6029 6030; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6031define dso_local void @st_align16_uint8_t_uint8_t(ptr nocapture %ptr, i8 zeroext %str) {6032; CHECK-LABEL: st_align16_uint8_t_uint8_t:6033; CHECK:       # %bb.0: # %entry6034; CHECK-NEXT:    stb r4, 8(r3)6035; CHECK-NEXT:    blr6036entry:6037  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86038  store i8 %str, ptr %add.ptr, align 16039  ret void6040}6041 6042; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6043define dso_local void @st_align32_uint8_t_uint8_t(ptr nocapture %ptr, i8 zeroext %str) {6044; CHECK-P10-LABEL: st_align32_uint8_t_uint8_t:6045; CHECK-P10:       # %bb.0: # %entry6046; CHECK-P10-NEXT:    pstb r4, 99999000(r3), 06047; CHECK-P10-NEXT:    blr6048;6049; CHECK-PREP10-LABEL: st_align32_uint8_t_uint8_t:6050; CHECK-PREP10:       # %bb.0: # %entry6051; CHECK-PREP10-NEXT:    lis r5, 15256052; CHECK-PREP10-NEXT:    ori r5, r5, 566006053; CHECK-PREP10-NEXT:    stbx r4, r3, r56054; CHECK-PREP10-NEXT:    blr6055entry:6056  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006057  store i8 %str, ptr %add.ptr, align 16058  ret void6059}6060 6061; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6062define dso_local void @st_align64_uint8_t_uint8_t(ptr nocapture %ptr, i8 zeroext %str) {6063; CHECK-P10-LABEL: st_align64_uint8_t_uint8_t:6064; CHECK-P10:       # %bb.0: # %entry6065; CHECK-P10-NEXT:    pli r5, 2441406256066; CHECK-P10-NEXT:    rldic r5, r5, 12, 246067; CHECK-P10-NEXT:    stbx r4, r3, r56068; CHECK-P10-NEXT:    blr6069;6070; CHECK-PREP10-LABEL: st_align64_uint8_t_uint8_t:6071; CHECK-PREP10:       # %bb.0: # %entry6072; CHECK-PREP10-NEXT:    lis r5, 37256073; CHECK-PREP10-NEXT:    ori r5, r5, 190256074; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246075; CHECK-PREP10-NEXT:    stbx r4, r3, r56076; CHECK-PREP10-NEXT:    blr6077entry:6078  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006079  store i8 %str, ptr %add.ptr, align 16080  ret void6081}6082 6083; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6084define dso_local void @st_reg_uint8_t_uint8_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {6085; CHECK-LABEL: st_reg_uint8_t_uint8_t:6086; CHECK:       # %bb.0: # %entry6087; CHECK-NEXT:    stbx r5, r3, r46088; CHECK-NEXT:    blr6089entry:6090  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6091  store i8 %str, ptr %add.ptr, align 16092  ret void6093}6094 6095; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6096define dso_local void @st_or1_uint8_t_uint8_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {6097; CHECK-LABEL: st_or1_uint8_t_uint8_t:6098; CHECK:       # %bb.0: # %entry6099; CHECK-NEXT:    or r3, r4, r36100; CHECK-NEXT:    stb r5, 0(r3)6101; CHECK-NEXT:    blr6102entry:6103  %conv = zext i8 %off to i646104  %or = or i64 %conv, %ptr6105  %0 = inttoptr i64 %or to ptr6106  store i8 %str, ptr %0, align 16107  ret void6108}6109 6110; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6111define dso_local void @st_not_disjoint16_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6112; CHECK-LABEL: st_not_disjoint16_uint8_t_uint8_t:6113; CHECK:       # %bb.0: # %entry6114; CHECK-NEXT:    ori r3, r3, 66115; CHECK-NEXT:    stb r4, 0(r3)6116; CHECK-NEXT:    blr6117entry:6118  %or = or i64 %ptr, 66119  %0 = inttoptr i64 %or to ptr6120  store i8 %str, ptr %0, align 16121  ret void6122}6123 6124; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6125define dso_local void @st_disjoint_align16_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6126; CHECK-LABEL: st_disjoint_align16_uint8_t_uint8_t:6127; CHECK:       # %bb.0: # %entry6128; CHECK-NEXT:    rldicr r3, r3, 0, 516129; CHECK-NEXT:    stb r4, 24(r3)6130; CHECK-NEXT:    blr6131entry:6132  %and = and i64 %ptr, -40966133  %or = or i64 %and, 246134  %0 = inttoptr i64 %or to ptr6135  store i8 %str, ptr %0, align 86136  ret void6137}6138 6139; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6140define dso_local void @st_not_disjoint32_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6141; CHECK-LABEL: st_not_disjoint32_uint8_t_uint8_t:6142; CHECK:       # %bb.0: # %entry6143; CHECK-NEXT:    ori r3, r3, 344636144; CHECK-NEXT:    oris r3, r3, 16145; CHECK-NEXT:    stb r4, 0(r3)6146; CHECK-NEXT:    blr6147entry:6148  %or = or i64 %ptr, 999996149  %0 = inttoptr i64 %or to ptr6150  store i8 %str, ptr %0, align 16151  ret void6152}6153 6154; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6155define dso_local void @st_disjoint_align32_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6156; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint8_t:6157; CHECK-P10:       # %bb.0: # %entry6158; CHECK-P10-NEXT:    lis r5, -152646159; CHECK-P10-NEXT:    and r3, r3, r56160; CHECK-P10-NEXT:    pstb r4, 999990000(r3), 06161; CHECK-P10-NEXT:    blr6162;6163; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint8_t:6164; CHECK-PREP10:       # %bb.0: # %entry6165; CHECK-PREP10-NEXT:    lis r5, -152646166; CHECK-PREP10-NEXT:    and r3, r3, r56167; CHECK-PREP10-NEXT:    lis r5, 152586168; CHECK-PREP10-NEXT:    ori r5, r5, 417126169; CHECK-PREP10-NEXT:    stbx r4, r3, r56170; CHECK-PREP10-NEXT:    blr6171entry:6172  %and = and i64 %ptr, -10003415046173  %or = or i64 %and, 9999900006174  %0 = inttoptr i64 %or to ptr6175  store i8 %str, ptr %0, align 166176  ret void6177}6178 6179; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6180define dso_local void @st_not_disjoint64_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6181; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint8_t:6182; CHECK-P10:       # %bb.0: # %entry6183; CHECK-P10-NEXT:    pli r5, 2326184; CHECK-P10-NEXT:    pli r6, 35675873296185; CHECK-P10-NEXT:    rldimi r6, r5, 32, 06186; CHECK-P10-NEXT:    or r3, r3, r66187; CHECK-P10-NEXT:    stb r4, 0(r3)6188; CHECK-P10-NEXT:    blr6189;6190; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint8_t:6191; CHECK-PREP10:       # %bb.0: # %entry6192; CHECK-PREP10-NEXT:    li r5, 296193; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 246194; CHECK-PREP10-NEXT:    oris r5, r5, 544376195; CHECK-PREP10-NEXT:    ori r5, r5, 40976196; CHECK-PREP10-NEXT:    or r3, r3, r56197; CHECK-PREP10-NEXT:    stb r4, 0(r3)6198; CHECK-PREP10-NEXT:    blr6199entry:6200  %or = or i64 %ptr, 10000000000016201  %0 = inttoptr i64 %or to ptr6202  store i8 %str, ptr %0, align 16203  ret void6204}6205 6206; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6207define dso_local void @st_disjoint_align64_uint8_t_uint8_t(i64 %ptr, i8 zeroext %str) {6208; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint8_t:6209; CHECK-P10:       # %bb.0: # %entry6210; CHECK-P10-NEXT:    pli r5, 2441406256211; CHECK-P10-NEXT:    rldicr r3, r3, 0, 236212; CHECK-P10-NEXT:    rldic r5, r5, 12, 246213; CHECK-P10-NEXT:    stbx r4, r3, r56214; CHECK-P10-NEXT:    blr6215;6216; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint8_t:6217; CHECK-PREP10:       # %bb.0: # %entry6218; CHECK-PREP10-NEXT:    lis r5, 37256219; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 236220; CHECK-PREP10-NEXT:    ori r5, r5, 190256221; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246222; CHECK-PREP10-NEXT:    stbx r4, r3, r56223; CHECK-PREP10-NEXT:    blr6224entry:6225  %and = and i64 %ptr, -10995116277766226  %or = or i64 %and, 10000000000006227  %0 = inttoptr i64 %or to ptr6228  store i8 %str, ptr %0, align 40966229  ret void6230}6231 6232; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6233define dso_local void @st_cst_align16_uint8_t_uint8_t(i8 zeroext %str) {6234; CHECK-LABEL: st_cst_align16_uint8_t_uint8_t:6235; CHECK:       # %bb.0: # %entry6236; CHECK-NEXT:    stb r3, 4080(0)6237; CHECK-NEXT:    blr6238entry:6239  store i8 %str, ptr inttoptr (i64 4080 to ptr), align 166240  ret void6241}6242 6243; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6244define dso_local void @st_cst_align32_uint8_t_uint8_t(i8 zeroext %str) {6245; CHECK-LABEL: st_cst_align32_uint8_t_uint8_t:6246; CHECK:       # %bb.0: # %entry6247; CHECK-NEXT:    lis r4, 1536248; CHECK-NEXT:    stb r3, -27108(r4)6249; CHECK-NEXT:    blr6250entry:6251  store i8 %str, ptr inttoptr (i64 9999900 to ptr), align 46252  ret void6253}6254 6255; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6256define dso_local void @st_cst_align64_uint8_t_uint8_t(i8 zeroext %str) {6257; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint8_t:6258; CHECK-P10:       # %bb.0: # %entry6259; CHECK-P10-NEXT:    pli r4, 2441406256260; CHECK-P10-NEXT:    rldic r4, r4, 12, 246261; CHECK-P10-NEXT:    stb r3, 0(r4)6262; CHECK-P10-NEXT:    blr6263;6264; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint8_t:6265; CHECK-PREP10:       # %bb.0: # %entry6266; CHECK-PREP10-NEXT:    lis r4, 37256267; CHECK-PREP10-NEXT:    ori r4, r4, 190256268; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 246269; CHECK-PREP10-NEXT:    stb r3, 0(r4)6270; CHECK-PREP10-NEXT:    blr6271entry:6272  store i8 %str, ptr inttoptr (i64 1000000000000 to ptr), align 40966273  ret void6274}6275 6276; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6277define dso_local void @st_0_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6278; CHECK-LABEL: st_0_uint8_t_uint16_t:6279; CHECK:       # %bb.0: # %entry6280; CHECK-NEXT:    sth r4, 0(r3)6281; CHECK-NEXT:    blr6282entry:6283  %conv = zext i8 %str to i166284  %0 = inttoptr i64 %ptr to ptr6285  store i16 %conv, ptr %0, align 26286  ret void6287}6288 6289; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6290define dso_local void @st_align16_uint8_t_uint16_t(ptr nocapture %ptr, i8 zeroext %str) {6291; CHECK-LABEL: st_align16_uint8_t_uint16_t:6292; CHECK:       # %bb.0: # %entry6293; CHECK-NEXT:    sth r4, 8(r3)6294; CHECK-NEXT:    blr6295entry:6296  %conv = zext i8 %str to i166297  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86298  store i16 %conv, ptr %add.ptr, align 26299  ret void6300}6301 6302; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6303define dso_local void @st_align32_uint8_t_uint16_t(ptr nocapture %ptr, i8 zeroext %str) {6304; CHECK-P10-LABEL: st_align32_uint8_t_uint16_t:6305; CHECK-P10:       # %bb.0: # %entry6306; CHECK-P10-NEXT:    psth r4, 99999000(r3), 06307; CHECK-P10-NEXT:    blr6308;6309; CHECK-PREP10-LABEL: st_align32_uint8_t_uint16_t:6310; CHECK-PREP10:       # %bb.0: # %entry6311; CHECK-PREP10-NEXT:    lis r5, 15256312; CHECK-PREP10-NEXT:    ori r5, r5, 566006313; CHECK-PREP10-NEXT:    sthx r4, r3, r56314; CHECK-PREP10-NEXT:    blr6315entry:6316  %conv = zext i8 %str to i166317  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006318  store i16 %conv, ptr %add.ptr, align 26319  ret void6320}6321 6322; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6323define dso_local void @st_align64_uint8_t_uint16_t(ptr nocapture %ptr, i8 zeroext %str) {6324; CHECK-P10-LABEL: st_align64_uint8_t_uint16_t:6325; CHECK-P10:       # %bb.0: # %entry6326; CHECK-P10-NEXT:    pli r5, 2441406256327; CHECK-P10-NEXT:    rldic r5, r5, 12, 246328; CHECK-P10-NEXT:    sthx r4, r3, r56329; CHECK-P10-NEXT:    blr6330;6331; CHECK-PREP10-LABEL: st_align64_uint8_t_uint16_t:6332; CHECK-PREP10:       # %bb.0: # %entry6333; CHECK-PREP10-NEXT:    lis r5, 37256334; CHECK-PREP10-NEXT:    ori r5, r5, 190256335; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246336; CHECK-PREP10-NEXT:    sthx r4, r3, r56337; CHECK-PREP10-NEXT:    blr6338entry:6339  %conv = zext i8 %str to i166340  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006341  store i16 %conv, ptr %add.ptr, align 26342  ret void6343}6344 6345; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6346define dso_local void @st_reg_uint8_t_uint16_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {6347; CHECK-LABEL: st_reg_uint8_t_uint16_t:6348; CHECK:       # %bb.0: # %entry6349; CHECK-NEXT:    sthx r5, r3, r46350; CHECK-NEXT:    blr6351entry:6352  %conv = zext i8 %str to i166353  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6354  store i16 %conv, ptr %add.ptr, align 26355  ret void6356}6357 6358; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6359define dso_local void @st_or1_uint8_t_uint16_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {6360; CHECK-LABEL: st_or1_uint8_t_uint16_t:6361; CHECK:       # %bb.0: # %entry6362; CHECK-NEXT:    or r3, r4, r36363; CHECK-NEXT:    sth r5, 0(r3)6364; CHECK-NEXT:    blr6365entry:6366  %conv = zext i8 %str to i166367  %conv1 = zext i8 %off to i646368  %or = or i64 %conv1, %ptr6369  %0 = inttoptr i64 %or to ptr6370  store i16 %conv, ptr %0, align 26371  ret void6372}6373 6374; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6375define dso_local void @st_not_disjoint16_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6376; CHECK-LABEL: st_not_disjoint16_uint8_t_uint16_t:6377; CHECK:       # %bb.0: # %entry6378; CHECK-NEXT:    ori r3, r3, 66379; CHECK-NEXT:    sth r4, 0(r3)6380; CHECK-NEXT:    blr6381entry:6382  %conv = zext i8 %str to i166383  %or = or i64 %ptr, 66384  %0 = inttoptr i64 %or to ptr6385  store i16 %conv, ptr %0, align 26386  ret void6387}6388 6389; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6390define dso_local void @st_disjoint_align16_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6391; CHECK-LABEL: st_disjoint_align16_uint8_t_uint16_t:6392; CHECK:       # %bb.0: # %entry6393; CHECK-NEXT:    rldicr r3, r3, 0, 516394; CHECK-NEXT:    sth r4, 24(r3)6395; CHECK-NEXT:    blr6396entry:6397  %and = and i64 %ptr, -40966398  %conv = zext i8 %str to i166399  %or = or i64 %and, 246400  %0 = inttoptr i64 %or to ptr6401  store i16 %conv, ptr %0, align 86402  ret void6403}6404 6405; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6406define dso_local void @st_not_disjoint32_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6407; CHECK-LABEL: st_not_disjoint32_uint8_t_uint16_t:6408; CHECK:       # %bb.0: # %entry6409; CHECK-NEXT:    ori r3, r3, 344636410; CHECK-NEXT:    oris r3, r3, 16411; CHECK-NEXT:    sth r4, 0(r3)6412; CHECK-NEXT:    blr6413entry:6414  %conv = zext i8 %str to i166415  %or = or i64 %ptr, 999996416  %0 = inttoptr i64 %or to ptr6417  store i16 %conv, ptr %0, align 26418  ret void6419}6420 6421; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6422define dso_local void @st_disjoint_align32_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6423; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint16_t:6424; CHECK-P10:       # %bb.0: # %entry6425; CHECK-P10-NEXT:    lis r5, -152646426; CHECK-P10-NEXT:    and r3, r3, r56427; CHECK-P10-NEXT:    psth r4, 999990000(r3), 06428; CHECK-P10-NEXT:    blr6429;6430; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint16_t:6431; CHECK-PREP10:       # %bb.0: # %entry6432; CHECK-PREP10-NEXT:    lis r5, -152646433; CHECK-PREP10-NEXT:    and r3, r3, r56434; CHECK-PREP10-NEXT:    lis r5, 152586435; CHECK-PREP10-NEXT:    ori r5, r5, 417126436; CHECK-PREP10-NEXT:    sthx r4, r3, r56437; CHECK-PREP10-NEXT:    blr6438entry:6439  %and = and i64 %ptr, -10003415046440  %conv = zext i8 %str to i166441  %or = or i64 %and, 9999900006442  %0 = inttoptr i64 %or to ptr6443  store i16 %conv, ptr %0, align 166444  ret void6445}6446 6447; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6448define dso_local void @st_not_disjoint64_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6449; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint16_t:6450; CHECK-P10:       # %bb.0: # %entry6451; CHECK-P10-NEXT:    pli r5, 2326452; CHECK-P10-NEXT:    pli r6, 35675873296453; CHECK-P10-NEXT:    rldimi r6, r5, 32, 06454; CHECK-P10-NEXT:    or r3, r3, r66455; CHECK-P10-NEXT:    sth r4, 0(r3)6456; CHECK-P10-NEXT:    blr6457;6458; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint16_t:6459; CHECK-PREP10:       # %bb.0: # %entry6460; CHECK-PREP10-NEXT:    li r5, 296461; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 246462; CHECK-PREP10-NEXT:    oris r5, r5, 544376463; CHECK-PREP10-NEXT:    ori r5, r5, 40976464; CHECK-PREP10-NEXT:    or r3, r3, r56465; CHECK-PREP10-NEXT:    sth r4, 0(r3)6466; CHECK-PREP10-NEXT:    blr6467entry:6468  %conv = zext i8 %str to i166469  %or = or i64 %ptr, 10000000000016470  %0 = inttoptr i64 %or to ptr6471  store i16 %conv, ptr %0, align 26472  ret void6473}6474 6475; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6476define dso_local void @st_disjoint_align64_uint8_t_uint16_t(i64 %ptr, i8 zeroext %str) {6477; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint16_t:6478; CHECK-P10:       # %bb.0: # %entry6479; CHECK-P10-NEXT:    pli r5, 2441406256480; CHECK-P10-NEXT:    rldicr r3, r3, 0, 236481; CHECK-P10-NEXT:    rldic r5, r5, 12, 246482; CHECK-P10-NEXT:    sthx r4, r3, r56483; CHECK-P10-NEXT:    blr6484;6485; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint16_t:6486; CHECK-PREP10:       # %bb.0: # %entry6487; CHECK-PREP10-NEXT:    lis r5, 37256488; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 236489; CHECK-PREP10-NEXT:    ori r5, r5, 190256490; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246491; CHECK-PREP10-NEXT:    sthx r4, r3, r56492; CHECK-PREP10-NEXT:    blr6493entry:6494  %and = and i64 %ptr, -10995116277766495  %conv = zext i8 %str to i166496  %or = or i64 %and, 10000000000006497  %0 = inttoptr i64 %or to ptr6498  store i16 %conv, ptr %0, align 40966499  ret void6500}6501 6502; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6503define dso_local void @st_cst_align16_uint8_t_uint16_t(i8 zeroext %str) {6504; CHECK-LABEL: st_cst_align16_uint8_t_uint16_t:6505; CHECK:       # %bb.0: # %entry6506; CHECK-NEXT:    sth r3, 4080(0)6507; CHECK-NEXT:    blr6508entry:6509  %conv = zext i8 %str to i166510  store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 166511  ret void6512}6513 6514; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6515define dso_local void @st_cst_align32_uint8_t_uint16_t(i8 zeroext %str) {6516; CHECK-LABEL: st_cst_align32_uint8_t_uint16_t:6517; CHECK:       # %bb.0: # %entry6518; CHECK-NEXT:    lis r4, 1536519; CHECK-NEXT:    sth r3, -27108(r4)6520; CHECK-NEXT:    blr6521entry:6522  %conv = zext i8 %str to i166523  store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 46524  ret void6525}6526 6527; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6528define dso_local void @st_cst_align64_uint8_t_uint16_t(i8 zeroext %str) {6529; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint16_t:6530; CHECK-P10:       # %bb.0: # %entry6531; CHECK-P10-NEXT:    pli r4, 2441406256532; CHECK-P10-NEXT:    rldic r4, r4, 12, 246533; CHECK-P10-NEXT:    sth r3, 0(r4)6534; CHECK-P10-NEXT:    blr6535;6536; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint16_t:6537; CHECK-PREP10:       # %bb.0: # %entry6538; CHECK-PREP10-NEXT:    lis r4, 37256539; CHECK-PREP10-NEXT:    ori r4, r4, 190256540; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 246541; CHECK-PREP10-NEXT:    sth r3, 0(r4)6542; CHECK-PREP10-NEXT:    blr6543entry:6544  %conv = zext i8 %str to i166545  store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966546  ret void6547}6548 6549; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6550define dso_local void @st_0_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6551; CHECK-LABEL: st_0_uint8_t_uint32_t:6552; CHECK:       # %bb.0: # %entry6553; CHECK-NEXT:    stw r4, 0(r3)6554; CHECK-NEXT:    blr6555entry:6556  %conv = zext i8 %str to i326557  %0 = inttoptr i64 %ptr to ptr6558  store i32 %conv, ptr %0, align 46559  ret void6560}6561 6562; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6563define dso_local void @st_align16_uint8_t_uint32_t(ptr nocapture %ptr, i8 zeroext %str) {6564; CHECK-LABEL: st_align16_uint8_t_uint32_t:6565; CHECK:       # %bb.0: # %entry6566; CHECK-NEXT:    stw r4, 8(r3)6567; CHECK-NEXT:    blr6568entry:6569  %conv = zext i8 %str to i326570  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86571  store i32 %conv, ptr %add.ptr, align 46572  ret void6573}6574 6575; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6576define dso_local void @st_align32_uint8_t_uint32_t(ptr nocapture %ptr, i8 zeroext %str) {6577; CHECK-P10-LABEL: st_align32_uint8_t_uint32_t:6578; CHECK-P10:       # %bb.0: # %entry6579; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 06580; CHECK-P10-NEXT:    blr6581;6582; CHECK-PREP10-LABEL: st_align32_uint8_t_uint32_t:6583; CHECK-PREP10:       # %bb.0: # %entry6584; CHECK-PREP10-NEXT:    lis r5, 15256585; CHECK-PREP10-NEXT:    ori r5, r5, 566006586; CHECK-PREP10-NEXT:    stwx r4, r3, r56587; CHECK-PREP10-NEXT:    blr6588entry:6589  %conv = zext i8 %str to i326590  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006591  store i32 %conv, ptr %add.ptr, align 46592  ret void6593}6594 6595; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6596define dso_local void @st_align64_uint8_t_uint32_t(ptr nocapture %ptr, i8 zeroext %str) {6597; CHECK-P10-LABEL: st_align64_uint8_t_uint32_t:6598; CHECK-P10:       # %bb.0: # %entry6599; CHECK-P10-NEXT:    pli r5, 2441406256600; CHECK-P10-NEXT:    rldic r5, r5, 12, 246601; CHECK-P10-NEXT:    stwx r4, r3, r56602; CHECK-P10-NEXT:    blr6603;6604; CHECK-PREP10-LABEL: st_align64_uint8_t_uint32_t:6605; CHECK-PREP10:       # %bb.0: # %entry6606; CHECK-PREP10-NEXT:    lis r5, 37256607; CHECK-PREP10-NEXT:    ori r5, r5, 190256608; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246609; CHECK-PREP10-NEXT:    stwx r4, r3, r56610; CHECK-PREP10-NEXT:    blr6611entry:6612  %conv = zext i8 %str to i326613  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006614  store i32 %conv, ptr %add.ptr, align 46615  ret void6616}6617 6618; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6619define dso_local void @st_reg_uint8_t_uint32_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {6620; CHECK-LABEL: st_reg_uint8_t_uint32_t:6621; CHECK:       # %bb.0: # %entry6622; CHECK-NEXT:    stwx r5, r3, r46623; CHECK-NEXT:    blr6624entry:6625  %conv = zext i8 %str to i326626  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6627  store i32 %conv, ptr %add.ptr, align 46628  ret void6629}6630 6631; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6632define dso_local void @st_or1_uint8_t_uint32_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {6633; CHECK-LABEL: st_or1_uint8_t_uint32_t:6634; CHECK:       # %bb.0: # %entry6635; CHECK-NEXT:    or r3, r4, r36636; CHECK-NEXT:    stw r5, 0(r3)6637; CHECK-NEXT:    blr6638entry:6639  %conv = zext i8 %str to i326640  %conv1 = zext i8 %off to i646641  %or = or i64 %conv1, %ptr6642  %0 = inttoptr i64 %or to ptr6643  store i32 %conv, ptr %0, align 46644  ret void6645}6646 6647; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6648define dso_local void @st_not_disjoint16_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6649; CHECK-LABEL: st_not_disjoint16_uint8_t_uint32_t:6650; CHECK:       # %bb.0: # %entry6651; CHECK-NEXT:    ori r3, r3, 66652; CHECK-NEXT:    stw r4, 0(r3)6653; CHECK-NEXT:    blr6654entry:6655  %conv = zext i8 %str to i326656  %or = or i64 %ptr, 66657  %0 = inttoptr i64 %or to ptr6658  store i32 %conv, ptr %0, align 46659  ret void6660}6661 6662; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6663define dso_local void @st_disjoint_align16_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6664; CHECK-LABEL: st_disjoint_align16_uint8_t_uint32_t:6665; CHECK:       # %bb.0: # %entry6666; CHECK-NEXT:    rldicr r3, r3, 0, 516667; CHECK-NEXT:    stw r4, 24(r3)6668; CHECK-NEXT:    blr6669entry:6670  %and = and i64 %ptr, -40966671  %conv = zext i8 %str to i326672  %or = or i64 %and, 246673  %0 = inttoptr i64 %or to ptr6674  store i32 %conv, ptr %0, align 86675  ret void6676}6677 6678; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6679define dso_local void @st_not_disjoint32_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6680; CHECK-LABEL: st_not_disjoint32_uint8_t_uint32_t:6681; CHECK:       # %bb.0: # %entry6682; CHECK-NEXT:    ori r3, r3, 344636683; CHECK-NEXT:    oris r3, r3, 16684; CHECK-NEXT:    stw r4, 0(r3)6685; CHECK-NEXT:    blr6686entry:6687  %conv = zext i8 %str to i326688  %or = or i64 %ptr, 999996689  %0 = inttoptr i64 %or to ptr6690  store i32 %conv, ptr %0, align 46691  ret void6692}6693 6694; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6695define dso_local void @st_disjoint_align32_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6696; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint32_t:6697; CHECK-P10:       # %bb.0: # %entry6698; CHECK-P10-NEXT:    lis r5, -152646699; CHECK-P10-NEXT:    and r3, r3, r56700; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 06701; CHECK-P10-NEXT:    blr6702;6703; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint32_t:6704; CHECK-PREP10:       # %bb.0: # %entry6705; CHECK-PREP10-NEXT:    lis r5, -152646706; CHECK-PREP10-NEXT:    and r3, r3, r56707; CHECK-PREP10-NEXT:    lis r5, 152586708; CHECK-PREP10-NEXT:    ori r5, r5, 417126709; CHECK-PREP10-NEXT:    stwx r4, r3, r56710; CHECK-PREP10-NEXT:    blr6711entry:6712  %and = and i64 %ptr, -10003415046713  %conv = zext i8 %str to i326714  %or = or i64 %and, 9999900006715  %0 = inttoptr i64 %or to ptr6716  store i32 %conv, ptr %0, align 166717  ret void6718}6719 6720; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6721define dso_local void @st_not_disjoint64_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6722; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint32_t:6723; CHECK-P10:       # %bb.0: # %entry6724; CHECK-P10-NEXT:    pli r5, 2326725; CHECK-P10-NEXT:    pli r6, 35675873296726; CHECK-P10-NEXT:    rldimi r6, r5, 32, 06727; CHECK-P10-NEXT:    or r3, r3, r66728; CHECK-P10-NEXT:    stw r4, 0(r3)6729; CHECK-P10-NEXT:    blr6730;6731; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint32_t:6732; CHECK-PREP10:       # %bb.0: # %entry6733; CHECK-PREP10-NEXT:    li r5, 296734; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 246735; CHECK-PREP10-NEXT:    oris r5, r5, 544376736; CHECK-PREP10-NEXT:    ori r5, r5, 40976737; CHECK-PREP10-NEXT:    or r3, r3, r56738; CHECK-PREP10-NEXT:    stw r4, 0(r3)6739; CHECK-PREP10-NEXT:    blr6740entry:6741  %conv = zext i8 %str to i326742  %or = or i64 %ptr, 10000000000016743  %0 = inttoptr i64 %or to ptr6744  store i32 %conv, ptr %0, align 46745  ret void6746}6747 6748; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6749define dso_local void @st_disjoint_align64_uint8_t_uint32_t(i64 %ptr, i8 zeroext %str) {6750; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint32_t:6751; CHECK-P10:       # %bb.0: # %entry6752; CHECK-P10-NEXT:    pli r5, 2441406256753; CHECK-P10-NEXT:    rldicr r3, r3, 0, 236754; CHECK-P10-NEXT:    rldic r5, r5, 12, 246755; CHECK-P10-NEXT:    stwx r4, r3, r56756; CHECK-P10-NEXT:    blr6757;6758; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint32_t:6759; CHECK-PREP10:       # %bb.0: # %entry6760; CHECK-PREP10-NEXT:    lis r5, 37256761; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 236762; CHECK-PREP10-NEXT:    ori r5, r5, 190256763; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246764; CHECK-PREP10-NEXT:    stwx r4, r3, r56765; CHECK-PREP10-NEXT:    blr6766entry:6767  %and = and i64 %ptr, -10995116277766768  %conv = zext i8 %str to i326769  %or = or i64 %and, 10000000000006770  %0 = inttoptr i64 %or to ptr6771  store i32 %conv, ptr %0, align 40966772  ret void6773}6774 6775; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6776define dso_local void @st_cst_align16_uint8_t_uint32_t(i8 zeroext %str) {6777; CHECK-LABEL: st_cst_align16_uint8_t_uint32_t:6778; CHECK:       # %bb.0: # %entry6779; CHECK-NEXT:    stw r3, 4080(0)6780; CHECK-NEXT:    blr6781entry:6782  %conv = zext i8 %str to i326783  store i32 %conv, ptr inttoptr (i64 4080 to ptr), align 166784  ret void6785}6786 6787; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6788define dso_local void @st_cst_align32_uint8_t_uint32_t(i8 zeroext %str) {6789; CHECK-LABEL: st_cst_align32_uint8_t_uint32_t:6790; CHECK:       # %bb.0: # %entry6791; CHECK-NEXT:    lis r4, 1536792; CHECK-NEXT:    stw r3, -27108(r4)6793; CHECK-NEXT:    blr6794entry:6795  %conv = zext i8 %str to i326796  store i32 %conv, ptr inttoptr (i64 9999900 to ptr), align 46797  ret void6798}6799 6800; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6801define dso_local void @st_cst_align64_uint8_t_uint32_t(i8 zeroext %str) {6802; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint32_t:6803; CHECK-P10:       # %bb.0: # %entry6804; CHECK-P10-NEXT:    pli r4, 2441406256805; CHECK-P10-NEXT:    rldic r4, r4, 12, 246806; CHECK-P10-NEXT:    stw r3, 0(r4)6807; CHECK-P10-NEXT:    blr6808;6809; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint32_t:6810; CHECK-PREP10:       # %bb.0: # %entry6811; CHECK-PREP10-NEXT:    lis r4, 37256812; CHECK-PREP10-NEXT:    ori r4, r4, 190256813; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 246814; CHECK-PREP10-NEXT:    stw r3, 0(r4)6815; CHECK-PREP10-NEXT:    blr6816entry:6817  %conv = zext i8 %str to i326818  store i32 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966819  ret void6820}6821 6822; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6823define dso_local void @st_0_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {6824; CHECK-LABEL: st_0_uint8_t_uint64_t:6825; CHECK:       # %bb.0: # %entry6826; CHECK-NEXT:    std r4, 0(r3)6827; CHECK-NEXT:    blr6828entry:6829  %conv = zext i8 %str to i646830  %0 = inttoptr i64 %ptr to ptr6831  store i64 %conv, ptr %0, align 86832  ret void6833}6834 6835; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6836define dso_local void @st_align16_uint8_t_uint64_t(ptr nocapture %ptr, i8 zeroext %str) {6837; CHECK-LABEL: st_align16_uint8_t_uint64_t:6838; CHECK:       # %bb.0: # %entry6839; CHECK-NEXT:    std r4, 8(r3)6840; CHECK-NEXT:    blr6841entry:6842  %conv = zext i8 %str to i646843  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86844  store i64 %conv, ptr %add.ptr, align 86845  ret void6846}6847 6848; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6849define dso_local void @st_align32_uint8_t_uint64_t(ptr nocapture %ptr, i8 zeroext %str) {6850; CHECK-P10-LABEL: st_align32_uint8_t_uint64_t:6851; CHECK-P10:       # %bb.0: # %entry6852; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 06853; CHECK-P10-NEXT:    blr6854;6855; CHECK-PREP10-LABEL: st_align32_uint8_t_uint64_t:6856; CHECK-PREP10:       # %bb.0: # %entry6857; CHECK-PREP10-NEXT:    lis r5, 15256858; CHECK-PREP10-NEXT:    ori r5, r5, 566006859; CHECK-PREP10-NEXT:    stdx r4, r3, r56860; CHECK-PREP10-NEXT:    blr6861entry:6862  %conv = zext i8 %str to i646863  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006864  store i64 %conv, ptr %add.ptr, align 86865  ret void6866}6867 6868; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6869define dso_local void @st_align64_uint8_t_uint64_t(ptr nocapture %ptr, i8 zeroext %str) {6870; CHECK-P10-LABEL: st_align64_uint8_t_uint64_t:6871; CHECK-P10:       # %bb.0: # %entry6872; CHECK-P10-NEXT:    pli r5, 2441406256873; CHECK-P10-NEXT:    rldic r5, r5, 12, 246874; CHECK-P10-NEXT:    stdx r4, r3, r56875; CHECK-P10-NEXT:    blr6876;6877; CHECK-PREP10-LABEL: st_align64_uint8_t_uint64_t:6878; CHECK-PREP10:       # %bb.0: # %entry6879; CHECK-PREP10-NEXT:    lis r5, 37256880; CHECK-PREP10-NEXT:    ori r5, r5, 190256881; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 246882; CHECK-PREP10-NEXT:    stdx r4, r3, r56883; CHECK-PREP10-NEXT:    blr6884entry:6885  %conv = zext i8 %str to i646886  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006887  store i64 %conv, ptr %add.ptr, align 86888  ret void6889}6890 6891; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6892define dso_local void @st_reg_uint8_t_uint64_t(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {6893; CHECK-LABEL: st_reg_uint8_t_uint64_t:6894; CHECK:       # %bb.0: # %entry6895; CHECK-NEXT:    stdx r5, r3, r46896; CHECK-NEXT:    blr6897entry:6898  %conv = zext i8 %str to i646899  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6900  store i64 %conv, ptr %add.ptr, align 86901  ret void6902}6903 6904; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6905define dso_local void @st_or1_uint8_t_uint64_t(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {6906; CHECK-LABEL: st_or1_uint8_t_uint64_t:6907; CHECK:       # %bb.0: # %entry6908; CHECK-NEXT:    or r3, r4, r36909; CHECK-NEXT:    std r5, 0(r3)6910; CHECK-NEXT:    blr6911entry:6912  %conv = zext i8 %str to i646913  %conv1 = zext i8 %off to i646914  %or = or i64 %conv1, %ptr6915  %0 = inttoptr i64 %or to ptr6916  store i64 %conv, ptr %0, align 86917  ret void6918}6919 6920; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6921define dso_local void @st_not_disjoint16_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {6922; CHECK-LABEL: st_not_disjoint16_uint8_t_uint64_t:6923; CHECK:       # %bb.0: # %entry6924; CHECK-NEXT:    ori r3, r3, 66925; CHECK-NEXT:    std r4, 0(r3)6926; CHECK-NEXT:    blr6927entry:6928  %conv = zext i8 %str to i646929  %or = or i64 %ptr, 66930  %0 = inttoptr i64 %or to ptr6931  store i64 %conv, ptr %0, align 86932  ret void6933}6934 6935; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6936define dso_local void @st_disjoint_align16_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {6937; CHECK-LABEL: st_disjoint_align16_uint8_t_uint64_t:6938; CHECK:       # %bb.0: # %entry6939; CHECK-NEXT:    rldicr r3, r3, 0, 516940; CHECK-NEXT:    std r4, 24(r3)6941; CHECK-NEXT:    blr6942entry:6943  %and = and i64 %ptr, -40966944  %conv = zext i8 %str to i646945  %or = or i64 %and, 246946  %0 = inttoptr i64 %or to ptr6947  store i64 %conv, ptr %0, align 86948  ret void6949}6950 6951; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6952define dso_local void @st_not_disjoint32_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {6953; CHECK-LABEL: st_not_disjoint32_uint8_t_uint64_t:6954; CHECK:       # %bb.0: # %entry6955; CHECK-NEXT:    ori r3, r3, 344636956; CHECK-NEXT:    oris r3, r3, 16957; CHECK-NEXT:    std r4, 0(r3)6958; CHECK-NEXT:    blr6959entry:6960  %conv = zext i8 %str to i646961  %or = or i64 %ptr, 999996962  %0 = inttoptr i64 %or to ptr6963  store i64 %conv, ptr %0, align 86964  ret void6965}6966 6967; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6968define dso_local void @st_disjoint_align32_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {6969; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_uint64_t:6970; CHECK-P10:       # %bb.0: # %entry6971; CHECK-P10-NEXT:    lis r5, -152646972; CHECK-P10-NEXT:    and r3, r3, r56973; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 06974; CHECK-P10-NEXT:    blr6975;6976; CHECK-PREP10-LABEL: st_disjoint_align32_uint8_t_uint64_t:6977; CHECK-PREP10:       # %bb.0: # %entry6978; CHECK-PREP10-NEXT:    lis r5, -152646979; CHECK-PREP10-NEXT:    and r3, r3, r56980; CHECK-PREP10-NEXT:    lis r5, 152586981; CHECK-PREP10-NEXT:    ori r5, r5, 417126982; CHECK-PREP10-NEXT:    stdx r4, r3, r56983; CHECK-PREP10-NEXT:    blr6984entry:6985  %and = and i64 %ptr, -10003415046986  %conv = zext i8 %str to i646987  %or = or i64 %and, 9999900006988  %0 = inttoptr i64 %or to ptr6989  store i64 %conv, ptr %0, align 166990  ret void6991}6992 6993; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6994define dso_local void @st_not_disjoint64_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {6995; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_uint64_t:6996; CHECK-P10:       # %bb.0: # %entry6997; CHECK-P10-NEXT:    pli r5, 2326998; CHECK-P10-NEXT:    pli r6, 35675873296999; CHECK-P10-NEXT:    rldimi r6, r5, 32, 07000; CHECK-P10-NEXT:    or r3, r3, r67001; CHECK-P10-NEXT:    std r4, 0(r3)7002; CHECK-P10-NEXT:    blr7003;7004; CHECK-PREP10-LABEL: st_not_disjoint64_uint8_t_uint64_t:7005; CHECK-PREP10:       # %bb.0: # %entry7006; CHECK-PREP10-NEXT:    li r5, 297007; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 247008; CHECK-PREP10-NEXT:    oris r5, r5, 544377009; CHECK-PREP10-NEXT:    ori r5, r5, 40977010; CHECK-PREP10-NEXT:    or r3, r3, r57011; CHECK-PREP10-NEXT:    std r4, 0(r3)7012; CHECK-PREP10-NEXT:    blr7013entry:7014  %conv = zext i8 %str to i647015  %or = or i64 %ptr, 10000000000017016  %0 = inttoptr i64 %or to ptr7017  store i64 %conv, ptr %0, align 87018  ret void7019}7020 7021; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7022define dso_local void @st_disjoint_align64_uint8_t_uint64_t(i64 %ptr, i8 zeroext %str) {7023; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_uint64_t:7024; CHECK-P10:       # %bb.0: # %entry7025; CHECK-P10-NEXT:    pli r5, 2441406257026; CHECK-P10-NEXT:    rldicr r3, r3, 0, 237027; CHECK-P10-NEXT:    rldic r5, r5, 12, 247028; CHECK-P10-NEXT:    stdx r4, r3, r57029; CHECK-P10-NEXT:    blr7030;7031; CHECK-PREP10-LABEL: st_disjoint_align64_uint8_t_uint64_t:7032; CHECK-PREP10:       # %bb.0: # %entry7033; CHECK-PREP10-NEXT:    lis r5, 37257034; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 237035; CHECK-PREP10-NEXT:    ori r5, r5, 190257036; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 247037; CHECK-PREP10-NEXT:    stdx r4, r3, r57038; CHECK-PREP10-NEXT:    blr7039entry:7040  %and = and i64 %ptr, -10995116277767041  %conv = zext i8 %str to i647042  %or = or i64 %and, 10000000000007043  %0 = inttoptr i64 %or to ptr7044  store i64 %conv, ptr %0, align 40967045  ret void7046}7047 7048; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7049define dso_local void @st_cst_align16_uint8_t_uint64_t(i8 zeroext %str) {7050; CHECK-LABEL: st_cst_align16_uint8_t_uint64_t:7051; CHECK:       # %bb.0: # %entry7052; CHECK-NEXT:    std r3, 4080(0)7053; CHECK-NEXT:    blr7054entry:7055  %conv = zext i8 %str to i647056  store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 167057  ret void7058}7059 7060; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7061define dso_local void @st_cst_align32_uint8_t_uint64_t(i8 zeroext %str) {7062; CHECK-LABEL: st_cst_align32_uint8_t_uint64_t:7063; CHECK:       # %bb.0: # %entry7064; CHECK-NEXT:    lis r4, 1537065; CHECK-NEXT:    std r3, -27108(r4)7066; CHECK-NEXT:    blr7067entry:7068  %conv = zext i8 %str to i647069  store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 87070  ret void7071}7072 7073; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7074define dso_local void @st_cst_align64_uint8_t_uint64_t(i8 zeroext %str) {7075; CHECK-P10-LABEL: st_cst_align64_uint8_t_uint64_t:7076; CHECK-P10:       # %bb.0: # %entry7077; CHECK-P10-NEXT:    pli r4, 2441406257078; CHECK-P10-NEXT:    rldic r4, r4, 12, 247079; CHECK-P10-NEXT:    std r3, 0(r4)7080; CHECK-P10-NEXT:    blr7081;7082; CHECK-PREP10-LABEL: st_cst_align64_uint8_t_uint64_t:7083; CHECK-PREP10:       # %bb.0: # %entry7084; CHECK-PREP10-NEXT:    lis r4, 37257085; CHECK-PREP10-NEXT:    ori r4, r4, 190257086; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 247087; CHECK-PREP10-NEXT:    std r3, 0(r4)7088; CHECK-PREP10-NEXT:    blr7089entry:7090  %conv = zext i8 %str to i647091  store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967092  ret void7093}7094 7095; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7096define dso_local void @st_0_uint8_t_float(i64 %ptr, i8 zeroext %str) {7097; CHECK-LABEL: st_0_uint8_t_float:7098; CHECK:       # %bb.0: # %entry7099; CHECK-NEXT:    mtfprwz f0, r47100; CHECK-NEXT:    xscvuxdsp f0, f07101; CHECK-NEXT:    stfs f0, 0(r3)7102; CHECK-NEXT:    blr7103entry:7104  %conv = uitofp i8 %str to float7105  %0 = inttoptr i64 %ptr to ptr7106  store float %conv, ptr %0, align 47107  ret void7108}7109 7110; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7111define dso_local void @st_align16_uint8_t_float(ptr nocapture %ptr, i8 zeroext %str) {7112; CHECK-LABEL: st_align16_uint8_t_float:7113; CHECK:       # %bb.0: # %entry7114; CHECK-NEXT:    mtfprwz f0, r47115; CHECK-NEXT:    xscvuxdsp f0, f07116; CHECK-NEXT:    stfs f0, 8(r3)7117; CHECK-NEXT:    blr7118entry:7119  %conv = uitofp i8 %str to float7120  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87121  store float %conv, ptr %add.ptr, align 47122  ret void7123}7124 7125; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7126define dso_local void @st_align32_uint8_t_float(ptr nocapture %ptr, i8 zeroext %str) {7127; CHECK-P10-LABEL: st_align32_uint8_t_float:7128; CHECK-P10:       # %bb.0: # %entry7129; CHECK-P10-NEXT:    mtfprwz f0, r47130; CHECK-P10-NEXT:    xscvuxdsp f0, f07131; CHECK-P10-NEXT:    pstfs f0, 99999000(r3), 07132; CHECK-P10-NEXT:    blr7133;7134; CHECK-P9-LABEL: st_align32_uint8_t_float:7135; CHECK-P9:       # %bb.0: # %entry7136; CHECK-P9-NEXT:    mtfprwz f0, r47137; CHECK-P9-NEXT:    lis r4, 15257138; CHECK-P9-NEXT:    xscvuxdsp f0, f07139; CHECK-P9-NEXT:    ori r4, r4, 566007140; CHECK-P9-NEXT:    stfsx f0, r3, r47141; CHECK-P9-NEXT:    blr7142;7143; CHECK-P8-LABEL: st_align32_uint8_t_float:7144; CHECK-P8:       # %bb.0: # %entry7145; CHECK-P8-NEXT:    mtfprwz f0, r47146; CHECK-P8-NEXT:    lis r4, 15257147; CHECK-P8-NEXT:    ori r4, r4, 566007148; CHECK-P8-NEXT:    xscvuxdsp f0, f07149; CHECK-P8-NEXT:    stfsx f0, r3, r47150; CHECK-P8-NEXT:    blr7151entry:7152  %conv = uitofp i8 %str to float7153  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007154  store float %conv, ptr %add.ptr, align 47155  ret void7156}7157 7158; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7159define dso_local void @st_align64_uint8_t_float(ptr nocapture %ptr, i8 zeroext %str) {7160; CHECK-P10-LABEL: st_align64_uint8_t_float:7161; CHECK-P10:       # %bb.0: # %entry7162; CHECK-P10-NEXT:    mtfprwz f0, r47163; CHECK-P10-NEXT:    pli r4, 2441406257164; CHECK-P10-NEXT:    rldic r4, r4, 12, 247165; CHECK-P10-NEXT:    xscvuxdsp f0, f07166; CHECK-P10-NEXT:    stfsx f0, r3, r47167; CHECK-P10-NEXT:    blr7168;7169; CHECK-P9-LABEL: st_align64_uint8_t_float:7170; CHECK-P9:       # %bb.0: # %entry7171; CHECK-P9-NEXT:    mtfprwz f0, r47172; CHECK-P9-NEXT:    lis r4, 37257173; CHECK-P9-NEXT:    xscvuxdsp f0, f07174; CHECK-P9-NEXT:    ori r4, r4, 190257175; CHECK-P9-NEXT:    rldic r4, r4, 12, 247176; CHECK-P9-NEXT:    stfsx f0, r3, r47177; CHECK-P9-NEXT:    blr7178;7179; CHECK-P8-LABEL: st_align64_uint8_t_float:7180; CHECK-P8:       # %bb.0: # %entry7181; CHECK-P8-NEXT:    mtfprwz f0, r47182; CHECK-P8-NEXT:    lis r4, 37257183; CHECK-P8-NEXT:    ori r4, r4, 190257184; CHECK-P8-NEXT:    rldic r4, r4, 12, 247185; CHECK-P8-NEXT:    xscvuxdsp f0, f07186; CHECK-P8-NEXT:    stfsx f0, r3, r47187; CHECK-P8-NEXT:    blr7188entry:7189  %conv = uitofp i8 %str to float7190  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007191  store float %conv, ptr %add.ptr, align 47192  ret void7193}7194 7195; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7196define dso_local void @st_reg_uint8_t_float(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {7197; CHECK-LABEL: st_reg_uint8_t_float:7198; CHECK:       # %bb.0: # %entry7199; CHECK-NEXT:    mtfprwz f0, r57200; CHECK-NEXT:    xscvuxdsp f0, f07201; CHECK-NEXT:    stfsx f0, r3, r47202; CHECK-NEXT:    blr7203entry:7204  %conv = uitofp i8 %str to float7205  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7206  store float %conv, ptr %add.ptr, align 47207  ret void7208}7209 7210; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7211define dso_local void @st_or1_uint8_t_float(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {7212; CHECK-LABEL: st_or1_uint8_t_float:7213; CHECK:       # %bb.0: # %entry7214; CHECK-NEXT:    mtfprwz f0, r57215; CHECK-NEXT:    or r3, r4, r37216; CHECK-NEXT:    xscvuxdsp f0, f07217; CHECK-NEXT:    stfs f0, 0(r3)7218; CHECK-NEXT:    blr7219entry:7220  %conv = uitofp i8 %str to float7221  %conv1 = zext i8 %off to i647222  %or = or i64 %conv1, %ptr7223  %0 = inttoptr i64 %or to ptr7224  store float %conv, ptr %0, align 47225  ret void7226}7227 7228; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7229define dso_local void @st_not_disjoint16_uint8_t_float(i64 %ptr, i8 zeroext %str) {7230; CHECK-LABEL: st_not_disjoint16_uint8_t_float:7231; CHECK:       # %bb.0: # %entry7232; CHECK-NEXT:    mtfprwz f0, r47233; CHECK-NEXT:    ori r3, r3, 67234; CHECK-NEXT:    xscvuxdsp f0, f07235; CHECK-NEXT:    stfs f0, 0(r3)7236; CHECK-NEXT:    blr7237entry:7238  %conv = uitofp i8 %str to float7239  %or = or i64 %ptr, 67240  %0 = inttoptr i64 %or to ptr7241  store float %conv, ptr %0, align 47242  ret void7243}7244 7245; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7246define dso_local void @st_disjoint_align16_uint8_t_float(i64 %ptr, i8 zeroext %str) {7247; CHECK-LABEL: st_disjoint_align16_uint8_t_float:7248; CHECK:       # %bb.0: # %entry7249; CHECK-NEXT:    mtfprwz f0, r47250; CHECK-NEXT:    rldicr r3, r3, 0, 517251; CHECK-NEXT:    xscvuxdsp f0, f07252; CHECK-NEXT:    stfs f0, 24(r3)7253; CHECK-NEXT:    blr7254entry:7255  %and = and i64 %ptr, -40967256  %conv = uitofp i8 %str to float7257  %or = or i64 %and, 247258  %0 = inttoptr i64 %or to ptr7259  store float %conv, ptr %0, align 87260  ret void7261}7262 7263; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7264define dso_local void @st_not_disjoint32_uint8_t_float(i64 %ptr, i8 zeroext %str) {7265; CHECK-P10-LABEL: st_not_disjoint32_uint8_t_float:7266; CHECK-P10:       # %bb.0: # %entry7267; CHECK-P10-NEXT:    mtfprwz f0, r47268; CHECK-P10-NEXT:    ori r3, r3, 344637269; CHECK-P10-NEXT:    oris r3, r3, 17270; CHECK-P10-NEXT:    xscvuxdsp f0, f07271; CHECK-P10-NEXT:    stfs f0, 0(r3)7272; CHECK-P10-NEXT:    blr7273;7274; CHECK-P9-LABEL: st_not_disjoint32_uint8_t_float:7275; CHECK-P9:       # %bb.0: # %entry7276; CHECK-P9-NEXT:    mtfprwz f0, r47277; CHECK-P9-NEXT:    ori r3, r3, 344637278; CHECK-P9-NEXT:    xscvuxdsp f0, f07279; CHECK-P9-NEXT:    oris r3, r3, 17280; CHECK-P9-NEXT:    stfs f0, 0(r3)7281; CHECK-P9-NEXT:    blr7282;7283; CHECK-P8-LABEL: st_not_disjoint32_uint8_t_float:7284; CHECK-P8:       # %bb.0: # %entry7285; CHECK-P8-NEXT:    mtfprwz f0, r47286; CHECK-P8-NEXT:    ori r3, r3, 344637287; CHECK-P8-NEXT:    oris r3, r3, 17288; CHECK-P8-NEXT:    xscvuxdsp f0, f07289; CHECK-P8-NEXT:    stfs f0, 0(r3)7290; CHECK-P8-NEXT:    blr7291entry:7292  %conv = uitofp i8 %str to float7293  %or = or i64 %ptr, 999997294  %0 = inttoptr i64 %or to ptr7295  store float %conv, ptr %0, align 47296  ret void7297}7298 7299; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7300define dso_local void @st_disjoint_align32_uint8_t_float(i64 %ptr, i8 zeroext %str) {7301; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_float:7302; CHECK-P10:       # %bb.0: # %entry7303; CHECK-P10-NEXT:    mtfprwz f0, r47304; CHECK-P10-NEXT:    lis r5, -152647305; CHECK-P10-NEXT:    and r3, r3, r57306; CHECK-P10-NEXT:    xscvuxdsp f0, f07307; CHECK-P10-NEXT:    pstfs f0, 999990000(r3), 07308; CHECK-P10-NEXT:    blr7309;7310; CHECK-P9-LABEL: st_disjoint_align32_uint8_t_float:7311; CHECK-P9:       # %bb.0: # %entry7312; CHECK-P9-NEXT:    mtfprwz f0, r47313; CHECK-P9-NEXT:    lis r5, -152647314; CHECK-P9-NEXT:    lis r4, 152587315; CHECK-P9-NEXT:    xscvuxdsp f0, f07316; CHECK-P9-NEXT:    and r3, r3, r57317; CHECK-P9-NEXT:    ori r4, r4, 417127318; CHECK-P9-NEXT:    stfsx f0, r3, r47319; CHECK-P9-NEXT:    blr7320;7321; CHECK-P8-LABEL: st_disjoint_align32_uint8_t_float:7322; CHECK-P8:       # %bb.0: # %entry7323; CHECK-P8-NEXT:    mtfprwz f0, r47324; CHECK-P8-NEXT:    lis r5, -152647325; CHECK-P8-NEXT:    lis r4, 152587326; CHECK-P8-NEXT:    and r3, r3, r57327; CHECK-P8-NEXT:    ori r4, r4, 417127328; CHECK-P8-NEXT:    xscvuxdsp f0, f07329; CHECK-P8-NEXT:    stfsx f0, r3, r47330; CHECK-P8-NEXT:    blr7331entry:7332  %and = and i64 %ptr, -10003415047333  %conv = uitofp i8 %str to float7334  %or = or i64 %and, 9999900007335  %0 = inttoptr i64 %or to ptr7336  store float %conv, ptr %0, align 167337  ret void7338}7339 7340; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7341define dso_local void @st_not_disjoint64_uint8_t_float(i64 %ptr, i8 zeroext %str) {7342; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_float:7343; CHECK-P10:       # %bb.0: # %entry7344; CHECK-P10-NEXT:    mtfprwz f0, r47345; CHECK-P10-NEXT:    pli r4, 2327346; CHECK-P10-NEXT:    pli r5, 35675873297347; CHECK-P10-NEXT:    rldimi r5, r4, 32, 07348; CHECK-P10-NEXT:    xscvuxdsp f0, f07349; CHECK-P10-NEXT:    or r3, r3, r57350; CHECK-P10-NEXT:    stfs f0, 0(r3)7351; CHECK-P10-NEXT:    blr7352;7353; CHECK-P9-LABEL: st_not_disjoint64_uint8_t_float:7354; CHECK-P9:       # %bb.0: # %entry7355; CHECK-P9-NEXT:    mtfprwz f0, r47356; CHECK-P9-NEXT:    li r4, 297357; CHECK-P9-NEXT:    rldic r4, r4, 35, 247358; CHECK-P9-NEXT:    xscvuxdsp f0, f07359; CHECK-P9-NEXT:    oris r4, r4, 544377360; CHECK-P9-NEXT:    ori r4, r4, 40977361; CHECK-P9-NEXT:    or r3, r3, r47362; CHECK-P9-NEXT:    stfs f0, 0(r3)7363; CHECK-P9-NEXT:    blr7364;7365; CHECK-P8-LABEL: st_not_disjoint64_uint8_t_float:7366; CHECK-P8:       # %bb.0: # %entry7367; CHECK-P8-NEXT:    mtfprwz f0, r47368; CHECK-P8-NEXT:    li r4, 297369; CHECK-P8-NEXT:    rldic r4, r4, 35, 247370; CHECK-P8-NEXT:    oris r4, r4, 544377371; CHECK-P8-NEXT:    xscvuxdsp f0, f07372; CHECK-P8-NEXT:    ori r4, r4, 40977373; CHECK-P8-NEXT:    or r3, r3, r47374; CHECK-P8-NEXT:    stfs f0, 0(r3)7375; CHECK-P8-NEXT:    blr7376entry:7377  %conv = uitofp i8 %str to float7378  %or = or i64 %ptr, 10000000000017379  %0 = inttoptr i64 %or to ptr7380  store float %conv, ptr %0, align 47381  ret void7382}7383 7384; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7385define dso_local void @st_disjoint_align64_uint8_t_float(i64 %ptr, i8 zeroext %str) {7386; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_float:7387; CHECK-P10:       # %bb.0: # %entry7388; CHECK-P10-NEXT:    mtfprwz f0, r47389; CHECK-P10-NEXT:    pli r4, 2441406257390; CHECK-P10-NEXT:    rldicr r3, r3, 0, 237391; CHECK-P10-NEXT:    rldic r4, r4, 12, 247392; CHECK-P10-NEXT:    xscvuxdsp f0, f07393; CHECK-P10-NEXT:    stfsx f0, r3, r47394; CHECK-P10-NEXT:    blr7395;7396; CHECK-P9-LABEL: st_disjoint_align64_uint8_t_float:7397; CHECK-P9:       # %bb.0: # %entry7398; CHECK-P9-NEXT:    mtfprwz f0, r47399; CHECK-P9-NEXT:    lis r4, 37257400; CHECK-P9-NEXT:    rldicr r3, r3, 0, 237401; CHECK-P9-NEXT:    xscvuxdsp f0, f07402; CHECK-P9-NEXT:    ori r4, r4, 190257403; CHECK-P9-NEXT:    rldic r4, r4, 12, 247404; CHECK-P9-NEXT:    stfsx f0, r3, r47405; CHECK-P9-NEXT:    blr7406;7407; CHECK-P8-LABEL: st_disjoint_align64_uint8_t_float:7408; CHECK-P8:       # %bb.0: # %entry7409; CHECK-P8-NEXT:    mtfprwz f0, r47410; CHECK-P8-NEXT:    lis r4, 37257411; CHECK-P8-NEXT:    rldicr r3, r3, 0, 237412; CHECK-P8-NEXT:    ori r4, r4, 190257413; CHECK-P8-NEXT:    rldic r4, r4, 12, 247414; CHECK-P8-NEXT:    xscvuxdsp f0, f07415; CHECK-P8-NEXT:    stfsx f0, r3, r47416; CHECK-P8-NEXT:    blr7417entry:7418  %and = and i64 %ptr, -10995116277767419  %conv = uitofp i8 %str to float7420  %or = or i64 %and, 10000000000007421  %0 = inttoptr i64 %or to ptr7422  store float %conv, ptr %0, align 40967423  ret void7424}7425 7426; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7427define dso_local void @st_cst_align16_uint8_t_float(i8 zeroext %str) {7428; CHECK-LABEL: st_cst_align16_uint8_t_float:7429; CHECK:       # %bb.0: # %entry7430; CHECK-NEXT:    mtfprwz f0, r37431; CHECK-NEXT:    xscvuxdsp f0, f07432; CHECK-NEXT:    stfs f0, 4080(0)7433; CHECK-NEXT:    blr7434entry:7435  %conv = uitofp i8 %str to float7436  store float %conv, ptr inttoptr (i64 4080 to ptr), align 167437  ret void7438}7439 7440; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7441define dso_local void @st_cst_align32_uint8_t_float(i8 zeroext %str) {7442; CHECK-LABEL: st_cst_align32_uint8_t_float:7443; CHECK:       # %bb.0: # %entry7444; CHECK-NEXT:    mtfprwz f0, r37445; CHECK-NEXT:    lis r3, 1537446; CHECK-NEXT:    xscvuxdsp f0, f07447; CHECK-NEXT:    stfs f0, -27108(r3)7448; CHECK-NEXT:    blr7449entry:7450  %conv = uitofp i8 %str to float7451  store float %conv, ptr inttoptr (i64 9999900 to ptr), align 47452  ret void7453}7454 7455; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7456define dso_local void @st_cst_align64_uint8_t_float(i8 zeroext %str) {7457; CHECK-P10-LABEL: st_cst_align64_uint8_t_float:7458; CHECK-P10:       # %bb.0: # %entry7459; CHECK-P10-NEXT:    mtfprwz f0, r37460; CHECK-P10-NEXT:    pli r3, 2441406257461; CHECK-P10-NEXT:    rldic r3, r3, 12, 247462; CHECK-P10-NEXT:    xscvuxdsp f0, f07463; CHECK-P10-NEXT:    stfs f0, 0(r3)7464; CHECK-P10-NEXT:    blr7465;7466; CHECK-P9-LABEL: st_cst_align64_uint8_t_float:7467; CHECK-P9:       # %bb.0: # %entry7468; CHECK-P9-NEXT:    mtfprwz f0, r37469; CHECK-P9-NEXT:    lis r3, 37257470; CHECK-P9-NEXT:    xscvuxdsp f0, f07471; CHECK-P9-NEXT:    ori r3, r3, 190257472; CHECK-P9-NEXT:    rldic r3, r3, 12, 247473; CHECK-P9-NEXT:    stfs f0, 0(r3)7474; CHECK-P9-NEXT:    blr7475;7476; CHECK-P8-LABEL: st_cst_align64_uint8_t_float:7477; CHECK-P8:       # %bb.0: # %entry7478; CHECK-P8-NEXT:    mtfprwz f0, r37479; CHECK-P8-NEXT:    lis r3, 37257480; CHECK-P8-NEXT:    ori r3, r3, 190257481; CHECK-P8-NEXT:    rldic r3, r3, 12, 247482; CHECK-P8-NEXT:    xscvuxdsp f0, f07483; CHECK-P8-NEXT:    stfs f0, 0(r3)7484; CHECK-P8-NEXT:    blr7485entry:7486  %conv = uitofp i8 %str to float7487  store float %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967488  ret void7489}7490 7491; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7492define dso_local void @st_0_uint8_t_double(i64 %ptr, i8 zeroext %str) {7493; CHECK-LABEL: st_0_uint8_t_double:7494; CHECK:       # %bb.0: # %entry7495; CHECK-NEXT:    mtfprwz f0, r47496; CHECK-NEXT:    xscvuxddp f0, f07497; CHECK-NEXT:    stfd f0, 0(r3)7498; CHECK-NEXT:    blr7499entry:7500  %conv = uitofp i8 %str to double7501  %0 = inttoptr i64 %ptr to ptr7502  store double %conv, ptr %0, align 87503  ret void7504}7505 7506; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7507define dso_local void @st_align16_uint8_t_double(ptr nocapture %ptr, i8 zeroext %str) {7508; CHECK-LABEL: st_align16_uint8_t_double:7509; CHECK:       # %bb.0: # %entry7510; CHECK-NEXT:    mtfprwz f0, r47511; CHECK-NEXT:    xscvuxddp f0, f07512; CHECK-NEXT:    stfd f0, 8(r3)7513; CHECK-NEXT:    blr7514entry:7515  %conv = uitofp i8 %str to double7516  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87517  store double %conv, ptr %add.ptr, align 87518  ret void7519}7520 7521; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7522define dso_local void @st_align32_uint8_t_double(ptr nocapture %ptr, i8 zeroext %str) {7523; CHECK-P10-LABEL: st_align32_uint8_t_double:7524; CHECK-P10:       # %bb.0: # %entry7525; CHECK-P10-NEXT:    mtfprwz f0, r47526; CHECK-P10-NEXT:    xscvuxddp f0, f07527; CHECK-P10-NEXT:    pstfd f0, 99999000(r3), 07528; CHECK-P10-NEXT:    blr7529;7530; CHECK-P9-LABEL: st_align32_uint8_t_double:7531; CHECK-P9:       # %bb.0: # %entry7532; CHECK-P9-NEXT:    mtfprwz f0, r47533; CHECK-P9-NEXT:    lis r4, 15257534; CHECK-P9-NEXT:    xscvuxddp f0, f07535; CHECK-P9-NEXT:    ori r4, r4, 566007536; CHECK-P9-NEXT:    stfdx f0, r3, r47537; CHECK-P9-NEXT:    blr7538;7539; CHECK-P8-LABEL: st_align32_uint8_t_double:7540; CHECK-P8:       # %bb.0: # %entry7541; CHECK-P8-NEXT:    mtfprwz f0, r47542; CHECK-P8-NEXT:    lis r4, 15257543; CHECK-P8-NEXT:    ori r4, r4, 566007544; CHECK-P8-NEXT:    xscvuxddp f0, f07545; CHECK-P8-NEXT:    stfdx f0, r3, r47546; CHECK-P8-NEXT:    blr7547entry:7548  %conv = uitofp i8 %str to double7549  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007550  store double %conv, ptr %add.ptr, align 87551  ret void7552}7553 7554; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7555define dso_local void @st_align64_uint8_t_double(ptr nocapture %ptr, i8 zeroext %str) {7556; CHECK-P10-LABEL: st_align64_uint8_t_double:7557; CHECK-P10:       # %bb.0: # %entry7558; CHECK-P10-NEXT:    mtfprwz f0, r47559; CHECK-P10-NEXT:    pli r4, 2441406257560; CHECK-P10-NEXT:    rldic r4, r4, 12, 247561; CHECK-P10-NEXT:    xscvuxddp f0, f07562; CHECK-P10-NEXT:    stfdx f0, r3, r47563; CHECK-P10-NEXT:    blr7564;7565; CHECK-P9-LABEL: st_align64_uint8_t_double:7566; CHECK-P9:       # %bb.0: # %entry7567; CHECK-P9-NEXT:    mtfprwz f0, r47568; CHECK-P9-NEXT:    lis r4, 37257569; CHECK-P9-NEXT:    xscvuxddp f0, f07570; CHECK-P9-NEXT:    ori r4, r4, 190257571; CHECK-P9-NEXT:    rldic r4, r4, 12, 247572; CHECK-P9-NEXT:    stfdx f0, r3, r47573; CHECK-P9-NEXT:    blr7574;7575; CHECK-P8-LABEL: st_align64_uint8_t_double:7576; CHECK-P8:       # %bb.0: # %entry7577; CHECK-P8-NEXT:    mtfprwz f0, r47578; CHECK-P8-NEXT:    lis r4, 37257579; CHECK-P8-NEXT:    ori r4, r4, 190257580; CHECK-P8-NEXT:    rldic r4, r4, 12, 247581; CHECK-P8-NEXT:    xscvuxddp f0, f07582; CHECK-P8-NEXT:    stfdx f0, r3, r47583; CHECK-P8-NEXT:    blr7584entry:7585  %conv = uitofp i8 %str to double7586  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007587  store double %conv, ptr %add.ptr, align 87588  ret void7589}7590 7591; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7592define dso_local void @st_reg_uint8_t_double(ptr nocapture %ptr, i64 %off, i8 zeroext %str) {7593; CHECK-LABEL: st_reg_uint8_t_double:7594; CHECK:       # %bb.0: # %entry7595; CHECK-NEXT:    mtfprwz f0, r57596; CHECK-NEXT:    xscvuxddp f0, f07597; CHECK-NEXT:    stfdx f0, r3, r47598; CHECK-NEXT:    blr7599entry:7600  %conv = uitofp i8 %str to double7601  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7602  store double %conv, ptr %add.ptr, align 87603  ret void7604}7605 7606; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7607define dso_local void @st_or1_uint8_t_double(i64 %ptr, i8 zeroext %off, i8 zeroext %str) {7608; CHECK-LABEL: st_or1_uint8_t_double:7609; CHECK:       # %bb.0: # %entry7610; CHECK-NEXT:    mtfprwz f0, r57611; CHECK-NEXT:    or r3, r4, r37612; CHECK-NEXT:    xscvuxddp f0, f07613; CHECK-NEXT:    stfd f0, 0(r3)7614; CHECK-NEXT:    blr7615entry:7616  %conv = uitofp i8 %str to double7617  %conv1 = zext i8 %off to i647618  %or = or i64 %conv1, %ptr7619  %0 = inttoptr i64 %or to ptr7620  store double %conv, ptr %0, align 87621  ret void7622}7623 7624; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7625define dso_local void @st_not_disjoint16_uint8_t_double(i64 %ptr, i8 zeroext %str) {7626; CHECK-LABEL: st_not_disjoint16_uint8_t_double:7627; CHECK:       # %bb.0: # %entry7628; CHECK-NEXT:    mtfprwz f0, r47629; CHECK-NEXT:    ori r3, r3, 67630; CHECK-NEXT:    xscvuxddp f0, f07631; CHECK-NEXT:    stfd f0, 0(r3)7632; CHECK-NEXT:    blr7633entry:7634  %conv = uitofp i8 %str to double7635  %or = or i64 %ptr, 67636  %0 = inttoptr i64 %or to ptr7637  store double %conv, ptr %0, align 87638  ret void7639}7640 7641; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7642define dso_local void @st_disjoint_align16_uint8_t_double(i64 %ptr, i8 zeroext %str) {7643; CHECK-LABEL: st_disjoint_align16_uint8_t_double:7644; CHECK:       # %bb.0: # %entry7645; CHECK-NEXT:    mtfprwz f0, r47646; CHECK-NEXT:    rldicr r3, r3, 0, 517647; CHECK-NEXT:    xscvuxddp f0, f07648; CHECK-NEXT:    stfd f0, 24(r3)7649; CHECK-NEXT:    blr7650entry:7651  %and = and i64 %ptr, -40967652  %conv = uitofp i8 %str to double7653  %or = or i64 %and, 247654  %0 = inttoptr i64 %or to ptr7655  store double %conv, ptr %0, align 87656  ret void7657}7658 7659; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7660define dso_local void @st_not_disjoint32_uint8_t_double(i64 %ptr, i8 zeroext %str) {7661; CHECK-P10-LABEL: st_not_disjoint32_uint8_t_double:7662; CHECK-P10:       # %bb.0: # %entry7663; CHECK-P10-NEXT:    mtfprwz f0, r47664; CHECK-P10-NEXT:    ori r3, r3, 344637665; CHECK-P10-NEXT:    oris r3, r3, 17666; CHECK-P10-NEXT:    xscvuxddp f0, f07667; CHECK-P10-NEXT:    stfd f0, 0(r3)7668; CHECK-P10-NEXT:    blr7669;7670; CHECK-P9-LABEL: st_not_disjoint32_uint8_t_double:7671; CHECK-P9:       # %bb.0: # %entry7672; CHECK-P9-NEXT:    mtfprwz f0, r47673; CHECK-P9-NEXT:    ori r3, r3, 344637674; CHECK-P9-NEXT:    xscvuxddp f0, f07675; CHECK-P9-NEXT:    oris r3, r3, 17676; CHECK-P9-NEXT:    stfd f0, 0(r3)7677; CHECK-P9-NEXT:    blr7678;7679; CHECK-P8-LABEL: st_not_disjoint32_uint8_t_double:7680; CHECK-P8:       # %bb.0: # %entry7681; CHECK-P8-NEXT:    mtfprwz f0, r47682; CHECK-P8-NEXT:    ori r3, r3, 344637683; CHECK-P8-NEXT:    oris r3, r3, 17684; CHECK-P8-NEXT:    xscvuxddp f0, f07685; CHECK-P8-NEXT:    stfd f0, 0(r3)7686; CHECK-P8-NEXT:    blr7687entry:7688  %conv = uitofp i8 %str to double7689  %or = or i64 %ptr, 999997690  %0 = inttoptr i64 %or to ptr7691  store double %conv, ptr %0, align 87692  ret void7693}7694 7695; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7696define dso_local void @st_disjoint_align32_uint8_t_double(i64 %ptr, i8 zeroext %str) {7697; CHECK-P10-LABEL: st_disjoint_align32_uint8_t_double:7698; CHECK-P10:       # %bb.0: # %entry7699; CHECK-P10-NEXT:    mtfprwz f0, r47700; CHECK-P10-NEXT:    lis r5, -152647701; CHECK-P10-NEXT:    and r3, r3, r57702; CHECK-P10-NEXT:    xscvuxddp f0, f07703; CHECK-P10-NEXT:    pstfd f0, 999990000(r3), 07704; CHECK-P10-NEXT:    blr7705;7706; CHECK-P9-LABEL: st_disjoint_align32_uint8_t_double:7707; CHECK-P9:       # %bb.0: # %entry7708; CHECK-P9-NEXT:    mtfprwz f0, r47709; CHECK-P9-NEXT:    lis r5, -152647710; CHECK-P9-NEXT:    lis r4, 152587711; CHECK-P9-NEXT:    xscvuxddp f0, f07712; CHECK-P9-NEXT:    and r3, r3, r57713; CHECK-P9-NEXT:    ori r4, r4, 417127714; CHECK-P9-NEXT:    stfdx f0, r3, r47715; CHECK-P9-NEXT:    blr7716;7717; CHECK-P8-LABEL: st_disjoint_align32_uint8_t_double:7718; CHECK-P8:       # %bb.0: # %entry7719; CHECK-P8-NEXT:    mtfprwz f0, r47720; CHECK-P8-NEXT:    lis r5, -152647721; CHECK-P8-NEXT:    lis r4, 152587722; CHECK-P8-NEXT:    and r3, r3, r57723; CHECK-P8-NEXT:    ori r4, r4, 417127724; CHECK-P8-NEXT:    xscvuxddp f0, f07725; CHECK-P8-NEXT:    stfdx f0, r3, r47726; CHECK-P8-NEXT:    blr7727entry:7728  %and = and i64 %ptr, -10003415047729  %conv = uitofp i8 %str to double7730  %or = or i64 %and, 9999900007731  %0 = inttoptr i64 %or to ptr7732  store double %conv, ptr %0, align 167733  ret void7734}7735 7736; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7737define dso_local void @st_not_disjoint64_uint8_t_double(i64 %ptr, i8 zeroext %str) {7738; CHECK-P10-LABEL: st_not_disjoint64_uint8_t_double:7739; CHECK-P10:       # %bb.0: # %entry7740; CHECK-P10-NEXT:    mtfprwz f0, r47741; CHECK-P10-NEXT:    pli r4, 2327742; CHECK-P10-NEXT:    pli r5, 35675873297743; CHECK-P10-NEXT:    rldimi r5, r4, 32, 07744; CHECK-P10-NEXT:    xscvuxddp f0, f07745; CHECK-P10-NEXT:    or r3, r3, r57746; CHECK-P10-NEXT:    stfd f0, 0(r3)7747; CHECK-P10-NEXT:    blr7748;7749; CHECK-P9-LABEL: st_not_disjoint64_uint8_t_double:7750; CHECK-P9:       # %bb.0: # %entry7751; CHECK-P9-NEXT:    mtfprwz f0, r47752; CHECK-P9-NEXT:    li r4, 297753; CHECK-P9-NEXT:    rldic r4, r4, 35, 247754; CHECK-P9-NEXT:    xscvuxddp f0, f07755; CHECK-P9-NEXT:    oris r4, r4, 544377756; CHECK-P9-NEXT:    ori r4, r4, 40977757; CHECK-P9-NEXT:    or r3, r3, r47758; CHECK-P9-NEXT:    stfd f0, 0(r3)7759; CHECK-P9-NEXT:    blr7760;7761; CHECK-P8-LABEL: st_not_disjoint64_uint8_t_double:7762; CHECK-P8:       # %bb.0: # %entry7763; CHECK-P8-NEXT:    mtfprwz f0, r47764; CHECK-P8-NEXT:    li r4, 297765; CHECK-P8-NEXT:    rldic r4, r4, 35, 247766; CHECK-P8-NEXT:    oris r4, r4, 544377767; CHECK-P8-NEXT:    xscvuxddp f0, f07768; CHECK-P8-NEXT:    ori r4, r4, 40977769; CHECK-P8-NEXT:    or r3, r3, r47770; CHECK-P8-NEXT:    stfd f0, 0(r3)7771; CHECK-P8-NEXT:    blr7772entry:7773  %conv = uitofp i8 %str to double7774  %or = or i64 %ptr, 10000000000017775  %0 = inttoptr i64 %or to ptr7776  store double %conv, ptr %0, align 87777  ret void7778}7779 7780; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7781define dso_local void @st_disjoint_align64_uint8_t_double(i64 %ptr, i8 zeroext %str) {7782; CHECK-P10-LABEL: st_disjoint_align64_uint8_t_double:7783; CHECK-P10:       # %bb.0: # %entry7784; CHECK-P10-NEXT:    mtfprwz f0, r47785; CHECK-P10-NEXT:    pli r4, 2441406257786; CHECK-P10-NEXT:    rldicr r3, r3, 0, 237787; CHECK-P10-NEXT:    rldic r4, r4, 12, 247788; CHECK-P10-NEXT:    xscvuxddp f0, f07789; CHECK-P10-NEXT:    stfdx f0, r3, r47790; CHECK-P10-NEXT:    blr7791;7792; CHECK-P9-LABEL: st_disjoint_align64_uint8_t_double:7793; CHECK-P9:       # %bb.0: # %entry7794; CHECK-P9-NEXT:    mtfprwz f0, r47795; CHECK-P9-NEXT:    lis r4, 37257796; CHECK-P9-NEXT:    rldicr r3, r3, 0, 237797; CHECK-P9-NEXT:    xscvuxddp f0, f07798; CHECK-P9-NEXT:    ori r4, r4, 190257799; CHECK-P9-NEXT:    rldic r4, r4, 12, 247800; CHECK-P9-NEXT:    stfdx f0, r3, r47801; CHECK-P9-NEXT:    blr7802;7803; CHECK-P8-LABEL: st_disjoint_align64_uint8_t_double:7804; CHECK-P8:       # %bb.0: # %entry7805; CHECK-P8-NEXT:    mtfprwz f0, r47806; CHECK-P8-NEXT:    lis r4, 37257807; CHECK-P8-NEXT:    rldicr r3, r3, 0, 237808; CHECK-P8-NEXT:    ori r4, r4, 190257809; CHECK-P8-NEXT:    rldic r4, r4, 12, 247810; CHECK-P8-NEXT:    xscvuxddp f0, f07811; CHECK-P8-NEXT:    stfdx f0, r3, r47812; CHECK-P8-NEXT:    blr7813entry:7814  %and = and i64 %ptr, -10995116277767815  %conv = uitofp i8 %str to double7816  %or = or i64 %and, 10000000000007817  %0 = inttoptr i64 %or to ptr7818  store double %conv, ptr %0, align 40967819  ret void7820}7821 7822; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7823define dso_local void @st_cst_align16_uint8_t_double(i8 zeroext %str) {7824; CHECK-LABEL: st_cst_align16_uint8_t_double:7825; CHECK:       # %bb.0: # %entry7826; CHECK-NEXT:    mtfprwz f0, r37827; CHECK-NEXT:    xscvuxddp f0, f07828; CHECK-NEXT:    stfd f0, 4080(0)7829; CHECK-NEXT:    blr7830entry:7831  %conv = uitofp i8 %str to double7832  store double %conv, ptr inttoptr (i64 4080 to ptr), align 167833  ret void7834}7835 7836; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7837define dso_local void @st_cst_align32_uint8_t_double(i8 zeroext %str) {7838; CHECK-LABEL: st_cst_align32_uint8_t_double:7839; CHECK:       # %bb.0: # %entry7840; CHECK-NEXT:    mtfprwz f0, r37841; CHECK-NEXT:    lis r3, 1537842; CHECK-NEXT:    xscvuxddp f0, f07843; CHECK-NEXT:    stfd f0, -27108(r3)7844; CHECK-NEXT:    blr7845entry:7846  %conv = uitofp i8 %str to double7847  store double %conv, ptr inttoptr (i64 9999900 to ptr), align 87848  ret void7849}7850 7851; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7852define dso_local void @st_cst_align64_uint8_t_double(i8 zeroext %str) {7853; CHECK-P10-LABEL: st_cst_align64_uint8_t_double:7854; CHECK-P10:       # %bb.0: # %entry7855; CHECK-P10-NEXT:    mtfprwz f0, r37856; CHECK-P10-NEXT:    pli r3, 2441406257857; CHECK-P10-NEXT:    rldic r3, r3, 12, 247858; CHECK-P10-NEXT:    xscvuxddp f0, f07859; CHECK-P10-NEXT:    stfd f0, 0(r3)7860; CHECK-P10-NEXT:    blr7861;7862; CHECK-P9-LABEL: st_cst_align64_uint8_t_double:7863; CHECK-P9:       # %bb.0: # %entry7864; CHECK-P9-NEXT:    mtfprwz f0, r37865; CHECK-P9-NEXT:    lis r3, 37257866; CHECK-P9-NEXT:    xscvuxddp f0, f07867; CHECK-P9-NEXT:    ori r3, r3, 190257868; CHECK-P9-NEXT:    rldic r3, r3, 12, 247869; CHECK-P9-NEXT:    stfd f0, 0(r3)7870; CHECK-P9-NEXT:    blr7871;7872; CHECK-P8-LABEL: st_cst_align64_uint8_t_double:7873; CHECK-P8:       # %bb.0: # %entry7874; CHECK-P8-NEXT:    mtfprwz f0, r37875; CHECK-P8-NEXT:    lis r3, 37257876; CHECK-P8-NEXT:    ori r3, r3, 190257877; CHECK-P8-NEXT:    rldic r3, r3, 12, 247878; CHECK-P8-NEXT:    xscvuxddp f0, f07879; CHECK-P8-NEXT:    stfd f0, 0(r3)7880; CHECK-P8-NEXT:    blr7881entry:7882  %conv = uitofp i8 %str to double7883  store double %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967884  ret void7885}7886 7887; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7888define dso_local void @st_0_int8_t_uint16_t(i64 %ptr, i8 signext %str) {7889; CHECK-LABEL: st_0_int8_t_uint16_t:7890; CHECK:       # %bb.0: # %entry7891; CHECK-NEXT:    sth r4, 0(r3)7892; CHECK-NEXT:    blr7893entry:7894  %conv = sext i8 %str to i167895  %0 = inttoptr i64 %ptr to ptr7896  store i16 %conv, ptr %0, align 27897  ret void7898}7899 7900; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7901define dso_local void @st_align16_int8_t_uint16_t(ptr nocapture %ptr, i8 signext %str) {7902; CHECK-LABEL: st_align16_int8_t_uint16_t:7903; CHECK:       # %bb.0: # %entry7904; CHECK-NEXT:    sth r4, 8(r3)7905; CHECK-NEXT:    blr7906entry:7907  %conv = sext i8 %str to i167908  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87909  store i16 %conv, ptr %add.ptr, align 27910  ret void7911}7912 7913; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7914define dso_local void @st_align32_int8_t_uint16_t(ptr nocapture %ptr, i8 signext %str) {7915; CHECK-P10-LABEL: st_align32_int8_t_uint16_t:7916; CHECK-P10:       # %bb.0: # %entry7917; CHECK-P10-NEXT:    psth r4, 99999000(r3), 07918; CHECK-P10-NEXT:    blr7919;7920; CHECK-PREP10-LABEL: st_align32_int8_t_uint16_t:7921; CHECK-PREP10:       # %bb.0: # %entry7922; CHECK-PREP10-NEXT:    lis r5, 15257923; CHECK-PREP10-NEXT:    ori r5, r5, 566007924; CHECK-PREP10-NEXT:    sthx r4, r3, r57925; CHECK-PREP10-NEXT:    blr7926entry:7927  %conv = sext i8 %str to i167928  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007929  store i16 %conv, ptr %add.ptr, align 27930  ret void7931}7932 7933; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7934define dso_local void @st_align64_int8_t_uint16_t(ptr nocapture %ptr, i8 signext %str) {7935; CHECK-P10-LABEL: st_align64_int8_t_uint16_t:7936; CHECK-P10:       # %bb.0: # %entry7937; CHECK-P10-NEXT:    pli r5, 2441406257938; CHECK-P10-NEXT:    rldic r5, r5, 12, 247939; CHECK-P10-NEXT:    sthx r4, r3, r57940; CHECK-P10-NEXT:    blr7941;7942; CHECK-PREP10-LABEL: st_align64_int8_t_uint16_t:7943; CHECK-PREP10:       # %bb.0: # %entry7944; CHECK-PREP10-NEXT:    lis r5, 37257945; CHECK-PREP10-NEXT:    ori r5, r5, 190257946; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 247947; CHECK-PREP10-NEXT:    sthx r4, r3, r57948; CHECK-PREP10-NEXT:    blr7949entry:7950  %conv = sext i8 %str to i167951  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007952  store i16 %conv, ptr %add.ptr, align 27953  ret void7954}7955 7956; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7957define dso_local void @st_reg_int8_t_uint16_t(ptr nocapture %ptr, i64 %off, i8 signext %str) {7958; CHECK-LABEL: st_reg_int8_t_uint16_t:7959; CHECK:       # %bb.0: # %entry7960; CHECK-NEXT:    sthx r5, r3, r47961; CHECK-NEXT:    blr7962entry:7963  %conv = sext i8 %str to i167964  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7965  store i16 %conv, ptr %add.ptr, align 27966  ret void7967}7968 7969; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7970define dso_local void @st_or1_int8_t_uint16_t(i64 %ptr, i8 zeroext %off, i8 signext %str) {7971; CHECK-LABEL: st_or1_int8_t_uint16_t:7972; CHECK:       # %bb.0: # %entry7973; CHECK-NEXT:    or r3, r4, r37974; CHECK-NEXT:    sth r5, 0(r3)7975; CHECK-NEXT:    blr7976entry:7977  %conv = sext i8 %str to i167978  %conv1 = zext i8 %off to i647979  %or = or i64 %conv1, %ptr7980  %0 = inttoptr i64 %or to ptr7981  store i16 %conv, ptr %0, align 27982  ret void7983}7984 7985; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7986define dso_local void @st_not_disjoint16_int8_t_uint16_t(i64 %ptr, i8 signext %str) {7987; CHECK-LABEL: st_not_disjoint16_int8_t_uint16_t:7988; CHECK:       # %bb.0: # %entry7989; CHECK-NEXT:    ori r3, r3, 67990; CHECK-NEXT:    sth r4, 0(r3)7991; CHECK-NEXT:    blr7992entry:7993  %conv = sext i8 %str to i167994  %or = or i64 %ptr, 67995  %0 = inttoptr i64 %or to ptr7996  store i16 %conv, ptr %0, align 27997  ret void7998}7999 8000; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8001define dso_local void @st_disjoint_align16_int8_t_uint16_t(i64 %ptr, i8 signext %str) {8002; CHECK-LABEL: st_disjoint_align16_int8_t_uint16_t:8003; CHECK:       # %bb.0: # %entry8004; CHECK-NEXT:    rldicr r3, r3, 0, 518005; CHECK-NEXT:    sth r4, 24(r3)8006; CHECK-NEXT:    blr8007entry:8008  %and = and i64 %ptr, -40968009  %conv = sext i8 %str to i168010  %or = or i64 %and, 248011  %0 = inttoptr i64 %or to ptr8012  store i16 %conv, ptr %0, align 88013  ret void8014}8015 8016; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8017define dso_local void @st_not_disjoint32_int8_t_uint16_t(i64 %ptr, i8 signext %str) {8018; CHECK-LABEL: st_not_disjoint32_int8_t_uint16_t:8019; CHECK:       # %bb.0: # %entry8020; CHECK-NEXT:    ori r3, r3, 344638021; CHECK-NEXT:    oris r3, r3, 18022; CHECK-NEXT:    sth r4, 0(r3)8023; CHECK-NEXT:    blr8024entry:8025  %conv = sext i8 %str to i168026  %or = or i64 %ptr, 999998027  %0 = inttoptr i64 %or to ptr8028  store i16 %conv, ptr %0, align 28029  ret void8030}8031 8032; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8033define dso_local void @st_disjoint_align32_int8_t_uint16_t(i64 %ptr, i8 signext %str) {8034; CHECK-P10-LABEL: st_disjoint_align32_int8_t_uint16_t:8035; CHECK-P10:       # %bb.0: # %entry8036; CHECK-P10-NEXT:    lis r5, -152648037; CHECK-P10-NEXT:    and r3, r3, r58038; CHECK-P10-NEXT:    psth r4, 999990000(r3), 08039; CHECK-P10-NEXT:    blr8040;8041; CHECK-PREP10-LABEL: st_disjoint_align32_int8_t_uint16_t:8042; CHECK-PREP10:       # %bb.0: # %entry8043; CHECK-PREP10-NEXT:    lis r5, -152648044; CHECK-PREP10-NEXT:    and r3, r3, r58045; CHECK-PREP10-NEXT:    lis r5, 152588046; CHECK-PREP10-NEXT:    ori r5, r5, 417128047; CHECK-PREP10-NEXT:    sthx r4, r3, r58048; CHECK-PREP10-NEXT:    blr8049entry:8050  %and = and i64 %ptr, -10003415048051  %conv = sext i8 %str to i168052  %or = or i64 %and, 9999900008053  %0 = inttoptr i64 %or to ptr8054  store i16 %conv, ptr %0, align 168055  ret void8056}8057 8058; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8059define dso_local void @st_not_disjoint64_int8_t_uint16_t(i64 %ptr, i8 signext %str) {8060; CHECK-P10-LABEL: st_not_disjoint64_int8_t_uint16_t:8061; CHECK-P10:       # %bb.0: # %entry8062; CHECK-P10-NEXT:    pli r5, 2328063; CHECK-P10-NEXT:    pli r6, 35675873298064; CHECK-P10-NEXT:    rldimi r6, r5, 32, 08065; CHECK-P10-NEXT:    or r3, r3, r68066; CHECK-P10-NEXT:    sth r4, 0(r3)8067; CHECK-P10-NEXT:    blr8068;8069; CHECK-PREP10-LABEL: st_not_disjoint64_int8_t_uint16_t:8070; CHECK-PREP10:       # %bb.0: # %entry8071; CHECK-PREP10-NEXT:    li r5, 298072; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 248073; CHECK-PREP10-NEXT:    oris r5, r5, 544378074; CHECK-PREP10-NEXT:    ori r5, r5, 40978075; CHECK-PREP10-NEXT:    or r3, r3, r58076; CHECK-PREP10-NEXT:    sth r4, 0(r3)8077; CHECK-PREP10-NEXT:    blr8078entry:8079  %conv = sext i8 %str to i168080  %or = or i64 %ptr, 10000000000018081  %0 = inttoptr i64 %or to ptr8082  store i16 %conv, ptr %0, align 28083  ret void8084}8085 8086; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8087define dso_local void @st_disjoint_align64_int8_t_uint16_t(i64 %ptr, i8 signext %str) {8088; CHECK-P10-LABEL: st_disjoint_align64_int8_t_uint16_t:8089; CHECK-P10:       # %bb.0: # %entry8090; CHECK-P10-NEXT:    pli r5, 2441406258091; CHECK-P10-NEXT:    rldicr r3, r3, 0, 238092; CHECK-P10-NEXT:    rldic r5, r5, 12, 248093; CHECK-P10-NEXT:    sthx r4, r3, r58094; CHECK-P10-NEXT:    blr8095;8096; CHECK-PREP10-LABEL: st_disjoint_align64_int8_t_uint16_t:8097; CHECK-PREP10:       # %bb.0: # %entry8098; CHECK-PREP10-NEXT:    lis r5, 37258099; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 238100; CHECK-PREP10-NEXT:    ori r5, r5, 190258101; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 248102; CHECK-PREP10-NEXT:    sthx r4, r3, r58103; CHECK-PREP10-NEXT:    blr8104entry:8105  %and = and i64 %ptr, -10995116277768106  %conv = sext i8 %str to i168107  %or = or i64 %and, 10000000000008108  %0 = inttoptr i64 %or to ptr8109  store i16 %conv, ptr %0, align 40968110  ret void8111}8112 8113; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8114define dso_local void @st_cst_align16_int8_t_uint16_t(i8 signext %str) {8115; CHECK-LABEL: st_cst_align16_int8_t_uint16_t:8116; CHECK:       # %bb.0: # %entry8117; CHECK-NEXT:    sth r3, 4080(0)8118; CHECK-NEXT:    blr8119entry:8120  %conv = sext i8 %str to i168121  store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 168122  ret void8123}8124 8125; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8126define dso_local void @st_cst_align32_int8_t_uint16_t(i8 signext %str) {8127; CHECK-LABEL: st_cst_align32_int8_t_uint16_t:8128; CHECK:       # %bb.0: # %entry8129; CHECK-NEXT:    lis r4, 1538130; CHECK-NEXT:    sth r3, -27108(r4)8131; CHECK-NEXT:    blr8132entry:8133  %conv = sext i8 %str to i168134  store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 48135  ret void8136}8137 8138; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8139define dso_local void @st_cst_align64_int8_t_uint16_t(i8 signext %str) {8140; CHECK-P10-LABEL: st_cst_align64_int8_t_uint16_t:8141; CHECK-P10:       # %bb.0: # %entry8142; CHECK-P10-NEXT:    pli r4, 2441406258143; CHECK-P10-NEXT:    rldic r4, r4, 12, 248144; CHECK-P10-NEXT:    sth r3, 0(r4)8145; CHECK-P10-NEXT:    blr8146;8147; CHECK-PREP10-LABEL: st_cst_align64_int8_t_uint16_t:8148; CHECK-PREP10:       # %bb.0: # %entry8149; CHECK-PREP10-NEXT:    lis r4, 37258150; CHECK-PREP10-NEXT:    ori r4, r4, 190258151; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 248152; CHECK-PREP10-NEXT:    sth r3, 0(r4)8153; CHECK-PREP10-NEXT:    blr8154entry:8155  %conv = sext i8 %str to i168156  store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40968157  ret void8158}8159 8160; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8161define dso_local void @st_0_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8162; CHECK-LABEL: st_0_int8_t_uint32_t:8163; CHECK:       # %bb.0: # %entry8164; CHECK-NEXT:    stw r4, 0(r3)8165; CHECK-NEXT:    blr8166entry:8167  %conv = sext i8 %str to i328168  %0 = inttoptr i64 %ptr to ptr8169  store i32 %conv, ptr %0, align 48170  ret void8171}8172 8173; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8174define dso_local void @st_align16_int8_t_uint32_t(ptr nocapture %ptr, i8 signext %str) {8175; CHECK-LABEL: st_align16_int8_t_uint32_t:8176; CHECK:       # %bb.0: # %entry8177; CHECK-NEXT:    stw r4, 8(r3)8178; CHECK-NEXT:    blr8179entry:8180  %conv = sext i8 %str to i328181  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 88182  store i32 %conv, ptr %add.ptr, align 48183  ret void8184}8185 8186; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8187define dso_local void @st_align32_int8_t_uint32_t(ptr nocapture %ptr, i8 signext %str) {8188; CHECK-P10-LABEL: st_align32_int8_t_uint32_t:8189; CHECK-P10:       # %bb.0: # %entry8190; CHECK-P10-NEXT:    pstw r4, 99999000(r3), 08191; CHECK-P10-NEXT:    blr8192;8193; CHECK-PREP10-LABEL: st_align32_int8_t_uint32_t:8194; CHECK-PREP10:       # %bb.0: # %entry8195; CHECK-PREP10-NEXT:    lis r5, 15258196; CHECK-PREP10-NEXT:    ori r5, r5, 566008197; CHECK-PREP10-NEXT:    stwx r4, r3, r58198; CHECK-PREP10-NEXT:    blr8199entry:8200  %conv = sext i8 %str to i328201  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990008202  store i32 %conv, ptr %add.ptr, align 48203  ret void8204}8205 8206; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8207define dso_local void @st_align64_int8_t_uint32_t(ptr nocapture %ptr, i8 signext %str) {8208; CHECK-P10-LABEL: st_align64_int8_t_uint32_t:8209; CHECK-P10:       # %bb.0: # %entry8210; CHECK-P10-NEXT:    pli r5, 2441406258211; CHECK-P10-NEXT:    rldic r5, r5, 12, 248212; CHECK-P10-NEXT:    stwx r4, r3, r58213; CHECK-P10-NEXT:    blr8214;8215; CHECK-PREP10-LABEL: st_align64_int8_t_uint32_t:8216; CHECK-PREP10:       # %bb.0: # %entry8217; CHECK-PREP10-NEXT:    lis r5, 37258218; CHECK-PREP10-NEXT:    ori r5, r5, 190258219; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 248220; CHECK-PREP10-NEXT:    stwx r4, r3, r58221; CHECK-PREP10-NEXT:    blr8222entry:8223  %conv = sext i8 %str to i328224  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000008225  store i32 %conv, ptr %add.ptr, align 48226  ret void8227}8228 8229; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8230define dso_local void @st_reg_int8_t_uint32_t(ptr nocapture %ptr, i64 %off, i8 signext %str) {8231; CHECK-LABEL: st_reg_int8_t_uint32_t:8232; CHECK:       # %bb.0: # %entry8233; CHECK-NEXT:    stwx r5, r3, r48234; CHECK-NEXT:    blr8235entry:8236  %conv = sext i8 %str to i328237  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off8238  store i32 %conv, ptr %add.ptr, align 48239  ret void8240}8241 8242; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8243define dso_local void @st_or1_int8_t_uint32_t(i64 %ptr, i8 zeroext %off, i8 signext %str) {8244; CHECK-LABEL: st_or1_int8_t_uint32_t:8245; CHECK:       # %bb.0: # %entry8246; CHECK-NEXT:    or r3, r4, r38247; CHECK-NEXT:    stw r5, 0(r3)8248; CHECK-NEXT:    blr8249entry:8250  %conv = sext i8 %str to i328251  %conv1 = zext i8 %off to i648252  %or = or i64 %conv1, %ptr8253  %0 = inttoptr i64 %or to ptr8254  store i32 %conv, ptr %0, align 48255  ret void8256}8257 8258; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8259define dso_local void @st_not_disjoint16_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8260; CHECK-LABEL: st_not_disjoint16_int8_t_uint32_t:8261; CHECK:       # %bb.0: # %entry8262; CHECK-NEXT:    ori r3, r3, 68263; CHECK-NEXT:    stw r4, 0(r3)8264; CHECK-NEXT:    blr8265entry:8266  %conv = sext i8 %str to i328267  %or = or i64 %ptr, 68268  %0 = inttoptr i64 %or to ptr8269  store i32 %conv, ptr %0, align 48270  ret void8271}8272 8273; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8274define dso_local void @st_disjoint_align16_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8275; CHECK-LABEL: st_disjoint_align16_int8_t_uint32_t:8276; CHECK:       # %bb.0: # %entry8277; CHECK-NEXT:    rldicr r3, r3, 0, 518278; CHECK-NEXT:    stw r4, 24(r3)8279; CHECK-NEXT:    blr8280entry:8281  %and = and i64 %ptr, -40968282  %conv = sext i8 %str to i328283  %or = or i64 %and, 248284  %0 = inttoptr i64 %or to ptr8285  store i32 %conv, ptr %0, align 88286  ret void8287}8288 8289; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8290define dso_local void @st_not_disjoint32_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8291; CHECK-LABEL: st_not_disjoint32_int8_t_uint32_t:8292; CHECK:       # %bb.0: # %entry8293; CHECK-NEXT:    ori r3, r3, 344638294; CHECK-NEXT:    oris r3, r3, 18295; CHECK-NEXT:    stw r4, 0(r3)8296; CHECK-NEXT:    blr8297entry:8298  %conv = sext i8 %str to i328299  %or = or i64 %ptr, 999998300  %0 = inttoptr i64 %or to ptr8301  store i32 %conv, ptr %0, align 48302  ret void8303}8304 8305; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8306define dso_local void @st_disjoint_align32_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8307; CHECK-P10-LABEL: st_disjoint_align32_int8_t_uint32_t:8308; CHECK-P10:       # %bb.0: # %entry8309; CHECK-P10-NEXT:    lis r5, -152648310; CHECK-P10-NEXT:    and r3, r3, r58311; CHECK-P10-NEXT:    pstw r4, 999990000(r3), 08312; CHECK-P10-NEXT:    blr8313;8314; CHECK-PREP10-LABEL: st_disjoint_align32_int8_t_uint32_t:8315; CHECK-PREP10:       # %bb.0: # %entry8316; CHECK-PREP10-NEXT:    lis r5, -152648317; CHECK-PREP10-NEXT:    and r3, r3, r58318; CHECK-PREP10-NEXT:    lis r5, 152588319; CHECK-PREP10-NEXT:    ori r5, r5, 417128320; CHECK-PREP10-NEXT:    stwx r4, r3, r58321; CHECK-PREP10-NEXT:    blr8322entry:8323  %and = and i64 %ptr, -10003415048324  %conv = sext i8 %str to i328325  %or = or i64 %and, 9999900008326  %0 = inttoptr i64 %or to ptr8327  store i32 %conv, ptr %0, align 168328  ret void8329}8330 8331; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8332define dso_local void @st_not_disjoint64_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8333; CHECK-P10-LABEL: st_not_disjoint64_int8_t_uint32_t:8334; CHECK-P10:       # %bb.0: # %entry8335; CHECK-P10-NEXT:    pli r5, 2328336; CHECK-P10-NEXT:    pli r6, 35675873298337; CHECK-P10-NEXT:    rldimi r6, r5, 32, 08338; CHECK-P10-NEXT:    or r3, r3, r68339; CHECK-P10-NEXT:    stw r4, 0(r3)8340; CHECK-P10-NEXT:    blr8341;8342; CHECK-PREP10-LABEL: st_not_disjoint64_int8_t_uint32_t:8343; CHECK-PREP10:       # %bb.0: # %entry8344; CHECK-PREP10-NEXT:    li r5, 298345; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 248346; CHECK-PREP10-NEXT:    oris r5, r5, 544378347; CHECK-PREP10-NEXT:    ori r5, r5, 40978348; CHECK-PREP10-NEXT:    or r3, r3, r58349; CHECK-PREP10-NEXT:    stw r4, 0(r3)8350; CHECK-PREP10-NEXT:    blr8351entry:8352  %conv = sext i8 %str to i328353  %or = or i64 %ptr, 10000000000018354  %0 = inttoptr i64 %or to ptr8355  store i32 %conv, ptr %0, align 48356  ret void8357}8358 8359; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8360define dso_local void @st_disjoint_align64_int8_t_uint32_t(i64 %ptr, i8 signext %str) {8361; CHECK-P10-LABEL: st_disjoint_align64_int8_t_uint32_t:8362; CHECK-P10:       # %bb.0: # %entry8363; CHECK-P10-NEXT:    pli r5, 2441406258364; CHECK-P10-NEXT:    rldicr r3, r3, 0, 238365; CHECK-P10-NEXT:    rldic r5, r5, 12, 248366; CHECK-P10-NEXT:    stwx r4, r3, r58367; CHECK-P10-NEXT:    blr8368;8369; CHECK-PREP10-LABEL: st_disjoint_align64_int8_t_uint32_t:8370; CHECK-PREP10:       # %bb.0: # %entry8371; CHECK-PREP10-NEXT:    lis r5, 37258372; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 238373; CHECK-PREP10-NEXT:    ori r5, r5, 190258374; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 248375; CHECK-PREP10-NEXT:    stwx r4, r3, r58376; CHECK-PREP10-NEXT:    blr8377entry:8378  %and = and i64 %ptr, -10995116277768379  %conv = sext i8 %str to i328380  %or = or i64 %and, 10000000000008381  %0 = inttoptr i64 %or to ptr8382  store i32 %conv, ptr %0, align 40968383  ret void8384}8385 8386; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8387define dso_local void @st_cst_align16_int8_t_uint32_t(i8 signext %str) {8388; CHECK-LABEL: st_cst_align16_int8_t_uint32_t:8389; CHECK:       # %bb.0: # %entry8390; CHECK-NEXT:    stw r3, 4080(0)8391; CHECK-NEXT:    blr8392entry:8393  %conv = sext i8 %str to i328394  store i32 %conv, ptr inttoptr (i64 4080 to ptr), align 168395  ret void8396}8397 8398; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8399define dso_local void @st_cst_align32_int8_t_uint32_t(i8 signext %str) {8400; CHECK-LABEL: st_cst_align32_int8_t_uint32_t:8401; CHECK:       # %bb.0: # %entry8402; CHECK-NEXT:    lis r4, 1538403; CHECK-NEXT:    stw r3, -27108(r4)8404; CHECK-NEXT:    blr8405entry:8406  %conv = sext i8 %str to i328407  store i32 %conv, ptr inttoptr (i64 9999900 to ptr), align 48408  ret void8409}8410 8411; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8412define dso_local void @st_cst_align64_int8_t_uint32_t(i8 signext %str) {8413; CHECK-P10-LABEL: st_cst_align64_int8_t_uint32_t:8414; CHECK-P10:       # %bb.0: # %entry8415; CHECK-P10-NEXT:    pli r4, 2441406258416; CHECK-P10-NEXT:    rldic r4, r4, 12, 248417; CHECK-P10-NEXT:    stw r3, 0(r4)8418; CHECK-P10-NEXT:    blr8419;8420; CHECK-PREP10-LABEL: st_cst_align64_int8_t_uint32_t:8421; CHECK-PREP10:       # %bb.0: # %entry8422; CHECK-PREP10-NEXT:    lis r4, 37258423; CHECK-PREP10-NEXT:    ori r4, r4, 190258424; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 248425; CHECK-PREP10-NEXT:    stw r3, 0(r4)8426; CHECK-PREP10-NEXT:    blr8427entry:8428  %conv = sext i8 %str to i328429  store i32 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40968430  ret void8431}8432 8433; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8434define dso_local void @st_0_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8435; CHECK-LABEL: st_0_int8_t_uint64_t:8436; CHECK:       # %bb.0: # %entry8437; CHECK-NEXT:    std r4, 0(r3)8438; CHECK-NEXT:    blr8439entry:8440  %conv = sext i8 %str to i648441  %0 = inttoptr i64 %ptr to ptr8442  store i64 %conv, ptr %0, align 88443  ret void8444}8445 8446; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8447define dso_local void @st_align16_int8_t_uint64_t(ptr nocapture %ptr, i8 signext %str) {8448; CHECK-LABEL: st_align16_int8_t_uint64_t:8449; CHECK:       # %bb.0: # %entry8450; CHECK-NEXT:    std r4, 8(r3)8451; CHECK-NEXT:    blr8452entry:8453  %conv = sext i8 %str to i648454  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 88455  store i64 %conv, ptr %add.ptr, align 88456  ret void8457}8458 8459; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8460define dso_local void @st_align32_int8_t_uint64_t(ptr nocapture %ptr, i8 signext %str) {8461; CHECK-P10-LABEL: st_align32_int8_t_uint64_t:8462; CHECK-P10:       # %bb.0: # %entry8463; CHECK-P10-NEXT:    pstd r4, 99999000(r3), 08464; CHECK-P10-NEXT:    blr8465;8466; CHECK-PREP10-LABEL: st_align32_int8_t_uint64_t:8467; CHECK-PREP10:       # %bb.0: # %entry8468; CHECK-PREP10-NEXT:    lis r5, 15258469; CHECK-PREP10-NEXT:    ori r5, r5, 566008470; CHECK-PREP10-NEXT:    stdx r4, r3, r58471; CHECK-PREP10-NEXT:    blr8472entry:8473  %conv = sext i8 %str to i648474  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990008475  store i64 %conv, ptr %add.ptr, align 88476  ret void8477}8478 8479; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8480define dso_local void @st_align64_int8_t_uint64_t(ptr nocapture %ptr, i8 signext %str) {8481; CHECK-P10-LABEL: st_align64_int8_t_uint64_t:8482; CHECK-P10:       # %bb.0: # %entry8483; CHECK-P10-NEXT:    pli r5, 2441406258484; CHECK-P10-NEXT:    rldic r5, r5, 12, 248485; CHECK-P10-NEXT:    stdx r4, r3, r58486; CHECK-P10-NEXT:    blr8487;8488; CHECK-PREP10-LABEL: st_align64_int8_t_uint64_t:8489; CHECK-PREP10:       # %bb.0: # %entry8490; CHECK-PREP10-NEXT:    lis r5, 37258491; CHECK-PREP10-NEXT:    ori r5, r5, 190258492; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 248493; CHECK-PREP10-NEXT:    stdx r4, r3, r58494; CHECK-PREP10-NEXT:    blr8495entry:8496  %conv = sext i8 %str to i648497  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000008498  store i64 %conv, ptr %add.ptr, align 88499  ret void8500}8501 8502; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8503define dso_local void @st_reg_int8_t_uint64_t(ptr nocapture %ptr, i64 %off, i8 signext %str) {8504; CHECK-LABEL: st_reg_int8_t_uint64_t:8505; CHECK:       # %bb.0: # %entry8506; CHECK-NEXT:    stdx r5, r3, r48507; CHECK-NEXT:    blr8508entry:8509  %conv = sext i8 %str to i648510  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off8511  store i64 %conv, ptr %add.ptr, align 88512  ret void8513}8514 8515; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8516define dso_local void @st_or1_int8_t_uint64_t(i64 %ptr, i8 zeroext %off, i8 signext %str) {8517; CHECK-LABEL: st_or1_int8_t_uint64_t:8518; CHECK:       # %bb.0: # %entry8519; CHECK-NEXT:    or r3, r4, r38520; CHECK-NEXT:    std r5, 0(r3)8521; CHECK-NEXT:    blr8522entry:8523  %conv = sext i8 %str to i648524  %conv1 = zext i8 %off to i648525  %or = or i64 %conv1, %ptr8526  %0 = inttoptr i64 %or to ptr8527  store i64 %conv, ptr %0, align 88528  ret void8529}8530 8531; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8532define dso_local void @st_not_disjoint16_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8533; CHECK-LABEL: st_not_disjoint16_int8_t_uint64_t:8534; CHECK:       # %bb.0: # %entry8535; CHECK-NEXT:    ori r3, r3, 68536; CHECK-NEXT:    std r4, 0(r3)8537; CHECK-NEXT:    blr8538entry:8539  %conv = sext i8 %str to i648540  %or = or i64 %ptr, 68541  %0 = inttoptr i64 %or to ptr8542  store i64 %conv, ptr %0, align 88543  ret void8544}8545 8546; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8547define dso_local void @st_disjoint_align16_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8548; CHECK-LABEL: st_disjoint_align16_int8_t_uint64_t:8549; CHECK:       # %bb.0: # %entry8550; CHECK-NEXT:    rldicr r3, r3, 0, 518551; CHECK-NEXT:    std r4, 24(r3)8552; CHECK-NEXT:    blr8553entry:8554  %and = and i64 %ptr, -40968555  %conv = sext i8 %str to i648556  %or = or i64 %and, 248557  %0 = inttoptr i64 %or to ptr8558  store i64 %conv, ptr %0, align 88559  ret void8560}8561 8562; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8563define dso_local void @st_not_disjoint32_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8564; CHECK-LABEL: st_not_disjoint32_int8_t_uint64_t:8565; CHECK:       # %bb.0: # %entry8566; CHECK-NEXT:    ori r3, r3, 344638567; CHECK-NEXT:    oris r3, r3, 18568; CHECK-NEXT:    std r4, 0(r3)8569; CHECK-NEXT:    blr8570entry:8571  %conv = sext i8 %str to i648572  %or = or i64 %ptr, 999998573  %0 = inttoptr i64 %or to ptr8574  store i64 %conv, ptr %0, align 88575  ret void8576}8577 8578; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8579define dso_local void @st_disjoint_align32_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8580; CHECK-P10-LABEL: st_disjoint_align32_int8_t_uint64_t:8581; CHECK-P10:       # %bb.0: # %entry8582; CHECK-P10-NEXT:    lis r5, -152648583; CHECK-P10-NEXT:    and r3, r3, r58584; CHECK-P10-NEXT:    pstd r4, 999990000(r3), 08585; CHECK-P10-NEXT:    blr8586;8587; CHECK-PREP10-LABEL: st_disjoint_align32_int8_t_uint64_t:8588; CHECK-PREP10:       # %bb.0: # %entry8589; CHECK-PREP10-NEXT:    lis r5, -152648590; CHECK-PREP10-NEXT:    and r3, r3, r58591; CHECK-PREP10-NEXT:    lis r5, 152588592; CHECK-PREP10-NEXT:    ori r5, r5, 417128593; CHECK-PREP10-NEXT:    stdx r4, r3, r58594; CHECK-PREP10-NEXT:    blr8595entry:8596  %and = and i64 %ptr, -10003415048597  %conv = sext i8 %str to i648598  %or = or i64 %and, 9999900008599  %0 = inttoptr i64 %or to ptr8600  store i64 %conv, ptr %0, align 168601  ret void8602}8603 8604; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8605define dso_local void @st_not_disjoint64_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8606; CHECK-P10-LABEL: st_not_disjoint64_int8_t_uint64_t:8607; CHECK-P10:       # %bb.0: # %entry8608; CHECK-P10-NEXT:    pli r5, 2328609; CHECK-P10-NEXT:    pli r6, 35675873298610; CHECK-P10-NEXT:    rldimi r6, r5, 32, 08611; CHECK-P10-NEXT:    or r3, r3, r68612; CHECK-P10-NEXT:    std r4, 0(r3)8613; CHECK-P10-NEXT:    blr8614;8615; CHECK-PREP10-LABEL: st_not_disjoint64_int8_t_uint64_t:8616; CHECK-PREP10:       # %bb.0: # %entry8617; CHECK-PREP10-NEXT:    li r5, 298618; CHECK-PREP10-NEXT:    rldic r5, r5, 35, 248619; CHECK-PREP10-NEXT:    oris r5, r5, 544378620; CHECK-PREP10-NEXT:    ori r5, r5, 40978621; CHECK-PREP10-NEXT:    or r3, r3, r58622; CHECK-PREP10-NEXT:    std r4, 0(r3)8623; CHECK-PREP10-NEXT:    blr8624entry:8625  %conv = sext i8 %str to i648626  %or = or i64 %ptr, 10000000000018627  %0 = inttoptr i64 %or to ptr8628  store i64 %conv, ptr %0, align 88629  ret void8630}8631 8632; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8633define dso_local void @st_disjoint_align64_int8_t_uint64_t(i64 %ptr, i8 signext %str) {8634; CHECK-P10-LABEL: st_disjoint_align64_int8_t_uint64_t:8635; CHECK-P10:       # %bb.0: # %entry8636; CHECK-P10-NEXT:    pli r5, 2441406258637; CHECK-P10-NEXT:    rldicr r3, r3, 0, 238638; CHECK-P10-NEXT:    rldic r5, r5, 12, 248639; CHECK-P10-NEXT:    stdx r4, r3, r58640; CHECK-P10-NEXT:    blr8641;8642; CHECK-PREP10-LABEL: st_disjoint_align64_int8_t_uint64_t:8643; CHECK-PREP10:       # %bb.0: # %entry8644; CHECK-PREP10-NEXT:    lis r5, 37258645; CHECK-PREP10-NEXT:    rldicr r3, r3, 0, 238646; CHECK-PREP10-NEXT:    ori r5, r5, 190258647; CHECK-PREP10-NEXT:    rldic r5, r5, 12, 248648; CHECK-PREP10-NEXT:    stdx r4, r3, r58649; CHECK-PREP10-NEXT:    blr8650entry:8651  %and = and i64 %ptr, -10995116277768652  %conv = sext i8 %str to i648653  %or = or i64 %and, 10000000000008654  %0 = inttoptr i64 %or to ptr8655  store i64 %conv, ptr %0, align 40968656  ret void8657}8658 8659; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8660define dso_local void @st_cst_align16_int8_t_uint64_t(i8 signext %str) {8661; CHECK-LABEL: st_cst_align16_int8_t_uint64_t:8662; CHECK:       # %bb.0: # %entry8663; CHECK-NEXT:    std r3, 4080(0)8664; CHECK-NEXT:    blr8665entry:8666  %conv = sext i8 %str to i648667  store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 168668  ret void8669}8670 8671; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8672define dso_local void @st_cst_align32_int8_t_uint64_t(i8 signext %str) {8673; CHECK-LABEL: st_cst_align32_int8_t_uint64_t:8674; CHECK:       # %bb.0: # %entry8675; CHECK-NEXT:    lis r4, 1538676; CHECK-NEXT:    std r3, -27108(r4)8677; CHECK-NEXT:    blr8678entry:8679  %conv = sext i8 %str to i648680  store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 88681  ret void8682}8683 8684; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8685define dso_local void @st_cst_align64_int8_t_uint64_t(i8 signext %str) {8686; CHECK-P10-LABEL: st_cst_align64_int8_t_uint64_t:8687; CHECK-P10:       # %bb.0: # %entry8688; CHECK-P10-NEXT:    pli r4, 2441406258689; CHECK-P10-NEXT:    rldic r4, r4, 12, 248690; CHECK-P10-NEXT:    std r3, 0(r4)8691; CHECK-P10-NEXT:    blr8692;8693; CHECK-PREP10-LABEL: st_cst_align64_int8_t_uint64_t:8694; CHECK-PREP10:       # %bb.0: # %entry8695; CHECK-PREP10-NEXT:    lis r4, 37258696; CHECK-PREP10-NEXT:    ori r4, r4, 190258697; CHECK-PREP10-NEXT:    rldic r4, r4, 12, 248698; CHECK-PREP10-NEXT:    std r3, 0(r4)8699; CHECK-PREP10-NEXT:    blr8700entry:8701  %conv = sext i8 %str to i648702  store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40968703  ret void8704}8705 8706; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8707define dso_local void @st_0_int8_t_float(i64 %ptr, i8 signext %str) {8708; CHECK-LABEL: st_0_int8_t_float:8709; CHECK:       # %bb.0: # %entry8710; CHECK-NEXT:    mtfprwa f0, r48711; CHECK-NEXT:    xscvsxdsp f0, f08712; CHECK-NEXT:    stfs f0, 0(r3)8713; CHECK-NEXT:    blr8714entry:8715  %conv = sitofp i8 %str to float8716  %0 = inttoptr i64 %ptr to ptr8717  store float %conv, ptr %0, align 48718  ret void8719}8720 8721; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8722define dso_local void @st_align16_int8_t_float(ptr nocapture %ptr, i8 signext %str) {8723; CHECK-LABEL: st_align16_int8_t_float:8724; CHECK:       # %bb.0: # %entry8725; CHECK-NEXT:    mtfprwa f0, r48726; CHECK-NEXT:    xscvsxdsp f0, f08727; CHECK-NEXT:    stfs f0, 8(r3)8728; CHECK-NEXT:    blr8729entry:8730  %conv = sitofp i8 %str to float8731  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 88732  store float %conv, ptr %add.ptr, align 48733  ret void8734}8735 8736; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8737define dso_local void @st_align32_int8_t_float(ptr nocapture %ptr, i8 signext %str) {8738; CHECK-P10-LABEL: st_align32_int8_t_float:8739; CHECK-P10:       # %bb.0: # %entry8740; CHECK-P10-NEXT:    mtfprwa f0, r48741; CHECK-P10-NEXT:    xscvsxdsp f0, f08742; CHECK-P10-NEXT:    pstfs f0, 99999000(r3), 08743; CHECK-P10-NEXT:    blr8744;8745; CHECK-P9-LABEL: st_align32_int8_t_float:8746; CHECK-P9:       # %bb.0: # %entry8747; CHECK-P9-NEXT:    mtfprwa f0, r48748; CHECK-P9-NEXT:    lis r4, 15258749; CHECK-P9-NEXT:    xscvsxdsp f0, f08750; CHECK-P9-NEXT:    ori r4, r4, 566008751; CHECK-P9-NEXT:    stfsx f0, r3, r48752; CHECK-P9-NEXT:    blr8753;8754; CHECK-P8-LABEL: st_align32_int8_t_float:8755; CHECK-P8:       # %bb.0: # %entry8756; CHECK-P8-NEXT:    mtfprwa f0, r48757; CHECK-P8-NEXT:    lis r4, 15258758; CHECK-P8-NEXT:    ori r4, r4, 566008759; CHECK-P8-NEXT:    xscvsxdsp f0, f08760; CHECK-P8-NEXT:    stfsx f0, r3, r48761; CHECK-P8-NEXT:    blr8762entry:8763  %conv = sitofp i8 %str to float8764  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990008765  store float %conv, ptr %add.ptr, align 48766  ret void8767}8768 8769; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8770define dso_local void @st_align64_int8_t_float(ptr nocapture %ptr, i8 signext %str) {8771; CHECK-P10-LABEL: st_align64_int8_t_float:8772; CHECK-P10:       # %bb.0: # %entry8773; CHECK-P10-NEXT:    mtfprwa f0, r48774; CHECK-P10-NEXT:    pli r4, 2441406258775; CHECK-P10-NEXT:    rldic r4, r4, 12, 248776; CHECK-P10-NEXT:    xscvsxdsp f0, f08777; CHECK-P10-NEXT:    stfsx f0, r3, r48778; CHECK-P10-NEXT:    blr8779;8780; CHECK-P9-LABEL: st_align64_int8_t_float:8781; CHECK-P9:       # %bb.0: # %entry8782; CHECK-P9-NEXT:    mtfprwa f0, r48783; CHECK-P9-NEXT:    lis r4, 37258784; CHECK-P9-NEXT:    xscvsxdsp f0, f08785; CHECK-P9-NEXT:    ori r4, r4, 190258786; CHECK-P9-NEXT:    rldic r4, r4, 12, 248787; CHECK-P9-NEXT:    stfsx f0, r3, r48788; CHECK-P9-NEXT:    blr8789;8790; CHECK-P8-LABEL: st_align64_int8_t_float:8791; CHECK-P8:       # %bb.0: # %entry8792; CHECK-P8-NEXT:    mtfprwa f0, r48793; CHECK-P8-NEXT:    lis r4, 37258794; CHECK-P8-NEXT:    ori r4, r4, 190258795; CHECK-P8-NEXT:    rldic r4, r4, 12, 248796; CHECK-P8-NEXT:    xscvsxdsp f0, f08797; CHECK-P8-NEXT:    stfsx f0, r3, r48798; CHECK-P8-NEXT:    blr8799entry:8800  %conv = sitofp i8 %str to float8801  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000008802  store float %conv, ptr %add.ptr, align 48803  ret void8804}8805 8806; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8807define dso_local void @st_reg_int8_t_float(ptr nocapture %ptr, i64 %off, i8 signext %str) {8808; CHECK-LABEL: st_reg_int8_t_float:8809; CHECK:       # %bb.0: # %entry8810; CHECK-NEXT:    mtfprwa f0, r58811; CHECK-NEXT:    xscvsxdsp f0, f08812; CHECK-NEXT:    stfsx f0, r3, r48813; CHECK-NEXT:    blr8814entry:8815  %conv = sitofp i8 %str to float8816  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off8817  store float %conv, ptr %add.ptr, align 48818  ret void8819}8820 8821; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8822define dso_local void @st_or1_int8_t_float(i64 %ptr, i8 zeroext %off, i8 signext %str) {8823; CHECK-LABEL: st_or1_int8_t_float:8824; CHECK:       # %bb.0: # %entry8825; CHECK-NEXT:    mtfprwa f0, r58826; CHECK-NEXT:    or r3, r4, r38827; CHECK-NEXT:    xscvsxdsp f0, f08828; CHECK-NEXT:    stfs f0, 0(r3)8829; CHECK-NEXT:    blr8830entry:8831  %conv = sitofp i8 %str to float8832  %conv1 = zext i8 %off to i648833  %or = or i64 %conv1, %ptr8834  %0 = inttoptr i64 %or to ptr8835  store float %conv, ptr %0, align 48836  ret void8837}8838 8839; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8840define dso_local void @st_not_disjoint16_int8_t_float(i64 %ptr, i8 signext %str) {8841; CHECK-LABEL: st_not_disjoint16_int8_t_float:8842; CHECK:       # %bb.0: # %entry8843; CHECK-NEXT:    mtfprwa f0, r48844; CHECK-NEXT:    ori r3, r3, 68845; CHECK-NEXT:    xscvsxdsp f0, f08846; CHECK-NEXT:    stfs f0, 0(r3)8847; CHECK-NEXT:    blr8848entry:8849  %conv = sitofp i8 %str to float8850  %or = or i64 %ptr, 68851  %0 = inttoptr i64 %or to ptr8852  store float %conv, ptr %0, align 48853  ret void8854}8855 8856; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8857define dso_local void @st_disjoint_align16_int8_t_float(i64 %ptr, i8 signext %str) {8858; CHECK-LABEL: st_disjoint_align16_int8_t_float:8859; CHECK:       # %bb.0: # %entry8860; CHECK-NEXT:    mtfprwa f0, r48861; CHECK-NEXT:    rldicr r3, r3, 0, 518862; CHECK-NEXT:    xscvsxdsp f0, f08863; CHECK-NEXT:    stfs f0, 24(r3)8864; CHECK-NEXT:    blr8865entry:8866  %and = and i64 %ptr, -40968867  %conv = sitofp i8 %str to float8868  %or = or i64 %and, 248869  %0 = inttoptr i64 %or to ptr8870  store float %conv, ptr %0, align 88871  ret void8872}8873 8874; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8875define dso_local void @st_not_disjoint32_int8_t_float(i64 %ptr, i8 signext %str) {8876; CHECK-P10-LABEL: st_not_disjoint32_int8_t_float:8877; CHECK-P10:       # %bb.0: # %entry8878; CHECK-P10-NEXT:    mtfprwa f0, r48879; CHECK-P10-NEXT:    ori r3, r3, 344638880; CHECK-P10-NEXT:    oris r3, r3, 18881; CHECK-P10-NEXT:    xscvsxdsp f0, f08882; CHECK-P10-NEXT:    stfs f0, 0(r3)8883; CHECK-P10-NEXT:    blr8884;8885; CHECK-P9-LABEL: st_not_disjoint32_int8_t_float:8886; CHECK-P9:       # %bb.0: # %entry8887; CHECK-P9-NEXT:    mtfprwa f0, r48888; CHECK-P9-NEXT:    ori r3, r3, 344638889; CHECK-P9-NEXT:    xscvsxdsp f0, f08890; CHECK-P9-NEXT:    oris r3, r3, 18891; CHECK-P9-NEXT:    stfs f0, 0(r3)8892; CHECK-P9-NEXT:    blr8893;8894; CHECK-P8-LABEL: st_not_disjoint32_int8_t_float:8895; CHECK-P8:       # %bb.0: # %entry8896; CHECK-P8-NEXT:    mtfprwa f0, r48897; CHECK-P8-NEXT:    ori r3, r3, 344638898; CHECK-P8-NEXT:    oris r3, r3, 18899; CHECK-P8-NEXT:    xscvsxdsp f0, f08900; CHECK-P8-NEXT:    stfs f0, 0(r3)8901; CHECK-P8-NEXT:    blr8902entry:8903  %conv = sitofp i8 %str to float8904  %or = or i64 %ptr, 999998905  %0 = inttoptr i64 %or to ptr8906  store float %conv, ptr %0, align 48907  ret void8908}8909 8910; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8911define dso_local void @st_disjoint_align32_int8_t_float(i64 %ptr, i8 signext %str) {8912; CHECK-P10-LABEL: st_disjoint_align32_int8_t_float:8913; CHECK-P10:       # %bb.0: # %entry8914; CHECK-P10-NEXT:    mtfprwa f0, r48915; CHECK-P10-NEXT:    lis r5, -152648916; CHECK-P10-NEXT:    and r3, r3, r58917; CHECK-P10-NEXT:    xscvsxdsp f0, f08918; CHECK-P10-NEXT:    pstfs f0, 999990000(r3), 08919; CHECK-P10-NEXT:    blr8920;8921; CHECK-P9-LABEL: st_disjoint_align32_int8_t_float:8922; CHECK-P9:       # %bb.0: # %entry8923; CHECK-P9-NEXT:    mtfprwa f0, r48924; CHECK-P9-NEXT:    lis r5, -152648925; CHECK-P9-NEXT:    lis r4, 152588926; CHECK-P9-NEXT:    xscvsxdsp f0, f08927; CHECK-P9-NEXT:    and r3, r3, r58928; CHECK-P9-NEXT:    ori r4, r4, 417128929; CHECK-P9-NEXT:    stfsx f0, r3, r48930; CHECK-P9-NEXT:    blr8931;8932; CHECK-P8-LABEL: st_disjoint_align32_int8_t_float:8933; CHECK-P8:       # %bb.0: # %entry8934; CHECK-P8-NEXT:    mtfprwa f0, r48935; CHECK-P8-NEXT:    lis r5, -152648936; CHECK-P8-NEXT:    lis r4, 152588937; CHECK-P8-NEXT:    and r3, r3, r58938; CHECK-P8-NEXT:    ori r4, r4, 417128939; CHECK-P8-NEXT:    xscvsxdsp f0, f08940; CHECK-P8-NEXT:    stfsx f0, r3, r48941; CHECK-P8-NEXT:    blr8942entry:8943  %and = and i64 %ptr, -10003415048944  %conv = sitofp i8 %str to float8945  %or = or i64 %and, 9999900008946  %0 = inttoptr i64 %or to ptr8947  store float %conv, ptr %0, align 168948  ret void8949}8950 8951; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8952define dso_local void @st_not_disjoint64_int8_t_float(i64 %ptr, i8 signext %str) {8953; CHECK-P10-LABEL: st_not_disjoint64_int8_t_float:8954; CHECK-P10:       # %bb.0: # %entry8955; CHECK-P10-NEXT:    mtfprwa f0, r48956; CHECK-P10-NEXT:    pli r4, 2328957; CHECK-P10-NEXT:    pli r5, 35675873298958; CHECK-P10-NEXT:    rldimi r5, r4, 32, 08959; CHECK-P10-NEXT:    xscvsxdsp f0, f08960; CHECK-P10-NEXT:    or r3, r3, r58961; CHECK-P10-NEXT:    stfs f0, 0(r3)8962; CHECK-P10-NEXT:    blr8963;8964; CHECK-P9-LABEL: st_not_disjoint64_int8_t_float:8965; CHECK-P9:       # %bb.0: # %entry8966; CHECK-P9-NEXT:    mtfprwa f0, r48967; CHECK-P9-NEXT:    li r4, 298968; CHECK-P9-NEXT:    rldic r4, r4, 35, 248969; CHECK-P9-NEXT:    xscvsxdsp f0, f08970; CHECK-P9-NEXT:    oris r4, r4, 544378971; CHECK-P9-NEXT:    ori r4, r4, 40978972; CHECK-P9-NEXT:    or r3, r3, r48973; CHECK-P9-NEXT:    stfs f0, 0(r3)8974; CHECK-P9-NEXT:    blr8975;8976; CHECK-P8-LABEL: st_not_disjoint64_int8_t_float:8977; CHECK-P8:       # %bb.0: # %entry8978; CHECK-P8-NEXT:    mtfprwa f0, r48979; CHECK-P8-NEXT:    li r4, 298980; CHECK-P8-NEXT:    rldic r4, r4, 35, 248981; CHECK-P8-NEXT:    oris r4, r4, 544378982; CHECK-P8-NEXT:    xscvsxdsp f0, f08983; CHECK-P8-NEXT:    ori r4, r4, 40978984; CHECK-P8-NEXT:    or r3, r3, r48985; CHECK-P8-NEXT:    stfs f0, 0(r3)8986; CHECK-P8-NEXT:    blr8987entry:8988  %conv = sitofp i8 %str to float8989  %or = or i64 %ptr, 10000000000018990  %0 = inttoptr i64 %or to ptr8991  store float %conv, ptr %0, align 48992  ret void8993}8994 8995; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly8996define dso_local void @st_disjoint_align64_int8_t_float(i64 %ptr, i8 signext %str) {8997; CHECK-P10-LABEL: st_disjoint_align64_int8_t_float:8998; CHECK-P10:       # %bb.0: # %entry8999; CHECK-P10-NEXT:    mtfprwa f0, r49000; CHECK-P10-NEXT:    pli r4, 2441406259001; CHECK-P10-NEXT:    rldicr r3, r3, 0, 239002; CHECK-P10-NEXT:    rldic r4, r4, 12, 249003; CHECK-P10-NEXT:    xscvsxdsp f0, f09004; CHECK-P10-NEXT:    stfsx f0, r3, r49005; CHECK-P10-NEXT:    blr9006;9007; CHECK-P9-LABEL: st_disjoint_align64_int8_t_float:9008; CHECK-P9:       # %bb.0: # %entry9009; CHECK-P9-NEXT:    mtfprwa f0, r49010; CHECK-P9-NEXT:    lis r4, 37259011; CHECK-P9-NEXT:    rldicr r3, r3, 0, 239012; CHECK-P9-NEXT:    xscvsxdsp f0, f09013; CHECK-P9-NEXT:    ori r4, r4, 190259014; CHECK-P9-NEXT:    rldic r4, r4, 12, 249015; CHECK-P9-NEXT:    stfsx f0, r3, r49016; CHECK-P9-NEXT:    blr9017;9018; CHECK-P8-LABEL: st_disjoint_align64_int8_t_float:9019; CHECK-P8:       # %bb.0: # %entry9020; CHECK-P8-NEXT:    mtfprwa f0, r49021; CHECK-P8-NEXT:    lis r4, 37259022; CHECK-P8-NEXT:    rldicr r3, r3, 0, 239023; CHECK-P8-NEXT:    ori r4, r4, 190259024; CHECK-P8-NEXT:    rldic r4, r4, 12, 249025; CHECK-P8-NEXT:    xscvsxdsp f0, f09026; CHECK-P8-NEXT:    stfsx f0, r3, r49027; CHECK-P8-NEXT:    blr9028entry:9029  %and = and i64 %ptr, -10995116277769030  %conv = sitofp i8 %str to float9031  %or = or i64 %and, 10000000000009032  %0 = inttoptr i64 %or to ptr9033  store float %conv, ptr %0, align 40969034  ret void9035}9036 9037; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9038define dso_local void @st_cst_align16_int8_t_float(i8 signext %str) {9039; CHECK-LABEL: st_cst_align16_int8_t_float:9040; CHECK:       # %bb.0: # %entry9041; CHECK-NEXT:    mtfprwa f0, r39042; CHECK-NEXT:    xscvsxdsp f0, f09043; CHECK-NEXT:    stfs f0, 4080(0)9044; CHECK-NEXT:    blr9045entry:9046  %conv = sitofp i8 %str to float9047  store float %conv, ptr inttoptr (i64 4080 to ptr), align 169048  ret void9049}9050 9051; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9052define dso_local void @st_cst_align32_int8_t_float(i8 signext %str) {9053; CHECK-LABEL: st_cst_align32_int8_t_float:9054; CHECK:       # %bb.0: # %entry9055; CHECK-NEXT:    mtfprwa f0, r39056; CHECK-NEXT:    lis r3, 1539057; CHECK-NEXT:    xscvsxdsp f0, f09058; CHECK-NEXT:    stfs f0, -27108(r3)9059; CHECK-NEXT:    blr9060entry:9061  %conv = sitofp i8 %str to float9062  store float %conv, ptr inttoptr (i64 9999900 to ptr), align 49063  ret void9064}9065 9066; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9067define dso_local void @st_cst_align64_int8_t_float(i8 signext %str) {9068; CHECK-P10-LABEL: st_cst_align64_int8_t_float:9069; CHECK-P10:       # %bb.0: # %entry9070; CHECK-P10-NEXT:    mtfprwa f0, r39071; CHECK-P10-NEXT:    pli r3, 2441406259072; CHECK-P10-NEXT:    rldic r3, r3, 12, 249073; CHECK-P10-NEXT:    xscvsxdsp f0, f09074; CHECK-P10-NEXT:    stfs f0, 0(r3)9075; CHECK-P10-NEXT:    blr9076;9077; CHECK-P9-LABEL: st_cst_align64_int8_t_float:9078; CHECK-P9:       # %bb.0: # %entry9079; CHECK-P9-NEXT:    mtfprwa f0, r39080; CHECK-P9-NEXT:    lis r3, 37259081; CHECK-P9-NEXT:    xscvsxdsp f0, f09082; CHECK-P9-NEXT:    ori r3, r3, 190259083; CHECK-P9-NEXT:    rldic r3, r3, 12, 249084; CHECK-P9-NEXT:    stfs f0, 0(r3)9085; CHECK-P9-NEXT:    blr9086;9087; CHECK-P8-LABEL: st_cst_align64_int8_t_float:9088; CHECK-P8:       # %bb.0: # %entry9089; CHECK-P8-NEXT:    mtfprwa f0, r39090; CHECK-P8-NEXT:    lis r3, 37259091; CHECK-P8-NEXT:    ori r3, r3, 190259092; CHECK-P8-NEXT:    rldic r3, r3, 12, 249093; CHECK-P8-NEXT:    xscvsxdsp f0, f09094; CHECK-P8-NEXT:    stfs f0, 0(r3)9095; CHECK-P8-NEXT:    blr9096entry:9097  %conv = sitofp i8 %str to float9098  store float %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40969099  ret void9100}9101 9102; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9103define dso_local void @st_0_int8_t_double(i64 %ptr, i8 signext %str) {9104; CHECK-LABEL: st_0_int8_t_double:9105; CHECK:       # %bb.0: # %entry9106; CHECK-NEXT:    mtfprwa f0, r49107; CHECK-NEXT:    xscvsxddp f0, f09108; CHECK-NEXT:    stfd f0, 0(r3)9109; CHECK-NEXT:    blr9110entry:9111  %conv = sitofp i8 %str to double9112  %0 = inttoptr i64 %ptr to ptr9113  store double %conv, ptr %0, align 89114  ret void9115}9116 9117; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9118define dso_local void @st_align16_int8_t_double(ptr nocapture %ptr, i8 signext %str) {9119; CHECK-LABEL: st_align16_int8_t_double:9120; CHECK:       # %bb.0: # %entry9121; CHECK-NEXT:    mtfprwa f0, r49122; CHECK-NEXT:    xscvsxddp f0, f09123; CHECK-NEXT:    stfd f0, 8(r3)9124; CHECK-NEXT:    blr9125entry:9126  %conv = sitofp i8 %str to double9127  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 89128  store double %conv, ptr %add.ptr, align 89129  ret void9130}9131 9132; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9133define dso_local void @st_align32_int8_t_double(ptr nocapture %ptr, i8 signext %str) {9134; CHECK-P10-LABEL: st_align32_int8_t_double:9135; CHECK-P10:       # %bb.0: # %entry9136; CHECK-P10-NEXT:    mtfprwa f0, r49137; CHECK-P10-NEXT:    xscvsxddp f0, f09138; CHECK-P10-NEXT:    pstfd f0, 99999000(r3), 09139; CHECK-P10-NEXT:    blr9140;9141; CHECK-P9-LABEL: st_align32_int8_t_double:9142; CHECK-P9:       # %bb.0: # %entry9143; CHECK-P9-NEXT:    mtfprwa f0, r49144; CHECK-P9-NEXT:    lis r4, 15259145; CHECK-P9-NEXT:    xscvsxddp f0, f09146; CHECK-P9-NEXT:    ori r4, r4, 566009147; CHECK-P9-NEXT:    stfdx f0, r3, r49148; CHECK-P9-NEXT:    blr9149;9150; CHECK-P8-LABEL: st_align32_int8_t_double:9151; CHECK-P8:       # %bb.0: # %entry9152; CHECK-P8-NEXT:    mtfprwa f0, r49153; CHECK-P8-NEXT:    lis r4, 15259154; CHECK-P8-NEXT:    ori r4, r4, 566009155; CHECK-P8-NEXT:    xscvsxddp f0, f09156; CHECK-P8-NEXT:    stfdx f0, r3, r49157; CHECK-P8-NEXT:    blr9158entry:9159  %conv = sitofp i8 %str to double9160  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990009161  store double %conv, ptr %add.ptr, align 89162  ret void9163}9164 9165; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9166define dso_local void @st_align64_int8_t_double(ptr nocapture %ptr, i8 signext %str) {9167; CHECK-P10-LABEL: st_align64_int8_t_double:9168; CHECK-P10:       # %bb.0: # %entry9169; CHECK-P10-NEXT:    mtfprwa f0, r49170; CHECK-P10-NEXT:    pli r4, 2441406259171; CHECK-P10-NEXT:    rldic r4, r4, 12, 249172; CHECK-P10-NEXT:    xscvsxddp f0, f09173; CHECK-P10-NEXT:    stfdx f0, r3, r49174; CHECK-P10-NEXT:    blr9175;9176; CHECK-P9-LABEL: st_align64_int8_t_double:9177; CHECK-P9:       # %bb.0: # %entry9178; CHECK-P9-NEXT:    mtfprwa f0, r49179; CHECK-P9-NEXT:    lis r4, 37259180; CHECK-P9-NEXT:    xscvsxddp f0, f09181; CHECK-P9-NEXT:    ori r4, r4, 190259182; CHECK-P9-NEXT:    rldic r4, r4, 12, 249183; CHECK-P9-NEXT:    stfdx f0, r3, r49184; CHECK-P9-NEXT:    blr9185;9186; CHECK-P8-LABEL: st_align64_int8_t_double:9187; CHECK-P8:       # %bb.0: # %entry9188; CHECK-P8-NEXT:    mtfprwa f0, r49189; CHECK-P8-NEXT:    lis r4, 37259190; CHECK-P8-NEXT:    ori r4, r4, 190259191; CHECK-P8-NEXT:    rldic r4, r4, 12, 249192; CHECK-P8-NEXT:    xscvsxddp f0, f09193; CHECK-P8-NEXT:    stfdx f0, r3, r49194; CHECK-P8-NEXT:    blr9195entry:9196  %conv = sitofp i8 %str to double9197  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000009198  store double %conv, ptr %add.ptr, align 89199  ret void9200}9201 9202; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9203define dso_local void @st_reg_int8_t_double(ptr nocapture %ptr, i64 %off, i8 signext %str) {9204; CHECK-LABEL: st_reg_int8_t_double:9205; CHECK:       # %bb.0: # %entry9206; CHECK-NEXT:    mtfprwa f0, r59207; CHECK-NEXT:    xscvsxddp f0, f09208; CHECK-NEXT:    stfdx f0, r3, r49209; CHECK-NEXT:    blr9210entry:9211  %conv = sitofp i8 %str to double9212  %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off9213  store double %conv, ptr %add.ptr, align 89214  ret void9215}9216 9217; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9218define dso_local void @st_or1_int8_t_double(i64 %ptr, i8 zeroext %off, i8 signext %str) {9219; CHECK-LABEL: st_or1_int8_t_double:9220; CHECK:       # %bb.0: # %entry9221; CHECK-NEXT:    mtfprwa f0, r59222; CHECK-NEXT:    or r3, r4, r39223; CHECK-NEXT:    xscvsxddp f0, f09224; CHECK-NEXT:    stfd f0, 0(r3)9225; CHECK-NEXT:    blr9226entry:9227  %conv = sitofp i8 %str to double9228  %conv1 = zext i8 %off to i649229  %or = or i64 %conv1, %ptr9230  %0 = inttoptr i64 %or to ptr9231  store double %conv, ptr %0, align 89232  ret void9233}9234 9235; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9236define dso_local void @st_not_disjoint16_int8_t_double(i64 %ptr, i8 signext %str) {9237; CHECK-LABEL: st_not_disjoint16_int8_t_double:9238; CHECK:       # %bb.0: # %entry9239; CHECK-NEXT:    mtfprwa f0, r49240; CHECK-NEXT:    ori r3, r3, 69241; CHECK-NEXT:    xscvsxddp f0, f09242; CHECK-NEXT:    stfd f0, 0(r3)9243; CHECK-NEXT:    blr9244entry:9245  %conv = sitofp i8 %str to double9246  %or = or i64 %ptr, 69247  %0 = inttoptr i64 %or to ptr9248  store double %conv, ptr %0, align 89249  ret void9250}9251 9252; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9253define dso_local void @st_disjoint_align16_int8_t_double(i64 %ptr, i8 signext %str) {9254; CHECK-LABEL: st_disjoint_align16_int8_t_double:9255; CHECK:       # %bb.0: # %entry9256; CHECK-NEXT:    mtfprwa f0, r49257; CHECK-NEXT:    rldicr r3, r3, 0, 519258; CHECK-NEXT:    xscvsxddp f0, f09259; CHECK-NEXT:    stfd f0, 24(r3)9260; CHECK-NEXT:    blr9261entry:9262  %and = and i64 %ptr, -40969263  %conv = sitofp i8 %str to double9264  %or = or i64 %and, 249265  %0 = inttoptr i64 %or to ptr9266  store double %conv, ptr %0, align 89267  ret void9268}9269 9270; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9271define dso_local void @st_not_disjoint32_int8_t_double(i64 %ptr, i8 signext %str) {9272; CHECK-P10-LABEL: st_not_disjoint32_int8_t_double:9273; CHECK-P10:       # %bb.0: # %entry9274; CHECK-P10-NEXT:    mtfprwa f0, r49275; CHECK-P10-NEXT:    ori r3, r3, 344639276; CHECK-P10-NEXT:    oris r3, r3, 19277; CHECK-P10-NEXT:    xscvsxddp f0, f09278; CHECK-P10-NEXT:    stfd f0, 0(r3)9279; CHECK-P10-NEXT:    blr9280;9281; CHECK-P9-LABEL: st_not_disjoint32_int8_t_double:9282; CHECK-P9:       # %bb.0: # %entry9283; CHECK-P9-NEXT:    mtfprwa f0, r49284; CHECK-P9-NEXT:    ori r3, r3, 344639285; CHECK-P9-NEXT:    xscvsxddp f0, f09286; CHECK-P9-NEXT:    oris r3, r3, 19287; CHECK-P9-NEXT:    stfd f0, 0(r3)9288; CHECK-P9-NEXT:    blr9289;9290; CHECK-P8-LABEL: st_not_disjoint32_int8_t_double:9291; CHECK-P8:       # %bb.0: # %entry9292; CHECK-P8-NEXT:    mtfprwa f0, r49293; CHECK-P8-NEXT:    ori r3, r3, 344639294; CHECK-P8-NEXT:    oris r3, r3, 19295; CHECK-P8-NEXT:    xscvsxddp f0, f09296; CHECK-P8-NEXT:    stfd f0, 0(r3)9297; CHECK-P8-NEXT:    blr9298entry:9299  %conv = sitofp i8 %str to double9300  %or = or i64 %ptr, 999999301  %0 = inttoptr i64 %or to ptr9302  store double %conv, ptr %0, align 89303  ret void9304}9305 9306; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9307define dso_local void @st_disjoint_align32_int8_t_double(i64 %ptr, i8 signext %str) {9308; CHECK-P10-LABEL: st_disjoint_align32_int8_t_double:9309; CHECK-P10:       # %bb.0: # %entry9310; CHECK-P10-NEXT:    mtfprwa f0, r49311; CHECK-P10-NEXT:    lis r5, -152649312; CHECK-P10-NEXT:    and r3, r3, r59313; CHECK-P10-NEXT:    xscvsxddp f0, f09314; CHECK-P10-NEXT:    pstfd f0, 999990000(r3), 09315; CHECK-P10-NEXT:    blr9316;9317; CHECK-P9-LABEL: st_disjoint_align32_int8_t_double:9318; CHECK-P9:       # %bb.0: # %entry9319; CHECK-P9-NEXT:    mtfprwa f0, r49320; CHECK-P9-NEXT:    lis r5, -152649321; CHECK-P9-NEXT:    lis r4, 152589322; CHECK-P9-NEXT:    xscvsxddp f0, f09323; CHECK-P9-NEXT:    and r3, r3, r59324; CHECK-P9-NEXT:    ori r4, r4, 417129325; CHECK-P9-NEXT:    stfdx f0, r3, r49326; CHECK-P9-NEXT:    blr9327;9328; CHECK-P8-LABEL: st_disjoint_align32_int8_t_double:9329; CHECK-P8:       # %bb.0: # %entry9330; CHECK-P8-NEXT:    mtfprwa f0, r49331; CHECK-P8-NEXT:    lis r5, -152649332; CHECK-P8-NEXT:    lis r4, 152589333; CHECK-P8-NEXT:    and r3, r3, r59334; CHECK-P8-NEXT:    ori r4, r4, 417129335; CHECK-P8-NEXT:    xscvsxddp f0, f09336; CHECK-P8-NEXT:    stfdx f0, r3, r49337; CHECK-P8-NEXT:    blr9338entry:9339  %and = and i64 %ptr, -10003415049340  %conv = sitofp i8 %str to double9341  %or = or i64 %and, 9999900009342  %0 = inttoptr i64 %or to ptr9343  store double %conv, ptr %0, align 169344  ret void9345}9346 9347; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9348define dso_local void @st_not_disjoint64_int8_t_double(i64 %ptr, i8 signext %str) {9349; CHECK-P10-LABEL: st_not_disjoint64_int8_t_double:9350; CHECK-P10:       # %bb.0: # %entry9351; CHECK-P10-NEXT:    mtfprwa f0, r49352; CHECK-P10-NEXT:    pli r4, 2329353; CHECK-P10-NEXT:    pli r5, 35675873299354; CHECK-P10-NEXT:    rldimi r5, r4, 32, 09355; CHECK-P10-NEXT:    xscvsxddp f0, f09356; CHECK-P10-NEXT:    or r3, r3, r59357; CHECK-P10-NEXT:    stfd f0, 0(r3)9358; CHECK-P10-NEXT:    blr9359;9360; CHECK-P9-LABEL: st_not_disjoint64_int8_t_double:9361; CHECK-P9:       # %bb.0: # %entry9362; CHECK-P9-NEXT:    mtfprwa f0, r49363; CHECK-P9-NEXT:    li r4, 299364; CHECK-P9-NEXT:    rldic r4, r4, 35, 249365; CHECK-P9-NEXT:    xscvsxddp f0, f09366; CHECK-P9-NEXT:    oris r4, r4, 544379367; CHECK-P9-NEXT:    ori r4, r4, 40979368; CHECK-P9-NEXT:    or r3, r3, r49369; CHECK-P9-NEXT:    stfd f0, 0(r3)9370; CHECK-P9-NEXT:    blr9371;9372; CHECK-P8-LABEL: st_not_disjoint64_int8_t_double:9373; CHECK-P8:       # %bb.0: # %entry9374; CHECK-P8-NEXT:    mtfprwa f0, r49375; CHECK-P8-NEXT:    li r4, 299376; CHECK-P8-NEXT:    rldic r4, r4, 35, 249377; CHECK-P8-NEXT:    oris r4, r4, 544379378; CHECK-P8-NEXT:    xscvsxddp f0, f09379; CHECK-P8-NEXT:    ori r4, r4, 40979380; CHECK-P8-NEXT:    or r3, r3, r49381; CHECK-P8-NEXT:    stfd f0, 0(r3)9382; CHECK-P8-NEXT:    blr9383entry:9384  %conv = sitofp i8 %str to double9385  %or = or i64 %ptr, 10000000000019386  %0 = inttoptr i64 %or to ptr9387  store double %conv, ptr %0, align 89388  ret void9389}9390 9391; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9392define dso_local void @st_disjoint_align64_int8_t_double(i64 %ptr, i8 signext %str) {9393; CHECK-P10-LABEL: st_disjoint_align64_int8_t_double:9394; CHECK-P10:       # %bb.0: # %entry9395; CHECK-P10-NEXT:    mtfprwa f0, r49396; CHECK-P10-NEXT:    pli r4, 2441406259397; CHECK-P10-NEXT:    rldicr r3, r3, 0, 239398; CHECK-P10-NEXT:    rldic r4, r4, 12, 249399; CHECK-P10-NEXT:    xscvsxddp f0, f09400; CHECK-P10-NEXT:    stfdx f0, r3, r49401; CHECK-P10-NEXT:    blr9402;9403; CHECK-P9-LABEL: st_disjoint_align64_int8_t_double:9404; CHECK-P9:       # %bb.0: # %entry9405; CHECK-P9-NEXT:    mtfprwa f0, r49406; CHECK-P9-NEXT:    lis r4, 37259407; CHECK-P9-NEXT:    rldicr r3, r3, 0, 239408; CHECK-P9-NEXT:    xscvsxddp f0, f09409; CHECK-P9-NEXT:    ori r4, r4, 190259410; CHECK-P9-NEXT:    rldic r4, r4, 12, 249411; CHECK-P9-NEXT:    stfdx f0, r3, r49412; CHECK-P9-NEXT:    blr9413;9414; CHECK-P8-LABEL: st_disjoint_align64_int8_t_double:9415; CHECK-P8:       # %bb.0: # %entry9416; CHECK-P8-NEXT:    mtfprwa f0, r49417; CHECK-P8-NEXT:    lis r4, 37259418; CHECK-P8-NEXT:    rldicr r3, r3, 0, 239419; CHECK-P8-NEXT:    ori r4, r4, 190259420; CHECK-P8-NEXT:    rldic r4, r4, 12, 249421; CHECK-P8-NEXT:    xscvsxddp f0, f09422; CHECK-P8-NEXT:    stfdx f0, r3, r49423; CHECK-P8-NEXT:    blr9424entry:9425  %and = and i64 %ptr, -10995116277769426  %conv = sitofp i8 %str to double9427  %or = or i64 %and, 10000000000009428  %0 = inttoptr i64 %or to ptr9429  store double %conv, ptr %0, align 40969430  ret void9431}9432 9433; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9434define dso_local void @st_cst_align16_int8_t_double(i8 signext %str) {9435; CHECK-LABEL: st_cst_align16_int8_t_double:9436; CHECK:       # %bb.0: # %entry9437; CHECK-NEXT:    mtfprwa f0, r39438; CHECK-NEXT:    xscvsxddp f0, f09439; CHECK-NEXT:    stfd f0, 4080(0)9440; CHECK-NEXT:    blr9441entry:9442  %conv = sitofp i8 %str to double9443  store double %conv, ptr inttoptr (i64 4080 to ptr), align 169444  ret void9445}9446 9447; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9448define dso_local void @st_cst_align32_int8_t_double(i8 signext %str) {9449; CHECK-LABEL: st_cst_align32_int8_t_double:9450; CHECK:       # %bb.0: # %entry9451; CHECK-NEXT:    mtfprwa f0, r39452; CHECK-NEXT:    lis r3, 1539453; CHECK-NEXT:    xscvsxddp f0, f09454; CHECK-NEXT:    stfd f0, -27108(r3)9455; CHECK-NEXT:    blr9456entry:9457  %conv = sitofp i8 %str to double9458  store double %conv, ptr inttoptr (i64 9999900 to ptr), align 89459  ret void9460}9461 9462; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly9463define dso_local void @st_cst_align64_int8_t_double(i8 signext %str) {9464; CHECK-P10-LABEL: st_cst_align64_int8_t_double:9465; CHECK-P10:       # %bb.0: # %entry9466; CHECK-P10-NEXT:    mtfprwa f0, r39467; CHECK-P10-NEXT:    pli r3, 2441406259468; CHECK-P10-NEXT:    rldic r3, r3, 12, 249469; CHECK-P10-NEXT:    xscvsxddp f0, f09470; CHECK-P10-NEXT:    stfd f0, 0(r3)9471; CHECK-P10-NEXT:    blr9472;9473; CHECK-P9-LABEL: st_cst_align64_int8_t_double:9474; CHECK-P9:       # %bb.0: # %entry9475; CHECK-P9-NEXT:    mtfprwa f0, r39476; CHECK-P9-NEXT:    lis r3, 37259477; CHECK-P9-NEXT:    xscvsxddp f0, f09478; CHECK-P9-NEXT:    ori r3, r3, 190259479; CHECK-P9-NEXT:    rldic r3, r3, 12, 249480; CHECK-P9-NEXT:    stfd f0, 0(r3)9481; CHECK-P9-NEXT:    blr9482;9483; CHECK-P8-LABEL: st_cst_align64_int8_t_double:9484; CHECK-P8:       # %bb.0: # %entry9485; CHECK-P8-NEXT:    mtfprwa f0, r39486; CHECK-P8-NEXT:    lis r3, 37259487; CHECK-P8-NEXT:    ori r3, r3, 190259488; CHECK-P8-NEXT:    rldic r3, r3, 12, 249489; CHECK-P8-NEXT:    xscvsxddp f0, f09490; CHECK-P8-NEXT:    stfd f0, 0(r3)9491; CHECK-P8-NEXT:    blr9492entry:9493  %conv = sitofp i8 %str to double9494  store double %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40969495  ret void9496}9497