7783 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 i32 @ld_0_int32_t_int8_t(i64 %ptr) {23; CHECK-LABEL: ld_0_int32_t_int8_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 %conv = sext i8 %1 to i3232 ret i32 %conv33}34 35; Function Attrs: norecurse nounwind readonly uwtable willreturn36define dso_local signext i32 @ld_align16_int32_t_int8_t(ptr nocapture readonly %ptr) {37; CHECK-LABEL: ld_align16_int32_t_int8_t:38; CHECK: # %bb.0: # %entry39; CHECK-NEXT: lbz r3, 8(r3)40; CHECK-NEXT: extsb r3, r341; CHECK-NEXT: blr42entry:43 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 844 %0 = load i8, ptr %add.ptr, align 145 %conv = sext i8 %0 to i3246 ret i32 %conv47}48 49; Function Attrs: norecurse nounwind readonly uwtable willreturn50define dso_local signext i32 @ld_align32_int32_t_int8_t(ptr nocapture readonly %ptr) {51; CHECK-P10-LABEL: ld_align32_int32_t_int8_t:52; CHECK-P10: # %bb.0: # %entry53; CHECK-P10-NEXT: plbz r3, 99999000(r3), 054; CHECK-P10-NEXT: extsb r3, r355; CHECK-P10-NEXT: blr56;57; CHECK-PREP10-LABEL: ld_align32_int32_t_int8_t:58; CHECK-PREP10: # %bb.0: # %entry59; CHECK-PREP10-NEXT: lis r4, 152560; CHECK-PREP10-NEXT: ori r4, r4, 5660061; CHECK-PREP10-NEXT: lbzx r3, r3, r462; CHECK-PREP10-NEXT: extsb r3, r363; CHECK-PREP10-NEXT: blr64entry:65 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 9999900066 %0 = load i8, ptr %add.ptr, align 167 %conv = sext i8 %0 to i3268 ret i32 %conv69}70 71; Function Attrs: norecurse nounwind readonly uwtable willreturn72define dso_local signext i32 @ld_align64_int32_t_int8_t(ptr nocapture readonly %ptr) {73; CHECK-P10-LABEL: ld_align64_int32_t_int8_t:74; CHECK-P10: # %bb.0: # %entry75; CHECK-P10-NEXT: pli r4, 24414062576; CHECK-P10-NEXT: rldic r4, r4, 12, 2477; CHECK-P10-NEXT: lbzx r3, r3, r478; CHECK-P10-NEXT: extsb r3, r379; CHECK-P10-NEXT: blr80;81; CHECK-PREP10-LABEL: ld_align64_int32_t_int8_t:82; CHECK-PREP10: # %bb.0: # %entry83; CHECK-PREP10-NEXT: lis r4, 372584; CHECK-PREP10-NEXT: ori r4, r4, 1902585; CHECK-PREP10-NEXT: rldic r4, r4, 12, 2486; CHECK-PREP10-NEXT: lbzx r3, r3, r487; CHECK-PREP10-NEXT: extsb r3, r388; CHECK-PREP10-NEXT: blr89entry:90 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 100000000000091 %0 = load i8, ptr %add.ptr, align 192 %conv = sext i8 %0 to i3293 ret i32 %conv94}95 96; Function Attrs: norecurse nounwind readonly uwtable willreturn97define dso_local signext i32 @ld_reg_int32_t_int8_t(ptr nocapture readonly %ptr, i64 %off) {98; CHECK-LABEL: ld_reg_int32_t_int8_t:99; CHECK: # %bb.0: # %entry100; CHECK-NEXT: lbzx r3, r3, r4101; CHECK-NEXT: extsb r3, r3102; CHECK-NEXT: blr103entry:104 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off105 %0 = load i8, ptr %add.ptr, align 1106 %conv = sext i8 %0 to i32107 ret i32 %conv108}109 110; Function Attrs: norecurse nounwind readonly uwtable willreturn111define dso_local signext i32 @ld_or_int32_t_int8_t(i64 %ptr, i8 zeroext %off) {112; CHECK-LABEL: ld_or_int32_t_int8_t:113; CHECK: # %bb.0: # %entry114; CHECK-NEXT: or r3, r4, r3115; CHECK-NEXT: lbz r3, 0(r3)116; CHECK-NEXT: extsb r3, r3117; CHECK-NEXT: blr118entry:119 %conv = zext i8 %off to i64120 %or = or i64 %conv, %ptr121 %0 = inttoptr i64 %or to ptr122 %1 = load i8, ptr %0, align 1123 %conv1 = sext i8 %1 to i32124 ret i32 %conv1125}126 127; Function Attrs: norecurse nounwind readonly uwtable willreturn128define dso_local signext i32 @ld_or2_int32_t_int8_t(i64 %ptr, i8 zeroext %off) {129; CHECK-LABEL: ld_or2_int32_t_int8_t:130; CHECK: # %bb.0: # %entry131; CHECK-NEXT: rldicr r3, r3, 0, 51132; CHECK-NEXT: lbzx r3, r3, r4133; CHECK-NEXT: extsb r3, r3134; CHECK-NEXT: blr135entry:136 %and = and i64 %ptr, -4096137 %conv = zext i8 %off to i64138 %or = or i64 %and, %conv139 %0 = inttoptr i64 %or to ptr140 %1 = load i8, ptr %0, align 1141 %conv1 = sext i8 %1 to i32142 ret i32 %conv1143}144 145; Function Attrs: norecurse nounwind readonly uwtable willreturn146define dso_local signext i32 @ld_not_disjoint16_int32_t_int8_t(i64 %ptr) {147; CHECK-LABEL: ld_not_disjoint16_int32_t_int8_t:148; CHECK: # %bb.0: # %entry149; CHECK-NEXT: ori r3, r3, 6150; CHECK-NEXT: lbz r3, 0(r3)151; CHECK-NEXT: extsb r3, r3152; CHECK-NEXT: blr153entry:154 %or = or i64 %ptr, 6155 %0 = inttoptr i64 %or to ptr156 %1 = load i8, ptr %0, align 1157 %conv = sext i8 %1 to i32158 ret i32 %conv159}160 161; Function Attrs: norecurse nounwind readonly uwtable willreturn162define dso_local signext i32 @ld_disjoint_align16_int32_t_int8_t(i64 %ptr) {163; CHECK-LABEL: ld_disjoint_align16_int32_t_int8_t:164; CHECK: # %bb.0: # %entry165; CHECK-NEXT: rldicr r3, r3, 0, 51166; CHECK-NEXT: lbz r3, 24(r3)167; CHECK-NEXT: extsb r3, r3168; CHECK-NEXT: blr169entry:170 %and = and i64 %ptr, -4096171 %or = or i64 %and, 24172 %0 = inttoptr i64 %or to ptr173 %1 = load i8, ptr %0, align 8174 %conv = sext i8 %1 to i32175 ret i32 %conv176}177 178; Function Attrs: norecurse nounwind readonly uwtable willreturn179define dso_local signext i32 @ld_not_disjoint32_int32_t_int8_t(i64 %ptr) {180; CHECK-LABEL: ld_not_disjoint32_int32_t_int8_t:181; CHECK: # %bb.0: # %entry182; CHECK-NEXT: ori r3, r3, 34463183; CHECK-NEXT: oris r3, r3, 1184; CHECK-NEXT: lbz r3, 0(r3)185; CHECK-NEXT: extsb r3, r3186; CHECK-NEXT: blr187entry:188 %or = or i64 %ptr, 99999189 %0 = inttoptr i64 %or to ptr190 %1 = load i8, ptr %0, align 1191 %conv = sext i8 %1 to i32192 ret i32 %conv193}194 195; Function Attrs: norecurse nounwind readonly uwtable willreturn196define dso_local signext i32 @ld_disjoint_align32_int32_t_int8_t(i64 %ptr) {197; CHECK-P10-LABEL: ld_disjoint_align32_int32_t_int8_t:198; CHECK-P10: # %bb.0: # %entry199; CHECK-P10-NEXT: lis r4, -15264200; CHECK-P10-NEXT: and r3, r3, r4201; CHECK-P10-NEXT: plbz r3, 999990000(r3), 0202; CHECK-P10-NEXT: extsb r3, r3203; CHECK-P10-NEXT: blr204;205; CHECK-PREP10-LABEL: ld_disjoint_align32_int32_t_int8_t:206; CHECK-PREP10: # %bb.0: # %entry207; CHECK-PREP10-NEXT: lis r4, -15264208; CHECK-PREP10-NEXT: and r3, r3, r4209; CHECK-PREP10-NEXT: lis r4, 15258210; CHECK-PREP10-NEXT: ori r4, r4, 41712211; CHECK-PREP10-NEXT: lbzx r3, r3, r4212; CHECK-PREP10-NEXT: extsb r3, r3213; CHECK-PREP10-NEXT: blr214entry:215 %and = and i64 %ptr, -1000341504216 %or = or i64 %and, 999990000217 %0 = inttoptr i64 %or to ptr218 %1 = load i8, ptr %0, align 16219 %conv = sext i8 %1 to i32220 ret i32 %conv221}222 223; Function Attrs: norecurse nounwind readonly uwtable willreturn224define dso_local signext i32 @ld_not_disjoint64_int32_t_int8_t(i64 %ptr) {225; CHECK-P10-LABEL: ld_not_disjoint64_int32_t_int8_t:226; CHECK-P10: # %bb.0: # %entry227; CHECK-P10-NEXT: pli r4, 232228; CHECK-P10-NEXT: pli r5, 3567587329229; CHECK-P10-NEXT: rldimi r5, r4, 32, 0230; CHECK-P10-NEXT: or r3, r3, r5231; CHECK-P10-NEXT: lbz r3, 0(r3)232; CHECK-P10-NEXT: extsb r3, r3233; CHECK-P10-NEXT: blr234;235; CHECK-PREP10-LABEL: ld_not_disjoint64_int32_t_int8_t:236; CHECK-PREP10: # %bb.0: # %entry237; CHECK-PREP10-NEXT: li r4, 29238; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24239; CHECK-PREP10-NEXT: oris r4, r4, 54437240; CHECK-PREP10-NEXT: ori r4, r4, 4097241; CHECK-PREP10-NEXT: or r3, r3, r4242; CHECK-PREP10-NEXT: lbz r3, 0(r3)243; CHECK-PREP10-NEXT: extsb r3, r3244; CHECK-PREP10-NEXT: blr245entry:246 %or = or i64 %ptr, 1000000000001247 %0 = inttoptr i64 %or to ptr248 %1 = load i8, ptr %0, align 1249 %conv = sext i8 %1 to i32250 ret i32 %conv251}252 253; Function Attrs: norecurse nounwind readonly uwtable willreturn254define dso_local signext i32 @ld_disjoint_align64_int32_t_int8_t(i64 %ptr) {255; CHECK-P10-LABEL: ld_disjoint_align64_int32_t_int8_t:256; CHECK-P10: # %bb.0: # %entry257; CHECK-P10-NEXT: pli r4, 244140625258; CHECK-P10-NEXT: rldicr r3, r3, 0, 23259; CHECK-P10-NEXT: rldic r4, r4, 12, 24260; CHECK-P10-NEXT: lbzx r3, r3, r4261; CHECK-P10-NEXT: extsb r3, r3262; CHECK-P10-NEXT: blr263;264; CHECK-PREP10-LABEL: ld_disjoint_align64_int32_t_int8_t:265; CHECK-PREP10: # %bb.0: # %entry266; CHECK-PREP10-NEXT: lis r4, 3725267; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23268; CHECK-PREP10-NEXT: ori r4, r4, 19025269; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24270; CHECK-PREP10-NEXT: lbzx r3, r3, r4271; CHECK-PREP10-NEXT: extsb r3, r3272; CHECK-PREP10-NEXT: blr273entry:274 %and = and i64 %ptr, -1099511627776275 %or = or i64 %and, 1000000000000276 %0 = inttoptr i64 %or to ptr277 %1 = load i8, ptr %0, align 4096278 %conv = sext i8 %1 to i32279 ret i32 %conv280}281 282; Function Attrs: norecurse nounwind readonly uwtable willreturn283define dso_local signext i32 @ld_cst_align16_int32_t_int8_t() {284; CHECK-LABEL: ld_cst_align16_int32_t_int8_t:285; CHECK: # %bb.0: # %entry286; CHECK-NEXT: lbz r3, 4080(0)287; CHECK-NEXT: extsb r3, r3288; CHECK-NEXT: blr289entry:290 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 16291 %conv = sext i8 %0 to i32292 ret i32 %conv293}294 295; Function Attrs: norecurse nounwind readonly uwtable willreturn296define dso_local signext i32 @ld_cst_align32_int32_t_int8_t() {297; CHECK-LABEL: ld_cst_align32_int32_t_int8_t:298; CHECK: # %bb.0: # %entry299; CHECK-NEXT: lis r3, 153300; CHECK-NEXT: lbz r3, -27108(r3)301; CHECK-NEXT: extsb r3, r3302; CHECK-NEXT: blr303entry:304 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 4305 %conv = sext i8 %0 to i32306 ret i32 %conv307}308 309; Function Attrs: norecurse nounwind readonly uwtable willreturn310define dso_local signext i32 @ld_cst_align64_int32_t_int8_t() {311; CHECK-P10-LABEL: ld_cst_align64_int32_t_int8_t:312; CHECK-P10: # %bb.0: # %entry313; CHECK-P10-NEXT: pli r3, 244140625314; CHECK-P10-NEXT: rldic r3, r3, 12, 24315; CHECK-P10-NEXT: lbz r3, 0(r3)316; CHECK-P10-NEXT: extsb r3, r3317; CHECK-P10-NEXT: blr318;319; CHECK-PREP10-LABEL: ld_cst_align64_int32_t_int8_t:320; CHECK-PREP10: # %bb.0: # %entry321; CHECK-PREP10-NEXT: lis r3, 3725322; CHECK-PREP10-NEXT: ori r3, r3, 19025323; CHECK-PREP10-NEXT: rldic r3, r3, 12, 24324; CHECK-PREP10-NEXT: lbz r3, 0(r3)325; CHECK-PREP10-NEXT: extsb r3, r3326; CHECK-PREP10-NEXT: blr327entry:328 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 4096329 %conv = sext i8 %0 to i32330 ret i32 %conv331}332 333; Function Attrs: norecurse nounwind readonly uwtable willreturn334define dso_local signext i32 @ld_0_int32_t_int16_t(i64 %ptr) {335; CHECK-LABEL: ld_0_int32_t_int16_t:336; CHECK: # %bb.0: # %entry337; CHECK-NEXT: lha r3, 0(r3)338; CHECK-NEXT: blr339entry:340 %0 = inttoptr i64 %ptr to ptr341 %1 = load i16, ptr %0, align 2342 %conv = sext i16 %1 to i32343 ret i32 %conv344}345 346; Function Attrs: norecurse nounwind readonly uwtable willreturn347define dso_local signext i32 @ld_align16_int32_t_int16_t(ptr nocapture readonly %ptr) {348; CHECK-LABEL: ld_align16_int32_t_int16_t:349; CHECK: # %bb.0: # %entry350; CHECK-NEXT: lha r3, 8(r3)351; CHECK-NEXT: blr352entry:353 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8354 %0 = load i16, ptr %add.ptr, align 2355 %conv = sext i16 %0 to i32356 ret i32 %conv357}358 359; Function Attrs: norecurse nounwind readonly uwtable willreturn360define dso_local signext i32 @ld_align32_int32_t_int16_t(ptr nocapture readonly %ptr) {361; CHECK-P10-LABEL: ld_align32_int32_t_int16_t:362; CHECK-P10: # %bb.0: # %entry363; CHECK-P10-NEXT: plha r3, 99999000(r3), 0364; CHECK-P10-NEXT: blr365;366; CHECK-PREP10-LABEL: ld_align32_int32_t_int16_t:367; CHECK-PREP10: # %bb.0: # %entry368; CHECK-PREP10-NEXT: lis r4, 1525369; CHECK-PREP10-NEXT: ori r4, r4, 56600370; CHECK-PREP10-NEXT: lhax r3, r3, r4371; CHECK-PREP10-NEXT: blr372entry:373 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000374 %0 = load i16, ptr %add.ptr, align 2375 %conv = sext i16 %0 to i32376 ret i32 %conv377}378 379; Function Attrs: norecurse nounwind readonly uwtable willreturn380define dso_local signext i32 @ld_align64_int32_t_int16_t(ptr nocapture readonly %ptr) {381; CHECK-P10-LABEL: ld_align64_int32_t_int16_t:382; CHECK-P10: # %bb.0: # %entry383; CHECK-P10-NEXT: pli r4, 244140625384; CHECK-P10-NEXT: rldic r4, r4, 12, 24385; CHECK-P10-NEXT: lhax r3, r3, r4386; CHECK-P10-NEXT: blr387;388; CHECK-PREP10-LABEL: ld_align64_int32_t_int16_t:389; CHECK-PREP10: # %bb.0: # %entry390; CHECK-PREP10-NEXT: lis r4, 3725391; CHECK-PREP10-NEXT: ori r4, r4, 19025392; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24393; CHECK-PREP10-NEXT: lhax r3, r3, r4394; CHECK-PREP10-NEXT: blr395entry:396 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000397 %0 = load i16, ptr %add.ptr, align 2398 %conv = sext i16 %0 to i32399 ret i32 %conv400}401 402; Function Attrs: norecurse nounwind readonly uwtable willreturn403define dso_local signext i32 @ld_reg_int32_t_int16_t(ptr nocapture readonly %ptr, i64 %off) {404; CHECK-LABEL: ld_reg_int32_t_int16_t:405; CHECK: # %bb.0: # %entry406; CHECK-NEXT: lhax r3, r3, r4407; CHECK-NEXT: blr408entry:409 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off410 %0 = load i16, ptr %add.ptr, align 2411 %conv = sext i16 %0 to i32412 ret i32 %conv413}414 415; Function Attrs: norecurse nounwind readonly uwtable willreturn416define dso_local signext i32 @ld_or_int32_t_int16_t(i64 %ptr, i8 zeroext %off) {417; CHECK-LABEL: ld_or_int32_t_int16_t:418; CHECK: # %bb.0: # %entry419; CHECK-NEXT: or r3, r4, r3420; CHECK-NEXT: lha r3, 0(r3)421; CHECK-NEXT: blr422entry:423 %conv = zext i8 %off to i64424 %or = or i64 %conv, %ptr425 %0 = inttoptr i64 %or to ptr426 %1 = load i16, ptr %0, align 2427 %conv1 = sext i16 %1 to i32428 ret i32 %conv1429}430 431; Function Attrs: norecurse nounwind readonly uwtable willreturn432define dso_local signext i32 @ld_or2_int32_t_int16_t(i64 %ptr, i8 zeroext %off) {433; CHECK-LABEL: ld_or2_int32_t_int16_t:434; CHECK: # %bb.0: # %entry435; CHECK-NEXT: rldicr r3, r3, 0, 51436; CHECK-NEXT: lhax r3, r3, r4437; CHECK-NEXT: blr438entry:439 %and = and i64 %ptr, -4096440 %conv = zext i8 %off to i64441 %or = or i64 %and, %conv442 %0 = inttoptr i64 %or to ptr443 %1 = load i16, ptr %0, align 2444 %conv1 = sext i16 %1 to i32445 ret i32 %conv1446}447 448; Function Attrs: norecurse nounwind readonly uwtable willreturn449define dso_local signext i32 @ld_not_disjoint16_int32_t_int16_t(i64 %ptr) {450; CHECK-LABEL: ld_not_disjoint16_int32_t_int16_t:451; CHECK: # %bb.0: # %entry452; CHECK-NEXT: ori r3, r3, 6453; CHECK-NEXT: lha r3, 0(r3)454; CHECK-NEXT: blr455entry:456 %or = or i64 %ptr, 6457 %0 = inttoptr i64 %or to ptr458 %1 = load i16, ptr %0, align 2459 %conv = sext i16 %1 to i32460 ret i32 %conv461}462 463; Function Attrs: norecurse nounwind readonly uwtable willreturn464define dso_local signext i32 @ld_disjoint_align16_int32_t_int16_t(i64 %ptr) {465; CHECK-LABEL: ld_disjoint_align16_int32_t_int16_t:466; CHECK: # %bb.0: # %entry467; CHECK-NEXT: rldicr r3, r3, 0, 51468; CHECK-NEXT: lha r3, 24(r3)469; CHECK-NEXT: blr470entry:471 %and = and i64 %ptr, -4096472 %or = or i64 %and, 24473 %0 = inttoptr i64 %or to ptr474 %1 = load i16, ptr %0, align 8475 %conv = sext i16 %1 to i32476 ret i32 %conv477}478 479; Function Attrs: norecurse nounwind readonly uwtable willreturn480define dso_local signext i32 @ld_not_disjoint32_int32_t_int16_t(i64 %ptr) {481; CHECK-LABEL: ld_not_disjoint32_int32_t_int16_t:482; CHECK: # %bb.0: # %entry483; CHECK-NEXT: ori r3, r3, 34463484; CHECK-NEXT: oris r3, r3, 1485; CHECK-NEXT: lha r3, 0(r3)486; CHECK-NEXT: blr487entry:488 %or = or i64 %ptr, 99999489 %0 = inttoptr i64 %or to ptr490 %1 = load i16, ptr %0, align 2491 %conv = sext i16 %1 to i32492 ret i32 %conv493}494 495; Function Attrs: norecurse nounwind readonly uwtable willreturn496define dso_local signext i32 @ld_disjoint_align32_int32_t_int16_t(i64 %ptr) {497; CHECK-P10-LABEL: ld_disjoint_align32_int32_t_int16_t:498; CHECK-P10: # %bb.0: # %entry499; CHECK-P10-NEXT: lis r4, -15264500; CHECK-P10-NEXT: and r3, r3, r4501; CHECK-P10-NEXT: plha r3, 999990000(r3), 0502; CHECK-P10-NEXT: blr503;504; CHECK-PREP10-LABEL: ld_disjoint_align32_int32_t_int16_t:505; CHECK-PREP10: # %bb.0: # %entry506; CHECK-PREP10-NEXT: lis r4, -15264507; CHECK-PREP10-NEXT: and r3, r3, r4508; CHECK-PREP10-NEXT: lis r4, 15258509; CHECK-PREP10-NEXT: ori r4, r4, 41712510; CHECK-PREP10-NEXT: lhax r3, r3, r4511; CHECK-PREP10-NEXT: blr512entry:513 %and = and i64 %ptr, -1000341504514 %or = or i64 %and, 999990000515 %0 = inttoptr i64 %or to ptr516 %1 = load i16, ptr %0, align 16517 %conv = sext i16 %1 to i32518 ret i32 %conv519}520 521; Function Attrs: norecurse nounwind readonly uwtable willreturn522define dso_local signext i32 @ld_not_disjoint64_int32_t_int16_t(i64 %ptr) {523; CHECK-P10-LABEL: ld_not_disjoint64_int32_t_int16_t:524; CHECK-P10: # %bb.0: # %entry525; CHECK-P10-NEXT: pli r4, 232526; CHECK-P10-NEXT: pli r5, 3567587329527; CHECK-P10-NEXT: rldimi r5, r4, 32, 0528; CHECK-P10-NEXT: or r3, r3, r5529; CHECK-P10-NEXT: lha r3, 0(r3)530; CHECK-P10-NEXT: blr531;532; CHECK-PREP10-LABEL: ld_not_disjoint64_int32_t_int16_t:533; CHECK-PREP10: # %bb.0: # %entry534; CHECK-PREP10-NEXT: li r4, 29535; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24536; CHECK-PREP10-NEXT: oris r4, r4, 54437537; CHECK-PREP10-NEXT: ori r4, r4, 4097538; CHECK-PREP10-NEXT: or r3, r3, r4539; CHECK-PREP10-NEXT: lha r3, 0(r3)540; CHECK-PREP10-NEXT: blr541entry:542 %or = or i64 %ptr, 1000000000001543 %0 = inttoptr i64 %or to ptr544 %1 = load i16, ptr %0, align 2545 %conv = sext i16 %1 to i32546 ret i32 %conv547}548 549; Function Attrs: norecurse nounwind readonly uwtable willreturn550define dso_local signext i32 @ld_disjoint_align64_int32_t_int16_t(i64 %ptr) {551; CHECK-P10-LABEL: ld_disjoint_align64_int32_t_int16_t:552; CHECK-P10: # %bb.0: # %entry553; CHECK-P10-NEXT: pli r4, 244140625554; CHECK-P10-NEXT: rldicr r3, r3, 0, 23555; CHECK-P10-NEXT: rldic r4, r4, 12, 24556; CHECK-P10-NEXT: lhax r3, r3, r4557; CHECK-P10-NEXT: blr558;559; CHECK-PREP10-LABEL: ld_disjoint_align64_int32_t_int16_t:560; CHECK-PREP10: # %bb.0: # %entry561; CHECK-PREP10-NEXT: lis r4, 3725562; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23563; CHECK-PREP10-NEXT: ori r4, r4, 19025564; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24565; CHECK-PREP10-NEXT: lhax r3, r3, r4566; CHECK-PREP10-NEXT: blr567entry:568 %and = and i64 %ptr, -1099511627776569 %or = or i64 %and, 1000000000000570 %0 = inttoptr i64 %or to ptr571 %1 = load i16, ptr %0, align 4096572 %conv = sext i16 %1 to i32573 ret i32 %conv574}575 576; Function Attrs: norecurse nounwind readonly uwtable willreturn577define dso_local signext i32 @ld_cst_align16_int32_t_int16_t() {578; CHECK-LABEL: ld_cst_align16_int32_t_int16_t:579; CHECK: # %bb.0: # %entry580; CHECK-NEXT: lha r3, 4080(0)581; CHECK-NEXT: blr582entry:583 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 16584 %conv = sext i16 %0 to i32585 ret i32 %conv586}587 588; Function Attrs: norecurse nounwind readonly uwtable willreturn589define dso_local signext i32 @ld_cst_align32_int32_t_int16_t() {590; CHECK-LABEL: ld_cst_align32_int32_t_int16_t:591; CHECK: # %bb.0: # %entry592; CHECK-NEXT: lis r3, 153593; CHECK-NEXT: lha r3, -27108(r3)594; CHECK-NEXT: blr595entry:596 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 4597 %conv = sext i16 %0 to i32598 ret i32 %conv599}600 601; Function Attrs: norecurse nounwind readonly uwtable willreturn602define dso_local signext i32 @ld_cst_align64_int32_t_int16_t() {603; CHECK-P10-LABEL: ld_cst_align64_int32_t_int16_t:604; CHECK-P10: # %bb.0: # %entry605; CHECK-P10-NEXT: pli r3, 244140625606; CHECK-P10-NEXT: rldic r3, r3, 12, 24607; CHECK-P10-NEXT: lha r3, 0(r3)608; CHECK-P10-NEXT: blr609;610; CHECK-PREP10-LABEL: ld_cst_align64_int32_t_int16_t:611; CHECK-PREP10: # %bb.0: # %entry612; CHECK-PREP10-NEXT: lis r3, 3725613; CHECK-PREP10-NEXT: ori r3, r3, 19025614; CHECK-PREP10-NEXT: rldic r3, r3, 12, 24615; CHECK-PREP10-NEXT: lha r3, 0(r3)616; CHECK-PREP10-NEXT: blr617entry:618 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 4096619 %conv = sext i16 %0 to i32620 ret i32 %conv621}622 623; Function Attrs: norecurse nounwind readonly uwtable willreturn624define dso_local signext i32 @ld_0_int32_t_uint32_t(i64 %ptr) {625; CHECK-LABEL: ld_0_int32_t_uint32_t:626; CHECK: # %bb.0: # %entry627; CHECK-NEXT: lwa r3, 0(r3)628; CHECK-NEXT: blr629entry:630 %0 = inttoptr i64 %ptr to ptr631 %1 = load i32, ptr %0, align 4632 ret i32 %1633}634 635; Function Attrs: norecurse nounwind readonly uwtable willreturn636define dso_local signext i32 @ld_align16_int32_t_uint32_t(ptr nocapture readonly %ptr) {637; CHECK-LABEL: ld_align16_int32_t_uint32_t:638; CHECK: # %bb.0: # %entry639; CHECK-NEXT: lwa r3, 8(r3)640; CHECK-NEXT: blr641entry:642 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8643 %0 = load i32, ptr %add.ptr, align 4644 ret i32 %0645}646 647; Function Attrs: norecurse nounwind readonly uwtable willreturn648define dso_local signext i32 @ld_align32_int32_t_uint32_t(ptr nocapture readonly %ptr) {649; CHECK-P10-LABEL: ld_align32_int32_t_uint32_t:650; CHECK-P10: # %bb.0: # %entry651; CHECK-P10-NEXT: plwa r3, 99999000(r3), 0652; CHECK-P10-NEXT: blr653;654; CHECK-PREP10-LABEL: ld_align32_int32_t_uint32_t:655; CHECK-PREP10: # %bb.0: # %entry656; CHECK-PREP10-NEXT: lis r4, 1525657; CHECK-PREP10-NEXT: ori r4, r4, 56600658; CHECK-PREP10-NEXT: lwax r3, r3, r4659; CHECK-PREP10-NEXT: blr660entry:661 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000662 %0 = load i32, ptr %add.ptr, align 4663 ret i32 %0664}665 666; Function Attrs: norecurse nounwind readonly uwtable willreturn667define dso_local signext i32 @ld_align64_int32_t_uint32_t(ptr nocapture readonly %ptr) {668; CHECK-P10-LABEL: ld_align64_int32_t_uint32_t:669; CHECK-P10: # %bb.0: # %entry670; CHECK-P10-NEXT: pli r4, 244140625671; CHECK-P10-NEXT: rldic r4, r4, 12, 24672; CHECK-P10-NEXT: lwax r3, r3, r4673; CHECK-P10-NEXT: blr674;675; CHECK-PREP10-LABEL: ld_align64_int32_t_uint32_t:676; CHECK-PREP10: # %bb.0: # %entry677; CHECK-PREP10-NEXT: lis r4, 3725678; CHECK-PREP10-NEXT: ori r4, r4, 19025679; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24680; CHECK-PREP10-NEXT: lwax r3, r3, r4681; CHECK-PREP10-NEXT: blr682entry:683 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000684 %0 = load i32, ptr %add.ptr, align 4685 ret i32 %0686}687 688; Function Attrs: norecurse nounwind readonly uwtable willreturn689define dso_local signext i32 @ld_reg_int32_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {690; CHECK-LABEL: ld_reg_int32_t_uint32_t:691; CHECK: # %bb.0: # %entry692; CHECK-NEXT: lwax r3, r3, r4693; CHECK-NEXT: blr694entry:695 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off696 %0 = load i32, ptr %add.ptr, align 4697 ret i32 %0698}699 700; Function Attrs: norecurse nounwind readonly uwtable willreturn701define dso_local signext i32 @ld_or_int32_t_uint32_t(i64 %ptr, i8 zeroext %off) {702; CHECK-LABEL: ld_or_int32_t_uint32_t:703; CHECK: # %bb.0: # %entry704; CHECK-NEXT: or r3, r4, r3705; CHECK-NEXT: lwa r3, 0(r3)706; CHECK-NEXT: blr707entry:708 %conv = zext i8 %off to i64709 %or = or i64 %conv, %ptr710 %0 = inttoptr i64 %or to ptr711 %1 = load i32, ptr %0, align 4712 ret i32 %1713}714 715; Function Attrs: norecurse nounwind readonly uwtable willreturn716define dso_local signext i32 @ld_or2_int32_t_uint32_t(i64 %ptr, i8 zeroext %off) {717; CHECK-LABEL: ld_or2_int32_t_uint32_t:718; CHECK: # %bb.0: # %entry719; CHECK-NEXT: rldicr r3, r3, 0, 51720; CHECK-NEXT: lwax r3, r3, r4721; CHECK-NEXT: blr722entry:723 %and = and i64 %ptr, -4096724 %conv = zext i8 %off to i64725 %or = or i64 %and, %conv726 %0 = inttoptr i64 %or to ptr727 %1 = load i32, ptr %0, align 4728 ret i32 %1729}730 731; Function Attrs: norecurse nounwind readonly uwtable willreturn732define dso_local signext i32 @ld_not_disjoint16_int32_t_uint32_t(i64 %ptr) {733; CHECK-LABEL: ld_not_disjoint16_int32_t_uint32_t:734; CHECK: # %bb.0: # %entry735; CHECK-NEXT: ori r3, r3, 6736; CHECK-NEXT: lwa r3, 0(r3)737; CHECK-NEXT: blr738entry:739 %or = or i64 %ptr, 6740 %0 = inttoptr i64 %or to ptr741 %1 = load i32, ptr %0, align 4742 ret i32 %1743}744 745; Function Attrs: norecurse nounwind readonly uwtable willreturn746define dso_local signext i32 @ld_disjoint_unalign16_int32_t_uint32_t(i64 %ptr) {747; CHECK-P10-LABEL: ld_disjoint_unalign16_int32_t_uint32_t:748; CHECK-P10: # %bb.0: # %entry749; CHECK-P10-NEXT: rldicr r3, r3, 0, 51750; CHECK-P10-NEXT: plwa r3, 6(r3), 0751; CHECK-P10-NEXT: blr752;753; CHECK-PREP10-LABEL: ld_disjoint_unalign16_int32_t_uint32_t:754; CHECK-PREP10: # %bb.0: # %entry755; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 51756; CHECK-PREP10-NEXT: li r4, 6757; CHECK-PREP10-NEXT: lwax r3, r3, r4758; CHECK-PREP10-NEXT: blr759entry:760 %and = and i64 %ptr, -4096761 %or = or i64 %and, 6762 %0 = inttoptr i64 %or to ptr763 %1 = load i32, ptr %0, align 4764 ret i32 %1765}766 767; Function Attrs: norecurse nounwind readonly uwtable willreturn768define dso_local signext i32 @ld_disjoint_align16_int32_t_uint32_t(i64 %ptr) {769; CHECK-LABEL: ld_disjoint_align16_int32_t_uint32_t:770; CHECK: # %bb.0: # %entry771; CHECK-NEXT: rldicr r3, r3, 0, 51772; CHECK-NEXT: lwa r3, 24(r3)773; CHECK-NEXT: blr774entry:775 %and = and i64 %ptr, -4096776 %or = or i64 %and, 24777 %0 = inttoptr i64 %or to ptr778 %1 = load i32, ptr %0, align 8779 ret i32 %1780}781 782; Function Attrs: norecurse nounwind readonly uwtable willreturn783define dso_local signext i32 @ld_not_disjoint32_int32_t_uint32_t(i64 %ptr) {784; CHECK-LABEL: ld_not_disjoint32_int32_t_uint32_t:785; CHECK: # %bb.0: # %entry786; CHECK-NEXT: ori r3, r3, 34463787; CHECK-NEXT: oris r3, r3, 1788; CHECK-NEXT: lwa r3, 0(r3)789; CHECK-NEXT: blr790entry:791 %or = or i64 %ptr, 99999792 %0 = inttoptr i64 %or to ptr793 %1 = load i32, ptr %0, align 4794 ret i32 %1795}796 797; Function Attrs: norecurse nounwind readonly uwtable willreturn798define dso_local signext i32 @ld_disjoint_align32_int32_t_uint32_t(i64 %ptr) {799; CHECK-P10-LABEL: ld_disjoint_align32_int32_t_uint32_t:800; CHECK-P10: # %bb.0: # %entry801; CHECK-P10-NEXT: lis r4, -15264802; CHECK-P10-NEXT: and r3, r3, r4803; CHECK-P10-NEXT: plwa r3, 999990000(r3), 0804; CHECK-P10-NEXT: blr805;806; CHECK-PREP10-LABEL: ld_disjoint_align32_int32_t_uint32_t:807; CHECK-PREP10: # %bb.0: # %entry808; CHECK-PREP10-NEXT: lis r4, -15264809; CHECK-PREP10-NEXT: and r3, r3, r4810; CHECK-PREP10-NEXT: lis r4, 15258811; CHECK-PREP10-NEXT: ori r4, r4, 41712812; CHECK-PREP10-NEXT: lwax r3, r3, r4813; CHECK-PREP10-NEXT: blr814entry:815 %and = and i64 %ptr, -1000341504816 %or = or i64 %and, 999990000817 %0 = inttoptr i64 %or to ptr818 %1 = load i32, ptr %0, align 16819 ret i32 %1820}821 822; Function Attrs: norecurse nounwind readonly uwtable willreturn823define dso_local signext i32 @ld_not_disjoint64_int32_t_uint32_t(i64 %ptr) {824; CHECK-P10-LABEL: ld_not_disjoint64_int32_t_uint32_t:825; CHECK-P10: # %bb.0: # %entry826; CHECK-P10-NEXT: pli r4, 232827; CHECK-P10-NEXT: pli r5, 3567587329828; CHECK-P10-NEXT: rldimi r5, r4, 32, 0829; CHECK-P10-NEXT: or r3, r3, r5830; CHECK-P10-NEXT: lwa r3, 0(r3)831; CHECK-P10-NEXT: blr832;833; CHECK-PREP10-LABEL: ld_not_disjoint64_int32_t_uint32_t:834; CHECK-PREP10: # %bb.0: # %entry835; CHECK-PREP10-NEXT: li r4, 29836; CHECK-PREP10-NEXT: rldic r4, r4, 35, 24837; CHECK-PREP10-NEXT: oris r4, r4, 54437838; CHECK-PREP10-NEXT: ori r4, r4, 4097839; CHECK-PREP10-NEXT: or r3, r3, r4840; CHECK-PREP10-NEXT: lwa r3, 0(r3)841; CHECK-PREP10-NEXT: blr842entry:843 %or = or i64 %ptr, 1000000000001844 %0 = inttoptr i64 %or to ptr845 %1 = load i32, ptr %0, align 4846 ret i32 %1847}848 849; Function Attrs: norecurse nounwind readonly uwtable willreturn850define dso_local signext i32 @ld_disjoint_align64_int32_t_uint32_t(i64 %ptr) {851; CHECK-P10-LABEL: ld_disjoint_align64_int32_t_uint32_t:852; CHECK-P10: # %bb.0: # %entry853; CHECK-P10-NEXT: pli r4, 244140625854; CHECK-P10-NEXT: rldicr r3, r3, 0, 23855; CHECK-P10-NEXT: rldic r4, r4, 12, 24856; CHECK-P10-NEXT: lwax r3, r3, r4857; CHECK-P10-NEXT: blr858;859; CHECK-PREP10-LABEL: ld_disjoint_align64_int32_t_uint32_t:860; CHECK-PREP10: # %bb.0: # %entry861; CHECK-PREP10-NEXT: lis r4, 3725862; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 23863; CHECK-PREP10-NEXT: ori r4, r4, 19025864; CHECK-PREP10-NEXT: rldic r4, r4, 12, 24865; CHECK-PREP10-NEXT: lwax r3, r3, r4866; CHECK-PREP10-NEXT: blr867entry:868 %and = and i64 %ptr, -1099511627776869 %or = or i64 %and, 1000000000000870 %0 = inttoptr i64 %or to ptr871 %1 = load i32, ptr %0, align 4096872 ret i32 %1873}874 875; Function Attrs: norecurse nounwind readonly uwtable willreturn876define dso_local signext i32 @ld_cst_align16_int32_t_uint32_t() {877; CHECK-LABEL: ld_cst_align16_int32_t_uint32_t:878; CHECK: # %bb.0: # %entry879; CHECK-NEXT: lwa r3, 4080(0)880; CHECK-NEXT: blr881entry:882 %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 16883 ret i32 %0884}885 886; Function Attrs: norecurse nounwind readonly uwtable willreturn887define dso_local signext i32 @ld_cst_align32_int32_t_uint32_t() {888; CHECK-LABEL: ld_cst_align32_int32_t_uint32_t:889; CHECK: # %bb.0: # %entry890; CHECK-NEXT: lis r3, 153891; CHECK-NEXT: lwa r3, -27108(r3)892; CHECK-NEXT: blr893entry:894 %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 4895 ret i32 %0896}897 898; Function Attrs: norecurse nounwind readonly uwtable willreturn899define dso_local signext i32 @ld_cst_align64_int32_t_uint32_t() {900; CHECK-P10-LABEL: ld_cst_align64_int32_t_uint32_t:901; CHECK-P10: # %bb.0: # %entry902; CHECK-P10-NEXT: pli r3, 244140625903; CHECK-P10-NEXT: rldic r3, r3, 12, 24904; CHECK-P10-NEXT: lwa r3, 0(r3)905; CHECK-P10-NEXT: blr906;907; CHECK-PREP10-LABEL: ld_cst_align64_int32_t_uint32_t:908; CHECK-PREP10: # %bb.0: # %entry909; CHECK-PREP10-NEXT: lis r3, 3725910; CHECK-PREP10-NEXT: ori r3, r3, 19025911; CHECK-PREP10-NEXT: rldic r3, r3, 12, 24912; CHECK-PREP10-NEXT: lwa r3, 0(r3)913; CHECK-PREP10-NEXT: blr914entry:915 %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 4096916 ret i32 %0917}918 919; Function Attrs: norecurse nounwind readonly uwtable willreturn920define dso_local signext i32 @ld_0_int32_t_uint64_t(i64 %ptr) {921; CHECK-LE-LABEL: ld_0_int32_t_uint64_t:922; CHECK-LE: # %bb.0: # %entry923; CHECK-LE-NEXT: lwa r3, 0(r3)924; CHECK-LE-NEXT: blr925;926; CHECK-BE-LABEL: ld_0_int32_t_uint64_t:927; CHECK-BE: # %bb.0: # %entry928; CHECK-BE-NEXT: lwa r3, 4(r3)929; CHECK-BE-NEXT: blr930entry:931 %0 = inttoptr i64 %ptr to ptr932 %1 = load i64, ptr %0, align 8933 %conv = trunc i64 %1 to i32934 ret i32 %conv935}936 937; Function Attrs: norecurse nounwind readonly uwtable willreturn938define dso_local signext i32 @ld_unalign16_int32_t_uint64_t(ptr nocapture readonly %ptr) {939; CHECK-P10-LE-LABEL: ld_unalign16_int32_t_uint64_t:940; CHECK-P10-LE: # %bb.0: # %entry941; CHECK-P10-LE-NEXT: plwa r3, 1(r3), 0942; CHECK-P10-LE-NEXT: blr943;944; CHECK-P10-BE-LABEL: ld_unalign16_int32_t_uint64_t:945; CHECK-P10-BE: # %bb.0: # %entry946; CHECK-P10-BE-NEXT: plwa r3, 5(r3), 0947; CHECK-P10-BE-NEXT: blr948;949; CHECK-P9-LE-LABEL: ld_unalign16_int32_t_uint64_t:950; CHECK-P9-LE: # %bb.0: # %entry951; CHECK-P9-LE-NEXT: li r4, 1952; CHECK-P9-LE-NEXT: lwax r3, r3, r4953; CHECK-P9-LE-NEXT: blr954;955; CHECK-P9-BE-LABEL: ld_unalign16_int32_t_uint64_t:956; CHECK-P9-BE: # %bb.0: # %entry957; CHECK-P9-BE-NEXT: li r4, 5958; CHECK-P9-BE-NEXT: lwax r3, r3, r4959; CHECK-P9-BE-NEXT: blr960;961; CHECK-P8-LE-LABEL: ld_unalign16_int32_t_uint64_t:962; CHECK-P8-LE: # %bb.0: # %entry963; CHECK-P8-LE-NEXT: li r4, 1964; CHECK-P8-LE-NEXT: lwax r3, r3, r4965; CHECK-P8-LE-NEXT: blr966;967; CHECK-P8-BE-LABEL: ld_unalign16_int32_t_uint64_t:968; CHECK-P8-BE: # %bb.0: # %entry969; CHECK-P8-BE-NEXT: li r4, 5970; CHECK-P8-BE-NEXT: lwax r3, r3, r4971; CHECK-P8-BE-NEXT: blr972entry:973 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1974 %0 = load i64, ptr %add.ptr, align 8975 %conv = trunc i64 %0 to i32976 ret i32 %conv977}978 979; Function Attrs: norecurse nounwind readonly uwtable willreturn980define dso_local signext i32 @ld_align16_int32_t_uint64_t(ptr nocapture readonly %ptr) {981; CHECK-LE-LABEL: ld_align16_int32_t_uint64_t:982; CHECK-LE: # %bb.0: # %entry983; CHECK-LE-NEXT: lwa r3, 8(r3)984; CHECK-LE-NEXT: blr985;986; CHECK-BE-LABEL: ld_align16_int32_t_uint64_t:987; CHECK-BE: # %bb.0: # %entry988; CHECK-BE-NEXT: lwa r3, 12(r3)989; CHECK-BE-NEXT: blr990entry:991 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8992 %0 = load i64, ptr %add.ptr, align 8993 %conv = trunc i64 %0 to i32994 ret i32 %conv995}996 997; Function Attrs: norecurse nounwind readonly uwtable willreturn998define dso_local signext i32 @ld_align32_int32_t_uint64_t(ptr nocapture readonly %ptr) {999; CHECK-P10-LE-LABEL: ld_align32_int32_t_uint64_t:1000; CHECK-P10-LE: # %bb.0: # %entry1001; CHECK-P10-LE-NEXT: plwa r3, 99999000(r3), 01002; CHECK-P10-LE-NEXT: blr1003;1004; CHECK-P10-BE-LABEL: ld_align32_int32_t_uint64_t:1005; CHECK-P10-BE: # %bb.0: # %entry1006; CHECK-P10-BE-NEXT: plwa r3, 99999004(r3), 01007; CHECK-P10-BE-NEXT: blr1008;1009; CHECK-P9-LE-LABEL: ld_align32_int32_t_uint64_t:1010; CHECK-P9-LE: # %bb.0: # %entry1011; CHECK-P9-LE-NEXT: lis r4, 15251012; CHECK-P9-LE-NEXT: ori r4, r4, 566001013; CHECK-P9-LE-NEXT: lwax r3, r3, r41014; CHECK-P9-LE-NEXT: blr1015;1016; CHECK-P9-BE-LABEL: ld_align32_int32_t_uint64_t:1017; CHECK-P9-BE: # %bb.0: # %entry1018; CHECK-P9-BE-NEXT: lis r4, 15251019; CHECK-P9-BE-NEXT: ori r4, r4, 566041020; CHECK-P9-BE-NEXT: lwax r3, r3, r41021; CHECK-P9-BE-NEXT: blr1022;1023; CHECK-P8-LE-LABEL: ld_align32_int32_t_uint64_t:1024; CHECK-P8-LE: # %bb.0: # %entry1025; CHECK-P8-LE-NEXT: lis r4, 15251026; CHECK-P8-LE-NEXT: ori r4, r4, 566001027; CHECK-P8-LE-NEXT: lwax r3, r3, r41028; CHECK-P8-LE-NEXT: blr1029;1030; CHECK-P8-BE-LABEL: ld_align32_int32_t_uint64_t:1031; CHECK-P8-BE: # %bb.0: # %entry1032; CHECK-P8-BE-NEXT: lis r4, 15251033; CHECK-P8-BE-NEXT: ori r4, r4, 566041034; CHECK-P8-BE-NEXT: lwax r3, r3, r41035; CHECK-P8-BE-NEXT: blr1036entry:1037 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001038 %0 = load i64, ptr %add.ptr, align 81039 %conv = trunc i64 %0 to i321040 ret i32 %conv1041}1042 1043; Function Attrs: norecurse nounwind readonly uwtable willreturn1044define dso_local signext i32 @ld_align64_int32_t_uint64_t(ptr nocapture readonly %ptr) {1045; CHECK-P10-LE-LABEL: ld_align64_int32_t_uint64_t:1046; CHECK-P10-LE: # %bb.0: # %entry1047; CHECK-P10-LE-NEXT: pli r4, 2441406251048; CHECK-P10-LE-NEXT: rldic r4, r4, 12, 241049; CHECK-P10-LE-NEXT: lwax r3, r3, r41050; CHECK-P10-LE-NEXT: blr1051;1052; CHECK-P10-BE-LABEL: ld_align64_int32_t_uint64_t:1053; CHECK-P10-BE: # %bb.0: # %entry1054; CHECK-P10-BE-NEXT: pli r4, 2321055; CHECK-P10-BE-NEXT: pli r5, 35675873321056; CHECK-P10-BE-NEXT: rldimi r5, r4, 32, 01057; CHECK-P10-BE-NEXT: lwax r3, r3, r51058; CHECK-P10-BE-NEXT: blr1059;1060; CHECK-P9-LE-LABEL: ld_align64_int32_t_uint64_t:1061; CHECK-P9-LE: # %bb.0: # %entry1062; CHECK-P9-LE-NEXT: lis r4, 37251063; CHECK-P9-LE-NEXT: ori r4, r4, 190251064; CHECK-P9-LE-NEXT: rldic r4, r4, 12, 241065; CHECK-P9-LE-NEXT: lwax r3, r3, r41066; CHECK-P9-LE-NEXT: blr1067;1068; CHECK-P9-BE-LABEL: ld_align64_int32_t_uint64_t:1069; CHECK-P9-BE: # %bb.0: # %entry1070; CHECK-P9-BE-NEXT: li r4, 291071; CHECK-P9-BE-NEXT: rldic r4, r4, 35, 241072; CHECK-P9-BE-NEXT: oris r4, r4, 544371073; CHECK-P9-BE-NEXT: ori r4, r4, 41001074; CHECK-P9-BE-NEXT: lwax r3, r3, r41075; CHECK-P9-BE-NEXT: blr1076;1077; CHECK-P8-LE-LABEL: ld_align64_int32_t_uint64_t:1078; CHECK-P8-LE: # %bb.0: # %entry1079; CHECK-P8-LE-NEXT: lis r4, 37251080; CHECK-P8-LE-NEXT: ori r4, r4, 190251081; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 241082; CHECK-P8-LE-NEXT: lwax r3, r3, r41083; CHECK-P8-LE-NEXT: blr1084;1085; CHECK-P8-BE-LABEL: ld_align64_int32_t_uint64_t:1086; CHECK-P8-BE: # %bb.0: # %entry1087; CHECK-P8-BE-NEXT: li r4, 291088; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 241089; CHECK-P8-BE-NEXT: oris r4, r4, 544371090; CHECK-P8-BE-NEXT: ori r4, r4, 41001091; CHECK-P8-BE-NEXT: lwax r3, r3, r41092; CHECK-P8-BE-NEXT: blr1093entry:1094 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001095 %0 = load i64, ptr %add.ptr, align 81096 %conv = trunc i64 %0 to i321097 ret i32 %conv1098}1099 1100; Function Attrs: norecurse nounwind readonly uwtable willreturn1101define dso_local signext i32 @ld_reg_int32_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {1102; CHECK-LE-LABEL: ld_reg_int32_t_uint64_t:1103; CHECK-LE: # %bb.0: # %entry1104; CHECK-LE-NEXT: lwax r3, r3, r41105; CHECK-LE-NEXT: blr1106;1107; CHECK-BE-LABEL: ld_reg_int32_t_uint64_t:1108; CHECK-BE: # %bb.0: # %entry1109; CHECK-BE-NEXT: add r3, r3, r41110; CHECK-BE-NEXT: lwa r3, 4(r3)1111; CHECK-BE-NEXT: blr1112entry:1113 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1114 %0 = load i64, ptr %add.ptr, align 81115 %conv = trunc i64 %0 to i321116 ret i32 %conv1117}1118 1119; Function Attrs: norecurse nounwind readonly uwtable willreturn1120define dso_local signext i32 @ld_or_int32_t_uint64_t(i64 %ptr, i8 zeroext %off) {1121; CHECK-LE-LABEL: ld_or_int32_t_uint64_t:1122; CHECK-LE: # %bb.0: # %entry1123; CHECK-LE-NEXT: or r3, r4, r31124; CHECK-LE-NEXT: lwa r3, 0(r3)1125; CHECK-LE-NEXT: blr1126;1127; CHECK-BE-LABEL: ld_or_int32_t_uint64_t:1128; CHECK-BE: # %bb.0: # %entry1129; CHECK-BE-NEXT: or r3, r4, r31130; CHECK-BE-NEXT: lwa r3, 4(r3)1131; CHECK-BE-NEXT: blr1132entry:1133 %conv = zext i8 %off to i641134 %or = or i64 %conv, %ptr1135 %0 = inttoptr i64 %or to ptr1136 %1 = load i64, ptr %0, align 81137 %conv1 = trunc i64 %1 to i321138 ret i32 %conv11139}1140 1141; Function Attrs: norecurse nounwind readonly uwtable willreturn1142define dso_local signext i32 @ld_or2_int32_t_uint64_t(i64 %ptr, i8 zeroext %off) {1143; CHECK-LE-LABEL: ld_or2_int32_t_uint64_t:1144; CHECK-LE: # %bb.0: # %entry1145; CHECK-LE-NEXT: rldicr r3, r3, 0, 511146; CHECK-LE-NEXT: lwax r3, r3, r41147; CHECK-LE-NEXT: blr1148;1149; CHECK-BE-LABEL: ld_or2_int32_t_uint64_t:1150; CHECK-BE: # %bb.0: # %entry1151; CHECK-BE-NEXT: rotldi r3, r3, 521152; CHECK-BE-NEXT: rldimi r4, r3, 12, 01153; CHECK-BE-NEXT: lwa r3, 4(r4)1154; CHECK-BE-NEXT: blr1155entry:1156 %and = and i64 %ptr, -40961157 %conv = zext i8 %off to i641158 %or = or i64 %and, %conv1159 %0 = inttoptr i64 %or to ptr1160 %1 = load i64, ptr %0, align 81161 %conv1 = trunc i64 %1 to i321162 ret i32 %conv11163}1164 1165; Function Attrs: norecurse nounwind readonly uwtable willreturn1166define dso_local signext i32 @ld_not_disjoint16_int32_t_uint64_t(i64 %ptr) {1167; CHECK-LE-LABEL: ld_not_disjoint16_int32_t_uint64_t:1168; CHECK-LE: # %bb.0: # %entry1169; CHECK-LE-NEXT: ori r3, r3, 61170; CHECK-LE-NEXT: lwa r3, 0(r3)1171; CHECK-LE-NEXT: blr1172;1173; CHECK-BE-LABEL: ld_not_disjoint16_int32_t_uint64_t:1174; CHECK-BE: # %bb.0: # %entry1175; CHECK-BE-NEXT: ori r3, r3, 61176; CHECK-BE-NEXT: lwa r3, 4(r3)1177; CHECK-BE-NEXT: blr1178entry:1179 %or = or i64 %ptr, 61180 %0 = inttoptr i64 %or to ptr1181 %1 = load i64, ptr %0, align 81182 %conv = trunc i64 %1 to i321183 ret i32 %conv1184}1185 1186; Function Attrs: norecurse nounwind readonly uwtable willreturn1187define dso_local signext i32 @ld_disjoint_unalign16_int32_t_uint64_t(i64 %ptr) {1188; CHECK-P10-LE-LABEL: ld_disjoint_unalign16_int32_t_uint64_t:1189; CHECK-P10-LE: # %bb.0: # %entry1190; CHECK-P10-LE-NEXT: rldicr r3, r3, 0, 511191; CHECK-P10-LE-NEXT: plwa r3, 6(r3), 01192; CHECK-P10-LE-NEXT: blr1193;1194; CHECK-P10-BE-LABEL: ld_disjoint_unalign16_int32_t_uint64_t:1195; CHECK-P10-BE: # %bb.0: # %entry1196; CHECK-P10-BE-NEXT: rldicr r3, r3, 0, 511197; CHECK-P10-BE-NEXT: plwa r3, 10(r3), 01198; CHECK-P10-BE-NEXT: blr1199;1200; CHECK-P9-LE-LABEL: ld_disjoint_unalign16_int32_t_uint64_t:1201; CHECK-P9-LE: # %bb.0: # %entry1202; CHECK-P9-LE-NEXT: rldicr r3, r3, 0, 511203; CHECK-P9-LE-NEXT: li r4, 61204; CHECK-P9-LE-NEXT: lwax r3, r3, r41205; CHECK-P9-LE-NEXT: blr1206;1207; CHECK-P9-BE-LABEL: ld_disjoint_unalign16_int32_t_uint64_t:1208; CHECK-P9-BE: # %bb.0: # %entry1209; CHECK-P9-BE-NEXT: rldicr r3, r3, 0, 511210; CHECK-P9-BE-NEXT: li r4, 101211; CHECK-P9-BE-NEXT: lwax r3, r3, r41212; CHECK-P9-BE-NEXT: blr1213;1214; CHECK-P8-LE-LABEL: ld_disjoint_unalign16_int32_t_uint64_t:1215; CHECK-P8-LE: # %bb.0: # %entry1216; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 511217; CHECK-P8-LE-NEXT: li r4, 61218; CHECK-P8-LE-NEXT: lwax r3, r3, r41219; CHECK-P8-LE-NEXT: blr1220;1221; CHECK-P8-BE-LABEL: ld_disjoint_unalign16_int32_t_uint64_t:1222; CHECK-P8-BE: # %bb.0: # %entry1223; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 511224; CHECK-P8-BE-NEXT: li r4, 101225; CHECK-P8-BE-NEXT: lwax r3, r3, r41226; CHECK-P8-BE-NEXT: blr1227entry:1228 %and = and i64 %ptr, -40961229 %or = or i64 %and, 61230 %0 = inttoptr i64 %or to ptr1231 %1 = load i64, ptr %0, align 81232 %conv = trunc i64 %1 to i321233 ret i32 %conv1234}1235 1236; Function Attrs: norecurse nounwind readonly uwtable willreturn1237define dso_local signext i32 @ld_disjoint_align16_int32_t_uint64_t(i64 %ptr) {1238; CHECK-LE-LABEL: ld_disjoint_align16_int32_t_uint64_t:1239; CHECK-LE: # %bb.0: # %entry1240; CHECK-LE-NEXT: rldicr r3, r3, 0, 511241; CHECK-LE-NEXT: lwa r3, 24(r3)1242; CHECK-LE-NEXT: blr1243;1244; CHECK-BE-LABEL: ld_disjoint_align16_int32_t_uint64_t:1245; CHECK-BE: # %bb.0: # %entry1246; CHECK-BE-NEXT: rldicr r3, r3, 0, 511247; CHECK-BE-NEXT: lwa r3, 28(r3)1248; CHECK-BE-NEXT: blr1249entry:1250 %and = and i64 %ptr, -40961251 %or = or i64 %and, 241252 %0 = inttoptr i64 %or to ptr1253 %1 = load i64, ptr %0, align 81254 %conv = trunc i64 %1 to i321255 ret i32 %conv1256}1257 1258; Function Attrs: norecurse nounwind readonly uwtable willreturn1259define dso_local signext i32 @ld_not_disjoint32_int32_t_uint64_t(i64 %ptr) {1260; CHECK-LE-LABEL: ld_not_disjoint32_int32_t_uint64_t:1261; CHECK-LE: # %bb.0: # %entry1262; CHECK-LE-NEXT: ori r3, r3, 344631263; CHECK-LE-NEXT: oris r3, r3, 11264; CHECK-LE-NEXT: lwa r3, 0(r3)1265; CHECK-LE-NEXT: blr1266;1267; CHECK-BE-LABEL: ld_not_disjoint32_int32_t_uint64_t:1268; CHECK-BE: # %bb.0: # %entry1269; CHECK-BE-NEXT: ori r3, r3, 344631270; CHECK-BE-NEXT: oris r3, r3, 11271; CHECK-BE-NEXT: lwa r3, 4(r3)1272; CHECK-BE-NEXT: blr1273entry:1274 %or = or i64 %ptr, 999991275 %0 = inttoptr i64 %or to ptr1276 %1 = load i64, ptr %0, align 81277 %conv = trunc i64 %1 to i321278 ret i32 %conv1279}1280 1281; Function Attrs: norecurse nounwind readonly uwtable willreturn1282define dso_local signext i32 @ld_disjoint_align32_int32_t_uint64_t(i64 %ptr) {1283; CHECK-P10-LE-LABEL: ld_disjoint_align32_int32_t_uint64_t:1284; CHECK-P10-LE: # %bb.0: # %entry1285; CHECK-P10-LE-NEXT: lis r4, -152641286; CHECK-P10-LE-NEXT: and r3, r3, r41287; CHECK-P10-LE-NEXT: plwa r3, 999990000(r3), 01288; CHECK-P10-LE-NEXT: blr1289;1290; CHECK-P10-BE-LABEL: ld_disjoint_align32_int32_t_uint64_t:1291; CHECK-P10-BE: # %bb.0: # %entry1292; CHECK-P10-BE-NEXT: lis r4, -152641293; CHECK-P10-BE-NEXT: and r3, r3, r41294; CHECK-P10-BE-NEXT: plwa r3, 999990004(r3), 01295; CHECK-P10-BE-NEXT: blr1296;1297; CHECK-P9-LE-LABEL: ld_disjoint_align32_int32_t_uint64_t:1298; CHECK-P9-LE: # %bb.0: # %entry1299; CHECK-P9-LE-NEXT: lis r4, -152641300; CHECK-P9-LE-NEXT: and r3, r3, r41301; CHECK-P9-LE-NEXT: lis r4, 152581302; CHECK-P9-LE-NEXT: ori r4, r4, 417121303; CHECK-P9-LE-NEXT: lwax r3, r3, r41304; CHECK-P9-LE-NEXT: blr1305;1306; CHECK-P9-BE-LABEL: ld_disjoint_align32_int32_t_uint64_t:1307; CHECK-P9-BE: # %bb.0: # %entry1308; CHECK-P9-BE-NEXT: lis r4, -152641309; CHECK-P9-BE-NEXT: and r3, r3, r41310; CHECK-P9-BE-NEXT: lis r4, 152581311; CHECK-P9-BE-NEXT: ori r4, r4, 417161312; CHECK-P9-BE-NEXT: lwax r3, r3, r41313; CHECK-P9-BE-NEXT: blr1314;1315; CHECK-P8-LE-LABEL: ld_disjoint_align32_int32_t_uint64_t:1316; CHECK-P8-LE: # %bb.0: # %entry1317; CHECK-P8-LE-NEXT: lis r4, -152641318; CHECK-P8-LE-NEXT: and r3, r3, r41319; CHECK-P8-LE-NEXT: lis r4, 152581320; CHECK-P8-LE-NEXT: ori r4, r4, 417121321; CHECK-P8-LE-NEXT: lwax r3, r3, r41322; CHECK-P8-LE-NEXT: blr1323;1324; CHECK-P8-BE-LABEL: ld_disjoint_align32_int32_t_uint64_t:1325; CHECK-P8-BE: # %bb.0: # %entry1326; CHECK-P8-BE-NEXT: lis r4, -152641327; CHECK-P8-BE-NEXT: and r3, r3, r41328; CHECK-P8-BE-NEXT: lis r4, 152581329; CHECK-P8-BE-NEXT: ori r4, r4, 417161330; CHECK-P8-BE-NEXT: lwax r3, r3, r41331; CHECK-P8-BE-NEXT: blr1332entry:1333 %and = and i64 %ptr, -10003415041334 %or = or i64 %and, 9999900001335 %0 = inttoptr i64 %or to ptr1336 %1 = load i64, ptr %0, align 161337 %conv = trunc i64 %1 to i321338 ret i32 %conv1339}1340 1341; Function Attrs: norecurse nounwind readonly uwtable willreturn1342define dso_local signext i32 @ld_not_disjoint64_int32_t_uint64_t(i64 %ptr) {1343; CHECK-P10-LE-LABEL: ld_not_disjoint64_int32_t_uint64_t:1344; CHECK-P10-LE: # %bb.0: # %entry1345; CHECK-P10-LE-NEXT: pli r4, 2321346; CHECK-P10-LE-NEXT: pli r5, 35675873291347; CHECK-P10-LE-NEXT: rldimi r5, r4, 32, 01348; CHECK-P10-LE-NEXT: or r3, r3, r51349; CHECK-P10-LE-NEXT: lwa r3, 0(r3)1350; CHECK-P10-LE-NEXT: blr1351;1352; CHECK-P10-BE-LABEL: ld_not_disjoint64_int32_t_uint64_t:1353; CHECK-P10-BE: # %bb.0: # %entry1354; CHECK-P10-BE-NEXT: pli r4, 2321355; CHECK-P10-BE-NEXT: pli r5, 35675873291356; CHECK-P10-BE-NEXT: rldimi r5, r4, 32, 01357; CHECK-P10-BE-NEXT: or r3, r3, r51358; CHECK-P10-BE-NEXT: lwa r3, 4(r3)1359; CHECK-P10-BE-NEXT: blr1360;1361; CHECK-P9-LE-LABEL: ld_not_disjoint64_int32_t_uint64_t:1362; CHECK-P9-LE: # %bb.0: # %entry1363; CHECK-P9-LE-NEXT: li r4, 291364; CHECK-P9-LE-NEXT: rldic r4, r4, 35, 241365; CHECK-P9-LE-NEXT: oris r4, r4, 544371366; CHECK-P9-LE-NEXT: ori r4, r4, 40971367; CHECK-P9-LE-NEXT: or r3, r3, r41368; CHECK-P9-LE-NEXT: lwa r3, 0(r3)1369; CHECK-P9-LE-NEXT: blr1370;1371; CHECK-P9-BE-LABEL: ld_not_disjoint64_int32_t_uint64_t:1372; CHECK-P9-BE: # %bb.0: # %entry1373; CHECK-P9-BE-NEXT: li r4, 291374; CHECK-P9-BE-NEXT: rldic r4, r4, 35, 241375; CHECK-P9-BE-NEXT: oris r4, r4, 544371376; CHECK-P9-BE-NEXT: ori r4, r4, 40971377; CHECK-P9-BE-NEXT: or r3, r3, r41378; CHECK-P9-BE-NEXT: lwa r3, 4(r3)1379; CHECK-P9-BE-NEXT: blr1380;1381; CHECK-P8-LE-LABEL: ld_not_disjoint64_int32_t_uint64_t:1382; CHECK-P8-LE: # %bb.0: # %entry1383; CHECK-P8-LE-NEXT: li r4, 291384; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 241385; CHECK-P8-LE-NEXT: oris r4, r4, 544371386; CHECK-P8-LE-NEXT: ori r4, r4, 40971387; CHECK-P8-LE-NEXT: or r3, r3, r41388; CHECK-P8-LE-NEXT: lwa r3, 0(r3)1389; CHECK-P8-LE-NEXT: blr1390;1391; CHECK-P8-BE-LABEL: ld_not_disjoint64_int32_t_uint64_t:1392; CHECK-P8-BE: # %bb.0: # %entry1393; CHECK-P8-BE-NEXT: li r4, 291394; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 241395; CHECK-P8-BE-NEXT: oris r4, r4, 544371396; CHECK-P8-BE-NEXT: ori r4, r4, 40971397; CHECK-P8-BE-NEXT: or r3, r3, r41398; CHECK-P8-BE-NEXT: lwa r3, 4(r3)1399; CHECK-P8-BE-NEXT: blr1400entry:1401 %or = or i64 %ptr, 10000000000011402 %0 = inttoptr i64 %or to ptr1403 %1 = load i64, ptr %0, align 81404 %conv = trunc i64 %1 to i321405 ret i32 %conv1406}1407 1408; Function Attrs: norecurse nounwind readonly uwtable willreturn1409define dso_local signext i32 @ld_disjoint_align64_int32_t_uint64_t(i64 %ptr) {1410; CHECK-P10-LE-LABEL: ld_disjoint_align64_int32_t_uint64_t:1411; CHECK-P10-LE: # %bb.0: # %entry1412; CHECK-P10-LE-NEXT: pli r4, 2441406251413; CHECK-P10-LE-NEXT: rldicr r3, r3, 0, 231414; CHECK-P10-LE-NEXT: rldic r4, r4, 12, 241415; CHECK-P10-LE-NEXT: lwax r3, r3, r41416; CHECK-P10-LE-NEXT: blr1417;1418; CHECK-P10-BE-LABEL: ld_disjoint_align64_int32_t_uint64_t:1419; CHECK-P10-BE: # %bb.0: # %entry1420; CHECK-P10-BE-NEXT: pli r4, 2321421; CHECK-P10-BE-NEXT: pli r5, 35675873321422; CHECK-P10-BE-NEXT: rldicr r3, r3, 0, 231423; CHECK-P10-BE-NEXT: rldimi r5, r4, 32, 01424; CHECK-P10-BE-NEXT: lwax r3, r3, r51425; CHECK-P10-BE-NEXT: blr1426;1427; CHECK-P9-LE-LABEL: ld_disjoint_align64_int32_t_uint64_t:1428; CHECK-P9-LE: # %bb.0: # %entry1429; CHECK-P9-LE-NEXT: lis r4, 37251430; CHECK-P9-LE-NEXT: rldicr r3, r3, 0, 231431; CHECK-P9-LE-NEXT: ori r4, r4, 190251432; CHECK-P9-LE-NEXT: rldic r4, r4, 12, 241433; CHECK-P9-LE-NEXT: lwax r3, r3, r41434; CHECK-P9-LE-NEXT: blr1435;1436; CHECK-P9-BE-LABEL: ld_disjoint_align64_int32_t_uint64_t:1437; CHECK-P9-BE: # %bb.0: # %entry1438; CHECK-P9-BE-NEXT: li r4, 291439; CHECK-P9-BE-NEXT: rldicr r3, r3, 0, 231440; CHECK-P9-BE-NEXT: rldic r4, r4, 35, 241441; CHECK-P9-BE-NEXT: oris r4, r4, 544371442; CHECK-P9-BE-NEXT: ori r4, r4, 41001443; CHECK-P9-BE-NEXT: lwax r3, r3, r41444; CHECK-P9-BE-NEXT: blr1445;1446; CHECK-P8-LE-LABEL: ld_disjoint_align64_int32_t_uint64_t:1447; CHECK-P8-LE: # %bb.0: # %entry1448; CHECK-P8-LE-NEXT: lis r4, 37251449; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 231450; CHECK-P8-LE-NEXT: ori r4, r4, 190251451; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 241452; CHECK-P8-LE-NEXT: lwax r3, r3, r41453; CHECK-P8-LE-NEXT: blr1454;1455; CHECK-P8-BE-LABEL: ld_disjoint_align64_int32_t_uint64_t:1456; CHECK-P8-BE: # %bb.0: # %entry1457; CHECK-P8-BE-NEXT: li r4, 291458; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 231459; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 241460; CHECK-P8-BE-NEXT: oris r4, r4, 544371461; CHECK-P8-BE-NEXT: ori r4, r4, 41001462; CHECK-P8-BE-NEXT: lwax r3, r3, r41463; CHECK-P8-BE-NEXT: blr1464entry:1465 %and = and i64 %ptr, -10995116277761466 %or = or i64 %and, 10000000000001467 %0 = inttoptr i64 %or to ptr1468 %1 = load i64, ptr %0, align 40961469 %conv = trunc i64 %1 to i321470 ret i32 %conv1471}1472 1473; Function Attrs: norecurse nounwind readonly uwtable willreturn1474define dso_local signext i32 @ld_cst_align16_int32_t_uint64_t() {1475; CHECK-LE-LABEL: ld_cst_align16_int32_t_uint64_t:1476; CHECK-LE: # %bb.0: # %entry1477; CHECK-LE-NEXT: lwa r3, 4080(0)1478; CHECK-LE-NEXT: blr1479;1480; CHECK-BE-LABEL: ld_cst_align16_int32_t_uint64_t:1481; CHECK-BE: # %bb.0: # %entry1482; CHECK-BE-NEXT: lwa r3, 4084(0)1483; CHECK-BE-NEXT: blr1484entry:1485 %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 161486 %conv = trunc i64 %0 to i321487 ret i32 %conv1488}1489 1490; Function Attrs: norecurse nounwind readonly uwtable willreturn1491define dso_local signext i32 @ld_cst_align32_int32_t_uint64_t() {1492; CHECK-LE-LABEL: ld_cst_align32_int32_t_uint64_t:1493; CHECK-LE: # %bb.0: # %entry1494; CHECK-LE-NEXT: lis r3, 1531495; CHECK-LE-NEXT: lwa r3, -27108(r3)1496; CHECK-LE-NEXT: blr1497;1498; CHECK-BE-LABEL: ld_cst_align32_int32_t_uint64_t:1499; CHECK-BE: # %bb.0: # %entry1500; CHECK-BE-NEXT: lis r3, 1531501; CHECK-BE-NEXT: lwa r3, -27104(r3)1502; CHECK-BE-NEXT: blr1503entry:1504 %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 81505 %conv = trunc i64 %0 to i321506 ret i32 %conv1507}1508 1509; Function Attrs: norecurse nounwind readonly uwtable willreturn1510define dso_local signext i32 @ld_cst_align64_int32_t_uint64_t() {1511; CHECK-P10-LE-LABEL: ld_cst_align64_int32_t_uint64_t:1512; CHECK-P10-LE: # %bb.0: # %entry1513; CHECK-P10-LE-NEXT: pli r3, 2441406251514; CHECK-P10-LE-NEXT: rldic r3, r3, 12, 241515; CHECK-P10-LE-NEXT: lwa r3, 0(r3)1516; CHECK-P10-LE-NEXT: blr1517;1518; CHECK-P10-BE-LABEL: ld_cst_align64_int32_t_uint64_t:1519; CHECK-P10-BE: # %bb.0: # %entry1520; CHECK-P10-BE-NEXT: pli r3, 2321521; CHECK-P10-BE-NEXT: pli r4, 35675873321522; CHECK-P10-BE-NEXT: rldimi r4, r3, 32, 01523; CHECK-P10-BE-NEXT: lwa r3, 0(r4)1524; CHECK-P10-BE-NEXT: blr1525;1526; CHECK-P9-LE-LABEL: ld_cst_align64_int32_t_uint64_t:1527; CHECK-P9-LE: # %bb.0: # %entry1528; CHECK-P9-LE-NEXT: lis r3, 37251529; CHECK-P9-LE-NEXT: ori r3, r3, 190251530; CHECK-P9-LE-NEXT: rldic r3, r3, 12, 241531; CHECK-P9-LE-NEXT: lwa r3, 0(r3)1532; CHECK-P9-LE-NEXT: blr1533;1534; CHECK-P9-BE-LABEL: ld_cst_align64_int32_t_uint64_t:1535; CHECK-P9-BE: # %bb.0: # %entry1536; CHECK-P9-BE-NEXT: li r3, 291537; CHECK-P9-BE-NEXT: rldic r3, r3, 35, 241538; CHECK-P9-BE-NEXT: oris r3, r3, 544371539; CHECK-P9-BE-NEXT: ori r3, r3, 41001540; CHECK-P9-BE-NEXT: lwa r3, 0(r3)1541; CHECK-P9-BE-NEXT: blr1542;1543; CHECK-P8-LE-LABEL: ld_cst_align64_int32_t_uint64_t:1544; CHECK-P8-LE: # %bb.0: # %entry1545; CHECK-P8-LE-NEXT: lis r3, 37251546; CHECK-P8-LE-NEXT: ori r3, r3, 190251547; CHECK-P8-LE-NEXT: rldic r3, r3, 12, 241548; CHECK-P8-LE-NEXT: lwa r3, 0(r3)1549; CHECK-P8-LE-NEXT: blr1550;1551; CHECK-P8-BE-LABEL: ld_cst_align64_int32_t_uint64_t:1552; CHECK-P8-BE: # %bb.0: # %entry1553; CHECK-P8-BE-NEXT: li r3, 291554; CHECK-P8-BE-NEXT: rldic r3, r3, 35, 241555; CHECK-P8-BE-NEXT: oris r3, r3, 544371556; CHECK-P8-BE-NEXT: ori r3, r3, 41001557; CHECK-P8-BE-NEXT: lwa r3, 0(r3)1558; CHECK-P8-BE-NEXT: blr1559entry:1560 %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40961561 %conv = trunc i64 %0 to i321562 ret i32 %conv1563}1564 1565; Function Attrs: norecurse nounwind readonly uwtable willreturn1566define dso_local signext i32 @ld_0_int32_t_float(i64 %ptr) {1567; CHECK-LABEL: ld_0_int32_t_float:1568; CHECK: # %bb.0: # %entry1569; CHECK-NEXT: lfs f0, 0(r3)1570; CHECK-NEXT: xscvdpsxws f0, f01571; CHECK-NEXT: mffprwz r3, f01572; CHECK-NEXT: extsw r3, r31573; CHECK-NEXT: blr1574entry:1575 %0 = inttoptr i64 %ptr to ptr1576 %1 = load float, ptr %0, align 41577 %conv = fptosi float %1 to i321578 ret i32 %conv1579}1580 1581; Function Attrs: norecurse nounwind readonly uwtable willreturn1582define dso_local signext i32 @ld_align16_int32_t_float(ptr nocapture readonly %ptr) {1583; CHECK-LABEL: ld_align16_int32_t_float:1584; CHECK: # %bb.0: # %entry1585; CHECK-NEXT: lfs f0, 8(r3)1586; CHECK-NEXT: xscvdpsxws f0, f01587; CHECK-NEXT: mffprwz r3, f01588; CHECK-NEXT: extsw r3, r31589; CHECK-NEXT: blr1590entry:1591 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81592 %0 = load float, ptr %add.ptr, align 41593 %conv = fptosi float %0 to i321594 ret i32 %conv1595}1596 1597; Function Attrs: norecurse nounwind readonly uwtable willreturn1598define dso_local signext i32 @ld_align32_int32_t_float(ptr nocapture readonly %ptr) {1599; CHECK-P10-LABEL: ld_align32_int32_t_float:1600; CHECK-P10: # %bb.0: # %entry1601; CHECK-P10-NEXT: plfs f0, 99999000(r3), 01602; CHECK-P10-NEXT: xscvdpsxws f0, f01603; CHECK-P10-NEXT: mffprwz r3, f01604; CHECK-P10-NEXT: extsw r3, r31605; CHECK-P10-NEXT: blr1606;1607; CHECK-PREP10-LABEL: ld_align32_int32_t_float:1608; CHECK-PREP10: # %bb.0: # %entry1609; CHECK-PREP10-NEXT: lis r4, 15251610; CHECK-PREP10-NEXT: ori r4, r4, 566001611; CHECK-PREP10-NEXT: lfsx f0, r3, r41612; CHECK-PREP10-NEXT: xscvdpsxws f0, f01613; CHECK-PREP10-NEXT: mffprwz r3, f01614; CHECK-PREP10-NEXT: extsw r3, r31615; CHECK-PREP10-NEXT: blr1616entry:1617 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001618 %0 = load float, ptr %add.ptr, align 41619 %conv = fptosi float %0 to i321620 ret i32 %conv1621}1622 1623; Function Attrs: norecurse nounwind readonly uwtable willreturn1624define dso_local signext i32 @ld_align64_int32_t_float(ptr nocapture readonly %ptr) {1625; CHECK-P10-LABEL: ld_align64_int32_t_float:1626; CHECK-P10: # %bb.0: # %entry1627; CHECK-P10-NEXT: pli r4, 2441406251628; CHECK-P10-NEXT: rldic r4, r4, 12, 241629; CHECK-P10-NEXT: lfsx f0, r3, r41630; CHECK-P10-NEXT: xscvdpsxws f0, f01631; CHECK-P10-NEXT: mffprwz r3, f01632; CHECK-P10-NEXT: extsw r3, r31633; CHECK-P10-NEXT: blr1634;1635; CHECK-PREP10-LABEL: ld_align64_int32_t_float:1636; CHECK-PREP10: # %bb.0: # %entry1637; CHECK-PREP10-NEXT: lis r4, 37251638; CHECK-PREP10-NEXT: ori r4, r4, 190251639; CHECK-PREP10-NEXT: rldic r4, r4, 12, 241640; CHECK-PREP10-NEXT: lfsx f0, r3, r41641; CHECK-PREP10-NEXT: xscvdpsxws f0, f01642; CHECK-PREP10-NEXT: mffprwz r3, f01643; CHECK-PREP10-NEXT: extsw r3, r31644; CHECK-PREP10-NEXT: blr1645entry:1646 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001647 %0 = load float, ptr %add.ptr, align 41648 %conv = fptosi float %0 to i321649 ret i32 %conv1650}1651 1652; Function Attrs: norecurse nounwind readonly uwtable willreturn1653define dso_local signext i32 @ld_reg_int32_t_float(ptr nocapture readonly %ptr, i64 %off) {1654; CHECK-LABEL: ld_reg_int32_t_float:1655; CHECK: # %bb.0: # %entry1656; CHECK-NEXT: lfsx f0, r3, r41657; CHECK-NEXT: xscvdpsxws f0, f01658; CHECK-NEXT: mffprwz r3, f01659; CHECK-NEXT: extsw r3, r31660; CHECK-NEXT: blr1661entry:1662 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1663 %0 = load float, ptr %add.ptr, align 41664 %conv = fptosi float %0 to i321665 ret i32 %conv1666}1667 1668; Function Attrs: norecurse nounwind readonly uwtable willreturn1669define dso_local signext i32 @ld_or_int32_t_float(i64 %ptr, i8 zeroext %off) {1670; CHECK-LABEL: ld_or_int32_t_float:1671; CHECK: # %bb.0: # %entry1672; CHECK-NEXT: or r3, r4, r31673; CHECK-NEXT: lfs f0, 0(r3)1674; CHECK-NEXT: xscvdpsxws f0, f01675; CHECK-NEXT: mffprwz r3, f01676; CHECK-NEXT: extsw r3, r31677; CHECK-NEXT: blr1678entry:1679 %conv = zext i8 %off to i641680 %or = or i64 %conv, %ptr1681 %0 = inttoptr i64 %or to ptr1682 %1 = load float, ptr %0, align 41683 %conv1 = fptosi float %1 to i321684 ret i32 %conv11685}1686 1687; Function Attrs: norecurse nounwind readonly uwtable willreturn1688define dso_local signext i32 @ld_or2_int32_t_float(i64 %ptr, i8 zeroext %off) {1689; CHECK-LABEL: ld_or2_int32_t_float:1690; CHECK: # %bb.0: # %entry1691; CHECK-NEXT: rldicr r3, r3, 0, 511692; CHECK-NEXT: lfsx f0, r3, r41693; CHECK-NEXT: xscvdpsxws f0, f01694; CHECK-NEXT: mffprwz r3, f01695; CHECK-NEXT: extsw r3, r31696; CHECK-NEXT: blr1697entry:1698 %and = and i64 %ptr, -40961699 %conv = zext i8 %off to i641700 %or = or i64 %and, %conv1701 %0 = inttoptr i64 %or to ptr1702 %1 = load float, ptr %0, align 41703 %conv1 = fptosi float %1 to i321704 ret i32 %conv11705}1706 1707; Function Attrs: norecurse nounwind readonly uwtable willreturn1708define dso_local signext i32 @ld_not_disjoint16_int32_t_float(i64 %ptr) {1709; CHECK-LABEL: ld_not_disjoint16_int32_t_float:1710; CHECK: # %bb.0: # %entry1711; CHECK-NEXT: ori r3, r3, 61712; CHECK-NEXT: lfs f0, 0(r3)1713; CHECK-NEXT: xscvdpsxws f0, f01714; CHECK-NEXT: mffprwz r3, f01715; CHECK-NEXT: extsw r3, r31716; CHECK-NEXT: blr1717entry:1718 %or = or i64 %ptr, 61719 %0 = inttoptr i64 %or to ptr1720 %1 = load float, ptr %0, align 41721 %conv = fptosi float %1 to i321722 ret i32 %conv1723}1724 1725; Function Attrs: norecurse nounwind readonly uwtable willreturn1726define dso_local signext i32 @ld_disjoint_align16_int32_t_float(i64 %ptr) {1727; CHECK-LABEL: ld_disjoint_align16_int32_t_float:1728; CHECK: # %bb.0: # %entry1729; CHECK-NEXT: rldicr r3, r3, 0, 511730; CHECK-NEXT: lfs f0, 24(r3)1731; CHECK-NEXT: xscvdpsxws f0, f01732; CHECK-NEXT: mffprwz r3, f01733; CHECK-NEXT: extsw r3, r31734; CHECK-NEXT: blr1735entry:1736 %and = and i64 %ptr, -40961737 %or = or i64 %and, 241738 %0 = inttoptr i64 %or to ptr1739 %1 = load float, ptr %0, align 81740 %conv = fptosi float %1 to i321741 ret i32 %conv1742}1743 1744; Function Attrs: norecurse nounwind readonly uwtable willreturn1745define dso_local signext i32 @ld_not_disjoint32_int32_t_float(i64 %ptr) {1746; CHECK-LABEL: ld_not_disjoint32_int32_t_float:1747; CHECK: # %bb.0: # %entry1748; CHECK-NEXT: ori r3, r3, 344631749; CHECK-NEXT: oris r3, r3, 11750; CHECK-NEXT: lfs f0, 0(r3)1751; CHECK-NEXT: xscvdpsxws f0, f01752; CHECK-NEXT: mffprwz r3, f01753; CHECK-NEXT: extsw r3, r31754; CHECK-NEXT: blr1755entry:1756 %or = or i64 %ptr, 999991757 %0 = inttoptr i64 %or to ptr1758 %1 = load float, ptr %0, align 41759 %conv = fptosi float %1 to i321760 ret i32 %conv1761}1762 1763; Function Attrs: norecurse nounwind readonly uwtable willreturn1764define dso_local signext i32 @ld_disjoint_align32_int32_t_float(i64 %ptr) {1765; CHECK-P10-LABEL: ld_disjoint_align32_int32_t_float:1766; CHECK-P10: # %bb.0: # %entry1767; CHECK-P10-NEXT: lis r4, -152641768; CHECK-P10-NEXT: and r3, r3, r41769; CHECK-P10-NEXT: plfs f0, 999990000(r3), 01770; CHECK-P10-NEXT: xscvdpsxws f0, f01771; CHECK-P10-NEXT: mffprwz r3, f01772; CHECK-P10-NEXT: extsw r3, r31773; CHECK-P10-NEXT: blr1774;1775; CHECK-PREP10-LABEL: ld_disjoint_align32_int32_t_float:1776; CHECK-PREP10: # %bb.0: # %entry1777; CHECK-PREP10-NEXT: lis r4, -152641778; CHECK-PREP10-NEXT: and r3, r3, r41779; CHECK-PREP10-NEXT: lis r4, 152581780; CHECK-PREP10-NEXT: ori r4, r4, 417121781; CHECK-PREP10-NEXT: lfsx f0, r3, r41782; CHECK-PREP10-NEXT: xscvdpsxws f0, f01783; CHECK-PREP10-NEXT: mffprwz r3, f01784; CHECK-PREP10-NEXT: extsw r3, r31785; CHECK-PREP10-NEXT: blr1786entry:1787 %and = and i64 %ptr, -10003415041788 %or = or i64 %and, 9999900001789 %0 = inttoptr i64 %or to ptr1790 %1 = load float, ptr %0, align 161791 %conv = fptosi float %1 to i321792 ret i32 %conv1793}1794 1795; Function Attrs: norecurse nounwind readonly uwtable willreturn1796define dso_local signext i32 @ld_not_disjoint64_int32_t_float(i64 %ptr) {1797; CHECK-P10-LABEL: ld_not_disjoint64_int32_t_float:1798; CHECK-P10: # %bb.0: # %entry1799; CHECK-P10-NEXT: pli r4, 2321800; CHECK-P10-NEXT: pli r5, 35675873291801; CHECK-P10-NEXT: rldimi r5, r4, 32, 01802; CHECK-P10-NEXT: or r3, r3, r51803; CHECK-P10-NEXT: lfs f0, 0(r3)1804; CHECK-P10-NEXT: xscvdpsxws f0, f01805; CHECK-P10-NEXT: mffprwz r3, f01806; CHECK-P10-NEXT: extsw r3, r31807; CHECK-P10-NEXT: blr1808;1809; CHECK-PREP10-LABEL: ld_not_disjoint64_int32_t_float:1810; CHECK-PREP10: # %bb.0: # %entry1811; CHECK-PREP10-NEXT: li r4, 291812; CHECK-PREP10-NEXT: rldic r4, r4, 35, 241813; CHECK-PREP10-NEXT: oris r4, r4, 544371814; CHECK-PREP10-NEXT: ori r4, r4, 40971815; CHECK-PREP10-NEXT: or r3, r3, r41816; CHECK-PREP10-NEXT: lfs f0, 0(r3)1817; CHECK-PREP10-NEXT: xscvdpsxws f0, f01818; CHECK-PREP10-NEXT: mffprwz r3, f01819; CHECK-PREP10-NEXT: extsw r3, r31820; CHECK-PREP10-NEXT: blr1821entry:1822 %or = or i64 %ptr, 10000000000011823 %0 = inttoptr i64 %or to ptr1824 %1 = load float, ptr %0, align 41825 %conv = fptosi float %1 to i321826 ret i32 %conv1827}1828 1829; Function Attrs: norecurse nounwind readonly uwtable willreturn1830define dso_local signext i32 @ld_disjoint_align64_int32_t_float(i64 %ptr) {1831; CHECK-P10-LABEL: ld_disjoint_align64_int32_t_float:1832; CHECK-P10: # %bb.0: # %entry1833; CHECK-P10-NEXT: pli r4, 2441406251834; CHECK-P10-NEXT: rldicr r3, r3, 0, 231835; CHECK-P10-NEXT: rldic r4, r4, 12, 241836; CHECK-P10-NEXT: lfsx f0, r3, r41837; CHECK-P10-NEXT: xscvdpsxws f0, f01838; CHECK-P10-NEXT: mffprwz r3, f01839; CHECK-P10-NEXT: extsw r3, r31840; CHECK-P10-NEXT: blr1841;1842; CHECK-PREP10-LABEL: ld_disjoint_align64_int32_t_float:1843; CHECK-PREP10: # %bb.0: # %entry1844; CHECK-PREP10-NEXT: lis r4, 37251845; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 231846; CHECK-PREP10-NEXT: ori r4, r4, 190251847; CHECK-PREP10-NEXT: rldic r4, r4, 12, 241848; CHECK-PREP10-NEXT: lfsx f0, r3, r41849; CHECK-PREP10-NEXT: xscvdpsxws f0, f01850; CHECK-PREP10-NEXT: mffprwz r3, f01851; CHECK-PREP10-NEXT: extsw r3, r31852; CHECK-PREP10-NEXT: blr1853entry:1854 %and = and i64 %ptr, -10995116277761855 %or = or i64 %and, 10000000000001856 %0 = inttoptr i64 %or to ptr1857 %1 = load float, ptr %0, align 40961858 %conv = fptosi float %1 to i321859 ret i32 %conv1860}1861 1862; Function Attrs: norecurse nounwind readonly uwtable willreturn1863define dso_local signext i32 @ld_cst_align16_int32_t_float() {1864; CHECK-LABEL: ld_cst_align16_int32_t_float:1865; CHECK: # %bb.0: # %entry1866; CHECK-NEXT: lfs f0, 4080(0)1867; CHECK-NEXT: xscvdpsxws f0, f01868; CHECK-NEXT: mffprwz r3, f01869; CHECK-NEXT: extsw r3, r31870; CHECK-NEXT: blr1871entry:1872 %0 = load float, ptr inttoptr (i64 4080 to ptr), align 161873 %conv = fptosi float %0 to i321874 ret i32 %conv1875}1876 1877; Function Attrs: norecurse nounwind readonly uwtable willreturn1878define dso_local signext i32 @ld_cst_align32_int32_t_float() {1879; CHECK-LABEL: ld_cst_align32_int32_t_float:1880; CHECK: # %bb.0: # %entry1881; CHECK-NEXT: lis r3, 1531882; CHECK-NEXT: lfs f0, -27108(r3)1883; CHECK-NEXT: xscvdpsxws f0, f01884; CHECK-NEXT: mffprwz r3, f01885; CHECK-NEXT: extsw r3, r31886; CHECK-NEXT: blr1887entry:1888 %0 = load float, ptr inttoptr (i64 9999900 to ptr), align 41889 %conv = fptosi float %0 to i321890 ret i32 %conv1891}1892 1893; Function Attrs: norecurse nounwind readonly uwtable willreturn1894define dso_local signext i32 @ld_cst_align64_int32_t_float() {1895; CHECK-P10-LABEL: ld_cst_align64_int32_t_float:1896; CHECK-P10: # %bb.0: # %entry1897; CHECK-P10-NEXT: pli r3, 2441406251898; CHECK-P10-NEXT: rldic r3, r3, 12, 241899; CHECK-P10-NEXT: lfs f0, 0(r3)1900; CHECK-P10-NEXT: xscvdpsxws f0, f01901; CHECK-P10-NEXT: mffprwz r3, f01902; CHECK-P10-NEXT: extsw r3, r31903; CHECK-P10-NEXT: blr1904;1905; CHECK-PREP10-LABEL: ld_cst_align64_int32_t_float:1906; CHECK-PREP10: # %bb.0: # %entry1907; CHECK-PREP10-NEXT: lis r3, 37251908; CHECK-PREP10-NEXT: ori r3, r3, 190251909; CHECK-PREP10-NEXT: rldic r3, r3, 12, 241910; CHECK-PREP10-NEXT: lfs f0, 0(r3)1911; CHECK-PREP10-NEXT: xscvdpsxws f0, f01912; CHECK-PREP10-NEXT: mffprwz r3, f01913; CHECK-PREP10-NEXT: extsw r3, r31914; CHECK-PREP10-NEXT: blr1915entry:1916 %0 = load float, ptr inttoptr (i64 1000000000000 to ptr), align 40961917 %conv = fptosi float %0 to i321918 ret i32 %conv1919}1920 1921; Function Attrs: norecurse nounwind readonly uwtable willreturn1922define dso_local signext i32 @ld_0_int32_t_double(i64 %ptr) {1923; CHECK-LABEL: ld_0_int32_t_double:1924; CHECK: # %bb.0: # %entry1925; CHECK-NEXT: lfd f0, 0(r3)1926; CHECK-NEXT: xscvdpsxws f0, f01927; CHECK-NEXT: mffprwz r3, f01928; CHECK-NEXT: extsw r3, r31929; CHECK-NEXT: blr1930entry:1931 %0 = inttoptr i64 %ptr to ptr1932 %1 = load double, ptr %0, align 81933 %conv = fptosi double %1 to i321934 ret i32 %conv1935}1936 1937; Function Attrs: norecurse nounwind readonly uwtable willreturn1938define dso_local signext i32 @ld_align16_int32_t_double(ptr nocapture readonly %ptr) {1939; CHECK-LABEL: ld_align16_int32_t_double:1940; CHECK: # %bb.0: # %entry1941; CHECK-NEXT: lfd f0, 8(r3)1942; CHECK-NEXT: xscvdpsxws f0, f01943; CHECK-NEXT: mffprwz r3, f01944; CHECK-NEXT: extsw r3, r31945; CHECK-NEXT: blr1946entry:1947 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81948 %0 = load double, ptr %add.ptr, align 81949 %conv = fptosi double %0 to i321950 ret i32 %conv1951}1952 1953; Function Attrs: norecurse nounwind readonly uwtable willreturn1954define dso_local signext i32 @ld_align32_int32_t_double(ptr nocapture readonly %ptr) {1955; CHECK-P10-LABEL: ld_align32_int32_t_double:1956; CHECK-P10: # %bb.0: # %entry1957; CHECK-P10-NEXT: plfd f0, 99999000(r3), 01958; CHECK-P10-NEXT: xscvdpsxws f0, f01959; CHECK-P10-NEXT: mffprwz r3, f01960; CHECK-P10-NEXT: extsw r3, r31961; CHECK-P10-NEXT: blr1962;1963; CHECK-PREP10-LABEL: ld_align32_int32_t_double:1964; CHECK-PREP10: # %bb.0: # %entry1965; CHECK-PREP10-NEXT: lis r4, 15251966; CHECK-PREP10-NEXT: ori r4, r4, 566001967; CHECK-PREP10-NEXT: lfdx f0, r3, r41968; CHECK-PREP10-NEXT: xscvdpsxws f0, f01969; CHECK-PREP10-NEXT: mffprwz r3, f01970; CHECK-PREP10-NEXT: extsw r3, r31971; CHECK-PREP10-NEXT: blr1972entry:1973 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001974 %0 = load double, ptr %add.ptr, align 81975 %conv = fptosi double %0 to i321976 ret i32 %conv1977}1978 1979; Function Attrs: norecurse nounwind readonly uwtable willreturn1980define dso_local signext i32 @ld_align64_int32_t_double(ptr nocapture readonly %ptr) {1981; CHECK-P10-LABEL: ld_align64_int32_t_double:1982; CHECK-P10: # %bb.0: # %entry1983; CHECK-P10-NEXT: pli r4, 2441406251984; CHECK-P10-NEXT: rldic r4, r4, 12, 241985; CHECK-P10-NEXT: lfdx f0, r3, r41986; CHECK-P10-NEXT: xscvdpsxws f0, f01987; CHECK-P10-NEXT: mffprwz r3, f01988; CHECK-P10-NEXT: extsw r3, r31989; CHECK-P10-NEXT: blr1990;1991; CHECK-PREP10-LABEL: ld_align64_int32_t_double:1992; CHECK-PREP10: # %bb.0: # %entry1993; CHECK-PREP10-NEXT: lis r4, 37251994; CHECK-PREP10-NEXT: ori r4, r4, 190251995; CHECK-PREP10-NEXT: rldic r4, r4, 12, 241996; CHECK-PREP10-NEXT: lfdx f0, r3, r41997; CHECK-PREP10-NEXT: xscvdpsxws f0, f01998; CHECK-PREP10-NEXT: mffprwz r3, f01999; CHECK-PREP10-NEXT: extsw r3, r32000; CHECK-PREP10-NEXT: blr2001entry:2002 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002003 %0 = load double, ptr %add.ptr, align 82004 %conv = fptosi double %0 to i322005 ret i32 %conv2006}2007 2008; Function Attrs: norecurse nounwind readonly uwtable willreturn2009define dso_local signext i32 @ld_reg_int32_t_double(ptr nocapture readonly %ptr, i64 %off) {2010; CHECK-LABEL: ld_reg_int32_t_double:2011; CHECK: # %bb.0: # %entry2012; CHECK-NEXT: lfdx f0, r3, r42013; CHECK-NEXT: xscvdpsxws f0, f02014; CHECK-NEXT: mffprwz r3, f02015; CHECK-NEXT: extsw r3, r32016; CHECK-NEXT: blr2017entry:2018 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2019 %0 = load double, ptr %add.ptr, align 82020 %conv = fptosi double %0 to i322021 ret i32 %conv2022}2023 2024; Function Attrs: norecurse nounwind readonly uwtable willreturn2025define dso_local signext i32 @ld_or_int32_t_double(i64 %ptr, i8 zeroext %off) {2026; CHECK-LABEL: ld_or_int32_t_double:2027; CHECK: # %bb.0: # %entry2028; CHECK-NEXT: or r3, r4, r32029; CHECK-NEXT: lfd f0, 0(r3)2030; CHECK-NEXT: xscvdpsxws f0, f02031; CHECK-NEXT: mffprwz r3, f02032; CHECK-NEXT: extsw r3, r32033; CHECK-NEXT: blr2034entry:2035 %conv = zext i8 %off to i642036 %or = or i64 %conv, %ptr2037 %0 = inttoptr i64 %or to ptr2038 %1 = load double, ptr %0, align 82039 %conv1 = fptosi double %1 to i322040 ret i32 %conv12041}2042 2043; Function Attrs: norecurse nounwind readonly uwtable willreturn2044define dso_local signext i32 @ld_or2_int32_t_double(i64 %ptr, i8 zeroext %off) {2045; CHECK-LABEL: ld_or2_int32_t_double:2046; CHECK: # %bb.0: # %entry2047; CHECK-NEXT: rldicr r3, r3, 0, 512048; CHECK-NEXT: lfdx f0, r3, r42049; CHECK-NEXT: xscvdpsxws f0, f02050; CHECK-NEXT: mffprwz r3, f02051; CHECK-NEXT: extsw r3, r32052; CHECK-NEXT: blr2053entry:2054 %and = and i64 %ptr, -40962055 %conv = zext i8 %off to i642056 %or = or i64 %and, %conv2057 %0 = inttoptr i64 %or to ptr2058 %1 = load double, ptr %0, align 82059 %conv1 = fptosi double %1 to i322060 ret i32 %conv12061}2062 2063; Function Attrs: norecurse nounwind readonly uwtable willreturn2064define dso_local signext i32 @ld_not_disjoint16_int32_t_double(i64 %ptr) {2065; CHECK-LABEL: ld_not_disjoint16_int32_t_double:2066; CHECK: # %bb.0: # %entry2067; CHECK-NEXT: ori r3, r3, 62068; CHECK-NEXT: lfd f0, 0(r3)2069; CHECK-NEXT: xscvdpsxws f0, f02070; CHECK-NEXT: mffprwz r3, f02071; CHECK-NEXT: extsw r3, r32072; CHECK-NEXT: blr2073entry:2074 %or = or i64 %ptr, 62075 %0 = inttoptr i64 %or to ptr2076 %1 = load double, ptr %0, align 82077 %conv = fptosi double %1 to i322078 ret i32 %conv2079}2080 2081; Function Attrs: norecurse nounwind readonly uwtable willreturn2082define dso_local signext i32 @ld_disjoint_align16_int32_t_double(i64 %ptr) {2083; CHECK-LABEL: ld_disjoint_align16_int32_t_double:2084; CHECK: # %bb.0: # %entry2085; CHECK-NEXT: rldicr r3, r3, 0, 512086; CHECK-NEXT: lfd f0, 24(r3)2087; CHECK-NEXT: xscvdpsxws f0, f02088; CHECK-NEXT: mffprwz r3, f02089; CHECK-NEXT: extsw r3, r32090; CHECK-NEXT: blr2091entry:2092 %and = and i64 %ptr, -40962093 %or = or i64 %and, 242094 %0 = inttoptr i64 %or to ptr2095 %1 = load double, ptr %0, align 82096 %conv = fptosi double %1 to i322097 ret i32 %conv2098}2099 2100; Function Attrs: norecurse nounwind readonly uwtable willreturn2101define dso_local signext i32 @ld_not_disjoint32_int32_t_double(i64 %ptr) {2102; CHECK-LABEL: ld_not_disjoint32_int32_t_double:2103; CHECK: # %bb.0: # %entry2104; CHECK-NEXT: ori r3, r3, 344632105; CHECK-NEXT: oris r3, r3, 12106; CHECK-NEXT: lfd f0, 0(r3)2107; CHECK-NEXT: xscvdpsxws f0, f02108; CHECK-NEXT: mffprwz r3, f02109; CHECK-NEXT: extsw r3, r32110; CHECK-NEXT: blr2111entry:2112 %or = or i64 %ptr, 999992113 %0 = inttoptr i64 %or to ptr2114 %1 = load double, ptr %0, align 82115 %conv = fptosi double %1 to i322116 ret i32 %conv2117}2118 2119; Function Attrs: norecurse nounwind readonly uwtable willreturn2120define dso_local signext i32 @ld_disjoint_align32_int32_t_double(i64 %ptr) {2121; CHECK-P10-LABEL: ld_disjoint_align32_int32_t_double:2122; CHECK-P10: # %bb.0: # %entry2123; CHECK-P10-NEXT: lis r4, -152642124; CHECK-P10-NEXT: and r3, r3, r42125; CHECK-P10-NEXT: plfd f0, 999990000(r3), 02126; CHECK-P10-NEXT: xscvdpsxws f0, f02127; CHECK-P10-NEXT: mffprwz r3, f02128; CHECK-P10-NEXT: extsw r3, r32129; CHECK-P10-NEXT: blr2130;2131; CHECK-PREP10-LABEL: ld_disjoint_align32_int32_t_double:2132; CHECK-PREP10: # %bb.0: # %entry2133; CHECK-PREP10-NEXT: lis r4, -152642134; CHECK-PREP10-NEXT: and r3, r3, r42135; CHECK-PREP10-NEXT: lis r4, 152582136; CHECK-PREP10-NEXT: ori r4, r4, 417122137; CHECK-PREP10-NEXT: lfdx f0, r3, r42138; CHECK-PREP10-NEXT: xscvdpsxws f0, f02139; CHECK-PREP10-NEXT: mffprwz r3, f02140; CHECK-PREP10-NEXT: extsw r3, r32141; CHECK-PREP10-NEXT: blr2142entry:2143 %and = and i64 %ptr, -10003415042144 %or = or i64 %and, 9999900002145 %0 = inttoptr i64 %or to ptr2146 %1 = load double, ptr %0, align 162147 %conv = fptosi double %1 to i322148 ret i32 %conv2149}2150 2151; Function Attrs: norecurse nounwind readonly uwtable willreturn2152define dso_local signext i32 @ld_not_disjoint64_int32_t_double(i64 %ptr) {2153; CHECK-P10-LABEL: ld_not_disjoint64_int32_t_double:2154; CHECK-P10: # %bb.0: # %entry2155; CHECK-P10-NEXT: pli r4, 2322156; CHECK-P10-NEXT: pli r5, 35675873292157; CHECK-P10-NEXT: rldimi r5, r4, 32, 02158; CHECK-P10-NEXT: or r3, r3, r52159; CHECK-P10-NEXT: lfd f0, 0(r3)2160; CHECK-P10-NEXT: xscvdpsxws f0, f02161; CHECK-P10-NEXT: mffprwz r3, f02162; CHECK-P10-NEXT: extsw r3, r32163; CHECK-P10-NEXT: blr2164;2165; CHECK-PREP10-LABEL: ld_not_disjoint64_int32_t_double:2166; CHECK-PREP10: # %bb.0: # %entry2167; CHECK-PREP10-NEXT: li r4, 292168; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242169; CHECK-PREP10-NEXT: oris r4, r4, 544372170; CHECK-PREP10-NEXT: ori r4, r4, 40972171; CHECK-PREP10-NEXT: or r3, r3, r42172; CHECK-PREP10-NEXT: lfd f0, 0(r3)2173; CHECK-PREP10-NEXT: xscvdpsxws f0, f02174; CHECK-PREP10-NEXT: mffprwz r3, f02175; CHECK-PREP10-NEXT: extsw r3, r32176; CHECK-PREP10-NEXT: blr2177entry:2178 %or = or i64 %ptr, 10000000000012179 %0 = inttoptr i64 %or to ptr2180 %1 = load double, ptr %0, align 82181 %conv = fptosi double %1 to i322182 ret i32 %conv2183}2184 2185; Function Attrs: norecurse nounwind readonly uwtable willreturn2186define dso_local signext i32 @ld_disjoint_align64_int32_t_double(i64 %ptr) {2187; CHECK-P10-LABEL: ld_disjoint_align64_int32_t_double:2188; CHECK-P10: # %bb.0: # %entry2189; CHECK-P10-NEXT: pli r4, 2441406252190; CHECK-P10-NEXT: rldicr r3, r3, 0, 232191; CHECK-P10-NEXT: rldic r4, r4, 12, 242192; CHECK-P10-NEXT: lfdx f0, r3, r42193; CHECK-P10-NEXT: xscvdpsxws f0, f02194; CHECK-P10-NEXT: mffprwz r3, f02195; CHECK-P10-NEXT: extsw r3, r32196; CHECK-P10-NEXT: blr2197;2198; CHECK-PREP10-LABEL: ld_disjoint_align64_int32_t_double:2199; CHECK-PREP10: # %bb.0: # %entry2200; CHECK-PREP10-NEXT: lis r4, 37252201; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232202; CHECK-PREP10-NEXT: ori r4, r4, 190252203; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242204; CHECK-PREP10-NEXT: lfdx f0, r3, r42205; CHECK-PREP10-NEXT: xscvdpsxws f0, f02206; CHECK-PREP10-NEXT: mffprwz r3, f02207; CHECK-PREP10-NEXT: extsw r3, r32208; CHECK-PREP10-NEXT: blr2209entry:2210 %and = and i64 %ptr, -10995116277762211 %or = or i64 %and, 10000000000002212 %0 = inttoptr i64 %or to ptr2213 %1 = load double, ptr %0, align 40962214 %conv = fptosi double %1 to i322215 ret i32 %conv2216}2217 2218; Function Attrs: norecurse nounwind readonly uwtable willreturn2219define dso_local signext i32 @ld_cst_align16_int32_t_double() {2220; CHECK-LABEL: ld_cst_align16_int32_t_double:2221; CHECK: # %bb.0: # %entry2222; CHECK-NEXT: lfd f0, 4080(0)2223; CHECK-NEXT: xscvdpsxws f0, f02224; CHECK-NEXT: mffprwz r3, f02225; CHECK-NEXT: extsw r3, r32226; CHECK-NEXT: blr2227entry:2228 %0 = load double, ptr inttoptr (i64 4080 to ptr), align 162229 %conv = fptosi double %0 to i322230 ret i32 %conv2231}2232 2233; Function Attrs: norecurse nounwind readonly uwtable willreturn2234define dso_local signext i32 @ld_cst_align32_int32_t_double() {2235; CHECK-LABEL: ld_cst_align32_int32_t_double:2236; CHECK: # %bb.0: # %entry2237; CHECK-NEXT: lis r3, 1532238; CHECK-NEXT: lfd f0, -27108(r3)2239; CHECK-NEXT: xscvdpsxws f0, f02240; CHECK-NEXT: mffprwz r3, f02241; CHECK-NEXT: extsw r3, r32242; CHECK-NEXT: blr2243entry:2244 %0 = load double, ptr inttoptr (i64 9999900 to ptr), align 82245 %conv = fptosi double %0 to i322246 ret i32 %conv2247}2248 2249; Function Attrs: norecurse nounwind readonly uwtable willreturn2250define dso_local signext i32 @ld_cst_align64_int32_t_double() {2251; CHECK-P10-LABEL: ld_cst_align64_int32_t_double:2252; CHECK-P10: # %bb.0: # %entry2253; CHECK-P10-NEXT: pli r3, 2441406252254; CHECK-P10-NEXT: rldic r3, r3, 12, 242255; CHECK-P10-NEXT: lfd f0, 0(r3)2256; CHECK-P10-NEXT: xscvdpsxws f0, f02257; CHECK-P10-NEXT: mffprwz r3, f02258; CHECK-P10-NEXT: extsw r3, r32259; CHECK-P10-NEXT: blr2260;2261; CHECK-PREP10-LABEL: ld_cst_align64_int32_t_double:2262; CHECK-PREP10: # %bb.0: # %entry2263; CHECK-PREP10-NEXT: lis r3, 37252264; CHECK-PREP10-NEXT: ori r3, r3, 190252265; CHECK-PREP10-NEXT: rldic r3, r3, 12, 242266; CHECK-PREP10-NEXT: lfd f0, 0(r3)2267; CHECK-PREP10-NEXT: xscvdpsxws f0, f02268; CHECK-PREP10-NEXT: mffprwz r3, f02269; CHECK-PREP10-NEXT: extsw r3, r32270; CHECK-PREP10-NEXT: blr2271entry:2272 %0 = load double, ptr inttoptr (i64 1000000000000 to ptr), align 40962273 %conv = fptosi double %0 to i322274 ret i32 %conv2275}2276 2277; Function Attrs: norecurse nounwind readonly uwtable willreturn2278define dso_local zeroext i32 @ld_0_uint32_t_uint8_t(i64 %ptr) {2279; CHECK-LABEL: ld_0_uint32_t_uint8_t:2280; CHECK: # %bb.0: # %entry2281; CHECK-NEXT: lbz r3, 0(r3)2282; CHECK-NEXT: blr2283entry:2284 %0 = inttoptr i64 %ptr to ptr2285 %1 = load i8, ptr %0, align 12286 %conv = zext i8 %1 to i322287 ret i32 %conv2288}2289 2290; Function Attrs: norecurse nounwind readonly uwtable willreturn2291define dso_local zeroext i32 @ld_align16_uint32_t_uint8_t(ptr nocapture readonly %ptr) {2292; CHECK-LABEL: ld_align16_uint32_t_uint8_t:2293; CHECK: # %bb.0: # %entry2294; CHECK-NEXT: lbz r3, 8(r3)2295; CHECK-NEXT: blr2296entry:2297 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82298 %0 = load i8, ptr %add.ptr, align 12299 %conv = zext i8 %0 to i322300 ret i32 %conv2301}2302 2303; Function Attrs: norecurse nounwind readonly uwtable willreturn2304define dso_local zeroext i32 @ld_align32_uint32_t_uint8_t(ptr nocapture readonly %ptr) {2305; CHECK-P10-LABEL: ld_align32_uint32_t_uint8_t:2306; CHECK-P10: # %bb.0: # %entry2307; CHECK-P10-NEXT: plbz r3, 99999000(r3), 02308; CHECK-P10-NEXT: blr2309;2310; CHECK-PREP10-LABEL: ld_align32_uint32_t_uint8_t:2311; CHECK-PREP10: # %bb.0: # %entry2312; CHECK-PREP10-NEXT: lis r4, 15252313; CHECK-PREP10-NEXT: ori r4, r4, 566002314; CHECK-PREP10-NEXT: lbzx r3, r3, r42315; CHECK-PREP10-NEXT: blr2316entry:2317 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002318 %0 = load i8, ptr %add.ptr, align 12319 %conv = zext i8 %0 to i322320 ret i32 %conv2321}2322 2323; Function Attrs: norecurse nounwind readonly uwtable willreturn2324define dso_local zeroext i32 @ld_align64_uint32_t_uint8_t(ptr nocapture readonly %ptr) {2325; CHECK-P10-LABEL: ld_align64_uint32_t_uint8_t:2326; CHECK-P10: # %bb.0: # %entry2327; CHECK-P10-NEXT: pli r4, 2441406252328; CHECK-P10-NEXT: rldic r4, r4, 12, 242329; CHECK-P10-NEXT: lbzx r3, r3, r42330; CHECK-P10-NEXT: blr2331;2332; CHECK-PREP10-LABEL: ld_align64_uint32_t_uint8_t:2333; CHECK-PREP10: # %bb.0: # %entry2334; CHECK-PREP10-NEXT: lis r4, 37252335; CHECK-PREP10-NEXT: ori r4, r4, 190252336; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242337; CHECK-PREP10-NEXT: lbzx r3, r3, r42338; CHECK-PREP10-NEXT: blr2339entry:2340 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002341 %0 = load i8, ptr %add.ptr, align 12342 %conv = zext i8 %0 to i322343 ret i32 %conv2344}2345 2346; Function Attrs: norecurse nounwind readonly uwtable willreturn2347define dso_local zeroext i32 @ld_reg_uint32_t_uint8_t(ptr nocapture readonly %ptr, i64 %off) {2348; CHECK-LABEL: ld_reg_uint32_t_uint8_t:2349; CHECK: # %bb.0: # %entry2350; CHECK-NEXT: lbzx r3, r3, r42351; CHECK-NEXT: blr2352entry:2353 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2354 %0 = load i8, ptr %add.ptr, align 12355 %conv = zext i8 %0 to i322356 ret i32 %conv2357}2358 2359; Function Attrs: norecurse nounwind readonly uwtable willreturn2360define dso_local zeroext i32 @ld_or_uint32_t_uint8_t(i64 %ptr, i8 zeroext %off) {2361; CHECK-LABEL: ld_or_uint32_t_uint8_t:2362; CHECK: # %bb.0: # %entry2363; CHECK-NEXT: or r3, r4, r32364; CHECK-NEXT: lbz r3, 0(r3)2365; CHECK-NEXT: blr2366entry:2367 %conv = zext i8 %off to i642368 %or = or i64 %conv, %ptr2369 %0 = inttoptr i64 %or to ptr2370 %1 = load i8, ptr %0, align 12371 %conv1 = zext i8 %1 to i322372 ret i32 %conv12373}2374 2375; Function Attrs: norecurse nounwind readonly uwtable willreturn2376define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_uint8_t(i64 %ptr) {2377; CHECK-LABEL: ld_not_disjoint16_uint32_t_uint8_t:2378; CHECK: # %bb.0: # %entry2379; CHECK-NEXT: ori r3, r3, 62380; CHECK-NEXT: lbz r3, 0(r3)2381; CHECK-NEXT: blr2382entry:2383 %or = or i64 %ptr, 62384 %0 = inttoptr i64 %or to ptr2385 %1 = load i8, ptr %0, align 12386 %conv = zext i8 %1 to i322387 ret i32 %conv2388}2389 2390; Function Attrs: norecurse nounwind readonly uwtable willreturn2391define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_uint8_t(i64 %ptr) {2392; CHECK-LABEL: ld_disjoint_align16_uint32_t_uint8_t:2393; CHECK: # %bb.0: # %entry2394; CHECK-NEXT: rldicr r3, r3, 0, 512395; CHECK-NEXT: lbz r3, 24(r3)2396; CHECK-NEXT: blr2397entry:2398 %and = and i64 %ptr, -40962399 %or = or i64 %and, 242400 %0 = inttoptr i64 %or to ptr2401 %1 = load i8, ptr %0, align 82402 %conv = zext i8 %1 to i322403 ret i32 %conv2404}2405 2406; Function Attrs: norecurse nounwind readonly uwtable willreturn2407define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_uint8_t(i64 %ptr) {2408; CHECK-LABEL: ld_not_disjoint32_uint32_t_uint8_t:2409; CHECK: # %bb.0: # %entry2410; CHECK-NEXT: ori r3, r3, 344632411; CHECK-NEXT: oris r3, r3, 12412; CHECK-NEXT: lbz r3, 0(r3)2413; CHECK-NEXT: blr2414entry:2415 %or = or i64 %ptr, 999992416 %0 = inttoptr i64 %or to ptr2417 %1 = load i8, ptr %0, align 12418 %conv = zext i8 %1 to i322419 ret i32 %conv2420}2421 2422; Function Attrs: norecurse nounwind readonly uwtable willreturn2423define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_uint8_t(i64 %ptr) {2424; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_uint8_t:2425; CHECK-P10: # %bb.0: # %entry2426; CHECK-P10-NEXT: lis r4, -152642427; CHECK-P10-NEXT: and r3, r3, r42428; CHECK-P10-NEXT: plbz r3, 999990000(r3), 02429; CHECK-P10-NEXT: blr2430;2431; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_uint8_t:2432; CHECK-PREP10: # %bb.0: # %entry2433; CHECK-PREP10-NEXT: lis r4, -152642434; CHECK-PREP10-NEXT: and r3, r3, r42435; CHECK-PREP10-NEXT: lis r4, 152582436; CHECK-PREP10-NEXT: ori r4, r4, 417122437; CHECK-PREP10-NEXT: lbzx r3, r3, r42438; CHECK-PREP10-NEXT: blr2439entry:2440 %and = and i64 %ptr, -10003415042441 %or = or i64 %and, 9999900002442 %0 = inttoptr i64 %or to ptr2443 %1 = load i8, ptr %0, align 162444 %conv = zext i8 %1 to i322445 ret i32 %conv2446}2447 2448; Function Attrs: norecurse nounwind readonly uwtable willreturn2449define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_uint8_t(i64 %ptr) {2450; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_uint8_t:2451; CHECK-P10: # %bb.0: # %entry2452; CHECK-P10-NEXT: pli r4, 2322453; CHECK-P10-NEXT: pli r5, 35675873292454; CHECK-P10-NEXT: rldimi r5, r4, 32, 02455; CHECK-P10-NEXT: or r3, r3, r52456; CHECK-P10-NEXT: lbz r3, 0(r3)2457; CHECK-P10-NEXT: blr2458;2459; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_uint8_t:2460; CHECK-PREP10: # %bb.0: # %entry2461; CHECK-PREP10-NEXT: li r4, 292462; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242463; CHECK-PREP10-NEXT: oris r4, r4, 544372464; CHECK-PREP10-NEXT: ori r4, r4, 40972465; CHECK-PREP10-NEXT: or r3, r3, r42466; CHECK-PREP10-NEXT: lbz r3, 0(r3)2467; CHECK-PREP10-NEXT: blr2468entry:2469 %or = or i64 %ptr, 10000000000012470 %0 = inttoptr i64 %or to ptr2471 %1 = load i8, ptr %0, align 12472 %conv = zext i8 %1 to i322473 ret i32 %conv2474}2475 2476; Function Attrs: norecurse nounwind readonly uwtable willreturn2477define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_uint8_t(i64 %ptr) {2478; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_uint8_t:2479; CHECK-P10: # %bb.0: # %entry2480; CHECK-P10-NEXT: pli r4, 2441406252481; CHECK-P10-NEXT: rldicr r3, r3, 0, 232482; CHECK-P10-NEXT: rldic r4, r4, 12, 242483; CHECK-P10-NEXT: lbzx r3, r3, r42484; CHECK-P10-NEXT: blr2485;2486; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_uint8_t:2487; CHECK-PREP10: # %bb.0: # %entry2488; CHECK-PREP10-NEXT: lis r4, 37252489; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232490; CHECK-PREP10-NEXT: ori r4, r4, 190252491; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242492; CHECK-PREP10-NEXT: lbzx r3, r3, r42493; CHECK-PREP10-NEXT: blr2494entry:2495 %and = and i64 %ptr, -10995116277762496 %or = or i64 %and, 10000000000002497 %0 = inttoptr i64 %or to ptr2498 %1 = load i8, ptr %0, align 40962499 %conv = zext i8 %1 to i322500 ret i32 %conv2501}2502 2503; Function Attrs: norecurse nounwind readonly uwtable willreturn2504define dso_local zeroext i32 @ld_cst_align16_uint32_t_uint8_t() {2505; CHECK-LABEL: ld_cst_align16_uint32_t_uint8_t:2506; CHECK: # %bb.0: # %entry2507; CHECK-NEXT: lbz r3, 4080(0)2508; CHECK-NEXT: blr2509entry:2510 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 162511 %conv = zext i8 %0 to i322512 ret i32 %conv2513}2514 2515; Function Attrs: norecurse nounwind readonly uwtable willreturn2516define dso_local zeroext i32 @ld_cst_align32_uint32_t_uint8_t() {2517; CHECK-LABEL: ld_cst_align32_uint32_t_uint8_t:2518; CHECK: # %bb.0: # %entry2519; CHECK-NEXT: lis r3, 1532520; CHECK-NEXT: lbz r3, -27108(r3)2521; CHECK-NEXT: blr2522entry:2523 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 42524 %conv = zext i8 %0 to i322525 ret i32 %conv2526}2527 2528; Function Attrs: norecurse nounwind readonly uwtable willreturn2529define dso_local zeroext i32 @ld_cst_align64_uint32_t_uint8_t() {2530; CHECK-P10-LABEL: ld_cst_align64_uint32_t_uint8_t:2531; CHECK-P10: # %bb.0: # %entry2532; CHECK-P10-NEXT: pli r3, 2441406252533; CHECK-P10-NEXT: rldic r3, r3, 12, 242534; CHECK-P10-NEXT: lbz r3, 0(r3)2535; CHECK-P10-NEXT: blr2536;2537; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_uint8_t:2538; CHECK-PREP10: # %bb.0: # %entry2539; CHECK-PREP10-NEXT: lis r3, 37252540; CHECK-PREP10-NEXT: ori r3, r3, 190252541; CHECK-PREP10-NEXT: rldic r3, r3, 12, 242542; CHECK-PREP10-NEXT: lbz r3, 0(r3)2543; CHECK-PREP10-NEXT: blr2544entry:2545 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 40962546 %conv = zext i8 %0 to i322547 ret i32 %conv2548}2549 2550; Function Attrs: norecurse nounwind readonly uwtable willreturn2551define dso_local zeroext i32 @ld_0_uint32_t_int8_t(i64 %ptr) {2552; CHECK-LABEL: ld_0_uint32_t_int8_t:2553; CHECK: # %bb.0: # %entry2554; CHECK-NEXT: lbz r3, 0(r3)2555; CHECK-NEXT: extsb r3, r32556; CHECK-NEXT: clrldi r3, r3, 322557; CHECK-NEXT: blr2558entry:2559 %0 = inttoptr i64 %ptr to ptr2560 %1 = load i8, ptr %0, align 12561 %conv = sext i8 %1 to i322562 ret i32 %conv2563}2564 2565; Function Attrs: norecurse nounwind readonly uwtable willreturn2566define dso_local zeroext i32 @ld_align16_uint32_t_int8_t(ptr nocapture readonly %ptr) {2567; CHECK-LABEL: ld_align16_uint32_t_int8_t:2568; CHECK: # %bb.0: # %entry2569; CHECK-NEXT: lbz r3, 8(r3)2570; CHECK-NEXT: extsb r3, r32571; CHECK-NEXT: clrldi r3, r3, 322572; CHECK-NEXT: blr2573entry:2574 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82575 %0 = load i8, ptr %add.ptr, align 12576 %conv = sext i8 %0 to i322577 ret i32 %conv2578}2579 2580; Function Attrs: norecurse nounwind readonly uwtable willreturn2581define dso_local zeroext i32 @ld_align32_uint32_t_int8_t(ptr nocapture readonly %ptr) {2582; CHECK-P10-LABEL: ld_align32_uint32_t_int8_t:2583; CHECK-P10: # %bb.0: # %entry2584; CHECK-P10-NEXT: plbz r3, 99999000(r3), 02585; CHECK-P10-NEXT: extsb r3, r32586; CHECK-P10-NEXT: clrldi r3, r3, 322587; CHECK-P10-NEXT: blr2588;2589; CHECK-PREP10-LABEL: ld_align32_uint32_t_int8_t:2590; CHECK-PREP10: # %bb.0: # %entry2591; CHECK-PREP10-NEXT: lis r4, 15252592; CHECK-PREP10-NEXT: ori r4, r4, 566002593; CHECK-PREP10-NEXT: lbzx r3, r3, r42594; CHECK-PREP10-NEXT: extsb r3, r32595; CHECK-PREP10-NEXT: clrldi r3, r3, 322596; CHECK-PREP10-NEXT: blr2597entry:2598 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002599 %0 = load i8, ptr %add.ptr, align 12600 %conv = sext i8 %0 to i322601 ret i32 %conv2602}2603 2604; Function Attrs: norecurse nounwind readonly uwtable willreturn2605define dso_local zeroext i32 @ld_align64_uint32_t_int8_t(ptr nocapture readonly %ptr) {2606; CHECK-P10-LABEL: ld_align64_uint32_t_int8_t:2607; CHECK-P10: # %bb.0: # %entry2608; CHECK-P10-NEXT: pli r4, 2441406252609; CHECK-P10-NEXT: rldic r4, r4, 12, 242610; CHECK-P10-NEXT: lbzx r3, r3, r42611; CHECK-P10-NEXT: extsb r3, r32612; CHECK-P10-NEXT: clrldi r3, r3, 322613; CHECK-P10-NEXT: blr2614;2615; CHECK-PREP10-LABEL: ld_align64_uint32_t_int8_t:2616; CHECK-PREP10: # %bb.0: # %entry2617; CHECK-PREP10-NEXT: lis r4, 37252618; CHECK-PREP10-NEXT: ori r4, r4, 190252619; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242620; CHECK-PREP10-NEXT: lbzx r3, r3, r42621; CHECK-PREP10-NEXT: extsb r3, r32622; CHECK-PREP10-NEXT: clrldi r3, r3, 322623; CHECK-PREP10-NEXT: blr2624entry:2625 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002626 %0 = load i8, ptr %add.ptr, align 12627 %conv = sext i8 %0 to i322628 ret i32 %conv2629}2630 2631; Function Attrs: norecurse nounwind readonly uwtable willreturn2632define dso_local zeroext i32 @ld_reg_uint32_t_int8_t(ptr nocapture readonly %ptr, i64 %off) {2633; CHECK-LABEL: ld_reg_uint32_t_int8_t:2634; CHECK: # %bb.0: # %entry2635; CHECK-NEXT: lbzx r3, r3, r42636; CHECK-NEXT: extsb r3, r32637; CHECK-NEXT: clrldi r3, r3, 322638; CHECK-NEXT: blr2639entry:2640 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2641 %0 = load i8, ptr %add.ptr, align 12642 %conv = sext i8 %0 to i322643 ret i32 %conv2644}2645 2646; Function Attrs: norecurse nounwind readonly uwtable willreturn2647define dso_local zeroext i32 @ld_or_uint32_t_int8_t(i64 %ptr, i8 zeroext %off) {2648; CHECK-LABEL: ld_or_uint32_t_int8_t:2649; CHECK: # %bb.0: # %entry2650; CHECK-NEXT: or r3, r4, r32651; CHECK-NEXT: lbz r3, 0(r3)2652; CHECK-NEXT: extsb r3, r32653; CHECK-NEXT: clrldi r3, r3, 322654; CHECK-NEXT: blr2655entry:2656 %conv = zext i8 %off to i642657 %or = or i64 %conv, %ptr2658 %0 = inttoptr i64 %or to ptr2659 %1 = load i8, ptr %0, align 12660 %conv1 = sext i8 %1 to i322661 ret i32 %conv12662}2663 2664; Function Attrs: norecurse nounwind readonly uwtable willreturn2665define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_int8_t(i64 %ptr) {2666; CHECK-LABEL: ld_not_disjoint16_uint32_t_int8_t:2667; CHECK: # %bb.0: # %entry2668; CHECK-NEXT: ori r3, r3, 62669; CHECK-NEXT: lbz r3, 0(r3)2670; CHECK-NEXT: extsb r3, r32671; CHECK-NEXT: clrldi r3, r3, 322672; CHECK-NEXT: blr2673entry:2674 %or = or i64 %ptr, 62675 %0 = inttoptr i64 %or to ptr2676 %1 = load i8, ptr %0, align 12677 %conv = sext i8 %1 to i322678 ret i32 %conv2679}2680 2681; Function Attrs: norecurse nounwind readonly uwtable willreturn2682define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_int8_t(i64 %ptr) {2683; CHECK-LABEL: ld_disjoint_align16_uint32_t_int8_t:2684; CHECK: # %bb.0: # %entry2685; CHECK-NEXT: rldicr r3, r3, 0, 512686; CHECK-NEXT: lbz r3, 24(r3)2687; CHECK-NEXT: extsb r3, r32688; CHECK-NEXT: clrldi r3, r3, 322689; CHECK-NEXT: blr2690entry:2691 %and = and i64 %ptr, -40962692 %or = or i64 %and, 242693 %0 = inttoptr i64 %or to ptr2694 %1 = load i8, ptr %0, align 82695 %conv = sext i8 %1 to i322696 ret i32 %conv2697}2698 2699; Function Attrs: norecurse nounwind readonly uwtable willreturn2700define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_int8_t(i64 %ptr) {2701; CHECK-LABEL: ld_not_disjoint32_uint32_t_int8_t:2702; CHECK: # %bb.0: # %entry2703; CHECK-NEXT: ori r3, r3, 344632704; CHECK-NEXT: oris r3, r3, 12705; CHECK-NEXT: lbz r3, 0(r3)2706; CHECK-NEXT: extsb r3, r32707; CHECK-NEXT: clrldi r3, r3, 322708; CHECK-NEXT: blr2709entry:2710 %or = or i64 %ptr, 999992711 %0 = inttoptr i64 %or to ptr2712 %1 = load i8, ptr %0, align 12713 %conv = sext i8 %1 to i322714 ret i32 %conv2715}2716 2717; Function Attrs: norecurse nounwind readonly uwtable willreturn2718define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_int8_t(i64 %ptr) {2719; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_int8_t:2720; CHECK-P10: # %bb.0: # %entry2721; CHECK-P10-NEXT: lis r4, -152642722; CHECK-P10-NEXT: and r3, r3, r42723; CHECK-P10-NEXT: plbz r3, 999990000(r3), 02724; CHECK-P10-NEXT: extsb r3, r32725; CHECK-P10-NEXT: clrldi r3, r3, 322726; CHECK-P10-NEXT: blr2727;2728; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_int8_t:2729; CHECK-PREP10: # %bb.0: # %entry2730; CHECK-PREP10-NEXT: lis r4, -152642731; CHECK-PREP10-NEXT: and r3, r3, r42732; CHECK-PREP10-NEXT: lis r4, 152582733; CHECK-PREP10-NEXT: ori r4, r4, 417122734; CHECK-PREP10-NEXT: lbzx r3, r3, r42735; CHECK-PREP10-NEXT: extsb r3, r32736; CHECK-PREP10-NEXT: clrldi r3, r3, 322737; CHECK-PREP10-NEXT: blr2738entry:2739 %and = and i64 %ptr, -10003415042740 %or = or i64 %and, 9999900002741 %0 = inttoptr i64 %or to ptr2742 %1 = load i8, ptr %0, align 162743 %conv = sext i8 %1 to i322744 ret i32 %conv2745}2746 2747; Function Attrs: norecurse nounwind readonly uwtable willreturn2748define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_int8_t(i64 %ptr) {2749; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_int8_t:2750; CHECK-P10: # %bb.0: # %entry2751; CHECK-P10-NEXT: pli r4, 2322752; CHECK-P10-NEXT: pli r5, 35675873292753; CHECK-P10-NEXT: rldimi r5, r4, 32, 02754; CHECK-P10-NEXT: or r3, r3, r52755; CHECK-P10-NEXT: lbz r3, 0(r3)2756; CHECK-P10-NEXT: extsb r3, r32757; CHECK-P10-NEXT: clrldi r3, r3, 322758; CHECK-P10-NEXT: blr2759;2760; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_int8_t:2761; CHECK-PREP10: # %bb.0: # %entry2762; CHECK-PREP10-NEXT: li r4, 292763; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242764; CHECK-PREP10-NEXT: oris r4, r4, 544372765; CHECK-PREP10-NEXT: ori r4, r4, 40972766; CHECK-PREP10-NEXT: or r3, r3, r42767; CHECK-PREP10-NEXT: lbz r3, 0(r3)2768; CHECK-PREP10-NEXT: extsb r3, r32769; CHECK-PREP10-NEXT: clrldi r3, r3, 322770; CHECK-PREP10-NEXT: blr2771entry:2772 %or = or i64 %ptr, 10000000000012773 %0 = inttoptr i64 %or to ptr2774 %1 = load i8, ptr %0, align 12775 %conv = sext i8 %1 to i322776 ret i32 %conv2777}2778 2779; Function Attrs: norecurse nounwind readonly uwtable willreturn2780define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_int8_t(i64 %ptr) {2781; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_int8_t:2782; CHECK-P10: # %bb.0: # %entry2783; CHECK-P10-NEXT: pli r4, 2441406252784; CHECK-P10-NEXT: rldicr r3, r3, 0, 232785; CHECK-P10-NEXT: rldic r4, r4, 12, 242786; CHECK-P10-NEXT: lbzx r3, r3, r42787; CHECK-P10-NEXT: extsb r3, r32788; CHECK-P10-NEXT: clrldi r3, r3, 322789; CHECK-P10-NEXT: blr2790;2791; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_int8_t:2792; CHECK-PREP10: # %bb.0: # %entry2793; CHECK-PREP10-NEXT: lis r4, 37252794; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232795; CHECK-PREP10-NEXT: ori r4, r4, 190252796; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242797; CHECK-PREP10-NEXT: lbzx r3, r3, r42798; CHECK-PREP10-NEXT: extsb r3, r32799; CHECK-PREP10-NEXT: clrldi r3, r3, 322800; CHECK-PREP10-NEXT: blr2801entry:2802 %and = and i64 %ptr, -10995116277762803 %or = or i64 %and, 10000000000002804 %0 = inttoptr i64 %or to ptr2805 %1 = load i8, ptr %0, align 40962806 %conv = sext i8 %1 to i322807 ret i32 %conv2808}2809 2810; Function Attrs: norecurse nounwind readonly uwtable willreturn2811define dso_local zeroext i32 @ld_cst_align16_uint32_t_int8_t() {2812; CHECK-LABEL: ld_cst_align16_uint32_t_int8_t:2813; CHECK: # %bb.0: # %entry2814; CHECK-NEXT: lbz r3, 4080(0)2815; CHECK-NEXT: extsb r3, r32816; CHECK-NEXT: clrldi r3, r3, 322817; CHECK-NEXT: blr2818entry:2819 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 162820 %conv = sext i8 %0 to i322821 ret i32 %conv2822}2823 2824; Function Attrs: norecurse nounwind readonly uwtable willreturn2825define dso_local zeroext i32 @ld_cst_align32_uint32_t_int8_t() {2826; CHECK-LABEL: ld_cst_align32_uint32_t_int8_t:2827; CHECK: # %bb.0: # %entry2828; CHECK-NEXT: lis r3, 1532829; CHECK-NEXT: lbz r3, -27108(r3)2830; CHECK-NEXT: extsb r3, r32831; CHECK-NEXT: clrldi r3, r3, 322832; CHECK-NEXT: blr2833entry:2834 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 42835 %conv = sext i8 %0 to i322836 ret i32 %conv2837}2838 2839; Function Attrs: norecurse nounwind readonly uwtable willreturn2840define dso_local zeroext i32 @ld_cst_align64_uint32_t_int8_t() {2841; CHECK-P10-LABEL: ld_cst_align64_uint32_t_int8_t:2842; CHECK-P10: # %bb.0: # %entry2843; CHECK-P10-NEXT: pli r3, 2441406252844; CHECK-P10-NEXT: rldic r3, r3, 12, 242845; CHECK-P10-NEXT: lbz r3, 0(r3)2846; CHECK-P10-NEXT: extsb r3, r32847; CHECK-P10-NEXT: clrldi r3, r3, 322848; CHECK-P10-NEXT: blr2849;2850; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_int8_t:2851; CHECK-PREP10: # %bb.0: # %entry2852; CHECK-PREP10-NEXT: lis r3, 37252853; CHECK-PREP10-NEXT: ori r3, r3, 190252854; CHECK-PREP10-NEXT: rldic r3, r3, 12, 242855; CHECK-PREP10-NEXT: lbz r3, 0(r3)2856; CHECK-PREP10-NEXT: extsb r3, r32857; CHECK-PREP10-NEXT: clrldi r3, r3, 322858; CHECK-PREP10-NEXT: blr2859entry:2860 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 40962861 %conv = sext i8 %0 to i322862 ret i32 %conv2863}2864 2865; Function Attrs: norecurse nounwind readonly uwtable willreturn2866define dso_local zeroext i32 @ld_0_uint32_t_uint16_t(i64 %ptr) {2867; CHECK-LABEL: ld_0_uint32_t_uint16_t:2868; CHECK: # %bb.0: # %entry2869; CHECK-NEXT: lhz r3, 0(r3)2870; CHECK-NEXT: blr2871entry:2872 %0 = inttoptr i64 %ptr to ptr2873 %1 = load i16, ptr %0, align 22874 %conv = zext i16 %1 to i322875 ret i32 %conv2876}2877 2878; Function Attrs: norecurse nounwind readonly uwtable willreturn2879define dso_local zeroext i32 @ld_align16_uint32_t_uint16_t(ptr nocapture readonly %ptr) {2880; CHECK-LABEL: ld_align16_uint32_t_uint16_t:2881; CHECK: # %bb.0: # %entry2882; CHECK-NEXT: lhz r3, 8(r3)2883; CHECK-NEXT: blr2884entry:2885 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82886 %0 = load i16, ptr %add.ptr, align 22887 %conv = zext i16 %0 to i322888 ret i32 %conv2889}2890 2891; Function Attrs: norecurse nounwind readonly uwtable willreturn2892define dso_local zeroext i32 @ld_align32_uint32_t_uint16_t(ptr nocapture readonly %ptr) {2893; CHECK-P10-LABEL: ld_align32_uint32_t_uint16_t:2894; CHECK-P10: # %bb.0: # %entry2895; CHECK-P10-NEXT: plhz r3, 99999000(r3), 02896; CHECK-P10-NEXT: blr2897;2898; CHECK-PREP10-LABEL: ld_align32_uint32_t_uint16_t:2899; CHECK-PREP10: # %bb.0: # %entry2900; CHECK-PREP10-NEXT: lis r4, 15252901; CHECK-PREP10-NEXT: ori r4, r4, 566002902; CHECK-PREP10-NEXT: lhzx r3, r3, r42903; CHECK-PREP10-NEXT: blr2904entry:2905 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002906 %0 = load i16, ptr %add.ptr, align 22907 %conv = zext i16 %0 to i322908 ret i32 %conv2909}2910 2911; Function Attrs: norecurse nounwind readonly uwtable willreturn2912define dso_local zeroext i32 @ld_align64_uint32_t_uint16_t(ptr nocapture readonly %ptr) {2913; CHECK-P10-LABEL: ld_align64_uint32_t_uint16_t:2914; CHECK-P10: # %bb.0: # %entry2915; CHECK-P10-NEXT: pli r4, 2441406252916; CHECK-P10-NEXT: rldic r4, r4, 12, 242917; CHECK-P10-NEXT: lhzx r3, r3, r42918; CHECK-P10-NEXT: blr2919;2920; CHECK-PREP10-LABEL: ld_align64_uint32_t_uint16_t:2921; CHECK-PREP10: # %bb.0: # %entry2922; CHECK-PREP10-NEXT: lis r4, 37252923; CHECK-PREP10-NEXT: ori r4, r4, 190252924; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242925; CHECK-PREP10-NEXT: lhzx r3, r3, r42926; CHECK-PREP10-NEXT: blr2927entry:2928 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002929 %0 = load i16, ptr %add.ptr, align 22930 %conv = zext i16 %0 to i322931 ret i32 %conv2932}2933 2934; Function Attrs: norecurse nounwind readonly uwtable willreturn2935define dso_local zeroext i32 @ld_reg_uint32_t_uint16_t(ptr nocapture readonly %ptr, i64 %off) {2936; CHECK-LABEL: ld_reg_uint32_t_uint16_t:2937; CHECK: # %bb.0: # %entry2938; CHECK-NEXT: lhzx r3, r3, r42939; CHECK-NEXT: blr2940entry:2941 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2942 %0 = load i16, ptr %add.ptr, align 22943 %conv = zext i16 %0 to i322944 ret i32 %conv2945}2946 2947; Function Attrs: norecurse nounwind readonly uwtable willreturn2948define dso_local zeroext i32 @ld_or_uint32_t_uint16_t(i64 %ptr, i8 zeroext %off) {2949; CHECK-LABEL: ld_or_uint32_t_uint16_t:2950; CHECK: # %bb.0: # %entry2951; CHECK-NEXT: or r3, r4, r32952; CHECK-NEXT: lhz r3, 0(r3)2953; CHECK-NEXT: blr2954entry:2955 %conv = zext i8 %off to i642956 %or = or i64 %conv, %ptr2957 %0 = inttoptr i64 %or to ptr2958 %1 = load i16, ptr %0, align 22959 %conv1 = zext i16 %1 to i322960 ret i32 %conv12961}2962 2963; Function Attrs: norecurse nounwind readonly uwtable willreturn2964define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_uint16_t(i64 %ptr) {2965; CHECK-LABEL: ld_not_disjoint16_uint32_t_uint16_t:2966; CHECK: # %bb.0: # %entry2967; CHECK-NEXT: ori r3, r3, 62968; CHECK-NEXT: lhz r3, 0(r3)2969; CHECK-NEXT: blr2970entry:2971 %or = or i64 %ptr, 62972 %0 = inttoptr i64 %or to ptr2973 %1 = load i16, ptr %0, align 22974 %conv = zext i16 %1 to i322975 ret i32 %conv2976}2977 2978; Function Attrs: norecurse nounwind readonly uwtable willreturn2979define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_uint16_t(i64 %ptr) {2980; CHECK-LABEL: ld_disjoint_align16_uint32_t_uint16_t:2981; CHECK: # %bb.0: # %entry2982; CHECK-NEXT: rldicr r3, r3, 0, 512983; CHECK-NEXT: lhz r3, 24(r3)2984; CHECK-NEXT: blr2985entry:2986 %and = and i64 %ptr, -40962987 %or = or i64 %and, 242988 %0 = inttoptr i64 %or to ptr2989 %1 = load i16, ptr %0, align 82990 %conv = zext i16 %1 to i322991 ret i32 %conv2992}2993 2994; Function Attrs: norecurse nounwind readonly uwtable willreturn2995define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_uint16_t(i64 %ptr) {2996; CHECK-LABEL: ld_not_disjoint32_uint32_t_uint16_t:2997; CHECK: # %bb.0: # %entry2998; CHECK-NEXT: ori r3, r3, 344632999; CHECK-NEXT: oris r3, r3, 13000; CHECK-NEXT: lhz r3, 0(r3)3001; CHECK-NEXT: blr3002entry:3003 %or = or i64 %ptr, 999993004 %0 = inttoptr i64 %or to ptr3005 %1 = load i16, ptr %0, align 23006 %conv = zext i16 %1 to i323007 ret i32 %conv3008}3009 3010; Function Attrs: norecurse nounwind readonly uwtable willreturn3011define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_uint16_t(i64 %ptr) {3012; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_uint16_t:3013; CHECK-P10: # %bb.0: # %entry3014; CHECK-P10-NEXT: lis r4, -152643015; CHECK-P10-NEXT: and r3, r3, r43016; CHECK-P10-NEXT: plhz r3, 999990000(r3), 03017; CHECK-P10-NEXT: blr3018;3019; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_uint16_t:3020; CHECK-PREP10: # %bb.0: # %entry3021; CHECK-PREP10-NEXT: lis r4, -152643022; CHECK-PREP10-NEXT: and r3, r3, r43023; CHECK-PREP10-NEXT: lis r4, 152583024; CHECK-PREP10-NEXT: ori r4, r4, 417123025; CHECK-PREP10-NEXT: lhzx r3, r3, r43026; CHECK-PREP10-NEXT: blr3027entry:3028 %and = and i64 %ptr, -10003415043029 %or = or i64 %and, 9999900003030 %0 = inttoptr i64 %or to ptr3031 %1 = load i16, ptr %0, align 163032 %conv = zext i16 %1 to i323033 ret i32 %conv3034}3035 3036; Function Attrs: norecurse nounwind readonly uwtable willreturn3037define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_uint16_t(i64 %ptr) {3038; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_uint16_t:3039; CHECK-P10: # %bb.0: # %entry3040; CHECK-P10-NEXT: pli r4, 2323041; CHECK-P10-NEXT: pli r5, 35675873293042; CHECK-P10-NEXT: rldimi r5, r4, 32, 03043; CHECK-P10-NEXT: or r3, r3, r53044; CHECK-P10-NEXT: lhz r3, 0(r3)3045; CHECK-P10-NEXT: blr3046;3047; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_uint16_t:3048; CHECK-PREP10: # %bb.0: # %entry3049; CHECK-PREP10-NEXT: li r4, 293050; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243051; CHECK-PREP10-NEXT: oris r4, r4, 544373052; CHECK-PREP10-NEXT: ori r4, r4, 40973053; CHECK-PREP10-NEXT: or r3, r3, r43054; CHECK-PREP10-NEXT: lhz r3, 0(r3)3055; CHECK-PREP10-NEXT: blr3056entry:3057 %or = or i64 %ptr, 10000000000013058 %0 = inttoptr i64 %or to ptr3059 %1 = load i16, ptr %0, align 23060 %conv = zext i16 %1 to i323061 ret i32 %conv3062}3063 3064; Function Attrs: norecurse nounwind readonly uwtable willreturn3065define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_uint16_t(i64 %ptr) {3066; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_uint16_t:3067; CHECK-P10: # %bb.0: # %entry3068; CHECK-P10-NEXT: pli r4, 2441406253069; CHECK-P10-NEXT: rldicr r3, r3, 0, 233070; CHECK-P10-NEXT: rldic r4, r4, 12, 243071; CHECK-P10-NEXT: lhzx r3, r3, r43072; CHECK-P10-NEXT: blr3073;3074; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_uint16_t:3075; CHECK-PREP10: # %bb.0: # %entry3076; CHECK-PREP10-NEXT: lis r4, 37253077; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233078; CHECK-PREP10-NEXT: ori r4, r4, 190253079; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243080; CHECK-PREP10-NEXT: lhzx r3, r3, r43081; CHECK-PREP10-NEXT: blr3082entry:3083 %and = and i64 %ptr, -10995116277763084 %or = or i64 %and, 10000000000003085 %0 = inttoptr i64 %or to ptr3086 %1 = load i16, ptr %0, align 40963087 %conv = zext i16 %1 to i323088 ret i32 %conv3089}3090 3091; Function Attrs: norecurse nounwind readonly uwtable willreturn3092define dso_local zeroext i32 @ld_cst_align16_uint32_t_uint16_t() {3093; CHECK-LABEL: ld_cst_align16_uint32_t_uint16_t:3094; CHECK: # %bb.0: # %entry3095; CHECK-NEXT: lhz r3, 4080(0)3096; CHECK-NEXT: blr3097entry:3098 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 163099 %conv = zext i16 %0 to i323100 ret i32 %conv3101}3102 3103; Function Attrs: norecurse nounwind readonly uwtable willreturn3104define dso_local zeroext i32 @ld_cst_align32_uint32_t_uint16_t() {3105; CHECK-LABEL: ld_cst_align32_uint32_t_uint16_t:3106; CHECK: # %bb.0: # %entry3107; CHECK-NEXT: lis r3, 1533108; CHECK-NEXT: lhz r3, -27108(r3)3109; CHECK-NEXT: blr3110entry:3111 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 43112 %conv = zext i16 %0 to i323113 ret i32 %conv3114}3115 3116; Function Attrs: norecurse nounwind readonly uwtable willreturn3117define dso_local zeroext i32 @ld_cst_align64_uint32_t_uint16_t() {3118; CHECK-P10-LABEL: ld_cst_align64_uint32_t_uint16_t:3119; CHECK-P10: # %bb.0: # %entry3120; CHECK-P10-NEXT: pli r3, 2441406253121; CHECK-P10-NEXT: rldic r3, r3, 12, 243122; CHECK-P10-NEXT: lhz r3, 0(r3)3123; CHECK-P10-NEXT: blr3124;3125; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_uint16_t:3126; CHECK-PREP10: # %bb.0: # %entry3127; CHECK-PREP10-NEXT: lis r3, 37253128; CHECK-PREP10-NEXT: ori r3, r3, 190253129; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243130; CHECK-PREP10-NEXT: lhz r3, 0(r3)3131; CHECK-PREP10-NEXT: blr3132entry:3133 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40963134 %conv = zext i16 %0 to i323135 ret i32 %conv3136}3137 3138; Function Attrs: norecurse nounwind readonly uwtable willreturn3139define dso_local zeroext i32 @ld_0_uint32_t_int16_t(i64 %ptr) {3140; CHECK-LABEL: ld_0_uint32_t_int16_t:3141; CHECK: # %bb.0: # %entry3142; CHECK-NEXT: lha r3, 0(r3)3143; CHECK-NEXT: clrldi r3, r3, 323144; CHECK-NEXT: blr3145entry:3146 %0 = inttoptr i64 %ptr to ptr3147 %1 = load i16, ptr %0, align 23148 %conv = sext i16 %1 to i323149 ret i32 %conv3150}3151 3152; Function Attrs: norecurse nounwind readonly uwtable willreturn3153define dso_local zeroext i32 @ld_align16_uint32_t_int16_t(ptr nocapture readonly %ptr) {3154; CHECK-LABEL: ld_align16_uint32_t_int16_t:3155; CHECK: # %bb.0: # %entry3156; CHECK-NEXT: lha r3, 8(r3)3157; CHECK-NEXT: clrldi r3, r3, 323158; CHECK-NEXT: blr3159entry:3160 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83161 %0 = load i16, ptr %add.ptr, align 23162 %conv = sext i16 %0 to i323163 ret i32 %conv3164}3165 3166; Function Attrs: norecurse nounwind readonly uwtable willreturn3167define dso_local zeroext i32 @ld_align32_uint32_t_int16_t(ptr nocapture readonly %ptr) {3168; CHECK-P10-LABEL: ld_align32_uint32_t_int16_t:3169; CHECK-P10: # %bb.0: # %entry3170; CHECK-P10-NEXT: plha r3, 99999000(r3), 03171; CHECK-P10-NEXT: clrldi r3, r3, 323172; CHECK-P10-NEXT: blr3173;3174; CHECK-PREP10-LABEL: ld_align32_uint32_t_int16_t:3175; CHECK-PREP10: # %bb.0: # %entry3176; CHECK-PREP10-NEXT: lis r4, 15253177; CHECK-PREP10-NEXT: ori r4, r4, 566003178; CHECK-PREP10-NEXT: lhax r3, r3, r43179; CHECK-PREP10-NEXT: clrldi r3, r3, 323180; CHECK-PREP10-NEXT: blr3181entry:3182 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003183 %0 = load i16, ptr %add.ptr, align 23184 %conv = sext i16 %0 to i323185 ret i32 %conv3186}3187 3188; Function Attrs: norecurse nounwind readonly uwtable willreturn3189define dso_local zeroext i32 @ld_align64_uint32_t_int16_t(ptr nocapture readonly %ptr) {3190; CHECK-P10-LABEL: ld_align64_uint32_t_int16_t:3191; CHECK-P10: # %bb.0: # %entry3192; CHECK-P10-NEXT: pli r4, 2441406253193; CHECK-P10-NEXT: rldic r4, r4, 12, 243194; CHECK-P10-NEXT: lhax r3, r3, r43195; CHECK-P10-NEXT: clrldi r3, r3, 323196; CHECK-P10-NEXT: blr3197;3198; CHECK-PREP10-LABEL: ld_align64_uint32_t_int16_t:3199; CHECK-PREP10: # %bb.0: # %entry3200; CHECK-PREP10-NEXT: lis r4, 37253201; CHECK-PREP10-NEXT: ori r4, r4, 190253202; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243203; CHECK-PREP10-NEXT: lhax r3, r3, r43204; CHECK-PREP10-NEXT: clrldi r3, r3, 323205; CHECK-PREP10-NEXT: blr3206entry:3207 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003208 %0 = load i16, ptr %add.ptr, align 23209 %conv = sext i16 %0 to i323210 ret i32 %conv3211}3212 3213; Function Attrs: norecurse nounwind readonly uwtable willreturn3214define dso_local zeroext i32 @ld_reg_uint32_t_int16_t(ptr nocapture readonly %ptr, i64 %off) {3215; CHECK-LABEL: ld_reg_uint32_t_int16_t:3216; CHECK: # %bb.0: # %entry3217; CHECK-NEXT: lhax r3, r3, r43218; CHECK-NEXT: clrldi r3, r3, 323219; CHECK-NEXT: blr3220entry:3221 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3222 %0 = load i16, ptr %add.ptr, align 23223 %conv = sext i16 %0 to i323224 ret i32 %conv3225}3226 3227; Function Attrs: norecurse nounwind readonly uwtable willreturn3228define dso_local zeroext i32 @ld_or_uint32_t_int16_t(i64 %ptr, i8 zeroext %off) {3229; CHECK-LABEL: ld_or_uint32_t_int16_t:3230; CHECK: # %bb.0: # %entry3231; CHECK-NEXT: or r3, r4, r33232; CHECK-NEXT: lha r3, 0(r3)3233; CHECK-NEXT: clrldi r3, r3, 323234; CHECK-NEXT: blr3235entry:3236 %conv = zext i8 %off to i643237 %or = or i64 %conv, %ptr3238 %0 = inttoptr i64 %or to ptr3239 %1 = load i16, ptr %0, align 23240 %conv1 = sext i16 %1 to i323241 ret i32 %conv13242}3243 3244; Function Attrs: norecurse nounwind readonly uwtable willreturn3245define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_int16_t(i64 %ptr) {3246; CHECK-LABEL: ld_not_disjoint16_uint32_t_int16_t:3247; CHECK: # %bb.0: # %entry3248; CHECK-NEXT: ori r3, r3, 63249; CHECK-NEXT: lha r3, 0(r3)3250; CHECK-NEXT: clrldi r3, r3, 323251; CHECK-NEXT: blr3252entry:3253 %or = or i64 %ptr, 63254 %0 = inttoptr i64 %or to ptr3255 %1 = load i16, ptr %0, align 23256 %conv = sext i16 %1 to i323257 ret i32 %conv3258}3259 3260; Function Attrs: norecurse nounwind readonly uwtable willreturn3261define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_int16_t(i64 %ptr) {3262; CHECK-LABEL: ld_disjoint_align16_uint32_t_int16_t:3263; CHECK: # %bb.0: # %entry3264; CHECK-NEXT: rldicr r3, r3, 0, 513265; CHECK-NEXT: lha r3, 24(r3)3266; CHECK-NEXT: clrldi r3, r3, 323267; CHECK-NEXT: blr3268entry:3269 %and = and i64 %ptr, -40963270 %or = or i64 %and, 243271 %0 = inttoptr i64 %or to ptr3272 %1 = load i16, ptr %0, align 83273 %conv = sext i16 %1 to i323274 ret i32 %conv3275}3276 3277; Function Attrs: norecurse nounwind readonly uwtable willreturn3278define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_int16_t(i64 %ptr) {3279; CHECK-LABEL: ld_not_disjoint32_uint32_t_int16_t:3280; CHECK: # %bb.0: # %entry3281; CHECK-NEXT: ori r3, r3, 344633282; CHECK-NEXT: oris r3, r3, 13283; CHECK-NEXT: lha r3, 0(r3)3284; CHECK-NEXT: clrldi r3, r3, 323285; CHECK-NEXT: blr3286entry:3287 %or = or i64 %ptr, 999993288 %0 = inttoptr i64 %or to ptr3289 %1 = load i16, ptr %0, align 23290 %conv = sext i16 %1 to i323291 ret i32 %conv3292}3293 3294; Function Attrs: norecurse nounwind readonly uwtable willreturn3295define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_int16_t(i64 %ptr) {3296; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_int16_t:3297; CHECK-P10: # %bb.0: # %entry3298; CHECK-P10-NEXT: lis r4, -152643299; CHECK-P10-NEXT: and r3, r3, r43300; CHECK-P10-NEXT: plha r3, 999990000(r3), 03301; CHECK-P10-NEXT: clrldi r3, r3, 323302; CHECK-P10-NEXT: blr3303;3304; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_int16_t:3305; CHECK-PREP10: # %bb.0: # %entry3306; CHECK-PREP10-NEXT: lis r4, -152643307; CHECK-PREP10-NEXT: and r3, r3, r43308; CHECK-PREP10-NEXT: lis r4, 152583309; CHECK-PREP10-NEXT: ori r4, r4, 417123310; CHECK-PREP10-NEXT: lhax r3, r3, r43311; CHECK-PREP10-NEXT: clrldi r3, r3, 323312; CHECK-PREP10-NEXT: blr3313entry:3314 %and = and i64 %ptr, -10003415043315 %or = or i64 %and, 9999900003316 %0 = inttoptr i64 %or to ptr3317 %1 = load i16, ptr %0, align 163318 %conv = sext i16 %1 to i323319 ret i32 %conv3320}3321 3322; Function Attrs: norecurse nounwind readonly uwtable willreturn3323define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_int16_t(i64 %ptr) {3324; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_int16_t:3325; CHECK-P10: # %bb.0: # %entry3326; CHECK-P10-NEXT: pli r4, 2323327; CHECK-P10-NEXT: pli r5, 35675873293328; CHECK-P10-NEXT: rldimi r5, r4, 32, 03329; CHECK-P10-NEXT: or r3, r3, r53330; CHECK-P10-NEXT: lha r3, 0(r3)3331; CHECK-P10-NEXT: clrldi r3, r3, 323332; CHECK-P10-NEXT: blr3333;3334; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_int16_t:3335; CHECK-PREP10: # %bb.0: # %entry3336; CHECK-PREP10-NEXT: li r4, 293337; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243338; CHECK-PREP10-NEXT: oris r4, r4, 544373339; CHECK-PREP10-NEXT: ori r4, r4, 40973340; CHECK-PREP10-NEXT: or r3, r3, r43341; CHECK-PREP10-NEXT: lha r3, 0(r3)3342; CHECK-PREP10-NEXT: clrldi r3, r3, 323343; CHECK-PREP10-NEXT: blr3344entry:3345 %or = or i64 %ptr, 10000000000013346 %0 = inttoptr i64 %or to ptr3347 %1 = load i16, ptr %0, align 23348 %conv = sext i16 %1 to i323349 ret i32 %conv3350}3351 3352; Function Attrs: norecurse nounwind readonly uwtable willreturn3353define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_int16_t(i64 %ptr) {3354; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_int16_t:3355; CHECK-P10: # %bb.0: # %entry3356; CHECK-P10-NEXT: pli r4, 2441406253357; CHECK-P10-NEXT: rldicr r3, r3, 0, 233358; CHECK-P10-NEXT: rldic r4, r4, 12, 243359; CHECK-P10-NEXT: lhax r3, r3, r43360; CHECK-P10-NEXT: clrldi r3, r3, 323361; CHECK-P10-NEXT: blr3362;3363; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_int16_t:3364; CHECK-PREP10: # %bb.0: # %entry3365; CHECK-PREP10-NEXT: lis r4, 37253366; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233367; CHECK-PREP10-NEXT: ori r4, r4, 190253368; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243369; CHECK-PREP10-NEXT: lhax r3, r3, r43370; CHECK-PREP10-NEXT: clrldi r3, r3, 323371; CHECK-PREP10-NEXT: blr3372entry:3373 %and = and i64 %ptr, -10995116277763374 %or = or i64 %and, 10000000000003375 %0 = inttoptr i64 %or to ptr3376 %1 = load i16, ptr %0, align 40963377 %conv = sext i16 %1 to i323378 ret i32 %conv3379}3380 3381; Function Attrs: norecurse nounwind readonly uwtable willreturn3382define dso_local zeroext i32 @ld_cst_align16_uint32_t_int16_t() {3383; CHECK-LABEL: ld_cst_align16_uint32_t_int16_t:3384; CHECK: # %bb.0: # %entry3385; CHECK-NEXT: lha r3, 4080(0)3386; CHECK-NEXT: clrldi r3, r3, 323387; CHECK-NEXT: blr3388entry:3389 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 163390 %conv = sext i16 %0 to i323391 ret i32 %conv3392}3393 3394; Function Attrs: norecurse nounwind readonly uwtable willreturn3395define dso_local zeroext i32 @ld_cst_align32_uint32_t_int16_t() {3396; CHECK-LABEL: ld_cst_align32_uint32_t_int16_t:3397; CHECK: # %bb.0: # %entry3398; CHECK-NEXT: lis r3, 1533399; CHECK-NEXT: lha r3, -27108(r3)3400; CHECK-NEXT: clrldi r3, r3, 323401; CHECK-NEXT: blr3402entry:3403 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 43404 %conv = sext i16 %0 to i323405 ret i32 %conv3406}3407 3408; Function Attrs: norecurse nounwind readonly uwtable willreturn3409define dso_local zeroext i32 @ld_cst_align64_uint32_t_int16_t() {3410; CHECK-P10-LABEL: ld_cst_align64_uint32_t_int16_t:3411; CHECK-P10: # %bb.0: # %entry3412; CHECK-P10-NEXT: pli r3, 2441406253413; CHECK-P10-NEXT: rldic r3, r3, 12, 243414; CHECK-P10-NEXT: lha r3, 0(r3)3415; CHECK-P10-NEXT: clrldi r3, r3, 323416; CHECK-P10-NEXT: blr3417;3418; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_int16_t:3419; CHECK-PREP10: # %bb.0: # %entry3420; CHECK-PREP10-NEXT: lis r3, 37253421; CHECK-PREP10-NEXT: ori r3, r3, 190253422; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243423; CHECK-PREP10-NEXT: lha r3, 0(r3)3424; CHECK-PREP10-NEXT: clrldi r3, r3, 323425; CHECK-PREP10-NEXT: blr3426entry:3427 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40963428 %conv = sext i16 %0 to i323429 ret i32 %conv3430}3431 3432; Function Attrs: norecurse nounwind readonly uwtable willreturn3433define dso_local zeroext i32 @ld_0_uint32_t_uint32_t(i64 %ptr) {3434; CHECK-LABEL: ld_0_uint32_t_uint32_t:3435; CHECK: # %bb.0: # %entry3436; CHECK-NEXT: lwz r3, 0(r3)3437; CHECK-NEXT: blr3438entry:3439 %0 = inttoptr i64 %ptr to ptr3440 %1 = load i32, ptr %0, align 43441 ret i32 %13442}3443 3444; Function Attrs: norecurse nounwind readonly uwtable willreturn3445define dso_local zeroext i32 @ld_align16_uint32_t_uint32_t(ptr nocapture readonly %ptr) {3446; CHECK-LABEL: ld_align16_uint32_t_uint32_t:3447; CHECK: # %bb.0: # %entry3448; CHECK-NEXT: lwz r3, 8(r3)3449; CHECK-NEXT: blr3450entry:3451 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83452 %0 = load i32, ptr %add.ptr, align 43453 ret i32 %03454}3455 3456; Function Attrs: norecurse nounwind readonly uwtable willreturn3457define dso_local zeroext i32 @ld_align32_uint32_t_uint32_t(ptr nocapture readonly %ptr) {3458; CHECK-P10-LABEL: ld_align32_uint32_t_uint32_t:3459; CHECK-P10: # %bb.0: # %entry3460; CHECK-P10-NEXT: plwz r3, 99999000(r3), 03461; CHECK-P10-NEXT: blr3462;3463; CHECK-PREP10-LABEL: ld_align32_uint32_t_uint32_t:3464; CHECK-PREP10: # %bb.0: # %entry3465; CHECK-PREP10-NEXT: lis r4, 15253466; CHECK-PREP10-NEXT: ori r4, r4, 566003467; CHECK-PREP10-NEXT: lwzx r3, r3, r43468; CHECK-PREP10-NEXT: blr3469entry:3470 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003471 %0 = load i32, ptr %add.ptr, align 43472 ret i32 %03473}3474 3475; Function Attrs: norecurse nounwind readonly uwtable willreturn3476define dso_local zeroext i32 @ld_align64_uint32_t_uint32_t(ptr nocapture readonly %ptr) {3477; CHECK-P10-LABEL: ld_align64_uint32_t_uint32_t:3478; CHECK-P10: # %bb.0: # %entry3479; CHECK-P10-NEXT: pli r4, 2441406253480; CHECK-P10-NEXT: rldic r4, r4, 12, 243481; CHECK-P10-NEXT: lwzx r3, r3, r43482; CHECK-P10-NEXT: blr3483;3484; CHECK-PREP10-LABEL: ld_align64_uint32_t_uint32_t:3485; CHECK-PREP10: # %bb.0: # %entry3486; CHECK-PREP10-NEXT: lis r4, 37253487; CHECK-PREP10-NEXT: ori r4, r4, 190253488; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243489; CHECK-PREP10-NEXT: lwzx r3, r3, r43490; CHECK-PREP10-NEXT: blr3491entry:3492 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003493 %0 = load i32, ptr %add.ptr, align 43494 ret i32 %03495}3496 3497; Function Attrs: norecurse nounwind readonly uwtable willreturn3498define dso_local zeroext i32 @ld_reg_uint32_t_uint32_t(ptr nocapture readonly %ptr, i64 %off) {3499; CHECK-LABEL: ld_reg_uint32_t_uint32_t:3500; CHECK: # %bb.0: # %entry3501; CHECK-NEXT: lwzx r3, r3, r43502; CHECK-NEXT: blr3503entry:3504 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3505 %0 = load i32, ptr %add.ptr, align 43506 ret i32 %03507}3508 3509; Function Attrs: norecurse nounwind readonly uwtable willreturn3510define dso_local zeroext i32 @ld_or_uint32_t_uint32_t(i64 %ptr, i8 zeroext %off) {3511; CHECK-LABEL: ld_or_uint32_t_uint32_t:3512; CHECK: # %bb.0: # %entry3513; CHECK-NEXT: or r3, r4, r33514; CHECK-NEXT: lwz r3, 0(r3)3515; CHECK-NEXT: blr3516entry:3517 %conv = zext i8 %off to i643518 %or = or i64 %conv, %ptr3519 %0 = inttoptr i64 %or to ptr3520 %1 = load i32, ptr %0, align 43521 ret i32 %13522}3523 3524; Function Attrs: norecurse nounwind readonly uwtable willreturn3525define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_uint32_t(i64 %ptr) {3526; CHECK-LABEL: ld_not_disjoint16_uint32_t_uint32_t:3527; CHECK: # %bb.0: # %entry3528; CHECK-NEXT: ori r3, r3, 63529; CHECK-NEXT: lwz r3, 0(r3)3530; CHECK-NEXT: blr3531entry:3532 %or = or i64 %ptr, 63533 %0 = inttoptr i64 %or to ptr3534 %1 = load i32, ptr %0, align 43535 ret i32 %13536}3537 3538; Function Attrs: norecurse nounwind readonly uwtable willreturn3539define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_uint32_t(i64 %ptr) {3540; CHECK-LABEL: ld_disjoint_align16_uint32_t_uint32_t:3541; CHECK: # %bb.0: # %entry3542; CHECK-NEXT: rldicr r3, r3, 0, 513543; CHECK-NEXT: lwz r3, 24(r3)3544; CHECK-NEXT: blr3545entry:3546 %and = and i64 %ptr, -40963547 %or = or i64 %and, 243548 %0 = inttoptr i64 %or to ptr3549 %1 = load i32, ptr %0, align 83550 ret i32 %13551}3552 3553; Function Attrs: norecurse nounwind readonly uwtable willreturn3554define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_uint32_t(i64 %ptr) {3555; CHECK-LABEL: ld_not_disjoint32_uint32_t_uint32_t:3556; CHECK: # %bb.0: # %entry3557; CHECK-NEXT: ori r3, r3, 344633558; CHECK-NEXT: oris r3, r3, 13559; CHECK-NEXT: lwz r3, 0(r3)3560; CHECK-NEXT: blr3561entry:3562 %or = or i64 %ptr, 999993563 %0 = inttoptr i64 %or to ptr3564 %1 = load i32, ptr %0, align 43565 ret i32 %13566}3567 3568; Function Attrs: norecurse nounwind readonly uwtable willreturn3569define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_uint32_t(i64 %ptr) {3570; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_uint32_t:3571; CHECK-P10: # %bb.0: # %entry3572; CHECK-P10-NEXT: lis r4, -152643573; CHECK-P10-NEXT: and r3, r3, r43574; CHECK-P10-NEXT: plwz r3, 999990000(r3), 03575; CHECK-P10-NEXT: blr3576;3577; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_uint32_t:3578; CHECK-PREP10: # %bb.0: # %entry3579; CHECK-PREP10-NEXT: lis r4, -152643580; CHECK-PREP10-NEXT: and r3, r3, r43581; CHECK-PREP10-NEXT: lis r4, 152583582; CHECK-PREP10-NEXT: ori r4, r4, 417123583; CHECK-PREP10-NEXT: lwzx r3, r3, r43584; CHECK-PREP10-NEXT: blr3585entry:3586 %and = and i64 %ptr, -10003415043587 %or = or i64 %and, 9999900003588 %0 = inttoptr i64 %or to ptr3589 %1 = load i32, ptr %0, align 163590 ret i32 %13591}3592 3593; Function Attrs: norecurse nounwind readonly uwtable willreturn3594define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_uint32_t(i64 %ptr) {3595; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_uint32_t:3596; CHECK-P10: # %bb.0: # %entry3597; CHECK-P10-NEXT: pli r4, 2323598; CHECK-P10-NEXT: pli r5, 35675873293599; CHECK-P10-NEXT: rldimi r5, r4, 32, 03600; CHECK-P10-NEXT: or r3, r3, r53601; CHECK-P10-NEXT: lwz r3, 0(r3)3602; CHECK-P10-NEXT: blr3603;3604; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_uint32_t:3605; CHECK-PREP10: # %bb.0: # %entry3606; CHECK-PREP10-NEXT: li r4, 293607; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243608; CHECK-PREP10-NEXT: oris r4, r4, 544373609; CHECK-PREP10-NEXT: ori r4, r4, 40973610; CHECK-PREP10-NEXT: or r3, r3, r43611; CHECK-PREP10-NEXT: lwz r3, 0(r3)3612; CHECK-PREP10-NEXT: blr3613entry:3614 %or = or i64 %ptr, 10000000000013615 %0 = inttoptr i64 %or to ptr3616 %1 = load i32, ptr %0, align 43617 ret i32 %13618}3619 3620; Function Attrs: norecurse nounwind readonly uwtable willreturn3621define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_uint32_t(i64 %ptr) {3622; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_uint32_t:3623; CHECK-P10: # %bb.0: # %entry3624; CHECK-P10-NEXT: pli r4, 2441406253625; CHECK-P10-NEXT: rldicr r3, r3, 0, 233626; CHECK-P10-NEXT: rldic r4, r4, 12, 243627; CHECK-P10-NEXT: lwzx r3, r3, r43628; CHECK-P10-NEXT: blr3629;3630; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_uint32_t:3631; CHECK-PREP10: # %bb.0: # %entry3632; CHECK-PREP10-NEXT: lis r4, 37253633; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233634; CHECK-PREP10-NEXT: ori r4, r4, 190253635; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243636; CHECK-PREP10-NEXT: lwzx r3, r3, r43637; CHECK-PREP10-NEXT: blr3638entry:3639 %and = and i64 %ptr, -10995116277763640 %or = or i64 %and, 10000000000003641 %0 = inttoptr i64 %or to ptr3642 %1 = load i32, ptr %0, align 40963643 ret i32 %13644}3645 3646; Function Attrs: norecurse nounwind readonly uwtable willreturn3647define dso_local zeroext i32 @ld_cst_align16_uint32_t_uint32_t() {3648; CHECK-LABEL: ld_cst_align16_uint32_t_uint32_t:3649; CHECK: # %bb.0: # %entry3650; CHECK-NEXT: lwz r3, 4080(0)3651; CHECK-NEXT: blr3652entry:3653 %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 163654 ret i32 %03655}3656 3657; Function Attrs: norecurse nounwind readonly uwtable willreturn3658define dso_local zeroext i32 @ld_cst_align32_uint32_t_uint32_t() {3659; CHECK-LABEL: ld_cst_align32_uint32_t_uint32_t:3660; CHECK: # %bb.0: # %entry3661; CHECK-NEXT: lis r3, 1533662; CHECK-NEXT: lwz r3, -27108(r3)3663; CHECK-NEXT: blr3664entry:3665 %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 43666 ret i32 %03667}3668 3669; Function Attrs: norecurse nounwind readonly uwtable willreturn3670define dso_local zeroext i32 @ld_cst_align64_uint32_t_uint32_t() {3671; CHECK-P10-LABEL: ld_cst_align64_uint32_t_uint32_t:3672; CHECK-P10: # %bb.0: # %entry3673; CHECK-P10-NEXT: pli r3, 2441406253674; CHECK-P10-NEXT: rldic r3, r3, 12, 243675; CHECK-P10-NEXT: lwz r3, 0(r3)3676; CHECK-P10-NEXT: blr3677;3678; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_uint32_t:3679; CHECK-PREP10: # %bb.0: # %entry3680; CHECK-PREP10-NEXT: lis r3, 37253681; CHECK-PREP10-NEXT: ori r3, r3, 190253682; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243683; CHECK-PREP10-NEXT: lwz r3, 0(r3)3684; CHECK-PREP10-NEXT: blr3685entry:3686 %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40963687 ret i32 %03688}3689 3690; Function Attrs: norecurse nounwind readonly uwtable willreturn3691define dso_local zeroext i32 @ld_0_uint32_t_uint64_t(i64 %ptr) {3692; CHECK-LE-LABEL: ld_0_uint32_t_uint64_t:3693; CHECK-LE: # %bb.0: # %entry3694; CHECK-LE-NEXT: lwz r3, 0(r3)3695; CHECK-LE-NEXT: blr3696;3697; CHECK-BE-LABEL: ld_0_uint32_t_uint64_t:3698; CHECK-BE: # %bb.0: # %entry3699; CHECK-BE-NEXT: lwz r3, 4(r3)3700; CHECK-BE-NEXT: blr3701entry:3702 %0 = inttoptr i64 %ptr to ptr3703 %1 = load i64, ptr %0, align 83704 %conv = trunc i64 %1 to i323705 ret i32 %conv3706}3707 3708; Function Attrs: norecurse nounwind readonly uwtable willreturn3709define dso_local zeroext i32 @ld_align16_uint32_t_uint64_t(ptr nocapture readonly %ptr) {3710; CHECK-LE-LABEL: ld_align16_uint32_t_uint64_t:3711; CHECK-LE: # %bb.0: # %entry3712; CHECK-LE-NEXT: lwz r3, 8(r3)3713; CHECK-LE-NEXT: blr3714;3715; CHECK-BE-LABEL: ld_align16_uint32_t_uint64_t:3716; CHECK-BE: # %bb.0: # %entry3717; CHECK-BE-NEXT: lwz r3, 12(r3)3718; CHECK-BE-NEXT: blr3719entry:3720 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83721 %0 = load i64, ptr %add.ptr, align 83722 %conv = trunc i64 %0 to i323723 ret i32 %conv3724}3725 3726; Function Attrs: norecurse nounwind readonly uwtable willreturn3727define dso_local zeroext i32 @ld_align32_uint32_t_uint64_t(ptr nocapture readonly %ptr) {3728; CHECK-P10-LE-LABEL: ld_align32_uint32_t_uint64_t:3729; CHECK-P10-LE: # %bb.0: # %entry3730; CHECK-P10-LE-NEXT: plwz r3, 99999000(r3), 03731; CHECK-P10-LE-NEXT: blr3732;3733; CHECK-P10-BE-LABEL: ld_align32_uint32_t_uint64_t:3734; CHECK-P10-BE: # %bb.0: # %entry3735; CHECK-P10-BE-NEXT: plwz r3, 99999004(r3), 03736; CHECK-P10-BE-NEXT: blr3737;3738; CHECK-P9-LE-LABEL: ld_align32_uint32_t_uint64_t:3739; CHECK-P9-LE: # %bb.0: # %entry3740; CHECK-P9-LE-NEXT: lis r4, 15253741; CHECK-P9-LE-NEXT: ori r4, r4, 566003742; CHECK-P9-LE-NEXT: lwzx r3, r3, r43743; CHECK-P9-LE-NEXT: blr3744;3745; CHECK-P9-BE-LABEL: ld_align32_uint32_t_uint64_t:3746; CHECK-P9-BE: # %bb.0: # %entry3747; CHECK-P9-BE-NEXT: lis r4, 15253748; CHECK-P9-BE-NEXT: ori r4, r4, 566043749; CHECK-P9-BE-NEXT: lwzx r3, r3, r43750; CHECK-P9-BE-NEXT: blr3751;3752; CHECK-P8-LE-LABEL: ld_align32_uint32_t_uint64_t:3753; CHECK-P8-LE: # %bb.0: # %entry3754; CHECK-P8-LE-NEXT: lis r4, 15253755; CHECK-P8-LE-NEXT: ori r4, r4, 566003756; CHECK-P8-LE-NEXT: lwzx r3, r3, r43757; CHECK-P8-LE-NEXT: blr3758;3759; CHECK-P8-BE-LABEL: ld_align32_uint32_t_uint64_t:3760; CHECK-P8-BE: # %bb.0: # %entry3761; CHECK-P8-BE-NEXT: lis r4, 15253762; CHECK-P8-BE-NEXT: ori r4, r4, 566043763; CHECK-P8-BE-NEXT: lwzx r3, r3, r43764; CHECK-P8-BE-NEXT: blr3765entry:3766 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003767 %0 = load i64, ptr %add.ptr, align 83768 %conv = trunc i64 %0 to i323769 ret i32 %conv3770}3771 3772; Function Attrs: norecurse nounwind readonly uwtable willreturn3773define dso_local zeroext i32 @ld_align64_uint32_t_uint64_t(ptr nocapture readonly %ptr) {3774; CHECK-P10-LE-LABEL: ld_align64_uint32_t_uint64_t:3775; CHECK-P10-LE: # %bb.0: # %entry3776; CHECK-P10-LE-NEXT: pli r4, 2441406253777; CHECK-P10-LE-NEXT: rldic r4, r4, 12, 243778; CHECK-P10-LE-NEXT: lwzx r3, r3, r43779; CHECK-P10-LE-NEXT: blr3780;3781; CHECK-P10-BE-LABEL: ld_align64_uint32_t_uint64_t:3782; CHECK-P10-BE: # %bb.0: # %entry3783; CHECK-P10-BE-NEXT: pli r4, 2323784; CHECK-P10-BE-NEXT: pli r5, 35675873323785; CHECK-P10-BE-NEXT: rldimi r5, r4, 32, 03786; CHECK-P10-BE-NEXT: lwzx r3, r3, r53787; CHECK-P10-BE-NEXT: blr3788;3789; CHECK-P9-LE-LABEL: ld_align64_uint32_t_uint64_t:3790; CHECK-P9-LE: # %bb.0: # %entry3791; CHECK-P9-LE-NEXT: lis r4, 37253792; CHECK-P9-LE-NEXT: ori r4, r4, 190253793; CHECK-P9-LE-NEXT: rldic r4, r4, 12, 243794; CHECK-P9-LE-NEXT: lwzx r3, r3, r43795; CHECK-P9-LE-NEXT: blr3796;3797; CHECK-P9-BE-LABEL: ld_align64_uint32_t_uint64_t:3798; CHECK-P9-BE: # %bb.0: # %entry3799; CHECK-P9-BE-NEXT: li r4, 293800; CHECK-P9-BE-NEXT: rldic r4, r4, 35, 243801; CHECK-P9-BE-NEXT: oris r4, r4, 544373802; CHECK-P9-BE-NEXT: ori r4, r4, 41003803; CHECK-P9-BE-NEXT: lwzx r3, r3, r43804; CHECK-P9-BE-NEXT: blr3805;3806; CHECK-P8-LE-LABEL: ld_align64_uint32_t_uint64_t:3807; CHECK-P8-LE: # %bb.0: # %entry3808; CHECK-P8-LE-NEXT: lis r4, 37253809; CHECK-P8-LE-NEXT: ori r4, r4, 190253810; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 243811; CHECK-P8-LE-NEXT: lwzx r3, r3, r43812; CHECK-P8-LE-NEXT: blr3813;3814; CHECK-P8-BE-LABEL: ld_align64_uint32_t_uint64_t:3815; CHECK-P8-BE: # %bb.0: # %entry3816; CHECK-P8-BE-NEXT: li r4, 293817; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 243818; CHECK-P8-BE-NEXT: oris r4, r4, 544373819; CHECK-P8-BE-NEXT: ori r4, r4, 41003820; CHECK-P8-BE-NEXT: lwzx r3, r3, r43821; CHECK-P8-BE-NEXT: blr3822entry:3823 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003824 %0 = load i64, ptr %add.ptr, align 83825 %conv = trunc i64 %0 to i323826 ret i32 %conv3827}3828 3829; Function Attrs: norecurse nounwind readonly uwtable willreturn3830define dso_local zeroext i32 @ld_reg_uint32_t_uint64_t(ptr nocapture readonly %ptr, i64 %off) {3831; CHECK-LE-LABEL: ld_reg_uint32_t_uint64_t:3832; CHECK-LE: # %bb.0: # %entry3833; CHECK-LE-NEXT: lwzx r3, r3, r43834; CHECK-LE-NEXT: blr3835;3836; CHECK-BE-LABEL: ld_reg_uint32_t_uint64_t:3837; CHECK-BE: # %bb.0: # %entry3838; CHECK-BE-NEXT: add r3, r3, r43839; CHECK-BE-NEXT: lwz r3, 4(r3)3840; CHECK-BE-NEXT: blr3841entry:3842 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3843 %0 = load i64, ptr %add.ptr, align 83844 %conv = trunc i64 %0 to i323845 ret i32 %conv3846}3847 3848; Function Attrs: norecurse nounwind readonly uwtable willreturn3849define dso_local zeroext i32 @ld_or_uint32_t_uint64_t(i64 %ptr, i8 zeroext %off) {3850; CHECK-LE-LABEL: ld_or_uint32_t_uint64_t:3851; CHECK-LE: # %bb.0: # %entry3852; CHECK-LE-NEXT: or r3, r4, r33853; CHECK-LE-NEXT: lwz r3, 0(r3)3854; CHECK-LE-NEXT: blr3855;3856; CHECK-BE-LABEL: ld_or_uint32_t_uint64_t:3857; CHECK-BE: # %bb.0: # %entry3858; CHECK-BE-NEXT: or r3, r4, r33859; CHECK-BE-NEXT: lwz r3, 4(r3)3860; CHECK-BE-NEXT: blr3861entry:3862 %conv = zext i8 %off to i643863 %or = or i64 %conv, %ptr3864 %0 = inttoptr i64 %or to ptr3865 %1 = load i64, ptr %0, align 83866 %conv1 = trunc i64 %1 to i323867 ret i32 %conv13868}3869 3870; Function Attrs: norecurse nounwind readonly uwtable willreturn3871define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_uint64_t(i64 %ptr) {3872; CHECK-LE-LABEL: ld_not_disjoint16_uint32_t_uint64_t:3873; CHECK-LE: # %bb.0: # %entry3874; CHECK-LE-NEXT: ori r3, r3, 63875; CHECK-LE-NEXT: lwz r3, 0(r3)3876; CHECK-LE-NEXT: blr3877;3878; CHECK-BE-LABEL: ld_not_disjoint16_uint32_t_uint64_t:3879; CHECK-BE: # %bb.0: # %entry3880; CHECK-BE-NEXT: ori r3, r3, 63881; CHECK-BE-NEXT: lwz r3, 4(r3)3882; CHECK-BE-NEXT: blr3883entry:3884 %or = or i64 %ptr, 63885 %0 = inttoptr i64 %or to ptr3886 %1 = load i64, ptr %0, align 83887 %conv = trunc i64 %1 to i323888 ret i32 %conv3889}3890 3891; Function Attrs: norecurse nounwind readonly uwtable willreturn3892define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_uint64_t(i64 %ptr) {3893; CHECK-LE-LABEL: ld_disjoint_align16_uint32_t_uint64_t:3894; CHECK-LE: # %bb.0: # %entry3895; CHECK-LE-NEXT: rldicr r3, r3, 0, 513896; CHECK-LE-NEXT: lwz r3, 24(r3)3897; CHECK-LE-NEXT: blr3898;3899; CHECK-BE-LABEL: ld_disjoint_align16_uint32_t_uint64_t:3900; CHECK-BE: # %bb.0: # %entry3901; CHECK-BE-NEXT: rldicr r3, r3, 0, 513902; CHECK-BE-NEXT: lwz r3, 28(r3)3903; CHECK-BE-NEXT: blr3904entry:3905 %and = and i64 %ptr, -40963906 %or = or i64 %and, 243907 %0 = inttoptr i64 %or to ptr3908 %1 = load i64, ptr %0, align 83909 %conv = trunc i64 %1 to i323910 ret i32 %conv3911}3912 3913; Function Attrs: norecurse nounwind readonly uwtable willreturn3914define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_uint64_t(i64 %ptr) {3915; CHECK-LE-LABEL: ld_not_disjoint32_uint32_t_uint64_t:3916; CHECK-LE: # %bb.0: # %entry3917; CHECK-LE-NEXT: ori r3, r3, 344633918; CHECK-LE-NEXT: oris r3, r3, 13919; CHECK-LE-NEXT: lwz r3, 0(r3)3920; CHECK-LE-NEXT: blr3921;3922; CHECK-BE-LABEL: ld_not_disjoint32_uint32_t_uint64_t:3923; CHECK-BE: # %bb.0: # %entry3924; CHECK-BE-NEXT: ori r3, r3, 344633925; CHECK-BE-NEXT: oris r3, r3, 13926; CHECK-BE-NEXT: lwz r3, 4(r3)3927; CHECK-BE-NEXT: blr3928entry:3929 %or = or i64 %ptr, 999993930 %0 = inttoptr i64 %or to ptr3931 %1 = load i64, ptr %0, align 83932 %conv = trunc i64 %1 to i323933 ret i32 %conv3934}3935 3936; Function Attrs: norecurse nounwind readonly uwtable willreturn3937define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_uint64_t(i64 %ptr) {3938; CHECK-P10-LE-LABEL: ld_disjoint_align32_uint32_t_uint64_t:3939; CHECK-P10-LE: # %bb.0: # %entry3940; CHECK-P10-LE-NEXT: lis r4, -152643941; CHECK-P10-LE-NEXT: and r3, r3, r43942; CHECK-P10-LE-NEXT: plwz r3, 999990000(r3), 03943; CHECK-P10-LE-NEXT: blr3944;3945; CHECK-P10-BE-LABEL: ld_disjoint_align32_uint32_t_uint64_t:3946; CHECK-P10-BE: # %bb.0: # %entry3947; CHECK-P10-BE-NEXT: lis r4, -152643948; CHECK-P10-BE-NEXT: and r3, r3, r43949; CHECK-P10-BE-NEXT: plwz r3, 999990004(r3), 03950; CHECK-P10-BE-NEXT: blr3951;3952; CHECK-P9-LE-LABEL: ld_disjoint_align32_uint32_t_uint64_t:3953; CHECK-P9-LE: # %bb.0: # %entry3954; CHECK-P9-LE-NEXT: lis r4, -152643955; CHECK-P9-LE-NEXT: and r3, r3, r43956; CHECK-P9-LE-NEXT: lis r4, 152583957; CHECK-P9-LE-NEXT: ori r4, r4, 417123958; CHECK-P9-LE-NEXT: lwzx r3, r3, r43959; CHECK-P9-LE-NEXT: blr3960;3961; CHECK-P9-BE-LABEL: ld_disjoint_align32_uint32_t_uint64_t:3962; CHECK-P9-BE: # %bb.0: # %entry3963; CHECK-P9-BE-NEXT: lis r4, -152643964; CHECK-P9-BE-NEXT: and r3, r3, r43965; CHECK-P9-BE-NEXT: lis r4, 152583966; CHECK-P9-BE-NEXT: ori r4, r4, 417163967; CHECK-P9-BE-NEXT: lwzx r3, r3, r43968; CHECK-P9-BE-NEXT: blr3969;3970; CHECK-P8-LE-LABEL: ld_disjoint_align32_uint32_t_uint64_t:3971; CHECK-P8-LE: # %bb.0: # %entry3972; CHECK-P8-LE-NEXT: lis r4, -152643973; CHECK-P8-LE-NEXT: and r3, r3, r43974; CHECK-P8-LE-NEXT: lis r4, 152583975; CHECK-P8-LE-NEXT: ori r4, r4, 417123976; CHECK-P8-LE-NEXT: lwzx r3, r3, r43977; CHECK-P8-LE-NEXT: blr3978;3979; CHECK-P8-BE-LABEL: ld_disjoint_align32_uint32_t_uint64_t:3980; CHECK-P8-BE: # %bb.0: # %entry3981; CHECK-P8-BE-NEXT: lis r4, -152643982; CHECK-P8-BE-NEXT: and r3, r3, r43983; CHECK-P8-BE-NEXT: lis r4, 152583984; CHECK-P8-BE-NEXT: ori r4, r4, 417163985; CHECK-P8-BE-NEXT: lwzx r3, r3, r43986; CHECK-P8-BE-NEXT: blr3987entry:3988 %and = and i64 %ptr, -10003415043989 %or = or i64 %and, 9999900003990 %0 = inttoptr i64 %or to ptr3991 %1 = load i64, ptr %0, align 163992 %conv = trunc i64 %1 to i323993 ret i32 %conv3994}3995 3996; Function Attrs: norecurse nounwind readonly uwtable willreturn3997define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_uint64_t(i64 %ptr) {3998; CHECK-P10-LE-LABEL: ld_not_disjoint64_uint32_t_uint64_t:3999; CHECK-P10-LE: # %bb.0: # %entry4000; CHECK-P10-LE-NEXT: pli r4, 2324001; CHECK-P10-LE-NEXT: pli r5, 35675873294002; CHECK-P10-LE-NEXT: rldimi r5, r4, 32, 04003; CHECK-P10-LE-NEXT: or r3, r3, r54004; CHECK-P10-LE-NEXT: lwz r3, 0(r3)4005; CHECK-P10-LE-NEXT: blr4006;4007; CHECK-P10-BE-LABEL: ld_not_disjoint64_uint32_t_uint64_t:4008; CHECK-P10-BE: # %bb.0: # %entry4009; CHECK-P10-BE-NEXT: pli r4, 2324010; CHECK-P10-BE-NEXT: pli r5, 35675873294011; CHECK-P10-BE-NEXT: rldimi r5, r4, 32, 04012; CHECK-P10-BE-NEXT: or r3, r3, r54013; CHECK-P10-BE-NEXT: lwz r3, 4(r3)4014; CHECK-P10-BE-NEXT: blr4015;4016; CHECK-P9-LE-LABEL: ld_not_disjoint64_uint32_t_uint64_t:4017; CHECK-P9-LE: # %bb.0: # %entry4018; CHECK-P9-LE-NEXT: li r4, 294019; CHECK-P9-LE-NEXT: rldic r4, r4, 35, 244020; CHECK-P9-LE-NEXT: oris r4, r4, 544374021; CHECK-P9-LE-NEXT: ori r4, r4, 40974022; CHECK-P9-LE-NEXT: or r3, r3, r44023; CHECK-P9-LE-NEXT: lwz r3, 0(r3)4024; CHECK-P9-LE-NEXT: blr4025;4026; CHECK-P9-BE-LABEL: ld_not_disjoint64_uint32_t_uint64_t:4027; CHECK-P9-BE: # %bb.0: # %entry4028; CHECK-P9-BE-NEXT: li r4, 294029; CHECK-P9-BE-NEXT: rldic r4, r4, 35, 244030; CHECK-P9-BE-NEXT: oris r4, r4, 544374031; CHECK-P9-BE-NEXT: ori r4, r4, 40974032; CHECK-P9-BE-NEXT: or r3, r3, r44033; CHECK-P9-BE-NEXT: lwz r3, 4(r3)4034; CHECK-P9-BE-NEXT: blr4035;4036; CHECK-P8-LE-LABEL: ld_not_disjoint64_uint32_t_uint64_t:4037; CHECK-P8-LE: # %bb.0: # %entry4038; CHECK-P8-LE-NEXT: li r4, 294039; CHECK-P8-LE-NEXT: rldic r4, r4, 35, 244040; CHECK-P8-LE-NEXT: oris r4, r4, 544374041; CHECK-P8-LE-NEXT: ori r4, r4, 40974042; CHECK-P8-LE-NEXT: or r3, r3, r44043; CHECK-P8-LE-NEXT: lwz r3, 0(r3)4044; CHECK-P8-LE-NEXT: blr4045;4046; CHECK-P8-BE-LABEL: ld_not_disjoint64_uint32_t_uint64_t:4047; CHECK-P8-BE: # %bb.0: # %entry4048; CHECK-P8-BE-NEXT: li r4, 294049; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 244050; CHECK-P8-BE-NEXT: oris r4, r4, 544374051; CHECK-P8-BE-NEXT: ori r4, r4, 40974052; CHECK-P8-BE-NEXT: or r3, r3, r44053; CHECK-P8-BE-NEXT: lwz r3, 4(r3)4054; CHECK-P8-BE-NEXT: blr4055entry:4056 %or = or i64 %ptr, 10000000000014057 %0 = inttoptr i64 %or to ptr4058 %1 = load i64, ptr %0, align 84059 %conv = trunc i64 %1 to i324060 ret i32 %conv4061}4062 4063; Function Attrs: norecurse nounwind readonly uwtable willreturn4064define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_uint64_t(i64 %ptr) {4065; CHECK-P10-LE-LABEL: ld_disjoint_align64_uint32_t_uint64_t:4066; CHECK-P10-LE: # %bb.0: # %entry4067; CHECK-P10-LE-NEXT: pli r4, 2441406254068; CHECK-P10-LE-NEXT: rldicr r3, r3, 0, 234069; CHECK-P10-LE-NEXT: rldic r4, r4, 12, 244070; CHECK-P10-LE-NEXT: lwzx r3, r3, r44071; CHECK-P10-LE-NEXT: blr4072;4073; CHECK-P10-BE-LABEL: ld_disjoint_align64_uint32_t_uint64_t:4074; CHECK-P10-BE: # %bb.0: # %entry4075; CHECK-P10-BE-NEXT: pli r4, 2324076; CHECK-P10-BE-NEXT: pli r5, 35675873324077; CHECK-P10-BE-NEXT: rldicr r3, r3, 0, 234078; CHECK-P10-BE-NEXT: rldimi r5, r4, 32, 04079; CHECK-P10-BE-NEXT: lwzx r3, r3, r54080; CHECK-P10-BE-NEXT: blr4081;4082; CHECK-P9-LE-LABEL: ld_disjoint_align64_uint32_t_uint64_t:4083; CHECK-P9-LE: # %bb.0: # %entry4084; CHECK-P9-LE-NEXT: lis r4, 37254085; CHECK-P9-LE-NEXT: rldicr r3, r3, 0, 234086; CHECK-P9-LE-NEXT: ori r4, r4, 190254087; CHECK-P9-LE-NEXT: rldic r4, r4, 12, 244088; CHECK-P9-LE-NEXT: lwzx r3, r3, r44089; CHECK-P9-LE-NEXT: blr4090;4091; CHECK-P9-BE-LABEL: ld_disjoint_align64_uint32_t_uint64_t:4092; CHECK-P9-BE: # %bb.0: # %entry4093; CHECK-P9-BE-NEXT: li r4, 294094; CHECK-P9-BE-NEXT: rldicr r3, r3, 0, 234095; CHECK-P9-BE-NEXT: rldic r4, r4, 35, 244096; CHECK-P9-BE-NEXT: oris r4, r4, 544374097; CHECK-P9-BE-NEXT: ori r4, r4, 41004098; CHECK-P9-BE-NEXT: lwzx r3, r3, r44099; CHECK-P9-BE-NEXT: blr4100;4101; CHECK-P8-LE-LABEL: ld_disjoint_align64_uint32_t_uint64_t:4102; CHECK-P8-LE: # %bb.0: # %entry4103; CHECK-P8-LE-NEXT: lis r4, 37254104; CHECK-P8-LE-NEXT: rldicr r3, r3, 0, 234105; CHECK-P8-LE-NEXT: ori r4, r4, 190254106; CHECK-P8-LE-NEXT: rldic r4, r4, 12, 244107; CHECK-P8-LE-NEXT: lwzx r3, r3, r44108; CHECK-P8-LE-NEXT: blr4109;4110; CHECK-P8-BE-LABEL: ld_disjoint_align64_uint32_t_uint64_t:4111; CHECK-P8-BE: # %bb.0: # %entry4112; CHECK-P8-BE-NEXT: li r4, 294113; CHECK-P8-BE-NEXT: rldicr r3, r3, 0, 234114; CHECK-P8-BE-NEXT: rldic r4, r4, 35, 244115; CHECK-P8-BE-NEXT: oris r4, r4, 544374116; CHECK-P8-BE-NEXT: ori r4, r4, 41004117; CHECK-P8-BE-NEXT: lwzx r3, r3, r44118; CHECK-P8-BE-NEXT: blr4119entry:4120 %and = and i64 %ptr, -10995116277764121 %or = or i64 %and, 10000000000004122 %0 = inttoptr i64 %or to ptr4123 %1 = load i64, ptr %0, align 40964124 %conv = trunc i64 %1 to i324125 ret i32 %conv4126}4127 4128; Function Attrs: norecurse nounwind readonly uwtable willreturn4129define dso_local zeroext i32 @ld_cst_align16_uint32_t_uint64_t() {4130; CHECK-LE-LABEL: ld_cst_align16_uint32_t_uint64_t:4131; CHECK-LE: # %bb.0: # %entry4132; CHECK-LE-NEXT: lwz r3, 4080(0)4133; CHECK-LE-NEXT: blr4134;4135; CHECK-BE-LABEL: ld_cst_align16_uint32_t_uint64_t:4136; CHECK-BE: # %bb.0: # %entry4137; CHECK-BE-NEXT: lwz r3, 4084(0)4138; CHECK-BE-NEXT: blr4139entry:4140 %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 164141 %conv = trunc i64 %0 to i324142 ret i32 %conv4143}4144 4145; Function Attrs: norecurse nounwind readonly uwtable willreturn4146define dso_local zeroext i32 @ld_cst_align32_uint32_t_uint64_t() {4147; CHECK-LE-LABEL: ld_cst_align32_uint32_t_uint64_t:4148; CHECK-LE: # %bb.0: # %entry4149; CHECK-LE-NEXT: lis r3, 1534150; CHECK-LE-NEXT: lwz r3, -27108(r3)4151; CHECK-LE-NEXT: blr4152;4153; CHECK-BE-LABEL: ld_cst_align32_uint32_t_uint64_t:4154; CHECK-BE: # %bb.0: # %entry4155; CHECK-BE-NEXT: lis r3, 1534156; CHECK-BE-NEXT: lwz r3, -27104(r3)4157; CHECK-BE-NEXT: blr4158entry:4159 %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 84160 %conv = trunc i64 %0 to i324161 ret i32 %conv4162}4163 4164; Function Attrs: norecurse nounwind readonly uwtable willreturn4165define dso_local zeroext i32 @ld_cst_align64_uint32_t_uint64_t() {4166; CHECK-P10-LE-LABEL: ld_cst_align64_uint32_t_uint64_t:4167; CHECK-P10-LE: # %bb.0: # %entry4168; CHECK-P10-LE-NEXT: pli r3, 2441406254169; CHECK-P10-LE-NEXT: rldic r3, r3, 12, 244170; CHECK-P10-LE-NEXT: lwz r3, 0(r3)4171; CHECK-P10-LE-NEXT: blr4172;4173; CHECK-P10-BE-LABEL: ld_cst_align64_uint32_t_uint64_t:4174; CHECK-P10-BE: # %bb.0: # %entry4175; CHECK-P10-BE-NEXT: pli r3, 2324176; CHECK-P10-BE-NEXT: pli r4, 35675873324177; CHECK-P10-BE-NEXT: rldimi r4, r3, 32, 04178; CHECK-P10-BE-NEXT: lwz r3, 0(r4)4179; CHECK-P10-BE-NEXT: blr4180;4181; CHECK-P9-LE-LABEL: ld_cst_align64_uint32_t_uint64_t:4182; CHECK-P9-LE: # %bb.0: # %entry4183; CHECK-P9-LE-NEXT: lis r3, 37254184; CHECK-P9-LE-NEXT: ori r3, r3, 190254185; CHECK-P9-LE-NEXT: rldic r3, r3, 12, 244186; CHECK-P9-LE-NEXT: lwz r3, 0(r3)4187; CHECK-P9-LE-NEXT: blr4188;4189; CHECK-P9-BE-LABEL: ld_cst_align64_uint32_t_uint64_t:4190; CHECK-P9-BE: # %bb.0: # %entry4191; CHECK-P9-BE-NEXT: li r3, 294192; CHECK-P9-BE-NEXT: rldic r3, r3, 35, 244193; CHECK-P9-BE-NEXT: oris r3, r3, 544374194; CHECK-P9-BE-NEXT: ori r3, r3, 41004195; CHECK-P9-BE-NEXT: lwz r3, 0(r3)4196; CHECK-P9-BE-NEXT: blr4197;4198; CHECK-P8-LE-LABEL: ld_cst_align64_uint32_t_uint64_t:4199; CHECK-P8-LE: # %bb.0: # %entry4200; CHECK-P8-LE-NEXT: lis r3, 37254201; CHECK-P8-LE-NEXT: ori r3, r3, 190254202; CHECK-P8-LE-NEXT: rldic r3, r3, 12, 244203; CHECK-P8-LE-NEXT: lwz r3, 0(r3)4204; CHECK-P8-LE-NEXT: blr4205;4206; CHECK-P8-BE-LABEL: ld_cst_align64_uint32_t_uint64_t:4207; CHECK-P8-BE: # %bb.0: # %entry4208; CHECK-P8-BE-NEXT: li r3, 294209; CHECK-P8-BE-NEXT: rldic r3, r3, 35, 244210; CHECK-P8-BE-NEXT: oris r3, r3, 544374211; CHECK-P8-BE-NEXT: ori r3, r3, 41004212; CHECK-P8-BE-NEXT: lwz r3, 0(r3)4213; CHECK-P8-BE-NEXT: blr4214entry:4215 %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40964216 %conv = trunc i64 %0 to i324217 ret i32 %conv4218}4219 4220; Function Attrs: norecurse nounwind readonly uwtable willreturn4221define dso_local zeroext i32 @ld_0_uint32_t_float(i64 %ptr) {4222; CHECK-LABEL: ld_0_uint32_t_float:4223; CHECK: # %bb.0: # %entry4224; CHECK-NEXT: lfs f0, 0(r3)4225; CHECK-NEXT: xscvdpuxws f0, f04226; CHECK-NEXT: mffprwz r3, f04227; CHECK-NEXT: blr4228entry:4229 %0 = inttoptr i64 %ptr to ptr4230 %1 = load float, ptr %0, align 44231 %conv = fptoui float %1 to i324232 ret i32 %conv4233}4234 4235; Function Attrs: norecurse nounwind readonly uwtable willreturn4236define dso_local zeroext i32 @ld_align16_uint32_t_float(ptr nocapture readonly %ptr) {4237; CHECK-LABEL: ld_align16_uint32_t_float:4238; CHECK: # %bb.0: # %entry4239; CHECK-NEXT: lfs f0, 8(r3)4240; CHECK-NEXT: xscvdpuxws f0, f04241; CHECK-NEXT: mffprwz r3, f04242; CHECK-NEXT: blr4243entry:4244 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84245 %0 = load float, ptr %add.ptr, align 44246 %conv = fptoui float %0 to i324247 ret i32 %conv4248}4249 4250; Function Attrs: norecurse nounwind readonly uwtable willreturn4251define dso_local zeroext i32 @ld_align32_uint32_t_float(ptr nocapture readonly %ptr) {4252; CHECK-P10-LABEL: ld_align32_uint32_t_float:4253; CHECK-P10: # %bb.0: # %entry4254; CHECK-P10-NEXT: plfs f0, 99999000(r3), 04255; CHECK-P10-NEXT: xscvdpuxws f0, f04256; CHECK-P10-NEXT: mffprwz r3, f04257; CHECK-P10-NEXT: blr4258;4259; CHECK-PREP10-LABEL: ld_align32_uint32_t_float:4260; CHECK-PREP10: # %bb.0: # %entry4261; CHECK-PREP10-NEXT: lis r4, 15254262; CHECK-PREP10-NEXT: ori r4, r4, 566004263; CHECK-PREP10-NEXT: lfsx f0, r3, r44264; CHECK-PREP10-NEXT: xscvdpuxws f0, f04265; CHECK-PREP10-NEXT: mffprwz r3, f04266; CHECK-PREP10-NEXT: blr4267entry:4268 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004269 %0 = load float, ptr %add.ptr, align 44270 %conv = fptoui float %0 to i324271 ret i32 %conv4272}4273 4274; Function Attrs: norecurse nounwind readonly uwtable willreturn4275define dso_local zeroext i32 @ld_align64_uint32_t_float(ptr nocapture readonly %ptr) {4276; CHECK-P10-LABEL: ld_align64_uint32_t_float:4277; CHECK-P10: # %bb.0: # %entry4278; CHECK-P10-NEXT: pli r4, 2441406254279; CHECK-P10-NEXT: rldic r4, r4, 12, 244280; CHECK-P10-NEXT: lfsx f0, r3, r44281; CHECK-P10-NEXT: xscvdpuxws f0, f04282; CHECK-P10-NEXT: mffprwz r3, f04283; CHECK-P10-NEXT: blr4284;4285; CHECK-PREP10-LABEL: ld_align64_uint32_t_float:4286; CHECK-PREP10: # %bb.0: # %entry4287; CHECK-PREP10-NEXT: lis r4, 37254288; CHECK-PREP10-NEXT: ori r4, r4, 190254289; CHECK-PREP10-NEXT: rldic r4, r4, 12, 244290; CHECK-PREP10-NEXT: lfsx f0, r3, r44291; CHECK-PREP10-NEXT: xscvdpuxws f0, f04292; CHECK-PREP10-NEXT: mffprwz r3, f04293; CHECK-PREP10-NEXT: blr4294entry:4295 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004296 %0 = load float, ptr %add.ptr, align 44297 %conv = fptoui float %0 to i324298 ret i32 %conv4299}4300 4301; Function Attrs: norecurse nounwind readonly uwtable willreturn4302define dso_local zeroext i32 @ld_reg_uint32_t_float(ptr nocapture readonly %ptr, i64 %off) {4303; CHECK-LABEL: ld_reg_uint32_t_float:4304; CHECK: # %bb.0: # %entry4305; CHECK-NEXT: lfsx f0, r3, r44306; CHECK-NEXT: xscvdpuxws f0, f04307; CHECK-NEXT: mffprwz r3, f04308; CHECK-NEXT: blr4309entry:4310 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4311 %0 = load float, ptr %add.ptr, align 44312 %conv = fptoui float %0 to i324313 ret i32 %conv4314}4315 4316; Function Attrs: norecurse nounwind readonly uwtable willreturn4317define dso_local zeroext i32 @ld_or_uint32_t_float(i64 %ptr, i8 zeroext %off) {4318; CHECK-LABEL: ld_or_uint32_t_float:4319; CHECK: # %bb.0: # %entry4320; CHECK-NEXT: or r3, r4, r34321; CHECK-NEXT: lfs f0, 0(r3)4322; CHECK-NEXT: xscvdpuxws f0, f04323; CHECK-NEXT: mffprwz r3, f04324; CHECK-NEXT: blr4325entry:4326 %conv = zext i8 %off to i644327 %or = or i64 %conv, %ptr4328 %0 = inttoptr i64 %or to ptr4329 %1 = load float, ptr %0, align 44330 %conv1 = fptoui float %1 to i324331 ret i32 %conv14332}4333 4334; Function Attrs: norecurse nounwind readonly uwtable willreturn4335define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_float(i64 %ptr) {4336; CHECK-LABEL: ld_not_disjoint16_uint32_t_float:4337; CHECK: # %bb.0: # %entry4338; CHECK-NEXT: ori r3, r3, 64339; CHECK-NEXT: lfs f0, 0(r3)4340; CHECK-NEXT: xscvdpuxws f0, f04341; CHECK-NEXT: mffprwz r3, f04342; CHECK-NEXT: blr4343entry:4344 %or = or i64 %ptr, 64345 %0 = inttoptr i64 %or to ptr4346 %1 = load float, ptr %0, align 44347 %conv = fptoui float %1 to i324348 ret i32 %conv4349}4350 4351; Function Attrs: norecurse nounwind readonly uwtable willreturn4352define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_float(i64 %ptr) {4353; CHECK-LABEL: ld_disjoint_align16_uint32_t_float:4354; CHECK: # %bb.0: # %entry4355; CHECK-NEXT: rldicr r3, r3, 0, 514356; CHECK-NEXT: lfs f0, 24(r3)4357; CHECK-NEXT: xscvdpuxws f0, f04358; CHECK-NEXT: mffprwz r3, f04359; CHECK-NEXT: blr4360entry:4361 %and = and i64 %ptr, -40964362 %or = or i64 %and, 244363 %0 = inttoptr i64 %or to ptr4364 %1 = load float, ptr %0, align 84365 %conv = fptoui float %1 to i324366 ret i32 %conv4367}4368 4369; Function Attrs: norecurse nounwind readonly uwtable willreturn4370define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_float(i64 %ptr) {4371; CHECK-LABEL: ld_not_disjoint32_uint32_t_float:4372; CHECK: # %bb.0: # %entry4373; CHECK-NEXT: ori r3, r3, 344634374; CHECK-NEXT: oris r3, r3, 14375; CHECK-NEXT: lfs f0, 0(r3)4376; CHECK-NEXT: xscvdpuxws f0, f04377; CHECK-NEXT: mffprwz r3, f04378; CHECK-NEXT: blr4379entry:4380 %or = or i64 %ptr, 999994381 %0 = inttoptr i64 %or to ptr4382 %1 = load float, ptr %0, align 44383 %conv = fptoui float %1 to i324384 ret i32 %conv4385}4386 4387; Function Attrs: norecurse nounwind readonly uwtable willreturn4388define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_float(i64 %ptr) {4389; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_float:4390; CHECK-P10: # %bb.0: # %entry4391; CHECK-P10-NEXT: lis r4, -152644392; CHECK-P10-NEXT: and r3, r3, r44393; CHECK-P10-NEXT: plfs f0, 999990000(r3), 04394; CHECK-P10-NEXT: xscvdpuxws f0, f04395; CHECK-P10-NEXT: mffprwz r3, f04396; CHECK-P10-NEXT: blr4397;4398; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_float:4399; CHECK-PREP10: # %bb.0: # %entry4400; CHECK-PREP10-NEXT: lis r4, -152644401; CHECK-PREP10-NEXT: and r3, r3, r44402; CHECK-PREP10-NEXT: lis r4, 152584403; CHECK-PREP10-NEXT: ori r4, r4, 417124404; CHECK-PREP10-NEXT: lfsx f0, r3, r44405; CHECK-PREP10-NEXT: xscvdpuxws f0, f04406; CHECK-PREP10-NEXT: mffprwz r3, f04407; CHECK-PREP10-NEXT: blr4408entry:4409 %and = and i64 %ptr, -10003415044410 %or = or i64 %and, 9999900004411 %0 = inttoptr i64 %or to ptr4412 %1 = load float, ptr %0, align 164413 %conv = fptoui float %1 to i324414 ret i32 %conv4415}4416 4417; Function Attrs: norecurse nounwind readonly uwtable willreturn4418define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_float(i64 %ptr) {4419; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_float:4420; CHECK-P10: # %bb.0: # %entry4421; CHECK-P10-NEXT: pli r4, 2324422; CHECK-P10-NEXT: pli r5, 35675873294423; CHECK-P10-NEXT: rldimi r5, r4, 32, 04424; CHECK-P10-NEXT: or r3, r3, r54425; CHECK-P10-NEXT: lfs f0, 0(r3)4426; CHECK-P10-NEXT: xscvdpuxws f0, f04427; CHECK-P10-NEXT: mffprwz r3, f04428; CHECK-P10-NEXT: blr4429;4430; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_float:4431; CHECK-PREP10: # %bb.0: # %entry4432; CHECK-PREP10-NEXT: li r4, 294433; CHECK-PREP10-NEXT: rldic r4, r4, 35, 244434; CHECK-PREP10-NEXT: oris r4, r4, 544374435; CHECK-PREP10-NEXT: ori r4, r4, 40974436; CHECK-PREP10-NEXT: or r3, r3, r44437; CHECK-PREP10-NEXT: lfs f0, 0(r3)4438; CHECK-PREP10-NEXT: xscvdpuxws f0, f04439; CHECK-PREP10-NEXT: mffprwz r3, f04440; CHECK-PREP10-NEXT: blr4441entry:4442 %or = or i64 %ptr, 10000000000014443 %0 = inttoptr i64 %or to ptr4444 %1 = load float, ptr %0, align 44445 %conv = fptoui float %1 to i324446 ret i32 %conv4447}4448 4449; Function Attrs: norecurse nounwind readonly uwtable willreturn4450define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_float(i64 %ptr) {4451; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_float:4452; CHECK-P10: # %bb.0: # %entry4453; CHECK-P10-NEXT: pli r4, 2441406254454; CHECK-P10-NEXT: rldicr r3, r3, 0, 234455; CHECK-P10-NEXT: rldic r4, r4, 12, 244456; CHECK-P10-NEXT: lfsx f0, r3, r44457; CHECK-P10-NEXT: xscvdpuxws f0, f04458; CHECK-P10-NEXT: mffprwz r3, f04459; CHECK-P10-NEXT: blr4460;4461; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_float:4462; CHECK-PREP10: # %bb.0: # %entry4463; CHECK-PREP10-NEXT: lis r4, 37254464; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 234465; CHECK-PREP10-NEXT: ori r4, r4, 190254466; CHECK-PREP10-NEXT: rldic r4, r4, 12, 244467; CHECK-PREP10-NEXT: lfsx f0, r3, r44468; CHECK-PREP10-NEXT: xscvdpuxws f0, f04469; CHECK-PREP10-NEXT: mffprwz r3, f04470; CHECK-PREP10-NEXT: blr4471entry:4472 %and = and i64 %ptr, -10995116277764473 %or = or i64 %and, 10000000000004474 %0 = inttoptr i64 %or to ptr4475 %1 = load float, ptr %0, align 40964476 %conv = fptoui float %1 to i324477 ret i32 %conv4478}4479 4480; Function Attrs: norecurse nounwind readonly uwtable willreturn4481define dso_local zeroext i32 @ld_cst_align16_uint32_t_float() {4482; CHECK-LABEL: ld_cst_align16_uint32_t_float:4483; CHECK: # %bb.0: # %entry4484; CHECK-NEXT: lfs f0, 4080(0)4485; CHECK-NEXT: xscvdpuxws f0, f04486; CHECK-NEXT: mffprwz r3, f04487; CHECK-NEXT: blr4488entry:4489 %0 = load float, ptr inttoptr (i64 4080 to ptr), align 164490 %conv = fptoui float %0 to i324491 ret i32 %conv4492}4493 4494; Function Attrs: norecurse nounwind readonly uwtable willreturn4495define dso_local zeroext i32 @ld_cst_align32_uint32_t_float() {4496; CHECK-LABEL: ld_cst_align32_uint32_t_float:4497; CHECK: # %bb.0: # %entry4498; CHECK-NEXT: lis r3, 1534499; CHECK-NEXT: lfs f0, -27108(r3)4500; CHECK-NEXT: xscvdpuxws f0, f04501; CHECK-NEXT: mffprwz r3, f04502; CHECK-NEXT: blr4503entry:4504 %0 = load float, ptr inttoptr (i64 9999900 to ptr), align 44505 %conv = fptoui float %0 to i324506 ret i32 %conv4507}4508 4509; Function Attrs: norecurse nounwind readonly uwtable willreturn4510define dso_local zeroext i32 @ld_cst_align64_uint32_t_float() {4511; CHECK-P10-LABEL: ld_cst_align64_uint32_t_float:4512; CHECK-P10: # %bb.0: # %entry4513; CHECK-P10-NEXT: pli r3, 2441406254514; CHECK-P10-NEXT: rldic r3, r3, 12, 244515; CHECK-P10-NEXT: lfs f0, 0(r3)4516; CHECK-P10-NEXT: xscvdpuxws f0, f04517; CHECK-P10-NEXT: mffprwz r3, f04518; CHECK-P10-NEXT: blr4519;4520; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_float:4521; CHECK-PREP10: # %bb.0: # %entry4522; CHECK-PREP10-NEXT: lis r3, 37254523; CHECK-PREP10-NEXT: ori r3, r3, 190254524; CHECK-PREP10-NEXT: rldic r3, r3, 12, 244525; CHECK-PREP10-NEXT: lfs f0, 0(r3)4526; CHECK-PREP10-NEXT: xscvdpuxws f0, f04527; CHECK-PREP10-NEXT: mffprwz r3, f04528; CHECK-PREP10-NEXT: blr4529entry:4530 %0 = load float, ptr inttoptr (i64 1000000000000 to ptr), align 40964531 %conv = fptoui float %0 to i324532 ret i32 %conv4533}4534 4535; Function Attrs: norecurse nounwind readonly uwtable willreturn4536define dso_local zeroext i32 @ld_0_uint32_t_double(i64 %ptr) {4537; CHECK-LABEL: ld_0_uint32_t_double:4538; CHECK: # %bb.0: # %entry4539; CHECK-NEXT: lfd f0, 0(r3)4540; CHECK-NEXT: xscvdpuxws f0, f04541; CHECK-NEXT: mffprwz r3, f04542; CHECK-NEXT: blr4543entry:4544 %0 = inttoptr i64 %ptr to ptr4545 %1 = load double, ptr %0, align 84546 %conv = fptoui double %1 to i324547 ret i32 %conv4548}4549 4550; Function Attrs: norecurse nounwind readonly uwtable willreturn4551define dso_local zeroext i32 @ld_align16_uint32_t_double(ptr nocapture readonly %ptr) {4552; CHECK-LABEL: ld_align16_uint32_t_double:4553; CHECK: # %bb.0: # %entry4554; CHECK-NEXT: lfd f0, 8(r3)4555; CHECK-NEXT: xscvdpuxws f0, f04556; CHECK-NEXT: mffprwz r3, f04557; CHECK-NEXT: blr4558entry:4559 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84560 %0 = load double, ptr %add.ptr, align 84561 %conv = fptoui double %0 to i324562 ret i32 %conv4563}4564 4565; Function Attrs: norecurse nounwind readonly uwtable willreturn4566define dso_local zeroext i32 @ld_align32_uint32_t_double(ptr nocapture readonly %ptr) {4567; CHECK-P10-LABEL: ld_align32_uint32_t_double:4568; CHECK-P10: # %bb.0: # %entry4569; CHECK-P10-NEXT: plfd f0, 99999000(r3), 04570; CHECK-P10-NEXT: xscvdpuxws f0, f04571; CHECK-P10-NEXT: mffprwz r3, f04572; CHECK-P10-NEXT: blr4573;4574; CHECK-PREP10-LABEL: ld_align32_uint32_t_double:4575; CHECK-PREP10: # %bb.0: # %entry4576; CHECK-PREP10-NEXT: lis r4, 15254577; CHECK-PREP10-NEXT: ori r4, r4, 566004578; CHECK-PREP10-NEXT: lfdx f0, r3, r44579; CHECK-PREP10-NEXT: xscvdpuxws f0, f04580; CHECK-PREP10-NEXT: mffprwz r3, f04581; CHECK-PREP10-NEXT: blr4582entry:4583 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004584 %0 = load double, ptr %add.ptr, align 84585 %conv = fptoui double %0 to i324586 ret i32 %conv4587}4588 4589; Function Attrs: norecurse nounwind readonly uwtable willreturn4590define dso_local zeroext i32 @ld_align64_uint32_t_double(ptr nocapture readonly %ptr) {4591; CHECK-P10-LABEL: ld_align64_uint32_t_double:4592; CHECK-P10: # %bb.0: # %entry4593; CHECK-P10-NEXT: pli r4, 2441406254594; CHECK-P10-NEXT: rldic r4, r4, 12, 244595; CHECK-P10-NEXT: lfdx f0, r3, r44596; CHECK-P10-NEXT: xscvdpuxws f0, f04597; CHECK-P10-NEXT: mffprwz r3, f04598; CHECK-P10-NEXT: blr4599;4600; CHECK-PREP10-LABEL: ld_align64_uint32_t_double:4601; CHECK-PREP10: # %bb.0: # %entry4602; CHECK-PREP10-NEXT: lis r4, 37254603; CHECK-PREP10-NEXT: ori r4, r4, 190254604; CHECK-PREP10-NEXT: rldic r4, r4, 12, 244605; CHECK-PREP10-NEXT: lfdx f0, r3, r44606; CHECK-PREP10-NEXT: xscvdpuxws f0, f04607; CHECK-PREP10-NEXT: mffprwz r3, f04608; CHECK-PREP10-NEXT: blr4609entry:4610 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004611 %0 = load double, ptr %add.ptr, align 84612 %conv = fptoui double %0 to i324613 ret i32 %conv4614}4615 4616; Function Attrs: norecurse nounwind readonly uwtable willreturn4617define dso_local zeroext i32 @ld_reg_uint32_t_double(ptr nocapture readonly %ptr, i64 %off) {4618; CHECK-LABEL: ld_reg_uint32_t_double:4619; CHECK: # %bb.0: # %entry4620; CHECK-NEXT: lfdx f0, r3, r44621; CHECK-NEXT: xscvdpuxws f0, f04622; CHECK-NEXT: mffprwz r3, f04623; CHECK-NEXT: blr4624entry:4625 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4626 %0 = load double, ptr %add.ptr, align 84627 %conv = fptoui double %0 to i324628 ret i32 %conv4629}4630 4631; Function Attrs: norecurse nounwind readonly uwtable willreturn4632define dso_local zeroext i32 @ld_or_uint32_t_double(i64 %ptr, i8 zeroext %off) {4633; CHECK-LABEL: ld_or_uint32_t_double:4634; CHECK: # %bb.0: # %entry4635; CHECK-NEXT: or r3, r4, r34636; CHECK-NEXT: lfd f0, 0(r3)4637; CHECK-NEXT: xscvdpuxws f0, f04638; CHECK-NEXT: mffprwz r3, f04639; CHECK-NEXT: blr4640entry:4641 %conv = zext i8 %off to i644642 %or = or i64 %conv, %ptr4643 %0 = inttoptr i64 %or to ptr4644 %1 = load double, ptr %0, align 84645 %conv1 = fptoui double %1 to i324646 ret i32 %conv14647}4648 4649; Function Attrs: norecurse nounwind readonly uwtable willreturn4650define dso_local zeroext i32 @ld_not_disjoint16_uint32_t_double(i64 %ptr) {4651; CHECK-LABEL: ld_not_disjoint16_uint32_t_double:4652; CHECK: # %bb.0: # %entry4653; CHECK-NEXT: ori r3, r3, 64654; CHECK-NEXT: lfd f0, 0(r3)4655; CHECK-NEXT: xscvdpuxws f0, f04656; CHECK-NEXT: mffprwz r3, f04657; CHECK-NEXT: blr4658entry:4659 %or = or i64 %ptr, 64660 %0 = inttoptr i64 %or to ptr4661 %1 = load double, ptr %0, align 84662 %conv = fptoui double %1 to i324663 ret i32 %conv4664}4665 4666; Function Attrs: norecurse nounwind readonly uwtable willreturn4667define dso_local zeroext i32 @ld_disjoint_align16_uint32_t_double(i64 %ptr) {4668; CHECK-LABEL: ld_disjoint_align16_uint32_t_double:4669; CHECK: # %bb.0: # %entry4670; CHECK-NEXT: rldicr r3, r3, 0, 514671; CHECK-NEXT: lfd f0, 24(r3)4672; CHECK-NEXT: xscvdpuxws f0, f04673; CHECK-NEXT: mffprwz r3, f04674; CHECK-NEXT: blr4675entry:4676 %and = and i64 %ptr, -40964677 %or = or i64 %and, 244678 %0 = inttoptr i64 %or to ptr4679 %1 = load double, ptr %0, align 84680 %conv = fptoui double %1 to i324681 ret i32 %conv4682}4683 4684; Function Attrs: norecurse nounwind readonly uwtable willreturn4685define dso_local zeroext i32 @ld_not_disjoint32_uint32_t_double(i64 %ptr) {4686; CHECK-LABEL: ld_not_disjoint32_uint32_t_double:4687; CHECK: # %bb.0: # %entry4688; CHECK-NEXT: ori r3, r3, 344634689; CHECK-NEXT: oris r3, r3, 14690; CHECK-NEXT: lfd f0, 0(r3)4691; CHECK-NEXT: xscvdpuxws f0, f04692; CHECK-NEXT: mffprwz r3, f04693; CHECK-NEXT: blr4694entry:4695 %or = or i64 %ptr, 999994696 %0 = inttoptr i64 %or to ptr4697 %1 = load double, ptr %0, align 84698 %conv = fptoui double %1 to i324699 ret i32 %conv4700}4701 4702; Function Attrs: norecurse nounwind readonly uwtable willreturn4703define dso_local zeroext i32 @ld_disjoint_align32_uint32_t_double(i64 %ptr) {4704; CHECK-P10-LABEL: ld_disjoint_align32_uint32_t_double:4705; CHECK-P10: # %bb.0: # %entry4706; CHECK-P10-NEXT: lis r4, -152644707; CHECK-P10-NEXT: and r3, r3, r44708; CHECK-P10-NEXT: plfd f0, 999990000(r3), 04709; CHECK-P10-NEXT: xscvdpuxws f0, f04710; CHECK-P10-NEXT: mffprwz r3, f04711; CHECK-P10-NEXT: blr4712;4713; CHECK-PREP10-LABEL: ld_disjoint_align32_uint32_t_double:4714; CHECK-PREP10: # %bb.0: # %entry4715; CHECK-PREP10-NEXT: lis r4, -152644716; CHECK-PREP10-NEXT: and r3, r3, r44717; CHECK-PREP10-NEXT: lis r4, 152584718; CHECK-PREP10-NEXT: ori r4, r4, 417124719; CHECK-PREP10-NEXT: lfdx f0, r3, r44720; CHECK-PREP10-NEXT: xscvdpuxws f0, f04721; CHECK-PREP10-NEXT: mffprwz r3, f04722; CHECK-PREP10-NEXT: blr4723entry:4724 %and = and i64 %ptr, -10003415044725 %or = or i64 %and, 9999900004726 %0 = inttoptr i64 %or to ptr4727 %1 = load double, ptr %0, align 164728 %conv = fptoui double %1 to i324729 ret i32 %conv4730}4731 4732; Function Attrs: norecurse nounwind readonly uwtable willreturn4733define dso_local zeroext i32 @ld_not_disjoint64_uint32_t_double(i64 %ptr) {4734; CHECK-P10-LABEL: ld_not_disjoint64_uint32_t_double:4735; CHECK-P10: # %bb.0: # %entry4736; CHECK-P10-NEXT: pli r4, 2324737; CHECK-P10-NEXT: pli r5, 35675873294738; CHECK-P10-NEXT: rldimi r5, r4, 32, 04739; CHECK-P10-NEXT: or r3, r3, r54740; CHECK-P10-NEXT: lfd f0, 0(r3)4741; CHECK-P10-NEXT: xscvdpuxws f0, f04742; CHECK-P10-NEXT: mffprwz r3, f04743; CHECK-P10-NEXT: blr4744;4745; CHECK-PREP10-LABEL: ld_not_disjoint64_uint32_t_double:4746; CHECK-PREP10: # %bb.0: # %entry4747; CHECK-PREP10-NEXT: li r4, 294748; CHECK-PREP10-NEXT: rldic r4, r4, 35, 244749; CHECK-PREP10-NEXT: oris r4, r4, 544374750; CHECK-PREP10-NEXT: ori r4, r4, 40974751; CHECK-PREP10-NEXT: or r3, r3, r44752; CHECK-PREP10-NEXT: lfd f0, 0(r3)4753; CHECK-PREP10-NEXT: xscvdpuxws f0, f04754; CHECK-PREP10-NEXT: mffprwz r3, f04755; CHECK-PREP10-NEXT: blr4756entry:4757 %or = or i64 %ptr, 10000000000014758 %0 = inttoptr i64 %or to ptr4759 %1 = load double, ptr %0, align 84760 %conv = fptoui double %1 to i324761 ret i32 %conv4762}4763 4764; Function Attrs: norecurse nounwind readonly uwtable willreturn4765define dso_local zeroext i32 @ld_disjoint_align64_uint32_t_double(i64 %ptr) {4766; CHECK-P10-LABEL: ld_disjoint_align64_uint32_t_double:4767; CHECK-P10: # %bb.0: # %entry4768; CHECK-P10-NEXT: pli r4, 2441406254769; CHECK-P10-NEXT: rldicr r3, r3, 0, 234770; CHECK-P10-NEXT: rldic r4, r4, 12, 244771; CHECK-P10-NEXT: lfdx f0, r3, r44772; CHECK-P10-NEXT: xscvdpuxws f0, f04773; CHECK-P10-NEXT: mffprwz r3, f04774; CHECK-P10-NEXT: blr4775;4776; CHECK-PREP10-LABEL: ld_disjoint_align64_uint32_t_double:4777; CHECK-PREP10: # %bb.0: # %entry4778; CHECK-PREP10-NEXT: lis r4, 37254779; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 234780; CHECK-PREP10-NEXT: ori r4, r4, 190254781; CHECK-PREP10-NEXT: rldic r4, r4, 12, 244782; CHECK-PREP10-NEXT: lfdx f0, r3, r44783; CHECK-PREP10-NEXT: xscvdpuxws f0, f04784; CHECK-PREP10-NEXT: mffprwz r3, f04785; CHECK-PREP10-NEXT: blr4786entry:4787 %and = and i64 %ptr, -10995116277764788 %or = or i64 %and, 10000000000004789 %0 = inttoptr i64 %or to ptr4790 %1 = load double, ptr %0, align 40964791 %conv = fptoui double %1 to i324792 ret i32 %conv4793}4794 4795; Function Attrs: norecurse nounwind readonly uwtable willreturn4796define dso_local zeroext i32 @ld_cst_align16_uint32_t_double() {4797; CHECK-LABEL: ld_cst_align16_uint32_t_double:4798; CHECK: # %bb.0: # %entry4799; CHECK-NEXT: lfd f0, 4080(0)4800; CHECK-NEXT: xscvdpuxws f0, f04801; CHECK-NEXT: mffprwz r3, f04802; CHECK-NEXT: blr4803entry:4804 %0 = load double, ptr inttoptr (i64 4080 to ptr), align 164805 %conv = fptoui double %0 to i324806 ret i32 %conv4807}4808 4809; Function Attrs: norecurse nounwind readonly uwtable willreturn4810define dso_local zeroext i32 @ld_cst_align32_uint32_t_double() {4811; CHECK-LABEL: ld_cst_align32_uint32_t_double:4812; CHECK: # %bb.0: # %entry4813; CHECK-NEXT: lis r3, 1534814; CHECK-NEXT: lfd f0, -27108(r3)4815; CHECK-NEXT: xscvdpuxws f0, f04816; CHECK-NEXT: mffprwz r3, f04817; CHECK-NEXT: blr4818entry:4819 %0 = load double, ptr inttoptr (i64 9999900 to ptr), align 84820 %conv = fptoui double %0 to i324821 ret i32 %conv4822}4823 4824; Function Attrs: norecurse nounwind readonly uwtable willreturn4825define dso_local zeroext i32 @ld_cst_align64_uint32_t_double() {4826; CHECK-P10-LABEL: ld_cst_align64_uint32_t_double:4827; CHECK-P10: # %bb.0: # %entry4828; CHECK-P10-NEXT: pli r3, 2441406254829; CHECK-P10-NEXT: rldic r3, r3, 12, 244830; CHECK-P10-NEXT: lfd f0, 0(r3)4831; CHECK-P10-NEXT: xscvdpuxws f0, f04832; CHECK-P10-NEXT: mffprwz r3, f04833; CHECK-P10-NEXT: blr4834;4835; CHECK-PREP10-LABEL: ld_cst_align64_uint32_t_double:4836; CHECK-PREP10: # %bb.0: # %entry4837; CHECK-PREP10-NEXT: lis r3, 37254838; CHECK-PREP10-NEXT: ori r3, r3, 190254839; CHECK-PREP10-NEXT: rldic r3, r3, 12, 244840; CHECK-PREP10-NEXT: lfd f0, 0(r3)4841; CHECK-PREP10-NEXT: xscvdpuxws f0, f04842; CHECK-PREP10-NEXT: mffprwz r3, f04843; CHECK-PREP10-NEXT: blr4844entry:4845 %0 = load double, ptr inttoptr (i64 1000000000000 to ptr), align 40964846 %conv = fptoui double %0 to i324847 ret i32 %conv4848}4849 4850; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4851define dso_local void @st_0_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {4852; CHECK-LABEL: st_0_uint32_t_uint8_t:4853; CHECK: # %bb.0: # %entry4854; CHECK-NEXT: stb r4, 0(r3)4855; CHECK-NEXT: blr4856entry:4857 %conv = trunc i32 %str to i84858 %0 = inttoptr i64 %ptr to ptr4859 store i8 %conv, ptr %0, align 14860 ret void4861}4862 4863; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4864define dso_local void @st_align16_uint32_t_uint8_t(ptr nocapture %ptr, i32 zeroext %str) {4865; CHECK-LABEL: st_align16_uint32_t_uint8_t:4866; CHECK: # %bb.0: # %entry4867; CHECK-NEXT: stb r4, 8(r3)4868; CHECK-NEXT: blr4869entry:4870 %conv = trunc i32 %str to i84871 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84872 store i8 %conv, ptr %add.ptr, align 14873 ret void4874}4875 4876; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4877define dso_local void @st_align32_uint32_t_uint8_t(ptr nocapture %ptr, i32 zeroext %str) {4878; CHECK-P10-LABEL: st_align32_uint32_t_uint8_t:4879; CHECK-P10: # %bb.0: # %entry4880; CHECK-P10-NEXT: pstb r4, 99999000(r3), 04881; CHECK-P10-NEXT: blr4882;4883; CHECK-PREP10-LABEL: st_align32_uint32_t_uint8_t:4884; CHECK-PREP10: # %bb.0: # %entry4885; CHECK-PREP10-NEXT: lis r5, 15254886; CHECK-PREP10-NEXT: ori r5, r5, 566004887; CHECK-PREP10-NEXT: stbx r4, r3, r54888; CHECK-PREP10-NEXT: blr4889entry:4890 %conv = trunc i32 %str to i84891 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004892 store i8 %conv, ptr %add.ptr, align 14893 ret void4894}4895 4896; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4897define dso_local void @st_align64_uint32_t_uint8_t(ptr nocapture %ptr, i32 zeroext %str) {4898; CHECK-P10-LABEL: st_align64_uint32_t_uint8_t:4899; CHECK-P10: # %bb.0: # %entry4900; CHECK-P10-NEXT: pli r5, 2441406254901; CHECK-P10-NEXT: rldic r5, r5, 12, 244902; CHECK-P10-NEXT: stbx r4, r3, r54903; CHECK-P10-NEXT: blr4904;4905; CHECK-PREP10-LABEL: st_align64_uint32_t_uint8_t:4906; CHECK-PREP10: # %bb.0: # %entry4907; CHECK-PREP10-NEXT: lis r5, 37254908; CHECK-PREP10-NEXT: ori r5, r5, 190254909; CHECK-PREP10-NEXT: rldic r5, r5, 12, 244910; CHECK-PREP10-NEXT: stbx r4, r3, r54911; CHECK-PREP10-NEXT: blr4912entry:4913 %conv = trunc i32 %str to i84914 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004915 store i8 %conv, ptr %add.ptr, align 14916 ret void4917}4918 4919; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4920define dso_local void @st_reg_uint32_t_uint8_t(ptr nocapture %ptr, i64 %off, i32 zeroext %str) {4921; CHECK-LABEL: st_reg_uint32_t_uint8_t:4922; CHECK: # %bb.0: # %entry4923; CHECK-NEXT: stbx r5, r3, r44924; CHECK-NEXT: blr4925entry:4926 %conv = trunc i32 %str to i84927 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4928 store i8 %conv, ptr %add.ptr, align 14929 ret void4930}4931 4932; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4933define dso_local void @st_or1_uint32_t_uint8_t(i64 %ptr, i8 zeroext %off, i32 zeroext %str) {4934; CHECK-LABEL: st_or1_uint32_t_uint8_t:4935; CHECK: # %bb.0: # %entry4936; CHECK-NEXT: or r3, r4, r34937; CHECK-NEXT: stb r5, 0(r3)4938; CHECK-NEXT: blr4939entry:4940 %conv = trunc i32 %str to i84941 %conv1 = zext i8 %off to i644942 %or = or i64 %conv1, %ptr4943 %0 = inttoptr i64 %or to ptr4944 store i8 %conv, ptr %0, align 14945 ret void4946}4947 4948; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4949define dso_local void @st_not_disjoint16_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {4950; CHECK-LABEL: st_not_disjoint16_uint32_t_uint8_t:4951; CHECK: # %bb.0: # %entry4952; CHECK-NEXT: ori r3, r3, 64953; CHECK-NEXT: stb r4, 0(r3)4954; CHECK-NEXT: blr4955entry:4956 %conv = trunc i32 %str to i84957 %or = or i64 %ptr, 64958 %0 = inttoptr i64 %or to ptr4959 store i8 %conv, ptr %0, align 14960 ret void4961}4962 4963; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4964define dso_local void @st_disjoint_align16_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {4965; CHECK-LABEL: st_disjoint_align16_uint32_t_uint8_t:4966; CHECK: # %bb.0: # %entry4967; CHECK-NEXT: rldicr r3, r3, 0, 514968; CHECK-NEXT: stb r4, 24(r3)4969; CHECK-NEXT: blr4970entry:4971 %and = and i64 %ptr, -40964972 %conv = trunc i32 %str to i84973 %or = or i64 %and, 244974 %0 = inttoptr i64 %or to ptr4975 store i8 %conv, ptr %0, align 84976 ret void4977}4978 4979; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4980define dso_local void @st_not_disjoint32_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {4981; CHECK-LABEL: st_not_disjoint32_uint32_t_uint8_t:4982; CHECK: # %bb.0: # %entry4983; CHECK-NEXT: ori r3, r3, 344634984; CHECK-NEXT: oris r3, r3, 14985; CHECK-NEXT: stb r4, 0(r3)4986; CHECK-NEXT: blr4987entry:4988 %conv = trunc i32 %str to i84989 %or = or i64 %ptr, 999994990 %0 = inttoptr i64 %or to ptr4991 store i8 %conv, ptr %0, align 14992 ret void4993}4994 4995; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4996define dso_local void @st_disjoint_align32_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {4997; CHECK-P10-LABEL: st_disjoint_align32_uint32_t_uint8_t:4998; CHECK-P10: # %bb.0: # %entry4999; CHECK-P10-NEXT: lis r5, -152645000; CHECK-P10-NEXT: and r3, r3, r55001; CHECK-P10-NEXT: pstb r4, 999990000(r3), 05002; CHECK-P10-NEXT: blr5003;5004; CHECK-PREP10-LABEL: st_disjoint_align32_uint32_t_uint8_t:5005; CHECK-PREP10: # %bb.0: # %entry5006; CHECK-PREP10-NEXT: lis r5, -152645007; CHECK-PREP10-NEXT: and r3, r3, r55008; CHECK-PREP10-NEXT: lis r5, 152585009; CHECK-PREP10-NEXT: ori r5, r5, 417125010; CHECK-PREP10-NEXT: stbx r4, r3, r55011; CHECK-PREP10-NEXT: blr5012entry:5013 %and = and i64 %ptr, -10003415045014 %conv = trunc i32 %str to i85015 %or = or i64 %and, 9999900005016 %0 = inttoptr i64 %or to ptr5017 store i8 %conv, ptr %0, align 165018 ret void5019}5020 5021; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5022define dso_local void @st_not_disjoint64_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {5023; CHECK-P10-LABEL: st_not_disjoint64_uint32_t_uint8_t:5024; CHECK-P10: # %bb.0: # %entry5025; CHECK-P10-NEXT: pli r5, 2325026; CHECK-P10-NEXT: pli r6, 35675873295027; CHECK-P10-NEXT: rldimi r6, r5, 32, 05028; CHECK-P10-NEXT: or r3, r3, r65029; CHECK-P10-NEXT: stb r4, 0(r3)5030; CHECK-P10-NEXT: blr5031;5032; CHECK-PREP10-LABEL: st_not_disjoint64_uint32_t_uint8_t:5033; CHECK-PREP10: # %bb.0: # %entry5034; CHECK-PREP10-NEXT: li r5, 295035; CHECK-PREP10-NEXT: rldic r5, r5, 35, 245036; CHECK-PREP10-NEXT: oris r5, r5, 544375037; CHECK-PREP10-NEXT: ori r5, r5, 40975038; CHECK-PREP10-NEXT: or r3, r3, r55039; CHECK-PREP10-NEXT: stb r4, 0(r3)5040; CHECK-PREP10-NEXT: blr5041entry:5042 %conv = trunc i32 %str to i85043 %or = or i64 %ptr, 10000000000015044 %0 = inttoptr i64 %or to ptr5045 store i8 %conv, ptr %0, align 15046 ret void5047}5048 5049; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5050define dso_local void @st_disjoint_align64_uint32_t_uint8_t(i64 %ptr, i32 zeroext %str) {5051; CHECK-P10-LABEL: st_disjoint_align64_uint32_t_uint8_t:5052; CHECK-P10: # %bb.0: # %entry5053; CHECK-P10-NEXT: pli r5, 2441406255054; CHECK-P10-NEXT: rldicr r3, r3, 0, 235055; CHECK-P10-NEXT: rldic r5, r5, 12, 245056; CHECK-P10-NEXT: stbx r4, r3, r55057; CHECK-P10-NEXT: blr5058;5059; CHECK-PREP10-LABEL: st_disjoint_align64_uint32_t_uint8_t:5060; CHECK-PREP10: # %bb.0: # %entry5061; CHECK-PREP10-NEXT: lis r5, 37255062; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235063; CHECK-PREP10-NEXT: ori r5, r5, 190255064; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245065; CHECK-PREP10-NEXT: stbx r4, r3, r55066; CHECK-PREP10-NEXT: blr5067entry:5068 %and = and i64 %ptr, -10995116277765069 %conv = trunc i32 %str to i85070 %or = or i64 %and, 10000000000005071 %0 = inttoptr i64 %or to ptr5072 store i8 %conv, ptr %0, align 40965073 ret void5074}5075 5076; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5077define dso_local void @st_cst_align16_uint32_t_uint8_t(i32 zeroext %str) {5078; CHECK-LABEL: st_cst_align16_uint32_t_uint8_t:5079; CHECK: # %bb.0: # %entry5080; CHECK-NEXT: stb r3, 4080(0)5081; CHECK-NEXT: blr5082entry:5083 %conv = trunc i32 %str to i85084 store i8 %conv, ptr inttoptr (i64 4080 to ptr), align 165085 ret void5086}5087 5088; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5089define dso_local void @st_cst_align32_uint32_t_uint8_t(i32 zeroext %str) {5090; CHECK-LABEL: st_cst_align32_uint32_t_uint8_t:5091; CHECK: # %bb.0: # %entry5092; CHECK-NEXT: lis r4, 1535093; CHECK-NEXT: stb r3, -27108(r4)5094; CHECK-NEXT: blr5095entry:5096 %conv = trunc i32 %str to i85097 store i8 %conv, ptr inttoptr (i64 9999900 to ptr), align 45098 ret void5099}5100 5101; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5102define dso_local void @st_cst_align64_uint32_t_uint8_t(i32 zeroext %str) {5103; CHECK-P10-LABEL: st_cst_align64_uint32_t_uint8_t:5104; CHECK-P10: # %bb.0: # %entry5105; CHECK-P10-NEXT: pli r4, 2441406255106; CHECK-P10-NEXT: rldic r4, r4, 12, 245107; CHECK-P10-NEXT: stb r3, 0(r4)5108; CHECK-P10-NEXT: blr5109;5110; CHECK-PREP10-LABEL: st_cst_align64_uint32_t_uint8_t:5111; CHECK-PREP10: # %bb.0: # %entry5112; CHECK-PREP10-NEXT: lis r4, 37255113; CHECK-PREP10-NEXT: ori r4, r4, 190255114; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245115; CHECK-PREP10-NEXT: stb r3, 0(r4)5116; CHECK-PREP10-NEXT: blr5117entry:5118 %conv = trunc i32 %str to i85119 store i8 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965120 ret void5121}5122 5123; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5124define dso_local void @st_0_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5125; CHECK-LABEL: st_0_uint32_t_uint16_t:5126; CHECK: # %bb.0: # %entry5127; CHECK-NEXT: sth r4, 0(r3)5128; CHECK-NEXT: blr5129entry:5130 %conv = trunc i32 %str to i165131 %0 = inttoptr i64 %ptr to ptr5132 store i16 %conv, ptr %0, align 25133 ret void5134}5135 5136; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5137define dso_local void @st_align16_uint32_t_uint16_t(ptr nocapture %ptr, i32 zeroext %str) {5138; CHECK-LABEL: st_align16_uint32_t_uint16_t:5139; CHECK: # %bb.0: # %entry5140; CHECK-NEXT: sth r4, 8(r3)5141; CHECK-NEXT: blr5142entry:5143 %conv = trunc i32 %str to i165144 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85145 store i16 %conv, ptr %add.ptr, align 25146 ret void5147}5148 5149; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5150define dso_local void @st_align32_uint32_t_uint16_t(ptr nocapture %ptr, i32 zeroext %str) {5151; CHECK-P10-LABEL: st_align32_uint32_t_uint16_t:5152; CHECK-P10: # %bb.0: # %entry5153; CHECK-P10-NEXT: psth r4, 99999000(r3), 05154; CHECK-P10-NEXT: blr5155;5156; CHECK-PREP10-LABEL: st_align32_uint32_t_uint16_t:5157; CHECK-PREP10: # %bb.0: # %entry5158; CHECK-PREP10-NEXT: lis r5, 15255159; CHECK-PREP10-NEXT: ori r5, r5, 566005160; CHECK-PREP10-NEXT: sthx r4, r3, r55161; CHECK-PREP10-NEXT: blr5162entry:5163 %conv = trunc i32 %str to i165164 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005165 store i16 %conv, ptr %add.ptr, align 25166 ret void5167}5168 5169; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5170define dso_local void @st_align64_uint32_t_uint16_t(ptr nocapture %ptr, i32 zeroext %str) {5171; CHECK-P10-LABEL: st_align64_uint32_t_uint16_t:5172; CHECK-P10: # %bb.0: # %entry5173; CHECK-P10-NEXT: pli r5, 2441406255174; CHECK-P10-NEXT: rldic r5, r5, 12, 245175; CHECK-P10-NEXT: sthx r4, r3, r55176; CHECK-P10-NEXT: blr5177;5178; CHECK-PREP10-LABEL: st_align64_uint32_t_uint16_t:5179; CHECK-PREP10: # %bb.0: # %entry5180; CHECK-PREP10-NEXT: lis r5, 37255181; CHECK-PREP10-NEXT: ori r5, r5, 190255182; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245183; CHECK-PREP10-NEXT: sthx r4, r3, r55184; CHECK-PREP10-NEXT: blr5185entry:5186 %conv = trunc i32 %str to i165187 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005188 store i16 %conv, ptr %add.ptr, align 25189 ret void5190}5191 5192; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5193define dso_local void @st_reg_uint32_t_uint16_t(ptr nocapture %ptr, i64 %off, i32 zeroext %str) {5194; CHECK-LABEL: st_reg_uint32_t_uint16_t:5195; CHECK: # %bb.0: # %entry5196; CHECK-NEXT: sthx r5, r3, r45197; CHECK-NEXT: blr5198entry:5199 %conv = trunc i32 %str to i165200 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5201 store i16 %conv, ptr %add.ptr, align 25202 ret void5203}5204 5205; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5206define dso_local void @st_or1_uint32_t_uint16_t(i64 %ptr, i8 zeroext %off, i32 zeroext %str) {5207; CHECK-LABEL: st_or1_uint32_t_uint16_t:5208; CHECK: # %bb.0: # %entry5209; CHECK-NEXT: or r3, r4, r35210; CHECK-NEXT: sth r5, 0(r3)5211; CHECK-NEXT: blr5212entry:5213 %conv = trunc i32 %str to i165214 %conv1 = zext i8 %off to i645215 %or = or i64 %conv1, %ptr5216 %0 = inttoptr i64 %or to ptr5217 store i16 %conv, ptr %0, align 25218 ret void5219}5220 5221; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5222define dso_local void @st_not_disjoint16_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5223; CHECK-LABEL: st_not_disjoint16_uint32_t_uint16_t:5224; CHECK: # %bb.0: # %entry5225; CHECK-NEXT: ori r3, r3, 65226; CHECK-NEXT: sth r4, 0(r3)5227; CHECK-NEXT: blr5228entry:5229 %conv = trunc i32 %str to i165230 %or = or i64 %ptr, 65231 %0 = inttoptr i64 %or to ptr5232 store i16 %conv, ptr %0, align 25233 ret void5234}5235 5236; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5237define dso_local void @st_disjoint_align16_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5238; CHECK-LABEL: st_disjoint_align16_uint32_t_uint16_t:5239; CHECK: # %bb.0: # %entry5240; CHECK-NEXT: rldicr r3, r3, 0, 515241; CHECK-NEXT: sth r4, 24(r3)5242; CHECK-NEXT: blr5243entry:5244 %and = and i64 %ptr, -40965245 %conv = trunc i32 %str to i165246 %or = or i64 %and, 245247 %0 = inttoptr i64 %or to ptr5248 store i16 %conv, ptr %0, align 85249 ret void5250}5251 5252; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5253define dso_local void @st_not_disjoint32_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5254; CHECK-LABEL: st_not_disjoint32_uint32_t_uint16_t:5255; CHECK: # %bb.0: # %entry5256; CHECK-NEXT: ori r3, r3, 344635257; CHECK-NEXT: oris r3, r3, 15258; CHECK-NEXT: sth r4, 0(r3)5259; CHECK-NEXT: blr5260entry:5261 %conv = trunc i32 %str to i165262 %or = or i64 %ptr, 999995263 %0 = inttoptr i64 %or to ptr5264 store i16 %conv, ptr %0, align 25265 ret void5266}5267 5268; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5269define dso_local void @st_disjoint_align32_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5270; CHECK-P10-LABEL: st_disjoint_align32_uint32_t_uint16_t:5271; CHECK-P10: # %bb.0: # %entry5272; CHECK-P10-NEXT: lis r5, -152645273; CHECK-P10-NEXT: and r3, r3, r55274; CHECK-P10-NEXT: psth r4, 999990000(r3), 05275; CHECK-P10-NEXT: blr5276;5277; CHECK-PREP10-LABEL: st_disjoint_align32_uint32_t_uint16_t:5278; CHECK-PREP10: # %bb.0: # %entry5279; CHECK-PREP10-NEXT: lis r5, -152645280; CHECK-PREP10-NEXT: and r3, r3, r55281; CHECK-PREP10-NEXT: lis r5, 152585282; CHECK-PREP10-NEXT: ori r5, r5, 417125283; CHECK-PREP10-NEXT: sthx r4, r3, r55284; CHECK-PREP10-NEXT: blr5285entry:5286 %and = and i64 %ptr, -10003415045287 %conv = trunc i32 %str to i165288 %or = or i64 %and, 9999900005289 %0 = inttoptr i64 %or to ptr5290 store i16 %conv, ptr %0, align 165291 ret void5292}5293 5294; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5295define dso_local void @st_not_disjoint64_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5296; CHECK-P10-LABEL: st_not_disjoint64_uint32_t_uint16_t:5297; CHECK-P10: # %bb.0: # %entry5298; CHECK-P10-NEXT: pli r5, 2325299; CHECK-P10-NEXT: pli r6, 35675873295300; CHECK-P10-NEXT: rldimi r6, r5, 32, 05301; CHECK-P10-NEXT: or r3, r3, r65302; CHECK-P10-NEXT: sth r4, 0(r3)5303; CHECK-P10-NEXT: blr5304;5305; CHECK-PREP10-LABEL: st_not_disjoint64_uint32_t_uint16_t:5306; CHECK-PREP10: # %bb.0: # %entry5307; CHECK-PREP10-NEXT: li r5, 295308; CHECK-PREP10-NEXT: rldic r5, r5, 35, 245309; CHECK-PREP10-NEXT: oris r5, r5, 544375310; CHECK-PREP10-NEXT: ori r5, r5, 40975311; CHECK-PREP10-NEXT: or r3, r3, r55312; CHECK-PREP10-NEXT: sth r4, 0(r3)5313; CHECK-PREP10-NEXT: blr5314entry:5315 %conv = trunc i32 %str to i165316 %or = or i64 %ptr, 10000000000015317 %0 = inttoptr i64 %or to ptr5318 store i16 %conv, ptr %0, align 25319 ret void5320}5321 5322; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5323define dso_local void @st_disjoint_align64_uint32_t_uint16_t(i64 %ptr, i32 zeroext %str) {5324; CHECK-P10-LABEL: st_disjoint_align64_uint32_t_uint16_t:5325; CHECK-P10: # %bb.0: # %entry5326; CHECK-P10-NEXT: pli r5, 2441406255327; CHECK-P10-NEXT: rldicr r3, r3, 0, 235328; CHECK-P10-NEXT: rldic r5, r5, 12, 245329; CHECK-P10-NEXT: sthx r4, r3, r55330; CHECK-P10-NEXT: blr5331;5332; CHECK-PREP10-LABEL: st_disjoint_align64_uint32_t_uint16_t:5333; CHECK-PREP10: # %bb.0: # %entry5334; CHECK-PREP10-NEXT: lis r5, 37255335; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235336; CHECK-PREP10-NEXT: ori r5, r5, 190255337; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245338; CHECK-PREP10-NEXT: sthx r4, r3, r55339; CHECK-PREP10-NEXT: blr5340entry:5341 %and = and i64 %ptr, -10995116277765342 %conv = trunc i32 %str to i165343 %or = or i64 %and, 10000000000005344 %0 = inttoptr i64 %or to ptr5345 store i16 %conv, ptr %0, align 40965346 ret void5347}5348 5349; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5350define dso_local void @st_cst_align16_uint32_t_uint16_t(i32 zeroext %str) {5351; CHECK-LABEL: st_cst_align16_uint32_t_uint16_t:5352; CHECK: # %bb.0: # %entry5353; CHECK-NEXT: sth r3, 4080(0)5354; CHECK-NEXT: blr5355entry:5356 %conv = trunc i32 %str to i165357 store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 165358 ret void5359}5360 5361; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5362define dso_local void @st_cst_align32_uint32_t_uint16_t(i32 zeroext %str) {5363; CHECK-LABEL: st_cst_align32_uint32_t_uint16_t:5364; CHECK: # %bb.0: # %entry5365; CHECK-NEXT: lis r4, 1535366; CHECK-NEXT: sth r3, -27108(r4)5367; CHECK-NEXT: blr5368entry:5369 %conv = trunc i32 %str to i165370 store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 45371 ret void5372}5373 5374; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5375define dso_local void @st_cst_align64_uint32_t_uint16_t(i32 zeroext %str) {5376; CHECK-P10-LABEL: st_cst_align64_uint32_t_uint16_t:5377; CHECK-P10: # %bb.0: # %entry5378; CHECK-P10-NEXT: pli r4, 2441406255379; CHECK-P10-NEXT: rldic r4, r4, 12, 245380; CHECK-P10-NEXT: sth r3, 0(r4)5381; CHECK-P10-NEXT: blr5382;5383; CHECK-PREP10-LABEL: st_cst_align64_uint32_t_uint16_t:5384; CHECK-PREP10: # %bb.0: # %entry5385; CHECK-PREP10-NEXT: lis r4, 37255386; CHECK-PREP10-NEXT: ori r4, r4, 190255387; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245388; CHECK-PREP10-NEXT: sth r3, 0(r4)5389; CHECK-PREP10-NEXT: blr5390entry:5391 %conv = trunc i32 %str to i165392 store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965393 ret void5394}5395 5396; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5397define dso_local void @st_0_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5398; CHECK-LABEL: st_0_uint32_t_uint32_t:5399; CHECK: # %bb.0: # %entry5400; CHECK-NEXT: stw r4, 0(r3)5401; CHECK-NEXT: blr5402entry:5403 %0 = inttoptr i64 %ptr to ptr5404 store i32 %str, ptr %0, align 45405 ret void5406}5407 5408; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5409define dso_local void @st_align16_uint32_t_uint32_t(ptr nocapture %ptr, i32 zeroext %str) {5410; CHECK-LABEL: st_align16_uint32_t_uint32_t:5411; CHECK: # %bb.0: # %entry5412; CHECK-NEXT: stw r4, 8(r3)5413; CHECK-NEXT: blr5414entry:5415 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85416 store i32 %str, ptr %add.ptr, align 45417 ret void5418}5419 5420; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5421define dso_local void @st_align32_uint32_t_uint32_t(ptr nocapture %ptr, i32 zeroext %str) {5422; CHECK-P10-LABEL: st_align32_uint32_t_uint32_t:5423; CHECK-P10: # %bb.0: # %entry5424; CHECK-P10-NEXT: pstw r4, 99999000(r3), 05425; CHECK-P10-NEXT: blr5426;5427; CHECK-PREP10-LABEL: st_align32_uint32_t_uint32_t:5428; CHECK-PREP10: # %bb.0: # %entry5429; CHECK-PREP10-NEXT: lis r5, 15255430; CHECK-PREP10-NEXT: ori r5, r5, 566005431; CHECK-PREP10-NEXT: stwx r4, r3, r55432; CHECK-PREP10-NEXT: blr5433entry:5434 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005435 store i32 %str, ptr %add.ptr, align 45436 ret void5437}5438 5439; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5440define dso_local void @st_align64_uint32_t_uint32_t(ptr nocapture %ptr, i32 zeroext %str) {5441; CHECK-P10-LABEL: st_align64_uint32_t_uint32_t:5442; CHECK-P10: # %bb.0: # %entry5443; CHECK-P10-NEXT: pli r5, 2441406255444; CHECK-P10-NEXT: rldic r5, r5, 12, 245445; CHECK-P10-NEXT: stwx r4, r3, r55446; CHECK-P10-NEXT: blr5447;5448; CHECK-PREP10-LABEL: st_align64_uint32_t_uint32_t:5449; CHECK-PREP10: # %bb.0: # %entry5450; CHECK-PREP10-NEXT: lis r5, 37255451; CHECK-PREP10-NEXT: ori r5, r5, 190255452; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245453; CHECK-PREP10-NEXT: stwx r4, r3, r55454; CHECK-PREP10-NEXT: blr5455entry:5456 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005457 store i32 %str, ptr %add.ptr, align 45458 ret void5459}5460 5461; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5462define dso_local void @st_reg_uint32_t_uint32_t(ptr nocapture %ptr, i64 %off, i32 zeroext %str) {5463; CHECK-LABEL: st_reg_uint32_t_uint32_t:5464; CHECK: # %bb.0: # %entry5465; CHECK-NEXT: stwx r5, r3, r45466; CHECK-NEXT: blr5467entry:5468 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5469 store i32 %str, ptr %add.ptr, align 45470 ret void5471}5472 5473; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5474define dso_local void @st_or1_uint32_t_uint32_t(i64 %ptr, i8 zeroext %off, i32 zeroext %str) {5475; CHECK-LABEL: st_or1_uint32_t_uint32_t:5476; CHECK: # %bb.0: # %entry5477; CHECK-NEXT: or r3, r4, r35478; CHECK-NEXT: stw r5, 0(r3)5479; CHECK-NEXT: blr5480entry:5481 %conv = zext i8 %off to i645482 %or = or i64 %conv, %ptr5483 %0 = inttoptr i64 %or to ptr5484 store i32 %str, ptr %0, align 45485 ret void5486}5487 5488; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5489define dso_local void @st_not_disjoint16_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5490; CHECK-LABEL: st_not_disjoint16_uint32_t_uint32_t:5491; CHECK: # %bb.0: # %entry5492; CHECK-NEXT: ori r3, r3, 65493; CHECK-NEXT: stw r4, 0(r3)5494; CHECK-NEXT: blr5495entry:5496 %or = or i64 %ptr, 65497 %0 = inttoptr i64 %or to ptr5498 store i32 %str, ptr %0, align 45499 ret void5500}5501 5502; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5503define dso_local void @st_disjoint_align16_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5504; CHECK-LABEL: st_disjoint_align16_uint32_t_uint32_t:5505; CHECK: # %bb.0: # %entry5506; CHECK-NEXT: rldicr r3, r3, 0, 515507; CHECK-NEXT: stw r4, 24(r3)5508; CHECK-NEXT: blr5509entry:5510 %and = and i64 %ptr, -40965511 %or = or i64 %and, 245512 %0 = inttoptr i64 %or to ptr5513 store i32 %str, ptr %0, align 85514 ret void5515}5516 5517; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5518define dso_local void @st_not_disjoint32_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5519; CHECK-LABEL: st_not_disjoint32_uint32_t_uint32_t:5520; CHECK: # %bb.0: # %entry5521; CHECK-NEXT: ori r3, r3, 344635522; CHECK-NEXT: oris r3, r3, 15523; CHECK-NEXT: stw r4, 0(r3)5524; CHECK-NEXT: blr5525entry:5526 %or = or i64 %ptr, 999995527 %0 = inttoptr i64 %or to ptr5528 store i32 %str, ptr %0, align 45529 ret void5530}5531 5532; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5533define dso_local void @st_disjoint_align32_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5534; CHECK-P10-LABEL: st_disjoint_align32_uint32_t_uint32_t:5535; CHECK-P10: # %bb.0: # %entry5536; CHECK-P10-NEXT: lis r5, -152645537; CHECK-P10-NEXT: and r3, r3, r55538; CHECK-P10-NEXT: pstw r4, 999990000(r3), 05539; CHECK-P10-NEXT: blr5540;5541; CHECK-PREP10-LABEL: st_disjoint_align32_uint32_t_uint32_t:5542; CHECK-PREP10: # %bb.0: # %entry5543; CHECK-PREP10-NEXT: lis r5, -152645544; CHECK-PREP10-NEXT: and r3, r3, r55545; CHECK-PREP10-NEXT: lis r5, 152585546; CHECK-PREP10-NEXT: ori r5, r5, 417125547; CHECK-PREP10-NEXT: stwx r4, r3, r55548; CHECK-PREP10-NEXT: blr5549entry:5550 %and = and i64 %ptr, -10003415045551 %or = or i64 %and, 9999900005552 %0 = inttoptr i64 %or to ptr5553 store i32 %str, ptr %0, align 165554 ret void5555}5556 5557; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5558define dso_local void @st_not_disjoint64_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5559; CHECK-P10-LABEL: st_not_disjoint64_uint32_t_uint32_t:5560; CHECK-P10: # %bb.0: # %entry5561; CHECK-P10-NEXT: pli r5, 2325562; CHECK-P10-NEXT: pli r6, 35675873295563; CHECK-P10-NEXT: rldimi r6, r5, 32, 05564; CHECK-P10-NEXT: or r3, r3, r65565; CHECK-P10-NEXT: stw r4, 0(r3)5566; CHECK-P10-NEXT: blr5567;5568; CHECK-PREP10-LABEL: st_not_disjoint64_uint32_t_uint32_t:5569; CHECK-PREP10: # %bb.0: # %entry5570; CHECK-PREP10-NEXT: li r5, 295571; CHECK-PREP10-NEXT: rldic r5, r5, 35, 245572; CHECK-PREP10-NEXT: oris r5, r5, 544375573; CHECK-PREP10-NEXT: ori r5, r5, 40975574; CHECK-PREP10-NEXT: or r3, r3, r55575; CHECK-PREP10-NEXT: stw r4, 0(r3)5576; CHECK-PREP10-NEXT: blr5577entry:5578 %or = or i64 %ptr, 10000000000015579 %0 = inttoptr i64 %or to ptr5580 store i32 %str, ptr %0, align 45581 ret void5582}5583 5584; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5585define dso_local void @st_disjoint_align64_uint32_t_uint32_t(i64 %ptr, i32 zeroext %str) {5586; CHECK-P10-LABEL: st_disjoint_align64_uint32_t_uint32_t:5587; CHECK-P10: # %bb.0: # %entry5588; CHECK-P10-NEXT: pli r5, 2441406255589; CHECK-P10-NEXT: rldicr r3, r3, 0, 235590; CHECK-P10-NEXT: rldic r5, r5, 12, 245591; CHECK-P10-NEXT: stwx r4, r3, r55592; CHECK-P10-NEXT: blr5593;5594; CHECK-PREP10-LABEL: st_disjoint_align64_uint32_t_uint32_t:5595; CHECK-PREP10: # %bb.0: # %entry5596; CHECK-PREP10-NEXT: lis r5, 37255597; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235598; CHECK-PREP10-NEXT: ori r5, r5, 190255599; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245600; CHECK-PREP10-NEXT: stwx r4, r3, r55601; CHECK-PREP10-NEXT: blr5602entry:5603 %and = and i64 %ptr, -10995116277765604 %or = or i64 %and, 10000000000005605 %0 = inttoptr i64 %or to ptr5606 store i32 %str, ptr %0, align 40965607 ret void5608}5609 5610; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5611define dso_local void @st_cst_align16_uint32_t_uint32_t(i32 zeroext %str) {5612; CHECK-LABEL: st_cst_align16_uint32_t_uint32_t:5613; CHECK: # %bb.0: # %entry5614; CHECK-NEXT: stw r3, 4080(0)5615; CHECK-NEXT: blr5616entry:5617 store i32 %str, ptr inttoptr (i64 4080 to ptr), align 165618 ret void5619}5620 5621; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5622define dso_local void @st_cst_align32_uint32_t_uint32_t(i32 zeroext %str) {5623; CHECK-LABEL: st_cst_align32_uint32_t_uint32_t:5624; CHECK: # %bb.0: # %entry5625; CHECK-NEXT: lis r4, 1535626; CHECK-NEXT: stw r3, -27108(r4)5627; CHECK-NEXT: blr5628entry:5629 store i32 %str, ptr inttoptr (i64 9999900 to ptr), align 45630 ret void5631}5632 5633; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5634define dso_local void @st_cst_align64_uint32_t_uint32_t(i32 zeroext %str) {5635; CHECK-P10-LABEL: st_cst_align64_uint32_t_uint32_t:5636; CHECK-P10: # %bb.0: # %entry5637; CHECK-P10-NEXT: pli r4, 2441406255638; CHECK-P10-NEXT: rldic r4, r4, 12, 245639; CHECK-P10-NEXT: stw r3, 0(r4)5640; CHECK-P10-NEXT: blr5641;5642; CHECK-PREP10-LABEL: st_cst_align64_uint32_t_uint32_t:5643; CHECK-PREP10: # %bb.0: # %entry5644; CHECK-PREP10-NEXT: lis r4, 37255645; CHECK-PREP10-NEXT: ori r4, r4, 190255646; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245647; CHECK-PREP10-NEXT: stw r3, 0(r4)5648; CHECK-PREP10-NEXT: blr5649entry:5650 store i32 %str, ptr inttoptr (i64 1000000000000 to ptr), align 40965651 ret void5652}5653 5654; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5655define dso_local void @st_0_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5656; CHECK-LABEL: st_0_uint32_t_uint64_t:5657; CHECK: # %bb.0: # %entry5658; CHECK-NEXT: std r4, 0(r3)5659; CHECK-NEXT: blr5660entry:5661 %conv = zext i32 %str to i645662 %0 = inttoptr i64 %ptr to ptr5663 store i64 %conv, ptr %0, align 85664 ret void5665}5666 5667; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5668define dso_local void @st_align16_uint32_t_uint64_t(ptr nocapture %ptr, i32 zeroext %str) {5669; CHECK-LABEL: st_align16_uint32_t_uint64_t:5670; CHECK: # %bb.0: # %entry5671; CHECK-NEXT: std r4, 8(r3)5672; CHECK-NEXT: blr5673entry:5674 %conv = zext i32 %str to i645675 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85676 store i64 %conv, ptr %add.ptr, align 85677 ret void5678}5679 5680; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5681define dso_local void @st_align32_uint32_t_uint64_t(ptr nocapture %ptr, i32 zeroext %str) {5682; CHECK-P10-LABEL: st_align32_uint32_t_uint64_t:5683; CHECK-P10: # %bb.0: # %entry5684; CHECK-P10-NEXT: pstd r4, 99999000(r3), 05685; CHECK-P10-NEXT: blr5686;5687; CHECK-PREP10-LABEL: st_align32_uint32_t_uint64_t:5688; CHECK-PREP10: # %bb.0: # %entry5689; CHECK-PREP10-NEXT: lis r5, 15255690; CHECK-PREP10-NEXT: ori r5, r5, 566005691; CHECK-PREP10-NEXT: stdx r4, r3, r55692; CHECK-PREP10-NEXT: blr5693entry:5694 %conv = zext i32 %str to i645695 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005696 store i64 %conv, ptr %add.ptr, align 85697 ret void5698}5699 5700; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5701define dso_local void @st_align64_uint32_t_uint64_t(ptr nocapture %ptr, i32 zeroext %str) {5702; CHECK-P10-LABEL: st_align64_uint32_t_uint64_t:5703; CHECK-P10: # %bb.0: # %entry5704; CHECK-P10-NEXT: pli r5, 2441406255705; CHECK-P10-NEXT: rldic r5, r5, 12, 245706; CHECK-P10-NEXT: stdx r4, r3, r55707; CHECK-P10-NEXT: blr5708;5709; CHECK-PREP10-LABEL: st_align64_uint32_t_uint64_t:5710; CHECK-PREP10: # %bb.0: # %entry5711; CHECK-PREP10-NEXT: lis r5, 37255712; CHECK-PREP10-NEXT: ori r5, r5, 190255713; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245714; CHECK-PREP10-NEXT: stdx r4, r3, r55715; CHECK-PREP10-NEXT: blr5716entry:5717 %conv = zext i32 %str to i645718 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005719 store i64 %conv, ptr %add.ptr, align 85720 ret void5721}5722 5723; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5724define dso_local void @st_reg_uint32_t_uint64_t(ptr nocapture %ptr, i64 %off, i32 zeroext %str) {5725; CHECK-LABEL: st_reg_uint32_t_uint64_t:5726; CHECK: # %bb.0: # %entry5727; CHECK-NEXT: stdx r5, r3, r45728; CHECK-NEXT: blr5729entry:5730 %conv = zext i32 %str to i645731 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5732 store i64 %conv, ptr %add.ptr, align 85733 ret void5734}5735 5736; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5737define dso_local void @st_or1_uint32_t_uint64_t(i64 %ptr, i8 zeroext %off, i32 zeroext %str) {5738; CHECK-LABEL: st_or1_uint32_t_uint64_t:5739; CHECK: # %bb.0: # %entry5740; CHECK-NEXT: or r3, r4, r35741; CHECK-NEXT: std r5, 0(r3)5742; CHECK-NEXT: blr5743entry:5744 %conv = zext i32 %str to i645745 %conv1 = zext i8 %off to i645746 %or = or i64 %conv1, %ptr5747 %0 = inttoptr i64 %or to ptr5748 store i64 %conv, ptr %0, align 85749 ret void5750}5751 5752; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5753define dso_local void @st_not_disjoint16_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5754; CHECK-LABEL: st_not_disjoint16_uint32_t_uint64_t:5755; CHECK: # %bb.0: # %entry5756; CHECK-NEXT: ori r3, r3, 65757; CHECK-NEXT: std r4, 0(r3)5758; CHECK-NEXT: blr5759entry:5760 %conv = zext i32 %str to i645761 %or = or i64 %ptr, 65762 %0 = inttoptr i64 %or to ptr5763 store i64 %conv, ptr %0, align 85764 ret void5765}5766 5767; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5768define dso_local void @st_disjoint_align16_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5769; CHECK-LABEL: st_disjoint_align16_uint32_t_uint64_t:5770; CHECK: # %bb.0: # %entry5771; CHECK-NEXT: rldicr r3, r3, 0, 515772; CHECK-NEXT: std r4, 24(r3)5773; CHECK-NEXT: blr5774entry:5775 %and = and i64 %ptr, -40965776 %conv = zext i32 %str to i645777 %or = or i64 %and, 245778 %0 = inttoptr i64 %or to ptr5779 store i64 %conv, ptr %0, align 85780 ret void5781}5782 5783; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5784define dso_local void @st_not_disjoint32_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5785; CHECK-LABEL: st_not_disjoint32_uint32_t_uint64_t:5786; CHECK: # %bb.0: # %entry5787; CHECK-NEXT: ori r3, r3, 344635788; CHECK-NEXT: oris r3, r3, 15789; CHECK-NEXT: std r4, 0(r3)5790; CHECK-NEXT: blr5791entry:5792 %conv = zext i32 %str to i645793 %or = or i64 %ptr, 999995794 %0 = inttoptr i64 %or to ptr5795 store i64 %conv, ptr %0, align 85796 ret void5797}5798 5799; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5800define dso_local void @st_disjoint_align32_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5801; CHECK-P10-LABEL: st_disjoint_align32_uint32_t_uint64_t:5802; CHECK-P10: # %bb.0: # %entry5803; CHECK-P10-NEXT: lis r5, -152645804; CHECK-P10-NEXT: and r3, r3, r55805; CHECK-P10-NEXT: pstd r4, 999990000(r3), 05806; CHECK-P10-NEXT: blr5807;5808; CHECK-PREP10-LABEL: st_disjoint_align32_uint32_t_uint64_t:5809; CHECK-PREP10: # %bb.0: # %entry5810; CHECK-PREP10-NEXT: lis r5, -152645811; CHECK-PREP10-NEXT: and r3, r3, r55812; CHECK-PREP10-NEXT: lis r5, 152585813; CHECK-PREP10-NEXT: ori r5, r5, 417125814; CHECK-PREP10-NEXT: stdx r4, r3, r55815; CHECK-PREP10-NEXT: blr5816entry:5817 %and = and i64 %ptr, -10003415045818 %conv = zext i32 %str to i645819 %or = or i64 %and, 9999900005820 %0 = inttoptr i64 %or to ptr5821 store i64 %conv, ptr %0, align 165822 ret void5823}5824 5825; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5826define dso_local void @st_not_disjoint64_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5827; CHECK-P10-LABEL: st_not_disjoint64_uint32_t_uint64_t:5828; CHECK-P10: # %bb.0: # %entry5829; CHECK-P10-NEXT: pli r5, 2325830; CHECK-P10-NEXT: pli r6, 35675873295831; CHECK-P10-NEXT: rldimi r6, r5, 32, 05832; CHECK-P10-NEXT: or r3, r3, r65833; CHECK-P10-NEXT: std r4, 0(r3)5834; CHECK-P10-NEXT: blr5835;5836; CHECK-PREP10-LABEL: st_not_disjoint64_uint32_t_uint64_t:5837; CHECK-PREP10: # %bb.0: # %entry5838; CHECK-PREP10-NEXT: li r5, 295839; CHECK-PREP10-NEXT: rldic r5, r5, 35, 245840; CHECK-PREP10-NEXT: oris r5, r5, 544375841; CHECK-PREP10-NEXT: ori r5, r5, 40975842; CHECK-PREP10-NEXT: or r3, r3, r55843; CHECK-PREP10-NEXT: std r4, 0(r3)5844; CHECK-PREP10-NEXT: blr5845entry:5846 %conv = zext i32 %str to i645847 %or = or i64 %ptr, 10000000000015848 %0 = inttoptr i64 %or to ptr5849 store i64 %conv, ptr %0, align 85850 ret void5851}5852 5853; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5854define dso_local void @st_disjoint_align64_uint32_t_uint64_t(i64 %ptr, i32 zeroext %str) {5855; CHECK-P10-LABEL: st_disjoint_align64_uint32_t_uint64_t:5856; CHECK-P10: # %bb.0: # %entry5857; CHECK-P10-NEXT: pli r5, 2441406255858; CHECK-P10-NEXT: rldicr r3, r3, 0, 235859; CHECK-P10-NEXT: rldic r5, r5, 12, 245860; CHECK-P10-NEXT: stdx r4, r3, r55861; CHECK-P10-NEXT: blr5862;5863; CHECK-PREP10-LABEL: st_disjoint_align64_uint32_t_uint64_t:5864; CHECK-PREP10: # %bb.0: # %entry5865; CHECK-PREP10-NEXT: lis r5, 37255866; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235867; CHECK-PREP10-NEXT: ori r5, r5, 190255868; CHECK-PREP10-NEXT: rldic r5, r5, 12, 245869; CHECK-PREP10-NEXT: stdx r4, r3, r55870; CHECK-PREP10-NEXT: blr5871entry:5872 %and = and i64 %ptr, -10995116277765873 %conv = zext i32 %str to i645874 %or = or i64 %and, 10000000000005875 %0 = inttoptr i64 %or to ptr5876 store i64 %conv, ptr %0, align 40965877 ret void5878}5879 5880; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5881define dso_local void @st_cst_align16_uint32_t_uint64_t(i32 zeroext %str) {5882; CHECK-LABEL: st_cst_align16_uint32_t_uint64_t:5883; CHECK: # %bb.0: # %entry5884; CHECK-NEXT: std r3, 4080(0)5885; CHECK-NEXT: blr5886entry:5887 %conv = zext i32 %str to i645888 store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 165889 ret void5890}5891 5892; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5893define dso_local void @st_cst_align32_uint32_t_uint64_t(i32 zeroext %str) {5894; CHECK-LABEL: st_cst_align32_uint32_t_uint64_t:5895; CHECK: # %bb.0: # %entry5896; CHECK-NEXT: lis r4, 1535897; CHECK-NEXT: std r3, -27108(r4)5898; CHECK-NEXT: blr5899entry:5900 %conv = zext i32 %str to i645901 store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 85902 ret void5903}5904 5905; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5906define dso_local void @st_cst_align64_uint32_t_uint64_t(i32 zeroext %str) {5907; CHECK-P10-LABEL: st_cst_align64_uint32_t_uint64_t:5908; CHECK-P10: # %bb.0: # %entry5909; CHECK-P10-NEXT: pli r4, 2441406255910; CHECK-P10-NEXT: rldic r4, r4, 12, 245911; CHECK-P10-NEXT: std r3, 0(r4)5912; CHECK-P10-NEXT: blr5913;5914; CHECK-PREP10-LABEL: st_cst_align64_uint32_t_uint64_t:5915; CHECK-PREP10: # %bb.0: # %entry5916; CHECK-PREP10-NEXT: lis r4, 37255917; CHECK-PREP10-NEXT: ori r4, r4, 190255918; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245919; CHECK-PREP10-NEXT: std r3, 0(r4)5920; CHECK-PREP10-NEXT: blr5921entry:5922 %conv = zext i32 %str to i645923 store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965924 ret void5925}5926 5927; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5928define dso_local void @st_0_uint32_t_float(i64 %ptr, i32 zeroext %str) {5929; CHECK-LABEL: st_0_uint32_t_float:5930; CHECK: # %bb.0: # %entry5931; CHECK-NEXT: mtfprwz f0, r45932; CHECK-NEXT: xscvuxdsp f0, f05933; CHECK-NEXT: stfs f0, 0(r3)5934; CHECK-NEXT: blr5935entry:5936 %conv = uitofp i32 %str to float5937 %0 = inttoptr i64 %ptr to ptr5938 store float %conv, ptr %0, align 45939 ret void5940}5941 5942; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5943define dso_local void @st_align16_uint32_t_float(ptr nocapture %ptr, i32 zeroext %str) {5944; CHECK-LABEL: st_align16_uint32_t_float:5945; CHECK: # %bb.0: # %entry5946; CHECK-NEXT: mtfprwz f0, r45947; CHECK-NEXT: xscvuxdsp f0, f05948; CHECK-NEXT: stfs f0, 8(r3)5949; CHECK-NEXT: blr5950entry:5951 %conv = uitofp i32 %str to float5952 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85953 store float %conv, ptr %add.ptr, align 45954 ret void5955}5956 5957; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5958define dso_local void @st_align32_uint32_t_float(ptr nocapture %ptr, i32 zeroext %str) {5959; CHECK-P10-LABEL: st_align32_uint32_t_float:5960; CHECK-P10: # %bb.0: # %entry5961; CHECK-P10-NEXT: mtfprwz f0, r45962; CHECK-P10-NEXT: xscvuxdsp f0, f05963; CHECK-P10-NEXT: pstfs f0, 99999000(r3), 05964; CHECK-P10-NEXT: blr5965;5966; CHECK-P9-LABEL: st_align32_uint32_t_float:5967; CHECK-P9: # %bb.0: # %entry5968; CHECK-P9-NEXT: mtfprwz f0, r45969; CHECK-P9-NEXT: lis r4, 15255970; CHECK-P9-NEXT: xscvuxdsp f0, f05971; CHECK-P9-NEXT: ori r4, r4, 566005972; CHECK-P9-NEXT: stfsx f0, r3, r45973; CHECK-P9-NEXT: blr5974;5975; CHECK-P8-LABEL: st_align32_uint32_t_float:5976; CHECK-P8: # %bb.0: # %entry5977; CHECK-P8-NEXT: mtfprwz f0, r45978; CHECK-P8-NEXT: lis r4, 15255979; CHECK-P8-NEXT: ori r4, r4, 566005980; CHECK-P8-NEXT: xscvuxdsp f0, f05981; CHECK-P8-NEXT: stfsx f0, r3, r45982; CHECK-P8-NEXT: blr5983entry:5984 %conv = uitofp i32 %str to float5985 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005986 store float %conv, ptr %add.ptr, align 45987 ret void5988}5989 5990; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5991define dso_local void @st_align64_uint32_t_float(ptr nocapture %ptr, i32 zeroext %str) {5992; CHECK-P10-LABEL: st_align64_uint32_t_float:5993; CHECK-P10: # %bb.0: # %entry5994; CHECK-P10-NEXT: mtfprwz f0, r45995; CHECK-P10-NEXT: pli r4, 2441406255996; CHECK-P10-NEXT: rldic r4, r4, 12, 245997; CHECK-P10-NEXT: xscvuxdsp f0, f05998; CHECK-P10-NEXT: stfsx f0, r3, r45999; CHECK-P10-NEXT: blr6000;6001; CHECK-P9-LABEL: st_align64_uint32_t_float:6002; CHECK-P9: # %bb.0: # %entry6003; CHECK-P9-NEXT: mtfprwz f0, r46004; CHECK-P9-NEXT: lis r4, 37256005; CHECK-P9-NEXT: xscvuxdsp f0, f06006; CHECK-P9-NEXT: ori r4, r4, 190256007; CHECK-P9-NEXT: rldic r4, r4, 12, 246008; CHECK-P9-NEXT: stfsx f0, r3, r46009; CHECK-P9-NEXT: blr6010;6011; CHECK-P8-LABEL: st_align64_uint32_t_float:6012; CHECK-P8: # %bb.0: # %entry6013; CHECK-P8-NEXT: mtfprwz f0, r46014; CHECK-P8-NEXT: lis r4, 37256015; CHECK-P8-NEXT: ori r4, r4, 190256016; CHECK-P8-NEXT: rldic r4, r4, 12, 246017; CHECK-P8-NEXT: xscvuxdsp f0, f06018; CHECK-P8-NEXT: stfsx f0, r3, r46019; CHECK-P8-NEXT: blr6020entry:6021 %conv = uitofp i32 %str to float6022 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006023 store float %conv, ptr %add.ptr, align 46024 ret void6025}6026 6027; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6028define dso_local void @st_reg_uint32_t_float(ptr nocapture %ptr, i64 %off, i32 zeroext %str) {6029; CHECK-LABEL: st_reg_uint32_t_float:6030; CHECK: # %bb.0: # %entry6031; CHECK-NEXT: mtfprwz f0, r56032; CHECK-NEXT: xscvuxdsp f0, f06033; CHECK-NEXT: stfsx f0, r3, r46034; CHECK-NEXT: blr6035entry:6036 %conv = uitofp i32 %str to float6037 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6038 store float %conv, ptr %add.ptr, align 46039 ret void6040}6041 6042; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6043define dso_local void @st_or1_uint32_t_float(i64 %ptr, i8 zeroext %off, i32 zeroext %str) {6044; CHECK-LABEL: st_or1_uint32_t_float:6045; CHECK: # %bb.0: # %entry6046; CHECK-NEXT: mtfprwz f0, r56047; CHECK-NEXT: or r3, r4, r36048; CHECK-NEXT: xscvuxdsp f0, f06049; CHECK-NEXT: stfs f0, 0(r3)6050; CHECK-NEXT: blr6051entry:6052 %conv = uitofp i32 %str to float6053 %conv1 = zext i8 %off to i646054 %or = or i64 %conv1, %ptr6055 %0 = inttoptr i64 %or to ptr6056 store float %conv, ptr %0, align 46057 ret void6058}6059 6060; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6061define dso_local void @st_not_disjoint16_uint32_t_float(i64 %ptr, i32 zeroext %str) {6062; CHECK-LABEL: st_not_disjoint16_uint32_t_float:6063; CHECK: # %bb.0: # %entry6064; CHECK-NEXT: mtfprwz f0, r46065; CHECK-NEXT: ori r3, r3, 66066; CHECK-NEXT: xscvuxdsp f0, f06067; CHECK-NEXT: stfs f0, 0(r3)6068; CHECK-NEXT: blr6069entry:6070 %conv = uitofp i32 %str to float6071 %or = or i64 %ptr, 66072 %0 = inttoptr i64 %or to ptr6073 store float %conv, ptr %0, align 46074 ret void6075}6076 6077; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6078define dso_local void @st_disjoint_align16_uint32_t_float(i64 %ptr, i32 zeroext %str) {6079; CHECK-LABEL: st_disjoint_align16_uint32_t_float:6080; CHECK: # %bb.0: # %entry6081; CHECK-NEXT: mtfprwz f0, r46082; CHECK-NEXT: rldicr r3, r3, 0, 516083; CHECK-NEXT: xscvuxdsp f0, f06084; CHECK-NEXT: stfs f0, 24(r3)6085; CHECK-NEXT: blr6086entry:6087 %and = and i64 %ptr, -40966088 %conv = uitofp i32 %str to float6089 %or = or i64 %and, 246090 %0 = inttoptr i64 %or to ptr6091 store float %conv, ptr %0, align 86092 ret void6093}6094 6095; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6096define dso_local void @st_not_disjoint32_uint32_t_float(i64 %ptr, i32 zeroext %str) {6097; CHECK-P10-LABEL: st_not_disjoint32_uint32_t_float:6098; CHECK-P10: # %bb.0: # %entry6099; CHECK-P10-NEXT: mtfprwz f0, r46100; CHECK-P10-NEXT: ori r3, r3, 344636101; CHECK-P10-NEXT: oris r3, r3, 16102; CHECK-P10-NEXT: xscvuxdsp f0, f06103; CHECK-P10-NEXT: stfs f0, 0(r3)6104; CHECK-P10-NEXT: blr6105;6106; CHECK-P9-LABEL: st_not_disjoint32_uint32_t_float:6107; CHECK-P9: # %bb.0: # %entry6108; CHECK-P9-NEXT: mtfprwz f0, r46109; CHECK-P9-NEXT: ori r3, r3, 344636110; CHECK-P9-NEXT: xscvuxdsp f0, f06111; CHECK-P9-NEXT: oris r3, r3, 16112; CHECK-P9-NEXT: stfs f0, 0(r3)6113; CHECK-P9-NEXT: blr6114;6115; CHECK-P8-LABEL: st_not_disjoint32_uint32_t_float:6116; CHECK-P8: # %bb.0: # %entry6117; CHECK-P8-NEXT: mtfprwz f0, r46118; CHECK-P8-NEXT: ori r3, r3, 344636119; CHECK-P8-NEXT: oris r3, r3, 16120; CHECK-P8-NEXT: xscvuxdsp f0, f06121; CHECK-P8-NEXT: stfs f0, 0(r3)6122; CHECK-P8-NEXT: blr6123entry:6124 %conv = uitofp i32 %str to float6125 %or = or i64 %ptr, 999996126 %0 = inttoptr i64 %or to ptr6127 store float %conv, ptr %0, align 46128 ret void6129}6130 6131; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6132define dso_local void @st_disjoint_align32_uint32_t_float(i64 %ptr, i32 zeroext %str) {6133; CHECK-P10-LABEL: st_disjoint_align32_uint32_t_float:6134; CHECK-P10: # %bb.0: # %entry6135; CHECK-P10-NEXT: mtfprwz f0, r46136; CHECK-P10-NEXT: lis r5, -152646137; CHECK-P10-NEXT: and r3, r3, r56138; CHECK-P10-NEXT: xscvuxdsp f0, f06139; CHECK-P10-NEXT: pstfs f0, 999990000(r3), 06140; CHECK-P10-NEXT: blr6141;6142; CHECK-P9-LABEL: st_disjoint_align32_uint32_t_float:6143; CHECK-P9: # %bb.0: # %entry6144; CHECK-P9-NEXT: mtfprwz f0, r46145; CHECK-P9-NEXT: lis r5, -152646146; CHECK-P9-NEXT: lis r4, 152586147; CHECK-P9-NEXT: xscvuxdsp f0, f06148; CHECK-P9-NEXT: and r3, r3, r56149; CHECK-P9-NEXT: ori r4, r4, 417126150; CHECK-P9-NEXT: stfsx f0, r3, r46151; CHECK-P9-NEXT: blr6152;6153; CHECK-P8-LABEL: st_disjoint_align32_uint32_t_float:6154; CHECK-P8: # %bb.0: # %entry6155; CHECK-P8-NEXT: mtfprwz f0, r46156; CHECK-P8-NEXT: lis r5, -152646157; CHECK-P8-NEXT: lis r4, 152586158; CHECK-P8-NEXT: and r3, r3, r56159; CHECK-P8-NEXT: ori r4, r4, 417126160; CHECK-P8-NEXT: xscvuxdsp f0, f06161; CHECK-P8-NEXT: stfsx f0, r3, r46162; CHECK-P8-NEXT: blr6163entry:6164 %and = and i64 %ptr, -10003415046165 %conv = uitofp i32 %str to float6166 %or = or i64 %and, 9999900006167 %0 = inttoptr i64 %or to ptr6168 store float %conv, ptr %0, align 166169 ret void6170}6171 6172; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6173define dso_local void @st_not_disjoint64_uint32_t_float(i64 %ptr, i32 zeroext %str) {6174; CHECK-P10-LABEL: st_not_disjoint64_uint32_t_float:6175; CHECK-P10: # %bb.0: # %entry6176; CHECK-P10-NEXT: mtfprwz f0, r46177; CHECK-P10-NEXT: pli r4, 2326178; CHECK-P10-NEXT: pli r5, 35675873296179; CHECK-P10-NEXT: rldimi r5, r4, 32, 06180; CHECK-P10-NEXT: xscvuxdsp f0, f06181; CHECK-P10-NEXT: or r3, r3, r56182; CHECK-P10-NEXT: stfs f0, 0(r3)6183; CHECK-P10-NEXT: blr6184;6185; CHECK-P9-LABEL: st_not_disjoint64_uint32_t_float:6186; CHECK-P9: # %bb.0: # %entry6187; CHECK-P9-NEXT: mtfprwz f0, r46188; CHECK-P9-NEXT: li r4, 296189; CHECK-P9-NEXT: rldic r4, r4, 35, 246190; CHECK-P9-NEXT: xscvuxdsp f0, f06191; CHECK-P9-NEXT: oris r4, r4, 544376192; CHECK-P9-NEXT: ori r4, r4, 40976193; CHECK-P9-NEXT: or r3, r3, r46194; CHECK-P9-NEXT: stfs f0, 0(r3)6195; CHECK-P9-NEXT: blr6196;6197; CHECK-P8-LABEL: st_not_disjoint64_uint32_t_float:6198; CHECK-P8: # %bb.0: # %entry6199; CHECK-P8-NEXT: mtfprwz f0, r46200; CHECK-P8-NEXT: li r4, 296201; CHECK-P8-NEXT: rldic r4, r4, 35, 246202; CHECK-P8-NEXT: oris r4, r4, 544376203; CHECK-P8-NEXT: xscvuxdsp f0, f06204; CHECK-P8-NEXT: ori r4, r4, 40976205; CHECK-P8-NEXT: or r3, r3, r46206; CHECK-P8-NEXT: stfs f0, 0(r3)6207; CHECK-P8-NEXT: blr6208entry:6209 %conv = uitofp i32 %str to float6210 %or = or i64 %ptr, 10000000000016211 %0 = inttoptr i64 %or to ptr6212 store float %conv, ptr %0, align 46213 ret void6214}6215 6216; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6217define dso_local void @st_disjoint_align64_uint32_t_float(i64 %ptr, i32 zeroext %str) {6218; CHECK-P10-LABEL: st_disjoint_align64_uint32_t_float:6219; CHECK-P10: # %bb.0: # %entry6220; CHECK-P10-NEXT: mtfprwz f0, r46221; CHECK-P10-NEXT: pli r4, 2441406256222; CHECK-P10-NEXT: rldicr r3, r3, 0, 236223; CHECK-P10-NEXT: rldic r4, r4, 12, 246224; CHECK-P10-NEXT: xscvuxdsp f0, f06225; CHECK-P10-NEXT: stfsx f0, r3, r46226; CHECK-P10-NEXT: blr6227;6228; CHECK-P9-LABEL: st_disjoint_align64_uint32_t_float:6229; CHECK-P9: # %bb.0: # %entry6230; CHECK-P9-NEXT: mtfprwz f0, r46231; CHECK-P9-NEXT: lis r4, 37256232; CHECK-P9-NEXT: rldicr r3, r3, 0, 236233; CHECK-P9-NEXT: xscvuxdsp f0, f06234; CHECK-P9-NEXT: ori r4, r4, 190256235; CHECK-P9-NEXT: rldic r4, r4, 12, 246236; CHECK-P9-NEXT: stfsx f0, r3, r46237; CHECK-P9-NEXT: blr6238;6239; CHECK-P8-LABEL: st_disjoint_align64_uint32_t_float:6240; CHECK-P8: # %bb.0: # %entry6241; CHECK-P8-NEXT: mtfprwz f0, r46242; CHECK-P8-NEXT: lis r4, 37256243; CHECK-P8-NEXT: rldicr r3, r3, 0, 236244; CHECK-P8-NEXT: ori r4, r4, 190256245; CHECK-P8-NEXT: rldic r4, r4, 12, 246246; CHECK-P8-NEXT: xscvuxdsp f0, f06247; CHECK-P8-NEXT: stfsx f0, r3, r46248; CHECK-P8-NEXT: blr6249entry:6250 %and = and i64 %ptr, -10995116277766251 %conv = uitofp i32 %str to float6252 %or = or i64 %and, 10000000000006253 %0 = inttoptr i64 %or to ptr6254 store float %conv, ptr %0, align 40966255 ret void6256}6257 6258; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6259define dso_local void @st_cst_align16_uint32_t_float(i32 zeroext %str) {6260; CHECK-LABEL: st_cst_align16_uint32_t_float:6261; CHECK: # %bb.0: # %entry6262; CHECK-NEXT: mtfprwz f0, r36263; CHECK-NEXT: xscvuxdsp f0, f06264; CHECK-NEXT: stfs f0, 4080(0)6265; CHECK-NEXT: blr6266entry:6267 %conv = uitofp i32 %str to float6268 store float %conv, ptr inttoptr (i64 4080 to ptr), align 166269 ret void6270}6271 6272; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6273define dso_local void @st_cst_align32_uint32_t_float(i32 zeroext %str) {6274; CHECK-LABEL: st_cst_align32_uint32_t_float:6275; CHECK: # %bb.0: # %entry6276; CHECK-NEXT: mtfprwz f0, r36277; CHECK-NEXT: lis r3, 1536278; CHECK-NEXT: xscvuxdsp f0, f06279; CHECK-NEXT: stfs f0, -27108(r3)6280; CHECK-NEXT: blr6281entry:6282 %conv = uitofp i32 %str to float6283 store float %conv, ptr inttoptr (i64 9999900 to ptr), align 46284 ret void6285}6286 6287; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6288define dso_local void @st_cst_align64_uint32_t_float(i32 zeroext %str) {6289; CHECK-P10-LABEL: st_cst_align64_uint32_t_float:6290; CHECK-P10: # %bb.0: # %entry6291; CHECK-P10-NEXT: mtfprwz f0, r36292; CHECK-P10-NEXT: pli r3, 2441406256293; CHECK-P10-NEXT: rldic r3, r3, 12, 246294; CHECK-P10-NEXT: xscvuxdsp f0, f06295; CHECK-P10-NEXT: stfs f0, 0(r3)6296; CHECK-P10-NEXT: blr6297;6298; CHECK-P9-LABEL: st_cst_align64_uint32_t_float:6299; CHECK-P9: # %bb.0: # %entry6300; CHECK-P9-NEXT: mtfprwz f0, r36301; CHECK-P9-NEXT: lis r3, 37256302; CHECK-P9-NEXT: xscvuxdsp f0, f06303; CHECK-P9-NEXT: ori r3, r3, 190256304; CHECK-P9-NEXT: rldic r3, r3, 12, 246305; CHECK-P9-NEXT: stfs f0, 0(r3)6306; CHECK-P9-NEXT: blr6307;6308; CHECK-P8-LABEL: st_cst_align64_uint32_t_float:6309; CHECK-P8: # %bb.0: # %entry6310; CHECK-P8-NEXT: mtfprwz f0, r36311; CHECK-P8-NEXT: lis r3, 37256312; CHECK-P8-NEXT: ori r3, r3, 190256313; CHECK-P8-NEXT: rldic r3, r3, 12, 246314; CHECK-P8-NEXT: xscvuxdsp f0, f06315; CHECK-P8-NEXT: stfs f0, 0(r3)6316; CHECK-P8-NEXT: blr6317entry:6318 %conv = uitofp i32 %str to float6319 store float %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966320 ret void6321}6322 6323; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6324define dso_local void @st_0_uint32_t_double(i64 %ptr, i32 zeroext %str) {6325; CHECK-LABEL: st_0_uint32_t_double:6326; CHECK: # %bb.0: # %entry6327; CHECK-NEXT: mtfprwz f0, r46328; CHECK-NEXT: xscvuxddp f0, f06329; CHECK-NEXT: stfd f0, 0(r3)6330; CHECK-NEXT: blr6331entry:6332 %conv = uitofp i32 %str to double6333 %0 = inttoptr i64 %ptr to ptr6334 store double %conv, ptr %0, align 86335 ret void6336}6337 6338; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6339define dso_local void @st_align16_uint32_t_double(ptr nocapture %ptr, i32 zeroext %str) {6340; CHECK-LABEL: st_align16_uint32_t_double:6341; CHECK: # %bb.0: # %entry6342; CHECK-NEXT: mtfprwz f0, r46343; CHECK-NEXT: xscvuxddp f0, f06344; CHECK-NEXT: stfd f0, 8(r3)6345; CHECK-NEXT: blr6346entry:6347 %conv = uitofp i32 %str to double6348 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86349 store double %conv, ptr %add.ptr, align 86350 ret void6351}6352 6353; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6354define dso_local void @st_align32_uint32_t_double(ptr nocapture %ptr, i32 zeroext %str) {6355; CHECK-P10-LABEL: st_align32_uint32_t_double:6356; CHECK-P10: # %bb.0: # %entry6357; CHECK-P10-NEXT: mtfprwz f0, r46358; CHECK-P10-NEXT: xscvuxddp f0, f06359; CHECK-P10-NEXT: pstfd f0, 99999000(r3), 06360; CHECK-P10-NEXT: blr6361;6362; CHECK-P9-LABEL: st_align32_uint32_t_double:6363; CHECK-P9: # %bb.0: # %entry6364; CHECK-P9-NEXT: mtfprwz f0, r46365; CHECK-P9-NEXT: lis r4, 15256366; CHECK-P9-NEXT: xscvuxddp f0, f06367; CHECK-P9-NEXT: ori r4, r4, 566006368; CHECK-P9-NEXT: stfdx f0, r3, r46369; CHECK-P9-NEXT: blr6370;6371; CHECK-P8-LABEL: st_align32_uint32_t_double:6372; CHECK-P8: # %bb.0: # %entry6373; CHECK-P8-NEXT: mtfprwz f0, r46374; CHECK-P8-NEXT: lis r4, 15256375; CHECK-P8-NEXT: ori r4, r4, 566006376; CHECK-P8-NEXT: xscvuxddp f0, f06377; CHECK-P8-NEXT: stfdx f0, r3, r46378; CHECK-P8-NEXT: blr6379entry:6380 %conv = uitofp i32 %str to double6381 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006382 store double %conv, ptr %add.ptr, align 86383 ret void6384}6385 6386; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6387define dso_local void @st_align64_uint32_t_double(ptr nocapture %ptr, i32 zeroext %str) {6388; CHECK-P10-LABEL: st_align64_uint32_t_double:6389; CHECK-P10: # %bb.0: # %entry6390; CHECK-P10-NEXT: mtfprwz f0, r46391; CHECK-P10-NEXT: pli r4, 2441406256392; CHECK-P10-NEXT: rldic r4, r4, 12, 246393; CHECK-P10-NEXT: xscvuxddp f0, f06394; CHECK-P10-NEXT: stfdx f0, r3, r46395; CHECK-P10-NEXT: blr6396;6397; CHECK-P9-LABEL: st_align64_uint32_t_double:6398; CHECK-P9: # %bb.0: # %entry6399; CHECK-P9-NEXT: mtfprwz f0, r46400; CHECK-P9-NEXT: lis r4, 37256401; CHECK-P9-NEXT: xscvuxddp f0, f06402; CHECK-P9-NEXT: ori r4, r4, 190256403; CHECK-P9-NEXT: rldic r4, r4, 12, 246404; CHECK-P9-NEXT: stfdx f0, r3, r46405; CHECK-P9-NEXT: blr6406;6407; CHECK-P8-LABEL: st_align64_uint32_t_double:6408; CHECK-P8: # %bb.0: # %entry6409; CHECK-P8-NEXT: mtfprwz f0, r46410; CHECK-P8-NEXT: lis r4, 37256411; CHECK-P8-NEXT: ori r4, r4, 190256412; CHECK-P8-NEXT: rldic r4, r4, 12, 246413; CHECK-P8-NEXT: xscvuxddp f0, f06414; CHECK-P8-NEXT: stfdx f0, r3, r46415; CHECK-P8-NEXT: blr6416entry:6417 %conv = uitofp i32 %str to double6418 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006419 store double %conv, ptr %add.ptr, align 86420 ret void6421}6422 6423; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6424define dso_local void @st_reg_uint32_t_double(ptr nocapture %ptr, i64 %off, i32 zeroext %str) {6425; CHECK-LABEL: st_reg_uint32_t_double:6426; CHECK: # %bb.0: # %entry6427; CHECK-NEXT: mtfprwz f0, r56428; CHECK-NEXT: xscvuxddp f0, f06429; CHECK-NEXT: stfdx f0, r3, r46430; CHECK-NEXT: blr6431entry:6432 %conv = uitofp i32 %str to double6433 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6434 store double %conv, ptr %add.ptr, align 86435 ret void6436}6437 6438; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6439define dso_local void @st_or1_uint32_t_double(i64 %ptr, i8 zeroext %off, i32 zeroext %str) {6440; CHECK-LABEL: st_or1_uint32_t_double:6441; CHECK: # %bb.0: # %entry6442; CHECK-NEXT: mtfprwz f0, r56443; CHECK-NEXT: or r3, r4, r36444; CHECK-NEXT: xscvuxddp f0, f06445; CHECK-NEXT: stfd f0, 0(r3)6446; CHECK-NEXT: blr6447entry:6448 %conv = uitofp i32 %str to double6449 %conv1 = zext i8 %off to i646450 %or = or i64 %conv1, %ptr6451 %0 = inttoptr i64 %or to ptr6452 store double %conv, ptr %0, align 86453 ret void6454}6455 6456; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6457define dso_local void @st_not_disjoint16_uint32_t_double(i64 %ptr, i32 zeroext %str) {6458; CHECK-LABEL: st_not_disjoint16_uint32_t_double:6459; CHECK: # %bb.0: # %entry6460; CHECK-NEXT: mtfprwz f0, r46461; CHECK-NEXT: ori r3, r3, 66462; CHECK-NEXT: xscvuxddp f0, f06463; CHECK-NEXT: stfd f0, 0(r3)6464; CHECK-NEXT: blr6465entry:6466 %conv = uitofp i32 %str to double6467 %or = or i64 %ptr, 66468 %0 = inttoptr i64 %or to ptr6469 store double %conv, ptr %0, align 86470 ret void6471}6472 6473; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6474define dso_local void @st_disjoint_align16_uint32_t_double(i64 %ptr, i32 zeroext %str) {6475; CHECK-LABEL: st_disjoint_align16_uint32_t_double:6476; CHECK: # %bb.0: # %entry6477; CHECK-NEXT: mtfprwz f0, r46478; CHECK-NEXT: rldicr r3, r3, 0, 516479; CHECK-NEXT: xscvuxddp f0, f06480; CHECK-NEXT: stfd f0, 24(r3)6481; CHECK-NEXT: blr6482entry:6483 %and = and i64 %ptr, -40966484 %conv = uitofp i32 %str to double6485 %or = or i64 %and, 246486 %0 = inttoptr i64 %or to ptr6487 store double %conv, ptr %0, align 86488 ret void6489}6490 6491; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6492define dso_local void @st_not_disjoint32_uint32_t_double(i64 %ptr, i32 zeroext %str) {6493; CHECK-P10-LABEL: st_not_disjoint32_uint32_t_double:6494; CHECK-P10: # %bb.0: # %entry6495; CHECK-P10-NEXT: mtfprwz f0, r46496; CHECK-P10-NEXT: ori r3, r3, 344636497; CHECK-P10-NEXT: oris r3, r3, 16498; CHECK-P10-NEXT: xscvuxddp f0, f06499; CHECK-P10-NEXT: stfd f0, 0(r3)6500; CHECK-P10-NEXT: blr6501;6502; CHECK-P9-LABEL: st_not_disjoint32_uint32_t_double:6503; CHECK-P9: # %bb.0: # %entry6504; CHECK-P9-NEXT: mtfprwz f0, r46505; CHECK-P9-NEXT: ori r3, r3, 344636506; CHECK-P9-NEXT: xscvuxddp f0, f06507; CHECK-P9-NEXT: oris r3, r3, 16508; CHECK-P9-NEXT: stfd f0, 0(r3)6509; CHECK-P9-NEXT: blr6510;6511; CHECK-P8-LABEL: st_not_disjoint32_uint32_t_double:6512; CHECK-P8: # %bb.0: # %entry6513; CHECK-P8-NEXT: mtfprwz f0, r46514; CHECK-P8-NEXT: ori r3, r3, 344636515; CHECK-P8-NEXT: oris r3, r3, 16516; CHECK-P8-NEXT: xscvuxddp f0, f06517; CHECK-P8-NEXT: stfd f0, 0(r3)6518; CHECK-P8-NEXT: blr6519entry:6520 %conv = uitofp i32 %str to double6521 %or = or i64 %ptr, 999996522 %0 = inttoptr i64 %or to ptr6523 store double %conv, ptr %0, align 86524 ret void6525}6526 6527; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6528define dso_local void @st_disjoint_align32_uint32_t_double(i64 %ptr, i32 zeroext %str) {6529; CHECK-P10-LABEL: st_disjoint_align32_uint32_t_double:6530; CHECK-P10: # %bb.0: # %entry6531; CHECK-P10-NEXT: mtfprwz f0, r46532; CHECK-P10-NEXT: lis r5, -152646533; CHECK-P10-NEXT: and r3, r3, r56534; CHECK-P10-NEXT: xscvuxddp f0, f06535; CHECK-P10-NEXT: pstfd f0, 999990000(r3), 06536; CHECK-P10-NEXT: blr6537;6538; CHECK-P9-LABEL: st_disjoint_align32_uint32_t_double:6539; CHECK-P9: # %bb.0: # %entry6540; CHECK-P9-NEXT: mtfprwz f0, r46541; CHECK-P9-NEXT: lis r5, -152646542; CHECK-P9-NEXT: lis r4, 152586543; CHECK-P9-NEXT: xscvuxddp f0, f06544; CHECK-P9-NEXT: and r3, r3, r56545; CHECK-P9-NEXT: ori r4, r4, 417126546; CHECK-P9-NEXT: stfdx f0, r3, r46547; CHECK-P9-NEXT: blr6548;6549; CHECK-P8-LABEL: st_disjoint_align32_uint32_t_double:6550; CHECK-P8: # %bb.0: # %entry6551; CHECK-P8-NEXT: mtfprwz f0, r46552; CHECK-P8-NEXT: lis r5, -152646553; CHECK-P8-NEXT: lis r4, 152586554; CHECK-P8-NEXT: and r3, r3, r56555; CHECK-P8-NEXT: ori r4, r4, 417126556; CHECK-P8-NEXT: xscvuxddp f0, f06557; CHECK-P8-NEXT: stfdx f0, r3, r46558; CHECK-P8-NEXT: blr6559entry:6560 %and = and i64 %ptr, -10003415046561 %conv = uitofp i32 %str to double6562 %or = or i64 %and, 9999900006563 %0 = inttoptr i64 %or to ptr6564 store double %conv, ptr %0, align 166565 ret void6566}6567 6568; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6569define dso_local void @st_not_disjoint64_uint32_t_double(i64 %ptr, i32 zeroext %str) {6570; CHECK-P10-LABEL: st_not_disjoint64_uint32_t_double:6571; CHECK-P10: # %bb.0: # %entry6572; CHECK-P10-NEXT: mtfprwz f0, r46573; CHECK-P10-NEXT: pli r4, 2326574; CHECK-P10-NEXT: pli r5, 35675873296575; CHECK-P10-NEXT: rldimi r5, r4, 32, 06576; CHECK-P10-NEXT: xscvuxddp f0, f06577; CHECK-P10-NEXT: or r3, r3, r56578; CHECK-P10-NEXT: stfd f0, 0(r3)6579; CHECK-P10-NEXT: blr6580;6581; CHECK-P9-LABEL: st_not_disjoint64_uint32_t_double:6582; CHECK-P9: # %bb.0: # %entry6583; CHECK-P9-NEXT: mtfprwz f0, r46584; CHECK-P9-NEXT: li r4, 296585; CHECK-P9-NEXT: rldic r4, r4, 35, 246586; CHECK-P9-NEXT: xscvuxddp f0, f06587; CHECK-P9-NEXT: oris r4, r4, 544376588; CHECK-P9-NEXT: ori r4, r4, 40976589; CHECK-P9-NEXT: or r3, r3, r46590; CHECK-P9-NEXT: stfd f0, 0(r3)6591; CHECK-P9-NEXT: blr6592;6593; CHECK-P8-LABEL: st_not_disjoint64_uint32_t_double:6594; CHECK-P8: # %bb.0: # %entry6595; CHECK-P8-NEXT: mtfprwz f0, r46596; CHECK-P8-NEXT: li r4, 296597; CHECK-P8-NEXT: rldic r4, r4, 35, 246598; CHECK-P8-NEXT: oris r4, r4, 544376599; CHECK-P8-NEXT: xscvuxddp f0, f06600; CHECK-P8-NEXT: ori r4, r4, 40976601; CHECK-P8-NEXT: or r3, r3, r46602; CHECK-P8-NEXT: stfd f0, 0(r3)6603; CHECK-P8-NEXT: blr6604entry:6605 %conv = uitofp i32 %str to double6606 %or = or i64 %ptr, 10000000000016607 %0 = inttoptr i64 %or to ptr6608 store double %conv, ptr %0, align 86609 ret void6610}6611 6612; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6613define dso_local void @st_disjoint_align64_uint32_t_double(i64 %ptr, i32 zeroext %str) {6614; CHECK-P10-LABEL: st_disjoint_align64_uint32_t_double:6615; CHECK-P10: # %bb.0: # %entry6616; CHECK-P10-NEXT: mtfprwz f0, r46617; CHECK-P10-NEXT: pli r4, 2441406256618; CHECK-P10-NEXT: rldicr r3, r3, 0, 236619; CHECK-P10-NEXT: rldic r4, r4, 12, 246620; CHECK-P10-NEXT: xscvuxddp f0, f06621; CHECK-P10-NEXT: stfdx f0, r3, r46622; CHECK-P10-NEXT: blr6623;6624; CHECK-P9-LABEL: st_disjoint_align64_uint32_t_double:6625; CHECK-P9: # %bb.0: # %entry6626; CHECK-P9-NEXT: mtfprwz f0, r46627; CHECK-P9-NEXT: lis r4, 37256628; CHECK-P9-NEXT: rldicr r3, r3, 0, 236629; CHECK-P9-NEXT: xscvuxddp f0, f06630; CHECK-P9-NEXT: ori r4, r4, 190256631; CHECK-P9-NEXT: rldic r4, r4, 12, 246632; CHECK-P9-NEXT: stfdx f0, r3, r46633; CHECK-P9-NEXT: blr6634;6635; CHECK-P8-LABEL: st_disjoint_align64_uint32_t_double:6636; CHECK-P8: # %bb.0: # %entry6637; CHECK-P8-NEXT: mtfprwz f0, r46638; CHECK-P8-NEXT: lis r4, 37256639; CHECK-P8-NEXT: rldicr r3, r3, 0, 236640; CHECK-P8-NEXT: ori r4, r4, 190256641; CHECK-P8-NEXT: rldic r4, r4, 12, 246642; CHECK-P8-NEXT: xscvuxddp f0, f06643; CHECK-P8-NEXT: stfdx f0, r3, r46644; CHECK-P8-NEXT: blr6645entry:6646 %and = and i64 %ptr, -10995116277766647 %conv = uitofp i32 %str to double6648 %or = or i64 %and, 10000000000006649 %0 = inttoptr i64 %or to ptr6650 store double %conv, ptr %0, align 40966651 ret void6652}6653 6654; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6655define dso_local void @st_cst_align16_uint32_t_double(i32 zeroext %str) {6656; CHECK-LABEL: st_cst_align16_uint32_t_double:6657; CHECK: # %bb.0: # %entry6658; CHECK-NEXT: mtfprwz f0, r36659; CHECK-NEXT: xscvuxddp f0, f06660; CHECK-NEXT: stfd f0, 4080(0)6661; CHECK-NEXT: blr6662entry:6663 %conv = uitofp i32 %str to double6664 store double %conv, ptr inttoptr (i64 4080 to ptr), align 166665 ret void6666}6667 6668; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6669define dso_local void @st_cst_align32_uint32_t_double(i32 zeroext %str) {6670; CHECK-LABEL: st_cst_align32_uint32_t_double:6671; CHECK: # %bb.0: # %entry6672; CHECK-NEXT: mtfprwz f0, r36673; CHECK-NEXT: lis r3, 1536674; CHECK-NEXT: xscvuxddp f0, f06675; CHECK-NEXT: stfd f0, -27108(r3)6676; CHECK-NEXT: blr6677entry:6678 %conv = uitofp i32 %str to double6679 store double %conv, ptr inttoptr (i64 9999900 to ptr), align 86680 ret void6681}6682 6683; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6684define dso_local void @st_cst_align64_uint32_t_double(i32 zeroext %str) {6685; CHECK-P10-LABEL: st_cst_align64_uint32_t_double:6686; CHECK-P10: # %bb.0: # %entry6687; CHECK-P10-NEXT: mtfprwz f0, r36688; CHECK-P10-NEXT: pli r3, 2441406256689; CHECK-P10-NEXT: rldic r3, r3, 12, 246690; CHECK-P10-NEXT: xscvuxddp f0, f06691; CHECK-P10-NEXT: stfd f0, 0(r3)6692; CHECK-P10-NEXT: blr6693;6694; CHECK-P9-LABEL: st_cst_align64_uint32_t_double:6695; CHECK-P9: # %bb.0: # %entry6696; CHECK-P9-NEXT: mtfprwz f0, r36697; CHECK-P9-NEXT: lis r3, 37256698; CHECK-P9-NEXT: xscvuxddp f0, f06699; CHECK-P9-NEXT: ori r3, r3, 190256700; CHECK-P9-NEXT: rldic r3, r3, 12, 246701; CHECK-P9-NEXT: stfd f0, 0(r3)6702; CHECK-P9-NEXT: blr6703;6704; CHECK-P8-LABEL: st_cst_align64_uint32_t_double:6705; CHECK-P8: # %bb.0: # %entry6706; CHECK-P8-NEXT: mtfprwz f0, r36707; CHECK-P8-NEXT: lis r3, 37256708; CHECK-P8-NEXT: ori r3, r3, 190256709; CHECK-P8-NEXT: rldic r3, r3, 12, 246710; CHECK-P8-NEXT: xscvuxddp f0, f06711; CHECK-P8-NEXT: stfd f0, 0(r3)6712; CHECK-P8-NEXT: blr6713entry:6714 %conv = uitofp i32 %str to double6715 store double %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966716 ret void6717}6718 6719; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6720define dso_local void @st_0_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6721; CHECK-LABEL: st_0_int32_t_uint64_t:6722; CHECK: # %bb.0: # %entry6723; CHECK-NEXT: std r4, 0(r3)6724; CHECK-NEXT: blr6725entry:6726 %conv = sext i32 %str to i646727 %0 = inttoptr i64 %ptr to ptr6728 store i64 %conv, ptr %0, align 86729 ret void6730}6731 6732; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6733define dso_local void @st_align16_int32_t_uint64_t(ptr nocapture %ptr, i32 signext %str) {6734; CHECK-LABEL: st_align16_int32_t_uint64_t:6735; CHECK: # %bb.0: # %entry6736; CHECK-NEXT: std r4, 8(r3)6737; CHECK-NEXT: blr6738entry:6739 %conv = sext i32 %str to i646740 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86741 store i64 %conv, ptr %add.ptr, align 86742 ret void6743}6744 6745; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6746define dso_local void @st_align32_int32_t_uint64_t(ptr nocapture %ptr, i32 signext %str) {6747; CHECK-P10-LABEL: st_align32_int32_t_uint64_t:6748; CHECK-P10: # %bb.0: # %entry6749; CHECK-P10-NEXT: pstd r4, 99999000(r3), 06750; CHECK-P10-NEXT: blr6751;6752; CHECK-PREP10-LABEL: st_align32_int32_t_uint64_t:6753; CHECK-PREP10: # %bb.0: # %entry6754; CHECK-PREP10-NEXT: lis r5, 15256755; CHECK-PREP10-NEXT: ori r5, r5, 566006756; CHECK-PREP10-NEXT: stdx r4, r3, r56757; CHECK-PREP10-NEXT: blr6758entry:6759 %conv = sext i32 %str to i646760 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006761 store i64 %conv, ptr %add.ptr, align 86762 ret void6763}6764 6765; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6766define dso_local void @st_align64_int32_t_uint64_t(ptr nocapture %ptr, i32 signext %str) {6767; CHECK-P10-LABEL: st_align64_int32_t_uint64_t:6768; CHECK-P10: # %bb.0: # %entry6769; CHECK-P10-NEXT: pli r5, 2441406256770; CHECK-P10-NEXT: rldic r5, r5, 12, 246771; CHECK-P10-NEXT: stdx r4, r3, r56772; CHECK-P10-NEXT: blr6773;6774; CHECK-PREP10-LABEL: st_align64_int32_t_uint64_t:6775; CHECK-PREP10: # %bb.0: # %entry6776; CHECK-PREP10-NEXT: lis r5, 37256777; CHECK-PREP10-NEXT: ori r5, r5, 190256778; CHECK-PREP10-NEXT: rldic r5, r5, 12, 246779; CHECK-PREP10-NEXT: stdx r4, r3, r56780; CHECK-PREP10-NEXT: blr6781entry:6782 %conv = sext i32 %str to i646783 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006784 store i64 %conv, ptr %add.ptr, align 86785 ret void6786}6787 6788; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6789define dso_local void @st_reg_int32_t_uint64_t(ptr nocapture %ptr, i64 %off, i32 signext %str) {6790; CHECK-LABEL: st_reg_int32_t_uint64_t:6791; CHECK: # %bb.0: # %entry6792; CHECK-NEXT: stdx r5, r3, r46793; CHECK-NEXT: blr6794entry:6795 %conv = sext i32 %str to i646796 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6797 store i64 %conv, ptr %add.ptr, align 86798 ret void6799}6800 6801; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6802define dso_local void @st_or1_int32_t_uint64_t(i64 %ptr, i8 zeroext %off, i32 signext %str) {6803; CHECK-LABEL: st_or1_int32_t_uint64_t:6804; CHECK: # %bb.0: # %entry6805; CHECK-NEXT: or r3, r4, r36806; CHECK-NEXT: std r5, 0(r3)6807; CHECK-NEXT: blr6808entry:6809 %conv = sext i32 %str to i646810 %conv1 = zext i8 %off to i646811 %or = or i64 %conv1, %ptr6812 %0 = inttoptr i64 %or to ptr6813 store i64 %conv, ptr %0, align 86814 ret void6815}6816 6817; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6818define dso_local void @st_not_disjoint16_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6819; CHECK-LABEL: st_not_disjoint16_int32_t_uint64_t:6820; CHECK: # %bb.0: # %entry6821; CHECK-NEXT: ori r3, r3, 66822; CHECK-NEXT: std r4, 0(r3)6823; CHECK-NEXT: blr6824entry:6825 %conv = sext i32 %str to i646826 %or = or i64 %ptr, 66827 %0 = inttoptr i64 %or to ptr6828 store i64 %conv, ptr %0, align 86829 ret void6830}6831 6832; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6833define dso_local void @st_disjoint_align16_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6834; CHECK-LABEL: st_disjoint_align16_int32_t_uint64_t:6835; CHECK: # %bb.0: # %entry6836; CHECK-NEXT: rldicr r3, r3, 0, 516837; CHECK-NEXT: std r4, 24(r3)6838; CHECK-NEXT: blr6839entry:6840 %and = and i64 %ptr, -40966841 %conv = sext i32 %str to i646842 %or = or i64 %and, 246843 %0 = inttoptr i64 %or to ptr6844 store i64 %conv, ptr %0, align 86845 ret void6846}6847 6848; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6849define dso_local void @st_not_disjoint32_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6850; CHECK-LABEL: st_not_disjoint32_int32_t_uint64_t:6851; CHECK: # %bb.0: # %entry6852; CHECK-NEXT: ori r3, r3, 344636853; CHECK-NEXT: oris r3, r3, 16854; CHECK-NEXT: std r4, 0(r3)6855; CHECK-NEXT: blr6856entry:6857 %conv = sext i32 %str to i646858 %or = or i64 %ptr, 999996859 %0 = inttoptr i64 %or to ptr6860 store i64 %conv, ptr %0, align 86861 ret void6862}6863 6864; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6865define dso_local void @st_disjoint_align32_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6866; CHECK-P10-LABEL: st_disjoint_align32_int32_t_uint64_t:6867; CHECK-P10: # %bb.0: # %entry6868; CHECK-P10-NEXT: lis r5, -152646869; CHECK-P10-NEXT: and r3, r3, r56870; CHECK-P10-NEXT: pstd r4, 999990000(r3), 06871; CHECK-P10-NEXT: blr6872;6873; CHECK-PREP10-LABEL: st_disjoint_align32_int32_t_uint64_t:6874; CHECK-PREP10: # %bb.0: # %entry6875; CHECK-PREP10-NEXT: lis r5, -152646876; CHECK-PREP10-NEXT: and r3, r3, r56877; CHECK-PREP10-NEXT: lis r5, 152586878; CHECK-PREP10-NEXT: ori r5, r5, 417126879; CHECK-PREP10-NEXT: stdx r4, r3, r56880; CHECK-PREP10-NEXT: blr6881entry:6882 %and = and i64 %ptr, -10003415046883 %conv = sext i32 %str to i646884 %or = or i64 %and, 9999900006885 %0 = inttoptr i64 %or to ptr6886 store i64 %conv, ptr %0, align 166887 ret void6888}6889 6890; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6891define dso_local void @st_not_disjoint64_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6892; CHECK-P10-LABEL: st_not_disjoint64_int32_t_uint64_t:6893; CHECK-P10: # %bb.0: # %entry6894; CHECK-P10-NEXT: pli r5, 2326895; CHECK-P10-NEXT: pli r6, 35675873296896; CHECK-P10-NEXT: rldimi r6, r5, 32, 06897; CHECK-P10-NEXT: or r3, r3, r66898; CHECK-P10-NEXT: std r4, 0(r3)6899; CHECK-P10-NEXT: blr6900;6901; CHECK-PREP10-LABEL: st_not_disjoint64_int32_t_uint64_t:6902; CHECK-PREP10: # %bb.0: # %entry6903; CHECK-PREP10-NEXT: li r5, 296904; CHECK-PREP10-NEXT: rldic r5, r5, 35, 246905; CHECK-PREP10-NEXT: oris r5, r5, 544376906; CHECK-PREP10-NEXT: ori r5, r5, 40976907; CHECK-PREP10-NEXT: or r3, r3, r56908; CHECK-PREP10-NEXT: std r4, 0(r3)6909; CHECK-PREP10-NEXT: blr6910entry:6911 %conv = sext i32 %str to i646912 %or = or i64 %ptr, 10000000000016913 %0 = inttoptr i64 %or to ptr6914 store i64 %conv, ptr %0, align 86915 ret void6916}6917 6918; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6919define dso_local void @st_disjoint_align64_int32_t_uint64_t(i64 %ptr, i32 signext %str) {6920; CHECK-P10-LABEL: st_disjoint_align64_int32_t_uint64_t:6921; CHECK-P10: # %bb.0: # %entry6922; CHECK-P10-NEXT: pli r5, 2441406256923; CHECK-P10-NEXT: rldicr r3, r3, 0, 236924; CHECK-P10-NEXT: rldic r5, r5, 12, 246925; CHECK-P10-NEXT: stdx r4, r3, r56926; CHECK-P10-NEXT: blr6927;6928; CHECK-PREP10-LABEL: st_disjoint_align64_int32_t_uint64_t:6929; CHECK-PREP10: # %bb.0: # %entry6930; CHECK-PREP10-NEXT: lis r5, 37256931; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236932; CHECK-PREP10-NEXT: ori r5, r5, 190256933; CHECK-PREP10-NEXT: rldic r5, r5, 12, 246934; CHECK-PREP10-NEXT: stdx r4, r3, r56935; CHECK-PREP10-NEXT: blr6936entry:6937 %and = and i64 %ptr, -10995116277766938 %conv = sext i32 %str to i646939 %or = or i64 %and, 10000000000006940 %0 = inttoptr i64 %or to ptr6941 store i64 %conv, ptr %0, align 40966942 ret void6943}6944 6945; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6946define dso_local void @st_cst_align16_int32_t_uint64_t(i32 signext %str) {6947; CHECK-LABEL: st_cst_align16_int32_t_uint64_t:6948; CHECK: # %bb.0: # %entry6949; CHECK-NEXT: std r3, 4080(0)6950; CHECK-NEXT: blr6951entry:6952 %conv = sext i32 %str to i646953 store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 166954 ret void6955}6956 6957; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6958define dso_local void @st_cst_align32_int32_t_uint64_t(i32 signext %str) {6959; CHECK-LABEL: st_cst_align32_int32_t_uint64_t:6960; CHECK: # %bb.0: # %entry6961; CHECK-NEXT: lis r4, 1536962; CHECK-NEXT: std r3, -27108(r4)6963; CHECK-NEXT: blr6964entry:6965 %conv = sext i32 %str to i646966 store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 86967 ret void6968}6969 6970; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6971define dso_local void @st_cst_align64_int32_t_uint64_t(i32 signext %str) {6972; CHECK-P10-LABEL: st_cst_align64_int32_t_uint64_t:6973; CHECK-P10: # %bb.0: # %entry6974; CHECK-P10-NEXT: pli r4, 2441406256975; CHECK-P10-NEXT: rldic r4, r4, 12, 246976; CHECK-P10-NEXT: std r3, 0(r4)6977; CHECK-P10-NEXT: blr6978;6979; CHECK-PREP10-LABEL: st_cst_align64_int32_t_uint64_t:6980; CHECK-PREP10: # %bb.0: # %entry6981; CHECK-PREP10-NEXT: lis r4, 37256982; CHECK-PREP10-NEXT: ori r4, r4, 190256983; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246984; CHECK-PREP10-NEXT: std r3, 0(r4)6985; CHECK-PREP10-NEXT: blr6986entry:6987 %conv = sext i32 %str to i646988 store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966989 ret void6990}6991 6992; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6993define dso_local void @st_0_int32_t_float(i64 %ptr, i32 signext %str) {6994; CHECK-LABEL: st_0_int32_t_float:6995; CHECK: # %bb.0: # %entry6996; CHECK-NEXT: mtfprwa f0, r46997; CHECK-NEXT: xscvsxdsp f0, f06998; CHECK-NEXT: stfs f0, 0(r3)6999; CHECK-NEXT: blr7000entry:7001 %conv = sitofp i32 %str to float7002 %0 = inttoptr i64 %ptr to ptr7003 store float %conv, ptr %0, align 47004 ret void7005}7006 7007; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7008define dso_local void @st_align16_int32_t_float(ptr nocapture %ptr, i32 signext %str) {7009; CHECK-LABEL: st_align16_int32_t_float:7010; CHECK: # %bb.0: # %entry7011; CHECK-NEXT: mtfprwa f0, r47012; CHECK-NEXT: xscvsxdsp f0, f07013; CHECK-NEXT: stfs f0, 8(r3)7014; CHECK-NEXT: blr7015entry:7016 %conv = sitofp i32 %str to float7017 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87018 store float %conv, ptr %add.ptr, align 47019 ret void7020}7021 7022; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7023define dso_local void @st_align32_int32_t_float(ptr nocapture %ptr, i32 signext %str) {7024; CHECK-P10-LABEL: st_align32_int32_t_float:7025; CHECK-P10: # %bb.0: # %entry7026; CHECK-P10-NEXT: mtfprwa f0, r47027; CHECK-P10-NEXT: xscvsxdsp f0, f07028; CHECK-P10-NEXT: pstfs f0, 99999000(r3), 07029; CHECK-P10-NEXT: blr7030;7031; CHECK-P9-LABEL: st_align32_int32_t_float:7032; CHECK-P9: # %bb.0: # %entry7033; CHECK-P9-NEXT: mtfprwa f0, r47034; CHECK-P9-NEXT: lis r4, 15257035; CHECK-P9-NEXT: xscvsxdsp f0, f07036; CHECK-P9-NEXT: ori r4, r4, 566007037; CHECK-P9-NEXT: stfsx f0, r3, r47038; CHECK-P9-NEXT: blr7039;7040; CHECK-P8-LABEL: st_align32_int32_t_float:7041; CHECK-P8: # %bb.0: # %entry7042; CHECK-P8-NEXT: mtfprwa f0, r47043; CHECK-P8-NEXT: lis r4, 15257044; CHECK-P8-NEXT: ori r4, r4, 566007045; CHECK-P8-NEXT: xscvsxdsp f0, f07046; CHECK-P8-NEXT: stfsx f0, r3, r47047; CHECK-P8-NEXT: blr7048entry:7049 %conv = sitofp i32 %str to float7050 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007051 store float %conv, ptr %add.ptr, align 47052 ret void7053}7054 7055; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7056define dso_local void @st_align64_int32_t_float(ptr nocapture %ptr, i32 signext %str) {7057; CHECK-P10-LABEL: st_align64_int32_t_float:7058; CHECK-P10: # %bb.0: # %entry7059; CHECK-P10-NEXT: mtfprwa f0, r47060; CHECK-P10-NEXT: pli r4, 2441406257061; CHECK-P10-NEXT: rldic r4, r4, 12, 247062; CHECK-P10-NEXT: xscvsxdsp f0, f07063; CHECK-P10-NEXT: stfsx f0, r3, r47064; CHECK-P10-NEXT: blr7065;7066; CHECK-P9-LABEL: st_align64_int32_t_float:7067; CHECK-P9: # %bb.0: # %entry7068; CHECK-P9-NEXT: mtfprwa f0, r47069; CHECK-P9-NEXT: lis r4, 37257070; CHECK-P9-NEXT: xscvsxdsp f0, f07071; CHECK-P9-NEXT: ori r4, r4, 190257072; CHECK-P9-NEXT: rldic r4, r4, 12, 247073; CHECK-P9-NEXT: stfsx f0, r3, r47074; CHECK-P9-NEXT: blr7075;7076; CHECK-P8-LABEL: st_align64_int32_t_float:7077; CHECK-P8: # %bb.0: # %entry7078; CHECK-P8-NEXT: mtfprwa f0, r47079; CHECK-P8-NEXT: lis r4, 37257080; CHECK-P8-NEXT: ori r4, r4, 190257081; CHECK-P8-NEXT: rldic r4, r4, 12, 247082; CHECK-P8-NEXT: xscvsxdsp f0, f07083; CHECK-P8-NEXT: stfsx f0, r3, r47084; CHECK-P8-NEXT: blr7085entry:7086 %conv = sitofp i32 %str to float7087 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007088 store float %conv, ptr %add.ptr, align 47089 ret void7090}7091 7092; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7093define dso_local void @st_reg_int32_t_float(ptr nocapture %ptr, i64 %off, i32 signext %str) {7094; CHECK-LABEL: st_reg_int32_t_float:7095; CHECK: # %bb.0: # %entry7096; CHECK-NEXT: mtfprwa f0, r57097; CHECK-NEXT: xscvsxdsp f0, f07098; CHECK-NEXT: stfsx f0, r3, r47099; CHECK-NEXT: blr7100entry:7101 %conv = sitofp i32 %str to float7102 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7103 store float %conv, ptr %add.ptr, align 47104 ret void7105}7106 7107; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7108define dso_local void @st_or1_int32_t_float(i64 %ptr, i8 zeroext %off, i32 signext %str) {7109; CHECK-LABEL: st_or1_int32_t_float:7110; CHECK: # %bb.0: # %entry7111; CHECK-NEXT: mtfprwa f0, r57112; CHECK-NEXT: or r3, r4, r37113; CHECK-NEXT: xscvsxdsp f0, f07114; CHECK-NEXT: stfs f0, 0(r3)7115; CHECK-NEXT: blr7116entry:7117 %conv = sitofp i32 %str to float7118 %conv1 = zext i8 %off to i647119 %or = or i64 %conv1, %ptr7120 %0 = inttoptr i64 %or to ptr7121 store float %conv, ptr %0, align 47122 ret void7123}7124 7125; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7126define dso_local void @st_not_disjoint16_int32_t_float(i64 %ptr, i32 signext %str) {7127; CHECK-LABEL: st_not_disjoint16_int32_t_float:7128; CHECK: # %bb.0: # %entry7129; CHECK-NEXT: mtfprwa f0, r47130; CHECK-NEXT: ori r3, r3, 67131; CHECK-NEXT: xscvsxdsp f0, f07132; CHECK-NEXT: stfs f0, 0(r3)7133; CHECK-NEXT: blr7134entry:7135 %conv = sitofp i32 %str to float7136 %or = or i64 %ptr, 67137 %0 = inttoptr i64 %or to ptr7138 store float %conv, ptr %0, align 47139 ret void7140}7141 7142; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7143define dso_local void @st_disjoint_align16_int32_t_float(i64 %ptr, i32 signext %str) {7144; CHECK-LABEL: st_disjoint_align16_int32_t_float:7145; CHECK: # %bb.0: # %entry7146; CHECK-NEXT: mtfprwa f0, r47147; CHECK-NEXT: rldicr r3, r3, 0, 517148; CHECK-NEXT: xscvsxdsp f0, f07149; CHECK-NEXT: stfs f0, 24(r3)7150; CHECK-NEXT: blr7151entry:7152 %and = and i64 %ptr, -40967153 %conv = sitofp i32 %str to float7154 %or = or i64 %and, 247155 %0 = inttoptr i64 %or to ptr7156 store float %conv, ptr %0, align 87157 ret void7158}7159 7160; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7161define dso_local void @st_not_disjoint32_int32_t_float(i64 %ptr, i32 signext %str) {7162; CHECK-P10-LABEL: st_not_disjoint32_int32_t_float:7163; CHECK-P10: # %bb.0: # %entry7164; CHECK-P10-NEXT: mtfprwa f0, r47165; CHECK-P10-NEXT: ori r3, r3, 344637166; CHECK-P10-NEXT: oris r3, r3, 17167; CHECK-P10-NEXT: xscvsxdsp f0, f07168; CHECK-P10-NEXT: stfs f0, 0(r3)7169; CHECK-P10-NEXT: blr7170;7171; CHECK-P9-LABEL: st_not_disjoint32_int32_t_float:7172; CHECK-P9: # %bb.0: # %entry7173; CHECK-P9-NEXT: mtfprwa f0, r47174; CHECK-P9-NEXT: ori r3, r3, 344637175; CHECK-P9-NEXT: xscvsxdsp f0, f07176; CHECK-P9-NEXT: oris r3, r3, 17177; CHECK-P9-NEXT: stfs f0, 0(r3)7178; CHECK-P9-NEXT: blr7179;7180; CHECK-P8-LABEL: st_not_disjoint32_int32_t_float:7181; CHECK-P8: # %bb.0: # %entry7182; CHECK-P8-NEXT: mtfprwa f0, r47183; CHECK-P8-NEXT: ori r3, r3, 344637184; CHECK-P8-NEXT: oris r3, r3, 17185; CHECK-P8-NEXT: xscvsxdsp f0, f07186; CHECK-P8-NEXT: stfs f0, 0(r3)7187; CHECK-P8-NEXT: blr7188entry:7189 %conv = sitofp i32 %str to float7190 %or = or i64 %ptr, 999997191 %0 = inttoptr i64 %or to ptr7192 store float %conv, ptr %0, align 47193 ret void7194}7195 7196; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7197define dso_local void @st_disjoint_align32_int32_t_float(i64 %ptr, i32 signext %str) {7198; CHECK-P10-LABEL: st_disjoint_align32_int32_t_float:7199; CHECK-P10: # %bb.0: # %entry7200; CHECK-P10-NEXT: mtfprwa f0, r47201; CHECK-P10-NEXT: lis r5, -152647202; CHECK-P10-NEXT: and r3, r3, r57203; CHECK-P10-NEXT: xscvsxdsp f0, f07204; CHECK-P10-NEXT: pstfs f0, 999990000(r3), 07205; CHECK-P10-NEXT: blr7206;7207; CHECK-P9-LABEL: st_disjoint_align32_int32_t_float:7208; CHECK-P9: # %bb.0: # %entry7209; CHECK-P9-NEXT: mtfprwa f0, r47210; CHECK-P9-NEXT: lis r5, -152647211; CHECK-P9-NEXT: lis r4, 152587212; CHECK-P9-NEXT: xscvsxdsp f0, f07213; CHECK-P9-NEXT: and r3, r3, r57214; CHECK-P9-NEXT: ori r4, r4, 417127215; CHECK-P9-NEXT: stfsx f0, r3, r47216; CHECK-P9-NEXT: blr7217;7218; CHECK-P8-LABEL: st_disjoint_align32_int32_t_float:7219; CHECK-P8: # %bb.0: # %entry7220; CHECK-P8-NEXT: mtfprwa f0, r47221; CHECK-P8-NEXT: lis r5, -152647222; CHECK-P8-NEXT: lis r4, 152587223; CHECK-P8-NEXT: and r3, r3, r57224; CHECK-P8-NEXT: ori r4, r4, 417127225; CHECK-P8-NEXT: xscvsxdsp f0, f07226; CHECK-P8-NEXT: stfsx f0, r3, r47227; CHECK-P8-NEXT: blr7228entry:7229 %and = and i64 %ptr, -10003415047230 %conv = sitofp i32 %str to float7231 %or = or i64 %and, 9999900007232 %0 = inttoptr i64 %or to ptr7233 store float %conv, ptr %0, align 167234 ret void7235}7236 7237; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7238define dso_local void @st_not_disjoint64_int32_t_float(i64 %ptr, i32 signext %str) {7239; CHECK-P10-LABEL: st_not_disjoint64_int32_t_float:7240; CHECK-P10: # %bb.0: # %entry7241; CHECK-P10-NEXT: mtfprwa f0, r47242; CHECK-P10-NEXT: pli r4, 2327243; CHECK-P10-NEXT: pli r5, 35675873297244; CHECK-P10-NEXT: rldimi r5, r4, 32, 07245; CHECK-P10-NEXT: xscvsxdsp f0, f07246; CHECK-P10-NEXT: or r3, r3, r57247; CHECK-P10-NEXT: stfs f0, 0(r3)7248; CHECK-P10-NEXT: blr7249;7250; CHECK-P9-LABEL: st_not_disjoint64_int32_t_float:7251; CHECK-P9: # %bb.0: # %entry7252; CHECK-P9-NEXT: mtfprwa f0, r47253; CHECK-P9-NEXT: li r4, 297254; CHECK-P9-NEXT: rldic r4, r4, 35, 247255; CHECK-P9-NEXT: xscvsxdsp f0, f07256; CHECK-P9-NEXT: oris r4, r4, 544377257; CHECK-P9-NEXT: ori r4, r4, 40977258; CHECK-P9-NEXT: or r3, r3, r47259; CHECK-P9-NEXT: stfs f0, 0(r3)7260; CHECK-P9-NEXT: blr7261;7262; CHECK-P8-LABEL: st_not_disjoint64_int32_t_float:7263; CHECK-P8: # %bb.0: # %entry7264; CHECK-P8-NEXT: mtfprwa f0, r47265; CHECK-P8-NEXT: li r4, 297266; CHECK-P8-NEXT: rldic r4, r4, 35, 247267; CHECK-P8-NEXT: oris r4, r4, 544377268; CHECK-P8-NEXT: xscvsxdsp f0, f07269; CHECK-P8-NEXT: ori r4, r4, 40977270; CHECK-P8-NEXT: or r3, r3, r47271; CHECK-P8-NEXT: stfs f0, 0(r3)7272; CHECK-P8-NEXT: blr7273entry:7274 %conv = sitofp i32 %str to float7275 %or = or i64 %ptr, 10000000000017276 %0 = inttoptr i64 %or to ptr7277 store float %conv, ptr %0, align 47278 ret void7279}7280 7281; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7282define dso_local void @st_disjoint_align64_int32_t_float(i64 %ptr, i32 signext %str) {7283; CHECK-P10-LABEL: st_disjoint_align64_int32_t_float:7284; CHECK-P10: # %bb.0: # %entry7285; CHECK-P10-NEXT: mtfprwa f0, r47286; CHECK-P10-NEXT: pli r4, 2441406257287; CHECK-P10-NEXT: rldicr r3, r3, 0, 237288; CHECK-P10-NEXT: rldic r4, r4, 12, 247289; CHECK-P10-NEXT: xscvsxdsp f0, f07290; CHECK-P10-NEXT: stfsx f0, r3, r47291; CHECK-P10-NEXT: blr7292;7293; CHECK-P9-LABEL: st_disjoint_align64_int32_t_float:7294; CHECK-P9: # %bb.0: # %entry7295; CHECK-P9-NEXT: mtfprwa f0, r47296; CHECK-P9-NEXT: lis r4, 37257297; CHECK-P9-NEXT: rldicr r3, r3, 0, 237298; CHECK-P9-NEXT: xscvsxdsp f0, f07299; CHECK-P9-NEXT: ori r4, r4, 190257300; CHECK-P9-NEXT: rldic r4, r4, 12, 247301; CHECK-P9-NEXT: stfsx f0, r3, r47302; CHECK-P9-NEXT: blr7303;7304; CHECK-P8-LABEL: st_disjoint_align64_int32_t_float:7305; CHECK-P8: # %bb.0: # %entry7306; CHECK-P8-NEXT: mtfprwa f0, r47307; CHECK-P8-NEXT: lis r4, 37257308; CHECK-P8-NEXT: rldicr r3, r3, 0, 237309; CHECK-P8-NEXT: ori r4, r4, 190257310; CHECK-P8-NEXT: rldic r4, r4, 12, 247311; CHECK-P8-NEXT: xscvsxdsp f0, f07312; CHECK-P8-NEXT: stfsx f0, r3, r47313; CHECK-P8-NEXT: blr7314entry:7315 %and = and i64 %ptr, -10995116277767316 %conv = sitofp i32 %str to float7317 %or = or i64 %and, 10000000000007318 %0 = inttoptr i64 %or to ptr7319 store float %conv, ptr %0, align 40967320 ret void7321}7322 7323; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7324define dso_local void @st_cst_align16_int32_t_float(i32 signext %str) {7325; CHECK-LABEL: st_cst_align16_int32_t_float:7326; CHECK: # %bb.0: # %entry7327; CHECK-NEXT: mtfprwa f0, r37328; CHECK-NEXT: xscvsxdsp f0, f07329; CHECK-NEXT: stfs f0, 4080(0)7330; CHECK-NEXT: blr7331entry:7332 %conv = sitofp i32 %str to float7333 store float %conv, ptr inttoptr (i64 4080 to ptr), align 167334 ret void7335}7336 7337; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7338define dso_local void @st_cst_align32_int32_t_float(i32 signext %str) {7339; CHECK-LABEL: st_cst_align32_int32_t_float:7340; CHECK: # %bb.0: # %entry7341; CHECK-NEXT: mtfprwa f0, r37342; CHECK-NEXT: lis r3, 1537343; CHECK-NEXT: xscvsxdsp f0, f07344; CHECK-NEXT: stfs f0, -27108(r3)7345; CHECK-NEXT: blr7346entry:7347 %conv = sitofp i32 %str to float7348 store float %conv, ptr inttoptr (i64 9999900 to ptr), align 47349 ret void7350}7351 7352; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7353define dso_local void @st_cst_align64_int32_t_float(i32 signext %str) {7354; CHECK-P10-LABEL: st_cst_align64_int32_t_float:7355; CHECK-P10: # %bb.0: # %entry7356; CHECK-P10-NEXT: mtfprwa f0, r37357; CHECK-P10-NEXT: pli r3, 2441406257358; CHECK-P10-NEXT: rldic r3, r3, 12, 247359; CHECK-P10-NEXT: xscvsxdsp f0, f07360; CHECK-P10-NEXT: stfs f0, 0(r3)7361; CHECK-P10-NEXT: blr7362;7363; CHECK-P9-LABEL: st_cst_align64_int32_t_float:7364; CHECK-P9: # %bb.0: # %entry7365; CHECK-P9-NEXT: mtfprwa f0, r37366; CHECK-P9-NEXT: lis r3, 37257367; CHECK-P9-NEXT: xscvsxdsp f0, f07368; CHECK-P9-NEXT: ori r3, r3, 190257369; CHECK-P9-NEXT: rldic r3, r3, 12, 247370; CHECK-P9-NEXT: stfs f0, 0(r3)7371; CHECK-P9-NEXT: blr7372;7373; CHECK-P8-LABEL: st_cst_align64_int32_t_float:7374; CHECK-P8: # %bb.0: # %entry7375; CHECK-P8-NEXT: mtfprwa f0, r37376; CHECK-P8-NEXT: lis r3, 37257377; CHECK-P8-NEXT: ori r3, r3, 190257378; CHECK-P8-NEXT: rldic r3, r3, 12, 247379; CHECK-P8-NEXT: xscvsxdsp f0, f07380; CHECK-P8-NEXT: stfs f0, 0(r3)7381; CHECK-P8-NEXT: blr7382entry:7383 %conv = sitofp i32 %str to float7384 store float %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967385 ret void7386}7387 7388; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7389define dso_local void @st_0_int32_t_double(i64 %ptr, i32 signext %str) {7390; CHECK-LABEL: st_0_int32_t_double:7391; CHECK: # %bb.0: # %entry7392; CHECK-NEXT: mtfprwa f0, r47393; CHECK-NEXT: xscvsxddp f0, f07394; CHECK-NEXT: stfd f0, 0(r3)7395; CHECK-NEXT: blr7396entry:7397 %conv = sitofp i32 %str to double7398 %0 = inttoptr i64 %ptr to ptr7399 store double %conv, ptr %0, align 87400 ret void7401}7402 7403; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7404define dso_local void @st_align16_int32_t_double(ptr nocapture %ptr, i32 signext %str) {7405; CHECK-LABEL: st_align16_int32_t_double:7406; CHECK: # %bb.0: # %entry7407; CHECK-NEXT: mtfprwa f0, r47408; CHECK-NEXT: xscvsxddp f0, f07409; CHECK-NEXT: stfd f0, 8(r3)7410; CHECK-NEXT: blr7411entry:7412 %conv = sitofp i32 %str to double7413 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87414 store double %conv, ptr %add.ptr, align 87415 ret void7416}7417 7418; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7419define dso_local void @st_align32_int32_t_double(ptr nocapture %ptr, i32 signext %str) {7420; CHECK-P10-LABEL: st_align32_int32_t_double:7421; CHECK-P10: # %bb.0: # %entry7422; CHECK-P10-NEXT: mtfprwa f0, r47423; CHECK-P10-NEXT: xscvsxddp f0, f07424; CHECK-P10-NEXT: pstfd f0, 99999000(r3), 07425; CHECK-P10-NEXT: blr7426;7427; CHECK-P9-LABEL: st_align32_int32_t_double:7428; CHECK-P9: # %bb.0: # %entry7429; CHECK-P9-NEXT: mtfprwa f0, r47430; CHECK-P9-NEXT: lis r4, 15257431; CHECK-P9-NEXT: xscvsxddp f0, f07432; CHECK-P9-NEXT: ori r4, r4, 566007433; CHECK-P9-NEXT: stfdx f0, r3, r47434; CHECK-P9-NEXT: blr7435;7436; CHECK-P8-LABEL: st_align32_int32_t_double:7437; CHECK-P8: # %bb.0: # %entry7438; CHECK-P8-NEXT: mtfprwa f0, r47439; CHECK-P8-NEXT: lis r4, 15257440; CHECK-P8-NEXT: ori r4, r4, 566007441; CHECK-P8-NEXT: xscvsxddp f0, f07442; CHECK-P8-NEXT: stfdx f0, r3, r47443; CHECK-P8-NEXT: blr7444entry:7445 %conv = sitofp i32 %str to double7446 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007447 store double %conv, ptr %add.ptr, align 87448 ret void7449}7450 7451; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7452define dso_local void @st_align64_int32_t_double(ptr nocapture %ptr, i32 signext %str) {7453; CHECK-P10-LABEL: st_align64_int32_t_double:7454; CHECK-P10: # %bb.0: # %entry7455; CHECK-P10-NEXT: mtfprwa f0, r47456; CHECK-P10-NEXT: pli r4, 2441406257457; CHECK-P10-NEXT: rldic r4, r4, 12, 247458; CHECK-P10-NEXT: xscvsxddp f0, f07459; CHECK-P10-NEXT: stfdx f0, r3, r47460; CHECK-P10-NEXT: blr7461;7462; CHECK-P9-LABEL: st_align64_int32_t_double:7463; CHECK-P9: # %bb.0: # %entry7464; CHECK-P9-NEXT: mtfprwa f0, r47465; CHECK-P9-NEXT: lis r4, 37257466; CHECK-P9-NEXT: xscvsxddp f0, f07467; CHECK-P9-NEXT: ori r4, r4, 190257468; CHECK-P9-NEXT: rldic r4, r4, 12, 247469; CHECK-P9-NEXT: stfdx f0, r3, r47470; CHECK-P9-NEXT: blr7471;7472; CHECK-P8-LABEL: st_align64_int32_t_double:7473; CHECK-P8: # %bb.0: # %entry7474; CHECK-P8-NEXT: mtfprwa f0, r47475; CHECK-P8-NEXT: lis r4, 37257476; CHECK-P8-NEXT: ori r4, r4, 190257477; CHECK-P8-NEXT: rldic r4, r4, 12, 247478; CHECK-P8-NEXT: xscvsxddp f0, f07479; CHECK-P8-NEXT: stfdx f0, r3, r47480; CHECK-P8-NEXT: blr7481entry:7482 %conv = sitofp i32 %str to double7483 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007484 store double %conv, ptr %add.ptr, align 87485 ret void7486}7487 7488; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7489define dso_local void @st_reg_int32_t_double(ptr nocapture %ptr, i64 %off, i32 signext %str) {7490; CHECK-LABEL: st_reg_int32_t_double:7491; CHECK: # %bb.0: # %entry7492; CHECK-NEXT: mtfprwa f0, r57493; CHECK-NEXT: xscvsxddp f0, f07494; CHECK-NEXT: stfdx f0, r3, r47495; CHECK-NEXT: blr7496entry:7497 %conv = sitofp i32 %str to double7498 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7499 store double %conv, ptr %add.ptr, align 87500 ret void7501}7502 7503; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7504define dso_local void @st_or1_int32_t_double(i64 %ptr, i8 zeroext %off, i32 signext %str) {7505; CHECK-LABEL: st_or1_int32_t_double:7506; CHECK: # %bb.0: # %entry7507; CHECK-NEXT: mtfprwa f0, r57508; CHECK-NEXT: or r3, r4, r37509; CHECK-NEXT: xscvsxddp f0, f07510; CHECK-NEXT: stfd f0, 0(r3)7511; CHECK-NEXT: blr7512entry:7513 %conv = sitofp i32 %str to double7514 %conv1 = zext i8 %off to i647515 %or = or i64 %conv1, %ptr7516 %0 = inttoptr i64 %or to ptr7517 store double %conv, ptr %0, align 87518 ret void7519}7520 7521; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7522define dso_local void @st_not_disjoint16_int32_t_double(i64 %ptr, i32 signext %str) {7523; CHECK-LABEL: st_not_disjoint16_int32_t_double:7524; CHECK: # %bb.0: # %entry7525; CHECK-NEXT: mtfprwa f0, r47526; CHECK-NEXT: ori r3, r3, 67527; CHECK-NEXT: xscvsxddp f0, f07528; CHECK-NEXT: stfd f0, 0(r3)7529; CHECK-NEXT: blr7530entry:7531 %conv = sitofp i32 %str to double7532 %or = or i64 %ptr, 67533 %0 = inttoptr i64 %or to ptr7534 store double %conv, ptr %0, align 87535 ret void7536}7537 7538; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7539define dso_local void @st_disjoint_align16_int32_t_double(i64 %ptr, i32 signext %str) {7540; CHECK-LABEL: st_disjoint_align16_int32_t_double:7541; CHECK: # %bb.0: # %entry7542; CHECK-NEXT: mtfprwa f0, r47543; CHECK-NEXT: rldicr r3, r3, 0, 517544; CHECK-NEXT: xscvsxddp f0, f07545; CHECK-NEXT: stfd f0, 24(r3)7546; CHECK-NEXT: blr7547entry:7548 %and = and i64 %ptr, -40967549 %conv = sitofp i32 %str to double7550 %or = or i64 %and, 247551 %0 = inttoptr i64 %or to ptr7552 store double %conv, ptr %0, align 87553 ret void7554}7555 7556; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7557define dso_local void @st_not_disjoint32_int32_t_double(i64 %ptr, i32 signext %str) {7558; CHECK-P10-LABEL: st_not_disjoint32_int32_t_double:7559; CHECK-P10: # %bb.0: # %entry7560; CHECK-P10-NEXT: mtfprwa f0, r47561; CHECK-P10-NEXT: ori r3, r3, 344637562; CHECK-P10-NEXT: oris r3, r3, 17563; CHECK-P10-NEXT: xscvsxddp f0, f07564; CHECK-P10-NEXT: stfd f0, 0(r3)7565; CHECK-P10-NEXT: blr7566;7567; CHECK-P9-LABEL: st_not_disjoint32_int32_t_double:7568; CHECK-P9: # %bb.0: # %entry7569; CHECK-P9-NEXT: mtfprwa f0, r47570; CHECK-P9-NEXT: ori r3, r3, 344637571; CHECK-P9-NEXT: xscvsxddp f0, f07572; CHECK-P9-NEXT: oris r3, r3, 17573; CHECK-P9-NEXT: stfd f0, 0(r3)7574; CHECK-P9-NEXT: blr7575;7576; CHECK-P8-LABEL: st_not_disjoint32_int32_t_double:7577; CHECK-P8: # %bb.0: # %entry7578; CHECK-P8-NEXT: mtfprwa f0, r47579; CHECK-P8-NEXT: ori r3, r3, 344637580; CHECK-P8-NEXT: oris r3, r3, 17581; CHECK-P8-NEXT: xscvsxddp f0, f07582; CHECK-P8-NEXT: stfd f0, 0(r3)7583; CHECK-P8-NEXT: blr7584entry:7585 %conv = sitofp i32 %str to double7586 %or = or i64 %ptr, 999997587 %0 = inttoptr i64 %or to ptr7588 store double %conv, ptr %0, align 87589 ret void7590}7591 7592; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7593define dso_local void @st_disjoint_align32_int32_t_double(i64 %ptr, i32 signext %str) {7594; CHECK-P10-LABEL: st_disjoint_align32_int32_t_double:7595; CHECK-P10: # %bb.0: # %entry7596; CHECK-P10-NEXT: mtfprwa f0, r47597; CHECK-P10-NEXT: lis r5, -152647598; CHECK-P10-NEXT: and r3, r3, r57599; CHECK-P10-NEXT: xscvsxddp f0, f07600; CHECK-P10-NEXT: pstfd f0, 999990000(r3), 07601; CHECK-P10-NEXT: blr7602;7603; CHECK-P9-LABEL: st_disjoint_align32_int32_t_double:7604; CHECK-P9: # %bb.0: # %entry7605; CHECK-P9-NEXT: mtfprwa f0, r47606; CHECK-P9-NEXT: lis r5, -152647607; CHECK-P9-NEXT: lis r4, 152587608; CHECK-P9-NEXT: xscvsxddp f0, f07609; CHECK-P9-NEXT: and r3, r3, r57610; CHECK-P9-NEXT: ori r4, r4, 417127611; CHECK-P9-NEXT: stfdx f0, r3, r47612; CHECK-P9-NEXT: blr7613;7614; CHECK-P8-LABEL: st_disjoint_align32_int32_t_double:7615; CHECK-P8: # %bb.0: # %entry7616; CHECK-P8-NEXT: mtfprwa f0, r47617; CHECK-P8-NEXT: lis r5, -152647618; CHECK-P8-NEXT: lis r4, 152587619; CHECK-P8-NEXT: and r3, r3, r57620; CHECK-P8-NEXT: ori r4, r4, 417127621; CHECK-P8-NEXT: xscvsxddp f0, f07622; CHECK-P8-NEXT: stfdx f0, r3, r47623; CHECK-P8-NEXT: blr7624entry:7625 %and = and i64 %ptr, -10003415047626 %conv = sitofp i32 %str to double7627 %or = or i64 %and, 9999900007628 %0 = inttoptr i64 %or to ptr7629 store double %conv, ptr %0, align 167630 ret void7631}7632 7633; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7634define dso_local void @st_not_disjoint64_int32_t_double(i64 %ptr, i32 signext %str) {7635; CHECK-P10-LABEL: st_not_disjoint64_int32_t_double:7636; CHECK-P10: # %bb.0: # %entry7637; CHECK-P10-NEXT: mtfprwa f0, r47638; CHECK-P10-NEXT: pli r4, 2327639; CHECK-P10-NEXT: pli r5, 35675873297640; CHECK-P10-NEXT: rldimi r5, r4, 32, 07641; CHECK-P10-NEXT: xscvsxddp f0, f07642; CHECK-P10-NEXT: or r3, r3, r57643; CHECK-P10-NEXT: stfd f0, 0(r3)7644; CHECK-P10-NEXT: blr7645;7646; CHECK-P9-LABEL: st_not_disjoint64_int32_t_double:7647; CHECK-P9: # %bb.0: # %entry7648; CHECK-P9-NEXT: mtfprwa f0, r47649; CHECK-P9-NEXT: li r4, 297650; CHECK-P9-NEXT: rldic r4, r4, 35, 247651; CHECK-P9-NEXT: xscvsxddp f0, f07652; CHECK-P9-NEXT: oris r4, r4, 544377653; CHECK-P9-NEXT: ori r4, r4, 40977654; CHECK-P9-NEXT: or r3, r3, r47655; CHECK-P9-NEXT: stfd f0, 0(r3)7656; CHECK-P9-NEXT: blr7657;7658; CHECK-P8-LABEL: st_not_disjoint64_int32_t_double:7659; CHECK-P8: # %bb.0: # %entry7660; CHECK-P8-NEXT: mtfprwa f0, r47661; CHECK-P8-NEXT: li r4, 297662; CHECK-P8-NEXT: rldic r4, r4, 35, 247663; CHECK-P8-NEXT: oris r4, r4, 544377664; CHECK-P8-NEXT: xscvsxddp f0, f07665; CHECK-P8-NEXT: ori r4, r4, 40977666; CHECK-P8-NEXT: or r3, r3, r47667; CHECK-P8-NEXT: stfd f0, 0(r3)7668; CHECK-P8-NEXT: blr7669entry:7670 %conv = sitofp i32 %str to double7671 %or = or i64 %ptr, 10000000000017672 %0 = inttoptr i64 %or to ptr7673 store double %conv, ptr %0, align 87674 ret void7675}7676 7677; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7678define dso_local void @st_disjoint_align64_int32_t_double(i64 %ptr, i32 signext %str) {7679; CHECK-P10-LABEL: st_disjoint_align64_int32_t_double:7680; CHECK-P10: # %bb.0: # %entry7681; CHECK-P10-NEXT: mtfprwa f0, r47682; CHECK-P10-NEXT: pli r4, 2441406257683; CHECK-P10-NEXT: rldicr r3, r3, 0, 237684; CHECK-P10-NEXT: rldic r4, r4, 12, 247685; CHECK-P10-NEXT: xscvsxddp f0, f07686; CHECK-P10-NEXT: stfdx f0, r3, r47687; CHECK-P10-NEXT: blr7688;7689; CHECK-P9-LABEL: st_disjoint_align64_int32_t_double:7690; CHECK-P9: # %bb.0: # %entry7691; CHECK-P9-NEXT: mtfprwa f0, r47692; CHECK-P9-NEXT: lis r4, 37257693; CHECK-P9-NEXT: rldicr r3, r3, 0, 237694; CHECK-P9-NEXT: xscvsxddp f0, f07695; CHECK-P9-NEXT: ori r4, r4, 190257696; CHECK-P9-NEXT: rldic r4, r4, 12, 247697; CHECK-P9-NEXT: stfdx f0, r3, r47698; CHECK-P9-NEXT: blr7699;7700; CHECK-P8-LABEL: st_disjoint_align64_int32_t_double:7701; CHECK-P8: # %bb.0: # %entry7702; CHECK-P8-NEXT: mtfprwa f0, r47703; CHECK-P8-NEXT: lis r4, 37257704; CHECK-P8-NEXT: rldicr r3, r3, 0, 237705; CHECK-P8-NEXT: ori r4, r4, 190257706; CHECK-P8-NEXT: rldic r4, r4, 12, 247707; CHECK-P8-NEXT: xscvsxddp f0, f07708; CHECK-P8-NEXT: stfdx f0, r3, r47709; CHECK-P8-NEXT: blr7710entry:7711 %and = and i64 %ptr, -10995116277767712 %conv = sitofp i32 %str to double7713 %or = or i64 %and, 10000000000007714 %0 = inttoptr i64 %or to ptr7715 store double %conv, ptr %0, align 40967716 ret void7717}7718 7719; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7720define dso_local void @st_cst_align16_int32_t_double(i32 signext %str) {7721; CHECK-LABEL: st_cst_align16_int32_t_double:7722; CHECK: # %bb.0: # %entry7723; CHECK-NEXT: mtfprwa f0, r37724; CHECK-NEXT: xscvsxddp f0, f07725; CHECK-NEXT: stfd f0, 4080(0)7726; CHECK-NEXT: blr7727entry:7728 %conv = sitofp i32 %str to double7729 store double %conv, ptr inttoptr (i64 4080 to ptr), align 167730 ret void7731}7732 7733; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7734define dso_local void @st_cst_align32_int32_t_double(i32 signext %str) {7735; CHECK-LABEL: st_cst_align32_int32_t_double:7736; CHECK: # %bb.0: # %entry7737; CHECK-NEXT: mtfprwa f0, r37738; CHECK-NEXT: lis r3, 1537739; CHECK-NEXT: xscvsxddp f0, f07740; CHECK-NEXT: stfd f0, -27108(r3)7741; CHECK-NEXT: blr7742entry:7743 %conv = sitofp i32 %str to double7744 store double %conv, ptr inttoptr (i64 9999900 to ptr), align 87745 ret void7746}7747 7748; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7749define dso_local void @st_cst_align64_int32_t_double(i32 signext %str) {7750; CHECK-P10-LABEL: st_cst_align64_int32_t_double:7751; CHECK-P10: # %bb.0: # %entry7752; CHECK-P10-NEXT: mtfprwa f0, r37753; CHECK-P10-NEXT: pli r3, 2441406257754; CHECK-P10-NEXT: rldic r3, r3, 12, 247755; CHECK-P10-NEXT: xscvsxddp f0, f07756; CHECK-P10-NEXT: stfd f0, 0(r3)7757; CHECK-P10-NEXT: blr7758;7759; CHECK-P9-LABEL: st_cst_align64_int32_t_double:7760; CHECK-P9: # %bb.0: # %entry7761; CHECK-P9-NEXT: mtfprwa f0, r37762; CHECK-P9-NEXT: lis r3, 37257763; CHECK-P9-NEXT: xscvsxddp f0, f07764; CHECK-P9-NEXT: ori r3, r3, 190257765; CHECK-P9-NEXT: rldic r3, r3, 12, 247766; CHECK-P9-NEXT: stfd f0, 0(r3)7767; CHECK-P9-NEXT: blr7768;7769; CHECK-P8-LABEL: st_cst_align64_int32_t_double:7770; CHECK-P8: # %bb.0: # %entry7771; CHECK-P8-NEXT: mtfprwa f0, r37772; CHECK-P8-NEXT: lis r3, 37257773; CHECK-P8-NEXT: ori r3, r3, 190257774; CHECK-P8-NEXT: rldic r3, r3, 12, 247775; CHECK-P8-NEXT: xscvsxddp f0, f07776; CHECK-P8-NEXT: stfd f0, 0(r3)7777; CHECK-P8-NEXT: blr7778entry:7779 %conv = sitofp i32 %str to double7780 store double %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967781 ret void7782}7783