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