7342 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-POSTP8,CHECK-P105; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \6; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \7; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-POSTP8,CHECK-P108; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \9; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \10; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-POSTP8,CHECK-PREP10,CHECK-P911; 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-POSTP8,CHECK-PREP10,CHECK-P914; 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-P817; 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-P820 21; Function Attrs: norecurse nounwind readonly uwtable willreturn22define dso_local double @ld_0_double_uint8_t(i64 %ptr) {23; CHECK-POSTP8-LABEL: ld_0_double_uint8_t:24; CHECK-POSTP8: # %bb.0: # %entry25; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r326; CHECK-POSTP8-NEXT: xscvuxddp f1, f027; CHECK-POSTP8-NEXT: blr28;29; CHECK-P8-LABEL: ld_0_double_uint8_t:30; CHECK-P8: # %bb.0: # %entry31; CHECK-P8-NEXT: lbz r3, 0(r3)32; CHECK-P8-NEXT: mtfprwz f0, r333; CHECK-P8-NEXT: xscvuxddp f1, f034; CHECK-P8-NEXT: blr35entry:36 %0 = inttoptr i64 %ptr to ptr37 %1 = load i8, ptr %0, align 138 %conv = uitofp i8 %1 to double39 ret double %conv40}41 42; Function Attrs: norecurse nounwind readonly uwtable willreturn43define dso_local double @ld_align16_double_uint8_t(ptr nocapture readonly %ptr) {44; CHECK-POSTP8-LABEL: ld_align16_double_uint8_t:45; CHECK-POSTP8: # %bb.0: # %entry46; CHECK-POSTP8-NEXT: addi r3, r3, 847; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r348; CHECK-POSTP8-NEXT: xscvuxddp f1, f049; CHECK-POSTP8-NEXT: blr50;51; CHECK-P8-LABEL: ld_align16_double_uint8_t:52; CHECK-P8: # %bb.0: # %entry53; CHECK-P8-NEXT: lbz r3, 8(r3)54; CHECK-P8-NEXT: mtfprwz f0, r355; CHECK-P8-NEXT: xscvuxddp f1, f056; CHECK-P8-NEXT: blr57entry:58 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 859 %0 = load i8, ptr %add.ptr, align 160 %conv = uitofp i8 %0 to double61 ret double %conv62}63 64; Function Attrs: norecurse nounwind readonly uwtable willreturn65define dso_local double @ld_align32_double_uint8_t(ptr nocapture readonly %ptr) {66; CHECK-P10-LABEL: ld_align32_double_uint8_t:67; CHECK-P10: # %bb.0: # %entry68; CHECK-P10-NEXT: pli r4, 9999900069; CHECK-P10-NEXT: lxsibzx f0, r3, r470; CHECK-P10-NEXT: xscvuxddp f1, f071; CHECK-P10-NEXT: blr72;73; CHECK-P9-LABEL: ld_align32_double_uint8_t:74; CHECK-P9: # %bb.0: # %entry75; CHECK-P9-NEXT: lis r4, 152576; CHECK-P9-NEXT: ori r4, r4, 5660077; CHECK-P9-NEXT: lxsibzx f0, r3, r478; CHECK-P9-NEXT: xscvuxddp f1, f079; CHECK-P9-NEXT: blr80;81; CHECK-P8-LABEL: ld_align32_double_uint8_t:82; CHECK-P8: # %bb.0: # %entry83; CHECK-P8-NEXT: lis r4, 152584; CHECK-P8-NEXT: ori r4, r4, 5660085; CHECK-P8-NEXT: lbzx r3, r3, r486; CHECK-P8-NEXT: mtfprwz f0, r387; CHECK-P8-NEXT: xscvuxddp f1, f088; CHECK-P8-NEXT: blr89entry:90 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 9999900091 %0 = load i8, ptr %add.ptr, align 192 %conv = uitofp i8 %0 to double93 ret double %conv94}95 96; Function Attrs: norecurse nounwind readonly uwtable willreturn97define dso_local double @ld_align64_double_uint8_t(ptr nocapture readonly %ptr) {98; CHECK-P10-LABEL: ld_align64_double_uint8_t:99; CHECK-P10: # %bb.0: # %entry100; CHECK-P10-NEXT: pli r4, 244140625101; CHECK-P10-NEXT: rldic r4, r4, 12, 24102; CHECK-P10-NEXT: lxsibzx f0, r3, r4103; CHECK-P10-NEXT: xscvuxddp f1, f0104; CHECK-P10-NEXT: blr105;106; CHECK-P9-LABEL: ld_align64_double_uint8_t:107; CHECK-P9: # %bb.0: # %entry108; CHECK-P9-NEXT: lis r4, 3725109; CHECK-P9-NEXT: ori r4, r4, 19025110; CHECK-P9-NEXT: rldic r4, r4, 12, 24111; CHECK-P9-NEXT: lxsibzx f0, r3, r4112; CHECK-P9-NEXT: xscvuxddp f1, f0113; CHECK-P9-NEXT: blr114;115; CHECK-P8-LABEL: ld_align64_double_uint8_t:116; CHECK-P8: # %bb.0: # %entry117; CHECK-P8-NEXT: lis r4, 3725118; CHECK-P8-NEXT: ori r4, r4, 19025119; CHECK-P8-NEXT: rldic r4, r4, 12, 24120; CHECK-P8-NEXT: lbzx r3, r3, r4121; CHECK-P8-NEXT: mtfprwz f0, r3122; CHECK-P8-NEXT: xscvuxddp f1, f0123; CHECK-P8-NEXT: blr124entry:125 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000126 %0 = load i8, ptr %add.ptr, align 1127 %conv = uitofp i8 %0 to double128 ret double %conv129}130 131; Function Attrs: norecurse nounwind readonly uwtable willreturn132define dso_local double @ld_reg_double_uint8_t(ptr nocapture readonly %ptr, i64 %off) {133; CHECK-POSTP8-LABEL: ld_reg_double_uint8_t:134; CHECK-POSTP8: # %bb.0: # %entry135; CHECK-POSTP8-NEXT: lxsibzx f0, r3, r4136; CHECK-POSTP8-NEXT: xscvuxddp f1, f0137; CHECK-POSTP8-NEXT: blr138;139; CHECK-P8-LABEL: ld_reg_double_uint8_t:140; CHECK-P8: # %bb.0: # %entry141; CHECK-P8-NEXT: lbzx r3, r3, r4142; CHECK-P8-NEXT: mtfprwz f0, r3143; CHECK-P8-NEXT: xscvuxddp f1, f0144; CHECK-P8-NEXT: blr145entry:146 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off147 %0 = load i8, ptr %add.ptr, align 1148 %conv = uitofp i8 %0 to double149 ret double %conv150}151 152; Function Attrs: norecurse nounwind readonly uwtable willreturn153define dso_local double @ld_or_double_uint8_t(i64 %ptr, i8 zeroext %off) {154; CHECK-POSTP8-LABEL: ld_or_double_uint8_t:155; CHECK-POSTP8: # %bb.0: # %entry156; CHECK-POSTP8-NEXT: or r3, r4, r3157; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r3158; CHECK-POSTP8-NEXT: xscvuxddp f1, f0159; CHECK-POSTP8-NEXT: blr160;161; CHECK-P8-LABEL: ld_or_double_uint8_t:162; CHECK-P8: # %bb.0: # %entry163; CHECK-P8-NEXT: or r3, r4, r3164; CHECK-P8-NEXT: lbz r3, 0(r3)165; CHECK-P8-NEXT: mtfprwz f0, r3166; CHECK-P8-NEXT: xscvuxddp f1, f0167; CHECK-P8-NEXT: blr168entry:169 %conv = zext i8 %off to i64170 %or = or i64 %conv, %ptr171 %0 = inttoptr i64 %or to ptr172 %1 = load i8, ptr %0, align 1173 %conv1 = uitofp i8 %1 to double174 ret double %conv1175}176 177; Function Attrs: norecurse nounwind readonly uwtable willreturn178define dso_local double @ld_not_disjoint16_double_uint8_t(i64 %ptr) {179; CHECK-POSTP8-LABEL: ld_not_disjoint16_double_uint8_t:180; CHECK-POSTP8: # %bb.0: # %entry181; CHECK-POSTP8-NEXT: ori r3, r3, 6182; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r3183; CHECK-POSTP8-NEXT: xscvuxddp f1, f0184; CHECK-POSTP8-NEXT: blr185;186; CHECK-P8-LABEL: ld_not_disjoint16_double_uint8_t:187; CHECK-P8: # %bb.0: # %entry188; CHECK-P8-NEXT: ori r3, r3, 6189; CHECK-P8-NEXT: lbz r3, 0(r3)190; CHECK-P8-NEXT: mtfprwz f0, r3191; CHECK-P8-NEXT: xscvuxddp f1, f0192; CHECK-P8-NEXT: blr193entry:194 %or = or i64 %ptr, 6195 %0 = inttoptr i64 %or to ptr196 %1 = load i8, ptr %0, align 1197 %conv = uitofp i8 %1 to double198 ret double %conv199}200 201; Function Attrs: norecurse nounwind readonly uwtable willreturn202define dso_local double @ld_disjoint_align16_double_uint8_t(i64 %ptr) {203; CHECK-POSTP8-LABEL: ld_disjoint_align16_double_uint8_t:204; CHECK-POSTP8: # %bb.0: # %entry205; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51206; CHECK-POSTP8-NEXT: ori r3, r3, 24207; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r3208; CHECK-POSTP8-NEXT: xscvuxddp f1, f0209; CHECK-POSTP8-NEXT: blr210;211; CHECK-P8-LABEL: ld_disjoint_align16_double_uint8_t:212; CHECK-P8: # %bb.0: # %entry213; CHECK-P8-NEXT: rldicr r3, r3, 0, 51214; CHECK-P8-NEXT: lbz r3, 24(r3)215; CHECK-P8-NEXT: mtfprwz f0, r3216; CHECK-P8-NEXT: xscvuxddp f1, f0217; CHECK-P8-NEXT: blr218entry:219 %and = and i64 %ptr, -4096220 %or = or i64 %and, 24221 %0 = inttoptr i64 %or to ptr222 %1 = load i8, ptr %0, align 8223 %conv = uitofp i8 %1 to double224 ret double %conv225}226 227; Function Attrs: norecurse nounwind readonly uwtable willreturn228define dso_local double @ld_not_disjoint32_double_uint8_t(i64 %ptr) {229; CHECK-POSTP8-LABEL: ld_not_disjoint32_double_uint8_t:230; CHECK-POSTP8: # %bb.0: # %entry231; CHECK-POSTP8-NEXT: ori r3, r3, 34463232; CHECK-POSTP8-NEXT: oris r3, r3, 1233; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r3234; CHECK-POSTP8-NEXT: xscvuxddp f1, f0235; CHECK-POSTP8-NEXT: blr236;237; CHECK-P8-LABEL: ld_not_disjoint32_double_uint8_t:238; CHECK-P8: # %bb.0: # %entry239; CHECK-P8-NEXT: ori r3, r3, 34463240; CHECK-P8-NEXT: oris r3, r3, 1241; CHECK-P8-NEXT: lbz r3, 0(r3)242; CHECK-P8-NEXT: mtfprwz f0, r3243; CHECK-P8-NEXT: xscvuxddp f1, f0244; CHECK-P8-NEXT: blr245entry:246 %or = or i64 %ptr, 99999247 %0 = inttoptr i64 %or to ptr248 %1 = load i8, ptr %0, align 1249 %conv = uitofp i8 %1 to double250 ret double %conv251}252 253; Function Attrs: norecurse nounwind readonly uwtable willreturn254define dso_local double @ld_disjoint_align32_double_uint8_t(i64 %ptr) {255; CHECK-P10-LABEL: ld_disjoint_align32_double_uint8_t:256; CHECK-P10: # %bb.0: # %entry257; CHECK-P10-NEXT: lis r4, -15264258; CHECK-P10-NEXT: and r3, r3, r4259; CHECK-P10-NEXT: pli r4, 999990000260; CHECK-P10-NEXT: lxsibzx f0, r3, r4261; CHECK-P10-NEXT: xscvuxddp f1, f0262; CHECK-P10-NEXT: blr263;264; CHECK-P9-LABEL: ld_disjoint_align32_double_uint8_t:265; CHECK-P9: # %bb.0: # %entry266; CHECK-P9-NEXT: lis r4, -15264267; CHECK-P9-NEXT: and r3, r3, r4268; CHECK-P9-NEXT: lis r4, 15258269; CHECK-P9-NEXT: ori r4, r4, 41712270; CHECK-P9-NEXT: lxsibzx f0, r3, r4271; CHECK-P9-NEXT: xscvuxddp f1, f0272; CHECK-P9-NEXT: blr273;274; CHECK-P8-LABEL: ld_disjoint_align32_double_uint8_t:275; CHECK-P8: # %bb.0: # %entry276; CHECK-P8-NEXT: lis r4, -15264277; CHECK-P8-NEXT: and r3, r3, r4278; CHECK-P8-NEXT: lis r4, 15258279; CHECK-P8-NEXT: ori r4, r4, 41712280; CHECK-P8-NEXT: lbzx r3, r3, r4281; CHECK-P8-NEXT: mtfprwz f0, r3282; CHECK-P8-NEXT: xscvuxddp f1, f0283; CHECK-P8-NEXT: blr284entry:285 %and = and i64 %ptr, -1000341504286 %or = or i64 %and, 999990000287 %0 = inttoptr i64 %or to ptr288 %1 = load i8, ptr %0, align 16289 %conv = uitofp i8 %1 to double290 ret double %conv291}292 293; Function Attrs: norecurse nounwind readonly uwtable willreturn294define dso_local double @ld_not_disjoint64_double_uint8_t(i64 %ptr) {295; CHECK-P10-LABEL: ld_not_disjoint64_double_uint8_t:296; CHECK-P10: # %bb.0: # %entry297; CHECK-P10-NEXT: pli r4, 232298; CHECK-P10-NEXT: pli r5, 3567587329299; CHECK-P10-NEXT: rldimi r5, r4, 32, 0300; CHECK-P10-NEXT: or r3, r3, r5301; CHECK-P10-NEXT: lxsibzx f0, 0, r3302; CHECK-P10-NEXT: xscvuxddp f1, f0303; CHECK-P10-NEXT: blr304;305; CHECK-P9-LABEL: ld_not_disjoint64_double_uint8_t:306; CHECK-P9: # %bb.0: # %entry307; CHECK-P9-NEXT: li r4, 29308; CHECK-P9-NEXT: rldic r4, r4, 35, 24309; CHECK-P9-NEXT: oris r4, r4, 54437310; CHECK-P9-NEXT: ori r4, r4, 4097311; CHECK-P9-NEXT: or r3, r3, r4312; CHECK-P9-NEXT: lxsibzx f0, 0, r3313; CHECK-P9-NEXT: xscvuxddp f1, f0314; CHECK-P9-NEXT: blr315;316; CHECK-P8-LABEL: ld_not_disjoint64_double_uint8_t:317; CHECK-P8: # %bb.0: # %entry318; CHECK-P8-NEXT: li r4, 29319; CHECK-P8-NEXT: rldic r4, r4, 35, 24320; CHECK-P8-NEXT: oris r4, r4, 54437321; CHECK-P8-NEXT: ori r4, r4, 4097322; CHECK-P8-NEXT: or r3, r3, r4323; CHECK-P8-NEXT: lbz r3, 0(r3)324; CHECK-P8-NEXT: mtfprwz f0, r3325; CHECK-P8-NEXT: xscvuxddp f1, f0326; CHECK-P8-NEXT: blr327entry:328 %or = or i64 %ptr, 1000000000001329 %0 = inttoptr i64 %or to ptr330 %1 = load i8, ptr %0, align 1331 %conv = uitofp i8 %1 to double332 ret double %conv333}334 335; Function Attrs: norecurse nounwind readonly uwtable willreturn336define dso_local double @ld_disjoint_align64_double_uint8_t(i64 %ptr) {337; CHECK-P10-LABEL: ld_disjoint_align64_double_uint8_t:338; CHECK-P10: # %bb.0: # %entry339; CHECK-P10-NEXT: pli r4, 244140625340; CHECK-P10-NEXT: rldicr r3, r3, 0, 23341; CHECK-P10-NEXT: rldic r4, r4, 12, 24342; CHECK-P10-NEXT: lxsibzx f0, r3, r4343; CHECK-P10-NEXT: xscvuxddp f1, f0344; CHECK-P10-NEXT: blr345;346; CHECK-P9-LABEL: ld_disjoint_align64_double_uint8_t:347; CHECK-P9: # %bb.0: # %entry348; CHECK-P9-NEXT: lis r4, 3725349; CHECK-P9-NEXT: rldicr r3, r3, 0, 23350; CHECK-P9-NEXT: ori r4, r4, 19025351; CHECK-P9-NEXT: rldic r4, r4, 12, 24352; CHECK-P9-NEXT: lxsibzx f0, r3, r4353; CHECK-P9-NEXT: xscvuxddp f1, f0354; CHECK-P9-NEXT: blr355;356; CHECK-P8-LABEL: ld_disjoint_align64_double_uint8_t:357; CHECK-P8: # %bb.0: # %entry358; CHECK-P8-NEXT: lis r4, 3725359; CHECK-P8-NEXT: rldicr r3, r3, 0, 23360; CHECK-P8-NEXT: ori r4, r4, 19025361; CHECK-P8-NEXT: rldic r4, r4, 12, 24362; CHECK-P8-NEXT: lbzx r3, r3, r4363; CHECK-P8-NEXT: mtfprwz f0, r3364; CHECK-P8-NEXT: xscvuxddp f1, f0365; CHECK-P8-NEXT: blr366entry:367 %and = and i64 %ptr, -1099511627776368 %or = or i64 %and, 1000000000000369 %0 = inttoptr i64 %or to ptr370 %1 = load i8, ptr %0, align 4096371 %conv = uitofp i8 %1 to double372 ret double %conv373}374 375; Function Attrs: norecurse nounwind readonly uwtable willreturn376define dso_local double @ld_cst_align16_double_uint8_t() {377; CHECK-POSTP8-LABEL: ld_cst_align16_double_uint8_t:378; CHECK-POSTP8: # %bb.0: # %entry379; CHECK-POSTP8-NEXT: li r3, 4080380; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r3381; CHECK-POSTP8-NEXT: xscvuxddp f1, f0382; CHECK-POSTP8-NEXT: blr383;384; CHECK-P8-LABEL: ld_cst_align16_double_uint8_t:385; CHECK-P8: # %bb.0: # %entry386; CHECK-P8-NEXT: lbz r3, 4080(0)387; CHECK-P8-NEXT: mtfprwz f0, r3388; CHECK-P8-NEXT: xscvuxddp f1, f0389; CHECK-P8-NEXT: blr390entry:391 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 16392 %conv = uitofp i8 %0 to double393 ret double %conv394}395 396; Function Attrs: norecurse nounwind readonly uwtable willreturn397define dso_local double @ld_cst_align32_double_uint8_t() {398; CHECK-P10-LABEL: ld_cst_align32_double_uint8_t:399; CHECK-P10: # %bb.0: # %entry400; CHECK-P10-NEXT: pli r3, 9999900401; CHECK-P10-NEXT: lxsibzx f0, 0, r3402; CHECK-P10-NEXT: xscvuxddp f1, f0403; CHECK-P10-NEXT: blr404;405; CHECK-P9-LABEL: ld_cst_align32_double_uint8_t:406; CHECK-P9: # %bb.0: # %entry407; CHECK-P9-NEXT: lis r3, 152408; CHECK-P9-NEXT: ori r3, r3, 38428409; CHECK-P9-NEXT: lxsibzx f0, 0, r3410; CHECK-P9-NEXT: xscvuxddp f1, f0411; CHECK-P9-NEXT: blr412;413; CHECK-P8-LABEL: ld_cst_align32_double_uint8_t:414; CHECK-P8: # %bb.0: # %entry415; CHECK-P8-NEXT: lis r3, 153416; CHECK-P8-NEXT: lbz r3, -27108(r3)417; CHECK-P8-NEXT: mtfprwz f0, r3418; CHECK-P8-NEXT: xscvuxddp f1, f0419; CHECK-P8-NEXT: blr420entry:421 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 4422 %conv = uitofp i8 %0 to double423 ret double %conv424}425 426; Function Attrs: norecurse nounwind readonly uwtable willreturn427define dso_local double @ld_cst_align64_double_uint8_t() {428; CHECK-P10-LABEL: ld_cst_align64_double_uint8_t:429; CHECK-P10: # %bb.0: # %entry430; CHECK-P10-NEXT: pli r3, 244140625431; CHECK-P10-NEXT: rldic r3, r3, 12, 24432; CHECK-P10-NEXT: lxsibzx f0, 0, r3433; CHECK-P10-NEXT: xscvuxddp f1, f0434; CHECK-P10-NEXT: blr435;436; CHECK-P9-LABEL: ld_cst_align64_double_uint8_t:437; CHECK-P9: # %bb.0: # %entry438; CHECK-P9-NEXT: lis r3, 3725439; CHECK-P9-NEXT: ori r3, r3, 19025440; CHECK-P9-NEXT: rldic r3, r3, 12, 24441; CHECK-P9-NEXT: lxsibzx f0, 0, r3442; CHECK-P9-NEXT: xscvuxddp f1, f0443; CHECK-P9-NEXT: blr444;445; CHECK-P8-LABEL: ld_cst_align64_double_uint8_t:446; CHECK-P8: # %bb.0: # %entry447; CHECK-P8-NEXT: lis r3, 3725448; CHECK-P8-NEXT: ori r3, r3, 19025449; CHECK-P8-NEXT: rldic r3, r3, 12, 24450; CHECK-P8-NEXT: lbz r3, 0(r3)451; CHECK-P8-NEXT: mtfprwz f0, r3452; CHECK-P8-NEXT: xscvuxddp f1, f0453; CHECK-P8-NEXT: blr454entry:455 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 4096456 %conv = uitofp i8 %0 to double457 ret double %conv458}459 460; Function Attrs: norecurse nounwind readonly uwtable willreturn461define dso_local double @ld_0_double_int8_t(i64 %ptr) {462; CHECK-POSTP8-LABEL: ld_0_double_int8_t:463; CHECK-POSTP8: # %bb.0: # %entry464; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3465; CHECK-POSTP8-NEXT: vextsb2d v2, v2466; CHECK-POSTP8-NEXT: xscvsxddp f1, v2467; CHECK-POSTP8-NEXT: blr468;469; CHECK-P8-LABEL: ld_0_double_int8_t:470; CHECK-P8: # %bb.0: # %entry471; CHECK-P8-NEXT: lbz r3, 0(r3)472; CHECK-P8-NEXT: extsb r3, r3473; CHECK-P8-NEXT: mtfprwa f0, r3474; CHECK-P8-NEXT: xscvsxddp f1, f0475; CHECK-P8-NEXT: blr476entry:477 %0 = inttoptr i64 %ptr to ptr478 %1 = load i8, ptr %0, align 1479 %conv = sitofp i8 %1 to double480 ret double %conv481}482 483; Function Attrs: norecurse nounwind readonly uwtable willreturn484define dso_local double @ld_align16_double_int8_t(ptr nocapture readonly %ptr) {485; CHECK-POSTP8-LABEL: ld_align16_double_int8_t:486; CHECK-POSTP8: # %bb.0: # %entry487; CHECK-POSTP8-NEXT: addi r3, r3, 8488; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3489; CHECK-POSTP8-NEXT: vextsb2d v2, v2490; CHECK-POSTP8-NEXT: xscvsxddp f1, v2491; CHECK-POSTP8-NEXT: blr492;493; CHECK-P8-LABEL: ld_align16_double_int8_t:494; CHECK-P8: # %bb.0: # %entry495; CHECK-P8-NEXT: lbz r3, 8(r3)496; CHECK-P8-NEXT: extsb r3, r3497; CHECK-P8-NEXT: mtfprwa f0, r3498; CHECK-P8-NEXT: xscvsxddp f1, f0499; CHECK-P8-NEXT: blr500entry:501 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8502 %0 = load i8, ptr %add.ptr, align 1503 %conv = sitofp i8 %0 to double504 ret double %conv505}506 507; Function Attrs: norecurse nounwind readonly uwtable willreturn508define dso_local double @ld_align32_double_int8_t(ptr nocapture readonly %ptr) {509; CHECK-P10-LABEL: ld_align32_double_int8_t:510; CHECK-P10: # %bb.0: # %entry511; CHECK-P10-NEXT: pli r4, 99999000512; CHECK-P10-NEXT: lxsibzx v2, r3, r4513; CHECK-P10-NEXT: vextsb2d v2, v2514; CHECK-P10-NEXT: xscvsxddp f1, v2515; CHECK-P10-NEXT: blr516;517; CHECK-P9-LABEL: ld_align32_double_int8_t:518; CHECK-P9: # %bb.0: # %entry519; CHECK-P9-NEXT: lis r4, 1525520; CHECK-P9-NEXT: ori r4, r4, 56600521; CHECK-P9-NEXT: lxsibzx v2, r3, r4522; CHECK-P9-NEXT: vextsb2d v2, v2523; CHECK-P9-NEXT: xscvsxddp f1, v2524; CHECK-P9-NEXT: blr525;526; CHECK-P8-LABEL: ld_align32_double_int8_t:527; CHECK-P8: # %bb.0: # %entry528; CHECK-P8-NEXT: lis r4, 1525529; CHECK-P8-NEXT: ori r4, r4, 56600530; CHECK-P8-NEXT: lbzx r3, r3, r4531; CHECK-P8-NEXT: extsb r3, r3532; CHECK-P8-NEXT: mtfprwa f0, r3533; CHECK-P8-NEXT: xscvsxddp f1, f0534; CHECK-P8-NEXT: blr535entry:536 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 99999000537 %0 = load i8, ptr %add.ptr, align 1538 %conv = sitofp i8 %0 to double539 ret double %conv540}541 542; Function Attrs: norecurse nounwind readonly uwtable willreturn543define dso_local double @ld_align64_double_int8_t(ptr nocapture readonly %ptr) {544; CHECK-P10-LABEL: ld_align64_double_int8_t:545; CHECK-P10: # %bb.0: # %entry546; CHECK-P10-NEXT: pli r4, 244140625547; CHECK-P10-NEXT: rldic r4, r4, 12, 24548; CHECK-P10-NEXT: lxsibzx v2, r3, r4549; CHECK-P10-NEXT: vextsb2d v2, v2550; CHECK-P10-NEXT: xscvsxddp f1, v2551; CHECK-P10-NEXT: blr552;553; CHECK-P9-LABEL: ld_align64_double_int8_t:554; CHECK-P9: # %bb.0: # %entry555; CHECK-P9-NEXT: lis r4, 3725556; CHECK-P9-NEXT: ori r4, r4, 19025557; CHECK-P9-NEXT: rldic r4, r4, 12, 24558; CHECK-P9-NEXT: lxsibzx v2, r3, r4559; CHECK-P9-NEXT: vextsb2d v2, v2560; CHECK-P9-NEXT: xscvsxddp f1, v2561; CHECK-P9-NEXT: blr562;563; CHECK-P8-LABEL: ld_align64_double_int8_t:564; CHECK-P8: # %bb.0: # %entry565; CHECK-P8-NEXT: lis r4, 3725566; CHECK-P8-NEXT: ori r4, r4, 19025567; CHECK-P8-NEXT: rldic r4, r4, 12, 24568; CHECK-P8-NEXT: lbzx r3, r3, r4569; CHECK-P8-NEXT: extsb r3, r3570; CHECK-P8-NEXT: mtfprwa f0, r3571; CHECK-P8-NEXT: xscvsxddp f1, f0572; CHECK-P8-NEXT: blr573entry:574 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 1000000000000575 %0 = load i8, ptr %add.ptr, align 1576 %conv = sitofp i8 %0 to double577 ret double %conv578}579 580; Function Attrs: norecurse nounwind readonly uwtable willreturn581define dso_local double @ld_reg_double_int8_t(ptr nocapture readonly %ptr, i64 %off) {582; CHECK-POSTP8-LABEL: ld_reg_double_int8_t:583; CHECK-POSTP8: # %bb.0: # %entry584; CHECK-POSTP8-NEXT: lxsibzx v2, r3, r4585; CHECK-POSTP8-NEXT: vextsb2d v2, v2586; CHECK-POSTP8-NEXT: xscvsxddp f1, v2587; CHECK-POSTP8-NEXT: blr588;589; CHECK-P8-LABEL: ld_reg_double_int8_t:590; CHECK-P8: # %bb.0: # %entry591; CHECK-P8-NEXT: lbzx r3, r3, r4592; CHECK-P8-NEXT: extsb r3, r3593; CHECK-P8-NEXT: mtfprwa f0, r3594; CHECK-P8-NEXT: xscvsxddp f1, f0595; CHECK-P8-NEXT: blr596entry:597 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off598 %0 = load i8, ptr %add.ptr, align 1599 %conv = sitofp i8 %0 to double600 ret double %conv601}602 603; Function Attrs: norecurse nounwind readonly uwtable willreturn604define dso_local double @ld_or_double_int8_t(i64 %ptr, i8 zeroext %off) {605; CHECK-POSTP8-LABEL: ld_or_double_int8_t:606; CHECK-POSTP8: # %bb.0: # %entry607; CHECK-POSTP8-NEXT: or r3, r4, r3608; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3609; CHECK-POSTP8-NEXT: vextsb2d v2, v2610; CHECK-POSTP8-NEXT: xscvsxddp f1, v2611; CHECK-POSTP8-NEXT: blr612;613; CHECK-P8-LABEL: ld_or_double_int8_t:614; CHECK-P8: # %bb.0: # %entry615; CHECK-P8-NEXT: or r3, r4, r3616; CHECK-P8-NEXT: lbz r3, 0(r3)617; CHECK-P8-NEXT: extsb r3, r3618; CHECK-P8-NEXT: mtfprwa f0, r3619; CHECK-P8-NEXT: xscvsxddp f1, f0620; CHECK-P8-NEXT: blr621entry:622 %conv = zext i8 %off to i64623 %or = or i64 %conv, %ptr624 %0 = inttoptr i64 %or to ptr625 %1 = load i8, ptr %0, align 1626 %conv1 = sitofp i8 %1 to double627 ret double %conv1628}629 630; Function Attrs: norecurse nounwind readonly uwtable willreturn631define dso_local double @ld_not_disjoint16_double_int8_t(i64 %ptr) {632; CHECK-POSTP8-LABEL: ld_not_disjoint16_double_int8_t:633; CHECK-POSTP8: # %bb.0: # %entry634; CHECK-POSTP8-NEXT: ori r3, r3, 6635; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3636; CHECK-POSTP8-NEXT: vextsb2d v2, v2637; CHECK-POSTP8-NEXT: xscvsxddp f1, v2638; CHECK-POSTP8-NEXT: blr639;640; CHECK-P8-LABEL: ld_not_disjoint16_double_int8_t:641; CHECK-P8: # %bb.0: # %entry642; CHECK-P8-NEXT: ori r3, r3, 6643; CHECK-P8-NEXT: lbz r3, 0(r3)644; CHECK-P8-NEXT: extsb r3, r3645; CHECK-P8-NEXT: mtfprwa f0, r3646; CHECK-P8-NEXT: xscvsxddp f1, f0647; CHECK-P8-NEXT: blr648entry:649 %or = or i64 %ptr, 6650 %0 = inttoptr i64 %or to ptr651 %1 = load i8, ptr %0, align 1652 %conv = sitofp i8 %1 to double653 ret double %conv654}655 656; Function Attrs: norecurse nounwind readonly uwtable willreturn657define dso_local double @ld_disjoint_align16_double_int8_t(i64 %ptr) {658; CHECK-POSTP8-LABEL: ld_disjoint_align16_double_int8_t:659; CHECK-POSTP8: # %bb.0: # %entry660; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51661; CHECK-POSTP8-NEXT: ori r3, r3, 24662; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3663; CHECK-POSTP8-NEXT: vextsb2d v2, v2664; CHECK-POSTP8-NEXT: xscvsxddp f1, v2665; CHECK-POSTP8-NEXT: blr666;667; CHECK-P8-LABEL: ld_disjoint_align16_double_int8_t:668; CHECK-P8: # %bb.0: # %entry669; CHECK-P8-NEXT: rldicr r3, r3, 0, 51670; CHECK-P8-NEXT: lbz r3, 24(r3)671; CHECK-P8-NEXT: extsb r3, r3672; CHECK-P8-NEXT: mtfprwa f0, r3673; CHECK-P8-NEXT: xscvsxddp f1, f0674; CHECK-P8-NEXT: blr675entry:676 %and = and i64 %ptr, -4096677 %or = or i64 %and, 24678 %0 = inttoptr i64 %or to ptr679 %1 = load i8, ptr %0, align 8680 %conv = sitofp i8 %1 to double681 ret double %conv682}683 684; Function Attrs: norecurse nounwind readonly uwtable willreturn685define dso_local double @ld_not_disjoint32_double_int8_t(i64 %ptr) {686; CHECK-POSTP8-LABEL: ld_not_disjoint32_double_int8_t:687; CHECK-POSTP8: # %bb.0: # %entry688; CHECK-POSTP8-NEXT: ori r3, r3, 34463689; CHECK-POSTP8-NEXT: oris r3, r3, 1690; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3691; CHECK-POSTP8-NEXT: vextsb2d v2, v2692; CHECK-POSTP8-NEXT: xscvsxddp f1, v2693; CHECK-POSTP8-NEXT: blr694;695; CHECK-P8-LABEL: ld_not_disjoint32_double_int8_t:696; CHECK-P8: # %bb.0: # %entry697; CHECK-P8-NEXT: ori r3, r3, 34463698; CHECK-P8-NEXT: oris r3, r3, 1699; CHECK-P8-NEXT: lbz r3, 0(r3)700; CHECK-P8-NEXT: extsb r3, r3701; CHECK-P8-NEXT: mtfprwa f0, r3702; CHECK-P8-NEXT: xscvsxddp f1, f0703; CHECK-P8-NEXT: blr704entry:705 %or = or i64 %ptr, 99999706 %0 = inttoptr i64 %or to ptr707 %1 = load i8, ptr %0, align 1708 %conv = sitofp i8 %1 to double709 ret double %conv710}711 712; Function Attrs: norecurse nounwind readonly uwtable willreturn713define dso_local double @ld_disjoint_align32_double_int8_t(i64 %ptr) {714; CHECK-P10-LABEL: ld_disjoint_align32_double_int8_t:715; CHECK-P10: # %bb.0: # %entry716; CHECK-P10-NEXT: lis r4, -15264717; CHECK-P10-NEXT: and r3, r3, r4718; CHECK-P10-NEXT: pli r4, 999990000719; CHECK-P10-NEXT: lxsibzx v2, r3, r4720; CHECK-P10-NEXT: vextsb2d v2, v2721; CHECK-P10-NEXT: xscvsxddp f1, v2722; CHECK-P10-NEXT: blr723;724; CHECK-P9-LABEL: ld_disjoint_align32_double_int8_t:725; CHECK-P9: # %bb.0: # %entry726; CHECK-P9-NEXT: lis r4, -15264727; CHECK-P9-NEXT: and r3, r3, r4728; CHECK-P9-NEXT: lis r4, 15258729; CHECK-P9-NEXT: ori r4, r4, 41712730; CHECK-P9-NEXT: lxsibzx v2, r3, r4731; CHECK-P9-NEXT: vextsb2d v2, v2732; CHECK-P9-NEXT: xscvsxddp f1, v2733; CHECK-P9-NEXT: blr734;735; CHECK-P8-LABEL: ld_disjoint_align32_double_int8_t:736; CHECK-P8: # %bb.0: # %entry737; CHECK-P8-NEXT: lis r4, -15264738; CHECK-P8-NEXT: and r3, r3, r4739; CHECK-P8-NEXT: lis r4, 15258740; CHECK-P8-NEXT: ori r4, r4, 41712741; CHECK-P8-NEXT: lbzx r3, r3, r4742; CHECK-P8-NEXT: extsb r3, r3743; CHECK-P8-NEXT: mtfprwa f0, r3744; CHECK-P8-NEXT: xscvsxddp f1, f0745; CHECK-P8-NEXT: blr746entry:747 %and = and i64 %ptr, -1000341504748 %or = or i64 %and, 999990000749 %0 = inttoptr i64 %or to ptr750 %1 = load i8, ptr %0, align 16751 %conv = sitofp i8 %1 to double752 ret double %conv753}754 755; Function Attrs: norecurse nounwind readonly uwtable willreturn756define dso_local double @ld_not_disjoint64_double_int8_t(i64 %ptr) {757; CHECK-P10-LABEL: ld_not_disjoint64_double_int8_t:758; CHECK-P10: # %bb.0: # %entry759; CHECK-P10-NEXT: pli r4, 232760; CHECK-P10-NEXT: pli r5, 3567587329761; CHECK-P10-NEXT: rldimi r5, r4, 32, 0762; CHECK-P10-NEXT: or r3, r3, r5763; CHECK-P10-NEXT: lxsibzx v2, 0, r3764; CHECK-P10-NEXT: vextsb2d v2, v2765; CHECK-P10-NEXT: xscvsxddp f1, v2766; CHECK-P10-NEXT: blr767;768; CHECK-P9-LABEL: ld_not_disjoint64_double_int8_t:769; CHECK-P9: # %bb.0: # %entry770; CHECK-P9-NEXT: li r4, 29771; CHECK-P9-NEXT: rldic r4, r4, 35, 24772; CHECK-P9-NEXT: oris r4, r4, 54437773; CHECK-P9-NEXT: ori r4, r4, 4097774; CHECK-P9-NEXT: or r3, r3, r4775; CHECK-P9-NEXT: lxsibzx v2, 0, r3776; CHECK-P9-NEXT: vextsb2d v2, v2777; CHECK-P9-NEXT: xscvsxddp f1, v2778; CHECK-P9-NEXT: blr779;780; CHECK-P8-LABEL: ld_not_disjoint64_double_int8_t:781; CHECK-P8: # %bb.0: # %entry782; CHECK-P8-NEXT: li r4, 29783; CHECK-P8-NEXT: rldic r4, r4, 35, 24784; CHECK-P8-NEXT: oris r4, r4, 54437785; CHECK-P8-NEXT: ori r4, r4, 4097786; CHECK-P8-NEXT: or r3, r3, r4787; CHECK-P8-NEXT: lbz r3, 0(r3)788; CHECK-P8-NEXT: extsb r3, r3789; CHECK-P8-NEXT: mtfprwa f0, r3790; CHECK-P8-NEXT: xscvsxddp f1, f0791; CHECK-P8-NEXT: blr792entry:793 %or = or i64 %ptr, 1000000000001794 %0 = inttoptr i64 %or to ptr795 %1 = load i8, ptr %0, align 1796 %conv = sitofp i8 %1 to double797 ret double %conv798}799 800; Function Attrs: norecurse nounwind readonly uwtable willreturn801define dso_local double @ld_disjoint_align64_double_int8_t(i64 %ptr) {802; CHECK-P10-LABEL: ld_disjoint_align64_double_int8_t:803; CHECK-P10: # %bb.0: # %entry804; CHECK-P10-NEXT: pli r4, 244140625805; CHECK-P10-NEXT: rldicr r3, r3, 0, 23806; CHECK-P10-NEXT: rldic r4, r4, 12, 24807; CHECK-P10-NEXT: lxsibzx v2, r3, r4808; CHECK-P10-NEXT: vextsb2d v2, v2809; CHECK-P10-NEXT: xscvsxddp f1, v2810; CHECK-P10-NEXT: blr811;812; CHECK-P9-LABEL: ld_disjoint_align64_double_int8_t:813; CHECK-P9: # %bb.0: # %entry814; CHECK-P9-NEXT: lis r4, 3725815; CHECK-P9-NEXT: rldicr r3, r3, 0, 23816; CHECK-P9-NEXT: ori r4, r4, 19025817; CHECK-P9-NEXT: rldic r4, r4, 12, 24818; CHECK-P9-NEXT: lxsibzx v2, r3, r4819; CHECK-P9-NEXT: vextsb2d v2, v2820; CHECK-P9-NEXT: xscvsxddp f1, v2821; CHECK-P9-NEXT: blr822;823; CHECK-P8-LABEL: ld_disjoint_align64_double_int8_t:824; CHECK-P8: # %bb.0: # %entry825; CHECK-P8-NEXT: lis r4, 3725826; CHECK-P8-NEXT: rldicr r3, r3, 0, 23827; CHECK-P8-NEXT: ori r4, r4, 19025828; CHECK-P8-NEXT: rldic r4, r4, 12, 24829; CHECK-P8-NEXT: lbzx r3, r3, r4830; CHECK-P8-NEXT: extsb r3, r3831; CHECK-P8-NEXT: mtfprwa f0, r3832; CHECK-P8-NEXT: xscvsxddp f1, f0833; CHECK-P8-NEXT: blr834entry:835 %and = and i64 %ptr, -1099511627776836 %or = or i64 %and, 1000000000000837 %0 = inttoptr i64 %or to ptr838 %1 = load i8, ptr %0, align 4096839 %conv = sitofp i8 %1 to double840 ret double %conv841}842 843; Function Attrs: norecurse nounwind readonly uwtable willreturn844define dso_local double @ld_cst_align16_double_int8_t() {845; CHECK-POSTP8-LABEL: ld_cst_align16_double_int8_t:846; CHECK-POSTP8: # %bb.0: # %entry847; CHECK-POSTP8-NEXT: li r3, 4080848; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3849; CHECK-POSTP8-NEXT: vextsb2d v2, v2850; CHECK-POSTP8-NEXT: xscvsxddp f1, v2851; CHECK-POSTP8-NEXT: blr852;853; CHECK-P8-LABEL: ld_cst_align16_double_int8_t:854; CHECK-P8: # %bb.0: # %entry855; CHECK-P8-NEXT: lbz r3, 4080(0)856; CHECK-P8-NEXT: extsb r3, r3857; CHECK-P8-NEXT: mtfprwa f0, r3858; CHECK-P8-NEXT: xscvsxddp f1, f0859; CHECK-P8-NEXT: blr860entry:861 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 16862 %conv = sitofp i8 %0 to double863 ret double %conv864}865 866; Function Attrs: norecurse nounwind readonly uwtable willreturn867define dso_local double @ld_cst_align32_double_int8_t() {868; CHECK-P10-LABEL: ld_cst_align32_double_int8_t:869; CHECK-P10: # %bb.0: # %entry870; CHECK-P10-NEXT: pli r3, 9999900871; CHECK-P10-NEXT: lxsibzx v2, 0, r3872; CHECK-P10-NEXT: vextsb2d v2, v2873; CHECK-P10-NEXT: xscvsxddp f1, v2874; CHECK-P10-NEXT: blr875;876; CHECK-P9-LABEL: ld_cst_align32_double_int8_t:877; CHECK-P9: # %bb.0: # %entry878; CHECK-P9-NEXT: lis r3, 152879; CHECK-P9-NEXT: ori r3, r3, 38428880; CHECK-P9-NEXT: lxsibzx v2, 0, r3881; CHECK-P9-NEXT: vextsb2d v2, v2882; CHECK-P9-NEXT: xscvsxddp f1, v2883; CHECK-P9-NEXT: blr884;885; CHECK-P8-LABEL: ld_cst_align32_double_int8_t:886; CHECK-P8: # %bb.0: # %entry887; CHECK-P8-NEXT: lis r3, 153888; CHECK-P8-NEXT: lbz r3, -27108(r3)889; CHECK-P8-NEXT: extsb r3, r3890; CHECK-P8-NEXT: mtfprwa f0, r3891; CHECK-P8-NEXT: xscvsxddp f1, f0892; CHECK-P8-NEXT: blr893entry:894 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 4895 %conv = sitofp i8 %0 to double896 ret double %conv897}898 899; Function Attrs: norecurse nounwind readonly uwtable willreturn900define dso_local double @ld_cst_align64_double_int8_t() {901; CHECK-P10-LABEL: ld_cst_align64_double_int8_t:902; CHECK-P10: # %bb.0: # %entry903; CHECK-P10-NEXT: pli r3, 244140625904; CHECK-P10-NEXT: rldic r3, r3, 12, 24905; CHECK-P10-NEXT: lxsibzx v2, 0, r3906; CHECK-P10-NEXT: vextsb2d v2, v2907; CHECK-P10-NEXT: xscvsxddp f1, v2908; CHECK-P10-NEXT: blr909;910; CHECK-P9-LABEL: ld_cst_align64_double_int8_t:911; CHECK-P9: # %bb.0: # %entry912; CHECK-P9-NEXT: lis r3, 3725913; CHECK-P9-NEXT: ori r3, r3, 19025914; CHECK-P9-NEXT: rldic r3, r3, 12, 24915; CHECK-P9-NEXT: lxsibzx v2, 0, r3916; CHECK-P9-NEXT: vextsb2d v2, v2917; CHECK-P9-NEXT: xscvsxddp f1, v2918; CHECK-P9-NEXT: blr919;920; CHECK-P8-LABEL: ld_cst_align64_double_int8_t:921; CHECK-P8: # %bb.0: # %entry922; CHECK-P8-NEXT: lis r3, 3725923; CHECK-P8-NEXT: ori r3, r3, 19025924; CHECK-P8-NEXT: rldic r3, r3, 12, 24925; CHECK-P8-NEXT: lbz r3, 0(r3)926; CHECK-P8-NEXT: extsb r3, r3927; CHECK-P8-NEXT: mtfprwa f0, r3928; CHECK-P8-NEXT: xscvsxddp f1, f0929; CHECK-P8-NEXT: blr930entry:931 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 4096932 %conv = sitofp i8 %0 to double933 ret double %conv934}935 936; Function Attrs: norecurse nounwind readonly uwtable willreturn937define dso_local double @ld_0_double_uint16_t(i64 %ptr) {938; CHECK-POSTP8-LABEL: ld_0_double_uint16_t:939; CHECK-POSTP8: # %bb.0: # %entry940; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r3941; CHECK-POSTP8-NEXT: xscvuxddp f1, f0942; CHECK-POSTP8-NEXT: blr943;944; CHECK-P8-LABEL: ld_0_double_uint16_t:945; CHECK-P8: # %bb.0: # %entry946; CHECK-P8-NEXT: lhz r3, 0(r3)947; CHECK-P8-NEXT: mtfprwz f0, r3948; CHECK-P8-NEXT: xscvuxddp f1, f0949; CHECK-P8-NEXT: blr950entry:951 %0 = inttoptr i64 %ptr to ptr952 %1 = load i16, ptr %0, align 2953 %conv = uitofp i16 %1 to double954 ret double %conv955}956 957; Function Attrs: norecurse nounwind readonly uwtable willreturn958define dso_local double @ld_align16_double_uint16_t(ptr nocapture readonly %ptr) {959; CHECK-POSTP8-LABEL: ld_align16_double_uint16_t:960; CHECK-POSTP8: # %bb.0: # %entry961; CHECK-POSTP8-NEXT: addi r3, r3, 8962; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r3963; CHECK-POSTP8-NEXT: xscvuxddp f1, f0964; CHECK-POSTP8-NEXT: blr965;966; CHECK-P8-LABEL: ld_align16_double_uint16_t:967; CHECK-P8: # %bb.0: # %entry968; CHECK-P8-NEXT: lhz r3, 8(r3)969; CHECK-P8-NEXT: mtfprwz f0, r3970; CHECK-P8-NEXT: xscvuxddp f1, f0971; CHECK-P8-NEXT: blr972entry:973 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 8974 %0 = load i16, ptr %add.ptr, align 2975 %conv = uitofp i16 %0 to double976 ret double %conv977}978 979; Function Attrs: norecurse nounwind readonly uwtable willreturn980define dso_local double @ld_align32_double_uint16_t(ptr nocapture readonly %ptr) {981; CHECK-P10-LABEL: ld_align32_double_uint16_t:982; CHECK-P10: # %bb.0: # %entry983; CHECK-P10-NEXT: pli r4, 99999000984; CHECK-P10-NEXT: lxsihzx f0, r3, r4985; CHECK-P10-NEXT: xscvuxddp f1, f0986; CHECK-P10-NEXT: blr987;988; CHECK-P9-LABEL: ld_align32_double_uint16_t:989; CHECK-P9: # %bb.0: # %entry990; CHECK-P9-NEXT: lis r4, 1525991; CHECK-P9-NEXT: ori r4, r4, 56600992; CHECK-P9-NEXT: lxsihzx f0, r3, r4993; CHECK-P9-NEXT: xscvuxddp f1, f0994; CHECK-P9-NEXT: blr995;996; CHECK-P8-LABEL: ld_align32_double_uint16_t:997; CHECK-P8: # %bb.0: # %entry998; CHECK-P8-NEXT: lis r4, 1525999; CHECK-P8-NEXT: ori r4, r4, 566001000; CHECK-P8-NEXT: lhzx r3, r3, r41001; CHECK-P8-NEXT: mtfprwz f0, r31002; CHECK-P8-NEXT: xscvuxddp f1, f01003; CHECK-P8-NEXT: blr1004entry:1005 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001006 %0 = load i16, ptr %add.ptr, align 21007 %conv = uitofp i16 %0 to double1008 ret double %conv1009}1010 1011; Function Attrs: norecurse nounwind readonly uwtable willreturn1012define dso_local double @ld_align64_double_uint16_t(ptr nocapture readonly %ptr) {1013; CHECK-P10-LABEL: ld_align64_double_uint16_t:1014; CHECK-P10: # %bb.0: # %entry1015; CHECK-P10-NEXT: pli r4, 2441406251016; CHECK-P10-NEXT: rldic r4, r4, 12, 241017; CHECK-P10-NEXT: lxsihzx f0, r3, r41018; CHECK-P10-NEXT: xscvuxddp f1, f01019; CHECK-P10-NEXT: blr1020;1021; CHECK-P9-LABEL: ld_align64_double_uint16_t:1022; CHECK-P9: # %bb.0: # %entry1023; CHECK-P9-NEXT: lis r4, 37251024; CHECK-P9-NEXT: ori r4, r4, 190251025; CHECK-P9-NEXT: rldic r4, r4, 12, 241026; CHECK-P9-NEXT: lxsihzx f0, r3, r41027; CHECK-P9-NEXT: xscvuxddp f1, f01028; CHECK-P9-NEXT: blr1029;1030; CHECK-P8-LABEL: ld_align64_double_uint16_t:1031; CHECK-P8: # %bb.0: # %entry1032; CHECK-P8-NEXT: lis r4, 37251033; CHECK-P8-NEXT: ori r4, r4, 190251034; CHECK-P8-NEXT: rldic r4, r4, 12, 241035; CHECK-P8-NEXT: lhzx r3, r3, r41036; CHECK-P8-NEXT: mtfprwz f0, r31037; CHECK-P8-NEXT: xscvuxddp f1, f01038; CHECK-P8-NEXT: blr1039entry:1040 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001041 %0 = load i16, ptr %add.ptr, align 21042 %conv = uitofp i16 %0 to double1043 ret double %conv1044}1045 1046; Function Attrs: norecurse nounwind readonly uwtable willreturn1047define dso_local double @ld_reg_double_uint16_t(ptr nocapture readonly %ptr, i64 %off) {1048; CHECK-POSTP8-LABEL: ld_reg_double_uint16_t:1049; CHECK-POSTP8: # %bb.0: # %entry1050; CHECK-POSTP8-NEXT: lxsihzx f0, r3, r41051; CHECK-POSTP8-NEXT: xscvuxddp f1, f01052; CHECK-POSTP8-NEXT: blr1053;1054; CHECK-P8-LABEL: ld_reg_double_uint16_t:1055; CHECK-P8: # %bb.0: # %entry1056; CHECK-P8-NEXT: lhzx r3, r3, r41057; CHECK-P8-NEXT: mtfprwz f0, r31058; CHECK-P8-NEXT: xscvuxddp f1, f01059; CHECK-P8-NEXT: blr1060entry:1061 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1062 %0 = load i16, ptr %add.ptr, align 21063 %conv = uitofp i16 %0 to double1064 ret double %conv1065}1066 1067; Function Attrs: norecurse nounwind readonly uwtable willreturn1068define dso_local double @ld_or_double_uint16_t(i64 %ptr, i8 zeroext %off) {1069; CHECK-POSTP8-LABEL: ld_or_double_uint16_t:1070; CHECK-POSTP8: # %bb.0: # %entry1071; CHECK-POSTP8-NEXT: or r3, r4, r31072; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r31073; CHECK-POSTP8-NEXT: xscvuxddp f1, f01074; CHECK-POSTP8-NEXT: blr1075;1076; CHECK-P8-LABEL: ld_or_double_uint16_t:1077; CHECK-P8: # %bb.0: # %entry1078; CHECK-P8-NEXT: or r3, r4, r31079; CHECK-P8-NEXT: lhz r3, 0(r3)1080; CHECK-P8-NEXT: mtfprwz f0, r31081; CHECK-P8-NEXT: xscvuxddp f1, f01082; CHECK-P8-NEXT: blr1083entry:1084 %conv = zext i8 %off to i641085 %or = or i64 %conv, %ptr1086 %0 = inttoptr i64 %or to ptr1087 %1 = load i16, ptr %0, align 21088 %conv1 = uitofp i16 %1 to double1089 ret double %conv11090}1091 1092; Function Attrs: norecurse nounwind readonly uwtable willreturn1093define dso_local double @ld_not_disjoint16_double_uint16_t(i64 %ptr) {1094; CHECK-POSTP8-LABEL: ld_not_disjoint16_double_uint16_t:1095; CHECK-POSTP8: # %bb.0: # %entry1096; CHECK-POSTP8-NEXT: ori r3, r3, 61097; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r31098; CHECK-POSTP8-NEXT: xscvuxddp f1, f01099; CHECK-POSTP8-NEXT: blr1100;1101; CHECK-P8-LABEL: ld_not_disjoint16_double_uint16_t:1102; CHECK-P8: # %bb.0: # %entry1103; CHECK-P8-NEXT: ori r3, r3, 61104; CHECK-P8-NEXT: lhz r3, 0(r3)1105; CHECK-P8-NEXT: mtfprwz f0, r31106; CHECK-P8-NEXT: xscvuxddp f1, f01107; CHECK-P8-NEXT: blr1108entry:1109 %or = or i64 %ptr, 61110 %0 = inttoptr i64 %or to ptr1111 %1 = load i16, ptr %0, align 21112 %conv = uitofp i16 %1 to double1113 ret double %conv1114}1115 1116; Function Attrs: norecurse nounwind readonly uwtable willreturn1117define dso_local double @ld_disjoint_align16_double_uint16_t(i64 %ptr) {1118; CHECK-POSTP8-LABEL: ld_disjoint_align16_double_uint16_t:1119; CHECK-POSTP8: # %bb.0: # %entry1120; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 511121; CHECK-POSTP8-NEXT: ori r3, r3, 241122; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r31123; CHECK-POSTP8-NEXT: xscvuxddp f1, f01124; CHECK-POSTP8-NEXT: blr1125;1126; CHECK-P8-LABEL: ld_disjoint_align16_double_uint16_t:1127; CHECK-P8: # %bb.0: # %entry1128; CHECK-P8-NEXT: rldicr r3, r3, 0, 511129; CHECK-P8-NEXT: lhz r3, 24(r3)1130; CHECK-P8-NEXT: mtfprwz f0, r31131; CHECK-P8-NEXT: xscvuxddp f1, f01132; CHECK-P8-NEXT: blr1133entry:1134 %and = and i64 %ptr, -40961135 %or = or i64 %and, 241136 %0 = inttoptr i64 %or to ptr1137 %1 = load i16, ptr %0, align 81138 %conv = uitofp i16 %1 to double1139 ret double %conv1140}1141 1142; Function Attrs: norecurse nounwind readonly uwtable willreturn1143define dso_local double @ld_not_disjoint32_double_uint16_t(i64 %ptr) {1144; CHECK-POSTP8-LABEL: ld_not_disjoint32_double_uint16_t:1145; CHECK-POSTP8: # %bb.0: # %entry1146; CHECK-POSTP8-NEXT: ori r3, r3, 344631147; CHECK-POSTP8-NEXT: oris r3, r3, 11148; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r31149; CHECK-POSTP8-NEXT: xscvuxddp f1, f01150; CHECK-POSTP8-NEXT: blr1151;1152; CHECK-P8-LABEL: ld_not_disjoint32_double_uint16_t:1153; CHECK-P8: # %bb.0: # %entry1154; CHECK-P8-NEXT: ori r3, r3, 344631155; CHECK-P8-NEXT: oris r3, r3, 11156; CHECK-P8-NEXT: lhz r3, 0(r3)1157; CHECK-P8-NEXT: mtfprwz f0, r31158; CHECK-P8-NEXT: xscvuxddp f1, f01159; CHECK-P8-NEXT: blr1160entry:1161 %or = or i64 %ptr, 999991162 %0 = inttoptr i64 %or to ptr1163 %1 = load i16, ptr %0, align 21164 %conv = uitofp i16 %1 to double1165 ret double %conv1166}1167 1168; Function Attrs: norecurse nounwind readonly uwtable willreturn1169define dso_local double @ld_disjoint_align32_double_uint16_t(i64 %ptr) {1170; CHECK-P10-LABEL: ld_disjoint_align32_double_uint16_t:1171; CHECK-P10: # %bb.0: # %entry1172; CHECK-P10-NEXT: lis r4, -152641173; CHECK-P10-NEXT: and r3, r3, r41174; CHECK-P10-NEXT: pli r4, 9999900001175; CHECK-P10-NEXT: lxsihzx f0, r3, r41176; CHECK-P10-NEXT: xscvuxddp f1, f01177; CHECK-P10-NEXT: blr1178;1179; CHECK-P9-LABEL: ld_disjoint_align32_double_uint16_t:1180; CHECK-P9: # %bb.0: # %entry1181; CHECK-P9-NEXT: lis r4, -152641182; CHECK-P9-NEXT: and r3, r3, r41183; CHECK-P9-NEXT: lis r4, 152581184; CHECK-P9-NEXT: ori r4, r4, 417121185; CHECK-P9-NEXT: lxsihzx f0, r3, r41186; CHECK-P9-NEXT: xscvuxddp f1, f01187; CHECK-P9-NEXT: blr1188;1189; CHECK-P8-LABEL: ld_disjoint_align32_double_uint16_t:1190; CHECK-P8: # %bb.0: # %entry1191; CHECK-P8-NEXT: lis r4, -152641192; CHECK-P8-NEXT: and r3, r3, r41193; CHECK-P8-NEXT: lis r4, 152581194; CHECK-P8-NEXT: ori r4, r4, 417121195; CHECK-P8-NEXT: lhzx r3, r3, r41196; CHECK-P8-NEXT: mtfprwz f0, r31197; CHECK-P8-NEXT: xscvuxddp f1, f01198; CHECK-P8-NEXT: blr1199entry:1200 %and = and i64 %ptr, -10003415041201 %or = or i64 %and, 9999900001202 %0 = inttoptr i64 %or to ptr1203 %1 = load i16, ptr %0, align 161204 %conv = uitofp i16 %1 to double1205 ret double %conv1206}1207 1208; Function Attrs: norecurse nounwind readonly uwtable willreturn1209define dso_local double @ld_not_disjoint64_double_uint16_t(i64 %ptr) {1210; CHECK-P10-LABEL: ld_not_disjoint64_double_uint16_t:1211; CHECK-P10: # %bb.0: # %entry1212; CHECK-P10-NEXT: pli r4, 2321213; CHECK-P10-NEXT: pli r5, 35675873291214; CHECK-P10-NEXT: rldimi r5, r4, 32, 01215; CHECK-P10-NEXT: or r3, r3, r51216; CHECK-P10-NEXT: lxsihzx f0, 0, r31217; CHECK-P10-NEXT: xscvuxddp f1, f01218; CHECK-P10-NEXT: blr1219;1220; CHECK-P9-LABEL: ld_not_disjoint64_double_uint16_t:1221; CHECK-P9: # %bb.0: # %entry1222; CHECK-P9-NEXT: li r4, 291223; CHECK-P9-NEXT: rldic r4, r4, 35, 241224; CHECK-P9-NEXT: oris r4, r4, 544371225; CHECK-P9-NEXT: ori r4, r4, 40971226; CHECK-P9-NEXT: or r3, r3, r41227; CHECK-P9-NEXT: lxsihzx f0, 0, r31228; CHECK-P9-NEXT: xscvuxddp f1, f01229; CHECK-P9-NEXT: blr1230;1231; CHECK-P8-LABEL: ld_not_disjoint64_double_uint16_t:1232; CHECK-P8: # %bb.0: # %entry1233; CHECK-P8-NEXT: li r4, 291234; CHECK-P8-NEXT: rldic r4, r4, 35, 241235; CHECK-P8-NEXT: oris r4, r4, 544371236; CHECK-P8-NEXT: ori r4, r4, 40971237; CHECK-P8-NEXT: or r3, r3, r41238; CHECK-P8-NEXT: lhz r3, 0(r3)1239; CHECK-P8-NEXT: mtfprwz f0, r31240; CHECK-P8-NEXT: xscvuxddp f1, f01241; CHECK-P8-NEXT: blr1242entry:1243 %or = or i64 %ptr, 10000000000011244 %0 = inttoptr i64 %or to ptr1245 %1 = load i16, ptr %0, align 21246 %conv = uitofp i16 %1 to double1247 ret double %conv1248}1249 1250; Function Attrs: norecurse nounwind readonly uwtable willreturn1251define dso_local double @ld_disjoint_align64_double_uint16_t(i64 %ptr) {1252; CHECK-P10-LABEL: ld_disjoint_align64_double_uint16_t:1253; CHECK-P10: # %bb.0: # %entry1254; CHECK-P10-NEXT: pli r4, 2441406251255; CHECK-P10-NEXT: rldicr r3, r3, 0, 231256; CHECK-P10-NEXT: rldic r4, r4, 12, 241257; CHECK-P10-NEXT: lxsihzx f0, r3, r41258; CHECK-P10-NEXT: xscvuxddp f1, f01259; CHECK-P10-NEXT: blr1260;1261; CHECK-P9-LABEL: ld_disjoint_align64_double_uint16_t:1262; CHECK-P9: # %bb.0: # %entry1263; CHECK-P9-NEXT: lis r4, 37251264; CHECK-P9-NEXT: rldicr r3, r3, 0, 231265; CHECK-P9-NEXT: ori r4, r4, 190251266; CHECK-P9-NEXT: rldic r4, r4, 12, 241267; CHECK-P9-NEXT: lxsihzx f0, r3, r41268; CHECK-P9-NEXT: xscvuxddp f1, f01269; CHECK-P9-NEXT: blr1270;1271; CHECK-P8-LABEL: ld_disjoint_align64_double_uint16_t:1272; CHECK-P8: # %bb.0: # %entry1273; CHECK-P8-NEXT: lis r4, 37251274; CHECK-P8-NEXT: rldicr r3, r3, 0, 231275; CHECK-P8-NEXT: ori r4, r4, 190251276; CHECK-P8-NEXT: rldic r4, r4, 12, 241277; CHECK-P8-NEXT: lhzx r3, r3, r41278; CHECK-P8-NEXT: mtfprwz f0, r31279; CHECK-P8-NEXT: xscvuxddp f1, f01280; CHECK-P8-NEXT: blr1281entry:1282 %and = and i64 %ptr, -10995116277761283 %or = or i64 %and, 10000000000001284 %0 = inttoptr i64 %or to ptr1285 %1 = load i16, ptr %0, align 40961286 %conv = uitofp i16 %1 to double1287 ret double %conv1288}1289 1290; Function Attrs: norecurse nounwind readonly uwtable willreturn1291define dso_local double @ld_cst_align16_double_uint16_t() {1292; CHECK-POSTP8-LABEL: ld_cst_align16_double_uint16_t:1293; CHECK-POSTP8: # %bb.0: # %entry1294; CHECK-POSTP8-NEXT: li r3, 40801295; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r31296; CHECK-POSTP8-NEXT: xscvuxddp f1, f01297; CHECK-POSTP8-NEXT: blr1298;1299; CHECK-P8-LABEL: ld_cst_align16_double_uint16_t:1300; CHECK-P8: # %bb.0: # %entry1301; CHECK-P8-NEXT: lhz r3, 4080(0)1302; CHECK-P8-NEXT: mtfprwz f0, r31303; CHECK-P8-NEXT: xscvuxddp f1, f01304; CHECK-P8-NEXT: blr1305entry:1306 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 161307 %conv = uitofp i16 %0 to double1308 ret double %conv1309}1310 1311; Function Attrs: norecurse nounwind readonly uwtable willreturn1312define dso_local double @ld_cst_align32_double_uint16_t() {1313; CHECK-P10-LABEL: ld_cst_align32_double_uint16_t:1314; CHECK-P10: # %bb.0: # %entry1315; CHECK-P10-NEXT: pli r3, 99999001316; CHECK-P10-NEXT: lxsihzx f0, 0, r31317; CHECK-P10-NEXT: xscvuxddp f1, f01318; CHECK-P10-NEXT: blr1319;1320; CHECK-P9-LABEL: ld_cst_align32_double_uint16_t:1321; CHECK-P9: # %bb.0: # %entry1322; CHECK-P9-NEXT: lis r3, 1521323; CHECK-P9-NEXT: ori r3, r3, 384281324; CHECK-P9-NEXT: lxsihzx f0, 0, r31325; CHECK-P9-NEXT: xscvuxddp f1, f01326; CHECK-P9-NEXT: blr1327;1328; CHECK-P8-LABEL: ld_cst_align32_double_uint16_t:1329; CHECK-P8: # %bb.0: # %entry1330; CHECK-P8-NEXT: lis r3, 1531331; CHECK-P8-NEXT: lhz r3, -27108(r3)1332; CHECK-P8-NEXT: mtfprwz f0, r31333; CHECK-P8-NEXT: xscvuxddp f1, f01334; CHECK-P8-NEXT: blr1335entry:1336 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 41337 %conv = uitofp i16 %0 to double1338 ret double %conv1339}1340 1341; Function Attrs: norecurse nounwind readonly uwtable willreturn1342define dso_local double @ld_cst_align64_double_uint16_t() {1343; CHECK-P10-LABEL: ld_cst_align64_double_uint16_t:1344; CHECK-P10: # %bb.0: # %entry1345; CHECK-P10-NEXT: pli r3, 2441406251346; CHECK-P10-NEXT: rldic r3, r3, 12, 241347; CHECK-P10-NEXT: lxsihzx f0, 0, r31348; CHECK-P10-NEXT: xscvuxddp f1, f01349; CHECK-P10-NEXT: blr1350;1351; CHECK-P9-LABEL: ld_cst_align64_double_uint16_t:1352; CHECK-P9: # %bb.0: # %entry1353; CHECK-P9-NEXT: lis r3, 37251354; CHECK-P9-NEXT: ori r3, r3, 190251355; CHECK-P9-NEXT: rldic r3, r3, 12, 241356; CHECK-P9-NEXT: lxsihzx f0, 0, r31357; CHECK-P9-NEXT: xscvuxddp f1, f01358; CHECK-P9-NEXT: blr1359;1360; CHECK-P8-LABEL: ld_cst_align64_double_uint16_t:1361; CHECK-P8: # %bb.0: # %entry1362; CHECK-P8-NEXT: lis r3, 37251363; CHECK-P8-NEXT: ori r3, r3, 190251364; CHECK-P8-NEXT: rldic r3, r3, 12, 241365; CHECK-P8-NEXT: lhz r3, 0(r3)1366; CHECK-P8-NEXT: mtfprwz f0, r31367; CHECK-P8-NEXT: xscvuxddp f1, f01368; CHECK-P8-NEXT: blr1369entry:1370 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40961371 %conv = uitofp i16 %0 to double1372 ret double %conv1373}1374 1375; Function Attrs: norecurse nounwind readonly uwtable willreturn1376define dso_local double @ld_0_double_int16_t(i64 %ptr) {1377; CHECK-POSTP8-LABEL: ld_0_double_int16_t:1378; CHECK-POSTP8: # %bb.0: # %entry1379; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31380; CHECK-POSTP8-NEXT: vextsh2d v2, v21381; CHECK-POSTP8-NEXT: xscvsxddp f1, v21382; CHECK-POSTP8-NEXT: blr1383;1384; CHECK-P8-LABEL: ld_0_double_int16_t:1385; CHECK-P8: # %bb.0: # %entry1386; CHECK-P8-NEXT: lha r3, 0(r3)1387; CHECK-P8-NEXT: mtfprwa f0, r31388; CHECK-P8-NEXT: xscvsxddp f1, f01389; CHECK-P8-NEXT: blr1390entry:1391 %0 = inttoptr i64 %ptr to ptr1392 %1 = load i16, ptr %0, align 21393 %conv = sitofp i16 %1 to double1394 ret double %conv1395}1396 1397; Function Attrs: norecurse nounwind readonly uwtable willreturn1398define dso_local double @ld_align16_double_int16_t(ptr nocapture readonly %ptr) {1399; CHECK-POSTP8-LABEL: ld_align16_double_int16_t:1400; CHECK-POSTP8: # %bb.0: # %entry1401; CHECK-POSTP8-NEXT: addi r3, r3, 81402; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31403; CHECK-POSTP8-NEXT: vextsh2d v2, v21404; CHECK-POSTP8-NEXT: xscvsxddp f1, v21405; CHECK-POSTP8-NEXT: blr1406;1407; CHECK-P8-LABEL: ld_align16_double_int16_t:1408; CHECK-P8: # %bb.0: # %entry1409; CHECK-P8-NEXT: lha r3, 8(r3)1410; CHECK-P8-NEXT: mtfprwa f0, r31411; CHECK-P8-NEXT: xscvsxddp f1, f01412; CHECK-P8-NEXT: blr1413entry:1414 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81415 %0 = load i16, ptr %add.ptr, align 21416 %conv = sitofp i16 %0 to double1417 ret double %conv1418}1419 1420; Function Attrs: norecurse nounwind readonly uwtable willreturn1421define dso_local double @ld_align32_double_int16_t(ptr nocapture readonly %ptr) {1422; CHECK-P10-LABEL: ld_align32_double_int16_t:1423; CHECK-P10: # %bb.0: # %entry1424; CHECK-P10-NEXT: pli r4, 999990001425; CHECK-P10-NEXT: lxsihzx v2, r3, r41426; CHECK-P10-NEXT: vextsh2d v2, v21427; CHECK-P10-NEXT: xscvsxddp f1, v21428; CHECK-P10-NEXT: blr1429;1430; CHECK-P9-LABEL: ld_align32_double_int16_t:1431; CHECK-P9: # %bb.0: # %entry1432; CHECK-P9-NEXT: lis r4, 15251433; CHECK-P9-NEXT: ori r4, r4, 566001434; CHECK-P9-NEXT: lxsihzx v2, r3, r41435; CHECK-P9-NEXT: vextsh2d v2, v21436; CHECK-P9-NEXT: xscvsxddp f1, v21437; CHECK-P9-NEXT: blr1438;1439; CHECK-P8-LABEL: ld_align32_double_int16_t:1440; CHECK-P8: # %bb.0: # %entry1441; CHECK-P8-NEXT: lis r4, 15251442; CHECK-P8-NEXT: ori r4, r4, 566001443; CHECK-P8-NEXT: lhax r3, r3, r41444; CHECK-P8-NEXT: mtfprwa f0, r31445; CHECK-P8-NEXT: xscvsxddp f1, f01446; CHECK-P8-NEXT: blr1447entry:1448 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001449 %0 = load i16, ptr %add.ptr, align 21450 %conv = sitofp i16 %0 to double1451 ret double %conv1452}1453 1454; Function Attrs: norecurse nounwind readonly uwtable willreturn1455define dso_local double @ld_align64_double_int16_t(ptr nocapture readonly %ptr) {1456; CHECK-P10-LABEL: ld_align64_double_int16_t:1457; CHECK-P10: # %bb.0: # %entry1458; CHECK-P10-NEXT: pli r4, 2441406251459; CHECK-P10-NEXT: rldic r4, r4, 12, 241460; CHECK-P10-NEXT: lxsihzx v2, r3, r41461; CHECK-P10-NEXT: vextsh2d v2, v21462; CHECK-P10-NEXT: xscvsxddp f1, v21463; CHECK-P10-NEXT: blr1464;1465; CHECK-P9-LABEL: ld_align64_double_int16_t:1466; CHECK-P9: # %bb.0: # %entry1467; CHECK-P9-NEXT: lis r4, 37251468; CHECK-P9-NEXT: ori r4, r4, 190251469; CHECK-P9-NEXT: rldic r4, r4, 12, 241470; CHECK-P9-NEXT: lxsihzx v2, r3, r41471; CHECK-P9-NEXT: vextsh2d v2, v21472; CHECK-P9-NEXT: xscvsxddp f1, v21473; CHECK-P9-NEXT: blr1474;1475; CHECK-P8-LABEL: ld_align64_double_int16_t:1476; CHECK-P8: # %bb.0: # %entry1477; CHECK-P8-NEXT: lis r4, 37251478; CHECK-P8-NEXT: ori r4, r4, 190251479; CHECK-P8-NEXT: rldic r4, r4, 12, 241480; CHECK-P8-NEXT: lhax r3, r3, r41481; CHECK-P8-NEXT: mtfprwa f0, r31482; CHECK-P8-NEXT: xscvsxddp f1, f01483; CHECK-P8-NEXT: blr1484entry:1485 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001486 %0 = load i16, ptr %add.ptr, align 21487 %conv = sitofp i16 %0 to double1488 ret double %conv1489}1490 1491; Function Attrs: norecurse nounwind readonly uwtable willreturn1492define dso_local double @ld_reg_double_int16_t(ptr nocapture readonly %ptr, i64 %off) {1493; CHECK-POSTP8-LABEL: ld_reg_double_int16_t:1494; CHECK-POSTP8: # %bb.0: # %entry1495; CHECK-POSTP8-NEXT: lxsihzx v2, r3, r41496; CHECK-POSTP8-NEXT: vextsh2d v2, v21497; CHECK-POSTP8-NEXT: xscvsxddp f1, v21498; CHECK-POSTP8-NEXT: blr1499;1500; CHECK-P8-LABEL: ld_reg_double_int16_t:1501; CHECK-P8: # %bb.0: # %entry1502; CHECK-P8-NEXT: lhax r3, r3, r41503; CHECK-P8-NEXT: mtfprwa f0, r31504; CHECK-P8-NEXT: xscvsxddp f1, f01505; CHECK-P8-NEXT: blr1506entry:1507 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1508 %0 = load i16, ptr %add.ptr, align 21509 %conv = sitofp i16 %0 to double1510 ret double %conv1511}1512 1513; Function Attrs: norecurse nounwind readonly uwtable willreturn1514define dso_local double @ld_or_double_int16_t(i64 %ptr, i8 zeroext %off) {1515; CHECK-POSTP8-LABEL: ld_or_double_int16_t:1516; CHECK-POSTP8: # %bb.0: # %entry1517; CHECK-POSTP8-NEXT: or r3, r4, r31518; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31519; CHECK-POSTP8-NEXT: vextsh2d v2, v21520; CHECK-POSTP8-NEXT: xscvsxddp f1, v21521; CHECK-POSTP8-NEXT: blr1522;1523; CHECK-P8-LABEL: ld_or_double_int16_t:1524; CHECK-P8: # %bb.0: # %entry1525; CHECK-P8-NEXT: or r3, r4, r31526; CHECK-P8-NEXT: lha r3, 0(r3)1527; CHECK-P8-NEXT: mtfprwa f0, r31528; CHECK-P8-NEXT: xscvsxddp f1, f01529; CHECK-P8-NEXT: blr1530entry:1531 %conv = zext i8 %off to i641532 %or = or i64 %conv, %ptr1533 %0 = inttoptr i64 %or to ptr1534 %1 = load i16, ptr %0, align 21535 %conv1 = sitofp i16 %1 to double1536 ret double %conv11537}1538 1539; Function Attrs: norecurse nounwind readonly uwtable willreturn1540define dso_local double @ld_not_disjoint16_double_int16_t(i64 %ptr) {1541; CHECK-POSTP8-LABEL: ld_not_disjoint16_double_int16_t:1542; CHECK-POSTP8: # %bb.0: # %entry1543; CHECK-POSTP8-NEXT: ori r3, r3, 61544; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31545; CHECK-POSTP8-NEXT: vextsh2d v2, v21546; CHECK-POSTP8-NEXT: xscvsxddp f1, v21547; CHECK-POSTP8-NEXT: blr1548;1549; CHECK-P8-LABEL: ld_not_disjoint16_double_int16_t:1550; CHECK-P8: # %bb.0: # %entry1551; CHECK-P8-NEXT: ori r3, r3, 61552; CHECK-P8-NEXT: lha r3, 0(r3)1553; CHECK-P8-NEXT: mtfprwa f0, r31554; CHECK-P8-NEXT: xscvsxddp f1, f01555; CHECK-P8-NEXT: blr1556entry:1557 %or = or i64 %ptr, 61558 %0 = inttoptr i64 %or to ptr1559 %1 = load i16, ptr %0, align 21560 %conv = sitofp i16 %1 to double1561 ret double %conv1562}1563 1564; Function Attrs: norecurse nounwind readonly uwtable willreturn1565define dso_local double @ld_disjoint_align16_double_int16_t(i64 %ptr) {1566; CHECK-POSTP8-LABEL: ld_disjoint_align16_double_int16_t:1567; CHECK-POSTP8: # %bb.0: # %entry1568; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 511569; CHECK-POSTP8-NEXT: ori r3, r3, 241570; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31571; CHECK-POSTP8-NEXT: vextsh2d v2, v21572; CHECK-POSTP8-NEXT: xscvsxddp f1, v21573; CHECK-POSTP8-NEXT: blr1574;1575; CHECK-P8-LABEL: ld_disjoint_align16_double_int16_t:1576; CHECK-P8: # %bb.0: # %entry1577; CHECK-P8-NEXT: rldicr r3, r3, 0, 511578; CHECK-P8-NEXT: lha r3, 24(r3)1579; CHECK-P8-NEXT: mtfprwa f0, r31580; CHECK-P8-NEXT: xscvsxddp f1, f01581; CHECK-P8-NEXT: blr1582entry:1583 %and = and i64 %ptr, -40961584 %or = or i64 %and, 241585 %0 = inttoptr i64 %or to ptr1586 %1 = load i16, ptr %0, align 81587 %conv = sitofp i16 %1 to double1588 ret double %conv1589}1590 1591; Function Attrs: norecurse nounwind readonly uwtable willreturn1592define dso_local double @ld_not_disjoint32_double_int16_t(i64 %ptr) {1593; CHECK-POSTP8-LABEL: ld_not_disjoint32_double_int16_t:1594; CHECK-POSTP8: # %bb.0: # %entry1595; CHECK-POSTP8-NEXT: ori r3, r3, 344631596; CHECK-POSTP8-NEXT: oris r3, r3, 11597; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31598; CHECK-POSTP8-NEXT: vextsh2d v2, v21599; CHECK-POSTP8-NEXT: xscvsxddp f1, v21600; CHECK-POSTP8-NEXT: blr1601;1602; CHECK-P8-LABEL: ld_not_disjoint32_double_int16_t:1603; CHECK-P8: # %bb.0: # %entry1604; CHECK-P8-NEXT: ori r3, r3, 344631605; CHECK-P8-NEXT: oris r3, r3, 11606; CHECK-P8-NEXT: lha r3, 0(r3)1607; CHECK-P8-NEXT: mtfprwa f0, r31608; CHECK-P8-NEXT: xscvsxddp f1, f01609; CHECK-P8-NEXT: blr1610entry:1611 %or = or i64 %ptr, 999991612 %0 = inttoptr i64 %or to ptr1613 %1 = load i16, ptr %0, align 21614 %conv = sitofp i16 %1 to double1615 ret double %conv1616}1617 1618; Function Attrs: norecurse nounwind readonly uwtable willreturn1619define dso_local double @ld_disjoint_align32_double_int16_t(i64 %ptr) {1620; CHECK-P10-LABEL: ld_disjoint_align32_double_int16_t:1621; CHECK-P10: # %bb.0: # %entry1622; CHECK-P10-NEXT: lis r4, -152641623; CHECK-P10-NEXT: and r3, r3, r41624; CHECK-P10-NEXT: pli r4, 9999900001625; CHECK-P10-NEXT: lxsihzx v2, r3, r41626; CHECK-P10-NEXT: vextsh2d v2, v21627; CHECK-P10-NEXT: xscvsxddp f1, v21628; CHECK-P10-NEXT: blr1629;1630; CHECK-P9-LABEL: ld_disjoint_align32_double_int16_t:1631; CHECK-P9: # %bb.0: # %entry1632; CHECK-P9-NEXT: lis r4, -152641633; CHECK-P9-NEXT: and r3, r3, r41634; CHECK-P9-NEXT: lis r4, 152581635; CHECK-P9-NEXT: ori r4, r4, 417121636; CHECK-P9-NEXT: lxsihzx v2, r3, r41637; CHECK-P9-NEXT: vextsh2d v2, v21638; CHECK-P9-NEXT: xscvsxddp f1, v21639; CHECK-P9-NEXT: blr1640;1641; CHECK-P8-LABEL: ld_disjoint_align32_double_int16_t:1642; CHECK-P8: # %bb.0: # %entry1643; CHECK-P8-NEXT: lis r4, -152641644; CHECK-P8-NEXT: and r3, r3, r41645; CHECK-P8-NEXT: lis r4, 152581646; CHECK-P8-NEXT: ori r4, r4, 417121647; CHECK-P8-NEXT: lhax r3, r3, r41648; CHECK-P8-NEXT: mtfprwa f0, r31649; CHECK-P8-NEXT: xscvsxddp f1, f01650; CHECK-P8-NEXT: blr1651entry:1652 %and = and i64 %ptr, -10003415041653 %or = or i64 %and, 9999900001654 %0 = inttoptr i64 %or to ptr1655 %1 = load i16, ptr %0, align 161656 %conv = sitofp i16 %1 to double1657 ret double %conv1658}1659 1660; Function Attrs: norecurse nounwind readonly uwtable willreturn1661define dso_local double @ld_not_disjoint64_double_int16_t(i64 %ptr) {1662; CHECK-P10-LABEL: ld_not_disjoint64_double_int16_t:1663; CHECK-P10: # %bb.0: # %entry1664; CHECK-P10-NEXT: pli r4, 2321665; CHECK-P10-NEXT: pli r5, 35675873291666; CHECK-P10-NEXT: rldimi r5, r4, 32, 01667; CHECK-P10-NEXT: or r3, r3, r51668; CHECK-P10-NEXT: lxsihzx v2, 0, r31669; CHECK-P10-NEXT: vextsh2d v2, v21670; CHECK-P10-NEXT: xscvsxddp f1, v21671; CHECK-P10-NEXT: blr1672;1673; CHECK-P9-LABEL: ld_not_disjoint64_double_int16_t:1674; CHECK-P9: # %bb.0: # %entry1675; CHECK-P9-NEXT: li r4, 291676; CHECK-P9-NEXT: rldic r4, r4, 35, 241677; CHECK-P9-NEXT: oris r4, r4, 544371678; CHECK-P9-NEXT: ori r4, r4, 40971679; CHECK-P9-NEXT: or r3, r3, r41680; CHECK-P9-NEXT: lxsihzx v2, 0, r31681; CHECK-P9-NEXT: vextsh2d v2, v21682; CHECK-P9-NEXT: xscvsxddp f1, v21683; CHECK-P9-NEXT: blr1684;1685; CHECK-P8-LABEL: ld_not_disjoint64_double_int16_t:1686; CHECK-P8: # %bb.0: # %entry1687; CHECK-P8-NEXT: li r4, 291688; CHECK-P8-NEXT: rldic r4, r4, 35, 241689; CHECK-P8-NEXT: oris r4, r4, 544371690; CHECK-P8-NEXT: ori r4, r4, 40971691; CHECK-P8-NEXT: or r3, r3, r41692; CHECK-P8-NEXT: lha r3, 0(r3)1693; CHECK-P8-NEXT: mtfprwa f0, r31694; CHECK-P8-NEXT: xscvsxddp f1, f01695; CHECK-P8-NEXT: blr1696entry:1697 %or = or i64 %ptr, 10000000000011698 %0 = inttoptr i64 %or to ptr1699 %1 = load i16, ptr %0, align 21700 %conv = sitofp i16 %1 to double1701 ret double %conv1702}1703 1704; Function Attrs: norecurse nounwind readonly uwtable willreturn1705define dso_local double @ld_disjoint_align64_double_int16_t(i64 %ptr) {1706; CHECK-P10-LABEL: ld_disjoint_align64_double_int16_t:1707; CHECK-P10: # %bb.0: # %entry1708; CHECK-P10-NEXT: pli r4, 2441406251709; CHECK-P10-NEXT: rldicr r3, r3, 0, 231710; CHECK-P10-NEXT: rldic r4, r4, 12, 241711; CHECK-P10-NEXT: lxsihzx v2, r3, r41712; CHECK-P10-NEXT: vextsh2d v2, v21713; CHECK-P10-NEXT: xscvsxddp f1, v21714; CHECK-P10-NEXT: blr1715;1716; CHECK-P9-LABEL: ld_disjoint_align64_double_int16_t:1717; CHECK-P9: # %bb.0: # %entry1718; CHECK-P9-NEXT: lis r4, 37251719; CHECK-P9-NEXT: rldicr r3, r3, 0, 231720; CHECK-P9-NEXT: ori r4, r4, 190251721; CHECK-P9-NEXT: rldic r4, r4, 12, 241722; CHECK-P9-NEXT: lxsihzx v2, r3, r41723; CHECK-P9-NEXT: vextsh2d v2, v21724; CHECK-P9-NEXT: xscvsxddp f1, v21725; CHECK-P9-NEXT: blr1726;1727; CHECK-P8-LABEL: ld_disjoint_align64_double_int16_t:1728; CHECK-P8: # %bb.0: # %entry1729; CHECK-P8-NEXT: lis r4, 37251730; CHECK-P8-NEXT: rldicr r3, r3, 0, 231731; CHECK-P8-NEXT: ori r4, r4, 190251732; CHECK-P8-NEXT: rldic r4, r4, 12, 241733; CHECK-P8-NEXT: lhax r3, r3, r41734; CHECK-P8-NEXT: mtfprwa f0, r31735; CHECK-P8-NEXT: xscvsxddp f1, f01736; CHECK-P8-NEXT: blr1737entry:1738 %and = and i64 %ptr, -10995116277761739 %or = or i64 %and, 10000000000001740 %0 = inttoptr i64 %or to ptr1741 %1 = load i16, ptr %0, align 40961742 %conv = sitofp i16 %1 to double1743 ret double %conv1744}1745 1746; Function Attrs: norecurse nounwind readonly uwtable willreturn1747define dso_local double @ld_cst_align16_double_int16_t() {1748; CHECK-POSTP8-LABEL: ld_cst_align16_double_int16_t:1749; CHECK-POSTP8: # %bb.0: # %entry1750; CHECK-POSTP8-NEXT: li r3, 40801751; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31752; CHECK-POSTP8-NEXT: vextsh2d v2, v21753; CHECK-POSTP8-NEXT: xscvsxddp f1, v21754; CHECK-POSTP8-NEXT: blr1755;1756; CHECK-P8-LABEL: ld_cst_align16_double_int16_t:1757; CHECK-P8: # %bb.0: # %entry1758; CHECK-P8-NEXT: lha r3, 4080(0)1759; CHECK-P8-NEXT: mtfprwa f0, r31760; CHECK-P8-NEXT: xscvsxddp f1, f01761; CHECK-P8-NEXT: blr1762entry:1763 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 161764 %conv = sitofp i16 %0 to double1765 ret double %conv1766}1767 1768; Function Attrs: norecurse nounwind readonly uwtable willreturn1769define dso_local double @ld_cst_align32_double_int16_t() {1770; CHECK-P10-LABEL: ld_cst_align32_double_int16_t:1771; CHECK-P10: # %bb.0: # %entry1772; CHECK-P10-NEXT: pli r3, 99999001773; CHECK-P10-NEXT: lxsihzx v2, 0, r31774; CHECK-P10-NEXT: vextsh2d v2, v21775; CHECK-P10-NEXT: xscvsxddp f1, v21776; CHECK-P10-NEXT: blr1777;1778; CHECK-P9-LABEL: ld_cst_align32_double_int16_t:1779; CHECK-P9: # %bb.0: # %entry1780; CHECK-P9-NEXT: lis r3, 1521781; CHECK-P9-NEXT: ori r3, r3, 384281782; CHECK-P9-NEXT: lxsihzx v2, 0, r31783; CHECK-P9-NEXT: vextsh2d v2, v21784; CHECK-P9-NEXT: xscvsxddp f1, v21785; CHECK-P9-NEXT: blr1786;1787; CHECK-P8-LABEL: ld_cst_align32_double_int16_t:1788; CHECK-P8: # %bb.0: # %entry1789; CHECK-P8-NEXT: lis r3, 1531790; CHECK-P8-NEXT: lha r3, -27108(r3)1791; CHECK-P8-NEXT: mtfprwa f0, r31792; CHECK-P8-NEXT: xscvsxddp f1, f01793; CHECK-P8-NEXT: blr1794entry:1795 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 41796 %conv = sitofp i16 %0 to double1797 ret double %conv1798}1799 1800; Function Attrs: norecurse nounwind readonly uwtable willreturn1801define dso_local double @ld_cst_align64_double_int16_t() {1802; CHECK-P10-LABEL: ld_cst_align64_double_int16_t:1803; CHECK-P10: # %bb.0: # %entry1804; CHECK-P10-NEXT: pli r3, 2441406251805; CHECK-P10-NEXT: rldic r3, r3, 12, 241806; CHECK-P10-NEXT: lxsihzx v2, 0, r31807; CHECK-P10-NEXT: vextsh2d v2, v21808; CHECK-P10-NEXT: xscvsxddp f1, v21809; CHECK-P10-NEXT: blr1810;1811; CHECK-P9-LABEL: ld_cst_align64_double_int16_t:1812; CHECK-P9: # %bb.0: # %entry1813; CHECK-P9-NEXT: lis r3, 37251814; CHECK-P9-NEXT: ori r3, r3, 190251815; CHECK-P9-NEXT: rldic r3, r3, 12, 241816; CHECK-P9-NEXT: lxsihzx v2, 0, r31817; CHECK-P9-NEXT: vextsh2d v2, v21818; CHECK-P9-NEXT: xscvsxddp f1, v21819; CHECK-P9-NEXT: blr1820;1821; CHECK-P8-LABEL: ld_cst_align64_double_int16_t:1822; CHECK-P8: # %bb.0: # %entry1823; CHECK-P8-NEXT: lis r3, 37251824; CHECK-P8-NEXT: ori r3, r3, 190251825; CHECK-P8-NEXT: rldic r3, r3, 12, 241826; CHECK-P8-NEXT: lha r3, 0(r3)1827; CHECK-P8-NEXT: mtfprwa f0, r31828; CHECK-P8-NEXT: xscvsxddp f1, f01829; CHECK-P8-NEXT: blr1830entry:1831 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40961832 %conv = sitofp i16 %0 to double1833 ret double %conv1834}1835 1836; Function Attrs: norecurse nounwind readonly uwtable willreturn1837define dso_local double @ld_0_double_uint32_t(i64 %ptr) {1838; CHECK-LABEL: ld_0_double_uint32_t:1839; CHECK: # %bb.0: # %entry1840; CHECK-NEXT: lfiwzx f0, 0, r31841; CHECK-NEXT: xscvuxddp f1, f01842; CHECK-NEXT: blr1843entry:1844 %0 = inttoptr i64 %ptr to ptr1845 %1 = load i32, ptr %0, align 41846 %conv = uitofp i32 %1 to double1847 ret double %conv1848}1849 1850; Function Attrs: norecurse nounwind readonly uwtable willreturn1851define dso_local double @ld_align16_double_uint32_t(ptr nocapture readonly %ptr) {1852; CHECK-LABEL: ld_align16_double_uint32_t:1853; CHECK: # %bb.0: # %entry1854; CHECK-NEXT: addi r3, r3, 81855; CHECK-NEXT: lfiwzx f0, 0, r31856; CHECK-NEXT: xscvuxddp f1, f01857; CHECK-NEXT: blr1858entry:1859 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 81860 %0 = load i32, ptr %add.ptr, align 41861 %conv = uitofp i32 %0 to double1862 ret double %conv1863}1864 1865; Function Attrs: norecurse nounwind readonly uwtable willreturn1866define dso_local double @ld_align32_double_uint32_t(ptr nocapture readonly %ptr) {1867; CHECK-P10-LABEL: ld_align32_double_uint32_t:1868; CHECK-P10: # %bb.0: # %entry1869; CHECK-P10-NEXT: pli r4, 999990001870; CHECK-P10-NEXT: lfiwzx f0, r3, r41871; CHECK-P10-NEXT: xscvuxddp f1, f01872; CHECK-P10-NEXT: blr1873;1874; CHECK-PREP10-LABEL: ld_align32_double_uint32_t:1875; CHECK-PREP10: # %bb.0: # %entry1876; CHECK-PREP10-NEXT: lis r4, 15251877; CHECK-PREP10-NEXT: ori r4, r4, 566001878; CHECK-PREP10-NEXT: lfiwzx f0, r3, r41879; CHECK-PREP10-NEXT: xscvuxddp f1, f01880; CHECK-PREP10-NEXT: blr1881entry:1882 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990001883 %0 = load i32, ptr %add.ptr, align 41884 %conv = uitofp i32 %0 to double1885 ret double %conv1886}1887 1888; Function Attrs: norecurse nounwind readonly uwtable willreturn1889define dso_local double @ld_align64_double_uint32_t(ptr nocapture readonly %ptr) {1890; CHECK-P10-LABEL: ld_align64_double_uint32_t:1891; CHECK-P10: # %bb.0: # %entry1892; CHECK-P10-NEXT: pli r4, 2441406251893; CHECK-P10-NEXT: rldic r4, r4, 12, 241894; CHECK-P10-NEXT: lfiwzx f0, r3, r41895; CHECK-P10-NEXT: xscvuxddp f1, f01896; CHECK-P10-NEXT: blr1897;1898; CHECK-PREP10-LABEL: ld_align64_double_uint32_t:1899; CHECK-PREP10: # %bb.0: # %entry1900; CHECK-PREP10-NEXT: lis r4, 37251901; CHECK-PREP10-NEXT: ori r4, r4, 190251902; CHECK-PREP10-NEXT: rldic r4, r4, 12, 241903; CHECK-PREP10-NEXT: lfiwzx f0, r3, r41904; CHECK-PREP10-NEXT: xscvuxddp f1, f01905; CHECK-PREP10-NEXT: blr1906entry:1907 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000001908 %0 = load i32, ptr %add.ptr, align 41909 %conv = uitofp i32 %0 to double1910 ret double %conv1911}1912 1913; Function Attrs: norecurse nounwind readonly uwtable willreturn1914define dso_local double @ld_reg_double_uint32_t(ptr nocapture readonly %ptr, i64 %off) {1915; CHECK-LABEL: ld_reg_double_uint32_t:1916; CHECK: # %bb.0: # %entry1917; CHECK-NEXT: lfiwzx f0, r3, r41918; CHECK-NEXT: xscvuxddp f1, f01919; CHECK-NEXT: blr1920entry:1921 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off1922 %0 = load i32, ptr %add.ptr, align 41923 %conv = uitofp i32 %0 to double1924 ret double %conv1925}1926 1927; Function Attrs: norecurse nounwind readonly uwtable willreturn1928define dso_local double @ld_or_double_uint32_t(i64 %ptr, i8 zeroext %off) {1929; CHECK-LABEL: ld_or_double_uint32_t:1930; CHECK: # %bb.0: # %entry1931; CHECK-NEXT: or r3, r4, r31932; CHECK-NEXT: lfiwzx f0, 0, r31933; CHECK-NEXT: xscvuxddp f1, f01934; CHECK-NEXT: blr1935entry:1936 %conv = zext i8 %off to i641937 %or = or i64 %conv, %ptr1938 %0 = inttoptr i64 %or to ptr1939 %1 = load i32, ptr %0, align 41940 %conv1 = uitofp i32 %1 to double1941 ret double %conv11942}1943 1944; Function Attrs: norecurse nounwind readonly uwtable willreturn1945define dso_local double @ld_not_disjoint16_double_uint32_t(i64 %ptr) {1946; CHECK-LABEL: ld_not_disjoint16_double_uint32_t:1947; CHECK: # %bb.0: # %entry1948; CHECK-NEXT: ori r3, r3, 61949; CHECK-NEXT: lfiwzx f0, 0, r31950; CHECK-NEXT: xscvuxddp f1, f01951; CHECK-NEXT: blr1952entry:1953 %or = or i64 %ptr, 61954 %0 = inttoptr i64 %or to ptr1955 %1 = load i32, ptr %0, align 41956 %conv = uitofp i32 %1 to double1957 ret double %conv1958}1959 1960; Function Attrs: norecurse nounwind readonly uwtable willreturn1961define dso_local double @ld_disjoint_align16_double_uint32_t(i64 %ptr) {1962; CHECK-LABEL: ld_disjoint_align16_double_uint32_t:1963; CHECK: # %bb.0: # %entry1964; CHECK-NEXT: rldicr r3, r3, 0, 511965; CHECK-NEXT: ori r3, r3, 241966; CHECK-NEXT: lfiwzx f0, 0, r31967; CHECK-NEXT: xscvuxddp f1, f01968; CHECK-NEXT: blr1969entry:1970 %and = and i64 %ptr, -40961971 %or = or i64 %and, 241972 %0 = inttoptr i64 %or to ptr1973 %1 = load i32, ptr %0, align 81974 %conv = uitofp i32 %1 to double1975 ret double %conv1976}1977 1978; Function Attrs: norecurse nounwind readonly uwtable willreturn1979define dso_local double @ld_not_disjoint32_double_uint32_t(i64 %ptr) {1980; CHECK-LABEL: ld_not_disjoint32_double_uint32_t:1981; CHECK: # %bb.0: # %entry1982; CHECK-NEXT: ori r3, r3, 344631983; CHECK-NEXT: oris r3, r3, 11984; CHECK-NEXT: lfiwzx f0, 0, r31985; CHECK-NEXT: xscvuxddp f1, f01986; CHECK-NEXT: blr1987entry:1988 %or = or i64 %ptr, 999991989 %0 = inttoptr i64 %or to ptr1990 %1 = load i32, ptr %0, align 41991 %conv = uitofp i32 %1 to double1992 ret double %conv1993}1994 1995; Function Attrs: norecurse nounwind readonly uwtable willreturn1996define dso_local double @ld_disjoint_align32_double_uint32_t(i64 %ptr) {1997; CHECK-P10-LABEL: ld_disjoint_align32_double_uint32_t:1998; CHECK-P10: # %bb.0: # %entry1999; CHECK-P10-NEXT: lis r4, -152642000; CHECK-P10-NEXT: and r3, r3, r42001; CHECK-P10-NEXT: pli r4, 9999900002002; CHECK-P10-NEXT: lfiwzx f0, r3, r42003; CHECK-P10-NEXT: xscvuxddp f1, f02004; CHECK-P10-NEXT: blr2005;2006; CHECK-PREP10-LABEL: ld_disjoint_align32_double_uint32_t:2007; CHECK-PREP10: # %bb.0: # %entry2008; CHECK-PREP10-NEXT: lis r4, -152642009; CHECK-PREP10-NEXT: and r3, r3, r42010; CHECK-PREP10-NEXT: lis r4, 152582011; CHECK-PREP10-NEXT: ori r4, r4, 417122012; CHECK-PREP10-NEXT: lfiwzx f0, r3, r42013; CHECK-PREP10-NEXT: xscvuxddp f1, f02014; CHECK-PREP10-NEXT: blr2015entry:2016 %and = and i64 %ptr, -10003415042017 %or = or i64 %and, 9999900002018 %0 = inttoptr i64 %or to ptr2019 %1 = load i32, ptr %0, align 162020 %conv = uitofp i32 %1 to double2021 ret double %conv2022}2023 2024; Function Attrs: norecurse nounwind readonly uwtable willreturn2025define dso_local double @ld_not_disjoint64_double_uint32_t(i64 %ptr) {2026; CHECK-P10-LABEL: ld_not_disjoint64_double_uint32_t:2027; CHECK-P10: # %bb.0: # %entry2028; CHECK-P10-NEXT: pli r4, 2322029; CHECK-P10-NEXT: pli r5, 35675873292030; CHECK-P10-NEXT: rldimi r5, r4, 32, 02031; CHECK-P10-NEXT: or r3, r3, r52032; CHECK-P10-NEXT: lfiwzx f0, 0, r32033; CHECK-P10-NEXT: xscvuxddp f1, f02034; CHECK-P10-NEXT: blr2035;2036; CHECK-PREP10-LABEL: ld_not_disjoint64_double_uint32_t:2037; CHECK-PREP10: # %bb.0: # %entry2038; CHECK-PREP10-NEXT: li r4, 292039; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242040; CHECK-PREP10-NEXT: oris r4, r4, 544372041; CHECK-PREP10-NEXT: ori r4, r4, 40972042; CHECK-PREP10-NEXT: or r3, r3, r42043; CHECK-PREP10-NEXT: lfiwzx f0, 0, r32044; CHECK-PREP10-NEXT: xscvuxddp f1, f02045; CHECK-PREP10-NEXT: blr2046entry:2047 %or = or i64 %ptr, 10000000000012048 %0 = inttoptr i64 %or to ptr2049 %1 = load i32, ptr %0, align 42050 %conv = uitofp i32 %1 to double2051 ret double %conv2052}2053 2054; Function Attrs: norecurse nounwind readonly uwtable willreturn2055define dso_local double @ld_disjoint_align64_double_uint32_t(i64 %ptr) {2056; CHECK-P10-LABEL: ld_disjoint_align64_double_uint32_t:2057; CHECK-P10: # %bb.0: # %entry2058; CHECK-P10-NEXT: pli r4, 2441406252059; CHECK-P10-NEXT: rldicr r3, r3, 0, 232060; CHECK-P10-NEXT: rldic r4, r4, 12, 242061; CHECK-P10-NEXT: lfiwzx f0, r3, r42062; CHECK-P10-NEXT: xscvuxddp f1, f02063; CHECK-P10-NEXT: blr2064;2065; CHECK-PREP10-LABEL: ld_disjoint_align64_double_uint32_t:2066; CHECK-PREP10: # %bb.0: # %entry2067; CHECK-PREP10-NEXT: lis r4, 37252068; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232069; CHECK-PREP10-NEXT: ori r4, r4, 190252070; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242071; CHECK-PREP10-NEXT: lfiwzx f0, r3, r42072; CHECK-PREP10-NEXT: xscvuxddp f1, f02073; CHECK-PREP10-NEXT: blr2074entry:2075 %and = and i64 %ptr, -10995116277762076 %or = or i64 %and, 10000000000002077 %0 = inttoptr i64 %or to ptr2078 %1 = load i32, ptr %0, align 40962079 %conv = uitofp i32 %1 to double2080 ret double %conv2081}2082 2083; Function Attrs: norecurse nounwind readonly uwtable willreturn2084define dso_local double @ld_cst_align16_double_uint32_t() {2085; CHECK-LABEL: ld_cst_align16_double_uint32_t:2086; CHECK: # %bb.0: # %entry2087; CHECK-NEXT: li r3, 40802088; CHECK-NEXT: lfiwzx f0, 0, r32089; CHECK-NEXT: xscvuxddp f1, f02090; CHECK-NEXT: blr2091entry:2092 %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 162093 %conv = uitofp i32 %0 to double2094 ret double %conv2095}2096 2097; Function Attrs: norecurse nounwind readonly uwtable willreturn2098define dso_local double @ld_cst_align32_double_uint32_t() {2099; CHECK-P10-LABEL: ld_cst_align32_double_uint32_t:2100; CHECK-P10: # %bb.0: # %entry2101; CHECK-P10-NEXT: pli r3, 99999002102; CHECK-P10-NEXT: lfiwzx f0, 0, r32103; CHECK-P10-NEXT: xscvuxddp f1, f02104; CHECK-P10-NEXT: blr2105;2106; CHECK-PREP10-LABEL: ld_cst_align32_double_uint32_t:2107; CHECK-PREP10: # %bb.0: # %entry2108; CHECK-PREP10-NEXT: lis r3, 1522109; CHECK-PREP10-NEXT: ori r3, r3, 384282110; CHECK-PREP10-NEXT: lfiwzx f0, 0, r32111; CHECK-PREP10-NEXT: xscvuxddp f1, f02112; CHECK-PREP10-NEXT: blr2113entry:2114 %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 42115 %conv = uitofp i32 %0 to double2116 ret double %conv2117}2118 2119; Function Attrs: norecurse nounwind readonly uwtable willreturn2120define dso_local double @ld_cst_align64_double_uint32_t() {2121; CHECK-P10-LABEL: ld_cst_align64_double_uint32_t:2122; CHECK-P10: # %bb.0: # %entry2123; CHECK-P10-NEXT: pli r3, 2441406252124; CHECK-P10-NEXT: rldic r3, r3, 12, 242125; CHECK-P10-NEXT: lfiwzx f0, 0, r32126; CHECK-P10-NEXT: xscvuxddp f1, f02127; CHECK-P10-NEXT: blr2128;2129; CHECK-PREP10-LABEL: ld_cst_align64_double_uint32_t:2130; CHECK-PREP10: # %bb.0: # %entry2131; CHECK-PREP10-NEXT: lis r3, 37252132; CHECK-PREP10-NEXT: ori r3, r3, 190252133; CHECK-PREP10-NEXT: rldic r3, r3, 12, 242134; CHECK-PREP10-NEXT: lfiwzx f0, 0, r32135; CHECK-PREP10-NEXT: xscvuxddp f1, f02136; CHECK-PREP10-NEXT: blr2137entry:2138 %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40962139 %conv = uitofp i32 %0 to double2140 ret double %conv2141}2142 2143; Function Attrs: norecurse nounwind readonly uwtable willreturn2144define dso_local double @ld_0_double_int32_t(i64 %ptr) {2145; CHECK-LABEL: ld_0_double_int32_t:2146; CHECK: # %bb.0: # %entry2147; CHECK-NEXT: lfiwax f0, 0, r32148; CHECK-NEXT: xscvsxddp f1, f02149; CHECK-NEXT: blr2150entry:2151 %0 = inttoptr i64 %ptr to ptr2152 %1 = load i32, ptr %0, align 42153 %conv = sitofp i32 %1 to double2154 ret double %conv2155}2156 2157; Function Attrs: norecurse nounwind readonly uwtable willreturn2158define dso_local double @ld_align16_double_int32_t(ptr nocapture readonly %ptr) {2159; CHECK-LABEL: ld_align16_double_int32_t:2160; CHECK: # %bb.0: # %entry2161; CHECK-NEXT: addi r3, r3, 82162; CHECK-NEXT: lfiwax f0, 0, r32163; CHECK-NEXT: xscvsxddp f1, f02164; CHECK-NEXT: blr2165entry:2166 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82167 %0 = load i32, ptr %add.ptr, align 42168 %conv = sitofp i32 %0 to double2169 ret double %conv2170}2171 2172; Function Attrs: norecurse nounwind readonly uwtable willreturn2173define dso_local double @ld_align32_double_int32_t(ptr nocapture readonly %ptr) {2174; CHECK-P10-LABEL: ld_align32_double_int32_t:2175; CHECK-P10: # %bb.0: # %entry2176; CHECK-P10-NEXT: pli r4, 999990002177; CHECK-P10-NEXT: lfiwax f0, r3, r42178; CHECK-P10-NEXT: xscvsxddp f1, f02179; CHECK-P10-NEXT: blr2180;2181; CHECK-PREP10-LABEL: ld_align32_double_int32_t:2182; CHECK-PREP10: # %bb.0: # %entry2183; CHECK-PREP10-NEXT: lis r4, 15252184; CHECK-PREP10-NEXT: ori r4, r4, 566002185; CHECK-PREP10-NEXT: lfiwax f0, r3, r42186; CHECK-PREP10-NEXT: xscvsxddp f1, f02187; CHECK-PREP10-NEXT: blr2188entry:2189 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002190 %0 = load i32, ptr %add.ptr, align 42191 %conv = sitofp i32 %0 to double2192 ret double %conv2193}2194 2195; Function Attrs: norecurse nounwind readonly uwtable willreturn2196define dso_local double @ld_align64_double_int32_t(ptr nocapture readonly %ptr) {2197; CHECK-P10-LABEL: ld_align64_double_int32_t:2198; CHECK-P10: # %bb.0: # %entry2199; CHECK-P10-NEXT: pli r4, 2441406252200; CHECK-P10-NEXT: rldic r4, r4, 12, 242201; CHECK-P10-NEXT: lfiwax f0, r3, r42202; CHECK-P10-NEXT: xscvsxddp f1, f02203; CHECK-P10-NEXT: blr2204;2205; CHECK-PREP10-LABEL: ld_align64_double_int32_t:2206; CHECK-PREP10: # %bb.0: # %entry2207; CHECK-PREP10-NEXT: lis r4, 37252208; CHECK-PREP10-NEXT: ori r4, r4, 190252209; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242210; CHECK-PREP10-NEXT: lfiwax f0, r3, r42211; CHECK-PREP10-NEXT: xscvsxddp f1, f02212; CHECK-PREP10-NEXT: blr2213entry:2214 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002215 %0 = load i32, ptr %add.ptr, align 42216 %conv = sitofp i32 %0 to double2217 ret double %conv2218}2219 2220; Function Attrs: norecurse nounwind readonly uwtable willreturn2221define dso_local double @ld_reg_double_int32_t(ptr nocapture readonly %ptr, i64 %off) {2222; CHECK-LABEL: ld_reg_double_int32_t:2223; CHECK: # %bb.0: # %entry2224; CHECK-NEXT: lfiwax f0, r3, r42225; CHECK-NEXT: xscvsxddp f1, f02226; CHECK-NEXT: blr2227entry:2228 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2229 %0 = load i32, ptr %add.ptr, align 42230 %conv = sitofp i32 %0 to double2231 ret double %conv2232}2233 2234; Function Attrs: norecurse nounwind readonly uwtable willreturn2235define dso_local double @ld_or_double_int32_t(i64 %ptr, i8 zeroext %off) {2236; CHECK-LABEL: ld_or_double_int32_t:2237; CHECK: # %bb.0: # %entry2238; CHECK-NEXT: or r3, r4, r32239; CHECK-NEXT: lfiwax f0, 0, r32240; CHECK-NEXT: xscvsxddp f1, f02241; CHECK-NEXT: blr2242entry:2243 %conv = zext i8 %off to i642244 %or = or i64 %conv, %ptr2245 %0 = inttoptr i64 %or to ptr2246 %1 = load i32, ptr %0, align 42247 %conv1 = sitofp i32 %1 to double2248 ret double %conv12249}2250 2251; Function Attrs: norecurse nounwind readonly uwtable willreturn2252define dso_local double @ld_not_disjoint16_double_int32_t(i64 %ptr) {2253; CHECK-LABEL: ld_not_disjoint16_double_int32_t:2254; CHECK: # %bb.0: # %entry2255; CHECK-NEXT: ori r3, r3, 62256; CHECK-NEXT: lfiwax f0, 0, r32257; CHECK-NEXT: xscvsxddp f1, f02258; CHECK-NEXT: blr2259entry:2260 %or = or i64 %ptr, 62261 %0 = inttoptr i64 %or to ptr2262 %1 = load i32, ptr %0, align 42263 %conv = sitofp i32 %1 to double2264 ret double %conv2265}2266 2267; Function Attrs: norecurse nounwind readonly uwtable willreturn2268define dso_local double @ld_disjoint_align16_double_int32_t(i64 %ptr) {2269; CHECK-LABEL: ld_disjoint_align16_double_int32_t:2270; CHECK: # %bb.0: # %entry2271; CHECK-NEXT: rldicr r3, r3, 0, 512272; CHECK-NEXT: ori r3, r3, 242273; CHECK-NEXT: lfiwax f0, 0, r32274; CHECK-NEXT: xscvsxddp f1, f02275; CHECK-NEXT: blr2276entry:2277 %and = and i64 %ptr, -40962278 %or = or i64 %and, 242279 %0 = inttoptr i64 %or to ptr2280 %1 = load i32, ptr %0, align 82281 %conv = sitofp i32 %1 to double2282 ret double %conv2283}2284 2285; Function Attrs: norecurse nounwind readonly uwtable willreturn2286define dso_local double @ld_not_disjoint32_double_int32_t(i64 %ptr) {2287; CHECK-LABEL: ld_not_disjoint32_double_int32_t:2288; CHECK: # %bb.0: # %entry2289; CHECK-NEXT: ori r3, r3, 344632290; CHECK-NEXT: oris r3, r3, 12291; CHECK-NEXT: lfiwax f0, 0, r32292; CHECK-NEXT: xscvsxddp f1, f02293; CHECK-NEXT: blr2294entry:2295 %or = or i64 %ptr, 999992296 %0 = inttoptr i64 %or to ptr2297 %1 = load i32, ptr %0, align 42298 %conv = sitofp i32 %1 to double2299 ret double %conv2300}2301 2302; Function Attrs: norecurse nounwind readonly uwtable willreturn2303define dso_local double @ld_disjoint_align32_double_int32_t(i64 %ptr) {2304; CHECK-P10-LABEL: ld_disjoint_align32_double_int32_t:2305; CHECK-P10: # %bb.0: # %entry2306; CHECK-P10-NEXT: lis r4, -152642307; CHECK-P10-NEXT: and r3, r3, r42308; CHECK-P10-NEXT: pli r4, 9999900002309; CHECK-P10-NEXT: lfiwax f0, r3, r42310; CHECK-P10-NEXT: xscvsxddp f1, f02311; CHECK-P10-NEXT: blr2312;2313; CHECK-PREP10-LABEL: ld_disjoint_align32_double_int32_t:2314; CHECK-PREP10: # %bb.0: # %entry2315; CHECK-PREP10-NEXT: lis r4, -152642316; CHECK-PREP10-NEXT: and r3, r3, r42317; CHECK-PREP10-NEXT: lis r4, 152582318; CHECK-PREP10-NEXT: ori r4, r4, 417122319; CHECK-PREP10-NEXT: lfiwax f0, r3, r42320; CHECK-PREP10-NEXT: xscvsxddp f1, f02321; CHECK-PREP10-NEXT: blr2322entry:2323 %and = and i64 %ptr, -10003415042324 %or = or i64 %and, 9999900002325 %0 = inttoptr i64 %or to ptr2326 %1 = load i32, ptr %0, align 162327 %conv = sitofp i32 %1 to double2328 ret double %conv2329}2330 2331; Function Attrs: norecurse nounwind readonly uwtable willreturn2332define dso_local double @ld_not_disjoint64_double_int32_t(i64 %ptr) {2333; CHECK-P10-LABEL: ld_not_disjoint64_double_int32_t:2334; CHECK-P10: # %bb.0: # %entry2335; CHECK-P10-NEXT: pli r4, 2322336; CHECK-P10-NEXT: pli r5, 35675873292337; CHECK-P10-NEXT: rldimi r5, r4, 32, 02338; CHECK-P10-NEXT: or r3, r3, r52339; CHECK-P10-NEXT: lfiwax f0, 0, r32340; CHECK-P10-NEXT: xscvsxddp f1, f02341; CHECK-P10-NEXT: blr2342;2343; CHECK-PREP10-LABEL: ld_not_disjoint64_double_int32_t:2344; CHECK-PREP10: # %bb.0: # %entry2345; CHECK-PREP10-NEXT: li r4, 292346; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242347; CHECK-PREP10-NEXT: oris r4, r4, 544372348; CHECK-PREP10-NEXT: ori r4, r4, 40972349; CHECK-PREP10-NEXT: or r3, r3, r42350; CHECK-PREP10-NEXT: lfiwax f0, 0, r32351; CHECK-PREP10-NEXT: xscvsxddp f1, f02352; CHECK-PREP10-NEXT: blr2353entry:2354 %or = or i64 %ptr, 10000000000012355 %0 = inttoptr i64 %or to ptr2356 %1 = load i32, ptr %0, align 42357 %conv = sitofp i32 %1 to double2358 ret double %conv2359}2360 2361; Function Attrs: norecurse nounwind readonly uwtable willreturn2362define dso_local double @ld_disjoint_align64_double_int32_t(i64 %ptr) {2363; CHECK-P10-LABEL: ld_disjoint_align64_double_int32_t:2364; CHECK-P10: # %bb.0: # %entry2365; CHECK-P10-NEXT: pli r4, 2441406252366; CHECK-P10-NEXT: rldicr r3, r3, 0, 232367; CHECK-P10-NEXT: rldic r4, r4, 12, 242368; CHECK-P10-NEXT: lfiwax f0, r3, r42369; CHECK-P10-NEXT: xscvsxddp f1, f02370; CHECK-P10-NEXT: blr2371;2372; CHECK-PREP10-LABEL: ld_disjoint_align64_double_int32_t:2373; CHECK-PREP10: # %bb.0: # %entry2374; CHECK-PREP10-NEXT: lis r4, 37252375; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232376; CHECK-PREP10-NEXT: ori r4, r4, 190252377; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242378; CHECK-PREP10-NEXT: lfiwax f0, r3, r42379; CHECK-PREP10-NEXT: xscvsxddp f1, f02380; CHECK-PREP10-NEXT: blr2381entry:2382 %and = and i64 %ptr, -10995116277762383 %or = or i64 %and, 10000000000002384 %0 = inttoptr i64 %or to ptr2385 %1 = load i32, ptr %0, align 40962386 %conv = sitofp i32 %1 to double2387 ret double %conv2388}2389 2390; Function Attrs: norecurse nounwind readonly uwtable willreturn2391define dso_local double @ld_cst_align16_double_int32_t() {2392; CHECK-LABEL: ld_cst_align16_double_int32_t:2393; CHECK: # %bb.0: # %entry2394; CHECK-NEXT: li r3, 40802395; CHECK-NEXT: lfiwax f0, 0, r32396; CHECK-NEXT: xscvsxddp f1, f02397; CHECK-NEXT: blr2398entry:2399 %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 162400 %conv = sitofp i32 %0 to double2401 ret double %conv2402}2403 2404; Function Attrs: norecurse nounwind readonly uwtable willreturn2405define dso_local double @ld_cst_align32_double_int32_t() {2406; CHECK-P10-LABEL: ld_cst_align32_double_int32_t:2407; CHECK-P10: # %bb.0: # %entry2408; CHECK-P10-NEXT: pli r3, 99999002409; CHECK-P10-NEXT: lfiwax f0, 0, r32410; CHECK-P10-NEXT: xscvsxddp f1, f02411; CHECK-P10-NEXT: blr2412;2413; CHECK-PREP10-LABEL: ld_cst_align32_double_int32_t:2414; CHECK-PREP10: # %bb.0: # %entry2415; CHECK-PREP10-NEXT: lis r3, 1522416; CHECK-PREP10-NEXT: ori r3, r3, 384282417; CHECK-PREP10-NEXT: lfiwax f0, 0, r32418; CHECK-PREP10-NEXT: xscvsxddp f1, f02419; CHECK-PREP10-NEXT: blr2420entry:2421 %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 42422 %conv = sitofp i32 %0 to double2423 ret double %conv2424}2425 2426; Function Attrs: norecurse nounwind readonly uwtable willreturn2427define dso_local double @ld_cst_align64_double_int32_t() {2428; CHECK-P10-LABEL: ld_cst_align64_double_int32_t:2429; CHECK-P10: # %bb.0: # %entry2430; CHECK-P10-NEXT: pli r3, 2441406252431; CHECK-P10-NEXT: rldic r3, r3, 12, 242432; CHECK-P10-NEXT: lfiwax f0, 0, r32433; CHECK-P10-NEXT: xscvsxddp f1, f02434; CHECK-P10-NEXT: blr2435;2436; CHECK-PREP10-LABEL: ld_cst_align64_double_int32_t:2437; CHECK-PREP10: # %bb.0: # %entry2438; CHECK-PREP10-NEXT: lis r3, 37252439; CHECK-PREP10-NEXT: ori r3, r3, 190252440; CHECK-PREP10-NEXT: rldic r3, r3, 12, 242441; CHECK-PREP10-NEXT: lfiwax f0, 0, r32442; CHECK-PREP10-NEXT: xscvsxddp f1, f02443; CHECK-PREP10-NEXT: blr2444entry:2445 %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40962446 %conv = sitofp i32 %0 to double2447 ret double %conv2448}2449 2450; Function Attrs: norecurse nounwind readonly uwtable willreturn2451define dso_local double @ld_0_double_uint64_t(i64 %ptr) {2452; CHECK-LABEL: ld_0_double_uint64_t:2453; CHECK: # %bb.0: # %entry2454; CHECK-NEXT: lfd f0, 0(r3)2455; CHECK-NEXT: xscvuxddp f1, f02456; CHECK-NEXT: blr2457entry:2458 %0 = inttoptr i64 %ptr to ptr2459 %1 = load i64, ptr %0, align 82460 %conv = uitofp i64 %1 to double2461 ret double %conv2462}2463 2464; Function Attrs: norecurse nounwind readonly uwtable willreturn2465define dso_local double @ld_align16_double_uint64_t(ptr nocapture readonly %ptr) {2466; CHECK-LABEL: ld_align16_double_uint64_t:2467; CHECK: # %bb.0: # %entry2468; CHECK-NEXT: lfd f0, 8(r3)2469; CHECK-NEXT: xscvuxddp f1, f02470; CHECK-NEXT: blr2471entry:2472 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82473 %0 = load i64, ptr %add.ptr, align 82474 %conv = uitofp i64 %0 to double2475 ret double %conv2476}2477 2478; Function Attrs: norecurse nounwind readonly uwtable willreturn2479define dso_local double @ld_align32_double_uint64_t(ptr nocapture readonly %ptr) {2480; CHECK-P10-LABEL: ld_align32_double_uint64_t:2481; CHECK-P10: # %bb.0: # %entry2482; CHECK-P10-NEXT: plfd f0, 99999000(r3), 02483; CHECK-P10-NEXT: xscvuxddp f1, f02484; CHECK-P10-NEXT: blr2485;2486; CHECK-PREP10-LABEL: ld_align32_double_uint64_t:2487; CHECK-PREP10: # %bb.0: # %entry2488; CHECK-PREP10-NEXT: lis r4, 15252489; CHECK-PREP10-NEXT: ori r4, r4, 566002490; CHECK-PREP10-NEXT: lfdx f0, r3, r42491; CHECK-PREP10-NEXT: xscvuxddp f1, f02492; CHECK-PREP10-NEXT: blr2493entry:2494 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002495 %0 = load i64, ptr %add.ptr, align 82496 %conv = uitofp i64 %0 to double2497 ret double %conv2498}2499 2500; Function Attrs: norecurse nounwind readonly uwtable willreturn2501define dso_local double @ld_align64_double_uint64_t(ptr nocapture readonly %ptr) {2502; CHECK-P10-LABEL: ld_align64_double_uint64_t:2503; CHECK-P10: # %bb.0: # %entry2504; CHECK-P10-NEXT: pli r4, 2441406252505; CHECK-P10-NEXT: rldic r4, r4, 12, 242506; CHECK-P10-NEXT: lfdx f0, r3, r42507; CHECK-P10-NEXT: xscvuxddp f1, f02508; CHECK-P10-NEXT: blr2509;2510; CHECK-PREP10-LABEL: ld_align64_double_uint64_t:2511; CHECK-PREP10: # %bb.0: # %entry2512; CHECK-PREP10-NEXT: lis r4, 37252513; CHECK-PREP10-NEXT: ori r4, r4, 190252514; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242515; CHECK-PREP10-NEXT: lfdx f0, r3, r42516; CHECK-PREP10-NEXT: xscvuxddp f1, f02517; CHECK-PREP10-NEXT: blr2518entry:2519 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002520 %0 = load i64, ptr %add.ptr, align 82521 %conv = uitofp i64 %0 to double2522 ret double %conv2523}2524 2525; Function Attrs: norecurse nounwind readonly uwtable willreturn2526define dso_local double @ld_reg_double_uint64_t(ptr nocapture readonly %ptr, i64 %off) {2527; CHECK-LABEL: ld_reg_double_uint64_t:2528; CHECK: # %bb.0: # %entry2529; CHECK-NEXT: lfdx f0, r3, r42530; CHECK-NEXT: xscvuxddp f1, f02531; CHECK-NEXT: blr2532entry:2533 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2534 %0 = load i64, ptr %add.ptr, align 82535 %conv = uitofp i64 %0 to double2536 ret double %conv2537}2538 2539; Function Attrs: norecurse nounwind readonly uwtable willreturn2540define dso_local double @ld_or_double_uint64_t(i64 %ptr, i8 zeroext %off) {2541; CHECK-LABEL: ld_or_double_uint64_t:2542; CHECK: # %bb.0: # %entry2543; CHECK-NEXT: or r3, r4, r32544; CHECK-NEXT: lfd f0, 0(r3)2545; CHECK-NEXT: xscvuxddp f1, f02546; CHECK-NEXT: blr2547entry:2548 %conv = zext i8 %off to i642549 %or = or i64 %conv, %ptr2550 %0 = inttoptr i64 %or to ptr2551 %1 = load i64, ptr %0, align 82552 %conv1 = uitofp i64 %1 to double2553 ret double %conv12554}2555 2556; Function Attrs: norecurse nounwind readonly uwtable willreturn2557define dso_local double @ld_not_disjoint16_double_uint64_t(i64 %ptr) {2558; CHECK-LABEL: ld_not_disjoint16_double_uint64_t:2559; CHECK: # %bb.0: # %entry2560; CHECK-NEXT: ori r3, r3, 62561; CHECK-NEXT: lfd f0, 0(r3)2562; CHECK-NEXT: xscvuxddp f1, f02563; CHECK-NEXT: blr2564entry:2565 %or = or i64 %ptr, 62566 %0 = inttoptr i64 %or to ptr2567 %1 = load i64, ptr %0, align 82568 %conv = uitofp i64 %1 to double2569 ret double %conv2570}2571 2572; Function Attrs: norecurse nounwind readonly uwtable willreturn2573define dso_local double @ld_disjoint_align16_double_uint64_t(i64 %ptr) {2574; CHECK-LABEL: ld_disjoint_align16_double_uint64_t:2575; CHECK: # %bb.0: # %entry2576; CHECK-NEXT: rldicr r3, r3, 0, 512577; CHECK-NEXT: lfd f0, 24(r3)2578; CHECK-NEXT: xscvuxddp f1, f02579; CHECK-NEXT: blr2580entry:2581 %and = and i64 %ptr, -40962582 %or = or i64 %and, 242583 %0 = inttoptr i64 %or to ptr2584 %1 = load i64, ptr %0, align 82585 %conv = uitofp i64 %1 to double2586 ret double %conv2587}2588 2589; Function Attrs: norecurse nounwind readonly uwtable willreturn2590define dso_local double @ld_not_disjoint32_double_uint64_t(i64 %ptr) {2591; CHECK-LABEL: ld_not_disjoint32_double_uint64_t:2592; CHECK: # %bb.0: # %entry2593; CHECK-NEXT: ori r3, r3, 344632594; CHECK-NEXT: oris r3, r3, 12595; CHECK-NEXT: lfd f0, 0(r3)2596; CHECK-NEXT: xscvuxddp f1, f02597; CHECK-NEXT: blr2598entry:2599 %or = or i64 %ptr, 999992600 %0 = inttoptr i64 %or to ptr2601 %1 = load i64, ptr %0, align 82602 %conv = uitofp i64 %1 to double2603 ret double %conv2604}2605 2606; Function Attrs: norecurse nounwind readonly uwtable willreturn2607define dso_local double @ld_disjoint_align32_double_uint64_t(i64 %ptr) {2608; CHECK-P10-LABEL: ld_disjoint_align32_double_uint64_t:2609; CHECK-P10: # %bb.0: # %entry2610; CHECK-P10-NEXT: lis r4, -152642611; CHECK-P10-NEXT: and r3, r3, r42612; CHECK-P10-NEXT: plfd f0, 999990000(r3), 02613; CHECK-P10-NEXT: xscvuxddp f1, f02614; CHECK-P10-NEXT: blr2615;2616; CHECK-PREP10-LABEL: ld_disjoint_align32_double_uint64_t:2617; CHECK-PREP10: # %bb.0: # %entry2618; CHECK-PREP10-NEXT: lis r4, -152642619; CHECK-PREP10-NEXT: and r3, r3, r42620; CHECK-PREP10-NEXT: lis r4, 152582621; CHECK-PREP10-NEXT: ori r4, r4, 417122622; CHECK-PREP10-NEXT: lfdx f0, r3, r42623; CHECK-PREP10-NEXT: xscvuxddp f1, f02624; CHECK-PREP10-NEXT: blr2625entry:2626 %and = and i64 %ptr, -10003415042627 %or = or i64 %and, 9999900002628 %0 = inttoptr i64 %or to ptr2629 %1 = load i64, ptr %0, align 162630 %conv = uitofp i64 %1 to double2631 ret double %conv2632}2633 2634; Function Attrs: norecurse nounwind readonly uwtable willreturn2635define dso_local double @ld_not_disjoint64_double_uint64_t(i64 %ptr) {2636; CHECK-P10-LABEL: ld_not_disjoint64_double_uint64_t:2637; CHECK-P10: # %bb.0: # %entry2638; CHECK-P10-NEXT: pli r4, 2322639; CHECK-P10-NEXT: pli r5, 35675873292640; CHECK-P10-NEXT: rldimi r5, r4, 32, 02641; CHECK-P10-NEXT: or r3, r3, r52642; CHECK-P10-NEXT: lfd f0, 0(r3)2643; CHECK-P10-NEXT: xscvuxddp f1, f02644; CHECK-P10-NEXT: blr2645;2646; CHECK-PREP10-LABEL: ld_not_disjoint64_double_uint64_t:2647; CHECK-PREP10: # %bb.0: # %entry2648; CHECK-PREP10-NEXT: li r4, 292649; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242650; CHECK-PREP10-NEXT: oris r4, r4, 544372651; CHECK-PREP10-NEXT: ori r4, r4, 40972652; CHECK-PREP10-NEXT: or r3, r3, r42653; CHECK-PREP10-NEXT: lfd f0, 0(r3)2654; CHECK-PREP10-NEXT: xscvuxddp f1, f02655; CHECK-PREP10-NEXT: blr2656entry:2657 %or = or i64 %ptr, 10000000000012658 %0 = inttoptr i64 %or to ptr2659 %1 = load i64, ptr %0, align 82660 %conv = uitofp i64 %1 to double2661 ret double %conv2662}2663 2664; Function Attrs: norecurse nounwind readonly uwtable willreturn2665define dso_local double @ld_disjoint_align64_double_uint64_t(i64 %ptr) {2666; CHECK-P10-LABEL: ld_disjoint_align64_double_uint64_t:2667; CHECK-P10: # %bb.0: # %entry2668; CHECK-P10-NEXT: pli r4, 2441406252669; CHECK-P10-NEXT: rldicr r3, r3, 0, 232670; CHECK-P10-NEXT: rldic r4, r4, 12, 242671; CHECK-P10-NEXT: lfdx f0, r3, r42672; CHECK-P10-NEXT: xscvuxddp f1, f02673; CHECK-P10-NEXT: blr2674;2675; CHECK-PREP10-LABEL: ld_disjoint_align64_double_uint64_t:2676; CHECK-PREP10: # %bb.0: # %entry2677; CHECK-PREP10-NEXT: lis r4, 37252678; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232679; CHECK-PREP10-NEXT: ori r4, r4, 190252680; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242681; CHECK-PREP10-NEXT: lfdx f0, r3, r42682; CHECK-PREP10-NEXT: xscvuxddp f1, f02683; CHECK-PREP10-NEXT: blr2684entry:2685 %and = and i64 %ptr, -10995116277762686 %or = or i64 %and, 10000000000002687 %0 = inttoptr i64 %or to ptr2688 %1 = load i64, ptr %0, align 40962689 %conv = uitofp i64 %1 to double2690 ret double %conv2691}2692 2693; Function Attrs: norecurse nounwind readonly uwtable willreturn2694define dso_local double @ld_cst_align16_double_uint64_t() {2695; CHECK-LABEL: ld_cst_align16_double_uint64_t:2696; CHECK: # %bb.0: # %entry2697; CHECK-NEXT: lfd f0, 4080(0)2698; CHECK-NEXT: xscvuxddp f1, f02699; CHECK-NEXT: blr2700entry:2701 %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 162702 %conv = uitofp i64 %0 to double2703 ret double %conv2704}2705 2706; Function Attrs: norecurse nounwind readonly uwtable willreturn2707define dso_local double @ld_cst_align32_double_uint64_t() {2708; CHECK-LABEL: ld_cst_align32_double_uint64_t:2709; CHECK: # %bb.0: # %entry2710; CHECK-NEXT: lis r3, 1532711; CHECK-NEXT: lfd f0, -27108(r3)2712; CHECK-NEXT: xscvuxddp f1, f02713; CHECK-NEXT: blr2714entry:2715 %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 82716 %conv = uitofp i64 %0 to double2717 ret double %conv2718}2719 2720; Function Attrs: norecurse nounwind readonly uwtable willreturn2721define dso_local double @ld_cst_align64_double_uint64_t() {2722; CHECK-P10-LABEL: ld_cst_align64_double_uint64_t:2723; CHECK-P10: # %bb.0: # %entry2724; CHECK-P10-NEXT: pli r3, 2441406252725; CHECK-P10-NEXT: rldic r3, r3, 12, 242726; CHECK-P10-NEXT: lfd f0, 0(r3)2727; CHECK-P10-NEXT: xscvuxddp f1, f02728; CHECK-P10-NEXT: blr2729;2730; CHECK-PREP10-LABEL: ld_cst_align64_double_uint64_t:2731; CHECK-PREP10: # %bb.0: # %entry2732; CHECK-PREP10-NEXT: lis r3, 37252733; CHECK-PREP10-NEXT: ori r3, r3, 190252734; CHECK-PREP10-NEXT: rldic r3, r3, 12, 242735; CHECK-PREP10-NEXT: lfd f0, 0(r3)2736; CHECK-PREP10-NEXT: xscvuxddp f1, f02737; CHECK-PREP10-NEXT: blr2738entry:2739 %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40962740 %conv = uitofp i64 %0 to double2741 ret double %conv2742}2743 2744; Function Attrs: norecurse nounwind readonly uwtable willreturn2745define dso_local double @ld_0_double_int64_t(i64 %ptr) {2746; CHECK-LABEL: ld_0_double_int64_t:2747; CHECK: # %bb.0: # %entry2748; CHECK-NEXT: lfd f0, 0(r3)2749; CHECK-NEXT: xscvsxddp f1, f02750; CHECK-NEXT: blr2751entry:2752 %0 = inttoptr i64 %ptr to ptr2753 %1 = load i64, ptr %0, align 82754 %conv = sitofp i64 %1 to double2755 ret double %conv2756}2757 2758; Function Attrs: norecurse nounwind readonly uwtable willreturn2759define dso_local double @ld_align16_double_int64_t(ptr nocapture readonly %ptr) {2760; CHECK-LABEL: ld_align16_double_int64_t:2761; CHECK: # %bb.0: # %entry2762; CHECK-NEXT: lfd f0, 8(r3)2763; CHECK-NEXT: xscvsxddp f1, f02764; CHECK-NEXT: blr2765entry:2766 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 82767 %0 = load i64, ptr %add.ptr, align 82768 %conv = sitofp i64 %0 to double2769 ret double %conv2770}2771 2772; Function Attrs: norecurse nounwind readonly uwtable willreturn2773define dso_local double @ld_align32_double_int64_t(ptr nocapture readonly %ptr) {2774; CHECK-P10-LABEL: ld_align32_double_int64_t:2775; CHECK-P10: # %bb.0: # %entry2776; CHECK-P10-NEXT: plfd f0, 99999000(r3), 02777; CHECK-P10-NEXT: xscvsxddp f1, f02778; CHECK-P10-NEXT: blr2779;2780; CHECK-PREP10-LABEL: ld_align32_double_int64_t:2781; CHECK-PREP10: # %bb.0: # %entry2782; CHECK-PREP10-NEXT: lis r4, 15252783; CHECK-PREP10-NEXT: ori r4, r4, 566002784; CHECK-PREP10-NEXT: lfdx f0, r3, r42785; CHECK-PREP10-NEXT: xscvsxddp f1, f02786; CHECK-PREP10-NEXT: blr2787entry:2788 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990002789 %0 = load i64, ptr %add.ptr, align 82790 %conv = sitofp i64 %0 to double2791 ret double %conv2792}2793 2794; Function Attrs: norecurse nounwind readonly uwtable willreturn2795define dso_local double @ld_align64_double_int64_t(ptr nocapture readonly %ptr) {2796; CHECK-P10-LABEL: ld_align64_double_int64_t:2797; CHECK-P10: # %bb.0: # %entry2798; CHECK-P10-NEXT: pli r4, 2441406252799; CHECK-P10-NEXT: rldic r4, r4, 12, 242800; CHECK-P10-NEXT: lfdx f0, r3, r42801; CHECK-P10-NEXT: xscvsxddp f1, f02802; CHECK-P10-NEXT: blr2803;2804; CHECK-PREP10-LABEL: ld_align64_double_int64_t:2805; CHECK-PREP10: # %bb.0: # %entry2806; CHECK-PREP10-NEXT: lis r4, 37252807; CHECK-PREP10-NEXT: ori r4, r4, 190252808; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242809; CHECK-PREP10-NEXT: lfdx f0, r3, r42810; CHECK-PREP10-NEXT: xscvsxddp f1, f02811; CHECK-PREP10-NEXT: blr2812entry:2813 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000002814 %0 = load i64, ptr %add.ptr, align 82815 %conv = sitofp i64 %0 to double2816 ret double %conv2817}2818 2819; Function Attrs: norecurse nounwind readonly uwtable willreturn2820define dso_local double @ld_reg_double_int64_t(ptr nocapture readonly %ptr, i64 %off) {2821; CHECK-LABEL: ld_reg_double_int64_t:2822; CHECK: # %bb.0: # %entry2823; CHECK-NEXT: lfdx f0, r3, r42824; CHECK-NEXT: xscvsxddp f1, f02825; CHECK-NEXT: blr2826entry:2827 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off2828 %0 = load i64, ptr %add.ptr, align 82829 %conv = sitofp i64 %0 to double2830 ret double %conv2831}2832 2833; Function Attrs: norecurse nounwind readonly uwtable willreturn2834define dso_local double @ld_or_double_int64_t(i64 %ptr, i8 zeroext %off) {2835; CHECK-LABEL: ld_or_double_int64_t:2836; CHECK: # %bb.0: # %entry2837; CHECK-NEXT: or r3, r4, r32838; CHECK-NEXT: lfd f0, 0(r3)2839; CHECK-NEXT: xscvsxddp f1, f02840; CHECK-NEXT: blr2841entry:2842 %conv = zext i8 %off to i642843 %or = or i64 %conv, %ptr2844 %0 = inttoptr i64 %or to ptr2845 %1 = load i64, ptr %0, align 82846 %conv1 = sitofp i64 %1 to double2847 ret double %conv12848}2849 2850; Function Attrs: norecurse nounwind readonly uwtable willreturn2851define dso_local double @ld_not_disjoint16_double_int64_t(i64 %ptr) {2852; CHECK-LABEL: ld_not_disjoint16_double_int64_t:2853; CHECK: # %bb.0: # %entry2854; CHECK-NEXT: ori r3, r3, 62855; CHECK-NEXT: lfd f0, 0(r3)2856; CHECK-NEXT: xscvsxddp f1, f02857; CHECK-NEXT: blr2858entry:2859 %or = or i64 %ptr, 62860 %0 = inttoptr i64 %or to ptr2861 %1 = load i64, ptr %0, align 82862 %conv = sitofp i64 %1 to double2863 ret double %conv2864}2865 2866; Function Attrs: norecurse nounwind readonly uwtable willreturn2867define dso_local double @ld_disjoint_align16_double_int64_t(i64 %ptr) {2868; CHECK-LABEL: ld_disjoint_align16_double_int64_t:2869; CHECK: # %bb.0: # %entry2870; CHECK-NEXT: rldicr r3, r3, 0, 512871; CHECK-NEXT: lfd f0, 24(r3)2872; CHECK-NEXT: xscvsxddp f1, f02873; CHECK-NEXT: blr2874entry:2875 %and = and i64 %ptr, -40962876 %or = or i64 %and, 242877 %0 = inttoptr i64 %or to ptr2878 %1 = load i64, ptr %0, align 82879 %conv = sitofp i64 %1 to double2880 ret double %conv2881}2882 2883; Function Attrs: norecurse nounwind readonly uwtable willreturn2884define dso_local double @ld_not_disjoint32_double_int64_t(i64 %ptr) {2885; CHECK-LABEL: ld_not_disjoint32_double_int64_t:2886; CHECK: # %bb.0: # %entry2887; CHECK-NEXT: ori r3, r3, 344632888; CHECK-NEXT: oris r3, r3, 12889; CHECK-NEXT: lfd f0, 0(r3)2890; CHECK-NEXT: xscvsxddp f1, f02891; CHECK-NEXT: blr2892entry:2893 %or = or i64 %ptr, 999992894 %0 = inttoptr i64 %or to ptr2895 %1 = load i64, ptr %0, align 82896 %conv = sitofp i64 %1 to double2897 ret double %conv2898}2899 2900; Function Attrs: norecurse nounwind readonly uwtable willreturn2901define dso_local double @ld_disjoint_align32_double_int64_t(i64 %ptr) {2902; CHECK-P10-LABEL: ld_disjoint_align32_double_int64_t:2903; CHECK-P10: # %bb.0: # %entry2904; CHECK-P10-NEXT: lis r4, -152642905; CHECK-P10-NEXT: and r3, r3, r42906; CHECK-P10-NEXT: plfd f0, 999990000(r3), 02907; CHECK-P10-NEXT: xscvsxddp f1, f02908; CHECK-P10-NEXT: blr2909;2910; CHECK-PREP10-LABEL: ld_disjoint_align32_double_int64_t:2911; CHECK-PREP10: # %bb.0: # %entry2912; CHECK-PREP10-NEXT: lis r4, -152642913; CHECK-PREP10-NEXT: and r3, r3, r42914; CHECK-PREP10-NEXT: lis r4, 152582915; CHECK-PREP10-NEXT: ori r4, r4, 417122916; CHECK-PREP10-NEXT: lfdx f0, r3, r42917; CHECK-PREP10-NEXT: xscvsxddp f1, f02918; CHECK-PREP10-NEXT: blr2919entry:2920 %and = and i64 %ptr, -10003415042921 %or = or i64 %and, 9999900002922 %0 = inttoptr i64 %or to ptr2923 %1 = load i64, ptr %0, align 162924 %conv = sitofp i64 %1 to double2925 ret double %conv2926}2927 2928; Function Attrs: norecurse nounwind readonly uwtable willreturn2929define dso_local double @ld_not_disjoint64_double_int64_t(i64 %ptr) {2930; CHECK-P10-LABEL: ld_not_disjoint64_double_int64_t:2931; CHECK-P10: # %bb.0: # %entry2932; CHECK-P10-NEXT: pli r4, 2322933; CHECK-P10-NEXT: pli r5, 35675873292934; CHECK-P10-NEXT: rldimi r5, r4, 32, 02935; CHECK-P10-NEXT: or r3, r3, r52936; CHECK-P10-NEXT: lfd f0, 0(r3)2937; CHECK-P10-NEXT: xscvsxddp f1, f02938; CHECK-P10-NEXT: blr2939;2940; CHECK-PREP10-LABEL: ld_not_disjoint64_double_int64_t:2941; CHECK-PREP10: # %bb.0: # %entry2942; CHECK-PREP10-NEXT: li r4, 292943; CHECK-PREP10-NEXT: rldic r4, r4, 35, 242944; CHECK-PREP10-NEXT: oris r4, r4, 544372945; CHECK-PREP10-NEXT: ori r4, r4, 40972946; CHECK-PREP10-NEXT: or r3, r3, r42947; CHECK-PREP10-NEXT: lfd f0, 0(r3)2948; CHECK-PREP10-NEXT: xscvsxddp f1, f02949; CHECK-PREP10-NEXT: blr2950entry:2951 %or = or i64 %ptr, 10000000000012952 %0 = inttoptr i64 %or to ptr2953 %1 = load i64, ptr %0, align 82954 %conv = sitofp i64 %1 to double2955 ret double %conv2956}2957 2958; Function Attrs: norecurse nounwind readonly uwtable willreturn2959define dso_local double @ld_disjoint_align64_double_int64_t(i64 %ptr) {2960; CHECK-P10-LABEL: ld_disjoint_align64_double_int64_t:2961; CHECK-P10: # %bb.0: # %entry2962; CHECK-P10-NEXT: pli r4, 2441406252963; CHECK-P10-NEXT: rldicr r3, r3, 0, 232964; CHECK-P10-NEXT: rldic r4, r4, 12, 242965; CHECK-P10-NEXT: lfdx f0, r3, r42966; CHECK-P10-NEXT: xscvsxddp f1, f02967; CHECK-P10-NEXT: blr2968;2969; CHECK-PREP10-LABEL: ld_disjoint_align64_double_int64_t:2970; CHECK-PREP10: # %bb.0: # %entry2971; CHECK-PREP10-NEXT: lis r4, 37252972; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 232973; CHECK-PREP10-NEXT: ori r4, r4, 190252974; CHECK-PREP10-NEXT: rldic r4, r4, 12, 242975; CHECK-PREP10-NEXT: lfdx f0, r3, r42976; CHECK-PREP10-NEXT: xscvsxddp f1, f02977; CHECK-PREP10-NEXT: blr2978entry:2979 %and = and i64 %ptr, -10995116277762980 %or = or i64 %and, 10000000000002981 %0 = inttoptr i64 %or to ptr2982 %1 = load i64, ptr %0, align 40962983 %conv = sitofp i64 %1 to double2984 ret double %conv2985}2986 2987; Function Attrs: norecurse nounwind readonly uwtable willreturn2988define dso_local double @ld_cst_align16_double_int64_t() {2989; CHECK-LABEL: ld_cst_align16_double_int64_t:2990; CHECK: # %bb.0: # %entry2991; CHECK-NEXT: lfd f0, 4080(0)2992; CHECK-NEXT: xscvsxddp f1, f02993; CHECK-NEXT: blr2994entry:2995 %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 162996 %conv = sitofp i64 %0 to double2997 ret double %conv2998}2999 3000; Function Attrs: norecurse nounwind readonly uwtable willreturn3001define dso_local double @ld_cst_align32_double_int64_t() {3002; CHECK-LABEL: ld_cst_align32_double_int64_t:3003; CHECK: # %bb.0: # %entry3004; CHECK-NEXT: lis r3, 1533005; CHECK-NEXT: lfd f0, -27108(r3)3006; CHECK-NEXT: xscvsxddp f1, f03007; CHECK-NEXT: blr3008entry:3009 %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 83010 %conv = sitofp i64 %0 to double3011 ret double %conv3012}3013 3014; Function Attrs: norecurse nounwind readonly uwtable willreturn3015define dso_local double @ld_cst_align64_double_int64_t() {3016; CHECK-P10-LABEL: ld_cst_align64_double_int64_t:3017; CHECK-P10: # %bb.0: # %entry3018; CHECK-P10-NEXT: pli r3, 2441406253019; CHECK-P10-NEXT: rldic r3, r3, 12, 243020; CHECK-P10-NEXT: lfd f0, 0(r3)3021; CHECK-P10-NEXT: xscvsxddp f1, f03022; CHECK-P10-NEXT: blr3023;3024; CHECK-PREP10-LABEL: ld_cst_align64_double_int64_t:3025; CHECK-PREP10: # %bb.0: # %entry3026; CHECK-PREP10-NEXT: lis r3, 37253027; CHECK-PREP10-NEXT: ori r3, r3, 190253028; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243029; CHECK-PREP10-NEXT: lfd f0, 0(r3)3030; CHECK-PREP10-NEXT: xscvsxddp f1, f03031; CHECK-PREP10-NEXT: blr3032entry:3033 %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40963034 %conv = sitofp i64 %0 to double3035 ret double %conv3036}3037 3038; Function Attrs: norecurse nounwind readonly uwtable willreturn3039define dso_local double @ld_0_double_float(i64 %ptr) {3040; CHECK-LABEL: ld_0_double_float:3041; CHECK: # %bb.0: # %entry3042; CHECK-NEXT: lfs f1, 0(r3)3043; CHECK-NEXT: blr3044entry:3045 %0 = inttoptr i64 %ptr to ptr3046 %1 = load float, ptr %0, align 43047 %conv = fpext float %1 to double3048 ret double %conv3049}3050 3051; Function Attrs: norecurse nounwind readonly uwtable willreturn3052define dso_local double @ld_align16_double_float(ptr nocapture readonly %ptr) {3053; CHECK-LABEL: ld_align16_double_float:3054; CHECK: # %bb.0: # %entry3055; CHECK-NEXT: lfs f1, 8(r3)3056; CHECK-NEXT: blr3057entry:3058 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83059 %0 = load float, ptr %add.ptr, align 43060 %conv = fpext float %0 to double3061 ret double %conv3062}3063 3064; Function Attrs: norecurse nounwind readonly uwtable willreturn3065define dso_local double @ld_align32_double_float(ptr nocapture readonly %ptr) {3066; CHECK-P10-LABEL: ld_align32_double_float:3067; CHECK-P10: # %bb.0: # %entry3068; CHECK-P10-NEXT: plfs f1, 99999000(r3), 03069; CHECK-P10-NEXT: blr3070;3071; CHECK-PREP10-LABEL: ld_align32_double_float:3072; CHECK-PREP10: # %bb.0: # %entry3073; CHECK-PREP10-NEXT: lis r4, 15253074; CHECK-PREP10-NEXT: ori r4, r4, 566003075; CHECK-PREP10-NEXT: lfsx f1, r3, r43076; CHECK-PREP10-NEXT: blr3077entry:3078 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003079 %0 = load float, ptr %add.ptr, align 43080 %conv = fpext float %0 to double3081 ret double %conv3082}3083 3084; Function Attrs: norecurse nounwind readonly uwtable willreturn3085define dso_local double @ld_align64_double_float(ptr nocapture readonly %ptr) {3086; CHECK-P10-LABEL: ld_align64_double_float:3087; CHECK-P10: # %bb.0: # %entry3088; CHECK-P10-NEXT: pli r4, 2441406253089; CHECK-P10-NEXT: rldic r4, r4, 12, 243090; CHECK-P10-NEXT: lfsx f1, r3, r43091; CHECK-P10-NEXT: blr3092;3093; CHECK-PREP10-LABEL: ld_align64_double_float:3094; CHECK-PREP10: # %bb.0: # %entry3095; CHECK-PREP10-NEXT: lis r4, 37253096; CHECK-PREP10-NEXT: ori r4, r4, 190253097; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243098; CHECK-PREP10-NEXT: lfsx f1, r3, r43099; CHECK-PREP10-NEXT: blr3100entry:3101 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003102 %0 = load float, ptr %add.ptr, align 43103 %conv = fpext float %0 to double3104 ret double %conv3105}3106 3107; Function Attrs: norecurse nounwind readonly uwtable willreturn3108define dso_local double @ld_reg_double_float(ptr nocapture readonly %ptr, i64 %off) {3109; CHECK-LABEL: ld_reg_double_float:3110; CHECK: # %bb.0: # %entry3111; CHECK-NEXT: lfsx f1, r3, r43112; CHECK-NEXT: blr3113entry:3114 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3115 %0 = load float, ptr %add.ptr, align 43116 %conv = fpext float %0 to double3117 ret double %conv3118}3119 3120; Function Attrs: norecurse nounwind readonly uwtable willreturn3121define dso_local double @ld_or_double_float(i64 %ptr, i8 zeroext %off) {3122; CHECK-LABEL: ld_or_double_float:3123; CHECK: # %bb.0: # %entry3124; CHECK-NEXT: or r3, r4, r33125; CHECK-NEXT: lfs f1, 0(r3)3126; CHECK-NEXT: blr3127entry:3128 %conv = zext i8 %off to i643129 %or = or i64 %conv, %ptr3130 %0 = inttoptr i64 %or to ptr3131 %1 = load float, ptr %0, align 43132 %conv1 = fpext float %1 to double3133 ret double %conv13134}3135 3136; Function Attrs: norecurse nounwind readonly uwtable willreturn3137define dso_local double @ld_not_disjoint16_double_float(i64 %ptr) {3138; CHECK-LABEL: ld_not_disjoint16_double_float:3139; CHECK: # %bb.0: # %entry3140; CHECK-NEXT: ori r3, r3, 63141; CHECK-NEXT: lfs f1, 0(r3)3142; CHECK-NEXT: blr3143entry:3144 %or = or i64 %ptr, 63145 %0 = inttoptr i64 %or to ptr3146 %1 = load float, ptr %0, align 43147 %conv = fpext float %1 to double3148 ret double %conv3149}3150 3151; Function Attrs: norecurse nounwind readonly uwtable willreturn3152define dso_local double @ld_disjoint_align16_double_float(i64 %ptr) {3153; CHECK-LABEL: ld_disjoint_align16_double_float:3154; CHECK: # %bb.0: # %entry3155; CHECK-NEXT: rldicr r3, r3, 0, 513156; CHECK-NEXT: lfs f1, 24(r3)3157; CHECK-NEXT: blr3158entry:3159 %and = and i64 %ptr, -40963160 %or = or i64 %and, 243161 %0 = inttoptr i64 %or to ptr3162 %1 = load float, ptr %0, align 83163 %conv = fpext float %1 to double3164 ret double %conv3165}3166 3167; Function Attrs: norecurse nounwind readonly uwtable willreturn3168define dso_local double @ld_not_disjoint32_double_float(i64 %ptr) {3169; CHECK-LABEL: ld_not_disjoint32_double_float:3170; CHECK: # %bb.0: # %entry3171; CHECK-NEXT: ori r3, r3, 344633172; CHECK-NEXT: oris r3, r3, 13173; CHECK-NEXT: lfs f1, 0(r3)3174; CHECK-NEXT: blr3175entry:3176 %or = or i64 %ptr, 999993177 %0 = inttoptr i64 %or to ptr3178 %1 = load float, ptr %0, align 43179 %conv = fpext float %1 to double3180 ret double %conv3181}3182 3183; Function Attrs: norecurse nounwind readonly uwtable willreturn3184define dso_local double @ld_disjoint_align32_double_float(i64 %ptr) {3185; CHECK-P10-LABEL: ld_disjoint_align32_double_float:3186; CHECK-P10: # %bb.0: # %entry3187; CHECK-P10-NEXT: lis r4, -152643188; CHECK-P10-NEXT: and r3, r3, r43189; CHECK-P10-NEXT: plfs f1, 999990000(r3), 03190; CHECK-P10-NEXT: blr3191;3192; CHECK-PREP10-LABEL: ld_disjoint_align32_double_float:3193; CHECK-PREP10: # %bb.0: # %entry3194; CHECK-PREP10-NEXT: lis r4, -152643195; CHECK-PREP10-NEXT: and r3, r3, r43196; CHECK-PREP10-NEXT: lis r4, 152583197; CHECK-PREP10-NEXT: ori r4, r4, 417123198; CHECK-PREP10-NEXT: lfsx f1, r3, r43199; CHECK-PREP10-NEXT: blr3200entry:3201 %and = and i64 %ptr, -10003415043202 %or = or i64 %and, 9999900003203 %0 = inttoptr i64 %or to ptr3204 %1 = load float, ptr %0, align 163205 %conv = fpext float %1 to double3206 ret double %conv3207}3208 3209; Function Attrs: norecurse nounwind readonly uwtable willreturn3210define dso_local double @ld_not_disjoint64_double_float(i64 %ptr) {3211; CHECK-P10-LABEL: ld_not_disjoint64_double_float:3212; CHECK-P10: # %bb.0: # %entry3213; CHECK-P10-NEXT: pli r4, 2323214; CHECK-P10-NEXT: pli r5, 35675873293215; CHECK-P10-NEXT: rldimi r5, r4, 32, 03216; CHECK-P10-NEXT: or r3, r3, r53217; CHECK-P10-NEXT: lfs f1, 0(r3)3218; CHECK-P10-NEXT: blr3219;3220; CHECK-PREP10-LABEL: ld_not_disjoint64_double_float:3221; CHECK-PREP10: # %bb.0: # %entry3222; CHECK-PREP10-NEXT: li r4, 293223; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243224; CHECK-PREP10-NEXT: oris r4, r4, 544373225; CHECK-PREP10-NEXT: ori r4, r4, 40973226; CHECK-PREP10-NEXT: or r3, r3, r43227; CHECK-PREP10-NEXT: lfs f1, 0(r3)3228; CHECK-PREP10-NEXT: blr3229entry:3230 %or = or i64 %ptr, 10000000000013231 %0 = inttoptr i64 %or to ptr3232 %1 = load float, ptr %0, align 43233 %conv = fpext float %1 to double3234 ret double %conv3235}3236 3237; Function Attrs: norecurse nounwind readonly uwtable willreturn3238define dso_local double @ld_disjoint_align64_double_float(i64 %ptr) {3239; CHECK-P10-LABEL: ld_disjoint_align64_double_float:3240; CHECK-P10: # %bb.0: # %entry3241; CHECK-P10-NEXT: pli r4, 2441406253242; CHECK-P10-NEXT: rldicr r3, r3, 0, 233243; CHECK-P10-NEXT: rldic r4, r4, 12, 243244; CHECK-P10-NEXT: lfsx f1, r3, r43245; CHECK-P10-NEXT: blr3246;3247; CHECK-PREP10-LABEL: ld_disjoint_align64_double_float:3248; CHECK-PREP10: # %bb.0: # %entry3249; CHECK-PREP10-NEXT: lis r4, 37253250; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233251; CHECK-PREP10-NEXT: ori r4, r4, 190253252; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243253; CHECK-PREP10-NEXT: lfsx f1, r3, r43254; CHECK-PREP10-NEXT: blr3255entry:3256 %and = and i64 %ptr, -10995116277763257 %or = or i64 %and, 10000000000003258 %0 = inttoptr i64 %or to ptr3259 %1 = load float, ptr %0, align 40963260 %conv = fpext float %1 to double3261 ret double %conv3262}3263 3264; Function Attrs: norecurse nounwind readonly uwtable willreturn3265define dso_local double @ld_cst_align16_double_float() {3266; CHECK-LABEL: ld_cst_align16_double_float:3267; CHECK: # %bb.0: # %entry3268; CHECK-NEXT: lfs f1, 4080(0)3269; CHECK-NEXT: blr3270entry:3271 %0 = load float, ptr inttoptr (i64 4080 to ptr), align 163272 %conv = fpext float %0 to double3273 ret double %conv3274}3275 3276; Function Attrs: norecurse nounwind readonly uwtable willreturn3277define dso_local double @ld_cst_align32_double_float() {3278; CHECK-LABEL: ld_cst_align32_double_float:3279; CHECK: # %bb.0: # %entry3280; CHECK-NEXT: lis r3, 1533281; CHECK-NEXT: lfs f1, -27108(r3)3282; CHECK-NEXT: blr3283entry:3284 %0 = load float, ptr inttoptr (i64 9999900 to ptr), align 43285 %conv = fpext float %0 to double3286 ret double %conv3287}3288 3289; Function Attrs: norecurse nounwind readonly uwtable willreturn3290define dso_local double @ld_cst_align64_double_float() {3291; CHECK-P10-LABEL: ld_cst_align64_double_float:3292; CHECK-P10: # %bb.0: # %entry3293; CHECK-P10-NEXT: pli r3, 2441406253294; CHECK-P10-NEXT: rldic r3, r3, 12, 243295; CHECK-P10-NEXT: lfs f1, 0(r3)3296; CHECK-P10-NEXT: blr3297;3298; CHECK-PREP10-LABEL: ld_cst_align64_double_float:3299; CHECK-PREP10: # %bb.0: # %entry3300; CHECK-PREP10-NEXT: lis r3, 37253301; CHECK-PREP10-NEXT: ori r3, r3, 190253302; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243303; CHECK-PREP10-NEXT: lfs f1, 0(r3)3304; CHECK-PREP10-NEXT: blr3305entry:3306 %0 = load float, ptr inttoptr (i64 1000000000000 to ptr), align 40963307 %conv = fpext float %0 to double3308 ret double %conv3309}3310 3311; Function Attrs: norecurse nounwind readonly uwtable willreturn3312define dso_local double @ld_0_double_double(i64 %ptr) {3313; CHECK-LABEL: ld_0_double_double:3314; CHECK: # %bb.0: # %entry3315; CHECK-NEXT: lfd f1, 0(r3)3316; CHECK-NEXT: blr3317entry:3318 %0 = inttoptr i64 %ptr to ptr3319 %1 = load double, ptr %0, align 83320 ret double %13321}3322 3323; Function Attrs: norecurse nounwind readonly uwtable willreturn3324define dso_local double @ld_align16_double_double(ptr nocapture readonly %ptr) {3325; CHECK-LABEL: ld_align16_double_double:3326; CHECK: # %bb.0: # %entry3327; CHECK-NEXT: lfd f1, 8(r3)3328; CHECK-NEXT: blr3329entry:3330 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83331 %0 = load double, ptr %add.ptr, align 83332 ret double %03333}3334 3335; Function Attrs: norecurse nounwind readonly uwtable willreturn3336define dso_local double @ld_align32_double_double(ptr nocapture readonly %ptr) {3337; CHECK-P10-LABEL: ld_align32_double_double:3338; CHECK-P10: # %bb.0: # %entry3339; CHECK-P10-NEXT: plfd f1, 99999000(r3), 03340; CHECK-P10-NEXT: blr3341;3342; CHECK-PREP10-LABEL: ld_align32_double_double:3343; CHECK-PREP10: # %bb.0: # %entry3344; CHECK-PREP10-NEXT: lis r4, 15253345; CHECK-PREP10-NEXT: ori r4, r4, 566003346; CHECK-PREP10-NEXT: lfdx f1, r3, r43347; CHECK-PREP10-NEXT: blr3348entry:3349 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003350 %0 = load double, ptr %add.ptr, align 83351 ret double %03352}3353 3354; Function Attrs: norecurse nounwind readonly uwtable willreturn3355define dso_local double @ld_align64_double_double(ptr nocapture readonly %ptr) {3356; CHECK-P10-LABEL: ld_align64_double_double:3357; CHECK-P10: # %bb.0: # %entry3358; CHECK-P10-NEXT: pli r4, 2441406253359; CHECK-P10-NEXT: rldic r4, r4, 12, 243360; CHECK-P10-NEXT: lfdx f1, r3, r43361; CHECK-P10-NEXT: blr3362;3363; CHECK-PREP10-LABEL: ld_align64_double_double:3364; CHECK-PREP10: # %bb.0: # %entry3365; CHECK-PREP10-NEXT: lis r4, 37253366; CHECK-PREP10-NEXT: ori r4, r4, 190253367; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243368; CHECK-PREP10-NEXT: lfdx f1, r3, r43369; CHECK-PREP10-NEXT: blr3370entry:3371 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003372 %0 = load double, ptr %add.ptr, align 83373 ret double %03374}3375 3376; Function Attrs: norecurse nounwind readonly uwtable willreturn3377define dso_local double @ld_reg_double_double(ptr nocapture readonly %ptr, i64 %off) {3378; CHECK-LABEL: ld_reg_double_double:3379; CHECK: # %bb.0: # %entry3380; CHECK-NEXT: lfdx f1, r3, r43381; CHECK-NEXT: blr3382entry:3383 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3384 %0 = load double, ptr %add.ptr, align 83385 ret double %03386}3387 3388; Function Attrs: norecurse nounwind readonly uwtable willreturn3389define dso_local double @ld_or_double_double(i64 %ptr, i8 zeroext %off) {3390; CHECK-LABEL: ld_or_double_double:3391; CHECK: # %bb.0: # %entry3392; CHECK-NEXT: or r3, r4, r33393; CHECK-NEXT: lfd f1, 0(r3)3394; CHECK-NEXT: blr3395entry:3396 %conv = zext i8 %off to i643397 %or = or i64 %conv, %ptr3398 %0 = inttoptr i64 %or to ptr3399 %1 = load double, ptr %0, align 83400 ret double %13401}3402 3403; Function Attrs: norecurse nounwind readonly uwtable willreturn3404define dso_local double @ld_not_disjoint16_double_double(i64 %ptr) {3405; CHECK-LABEL: ld_not_disjoint16_double_double:3406; CHECK: # %bb.0: # %entry3407; CHECK-NEXT: ori r3, r3, 63408; CHECK-NEXT: lfd f1, 0(r3)3409; CHECK-NEXT: blr3410entry:3411 %or = or i64 %ptr, 63412 %0 = inttoptr i64 %or to ptr3413 %1 = load double, ptr %0, align 83414 ret double %13415}3416 3417; Function Attrs: norecurse nounwind readonly uwtable willreturn3418define dso_local double @ld_disjoint_align16_double_double(i64 %ptr) {3419; CHECK-LABEL: ld_disjoint_align16_double_double:3420; CHECK: # %bb.0: # %entry3421; CHECK-NEXT: rldicr r3, r3, 0, 513422; CHECK-NEXT: lfd f1, 24(r3)3423; CHECK-NEXT: blr3424entry:3425 %and = and i64 %ptr, -40963426 %or = or i64 %and, 243427 %0 = inttoptr i64 %or to ptr3428 %1 = load double, ptr %0, align 83429 ret double %13430}3431 3432; Function Attrs: norecurse nounwind readonly uwtable willreturn3433define dso_local double @ld_not_disjoint32_double_double(i64 %ptr) {3434; CHECK-LABEL: ld_not_disjoint32_double_double:3435; CHECK: # %bb.0: # %entry3436; CHECK-NEXT: ori r3, r3, 344633437; CHECK-NEXT: oris r3, r3, 13438; CHECK-NEXT: lfd f1, 0(r3)3439; CHECK-NEXT: blr3440entry:3441 %or = or i64 %ptr, 999993442 %0 = inttoptr i64 %or to ptr3443 %1 = load double, ptr %0, align 83444 ret double %13445}3446 3447; Function Attrs: norecurse nounwind readonly uwtable willreturn3448define dso_local double @ld_disjoint_align32_double_double(i64 %ptr) {3449; CHECK-P10-LABEL: ld_disjoint_align32_double_double:3450; CHECK-P10: # %bb.0: # %entry3451; CHECK-P10-NEXT: lis r4, -152643452; CHECK-P10-NEXT: and r3, r3, r43453; CHECK-P10-NEXT: plfd f1, 999990000(r3), 03454; CHECK-P10-NEXT: blr3455;3456; CHECK-PREP10-LABEL: ld_disjoint_align32_double_double:3457; CHECK-PREP10: # %bb.0: # %entry3458; CHECK-PREP10-NEXT: lis r4, -152643459; CHECK-PREP10-NEXT: and r3, r3, r43460; CHECK-PREP10-NEXT: lis r4, 152583461; CHECK-PREP10-NEXT: ori r4, r4, 417123462; CHECK-PREP10-NEXT: lfdx f1, r3, r43463; CHECK-PREP10-NEXT: blr3464entry:3465 %and = and i64 %ptr, -10003415043466 %or = or i64 %and, 9999900003467 %0 = inttoptr i64 %or to ptr3468 %1 = load double, ptr %0, align 163469 ret double %13470}3471 3472; Function Attrs: norecurse nounwind readonly uwtable willreturn3473define dso_local double @ld_not_disjoint64_double_double(i64 %ptr) {3474; CHECK-P10-LABEL: ld_not_disjoint64_double_double:3475; CHECK-P10: # %bb.0: # %entry3476; CHECK-P10-NEXT: pli r4, 2323477; CHECK-P10-NEXT: pli r5, 35675873293478; CHECK-P10-NEXT: rldimi r5, r4, 32, 03479; CHECK-P10-NEXT: or r3, r3, r53480; CHECK-P10-NEXT: lfd f1, 0(r3)3481; CHECK-P10-NEXT: blr3482;3483; CHECK-PREP10-LABEL: ld_not_disjoint64_double_double:3484; CHECK-PREP10: # %bb.0: # %entry3485; CHECK-PREP10-NEXT: li r4, 293486; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243487; CHECK-PREP10-NEXT: oris r4, r4, 544373488; CHECK-PREP10-NEXT: ori r4, r4, 40973489; CHECK-PREP10-NEXT: or r3, r3, r43490; CHECK-PREP10-NEXT: lfd f1, 0(r3)3491; CHECK-PREP10-NEXT: blr3492entry:3493 %or = or i64 %ptr, 10000000000013494 %0 = inttoptr i64 %or to ptr3495 %1 = load double, ptr %0, align 83496 ret double %13497}3498 3499; Function Attrs: norecurse nounwind readonly uwtable willreturn3500define dso_local double @ld_disjoint_align64_double_double(i64 %ptr) {3501; CHECK-P10-LABEL: ld_disjoint_align64_double_double:3502; CHECK-P10: # %bb.0: # %entry3503; CHECK-P10-NEXT: pli r4, 2441406253504; CHECK-P10-NEXT: rldicr r3, r3, 0, 233505; CHECK-P10-NEXT: rldic r4, r4, 12, 243506; CHECK-P10-NEXT: lfdx f1, r3, r43507; CHECK-P10-NEXT: blr3508;3509; CHECK-PREP10-LABEL: ld_disjoint_align64_double_double:3510; CHECK-PREP10: # %bb.0: # %entry3511; CHECK-PREP10-NEXT: lis r4, 37253512; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233513; CHECK-PREP10-NEXT: ori r4, r4, 190253514; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243515; CHECK-PREP10-NEXT: lfdx f1, r3, r43516; CHECK-PREP10-NEXT: blr3517entry:3518 %and = and i64 %ptr, -10995116277763519 %or = or i64 %and, 10000000000003520 %0 = inttoptr i64 %or to ptr3521 %1 = load double, ptr %0, align 40963522 ret double %13523}3524 3525; Function Attrs: norecurse nounwind readonly uwtable willreturn3526define dso_local double @ld_cst_align16_double_double() {3527; CHECK-LABEL: ld_cst_align16_double_double:3528; CHECK: # %bb.0: # %entry3529; CHECK-NEXT: lfd f1, 4080(0)3530; CHECK-NEXT: blr3531entry:3532 %0 = load double, ptr inttoptr (i64 4080 to ptr), align 163533 ret double %03534}3535 3536; Function Attrs: norecurse nounwind readonly uwtable willreturn3537define dso_local double @ld_cst_align32_double_double() {3538; CHECK-LABEL: ld_cst_align32_double_double:3539; CHECK: # %bb.0: # %entry3540; CHECK-NEXT: lis r3, 1533541; CHECK-NEXT: lfd f1, -27108(r3)3542; CHECK-NEXT: blr3543entry:3544 %0 = load double, ptr inttoptr (i64 9999900 to ptr), align 83545 ret double %03546}3547 3548; Function Attrs: norecurse nounwind readonly uwtable willreturn3549define dso_local double @ld_cst_align64_double_double() {3550; CHECK-P10-LABEL: ld_cst_align64_double_double:3551; CHECK-P10: # %bb.0: # %entry3552; CHECK-P10-NEXT: pli r3, 2441406253553; CHECK-P10-NEXT: rldic r3, r3, 12, 243554; CHECK-P10-NEXT: lfd f1, 0(r3)3555; CHECK-P10-NEXT: blr3556;3557; CHECK-PREP10-LABEL: ld_cst_align64_double_double:3558; CHECK-PREP10: # %bb.0: # %entry3559; CHECK-PREP10-NEXT: lis r3, 37253560; CHECK-PREP10-NEXT: ori r3, r3, 190253561; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243562; CHECK-PREP10-NEXT: lfd f1, 0(r3)3563; CHECK-PREP10-NEXT: blr3564entry:3565 %0 = load double, ptr inttoptr (i64 1000000000000 to ptr), align 40963566 ret double %03567}3568 3569; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3570define dso_local void @st_0_double_uint8_t(i64 %ptr, double %str) {3571; CHECK-POSTP8-LABEL: st_0_double_uint8_t:3572; CHECK-POSTP8: # %bb.0: # %entry3573; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13574; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33575; CHECK-POSTP8-NEXT: blr3576;3577; CHECK-P8-LABEL: st_0_double_uint8_t:3578; CHECK-P8: # %bb.0: # %entry3579; CHECK-P8-NEXT: xscvdpsxws f0, f13580; CHECK-P8-NEXT: mffprwz r4, f03581; CHECK-P8-NEXT: stb r4, 0(r3)3582; CHECK-P8-NEXT: blr3583entry:3584 %conv = fptoui double %str to i83585 %0 = inttoptr i64 %ptr to ptr3586 store i8 %conv, ptr %0, align 13587 ret void3588}3589 3590; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3591define dso_local void @st_align16_double_uint8_t(ptr nocapture %ptr, double %str) {3592; CHECK-POSTP8-LABEL: st_align16_double_uint8_t:3593; CHECK-POSTP8: # %bb.0: # %entry3594; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13595; CHECK-POSTP8-NEXT: addi r3, r3, 83596; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33597; CHECK-POSTP8-NEXT: blr3598;3599; CHECK-P8-LABEL: st_align16_double_uint8_t:3600; CHECK-P8: # %bb.0: # %entry3601; CHECK-P8-NEXT: xscvdpsxws f0, f13602; CHECK-P8-NEXT: mffprwz r4, f03603; CHECK-P8-NEXT: stb r4, 8(r3)3604; CHECK-P8-NEXT: blr3605entry:3606 %conv = fptoui double %str to i83607 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83608 store i8 %conv, ptr %add.ptr, align 13609 ret void3610}3611 3612; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3613define dso_local void @st_align32_double_uint8_t(ptr nocapture %ptr, double %str) {3614; CHECK-P10-LABEL: st_align32_double_uint8_t:3615; CHECK-P10: # %bb.0: # %entry3616; CHECK-P10-NEXT: xscvdpuxds f0, f13617; CHECK-P10-NEXT: pli r4, 999990003618; CHECK-P10-NEXT: stxsibx f0, r3, r43619; CHECK-P10-NEXT: blr3620;3621; CHECK-P9-LABEL: st_align32_double_uint8_t:3622; CHECK-P9: # %bb.0: # %entry3623; CHECK-P9-NEXT: xscvdpuxds f0, f13624; CHECK-P9-NEXT: lis r4, 15253625; CHECK-P9-NEXT: ori r4, r4, 566003626; CHECK-P9-NEXT: stxsibx f0, r3, r43627; CHECK-P9-NEXT: blr3628;3629; CHECK-P8-LABEL: st_align32_double_uint8_t:3630; CHECK-P8: # %bb.0: # %entry3631; CHECK-P8-NEXT: xscvdpsxws f0, f13632; CHECK-P8-NEXT: lis r5, 15253633; CHECK-P8-NEXT: ori r5, r5, 566003634; CHECK-P8-NEXT: mffprwz r4, f03635; CHECK-P8-NEXT: stbx r4, r3, r53636; CHECK-P8-NEXT: blr3637entry:3638 %conv = fptoui double %str to i83639 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003640 store i8 %conv, ptr %add.ptr, align 13641 ret void3642}3643 3644; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3645define dso_local void @st_align64_double_uint8_t(ptr nocapture %ptr, double %str) {3646; CHECK-P10-LABEL: st_align64_double_uint8_t:3647; CHECK-P10: # %bb.0: # %entry3648; CHECK-P10-NEXT: xscvdpuxds f0, f13649; CHECK-P10-NEXT: pli r4, 2441406253650; CHECK-P10-NEXT: rldic r4, r4, 12, 243651; CHECK-P10-NEXT: stxsibx f0, r3, r43652; CHECK-P10-NEXT: blr3653;3654; CHECK-P9-LABEL: st_align64_double_uint8_t:3655; CHECK-P9: # %bb.0: # %entry3656; CHECK-P9-NEXT: xscvdpuxds f0, f13657; CHECK-P9-NEXT: lis r4, 37253658; CHECK-P9-NEXT: ori r4, r4, 190253659; CHECK-P9-NEXT: rldic r4, r4, 12, 243660; CHECK-P9-NEXT: stxsibx f0, r3, r43661; CHECK-P9-NEXT: blr3662;3663; CHECK-P8-LABEL: st_align64_double_uint8_t:3664; CHECK-P8: # %bb.0: # %entry3665; CHECK-P8-NEXT: xscvdpsxws f0, f13666; CHECK-P8-NEXT: lis r5, 37253667; CHECK-P8-NEXT: ori r5, r5, 190253668; CHECK-P8-NEXT: rldic r5, r5, 12, 243669; CHECK-P8-NEXT: mffprwz r4, f03670; CHECK-P8-NEXT: stbx r4, r3, r53671; CHECK-P8-NEXT: blr3672entry:3673 %conv = fptoui double %str to i83674 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003675 store i8 %conv, ptr %add.ptr, align 13676 ret void3677}3678 3679; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3680define dso_local void @st_reg_double_uint8_t(ptr nocapture %ptr, i64 %off, double %str) {3681; CHECK-POSTP8-LABEL: st_reg_double_uint8_t:3682; CHECK-POSTP8: # %bb.0: # %entry3683; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13684; CHECK-POSTP8-NEXT: stxsibx f0, r3, r43685; CHECK-POSTP8-NEXT: blr3686;3687; CHECK-P8-LABEL: st_reg_double_uint8_t:3688; CHECK-P8: # %bb.0: # %entry3689; CHECK-P8-NEXT: xscvdpsxws f0, f13690; CHECK-P8-NEXT: mffprwz r5, f03691; CHECK-P8-NEXT: stbx r5, r3, r43692; CHECK-P8-NEXT: blr3693entry:3694 %conv = fptoui double %str to i83695 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3696 store i8 %conv, ptr %add.ptr, align 13697 ret void3698}3699 3700; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3701define dso_local void @st_or1_double_uint8_t(i64 %ptr, i8 zeroext %off, double %str) {3702; CHECK-POSTP8-LABEL: st_or1_double_uint8_t:3703; CHECK-POSTP8: # %bb.0: # %entry3704; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13705; CHECK-POSTP8-NEXT: or r3, r4, r33706; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33707; CHECK-POSTP8-NEXT: blr3708;3709; CHECK-P8-LABEL: st_or1_double_uint8_t:3710; CHECK-P8: # %bb.0: # %entry3711; CHECK-P8-NEXT: xscvdpsxws f0, f13712; CHECK-P8-NEXT: or r3, r4, r33713; CHECK-P8-NEXT: mffprwz r5, f03714; CHECK-P8-NEXT: stb r5, 0(r3)3715; CHECK-P8-NEXT: blr3716entry:3717 %conv = fptoui double %str to i83718 %conv1 = zext i8 %off to i643719 %or = or i64 %conv1, %ptr3720 %0 = inttoptr i64 %or to ptr3721 store i8 %conv, ptr %0, align 13722 ret void3723}3724 3725; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3726define dso_local void @st_not_disjoint16_double_uint8_t(i64 %ptr, double %str) {3727; CHECK-POSTP8-LABEL: st_not_disjoint16_double_uint8_t:3728; CHECK-POSTP8: # %bb.0: # %entry3729; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13730; CHECK-POSTP8-NEXT: ori r3, r3, 63731; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33732; CHECK-POSTP8-NEXT: blr3733;3734; CHECK-P8-LABEL: st_not_disjoint16_double_uint8_t:3735; CHECK-P8: # %bb.0: # %entry3736; CHECK-P8-NEXT: xscvdpsxws f0, f13737; CHECK-P8-NEXT: ori r3, r3, 63738; CHECK-P8-NEXT: mffprwz r4, f03739; CHECK-P8-NEXT: stb r4, 0(r3)3740; CHECK-P8-NEXT: blr3741entry:3742 %conv = fptoui double %str to i83743 %or = or i64 %ptr, 63744 %0 = inttoptr i64 %or to ptr3745 store i8 %conv, ptr %0, align 13746 ret void3747}3748 3749; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3750define dso_local void @st_disjoint_align16_double_uint8_t(i64 %ptr, double %str) {3751; CHECK-POSTP8-LABEL: st_disjoint_align16_double_uint8_t:3752; CHECK-POSTP8: # %bb.0: # %entry3753; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13754; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 513755; CHECK-POSTP8-NEXT: ori r3, r3, 243756; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33757; CHECK-POSTP8-NEXT: blr3758;3759; CHECK-P8-LABEL: st_disjoint_align16_double_uint8_t:3760; CHECK-P8: # %bb.0: # %entry3761; CHECK-P8-NEXT: xscvdpsxws f0, f13762; CHECK-P8-NEXT: rldicr r3, r3, 0, 513763; CHECK-P8-NEXT: mffprwz r4, f03764; CHECK-P8-NEXT: stb r4, 24(r3)3765; CHECK-P8-NEXT: blr3766entry:3767 %and = and i64 %ptr, -40963768 %conv = fptoui double %str to i83769 %or = or i64 %and, 243770 %0 = inttoptr i64 %or to ptr3771 store i8 %conv, ptr %0, align 83772 ret void3773}3774 3775; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3776define dso_local void @st_not_disjoint32_double_uint8_t(i64 %ptr, double %str) {3777; CHECK-POSTP8-LABEL: st_not_disjoint32_double_uint8_t:3778; CHECK-POSTP8: # %bb.0: # %entry3779; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13780; CHECK-POSTP8-NEXT: ori r3, r3, 344633781; CHECK-POSTP8-NEXT: oris r3, r3, 13782; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33783; CHECK-POSTP8-NEXT: blr3784;3785; CHECK-P8-LABEL: st_not_disjoint32_double_uint8_t:3786; CHECK-P8: # %bb.0: # %entry3787; CHECK-P8-NEXT: xscvdpsxws f0, f13788; CHECK-P8-NEXT: ori r3, r3, 344633789; CHECK-P8-NEXT: oris r3, r3, 13790; CHECK-P8-NEXT: mffprwz r4, f03791; CHECK-P8-NEXT: stb r4, 0(r3)3792; CHECK-P8-NEXT: blr3793entry:3794 %conv = fptoui double %str to i83795 %or = or i64 %ptr, 999993796 %0 = inttoptr i64 %or to ptr3797 store i8 %conv, ptr %0, align 13798 ret void3799}3800 3801; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3802define dso_local void @st_disjoint_align32_double_uint8_t(i64 %ptr, double %str) {3803; CHECK-P10-LABEL: st_disjoint_align32_double_uint8_t:3804; CHECK-P10: # %bb.0: # %entry3805; CHECK-P10-NEXT: xscvdpuxds f0, f13806; CHECK-P10-NEXT: lis r4, -152643807; CHECK-P10-NEXT: and r3, r3, r43808; CHECK-P10-NEXT: pli r4, 9999900003809; CHECK-P10-NEXT: stxsibx f0, r3, r43810; CHECK-P10-NEXT: blr3811;3812; CHECK-P9-LABEL: st_disjoint_align32_double_uint8_t:3813; CHECK-P9: # %bb.0: # %entry3814; CHECK-P9-NEXT: xscvdpuxds f0, f13815; CHECK-P9-NEXT: lis r4, -152643816; CHECK-P9-NEXT: and r3, r3, r43817; CHECK-P9-NEXT: lis r4, 152583818; CHECK-P9-NEXT: ori r4, r4, 417123819; CHECK-P9-NEXT: stxsibx f0, r3, r43820; CHECK-P9-NEXT: blr3821;3822; CHECK-P8-LABEL: st_disjoint_align32_double_uint8_t:3823; CHECK-P8: # %bb.0: # %entry3824; CHECK-P8-NEXT: xscvdpsxws f0, f13825; CHECK-P8-NEXT: lis r4, -152643826; CHECK-P8-NEXT: lis r5, 152583827; CHECK-P8-NEXT: and r3, r3, r43828; CHECK-P8-NEXT: ori r5, r5, 417123829; CHECK-P8-NEXT: mffprwz r4, f03830; CHECK-P8-NEXT: stbx r4, r3, r53831; CHECK-P8-NEXT: blr3832entry:3833 %and = and i64 %ptr, -10003415043834 %conv = fptoui double %str to i83835 %or = or i64 %and, 9999900003836 %0 = inttoptr i64 %or to ptr3837 store i8 %conv, ptr %0, align 163838 ret void3839}3840 3841; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3842define dso_local void @st_not_disjoint64_double_uint8_t(i64 %ptr, double %str) {3843; CHECK-P10-LABEL: st_not_disjoint64_double_uint8_t:3844; CHECK-P10: # %bb.0: # %entry3845; CHECK-P10-NEXT: xscvdpuxds f0, f13846; CHECK-P10-NEXT: pli r4, 2323847; CHECK-P10-NEXT: pli r5, 35675873293848; CHECK-P10-NEXT: rldimi r5, r4, 32, 03849; CHECK-P10-NEXT: or r3, r3, r53850; CHECK-P10-NEXT: stxsibx f0, 0, r33851; CHECK-P10-NEXT: blr3852;3853; CHECK-P9-LABEL: st_not_disjoint64_double_uint8_t:3854; CHECK-P9: # %bb.0: # %entry3855; CHECK-P9-NEXT: li r4, 293856; CHECK-P9-NEXT: xscvdpuxds f0, f13857; CHECK-P9-NEXT: rldic r4, r4, 35, 243858; CHECK-P9-NEXT: oris r4, r4, 544373859; CHECK-P9-NEXT: ori r4, r4, 40973860; CHECK-P9-NEXT: or r3, r3, r43861; CHECK-P9-NEXT: stxsibx f0, 0, r33862; CHECK-P9-NEXT: blr3863;3864; CHECK-P8-LABEL: st_not_disjoint64_double_uint8_t:3865; CHECK-P8: # %bb.0: # %entry3866; CHECK-P8-NEXT: xscvdpsxws f0, f13867; CHECK-P8-NEXT: li r5, 293868; CHECK-P8-NEXT: rldic r5, r5, 35, 243869; CHECK-P8-NEXT: oris r5, r5, 544373870; CHECK-P8-NEXT: mffprwz r4, f03871; CHECK-P8-NEXT: ori r5, r5, 40973872; CHECK-P8-NEXT: or r3, r3, r53873; CHECK-P8-NEXT: stb r4, 0(r3)3874; CHECK-P8-NEXT: blr3875entry:3876 %conv = fptoui double %str to i83877 %or = or i64 %ptr, 10000000000013878 %0 = inttoptr i64 %or to ptr3879 store i8 %conv, ptr %0, align 13880 ret void3881}3882 3883; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3884define dso_local void @st_disjoint_align64_double_uint8_t(i64 %ptr, double %str) {3885; CHECK-P10-LABEL: st_disjoint_align64_double_uint8_t:3886; CHECK-P10: # %bb.0: # %entry3887; CHECK-P10-NEXT: xscvdpuxds f0, f13888; CHECK-P10-NEXT: pli r4, 2441406253889; CHECK-P10-NEXT: rldicr r3, r3, 0, 233890; CHECK-P10-NEXT: rldic r4, r4, 12, 243891; CHECK-P10-NEXT: stxsibx f0, r3, r43892; CHECK-P10-NEXT: blr3893;3894; CHECK-P9-LABEL: st_disjoint_align64_double_uint8_t:3895; CHECK-P9: # %bb.0: # %entry3896; CHECK-P9-NEXT: xscvdpuxds f0, f13897; CHECK-P9-NEXT: lis r4, 37253898; CHECK-P9-NEXT: rldicr r3, r3, 0, 233899; CHECK-P9-NEXT: ori r4, r4, 190253900; CHECK-P9-NEXT: rldic r4, r4, 12, 243901; CHECK-P9-NEXT: stxsibx f0, r3, r43902; CHECK-P9-NEXT: blr3903;3904; CHECK-P8-LABEL: st_disjoint_align64_double_uint8_t:3905; CHECK-P8: # %bb.0: # %entry3906; CHECK-P8-NEXT: xscvdpsxws f0, f13907; CHECK-P8-NEXT: lis r5, 37253908; CHECK-P8-NEXT: rldicr r3, r3, 0, 233909; CHECK-P8-NEXT: ori r5, r5, 190253910; CHECK-P8-NEXT: rldic r5, r5, 12, 243911; CHECK-P8-NEXT: mffprwz r4, f03912; CHECK-P8-NEXT: stbx r4, r3, r53913; CHECK-P8-NEXT: blr3914entry:3915 %and = and i64 %ptr, -10995116277763916 %conv = fptoui double %str to i83917 %or = or i64 %and, 10000000000003918 %0 = inttoptr i64 %or to ptr3919 store i8 %conv, ptr %0, align 40963920 ret void3921}3922 3923; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3924define dso_local void @st_cst_align16_double_uint8_t(double %str) {3925; CHECK-POSTP8-LABEL: st_cst_align16_double_uint8_t:3926; CHECK-POSTP8: # %bb.0: # %entry3927; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13928; CHECK-POSTP8-NEXT: li r3, 40803929; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33930; CHECK-POSTP8-NEXT: blr3931;3932; CHECK-P8-LABEL: st_cst_align16_double_uint8_t:3933; CHECK-P8: # %bb.0: # %entry3934; CHECK-P8-NEXT: xscvdpsxws f0, f13935; CHECK-P8-NEXT: mffprwz r3, f03936; CHECK-P8-NEXT: stb r3, 4080(0)3937; CHECK-P8-NEXT: blr3938entry:3939 %conv = fptoui double %str to i83940 store i8 %conv, ptr inttoptr (i64 4080 to ptr), align 163941 ret void3942}3943 3944; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3945define dso_local void @st_cst_align32_double_uint8_t(double %str) {3946; CHECK-P10-LABEL: st_cst_align32_double_uint8_t:3947; CHECK-P10: # %bb.0: # %entry3948; CHECK-P10-NEXT: xscvdpuxds f0, f13949; CHECK-P10-NEXT: pli r3, 99999003950; CHECK-P10-NEXT: stxsibx f0, 0, r33951; CHECK-P10-NEXT: blr3952;3953; CHECK-P9-LABEL: st_cst_align32_double_uint8_t:3954; CHECK-P9: # %bb.0: # %entry3955; CHECK-P9-NEXT: xscvdpuxds f0, f13956; CHECK-P9-NEXT: lis r3, 1523957; CHECK-P9-NEXT: ori r3, r3, 384283958; CHECK-P9-NEXT: stxsibx f0, 0, r33959; CHECK-P9-NEXT: blr3960;3961; CHECK-P8-LABEL: st_cst_align32_double_uint8_t:3962; CHECK-P8: # %bb.0: # %entry3963; CHECK-P8-NEXT: xscvdpsxws f0, f13964; CHECK-P8-NEXT: lis r4, 1533965; CHECK-P8-NEXT: mffprwz r3, f03966; CHECK-P8-NEXT: stb r3, -27108(r4)3967; CHECK-P8-NEXT: blr3968entry:3969 %conv = fptoui double %str to i83970 store i8 %conv, ptr inttoptr (i64 9999900 to ptr), align 43971 ret void3972}3973 3974; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3975define dso_local void @st_cst_align64_double_uint8_t(double %str) {3976; CHECK-P10-LABEL: st_cst_align64_double_uint8_t:3977; CHECK-P10: # %bb.0: # %entry3978; CHECK-P10-NEXT: xscvdpuxds f0, f13979; CHECK-P10-NEXT: pli r3, 2441406253980; CHECK-P10-NEXT: rldic r3, r3, 12, 243981; CHECK-P10-NEXT: stxsibx f0, 0, r33982; CHECK-P10-NEXT: blr3983;3984; CHECK-P9-LABEL: st_cst_align64_double_uint8_t:3985; CHECK-P9: # %bb.0: # %entry3986; CHECK-P9-NEXT: xscvdpuxds f0, f13987; CHECK-P9-NEXT: lis r3, 37253988; CHECK-P9-NEXT: ori r3, r3, 190253989; CHECK-P9-NEXT: rldic r3, r3, 12, 243990; CHECK-P9-NEXT: stxsibx f0, 0, r33991; CHECK-P9-NEXT: blr3992;3993; CHECK-P8-LABEL: st_cst_align64_double_uint8_t:3994; CHECK-P8: # %bb.0: # %entry3995; CHECK-P8-NEXT: xscvdpsxws f0, f13996; CHECK-P8-NEXT: lis r4, 37253997; CHECK-P8-NEXT: ori r4, r4, 190253998; CHECK-P8-NEXT: rldic r4, r4, 12, 243999; CHECK-P8-NEXT: mffprwz r3, f04000; CHECK-P8-NEXT: stb r3, 0(r4)4001; CHECK-P8-NEXT: blr4002entry:4003 %conv = fptoui double %str to i84004 store i8 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40964005 ret void4006}4007 4008; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4009define dso_local void @st_0_double_int8_t(i64 %ptr, double %str) {4010; CHECK-POSTP8-LABEL: st_0_double_int8_t:4011; CHECK-POSTP8: # %bb.0: # %entry4012; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14013; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34014; CHECK-POSTP8-NEXT: blr4015;4016; CHECK-P8-LABEL: st_0_double_int8_t:4017; CHECK-P8: # %bb.0: # %entry4018; CHECK-P8-NEXT: xscvdpsxws f0, f14019; CHECK-P8-NEXT: mffprwz r4, f04020; CHECK-P8-NEXT: stb r4, 0(r3)4021; CHECK-P8-NEXT: blr4022entry:4023 %conv = fptosi double %str to i84024 %0 = inttoptr i64 %ptr to ptr4025 store i8 %conv, ptr %0, align 14026 ret void4027}4028 4029; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4030define dso_local void @st_align16_double_int8_t(ptr nocapture %ptr, double %str) {4031; CHECK-POSTP8-LABEL: st_align16_double_int8_t:4032; CHECK-POSTP8: # %bb.0: # %entry4033; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14034; CHECK-POSTP8-NEXT: addi r3, r3, 84035; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34036; CHECK-POSTP8-NEXT: blr4037;4038; CHECK-P8-LABEL: st_align16_double_int8_t:4039; CHECK-P8: # %bb.0: # %entry4040; CHECK-P8-NEXT: xscvdpsxws f0, f14041; CHECK-P8-NEXT: mffprwz r4, f04042; CHECK-P8-NEXT: stb r4, 8(r3)4043; CHECK-P8-NEXT: blr4044entry:4045 %conv = fptosi double %str to i84046 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84047 store i8 %conv, ptr %add.ptr, align 14048 ret void4049}4050 4051; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4052define dso_local void @st_align32_double_int8_t(ptr nocapture %ptr, double %str) {4053; CHECK-P10-LABEL: st_align32_double_int8_t:4054; CHECK-P10: # %bb.0: # %entry4055; CHECK-P10-NEXT: xscvdpsxds f0, f14056; CHECK-P10-NEXT: pli r4, 999990004057; CHECK-P10-NEXT: stxsibx f0, r3, r44058; CHECK-P10-NEXT: blr4059;4060; CHECK-P9-LABEL: st_align32_double_int8_t:4061; CHECK-P9: # %bb.0: # %entry4062; CHECK-P9-NEXT: xscvdpsxds f0, f14063; CHECK-P9-NEXT: lis r4, 15254064; CHECK-P9-NEXT: ori r4, r4, 566004065; CHECK-P9-NEXT: stxsibx f0, r3, r44066; CHECK-P9-NEXT: blr4067;4068; CHECK-P8-LABEL: st_align32_double_int8_t:4069; CHECK-P8: # %bb.0: # %entry4070; CHECK-P8-NEXT: xscvdpsxws f0, f14071; CHECK-P8-NEXT: lis r5, 15254072; CHECK-P8-NEXT: ori r5, r5, 566004073; CHECK-P8-NEXT: mffprwz r4, f04074; CHECK-P8-NEXT: stbx r4, r3, r54075; CHECK-P8-NEXT: blr4076entry:4077 %conv = fptosi double %str to i84078 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004079 store i8 %conv, ptr %add.ptr, align 14080 ret void4081}4082 4083; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4084define dso_local void @st_align64_double_int8_t(ptr nocapture %ptr, double %str) {4085; CHECK-P10-LABEL: st_align64_double_int8_t:4086; CHECK-P10: # %bb.0: # %entry4087; CHECK-P10-NEXT: xscvdpsxds f0, f14088; CHECK-P10-NEXT: pli r4, 2441406254089; CHECK-P10-NEXT: rldic r4, r4, 12, 244090; CHECK-P10-NEXT: stxsibx f0, r3, r44091; CHECK-P10-NEXT: blr4092;4093; CHECK-P9-LABEL: st_align64_double_int8_t:4094; CHECK-P9: # %bb.0: # %entry4095; CHECK-P9-NEXT: xscvdpsxds f0, f14096; CHECK-P9-NEXT: lis r4, 37254097; CHECK-P9-NEXT: ori r4, r4, 190254098; CHECK-P9-NEXT: rldic r4, r4, 12, 244099; CHECK-P9-NEXT: stxsibx f0, r3, r44100; CHECK-P9-NEXT: blr4101;4102; CHECK-P8-LABEL: st_align64_double_int8_t:4103; CHECK-P8: # %bb.0: # %entry4104; CHECK-P8-NEXT: xscvdpsxws f0, f14105; CHECK-P8-NEXT: lis r5, 37254106; CHECK-P8-NEXT: ori r5, r5, 190254107; CHECK-P8-NEXT: rldic r5, r5, 12, 244108; CHECK-P8-NEXT: mffprwz r4, f04109; CHECK-P8-NEXT: stbx r4, r3, r54110; CHECK-P8-NEXT: blr4111entry:4112 %conv = fptosi double %str to i84113 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004114 store i8 %conv, ptr %add.ptr, align 14115 ret void4116}4117 4118; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4119define dso_local void @st_reg_double_int8_t(ptr nocapture %ptr, i64 %off, double %str) {4120; CHECK-POSTP8-LABEL: st_reg_double_int8_t:4121; CHECK-POSTP8: # %bb.0: # %entry4122; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14123; CHECK-POSTP8-NEXT: stxsibx f0, r3, r44124; CHECK-POSTP8-NEXT: blr4125;4126; CHECK-P8-LABEL: st_reg_double_int8_t:4127; CHECK-P8: # %bb.0: # %entry4128; CHECK-P8-NEXT: xscvdpsxws f0, f14129; CHECK-P8-NEXT: mffprwz r5, f04130; CHECK-P8-NEXT: stbx r5, r3, r44131; CHECK-P8-NEXT: blr4132entry:4133 %conv = fptosi double %str to i84134 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4135 store i8 %conv, ptr %add.ptr, align 14136 ret void4137}4138 4139; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4140define dso_local void @st_or1_double_int8_t(i64 %ptr, i8 zeroext %off, double %str) {4141; CHECK-POSTP8-LABEL: st_or1_double_int8_t:4142; CHECK-POSTP8: # %bb.0: # %entry4143; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14144; CHECK-POSTP8-NEXT: or r3, r4, r34145; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34146; CHECK-POSTP8-NEXT: blr4147;4148; CHECK-P8-LABEL: st_or1_double_int8_t:4149; CHECK-P8: # %bb.0: # %entry4150; CHECK-P8-NEXT: xscvdpsxws f0, f14151; CHECK-P8-NEXT: or r3, r4, r34152; CHECK-P8-NEXT: mffprwz r5, f04153; CHECK-P8-NEXT: stb r5, 0(r3)4154; CHECK-P8-NEXT: blr4155entry:4156 %conv = fptosi double %str to i84157 %conv1 = zext i8 %off to i644158 %or = or i64 %conv1, %ptr4159 %0 = inttoptr i64 %or to ptr4160 store i8 %conv, ptr %0, align 14161 ret void4162}4163 4164; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4165define dso_local void @st_not_disjoint16_double_int8_t(i64 %ptr, double %str) {4166; CHECK-POSTP8-LABEL: st_not_disjoint16_double_int8_t:4167; CHECK-POSTP8: # %bb.0: # %entry4168; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14169; CHECK-POSTP8-NEXT: ori r3, r3, 64170; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34171; CHECK-POSTP8-NEXT: blr4172;4173; CHECK-P8-LABEL: st_not_disjoint16_double_int8_t:4174; CHECK-P8: # %bb.0: # %entry4175; CHECK-P8-NEXT: xscvdpsxws f0, f14176; CHECK-P8-NEXT: ori r3, r3, 64177; CHECK-P8-NEXT: mffprwz r4, f04178; CHECK-P8-NEXT: stb r4, 0(r3)4179; CHECK-P8-NEXT: blr4180entry:4181 %conv = fptosi double %str to i84182 %or = or i64 %ptr, 64183 %0 = inttoptr i64 %or to ptr4184 store i8 %conv, ptr %0, align 14185 ret void4186}4187 4188; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4189define dso_local void @st_disjoint_align16_double_int8_t(i64 %ptr, double %str) {4190; CHECK-POSTP8-LABEL: st_disjoint_align16_double_int8_t:4191; CHECK-POSTP8: # %bb.0: # %entry4192; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14193; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 514194; CHECK-POSTP8-NEXT: ori r3, r3, 244195; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34196; CHECK-POSTP8-NEXT: blr4197;4198; CHECK-P8-LABEL: st_disjoint_align16_double_int8_t:4199; CHECK-P8: # %bb.0: # %entry4200; CHECK-P8-NEXT: xscvdpsxws f0, f14201; CHECK-P8-NEXT: rldicr r3, r3, 0, 514202; CHECK-P8-NEXT: mffprwz r4, f04203; CHECK-P8-NEXT: stb r4, 24(r3)4204; CHECK-P8-NEXT: blr4205entry:4206 %and = and i64 %ptr, -40964207 %conv = fptosi double %str to i84208 %or = or i64 %and, 244209 %0 = inttoptr i64 %or to ptr4210 store i8 %conv, ptr %0, align 84211 ret void4212}4213 4214; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4215define dso_local void @st_not_disjoint32_double_int8_t(i64 %ptr, double %str) {4216; CHECK-POSTP8-LABEL: st_not_disjoint32_double_int8_t:4217; CHECK-POSTP8: # %bb.0: # %entry4218; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14219; CHECK-POSTP8-NEXT: ori r3, r3, 344634220; CHECK-POSTP8-NEXT: oris r3, r3, 14221; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34222; CHECK-POSTP8-NEXT: blr4223;4224; CHECK-P8-LABEL: st_not_disjoint32_double_int8_t:4225; CHECK-P8: # %bb.0: # %entry4226; CHECK-P8-NEXT: xscvdpsxws f0, f14227; CHECK-P8-NEXT: ori r3, r3, 344634228; CHECK-P8-NEXT: oris r3, r3, 14229; CHECK-P8-NEXT: mffprwz r4, f04230; CHECK-P8-NEXT: stb r4, 0(r3)4231; CHECK-P8-NEXT: blr4232entry:4233 %conv = fptosi double %str to i84234 %or = or i64 %ptr, 999994235 %0 = inttoptr i64 %or to ptr4236 store i8 %conv, ptr %0, align 14237 ret void4238}4239 4240; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4241define dso_local void @st_disjoint_align32_double_int8_t(i64 %ptr, double %str) {4242; CHECK-P10-LABEL: st_disjoint_align32_double_int8_t:4243; CHECK-P10: # %bb.0: # %entry4244; CHECK-P10-NEXT: xscvdpsxds f0, f14245; CHECK-P10-NEXT: lis r4, -152644246; CHECK-P10-NEXT: and r3, r3, r44247; CHECK-P10-NEXT: pli r4, 9999900004248; CHECK-P10-NEXT: stxsibx f0, r3, r44249; CHECK-P10-NEXT: blr4250;4251; CHECK-P9-LABEL: st_disjoint_align32_double_int8_t:4252; CHECK-P9: # %bb.0: # %entry4253; CHECK-P9-NEXT: xscvdpsxds f0, f14254; CHECK-P9-NEXT: lis r4, -152644255; CHECK-P9-NEXT: and r3, r3, r44256; CHECK-P9-NEXT: lis r4, 152584257; CHECK-P9-NEXT: ori r4, r4, 417124258; CHECK-P9-NEXT: stxsibx f0, r3, r44259; CHECK-P9-NEXT: blr4260;4261; CHECK-P8-LABEL: st_disjoint_align32_double_int8_t:4262; CHECK-P8: # %bb.0: # %entry4263; CHECK-P8-NEXT: xscvdpsxws f0, f14264; CHECK-P8-NEXT: lis r4, -152644265; CHECK-P8-NEXT: lis r5, 152584266; CHECK-P8-NEXT: and r3, r3, r44267; CHECK-P8-NEXT: ori r5, r5, 417124268; CHECK-P8-NEXT: mffprwz r4, f04269; CHECK-P8-NEXT: stbx r4, r3, r54270; CHECK-P8-NEXT: blr4271entry:4272 %and = and i64 %ptr, -10003415044273 %conv = fptosi double %str to i84274 %or = or i64 %and, 9999900004275 %0 = inttoptr i64 %or to ptr4276 store i8 %conv, ptr %0, align 164277 ret void4278}4279 4280; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4281define dso_local void @st_not_disjoint64_double_int8_t(i64 %ptr, double %str) {4282; CHECK-P10-LABEL: st_not_disjoint64_double_int8_t:4283; CHECK-P10: # %bb.0: # %entry4284; CHECK-P10-NEXT: xscvdpsxds f0, f14285; CHECK-P10-NEXT: pli r4, 2324286; CHECK-P10-NEXT: pli r5, 35675873294287; CHECK-P10-NEXT: rldimi r5, r4, 32, 04288; CHECK-P10-NEXT: or r3, r3, r54289; CHECK-P10-NEXT: stxsibx f0, 0, r34290; CHECK-P10-NEXT: blr4291;4292; CHECK-P9-LABEL: st_not_disjoint64_double_int8_t:4293; CHECK-P9: # %bb.0: # %entry4294; CHECK-P9-NEXT: li r4, 294295; CHECK-P9-NEXT: xscvdpsxds f0, f14296; CHECK-P9-NEXT: rldic r4, r4, 35, 244297; CHECK-P9-NEXT: oris r4, r4, 544374298; CHECK-P9-NEXT: ori r4, r4, 40974299; CHECK-P9-NEXT: or r3, r3, r44300; CHECK-P9-NEXT: stxsibx f0, 0, r34301; CHECK-P9-NEXT: blr4302;4303; CHECK-P8-LABEL: st_not_disjoint64_double_int8_t:4304; CHECK-P8: # %bb.0: # %entry4305; CHECK-P8-NEXT: xscvdpsxws f0, f14306; CHECK-P8-NEXT: li r5, 294307; CHECK-P8-NEXT: rldic r5, r5, 35, 244308; CHECK-P8-NEXT: oris r5, r5, 544374309; CHECK-P8-NEXT: mffprwz r4, f04310; CHECK-P8-NEXT: ori r5, r5, 40974311; CHECK-P8-NEXT: or r3, r3, r54312; CHECK-P8-NEXT: stb r4, 0(r3)4313; CHECK-P8-NEXT: blr4314entry:4315 %conv = fptosi double %str to i84316 %or = or i64 %ptr, 10000000000014317 %0 = inttoptr i64 %or to ptr4318 store i8 %conv, ptr %0, align 14319 ret void4320}4321 4322; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4323define dso_local void @st_disjoint_align64_double_int8_t(i64 %ptr, double %str) {4324; CHECK-P10-LABEL: st_disjoint_align64_double_int8_t:4325; CHECK-P10: # %bb.0: # %entry4326; CHECK-P10-NEXT: xscvdpsxds f0, f14327; CHECK-P10-NEXT: pli r4, 2441406254328; CHECK-P10-NEXT: rldicr r3, r3, 0, 234329; CHECK-P10-NEXT: rldic r4, r4, 12, 244330; CHECK-P10-NEXT: stxsibx f0, r3, r44331; CHECK-P10-NEXT: blr4332;4333; CHECK-P9-LABEL: st_disjoint_align64_double_int8_t:4334; CHECK-P9: # %bb.0: # %entry4335; CHECK-P9-NEXT: xscvdpsxds f0, f14336; CHECK-P9-NEXT: lis r4, 37254337; CHECK-P9-NEXT: rldicr r3, r3, 0, 234338; CHECK-P9-NEXT: ori r4, r4, 190254339; CHECK-P9-NEXT: rldic r4, r4, 12, 244340; CHECK-P9-NEXT: stxsibx f0, r3, r44341; CHECK-P9-NEXT: blr4342;4343; CHECK-P8-LABEL: st_disjoint_align64_double_int8_t:4344; CHECK-P8: # %bb.0: # %entry4345; CHECK-P8-NEXT: xscvdpsxws f0, f14346; CHECK-P8-NEXT: lis r5, 37254347; CHECK-P8-NEXT: rldicr r3, r3, 0, 234348; CHECK-P8-NEXT: ori r5, r5, 190254349; CHECK-P8-NEXT: rldic r5, r5, 12, 244350; CHECK-P8-NEXT: mffprwz r4, f04351; CHECK-P8-NEXT: stbx r4, r3, r54352; CHECK-P8-NEXT: blr4353entry:4354 %and = and i64 %ptr, -10995116277764355 %conv = fptosi double %str to i84356 %or = or i64 %and, 10000000000004357 %0 = inttoptr i64 %or to ptr4358 store i8 %conv, ptr %0, align 40964359 ret void4360}4361 4362; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4363define dso_local void @st_cst_align16_double_int8_t(double %str) {4364; CHECK-POSTP8-LABEL: st_cst_align16_double_int8_t:4365; CHECK-POSTP8: # %bb.0: # %entry4366; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14367; CHECK-POSTP8-NEXT: li r3, 40804368; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34369; CHECK-POSTP8-NEXT: blr4370;4371; CHECK-P8-LABEL: st_cst_align16_double_int8_t:4372; CHECK-P8: # %bb.0: # %entry4373; CHECK-P8-NEXT: xscvdpsxws f0, f14374; CHECK-P8-NEXT: mffprwz r3, f04375; CHECK-P8-NEXT: stb r3, 4080(0)4376; CHECK-P8-NEXT: blr4377entry:4378 %conv = fptosi double %str to i84379 store i8 %conv, ptr inttoptr (i64 4080 to ptr), align 164380 ret void4381}4382 4383; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4384define dso_local void @st_cst_align32_double_int8_t(double %str) {4385; CHECK-P10-LABEL: st_cst_align32_double_int8_t:4386; CHECK-P10: # %bb.0: # %entry4387; CHECK-P10-NEXT: xscvdpsxds f0, f14388; CHECK-P10-NEXT: pli r3, 99999004389; CHECK-P10-NEXT: stxsibx f0, 0, r34390; CHECK-P10-NEXT: blr4391;4392; CHECK-P9-LABEL: st_cst_align32_double_int8_t:4393; CHECK-P9: # %bb.0: # %entry4394; CHECK-P9-NEXT: xscvdpsxds f0, f14395; CHECK-P9-NEXT: lis r3, 1524396; CHECK-P9-NEXT: ori r3, r3, 384284397; CHECK-P9-NEXT: stxsibx f0, 0, r34398; CHECK-P9-NEXT: blr4399;4400; CHECK-P8-LABEL: st_cst_align32_double_int8_t:4401; CHECK-P8: # %bb.0: # %entry4402; CHECK-P8-NEXT: xscvdpsxws f0, f14403; CHECK-P8-NEXT: lis r4, 1534404; CHECK-P8-NEXT: mffprwz r3, f04405; CHECK-P8-NEXT: stb r3, -27108(r4)4406; CHECK-P8-NEXT: blr4407entry:4408 %conv = fptosi double %str to i84409 store i8 %conv, ptr inttoptr (i64 9999900 to ptr), align 44410 ret void4411}4412 4413; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4414define dso_local void @st_cst_align64_double_int8_t(double %str) {4415; CHECK-P10-LABEL: st_cst_align64_double_int8_t:4416; CHECK-P10: # %bb.0: # %entry4417; CHECK-P10-NEXT: xscvdpsxds f0, f14418; CHECK-P10-NEXT: pli r3, 2441406254419; CHECK-P10-NEXT: rldic r3, r3, 12, 244420; CHECK-P10-NEXT: stxsibx f0, 0, r34421; CHECK-P10-NEXT: blr4422;4423; CHECK-P9-LABEL: st_cst_align64_double_int8_t:4424; CHECK-P9: # %bb.0: # %entry4425; CHECK-P9-NEXT: xscvdpsxds f0, f14426; CHECK-P9-NEXT: lis r3, 37254427; CHECK-P9-NEXT: ori r3, r3, 190254428; CHECK-P9-NEXT: rldic r3, r3, 12, 244429; CHECK-P9-NEXT: stxsibx f0, 0, r34430; CHECK-P9-NEXT: blr4431;4432; CHECK-P8-LABEL: st_cst_align64_double_int8_t:4433; CHECK-P8: # %bb.0: # %entry4434; CHECK-P8-NEXT: xscvdpsxws f0, f14435; CHECK-P8-NEXT: lis r4, 37254436; CHECK-P8-NEXT: ori r4, r4, 190254437; CHECK-P8-NEXT: rldic r4, r4, 12, 244438; CHECK-P8-NEXT: mffprwz r3, f04439; CHECK-P8-NEXT: stb r3, 0(r4)4440; CHECK-P8-NEXT: blr4441entry:4442 %conv = fptosi double %str to i84443 store i8 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40964444 ret void4445}4446 4447; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4448define dso_local void @st_0_double_uint16_t(i64 %ptr, double %str) {4449; CHECK-POSTP8-LABEL: st_0_double_uint16_t:4450; CHECK-POSTP8: # %bb.0: # %entry4451; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14452; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34453; CHECK-POSTP8-NEXT: blr4454;4455; CHECK-P8-LABEL: st_0_double_uint16_t:4456; CHECK-P8: # %bb.0: # %entry4457; CHECK-P8-NEXT: xscvdpsxws f0, f14458; CHECK-P8-NEXT: mffprwz r4, f04459; CHECK-P8-NEXT: sth r4, 0(r3)4460; CHECK-P8-NEXT: blr4461entry:4462 %conv = fptoui double %str to i164463 %0 = inttoptr i64 %ptr to ptr4464 store i16 %conv, ptr %0, align 24465 ret void4466}4467 4468; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4469define dso_local void @st_align16_double_uint16_t(ptr nocapture %ptr, double %str) {4470; CHECK-POSTP8-LABEL: st_align16_double_uint16_t:4471; CHECK-POSTP8: # %bb.0: # %entry4472; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14473; CHECK-POSTP8-NEXT: addi r3, r3, 84474; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34475; CHECK-POSTP8-NEXT: blr4476;4477; CHECK-P8-LABEL: st_align16_double_uint16_t:4478; CHECK-P8: # %bb.0: # %entry4479; CHECK-P8-NEXT: xscvdpsxws f0, f14480; CHECK-P8-NEXT: mffprwz r4, f04481; CHECK-P8-NEXT: sth r4, 8(r3)4482; CHECK-P8-NEXT: blr4483entry:4484 %conv = fptoui double %str to i164485 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84486 store i16 %conv, ptr %add.ptr, align 24487 ret void4488}4489 4490; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4491define dso_local void @st_align32_double_uint16_t(ptr nocapture %ptr, double %str) {4492; CHECK-P10-LABEL: st_align32_double_uint16_t:4493; CHECK-P10: # %bb.0: # %entry4494; CHECK-P10-NEXT: xscvdpuxds f0, f14495; CHECK-P10-NEXT: pli r4, 999990004496; CHECK-P10-NEXT: stxsihx f0, r3, r44497; CHECK-P10-NEXT: blr4498;4499; CHECK-P9-LABEL: st_align32_double_uint16_t:4500; CHECK-P9: # %bb.0: # %entry4501; CHECK-P9-NEXT: xscvdpuxds f0, f14502; CHECK-P9-NEXT: lis r4, 15254503; CHECK-P9-NEXT: ori r4, r4, 566004504; CHECK-P9-NEXT: stxsihx f0, r3, r44505; CHECK-P9-NEXT: blr4506;4507; CHECK-P8-LABEL: st_align32_double_uint16_t:4508; CHECK-P8: # %bb.0: # %entry4509; CHECK-P8-NEXT: xscvdpsxws f0, f14510; CHECK-P8-NEXT: lis r5, 15254511; CHECK-P8-NEXT: ori r5, r5, 566004512; CHECK-P8-NEXT: mffprwz r4, f04513; CHECK-P8-NEXT: sthx r4, r3, r54514; CHECK-P8-NEXT: blr4515entry:4516 %conv = fptoui double %str to i164517 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004518 store i16 %conv, ptr %add.ptr, align 24519 ret void4520}4521 4522; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4523define dso_local void @st_align64_double_uint16_t(ptr nocapture %ptr, double %str) {4524; CHECK-P10-LABEL: st_align64_double_uint16_t:4525; CHECK-P10: # %bb.0: # %entry4526; CHECK-P10-NEXT: xscvdpuxds f0, f14527; CHECK-P10-NEXT: pli r4, 2441406254528; CHECK-P10-NEXT: rldic r4, r4, 12, 244529; CHECK-P10-NEXT: stxsihx f0, r3, r44530; CHECK-P10-NEXT: blr4531;4532; CHECK-P9-LABEL: st_align64_double_uint16_t:4533; CHECK-P9: # %bb.0: # %entry4534; CHECK-P9-NEXT: xscvdpuxds f0, f14535; CHECK-P9-NEXT: lis r4, 37254536; CHECK-P9-NEXT: ori r4, r4, 190254537; CHECK-P9-NEXT: rldic r4, r4, 12, 244538; CHECK-P9-NEXT: stxsihx f0, r3, r44539; CHECK-P9-NEXT: blr4540;4541; CHECK-P8-LABEL: st_align64_double_uint16_t:4542; CHECK-P8: # %bb.0: # %entry4543; CHECK-P8-NEXT: xscvdpsxws f0, f14544; CHECK-P8-NEXT: lis r5, 37254545; CHECK-P8-NEXT: ori r5, r5, 190254546; CHECK-P8-NEXT: rldic r5, r5, 12, 244547; CHECK-P8-NEXT: mffprwz r4, f04548; CHECK-P8-NEXT: sthx r4, r3, r54549; CHECK-P8-NEXT: blr4550entry:4551 %conv = fptoui double %str to i164552 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004553 store i16 %conv, ptr %add.ptr, align 24554 ret void4555}4556 4557; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4558define dso_local void @st_reg_double_uint16_t(ptr nocapture %ptr, i64 %off, double %str) {4559; CHECK-POSTP8-LABEL: st_reg_double_uint16_t:4560; CHECK-POSTP8: # %bb.0: # %entry4561; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14562; CHECK-POSTP8-NEXT: stxsihx f0, r3, r44563; CHECK-POSTP8-NEXT: blr4564;4565; CHECK-P8-LABEL: st_reg_double_uint16_t:4566; CHECK-P8: # %bb.0: # %entry4567; CHECK-P8-NEXT: xscvdpsxws f0, f14568; CHECK-P8-NEXT: mffprwz r5, f04569; CHECK-P8-NEXT: sthx r5, r3, r44570; CHECK-P8-NEXT: blr4571entry:4572 %conv = fptoui double %str to i164573 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4574 store i16 %conv, ptr %add.ptr, align 24575 ret void4576}4577 4578; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4579define dso_local void @st_or1_double_uint16_t(i64 %ptr, i8 zeroext %off, double %str) {4580; CHECK-POSTP8-LABEL: st_or1_double_uint16_t:4581; CHECK-POSTP8: # %bb.0: # %entry4582; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14583; CHECK-POSTP8-NEXT: or r3, r4, r34584; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34585; CHECK-POSTP8-NEXT: blr4586;4587; CHECK-P8-LABEL: st_or1_double_uint16_t:4588; CHECK-P8: # %bb.0: # %entry4589; CHECK-P8-NEXT: xscvdpsxws f0, f14590; CHECK-P8-NEXT: or r3, r4, r34591; CHECK-P8-NEXT: mffprwz r5, f04592; CHECK-P8-NEXT: sth r5, 0(r3)4593; CHECK-P8-NEXT: blr4594entry:4595 %conv = fptoui double %str to i164596 %conv1 = zext i8 %off to i644597 %or = or i64 %conv1, %ptr4598 %0 = inttoptr i64 %or to ptr4599 store i16 %conv, ptr %0, align 24600 ret void4601}4602 4603; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4604define dso_local void @st_not_disjoint16_double_uint16_t(i64 %ptr, double %str) {4605; CHECK-POSTP8-LABEL: st_not_disjoint16_double_uint16_t:4606; CHECK-POSTP8: # %bb.0: # %entry4607; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14608; CHECK-POSTP8-NEXT: ori r3, r3, 64609; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34610; CHECK-POSTP8-NEXT: blr4611;4612; CHECK-P8-LABEL: st_not_disjoint16_double_uint16_t:4613; CHECK-P8: # %bb.0: # %entry4614; CHECK-P8-NEXT: xscvdpsxws f0, f14615; CHECK-P8-NEXT: ori r3, r3, 64616; CHECK-P8-NEXT: mffprwz r4, f04617; CHECK-P8-NEXT: sth r4, 0(r3)4618; CHECK-P8-NEXT: blr4619entry:4620 %conv = fptoui double %str to i164621 %or = or i64 %ptr, 64622 %0 = inttoptr i64 %or to ptr4623 store i16 %conv, ptr %0, align 24624 ret void4625}4626 4627; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4628define dso_local void @st_disjoint_align16_double_uint16_t(i64 %ptr, double %str) {4629; CHECK-POSTP8-LABEL: st_disjoint_align16_double_uint16_t:4630; CHECK-POSTP8: # %bb.0: # %entry4631; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14632; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 514633; CHECK-POSTP8-NEXT: ori r3, r3, 244634; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34635; CHECK-POSTP8-NEXT: blr4636;4637; CHECK-P8-LABEL: st_disjoint_align16_double_uint16_t:4638; CHECK-P8: # %bb.0: # %entry4639; CHECK-P8-NEXT: xscvdpsxws f0, f14640; CHECK-P8-NEXT: rldicr r3, r3, 0, 514641; CHECK-P8-NEXT: mffprwz r4, f04642; CHECK-P8-NEXT: sth r4, 24(r3)4643; CHECK-P8-NEXT: blr4644entry:4645 %and = and i64 %ptr, -40964646 %conv = fptoui double %str to i164647 %or = or i64 %and, 244648 %0 = inttoptr i64 %or to ptr4649 store i16 %conv, ptr %0, align 84650 ret void4651}4652 4653; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4654define dso_local void @st_not_disjoint32_double_uint16_t(i64 %ptr, double %str) {4655; CHECK-POSTP8-LABEL: st_not_disjoint32_double_uint16_t:4656; CHECK-POSTP8: # %bb.0: # %entry4657; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14658; CHECK-POSTP8-NEXT: ori r3, r3, 344634659; CHECK-POSTP8-NEXT: oris r3, r3, 14660; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34661; CHECK-POSTP8-NEXT: blr4662;4663; CHECK-P8-LABEL: st_not_disjoint32_double_uint16_t:4664; CHECK-P8: # %bb.0: # %entry4665; CHECK-P8-NEXT: xscvdpsxws f0, f14666; CHECK-P8-NEXT: ori r3, r3, 344634667; CHECK-P8-NEXT: oris r3, r3, 14668; CHECK-P8-NEXT: mffprwz r4, f04669; CHECK-P8-NEXT: sth r4, 0(r3)4670; CHECK-P8-NEXT: blr4671entry:4672 %conv = fptoui double %str to i164673 %or = or i64 %ptr, 999994674 %0 = inttoptr i64 %or to ptr4675 store i16 %conv, ptr %0, align 24676 ret void4677}4678 4679; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4680define dso_local void @st_disjoint_align32_double_uint16_t(i64 %ptr, double %str) {4681; CHECK-P10-LABEL: st_disjoint_align32_double_uint16_t:4682; CHECK-P10: # %bb.0: # %entry4683; CHECK-P10-NEXT: xscvdpuxds f0, f14684; CHECK-P10-NEXT: lis r4, -152644685; CHECK-P10-NEXT: and r3, r3, r44686; CHECK-P10-NEXT: pli r4, 9999900004687; CHECK-P10-NEXT: stxsihx f0, r3, r44688; CHECK-P10-NEXT: blr4689;4690; CHECK-P9-LABEL: st_disjoint_align32_double_uint16_t:4691; CHECK-P9: # %bb.0: # %entry4692; CHECK-P9-NEXT: xscvdpuxds f0, f14693; CHECK-P9-NEXT: lis r4, -152644694; CHECK-P9-NEXT: and r3, r3, r44695; CHECK-P9-NEXT: lis r4, 152584696; CHECK-P9-NEXT: ori r4, r4, 417124697; CHECK-P9-NEXT: stxsihx f0, r3, r44698; CHECK-P9-NEXT: blr4699;4700; CHECK-P8-LABEL: st_disjoint_align32_double_uint16_t:4701; CHECK-P8: # %bb.0: # %entry4702; CHECK-P8-NEXT: xscvdpsxws f0, f14703; CHECK-P8-NEXT: lis r4, -152644704; CHECK-P8-NEXT: lis r5, 152584705; CHECK-P8-NEXT: and r3, r3, r44706; CHECK-P8-NEXT: ori r5, r5, 417124707; CHECK-P8-NEXT: mffprwz r4, f04708; CHECK-P8-NEXT: sthx r4, r3, r54709; CHECK-P8-NEXT: blr4710entry:4711 %and = and i64 %ptr, -10003415044712 %conv = fptoui double %str to i164713 %or = or i64 %and, 9999900004714 %0 = inttoptr i64 %or to ptr4715 store i16 %conv, ptr %0, align 164716 ret void4717}4718 4719; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4720define dso_local void @st_not_disjoint64_double_uint16_t(i64 %ptr, double %str) {4721; CHECK-P10-LABEL: st_not_disjoint64_double_uint16_t:4722; CHECK-P10: # %bb.0: # %entry4723; CHECK-P10-NEXT: xscvdpuxds f0, f14724; CHECK-P10-NEXT: pli r4, 2324725; CHECK-P10-NEXT: pli r5, 35675873294726; CHECK-P10-NEXT: rldimi r5, r4, 32, 04727; CHECK-P10-NEXT: or r3, r3, r54728; CHECK-P10-NEXT: stxsihx f0, 0, r34729; CHECK-P10-NEXT: blr4730;4731; CHECK-P9-LABEL: st_not_disjoint64_double_uint16_t:4732; CHECK-P9: # %bb.0: # %entry4733; CHECK-P9-NEXT: li r4, 294734; CHECK-P9-NEXT: xscvdpuxds f0, f14735; CHECK-P9-NEXT: rldic r4, r4, 35, 244736; CHECK-P9-NEXT: oris r4, r4, 544374737; CHECK-P9-NEXT: ori r4, r4, 40974738; CHECK-P9-NEXT: or r3, r3, r44739; CHECK-P9-NEXT: stxsihx f0, 0, r34740; CHECK-P9-NEXT: blr4741;4742; CHECK-P8-LABEL: st_not_disjoint64_double_uint16_t:4743; CHECK-P8: # %bb.0: # %entry4744; CHECK-P8-NEXT: xscvdpsxws f0, f14745; CHECK-P8-NEXT: li r5, 294746; CHECK-P8-NEXT: rldic r5, r5, 35, 244747; CHECK-P8-NEXT: oris r5, r5, 544374748; CHECK-P8-NEXT: mffprwz r4, f04749; CHECK-P8-NEXT: ori r5, r5, 40974750; CHECK-P8-NEXT: or r3, r3, r54751; CHECK-P8-NEXT: sth r4, 0(r3)4752; CHECK-P8-NEXT: blr4753entry:4754 %conv = fptoui double %str to i164755 %or = or i64 %ptr, 10000000000014756 %0 = inttoptr i64 %or to ptr4757 store i16 %conv, ptr %0, align 24758 ret void4759}4760 4761; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4762define dso_local void @st_disjoint_align64_double_uint16_t(i64 %ptr, double %str) {4763; CHECK-P10-LABEL: st_disjoint_align64_double_uint16_t:4764; CHECK-P10: # %bb.0: # %entry4765; CHECK-P10-NEXT: xscvdpuxds f0, f14766; CHECK-P10-NEXT: pli r4, 2441406254767; CHECK-P10-NEXT: rldicr r3, r3, 0, 234768; CHECK-P10-NEXT: rldic r4, r4, 12, 244769; CHECK-P10-NEXT: stxsihx f0, r3, r44770; CHECK-P10-NEXT: blr4771;4772; CHECK-P9-LABEL: st_disjoint_align64_double_uint16_t:4773; CHECK-P9: # %bb.0: # %entry4774; CHECK-P9-NEXT: xscvdpuxds f0, f14775; CHECK-P9-NEXT: lis r4, 37254776; CHECK-P9-NEXT: rldicr r3, r3, 0, 234777; CHECK-P9-NEXT: ori r4, r4, 190254778; CHECK-P9-NEXT: rldic r4, r4, 12, 244779; CHECK-P9-NEXT: stxsihx f0, r3, r44780; CHECK-P9-NEXT: blr4781;4782; CHECK-P8-LABEL: st_disjoint_align64_double_uint16_t:4783; CHECK-P8: # %bb.0: # %entry4784; CHECK-P8-NEXT: xscvdpsxws f0, f14785; CHECK-P8-NEXT: lis r5, 37254786; CHECK-P8-NEXT: rldicr r3, r3, 0, 234787; CHECK-P8-NEXT: ori r5, r5, 190254788; CHECK-P8-NEXT: rldic r5, r5, 12, 244789; CHECK-P8-NEXT: mffprwz r4, f04790; CHECK-P8-NEXT: sthx r4, r3, r54791; CHECK-P8-NEXT: blr4792entry:4793 %and = and i64 %ptr, -10995116277764794 %conv = fptoui double %str to i164795 %or = or i64 %and, 10000000000004796 %0 = inttoptr i64 %or to ptr4797 store i16 %conv, ptr %0, align 40964798 ret void4799}4800 4801; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4802define dso_local void @st_cst_align16_double_uint16_t(double %str) {4803; CHECK-POSTP8-LABEL: st_cst_align16_double_uint16_t:4804; CHECK-POSTP8: # %bb.0: # %entry4805; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14806; CHECK-POSTP8-NEXT: li r3, 40804807; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34808; CHECK-POSTP8-NEXT: blr4809;4810; CHECK-P8-LABEL: st_cst_align16_double_uint16_t:4811; CHECK-P8: # %bb.0: # %entry4812; CHECK-P8-NEXT: xscvdpsxws f0, f14813; CHECK-P8-NEXT: mffprwz r3, f04814; CHECK-P8-NEXT: sth r3, 4080(0)4815; CHECK-P8-NEXT: blr4816entry:4817 %conv = fptoui double %str to i164818 store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 164819 ret void4820}4821 4822; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4823define dso_local void @st_cst_align32_double_uint16_t(double %str) {4824; CHECK-P10-LABEL: st_cst_align32_double_uint16_t:4825; CHECK-P10: # %bb.0: # %entry4826; CHECK-P10-NEXT: xscvdpuxds f0, f14827; CHECK-P10-NEXT: pli r3, 99999004828; CHECK-P10-NEXT: stxsihx f0, 0, r34829; CHECK-P10-NEXT: blr4830;4831; CHECK-P9-LABEL: st_cst_align32_double_uint16_t:4832; CHECK-P9: # %bb.0: # %entry4833; CHECK-P9-NEXT: xscvdpuxds f0, f14834; CHECK-P9-NEXT: lis r3, 1524835; CHECK-P9-NEXT: ori r3, r3, 384284836; CHECK-P9-NEXT: stxsihx f0, 0, r34837; CHECK-P9-NEXT: blr4838;4839; CHECK-P8-LABEL: st_cst_align32_double_uint16_t:4840; CHECK-P8: # %bb.0: # %entry4841; CHECK-P8-NEXT: xscvdpsxws f0, f14842; CHECK-P8-NEXT: lis r4, 1534843; CHECK-P8-NEXT: mffprwz r3, f04844; CHECK-P8-NEXT: sth r3, -27108(r4)4845; CHECK-P8-NEXT: blr4846entry:4847 %conv = fptoui double %str to i164848 store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 44849 ret void4850}4851 4852; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4853define dso_local void @st_cst_align64_double_uint16_t(double %str) {4854; CHECK-P10-LABEL: st_cst_align64_double_uint16_t:4855; CHECK-P10: # %bb.0: # %entry4856; CHECK-P10-NEXT: xscvdpuxds f0, f14857; CHECK-P10-NEXT: pli r3, 2441406254858; CHECK-P10-NEXT: rldic r3, r3, 12, 244859; CHECK-P10-NEXT: stxsihx f0, 0, r34860; CHECK-P10-NEXT: blr4861;4862; CHECK-P9-LABEL: st_cst_align64_double_uint16_t:4863; CHECK-P9: # %bb.0: # %entry4864; CHECK-P9-NEXT: xscvdpuxds f0, f14865; CHECK-P9-NEXT: lis r3, 37254866; CHECK-P9-NEXT: ori r3, r3, 190254867; CHECK-P9-NEXT: rldic r3, r3, 12, 244868; CHECK-P9-NEXT: stxsihx f0, 0, r34869; CHECK-P9-NEXT: blr4870;4871; CHECK-P8-LABEL: st_cst_align64_double_uint16_t:4872; CHECK-P8: # %bb.0: # %entry4873; CHECK-P8-NEXT: xscvdpsxws f0, f14874; CHECK-P8-NEXT: lis r4, 37254875; CHECK-P8-NEXT: ori r4, r4, 190254876; CHECK-P8-NEXT: rldic r4, r4, 12, 244877; CHECK-P8-NEXT: mffprwz r3, f04878; CHECK-P8-NEXT: sth r3, 0(r4)4879; CHECK-P8-NEXT: blr4880entry:4881 %conv = fptoui double %str to i164882 store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40964883 ret void4884}4885 4886; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4887define dso_local void @st_0_double_int16_t(i64 %ptr, double %str) {4888; CHECK-POSTP8-LABEL: st_0_double_int16_t:4889; CHECK-POSTP8: # %bb.0: # %entry4890; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14891; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34892; CHECK-POSTP8-NEXT: blr4893;4894; CHECK-P8-LABEL: st_0_double_int16_t:4895; CHECK-P8: # %bb.0: # %entry4896; CHECK-P8-NEXT: xscvdpsxws f0, f14897; CHECK-P8-NEXT: mffprwz r4, f04898; CHECK-P8-NEXT: sth r4, 0(r3)4899; CHECK-P8-NEXT: blr4900entry:4901 %conv = fptosi double %str to i164902 %0 = inttoptr i64 %ptr to ptr4903 store i16 %conv, ptr %0, align 24904 ret void4905}4906 4907; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4908define dso_local void @st_align16_double_int16_t(ptr nocapture %ptr, double %str) {4909; CHECK-POSTP8-LABEL: st_align16_double_int16_t:4910; CHECK-POSTP8: # %bb.0: # %entry4911; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14912; CHECK-POSTP8-NEXT: addi r3, r3, 84913; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34914; CHECK-POSTP8-NEXT: blr4915;4916; CHECK-P8-LABEL: st_align16_double_int16_t:4917; CHECK-P8: # %bb.0: # %entry4918; CHECK-P8-NEXT: xscvdpsxws f0, f14919; CHECK-P8-NEXT: mffprwz r4, f04920; CHECK-P8-NEXT: sth r4, 8(r3)4921; CHECK-P8-NEXT: blr4922entry:4923 %conv = fptosi double %str to i164924 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84925 store i16 %conv, ptr %add.ptr, align 24926 ret void4927}4928 4929; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4930define dso_local void @st_align32_double_int16_t(ptr nocapture %ptr, double %str) {4931; CHECK-P10-LABEL: st_align32_double_int16_t:4932; CHECK-P10: # %bb.0: # %entry4933; CHECK-P10-NEXT: xscvdpsxds f0, f14934; CHECK-P10-NEXT: pli r4, 999990004935; CHECK-P10-NEXT: stxsihx f0, r3, r44936; CHECK-P10-NEXT: blr4937;4938; CHECK-P9-LABEL: st_align32_double_int16_t:4939; CHECK-P9: # %bb.0: # %entry4940; CHECK-P9-NEXT: xscvdpsxds f0, f14941; CHECK-P9-NEXT: lis r4, 15254942; CHECK-P9-NEXT: ori r4, r4, 566004943; CHECK-P9-NEXT: stxsihx f0, r3, r44944; CHECK-P9-NEXT: blr4945;4946; CHECK-P8-LABEL: st_align32_double_int16_t:4947; CHECK-P8: # %bb.0: # %entry4948; CHECK-P8-NEXT: xscvdpsxws f0, f14949; CHECK-P8-NEXT: lis r5, 15254950; CHECK-P8-NEXT: ori r5, r5, 566004951; CHECK-P8-NEXT: mffprwz r4, f04952; CHECK-P8-NEXT: sthx r4, r3, r54953; CHECK-P8-NEXT: blr4954entry:4955 %conv = fptosi double %str to i164956 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004957 store i16 %conv, ptr %add.ptr, align 24958 ret void4959}4960 4961; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4962define dso_local void @st_align64_double_int16_t(ptr nocapture %ptr, double %str) {4963; CHECK-P10-LABEL: st_align64_double_int16_t:4964; CHECK-P10: # %bb.0: # %entry4965; CHECK-P10-NEXT: xscvdpsxds f0, f14966; CHECK-P10-NEXT: pli r4, 2441406254967; CHECK-P10-NEXT: rldic r4, r4, 12, 244968; CHECK-P10-NEXT: stxsihx f0, r3, r44969; CHECK-P10-NEXT: blr4970;4971; CHECK-P9-LABEL: st_align64_double_int16_t:4972; CHECK-P9: # %bb.0: # %entry4973; CHECK-P9-NEXT: xscvdpsxds f0, f14974; CHECK-P9-NEXT: lis r4, 37254975; CHECK-P9-NEXT: ori r4, r4, 190254976; CHECK-P9-NEXT: rldic r4, r4, 12, 244977; CHECK-P9-NEXT: stxsihx f0, r3, r44978; CHECK-P9-NEXT: blr4979;4980; CHECK-P8-LABEL: st_align64_double_int16_t:4981; CHECK-P8: # %bb.0: # %entry4982; CHECK-P8-NEXT: xscvdpsxws f0, f14983; CHECK-P8-NEXT: lis r5, 37254984; CHECK-P8-NEXT: ori r5, r5, 190254985; CHECK-P8-NEXT: rldic r5, r5, 12, 244986; CHECK-P8-NEXT: mffprwz r4, f04987; CHECK-P8-NEXT: sthx r4, r3, r54988; CHECK-P8-NEXT: blr4989entry:4990 %conv = fptosi double %str to i164991 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004992 store i16 %conv, ptr %add.ptr, align 24993 ret void4994}4995 4996; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4997define dso_local void @st_reg_double_int16_t(ptr nocapture %ptr, i64 %off, double %str) {4998; CHECK-POSTP8-LABEL: st_reg_double_int16_t:4999; CHECK-POSTP8: # %bb.0: # %entry5000; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15001; CHECK-POSTP8-NEXT: stxsihx f0, r3, r45002; CHECK-POSTP8-NEXT: blr5003;5004; CHECK-P8-LABEL: st_reg_double_int16_t:5005; CHECK-P8: # %bb.0: # %entry5006; CHECK-P8-NEXT: xscvdpsxws f0, f15007; CHECK-P8-NEXT: mffprwz r5, f05008; CHECK-P8-NEXT: sthx r5, r3, r45009; CHECK-P8-NEXT: blr5010entry:5011 %conv = fptosi double %str to i165012 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5013 store i16 %conv, ptr %add.ptr, align 25014 ret void5015}5016 5017; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5018define dso_local void @st_or1_double_int16_t(i64 %ptr, i8 zeroext %off, double %str) {5019; CHECK-POSTP8-LABEL: st_or1_double_int16_t:5020; CHECK-POSTP8: # %bb.0: # %entry5021; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15022; CHECK-POSTP8-NEXT: or r3, r4, r35023; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35024; CHECK-POSTP8-NEXT: blr5025;5026; CHECK-P8-LABEL: st_or1_double_int16_t:5027; CHECK-P8: # %bb.0: # %entry5028; CHECK-P8-NEXT: xscvdpsxws f0, f15029; CHECK-P8-NEXT: or r3, r4, r35030; CHECK-P8-NEXT: mffprwz r5, f05031; CHECK-P8-NEXT: sth r5, 0(r3)5032; CHECK-P8-NEXT: blr5033entry:5034 %conv = fptosi double %str to i165035 %conv1 = zext i8 %off to i645036 %or = or i64 %conv1, %ptr5037 %0 = inttoptr i64 %or to ptr5038 store i16 %conv, ptr %0, align 25039 ret void5040}5041 5042; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5043define dso_local void @st_not_disjoint16_double_int16_t(i64 %ptr, double %str) {5044; CHECK-POSTP8-LABEL: st_not_disjoint16_double_int16_t:5045; CHECK-POSTP8: # %bb.0: # %entry5046; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15047; CHECK-POSTP8-NEXT: ori r3, r3, 65048; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35049; CHECK-POSTP8-NEXT: blr5050;5051; CHECK-P8-LABEL: st_not_disjoint16_double_int16_t:5052; CHECK-P8: # %bb.0: # %entry5053; CHECK-P8-NEXT: xscvdpsxws f0, f15054; CHECK-P8-NEXT: ori r3, r3, 65055; CHECK-P8-NEXT: mffprwz r4, f05056; CHECK-P8-NEXT: sth r4, 0(r3)5057; CHECK-P8-NEXT: blr5058entry:5059 %conv = fptosi double %str to i165060 %or = or i64 %ptr, 65061 %0 = inttoptr i64 %or to ptr5062 store i16 %conv, ptr %0, align 25063 ret void5064}5065 5066; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5067define dso_local void @st_disjoint_align16_double_int16_t(i64 %ptr, double %str) {5068; CHECK-POSTP8-LABEL: st_disjoint_align16_double_int16_t:5069; CHECK-POSTP8: # %bb.0: # %entry5070; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15071; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 515072; CHECK-POSTP8-NEXT: ori r3, r3, 245073; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35074; CHECK-POSTP8-NEXT: blr5075;5076; CHECK-P8-LABEL: st_disjoint_align16_double_int16_t:5077; CHECK-P8: # %bb.0: # %entry5078; CHECK-P8-NEXT: xscvdpsxws f0, f15079; CHECK-P8-NEXT: rldicr r3, r3, 0, 515080; CHECK-P8-NEXT: mffprwz r4, f05081; CHECK-P8-NEXT: sth r4, 24(r3)5082; CHECK-P8-NEXT: blr5083entry:5084 %and = and i64 %ptr, -40965085 %conv = fptosi double %str to i165086 %or = or i64 %and, 245087 %0 = inttoptr i64 %or to ptr5088 store i16 %conv, ptr %0, align 85089 ret void5090}5091 5092; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5093define dso_local void @st_not_disjoint32_double_int16_t(i64 %ptr, double %str) {5094; CHECK-POSTP8-LABEL: st_not_disjoint32_double_int16_t:5095; CHECK-POSTP8: # %bb.0: # %entry5096; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15097; CHECK-POSTP8-NEXT: ori r3, r3, 344635098; CHECK-POSTP8-NEXT: oris r3, r3, 15099; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35100; CHECK-POSTP8-NEXT: blr5101;5102; CHECK-P8-LABEL: st_not_disjoint32_double_int16_t:5103; CHECK-P8: # %bb.0: # %entry5104; CHECK-P8-NEXT: xscvdpsxws f0, f15105; CHECK-P8-NEXT: ori r3, r3, 344635106; CHECK-P8-NEXT: oris r3, r3, 15107; CHECK-P8-NEXT: mffprwz r4, f05108; CHECK-P8-NEXT: sth r4, 0(r3)5109; CHECK-P8-NEXT: blr5110entry:5111 %conv = fptosi double %str to i165112 %or = or i64 %ptr, 999995113 %0 = inttoptr i64 %or to ptr5114 store i16 %conv, ptr %0, align 25115 ret void5116}5117 5118; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5119define dso_local void @st_disjoint_align32_double_int16_t(i64 %ptr, double %str) {5120; CHECK-P10-LABEL: st_disjoint_align32_double_int16_t:5121; CHECK-P10: # %bb.0: # %entry5122; CHECK-P10-NEXT: xscvdpsxds f0, f15123; CHECK-P10-NEXT: lis r4, -152645124; CHECK-P10-NEXT: and r3, r3, r45125; CHECK-P10-NEXT: pli r4, 9999900005126; CHECK-P10-NEXT: stxsihx f0, r3, r45127; CHECK-P10-NEXT: blr5128;5129; CHECK-P9-LABEL: st_disjoint_align32_double_int16_t:5130; CHECK-P9: # %bb.0: # %entry5131; CHECK-P9-NEXT: xscvdpsxds f0, f15132; CHECK-P9-NEXT: lis r4, -152645133; CHECK-P9-NEXT: and r3, r3, r45134; CHECK-P9-NEXT: lis r4, 152585135; CHECK-P9-NEXT: ori r4, r4, 417125136; CHECK-P9-NEXT: stxsihx f0, r3, r45137; CHECK-P9-NEXT: blr5138;5139; CHECK-P8-LABEL: st_disjoint_align32_double_int16_t:5140; CHECK-P8: # %bb.0: # %entry5141; CHECK-P8-NEXT: xscvdpsxws f0, f15142; CHECK-P8-NEXT: lis r4, -152645143; CHECK-P8-NEXT: lis r5, 152585144; CHECK-P8-NEXT: and r3, r3, r45145; CHECK-P8-NEXT: ori r5, r5, 417125146; CHECK-P8-NEXT: mffprwz r4, f05147; CHECK-P8-NEXT: sthx r4, r3, r55148; CHECK-P8-NEXT: blr5149entry:5150 %and = and i64 %ptr, -10003415045151 %conv = fptosi double %str to i165152 %or = or i64 %and, 9999900005153 %0 = inttoptr i64 %or to ptr5154 store i16 %conv, ptr %0, align 165155 ret void5156}5157 5158; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5159define dso_local void @st_not_disjoint64_double_int16_t(i64 %ptr, double %str) {5160; CHECK-P10-LABEL: st_not_disjoint64_double_int16_t:5161; CHECK-P10: # %bb.0: # %entry5162; CHECK-P10-NEXT: xscvdpsxds f0, f15163; CHECK-P10-NEXT: pli r4, 2325164; CHECK-P10-NEXT: pli r5, 35675873295165; CHECK-P10-NEXT: rldimi r5, r4, 32, 05166; CHECK-P10-NEXT: or r3, r3, r55167; CHECK-P10-NEXT: stxsihx f0, 0, r35168; CHECK-P10-NEXT: blr5169;5170; CHECK-P9-LABEL: st_not_disjoint64_double_int16_t:5171; CHECK-P9: # %bb.0: # %entry5172; CHECK-P9-NEXT: li r4, 295173; CHECK-P9-NEXT: xscvdpsxds f0, f15174; CHECK-P9-NEXT: rldic r4, r4, 35, 245175; CHECK-P9-NEXT: oris r4, r4, 544375176; CHECK-P9-NEXT: ori r4, r4, 40975177; CHECK-P9-NEXT: or r3, r3, r45178; CHECK-P9-NEXT: stxsihx f0, 0, r35179; CHECK-P9-NEXT: blr5180;5181; CHECK-P8-LABEL: st_not_disjoint64_double_int16_t:5182; CHECK-P8: # %bb.0: # %entry5183; CHECK-P8-NEXT: xscvdpsxws f0, f15184; CHECK-P8-NEXT: li r5, 295185; CHECK-P8-NEXT: rldic r5, r5, 35, 245186; CHECK-P8-NEXT: oris r5, r5, 544375187; CHECK-P8-NEXT: mffprwz r4, f05188; CHECK-P8-NEXT: ori r5, r5, 40975189; CHECK-P8-NEXT: or r3, r3, r55190; CHECK-P8-NEXT: sth r4, 0(r3)5191; CHECK-P8-NEXT: blr5192entry:5193 %conv = fptosi double %str to i165194 %or = or i64 %ptr, 10000000000015195 %0 = inttoptr i64 %or to ptr5196 store i16 %conv, ptr %0, align 25197 ret void5198}5199 5200; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5201define dso_local void @st_disjoint_align64_double_int16_t(i64 %ptr, double %str) {5202; CHECK-P10-LABEL: st_disjoint_align64_double_int16_t:5203; CHECK-P10: # %bb.0: # %entry5204; CHECK-P10-NEXT: xscvdpsxds f0, f15205; CHECK-P10-NEXT: pli r4, 2441406255206; CHECK-P10-NEXT: rldicr r3, r3, 0, 235207; CHECK-P10-NEXT: rldic r4, r4, 12, 245208; CHECK-P10-NEXT: stxsihx f0, r3, r45209; CHECK-P10-NEXT: blr5210;5211; CHECK-P9-LABEL: st_disjoint_align64_double_int16_t:5212; CHECK-P9: # %bb.0: # %entry5213; CHECK-P9-NEXT: xscvdpsxds f0, f15214; CHECK-P9-NEXT: lis r4, 37255215; CHECK-P9-NEXT: rldicr r3, r3, 0, 235216; CHECK-P9-NEXT: ori r4, r4, 190255217; CHECK-P9-NEXT: rldic r4, r4, 12, 245218; CHECK-P9-NEXT: stxsihx f0, r3, r45219; CHECK-P9-NEXT: blr5220;5221; CHECK-P8-LABEL: st_disjoint_align64_double_int16_t:5222; CHECK-P8: # %bb.0: # %entry5223; CHECK-P8-NEXT: xscvdpsxws f0, f15224; CHECK-P8-NEXT: lis r5, 37255225; CHECK-P8-NEXT: rldicr r3, r3, 0, 235226; CHECK-P8-NEXT: ori r5, r5, 190255227; CHECK-P8-NEXT: rldic r5, r5, 12, 245228; CHECK-P8-NEXT: mffprwz r4, f05229; CHECK-P8-NEXT: sthx r4, r3, r55230; CHECK-P8-NEXT: blr5231entry:5232 %and = and i64 %ptr, -10995116277765233 %conv = fptosi double %str to i165234 %or = or i64 %and, 10000000000005235 %0 = inttoptr i64 %or to ptr5236 store i16 %conv, ptr %0, align 40965237 ret void5238}5239 5240; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5241define dso_local void @st_cst_align16_double_int16_t(double %str) {5242; CHECK-POSTP8-LABEL: st_cst_align16_double_int16_t:5243; CHECK-POSTP8: # %bb.0: # %entry5244; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15245; CHECK-POSTP8-NEXT: li r3, 40805246; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35247; CHECK-POSTP8-NEXT: blr5248;5249; CHECK-P8-LABEL: st_cst_align16_double_int16_t:5250; CHECK-P8: # %bb.0: # %entry5251; CHECK-P8-NEXT: xscvdpsxws f0, f15252; CHECK-P8-NEXT: mffprwz r3, f05253; CHECK-P8-NEXT: sth r3, 4080(0)5254; CHECK-P8-NEXT: blr5255entry:5256 %conv = fptosi double %str to i165257 store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 165258 ret void5259}5260 5261; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5262define dso_local void @st_cst_align32_double_int16_t(double %str) {5263; CHECK-P10-LABEL: st_cst_align32_double_int16_t:5264; CHECK-P10: # %bb.0: # %entry5265; CHECK-P10-NEXT: xscvdpsxds f0, f15266; CHECK-P10-NEXT: pli r3, 99999005267; CHECK-P10-NEXT: stxsihx f0, 0, r35268; CHECK-P10-NEXT: blr5269;5270; CHECK-P9-LABEL: st_cst_align32_double_int16_t:5271; CHECK-P9: # %bb.0: # %entry5272; CHECK-P9-NEXT: xscvdpsxds f0, f15273; CHECK-P9-NEXT: lis r3, 1525274; CHECK-P9-NEXT: ori r3, r3, 384285275; CHECK-P9-NEXT: stxsihx f0, 0, r35276; CHECK-P9-NEXT: blr5277;5278; CHECK-P8-LABEL: st_cst_align32_double_int16_t:5279; CHECK-P8: # %bb.0: # %entry5280; CHECK-P8-NEXT: xscvdpsxws f0, f15281; CHECK-P8-NEXT: lis r4, 1535282; CHECK-P8-NEXT: mffprwz r3, f05283; CHECK-P8-NEXT: sth r3, -27108(r4)5284; CHECK-P8-NEXT: blr5285entry:5286 %conv = fptosi double %str to i165287 store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 45288 ret void5289}5290 5291; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5292define dso_local void @st_cst_align64_double_int16_t(double %str) {5293; CHECK-P10-LABEL: st_cst_align64_double_int16_t:5294; CHECK-P10: # %bb.0: # %entry5295; CHECK-P10-NEXT: xscvdpsxds f0, f15296; CHECK-P10-NEXT: pli r3, 2441406255297; CHECK-P10-NEXT: rldic r3, r3, 12, 245298; CHECK-P10-NEXT: stxsihx f0, 0, r35299; CHECK-P10-NEXT: blr5300;5301; CHECK-P9-LABEL: st_cst_align64_double_int16_t:5302; CHECK-P9: # %bb.0: # %entry5303; CHECK-P9-NEXT: xscvdpsxds f0, f15304; CHECK-P9-NEXT: lis r3, 37255305; CHECK-P9-NEXT: ori r3, r3, 190255306; CHECK-P9-NEXT: rldic r3, r3, 12, 245307; CHECK-P9-NEXT: stxsihx f0, 0, r35308; CHECK-P9-NEXT: blr5309;5310; CHECK-P8-LABEL: st_cst_align64_double_int16_t:5311; CHECK-P8: # %bb.0: # %entry5312; CHECK-P8-NEXT: xscvdpsxws f0, f15313; CHECK-P8-NEXT: lis r4, 37255314; CHECK-P8-NEXT: ori r4, r4, 190255315; CHECK-P8-NEXT: rldic r4, r4, 12, 245316; CHECK-P8-NEXT: mffprwz r3, f05317; CHECK-P8-NEXT: sth r3, 0(r4)5318; CHECK-P8-NEXT: blr5319entry:5320 %conv = fptosi double %str to i165321 store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965322 ret void5323}5324 5325; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5326define dso_local void @st_0_double_uint32_t(i64 %ptr, double %str) {5327; CHECK-LABEL: st_0_double_uint32_t:5328; CHECK: # %bb.0: # %entry5329; CHECK-NEXT: xscvdpuxws f0, f15330; CHECK-NEXT: stfiwx f0, 0, r35331; CHECK-NEXT: blr5332entry:5333 %conv = fptoui double %str to i325334 %0 = inttoptr i64 %ptr to ptr5335 store i32 %conv, ptr %0, align 45336 ret void5337}5338 5339; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5340define dso_local void @st_align16_double_uint32_t(ptr nocapture %ptr, double %str) {5341; CHECK-LABEL: st_align16_double_uint32_t:5342; CHECK: # %bb.0: # %entry5343; CHECK-NEXT: xscvdpuxws f0, f15344; CHECK-NEXT: addi r3, r3, 85345; CHECK-NEXT: stfiwx f0, 0, r35346; CHECK-NEXT: blr5347entry:5348 %conv = fptoui double %str to i325349 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85350 store i32 %conv, ptr %add.ptr, align 45351 ret void5352}5353 5354; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5355define dso_local void @st_align32_double_uint32_t(ptr nocapture %ptr, double %str) {5356; CHECK-P10-LABEL: st_align32_double_uint32_t:5357; CHECK-P10: # %bb.0: # %entry5358; CHECK-P10-NEXT: xscvdpuxws f0, f15359; CHECK-P10-NEXT: pli r4, 999990005360; CHECK-P10-NEXT: stfiwx f0, r3, r45361; CHECK-P10-NEXT: blr5362;5363; CHECK-PREP10-LABEL: st_align32_double_uint32_t:5364; CHECK-PREP10: # %bb.0: # %entry5365; CHECK-PREP10-NEXT: xscvdpuxws f0, f15366; CHECK-PREP10-NEXT: lis r4, 15255367; CHECK-PREP10-NEXT: ori r4, r4, 566005368; CHECK-PREP10-NEXT: stfiwx f0, r3, r45369; CHECK-PREP10-NEXT: blr5370entry:5371 %conv = fptoui double %str to i325372 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005373 store i32 %conv, ptr %add.ptr, align 45374 ret void5375}5376 5377; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5378define dso_local void @st_align64_double_uint32_t(ptr nocapture %ptr, double %str) {5379; CHECK-P10-LABEL: st_align64_double_uint32_t:5380; CHECK-P10: # %bb.0: # %entry5381; CHECK-P10-NEXT: xscvdpuxws f0, f15382; CHECK-P10-NEXT: pli r4, 2441406255383; CHECK-P10-NEXT: rldic r4, r4, 12, 245384; CHECK-P10-NEXT: stfiwx f0, r3, r45385; CHECK-P10-NEXT: blr5386;5387; CHECK-PREP10-LABEL: st_align64_double_uint32_t:5388; CHECK-PREP10: # %bb.0: # %entry5389; CHECK-PREP10-NEXT: xscvdpuxws f0, f15390; CHECK-PREP10-NEXT: lis r4, 37255391; CHECK-PREP10-NEXT: ori r4, r4, 190255392; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245393; CHECK-PREP10-NEXT: stfiwx f0, r3, r45394; CHECK-PREP10-NEXT: blr5395entry:5396 %conv = fptoui double %str to i325397 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005398 store i32 %conv, ptr %add.ptr, align 45399 ret void5400}5401 5402; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5403define dso_local void @st_reg_double_uint32_t(ptr nocapture %ptr, i64 %off, double %str) {5404; CHECK-LABEL: st_reg_double_uint32_t:5405; CHECK: # %bb.0: # %entry5406; CHECK-NEXT: xscvdpuxws f0, f15407; CHECK-NEXT: stfiwx f0, r3, r45408; CHECK-NEXT: blr5409entry:5410 %conv = fptoui double %str to i325411 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5412 store i32 %conv, ptr %add.ptr, align 45413 ret void5414}5415 5416; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5417define dso_local void @st_or1_double_uint32_t(i64 %ptr, i8 zeroext %off, double %str) {5418; CHECK-LABEL: st_or1_double_uint32_t:5419; CHECK: # %bb.0: # %entry5420; CHECK-NEXT: xscvdpuxws f0, f15421; CHECK-NEXT: or r3, r4, r35422; CHECK-NEXT: stfiwx f0, 0, r35423; CHECK-NEXT: blr5424entry:5425 %conv = fptoui double %str to i325426 %conv1 = zext i8 %off to i645427 %or = or i64 %conv1, %ptr5428 %0 = inttoptr i64 %or to ptr5429 store i32 %conv, ptr %0, align 45430 ret void5431}5432 5433; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5434define dso_local void @st_not_disjoint16_double_uint32_t(i64 %ptr, double %str) {5435; CHECK-LABEL: st_not_disjoint16_double_uint32_t:5436; CHECK: # %bb.0: # %entry5437; CHECK-NEXT: xscvdpuxws f0, f15438; CHECK-NEXT: ori r3, r3, 65439; CHECK-NEXT: stfiwx f0, 0, r35440; CHECK-NEXT: blr5441entry:5442 %conv = fptoui double %str to i325443 %or = or i64 %ptr, 65444 %0 = inttoptr i64 %or to ptr5445 store i32 %conv, ptr %0, align 45446 ret void5447}5448 5449; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5450define dso_local void @st_disjoint_align16_double_uint32_t(i64 %ptr, double %str) {5451; CHECK-LABEL: st_disjoint_align16_double_uint32_t:5452; CHECK: # %bb.0: # %entry5453; CHECK-NEXT: xscvdpuxws f0, f15454; CHECK-NEXT: rldicr r3, r3, 0, 515455; CHECK-NEXT: ori r3, r3, 245456; CHECK-NEXT: stfiwx f0, 0, r35457; CHECK-NEXT: blr5458entry:5459 %and = and i64 %ptr, -40965460 %conv = fptoui double %str to i325461 %or = or i64 %and, 245462 %0 = inttoptr i64 %or to ptr5463 store i32 %conv, ptr %0, align 85464 ret void5465}5466 5467; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5468define dso_local void @st_not_disjoint32_double_uint32_t(i64 %ptr, double %str) {5469; CHECK-LABEL: st_not_disjoint32_double_uint32_t:5470; CHECK: # %bb.0: # %entry5471; CHECK-NEXT: xscvdpuxws f0, f15472; CHECK-NEXT: ori r3, r3, 344635473; CHECK-NEXT: oris r3, r3, 15474; CHECK-NEXT: stfiwx f0, 0, r35475; CHECK-NEXT: blr5476entry:5477 %conv = fptoui double %str to i325478 %or = or i64 %ptr, 999995479 %0 = inttoptr i64 %or to ptr5480 store i32 %conv, ptr %0, align 45481 ret void5482}5483 5484; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5485define dso_local void @st_disjoint_align32_double_uint32_t(i64 %ptr, double %str) {5486; CHECK-P10-LABEL: st_disjoint_align32_double_uint32_t:5487; CHECK-P10: # %bb.0: # %entry5488; CHECK-P10-NEXT: xscvdpuxws f0, f15489; CHECK-P10-NEXT: lis r4, -152645490; CHECK-P10-NEXT: and r3, r3, r45491; CHECK-P10-NEXT: pli r4, 9999900005492; CHECK-P10-NEXT: stfiwx f0, r3, r45493; CHECK-P10-NEXT: blr5494;5495; CHECK-P9-LABEL: st_disjoint_align32_double_uint32_t:5496; CHECK-P9: # %bb.0: # %entry5497; CHECK-P9-NEXT: xscvdpuxws f0, f15498; CHECK-P9-NEXT: lis r4, -152645499; CHECK-P9-NEXT: and r3, r3, r45500; CHECK-P9-NEXT: lis r4, 152585501; CHECK-P9-NEXT: ori r4, r4, 417125502; CHECK-P9-NEXT: stfiwx f0, r3, r45503; CHECK-P9-NEXT: blr5504;5505; CHECK-P8-LABEL: st_disjoint_align32_double_uint32_t:5506; CHECK-P8: # %bb.0: # %entry5507; CHECK-P8-NEXT: lis r4, -152645508; CHECK-P8-NEXT: xscvdpuxws f0, f15509; CHECK-P8-NEXT: and r3, r3, r45510; CHECK-P8-NEXT: lis r4, 152585511; CHECK-P8-NEXT: ori r4, r4, 417125512; CHECK-P8-NEXT: stfiwx f0, r3, r45513; CHECK-P8-NEXT: blr5514entry:5515 %and = and i64 %ptr, -10003415045516 %conv = fptoui double %str to i325517 %or = or i64 %and, 9999900005518 %0 = inttoptr i64 %or to ptr5519 store i32 %conv, ptr %0, align 165520 ret void5521}5522 5523; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5524define dso_local void @st_not_disjoint64_double_uint32_t(i64 %ptr, double %str) {5525; CHECK-P10-LABEL: st_not_disjoint64_double_uint32_t:5526; CHECK-P10: # %bb.0: # %entry5527; CHECK-P10-NEXT: xscvdpuxws f0, f15528; CHECK-P10-NEXT: pli r4, 2325529; CHECK-P10-NEXT: pli r5, 35675873295530; CHECK-P10-NEXT: rldimi r5, r4, 32, 05531; CHECK-P10-NEXT: or r3, r3, r55532; CHECK-P10-NEXT: stfiwx f0, 0, r35533; CHECK-P10-NEXT: blr5534;5535; CHECK-PREP10-LABEL: st_not_disjoint64_double_uint32_t:5536; CHECK-PREP10: # %bb.0: # %entry5537; CHECK-PREP10-NEXT: li r4, 295538; CHECK-PREP10-NEXT: xscvdpuxws f0, f15539; CHECK-PREP10-NEXT: rldic r4, r4, 35, 245540; CHECK-PREP10-NEXT: oris r4, r4, 544375541; CHECK-PREP10-NEXT: ori r4, r4, 40975542; CHECK-PREP10-NEXT: or r3, r3, r45543; CHECK-PREP10-NEXT: stfiwx f0, 0, r35544; CHECK-PREP10-NEXT: blr5545entry:5546 %conv = fptoui double %str to i325547 %or = or i64 %ptr, 10000000000015548 %0 = inttoptr i64 %or to ptr5549 store i32 %conv, ptr %0, align 45550 ret void5551}5552 5553; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5554define dso_local void @st_disjoint_align64_double_uint32_t(i64 %ptr, double %str) {5555; CHECK-P10-LABEL: st_disjoint_align64_double_uint32_t:5556; CHECK-P10: # %bb.0: # %entry5557; CHECK-P10-NEXT: xscvdpuxws f0, f15558; CHECK-P10-NEXT: pli r4, 2441406255559; CHECK-P10-NEXT: rldicr r3, r3, 0, 235560; CHECK-P10-NEXT: rldic r4, r4, 12, 245561; CHECK-P10-NEXT: stfiwx f0, r3, r45562; CHECK-P10-NEXT: blr5563;5564; CHECK-PREP10-LABEL: st_disjoint_align64_double_uint32_t:5565; CHECK-PREP10: # %bb.0: # %entry5566; CHECK-PREP10-NEXT: xscvdpuxws f0, f15567; CHECK-PREP10-NEXT: lis r4, 37255568; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235569; CHECK-PREP10-NEXT: ori r4, r4, 190255570; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245571; CHECK-PREP10-NEXT: stfiwx f0, r3, r45572; CHECK-PREP10-NEXT: blr5573entry:5574 %and = and i64 %ptr, -10995116277765575 %conv = fptoui double %str to i325576 %or = or i64 %and, 10000000000005577 %0 = inttoptr i64 %or to ptr5578 store i32 %conv, ptr %0, align 40965579 ret void5580}5581 5582; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5583define dso_local void @st_cst_align16_double_uint32_t(double %str) {5584; CHECK-LABEL: st_cst_align16_double_uint32_t:5585; CHECK: # %bb.0: # %entry5586; CHECK-NEXT: xscvdpuxws f0, f15587; CHECK-NEXT: li r3, 40805588; CHECK-NEXT: stfiwx f0, 0, r35589; CHECK-NEXT: blr5590entry:5591 %conv = fptoui double %str to i325592 store i32 %conv, ptr inttoptr (i64 4080 to ptr), align 165593 ret void5594}5595 5596; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5597define dso_local void @st_cst_align32_double_uint32_t(double %str) {5598; CHECK-P10-LABEL: st_cst_align32_double_uint32_t:5599; CHECK-P10: # %bb.0: # %entry5600; CHECK-P10-NEXT: xscvdpuxws f0, f15601; CHECK-P10-NEXT: pli r3, 99999005602; CHECK-P10-NEXT: stfiwx f0, 0, r35603; CHECK-P10-NEXT: blr5604;5605; CHECK-PREP10-LABEL: st_cst_align32_double_uint32_t:5606; CHECK-PREP10: # %bb.0: # %entry5607; CHECK-PREP10-NEXT: xscvdpuxws f0, f15608; CHECK-PREP10-NEXT: lis r3, 1525609; CHECK-PREP10-NEXT: ori r3, r3, 384285610; CHECK-PREP10-NEXT: stfiwx f0, 0, r35611; CHECK-PREP10-NEXT: blr5612entry:5613 %conv = fptoui double %str to i325614 store i32 %conv, ptr inttoptr (i64 9999900 to ptr), align 45615 ret void5616}5617 5618; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5619define dso_local void @st_cst_align64_double_uint32_t(double %str) {5620; CHECK-P10-LABEL: st_cst_align64_double_uint32_t:5621; CHECK-P10: # %bb.0: # %entry5622; CHECK-P10-NEXT: xscvdpuxws f0, f15623; CHECK-P10-NEXT: pli r3, 2441406255624; CHECK-P10-NEXT: rldic r3, r3, 12, 245625; CHECK-P10-NEXT: stfiwx f0, 0, r35626; CHECK-P10-NEXT: blr5627;5628; CHECK-PREP10-LABEL: st_cst_align64_double_uint32_t:5629; CHECK-PREP10: # %bb.0: # %entry5630; CHECK-PREP10-NEXT: xscvdpuxws f0, f15631; CHECK-PREP10-NEXT: lis r3, 37255632; CHECK-PREP10-NEXT: ori r3, r3, 190255633; CHECK-PREP10-NEXT: rldic r3, r3, 12, 245634; CHECK-PREP10-NEXT: stfiwx f0, 0, r35635; CHECK-PREP10-NEXT: blr5636entry:5637 %conv = fptoui double %str to i325638 store i32 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965639 ret void5640}5641 5642; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5643define dso_local void @st_0_double_int32_t(i64 %ptr, double %str) {5644; CHECK-LABEL: st_0_double_int32_t:5645; CHECK: # %bb.0: # %entry5646; CHECK-NEXT: xscvdpsxws f0, f15647; CHECK-NEXT: stfiwx f0, 0, r35648; CHECK-NEXT: blr5649entry:5650 %conv = fptosi double %str to i325651 %0 = inttoptr i64 %ptr to ptr5652 store i32 %conv, ptr %0, align 45653 ret void5654}5655 5656; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5657define dso_local void @st_align16_double_int32_t(ptr nocapture %ptr, double %str) {5658; CHECK-LABEL: st_align16_double_int32_t:5659; CHECK: # %bb.0: # %entry5660; CHECK-NEXT: xscvdpsxws f0, f15661; CHECK-NEXT: addi r3, r3, 85662; CHECK-NEXT: stfiwx f0, 0, r35663; CHECK-NEXT: blr5664entry:5665 %conv = fptosi double %str to i325666 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85667 store i32 %conv, ptr %add.ptr, align 45668 ret void5669}5670 5671; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5672define dso_local void @st_align32_double_int32_t(ptr nocapture %ptr, double %str) {5673; CHECK-P10-LABEL: st_align32_double_int32_t:5674; CHECK-P10: # %bb.0: # %entry5675; CHECK-P10-NEXT: xscvdpsxws f0, f15676; CHECK-P10-NEXT: pli r4, 999990005677; CHECK-P10-NEXT: stfiwx f0, r3, r45678; CHECK-P10-NEXT: blr5679;5680; CHECK-PREP10-LABEL: st_align32_double_int32_t:5681; CHECK-PREP10: # %bb.0: # %entry5682; CHECK-PREP10-NEXT: xscvdpsxws f0, f15683; CHECK-PREP10-NEXT: lis r4, 15255684; CHECK-PREP10-NEXT: ori r4, r4, 566005685; CHECK-PREP10-NEXT: stfiwx f0, r3, r45686; CHECK-PREP10-NEXT: blr5687entry:5688 %conv = fptosi double %str to i325689 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005690 store i32 %conv, ptr %add.ptr, align 45691 ret void5692}5693 5694; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5695define dso_local void @st_align64_double_int32_t(ptr nocapture %ptr, double %str) {5696; CHECK-P10-LABEL: st_align64_double_int32_t:5697; CHECK-P10: # %bb.0: # %entry5698; CHECK-P10-NEXT: xscvdpsxws f0, f15699; CHECK-P10-NEXT: pli r4, 2441406255700; CHECK-P10-NEXT: rldic r4, r4, 12, 245701; CHECK-P10-NEXT: stfiwx f0, r3, r45702; CHECK-P10-NEXT: blr5703;5704; CHECK-PREP10-LABEL: st_align64_double_int32_t:5705; CHECK-PREP10: # %bb.0: # %entry5706; CHECK-PREP10-NEXT: xscvdpsxws f0, f15707; CHECK-PREP10-NEXT: lis r4, 37255708; CHECK-PREP10-NEXT: ori r4, r4, 190255709; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245710; CHECK-PREP10-NEXT: stfiwx f0, r3, r45711; CHECK-PREP10-NEXT: blr5712entry:5713 %conv = fptosi double %str to i325714 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005715 store i32 %conv, ptr %add.ptr, align 45716 ret void5717}5718 5719; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5720define dso_local void @st_reg_double_int32_t(ptr nocapture %ptr, i64 %off, double %str) {5721; CHECK-LABEL: st_reg_double_int32_t:5722; CHECK: # %bb.0: # %entry5723; CHECK-NEXT: xscvdpsxws f0, f15724; CHECK-NEXT: stfiwx f0, r3, r45725; CHECK-NEXT: blr5726entry:5727 %conv = fptosi double %str to i325728 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5729 store i32 %conv, ptr %add.ptr, align 45730 ret void5731}5732 5733; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5734define dso_local void @st_or1_double_int32_t(i64 %ptr, i8 zeroext %off, double %str) {5735; CHECK-LABEL: st_or1_double_int32_t:5736; CHECK: # %bb.0: # %entry5737; CHECK-NEXT: xscvdpsxws f0, f15738; CHECK-NEXT: or r3, r4, r35739; CHECK-NEXT: stfiwx f0, 0, r35740; CHECK-NEXT: blr5741entry:5742 %conv = fptosi double %str to i325743 %conv1 = zext i8 %off to i645744 %or = or i64 %conv1, %ptr5745 %0 = inttoptr i64 %or to ptr5746 store i32 %conv, ptr %0, align 45747 ret void5748}5749 5750; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5751define dso_local void @st_not_disjoint16_double_int32_t(i64 %ptr, double %str) {5752; CHECK-LABEL: st_not_disjoint16_double_int32_t:5753; CHECK: # %bb.0: # %entry5754; CHECK-NEXT: xscvdpsxws f0, f15755; CHECK-NEXT: ori r3, r3, 65756; CHECK-NEXT: stfiwx f0, 0, r35757; CHECK-NEXT: blr5758entry:5759 %conv = fptosi double %str to i325760 %or = or i64 %ptr, 65761 %0 = inttoptr i64 %or to ptr5762 store i32 %conv, ptr %0, align 45763 ret void5764}5765 5766; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5767define dso_local void @st_disjoint_align16_double_int32_t(i64 %ptr, double %str) {5768; CHECK-LABEL: st_disjoint_align16_double_int32_t:5769; CHECK: # %bb.0: # %entry5770; CHECK-NEXT: xscvdpsxws f0, f15771; CHECK-NEXT: rldicr r3, r3, 0, 515772; CHECK-NEXT: ori r3, r3, 245773; CHECK-NEXT: stfiwx f0, 0, r35774; CHECK-NEXT: blr5775entry:5776 %and = and i64 %ptr, -40965777 %conv = fptosi double %str to i325778 %or = or i64 %and, 245779 %0 = inttoptr i64 %or to ptr5780 store i32 %conv, ptr %0, align 85781 ret void5782}5783 5784; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5785define dso_local void @st_not_disjoint32_double_int32_t(i64 %ptr, double %str) {5786; CHECK-LABEL: st_not_disjoint32_double_int32_t:5787; CHECK: # %bb.0: # %entry5788; CHECK-NEXT: xscvdpsxws f0, f15789; CHECK-NEXT: ori r3, r3, 344635790; CHECK-NEXT: oris r3, r3, 15791; CHECK-NEXT: stfiwx f0, 0, r35792; CHECK-NEXT: blr5793entry:5794 %conv = fptosi double %str to i325795 %or = or i64 %ptr, 999995796 %0 = inttoptr i64 %or to ptr5797 store i32 %conv, ptr %0, align 45798 ret void5799}5800 5801; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5802define dso_local void @st_disjoint_align32_double_int32_t(i64 %ptr, double %str) {5803; CHECK-P10-LABEL: st_disjoint_align32_double_int32_t:5804; CHECK-P10: # %bb.0: # %entry5805; CHECK-P10-NEXT: xscvdpsxws f0, f15806; CHECK-P10-NEXT: lis r4, -152645807; CHECK-P10-NEXT: and r3, r3, r45808; CHECK-P10-NEXT: pli r4, 9999900005809; CHECK-P10-NEXT: stfiwx f0, r3, r45810; CHECK-P10-NEXT: blr5811;5812; CHECK-P9-LABEL: st_disjoint_align32_double_int32_t:5813; CHECK-P9: # %bb.0: # %entry5814; CHECK-P9-NEXT: xscvdpsxws f0, f15815; CHECK-P9-NEXT: lis r4, -152645816; CHECK-P9-NEXT: and r3, r3, r45817; CHECK-P9-NEXT: lis r4, 152585818; CHECK-P9-NEXT: ori r4, r4, 417125819; CHECK-P9-NEXT: stfiwx f0, r3, r45820; CHECK-P9-NEXT: blr5821;5822; CHECK-P8-LABEL: st_disjoint_align32_double_int32_t:5823; CHECK-P8: # %bb.0: # %entry5824; CHECK-P8-NEXT: lis r4, -152645825; CHECK-P8-NEXT: xscvdpsxws f0, f15826; CHECK-P8-NEXT: and r3, r3, r45827; CHECK-P8-NEXT: lis r4, 152585828; CHECK-P8-NEXT: ori r4, r4, 417125829; CHECK-P8-NEXT: stfiwx f0, r3, r45830; CHECK-P8-NEXT: blr5831entry:5832 %and = and i64 %ptr, -10003415045833 %conv = fptosi double %str to i325834 %or = or i64 %and, 9999900005835 %0 = inttoptr i64 %or to ptr5836 store i32 %conv, ptr %0, align 165837 ret void5838}5839 5840; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5841define dso_local void @st_not_disjoint64_double_int32_t(i64 %ptr, double %str) {5842; CHECK-P10-LABEL: st_not_disjoint64_double_int32_t:5843; CHECK-P10: # %bb.0: # %entry5844; CHECK-P10-NEXT: xscvdpsxws f0, f15845; CHECK-P10-NEXT: pli r4, 2325846; CHECK-P10-NEXT: pli r5, 35675873295847; CHECK-P10-NEXT: rldimi r5, r4, 32, 05848; CHECK-P10-NEXT: or r3, r3, r55849; CHECK-P10-NEXT: stfiwx f0, 0, r35850; CHECK-P10-NEXT: blr5851;5852; CHECK-PREP10-LABEL: st_not_disjoint64_double_int32_t:5853; CHECK-PREP10: # %bb.0: # %entry5854; CHECK-PREP10-NEXT: li r4, 295855; CHECK-PREP10-NEXT: xscvdpsxws f0, f15856; CHECK-PREP10-NEXT: rldic r4, r4, 35, 245857; CHECK-PREP10-NEXT: oris r4, r4, 544375858; CHECK-PREP10-NEXT: ori r4, r4, 40975859; CHECK-PREP10-NEXT: or r3, r3, r45860; CHECK-PREP10-NEXT: stfiwx f0, 0, r35861; CHECK-PREP10-NEXT: blr5862entry:5863 %conv = fptosi double %str to i325864 %or = or i64 %ptr, 10000000000015865 %0 = inttoptr i64 %or to ptr5866 store i32 %conv, ptr %0, align 45867 ret void5868}5869 5870; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5871define dso_local void @st_disjoint_align64_double_int32_t(i64 %ptr, double %str) {5872; CHECK-P10-LABEL: st_disjoint_align64_double_int32_t:5873; CHECK-P10: # %bb.0: # %entry5874; CHECK-P10-NEXT: xscvdpsxws f0, f15875; CHECK-P10-NEXT: pli r4, 2441406255876; CHECK-P10-NEXT: rldicr r3, r3, 0, 235877; CHECK-P10-NEXT: rldic r4, r4, 12, 245878; CHECK-P10-NEXT: stfiwx f0, r3, r45879; CHECK-P10-NEXT: blr5880;5881; CHECK-PREP10-LABEL: st_disjoint_align64_double_int32_t:5882; CHECK-PREP10: # %bb.0: # %entry5883; CHECK-PREP10-NEXT: xscvdpsxws f0, f15884; CHECK-PREP10-NEXT: lis r4, 37255885; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235886; CHECK-PREP10-NEXT: ori r4, r4, 190255887; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245888; CHECK-PREP10-NEXT: stfiwx f0, r3, r45889; CHECK-PREP10-NEXT: blr5890entry:5891 %and = and i64 %ptr, -10995116277765892 %conv = fptosi double %str to i325893 %or = or i64 %and, 10000000000005894 %0 = inttoptr i64 %or to ptr5895 store i32 %conv, ptr %0, align 40965896 ret void5897}5898 5899; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5900define dso_local void @st_cst_align16_double_int32_t(double %str) {5901; CHECK-LABEL: st_cst_align16_double_int32_t:5902; CHECK: # %bb.0: # %entry5903; CHECK-NEXT: xscvdpsxws f0, f15904; CHECK-NEXT: li r3, 40805905; CHECK-NEXT: stfiwx f0, 0, r35906; CHECK-NEXT: blr5907entry:5908 %conv = fptosi double %str to i325909 store i32 %conv, ptr inttoptr (i64 4080 to ptr), align 165910 ret void5911}5912 5913; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5914define dso_local void @st_cst_align32_double_int32_t(double %str) {5915; CHECK-P10-LABEL: st_cst_align32_double_int32_t:5916; CHECK-P10: # %bb.0: # %entry5917; CHECK-P10-NEXT: xscvdpsxws f0, f15918; CHECK-P10-NEXT: pli r3, 99999005919; CHECK-P10-NEXT: stfiwx f0, 0, r35920; CHECK-P10-NEXT: blr5921;5922; CHECK-PREP10-LABEL: st_cst_align32_double_int32_t:5923; CHECK-PREP10: # %bb.0: # %entry5924; CHECK-PREP10-NEXT: xscvdpsxws f0, f15925; CHECK-PREP10-NEXT: lis r3, 1525926; CHECK-PREP10-NEXT: ori r3, r3, 384285927; CHECK-PREP10-NEXT: stfiwx f0, 0, r35928; CHECK-PREP10-NEXT: blr5929entry:5930 %conv = fptosi double %str to i325931 store i32 %conv, ptr inttoptr (i64 9999900 to ptr), align 45932 ret void5933}5934 5935; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5936define dso_local void @st_cst_align64_double_int32_t(double %str) {5937; CHECK-P10-LABEL: st_cst_align64_double_int32_t:5938; CHECK-P10: # %bb.0: # %entry5939; CHECK-P10-NEXT: xscvdpsxws f0, f15940; CHECK-P10-NEXT: pli r3, 2441406255941; CHECK-P10-NEXT: rldic r3, r3, 12, 245942; CHECK-P10-NEXT: stfiwx f0, 0, r35943; CHECK-P10-NEXT: blr5944;5945; CHECK-PREP10-LABEL: st_cst_align64_double_int32_t:5946; CHECK-PREP10: # %bb.0: # %entry5947; CHECK-PREP10-NEXT: xscvdpsxws f0, f15948; CHECK-PREP10-NEXT: lis r3, 37255949; CHECK-PREP10-NEXT: ori r3, r3, 190255950; CHECK-PREP10-NEXT: rldic r3, r3, 12, 245951; CHECK-PREP10-NEXT: stfiwx f0, 0, r35952; CHECK-PREP10-NEXT: blr5953entry:5954 %conv = fptosi double %str to i325955 store i32 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965956 ret void5957}5958 5959; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5960define dso_local void @st_0_double_uint64_t(i64 %ptr, double %str) {5961; CHECK-POSTP8-LABEL: st_0_double_uint64_t:5962; CHECK-POSTP8: # %bb.0: # %entry5963; CHECK-POSTP8-NEXT: xscvdpuxds v2, f15964; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)5965; CHECK-POSTP8-NEXT: blr5966;5967; CHECK-P8-LABEL: st_0_double_uint64_t:5968; CHECK-P8: # %bb.0: # %entry5969; CHECK-P8-NEXT: xscvdpuxds f0, f15970; CHECK-P8-NEXT: stxsdx f0, 0, r35971; CHECK-P8-NEXT: blr5972entry:5973 %conv = fptoui double %str to i645974 %0 = inttoptr i64 %ptr to ptr5975 store i64 %conv, ptr %0, align 85976 ret void5977}5978 5979; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5980define dso_local void @st_align16_double_uint64_t(ptr nocapture %ptr, double %str) {5981; CHECK-POSTP8-LABEL: st_align16_double_uint64_t:5982; CHECK-POSTP8: # %bb.0: # %entry5983; CHECK-POSTP8-NEXT: xscvdpuxds v2, f15984; CHECK-POSTP8-NEXT: stxsd v2, 8(r3)5985; CHECK-POSTP8-NEXT: blr5986;5987; CHECK-P8-LABEL: st_align16_double_uint64_t:5988; CHECK-P8: # %bb.0: # %entry5989; CHECK-P8-NEXT: xscvdpuxds f0, f15990; CHECK-P8-NEXT: li r4, 85991; CHECK-P8-NEXT: stxsdx f0, r3, r45992; CHECK-P8-NEXT: blr5993entry:5994 %conv = fptoui double %str to i645995 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85996 store i64 %conv, ptr %add.ptr, align 85997 ret void5998}5999 6000; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6001define dso_local void @st_align32_double_uint64_t(ptr nocapture %ptr, double %str) {6002; CHECK-P10-LABEL: st_align32_double_uint64_t:6003; CHECK-P10: # %bb.0: # %entry6004; CHECK-P10-NEXT: xscvdpuxds v2, f16005; CHECK-P10-NEXT: pstxsd v2, 99999000(r3), 06006; CHECK-P10-NEXT: blr6007;6008; CHECK-PREP10-LABEL: st_align32_double_uint64_t:6009; CHECK-PREP10: # %bb.0: # %entry6010; CHECK-PREP10-NEXT: xscvdpuxds f0, f16011; CHECK-PREP10-NEXT: lis r4, 15256012; CHECK-PREP10-NEXT: ori r4, r4, 566006013; CHECK-PREP10-NEXT: stxsdx f0, r3, r46014; CHECK-PREP10-NEXT: blr6015entry:6016 %conv = fptoui double %str to i646017 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006018 store i64 %conv, ptr %add.ptr, align 86019 ret void6020}6021 6022; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6023define dso_local void @st_align64_double_uint64_t(ptr nocapture %ptr, double %str) {6024; CHECK-P10-LABEL: st_align64_double_uint64_t:6025; CHECK-P10: # %bb.0: # %entry6026; CHECK-P10-NEXT: xscvdpuxds f0, f16027; CHECK-P10-NEXT: pli r4, 2441406256028; CHECK-P10-NEXT: rldic r4, r4, 12, 246029; CHECK-P10-NEXT: stxsdx f0, r3, r46030; CHECK-P10-NEXT: blr6031;6032; CHECK-PREP10-LABEL: st_align64_double_uint64_t:6033; CHECK-PREP10: # %bb.0: # %entry6034; CHECK-PREP10-NEXT: xscvdpuxds f0, f16035; CHECK-PREP10-NEXT: lis r4, 37256036; CHECK-PREP10-NEXT: ori r4, r4, 190256037; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246038; CHECK-PREP10-NEXT: stxsdx f0, r3, r46039; CHECK-PREP10-NEXT: blr6040entry:6041 %conv = fptoui double %str to i646042 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006043 store i64 %conv, ptr %add.ptr, align 86044 ret void6045}6046 6047; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6048define dso_local void @st_reg_double_uint64_t(ptr nocapture %ptr, i64 %off, double %str) {6049; CHECK-LABEL: st_reg_double_uint64_t:6050; CHECK: # %bb.0: # %entry6051; CHECK-NEXT: xscvdpuxds f0, f16052; CHECK-NEXT: stxsdx f0, r3, r46053; CHECK-NEXT: blr6054entry:6055 %conv = fptoui double %str to i646056 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6057 store i64 %conv, ptr %add.ptr, align 86058 ret void6059}6060 6061; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6062define dso_local void @st_or1_double_uint64_t(i64 %ptr, i8 zeroext %off, double %str) {6063; CHECK-POSTP8-LABEL: st_or1_double_uint64_t:6064; CHECK-POSTP8: # %bb.0: # %entry6065; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16066; CHECK-POSTP8-NEXT: or r3, r4, r36067; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6068; CHECK-POSTP8-NEXT: blr6069;6070; CHECK-P8-LABEL: st_or1_double_uint64_t:6071; CHECK-P8: # %bb.0: # %entry6072; CHECK-P8-NEXT: xscvdpuxds f0, f16073; CHECK-P8-NEXT: or r3, r4, r36074; CHECK-P8-NEXT: stxsdx f0, 0, r36075; CHECK-P8-NEXT: blr6076entry:6077 %conv = fptoui double %str to i646078 %conv1 = zext i8 %off to i646079 %or = or i64 %conv1, %ptr6080 %0 = inttoptr i64 %or to ptr6081 store i64 %conv, ptr %0, align 86082 ret void6083}6084 6085; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6086define dso_local void @st_not_disjoint16_double_uint64_t(i64 %ptr, double %str) {6087; CHECK-POSTP8-LABEL: st_not_disjoint16_double_uint64_t:6088; CHECK-POSTP8: # %bb.0: # %entry6089; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16090; CHECK-POSTP8-NEXT: ori r3, r3, 66091; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6092; CHECK-POSTP8-NEXT: blr6093;6094; CHECK-P8-LABEL: st_not_disjoint16_double_uint64_t:6095; CHECK-P8: # %bb.0: # %entry6096; CHECK-P8-NEXT: xscvdpuxds f0, f16097; CHECK-P8-NEXT: ori r3, r3, 66098; CHECK-P8-NEXT: stxsdx f0, 0, r36099; CHECK-P8-NEXT: blr6100entry:6101 %conv = fptoui double %str to i646102 %or = or i64 %ptr, 66103 %0 = inttoptr i64 %or to ptr6104 store i64 %conv, ptr %0, align 86105 ret void6106}6107 6108; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6109define dso_local void @st_disjoint_align16_double_uint64_t(i64 %ptr, double %str) {6110; CHECK-POSTP8-LABEL: st_disjoint_align16_double_uint64_t:6111; CHECK-POSTP8: # %bb.0: # %entry6112; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16113; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 516114; CHECK-POSTP8-NEXT: stxsd v2, 24(r3)6115; CHECK-POSTP8-NEXT: blr6116;6117; CHECK-P8-LABEL: st_disjoint_align16_double_uint64_t:6118; CHECK-P8: # %bb.0: # %entry6119; CHECK-P8-NEXT: xscvdpuxds f0, f16120; CHECK-P8-NEXT: rldicr r3, r3, 0, 516121; CHECK-P8-NEXT: ori r3, r3, 246122; CHECK-P8-NEXT: stxsdx f0, 0, r36123; CHECK-P8-NEXT: blr6124entry:6125 %and = and i64 %ptr, -40966126 %conv = fptoui double %str to i646127 %or = or i64 %and, 246128 %0 = inttoptr i64 %or to ptr6129 store i64 %conv, ptr %0, align 86130 ret void6131}6132 6133; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6134define dso_local void @st_not_disjoint32_double_uint64_t(i64 %ptr, double %str) {6135; CHECK-POSTP8-LABEL: st_not_disjoint32_double_uint64_t:6136; CHECK-POSTP8: # %bb.0: # %entry6137; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16138; CHECK-POSTP8-NEXT: ori r3, r3, 344636139; CHECK-POSTP8-NEXT: oris r3, r3, 16140; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6141; CHECK-POSTP8-NEXT: blr6142;6143; CHECK-P8-LABEL: st_not_disjoint32_double_uint64_t:6144; CHECK-P8: # %bb.0: # %entry6145; CHECK-P8-NEXT: xscvdpuxds f0, f16146; CHECK-P8-NEXT: ori r3, r3, 344636147; CHECK-P8-NEXT: oris r3, r3, 16148; CHECK-P8-NEXT: stxsdx f0, 0, r36149; CHECK-P8-NEXT: blr6150entry:6151 %conv = fptoui double %str to i646152 %or = or i64 %ptr, 999996153 %0 = inttoptr i64 %or to ptr6154 store i64 %conv, ptr %0, align 86155 ret void6156}6157 6158; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6159define dso_local void @st_disjoint_align32_double_uint64_t(i64 %ptr, double %str) {6160; CHECK-P10-LABEL: st_disjoint_align32_double_uint64_t:6161; CHECK-P10: # %bb.0: # %entry6162; CHECK-P10-NEXT: xscvdpuxds v2, f16163; CHECK-P10-NEXT: lis r4, -152646164; CHECK-P10-NEXT: and r3, r3, r46165; CHECK-P10-NEXT: pstxsd v2, 999990000(r3), 06166; CHECK-P10-NEXT: blr6167;6168; CHECK-P9-LABEL: st_disjoint_align32_double_uint64_t:6169; CHECK-P9: # %bb.0: # %entry6170; CHECK-P9-NEXT: xscvdpuxds f0, f16171; CHECK-P9-NEXT: lis r4, -152646172; CHECK-P9-NEXT: and r3, r3, r46173; CHECK-P9-NEXT: lis r4, 152586174; CHECK-P9-NEXT: ori r4, r4, 417126175; CHECK-P9-NEXT: stxsdx f0, r3, r46176; CHECK-P9-NEXT: blr6177;6178; CHECK-P8-LABEL: st_disjoint_align32_double_uint64_t:6179; CHECK-P8: # %bb.0: # %entry6180; CHECK-P8-NEXT: lis r4, -152646181; CHECK-P8-NEXT: xscvdpuxds f0, f16182; CHECK-P8-NEXT: and r3, r3, r46183; CHECK-P8-NEXT: lis r4, 152586184; CHECK-P8-NEXT: ori r4, r4, 417126185; CHECK-P8-NEXT: stxsdx f0, r3, r46186; CHECK-P8-NEXT: blr6187entry:6188 %and = and i64 %ptr, -10003415046189 %conv = fptoui double %str to i646190 %or = or i64 %and, 9999900006191 %0 = inttoptr i64 %or to ptr6192 store i64 %conv, ptr %0, align 166193 ret void6194}6195 6196; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6197define dso_local void @st_not_disjoint64_double_uint64_t(i64 %ptr, double %str) {6198; CHECK-P10-LABEL: st_not_disjoint64_double_uint64_t:6199; CHECK-P10: # %bb.0: # %entry6200; CHECK-P10-NEXT: xscvdpuxds v2, f16201; CHECK-P10-NEXT: pli r4, 2326202; CHECK-P10-NEXT: pli r5, 35675873296203; CHECK-P10-NEXT: rldimi r5, r4, 32, 06204; CHECK-P10-NEXT: or r3, r3, r56205; CHECK-P10-NEXT: stxsd v2, 0(r3)6206; CHECK-P10-NEXT: blr6207;6208; CHECK-P9-LABEL: st_not_disjoint64_double_uint64_t:6209; CHECK-P9: # %bb.0: # %entry6210; CHECK-P9-NEXT: li r4, 296211; CHECK-P9-NEXT: xscvdpuxds v2, f16212; CHECK-P9-NEXT: rldic r4, r4, 35, 246213; CHECK-P9-NEXT: oris r4, r4, 544376214; CHECK-P9-NEXT: ori r4, r4, 40976215; CHECK-P9-NEXT: or r3, r3, r46216; CHECK-P9-NEXT: stxsd v2, 0(r3)6217; CHECK-P9-NEXT: blr6218;6219; CHECK-P8-LABEL: st_not_disjoint64_double_uint64_t:6220; CHECK-P8: # %bb.0: # %entry6221; CHECK-P8-NEXT: li r4, 296222; CHECK-P8-NEXT: xscvdpuxds f0, f16223; CHECK-P8-NEXT: rldic r4, r4, 35, 246224; CHECK-P8-NEXT: oris r4, r4, 544376225; CHECK-P8-NEXT: ori r4, r4, 40976226; CHECK-P8-NEXT: or r3, r3, r46227; CHECK-P8-NEXT: stxsdx f0, 0, r36228; CHECK-P8-NEXT: blr6229entry:6230 %conv = fptoui double %str to i646231 %or = or i64 %ptr, 10000000000016232 %0 = inttoptr i64 %or to ptr6233 store i64 %conv, ptr %0, align 86234 ret void6235}6236 6237; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6238define dso_local void @st_disjoint_align64_double_uint64_t(i64 %ptr, double %str) {6239; CHECK-P10-LABEL: st_disjoint_align64_double_uint64_t:6240; CHECK-P10: # %bb.0: # %entry6241; CHECK-P10-NEXT: xscvdpuxds f0, f16242; CHECK-P10-NEXT: pli r4, 2441406256243; CHECK-P10-NEXT: rldicr r3, r3, 0, 236244; CHECK-P10-NEXT: rldic r4, r4, 12, 246245; CHECK-P10-NEXT: stxsdx f0, r3, r46246; CHECK-P10-NEXT: blr6247;6248; CHECK-PREP10-LABEL: st_disjoint_align64_double_uint64_t:6249; CHECK-PREP10: # %bb.0: # %entry6250; CHECK-PREP10-NEXT: xscvdpuxds f0, f16251; CHECK-PREP10-NEXT: lis r4, 37256252; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236253; CHECK-PREP10-NEXT: ori r4, r4, 190256254; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246255; CHECK-PREP10-NEXT: stxsdx f0, r3, r46256; CHECK-PREP10-NEXT: blr6257entry:6258 %and = and i64 %ptr, -10995116277766259 %conv = fptoui double %str to i646260 %or = or i64 %and, 10000000000006261 %0 = inttoptr i64 %or to ptr6262 store i64 %conv, ptr %0, align 40966263 ret void6264}6265 6266; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6267define dso_local void @st_cst_align16_double_uint64_t(double %str) {6268; CHECK-POSTP8-LABEL: st_cst_align16_double_uint64_t:6269; CHECK-POSTP8: # %bb.0: # %entry6270; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16271; CHECK-POSTP8-NEXT: stxsd v2, 4080(0)6272; CHECK-POSTP8-NEXT: blr6273;6274; CHECK-P8-LABEL: st_cst_align16_double_uint64_t:6275; CHECK-P8: # %bb.0: # %entry6276; CHECK-P8-NEXT: xscvdpuxds f0, f16277; CHECK-P8-NEXT: li r3, 40806278; CHECK-P8-NEXT: stxsdx f0, 0, r36279; CHECK-P8-NEXT: blr6280entry:6281 %conv = fptoui double %str to i646282 store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 166283 ret void6284}6285 6286; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6287define dso_local void @st_cst_align32_double_uint64_t(double %str) {6288; CHECK-POSTP8-LABEL: st_cst_align32_double_uint64_t:6289; CHECK-POSTP8: # %bb.0: # %entry6290; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16291; CHECK-POSTP8-NEXT: lis r3, 1536292; CHECK-POSTP8-NEXT: stxsd v2, -27108(r3)6293; CHECK-POSTP8-NEXT: blr6294;6295; CHECK-P8-LABEL: st_cst_align32_double_uint64_t:6296; CHECK-P8: # %bb.0: # %entry6297; CHECK-P8-NEXT: xscvdpuxds f0, f16298; CHECK-P8-NEXT: lis r3, 1526299; CHECK-P8-NEXT: ori r3, r3, 384286300; CHECK-P8-NEXT: stxsdx f0, 0, r36301; CHECK-P8-NEXT: blr6302entry:6303 %conv = fptoui double %str to i646304 store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 86305 ret void6306}6307 6308; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6309define dso_local void @st_cst_align64_double_uint64_t(double %str) {6310; CHECK-P10-LABEL: st_cst_align64_double_uint64_t:6311; CHECK-P10: # %bb.0: # %entry6312; CHECK-P10-NEXT: xscvdpuxds v2, f16313; CHECK-P10-NEXT: pli r3, 2441406256314; CHECK-P10-NEXT: rldic r3, r3, 12, 246315; CHECK-P10-NEXT: stxsd v2, 0(r3)6316; CHECK-P10-NEXT: blr6317;6318; CHECK-P9-LABEL: st_cst_align64_double_uint64_t:6319; CHECK-P9: # %bb.0: # %entry6320; CHECK-P9-NEXT: xscvdpuxds v2, f16321; CHECK-P9-NEXT: lis r3, 37256322; CHECK-P9-NEXT: ori r3, r3, 190256323; CHECK-P9-NEXT: rldic r3, r3, 12, 246324; CHECK-P9-NEXT: stxsd v2, 0(r3)6325; CHECK-P9-NEXT: blr6326;6327; CHECK-P8-LABEL: st_cst_align64_double_uint64_t:6328; CHECK-P8: # %bb.0: # %entry6329; CHECK-P8-NEXT: xscvdpuxds f0, f16330; CHECK-P8-NEXT: lis r3, 37256331; CHECK-P8-NEXT: ori r3, r3, 190256332; CHECK-P8-NEXT: rldic r3, r3, 12, 246333; CHECK-P8-NEXT: stxsdx f0, 0, r36334; CHECK-P8-NEXT: blr6335entry:6336 %conv = fptoui double %str to i646337 store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966338 ret void6339}6340 6341; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6342define dso_local void @st_0_double_int64_t(i64 %ptr, double %str) {6343; CHECK-POSTP8-LABEL: st_0_double_int64_t:6344; CHECK-POSTP8: # %bb.0: # %entry6345; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16346; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6347; CHECK-POSTP8-NEXT: blr6348;6349; CHECK-P8-LABEL: st_0_double_int64_t:6350; CHECK-P8: # %bb.0: # %entry6351; CHECK-P8-NEXT: xscvdpsxds f0, f16352; CHECK-P8-NEXT: stxsdx f0, 0, r36353; CHECK-P8-NEXT: blr6354entry:6355 %conv = fptosi double %str to i646356 %0 = inttoptr i64 %ptr to ptr6357 store i64 %conv, ptr %0, align 86358 ret void6359}6360 6361; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6362define dso_local void @st_align16_double_int64_t(ptr nocapture %ptr, double %str) {6363; CHECK-POSTP8-LABEL: st_align16_double_int64_t:6364; CHECK-POSTP8: # %bb.0: # %entry6365; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16366; CHECK-POSTP8-NEXT: stxsd v2, 8(r3)6367; CHECK-POSTP8-NEXT: blr6368;6369; CHECK-P8-LABEL: st_align16_double_int64_t:6370; CHECK-P8: # %bb.0: # %entry6371; CHECK-P8-NEXT: xscvdpsxds f0, f16372; CHECK-P8-NEXT: li r4, 86373; CHECK-P8-NEXT: stxsdx f0, r3, r46374; CHECK-P8-NEXT: blr6375entry:6376 %conv = fptosi double %str to i646377 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86378 store i64 %conv, ptr %add.ptr, align 86379 ret void6380}6381 6382; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6383define dso_local void @st_align32_double_int64_t(ptr nocapture %ptr, double %str) {6384; CHECK-P10-LABEL: st_align32_double_int64_t:6385; CHECK-P10: # %bb.0: # %entry6386; CHECK-P10-NEXT: xscvdpsxds v2, f16387; CHECK-P10-NEXT: pstxsd v2, 99999000(r3), 06388; CHECK-P10-NEXT: blr6389;6390; CHECK-PREP10-LABEL: st_align32_double_int64_t:6391; CHECK-PREP10: # %bb.0: # %entry6392; CHECK-PREP10-NEXT: xscvdpsxds f0, f16393; CHECK-PREP10-NEXT: lis r4, 15256394; CHECK-PREP10-NEXT: ori r4, r4, 566006395; CHECK-PREP10-NEXT: stxsdx f0, r3, r46396; CHECK-PREP10-NEXT: blr6397entry:6398 %conv = fptosi double %str to i646399 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006400 store i64 %conv, ptr %add.ptr, align 86401 ret void6402}6403 6404; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6405define dso_local void @st_align64_double_int64_t(ptr nocapture %ptr, double %str) {6406; CHECK-P10-LABEL: st_align64_double_int64_t:6407; CHECK-P10: # %bb.0: # %entry6408; CHECK-P10-NEXT: xscvdpsxds f0, f16409; CHECK-P10-NEXT: pli r4, 2441406256410; CHECK-P10-NEXT: rldic r4, r4, 12, 246411; CHECK-P10-NEXT: stxsdx f0, r3, r46412; CHECK-P10-NEXT: blr6413;6414; CHECK-PREP10-LABEL: st_align64_double_int64_t:6415; CHECK-PREP10: # %bb.0: # %entry6416; CHECK-PREP10-NEXT: xscvdpsxds f0, f16417; CHECK-PREP10-NEXT: lis r4, 37256418; CHECK-PREP10-NEXT: ori r4, r4, 190256419; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246420; CHECK-PREP10-NEXT: stxsdx f0, r3, r46421; CHECK-PREP10-NEXT: blr6422entry:6423 %conv = fptosi double %str to i646424 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006425 store i64 %conv, ptr %add.ptr, align 86426 ret void6427}6428 6429; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6430define dso_local void @st_reg_double_int64_t(ptr nocapture %ptr, i64 %off, double %str) {6431; CHECK-LABEL: st_reg_double_int64_t:6432; CHECK: # %bb.0: # %entry6433; CHECK-NEXT: xscvdpsxds f0, f16434; CHECK-NEXT: stxsdx f0, r3, r46435; CHECK-NEXT: blr6436entry:6437 %conv = fptosi double %str to i646438 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6439 store i64 %conv, ptr %add.ptr, align 86440 ret void6441}6442 6443; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6444define dso_local void @st_or1_double_int64_t(i64 %ptr, i8 zeroext %off, double %str) {6445; CHECK-POSTP8-LABEL: st_or1_double_int64_t:6446; CHECK-POSTP8: # %bb.0: # %entry6447; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16448; CHECK-POSTP8-NEXT: or r3, r4, r36449; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6450; CHECK-POSTP8-NEXT: blr6451;6452; CHECK-P8-LABEL: st_or1_double_int64_t:6453; CHECK-P8: # %bb.0: # %entry6454; CHECK-P8-NEXT: xscvdpsxds f0, f16455; CHECK-P8-NEXT: or r3, r4, r36456; CHECK-P8-NEXT: stxsdx f0, 0, r36457; CHECK-P8-NEXT: blr6458entry:6459 %conv = fptosi double %str to i646460 %conv1 = zext i8 %off to i646461 %or = or i64 %conv1, %ptr6462 %0 = inttoptr i64 %or to ptr6463 store i64 %conv, ptr %0, align 86464 ret void6465}6466 6467; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6468define dso_local void @st_not_disjoint16_double_int64_t(i64 %ptr, double %str) {6469; CHECK-POSTP8-LABEL: st_not_disjoint16_double_int64_t:6470; CHECK-POSTP8: # %bb.0: # %entry6471; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16472; CHECK-POSTP8-NEXT: ori r3, r3, 66473; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6474; CHECK-POSTP8-NEXT: blr6475;6476; CHECK-P8-LABEL: st_not_disjoint16_double_int64_t:6477; CHECK-P8: # %bb.0: # %entry6478; CHECK-P8-NEXT: xscvdpsxds f0, f16479; CHECK-P8-NEXT: ori r3, r3, 66480; CHECK-P8-NEXT: stxsdx f0, 0, r36481; CHECK-P8-NEXT: blr6482entry:6483 %conv = fptosi double %str to i646484 %or = or i64 %ptr, 66485 %0 = inttoptr i64 %or to ptr6486 store i64 %conv, ptr %0, align 86487 ret void6488}6489 6490; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6491define dso_local void @st_disjoint_align16_double_int64_t(i64 %ptr, double %str) {6492; CHECK-POSTP8-LABEL: st_disjoint_align16_double_int64_t:6493; CHECK-POSTP8: # %bb.0: # %entry6494; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16495; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 516496; CHECK-POSTP8-NEXT: stxsd v2, 24(r3)6497; CHECK-POSTP8-NEXT: blr6498;6499; CHECK-P8-LABEL: st_disjoint_align16_double_int64_t:6500; CHECK-P8: # %bb.0: # %entry6501; CHECK-P8-NEXT: xscvdpsxds f0, f16502; CHECK-P8-NEXT: rldicr r3, r3, 0, 516503; CHECK-P8-NEXT: ori r3, r3, 246504; CHECK-P8-NEXT: stxsdx f0, 0, r36505; CHECK-P8-NEXT: blr6506entry:6507 %and = and i64 %ptr, -40966508 %conv = fptosi double %str to i646509 %or = or i64 %and, 246510 %0 = inttoptr i64 %or to ptr6511 store i64 %conv, ptr %0, align 86512 ret void6513}6514 6515; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6516define dso_local void @st_not_disjoint32_double_int64_t(i64 %ptr, double %str) {6517; CHECK-POSTP8-LABEL: st_not_disjoint32_double_int64_t:6518; CHECK-POSTP8: # %bb.0: # %entry6519; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16520; CHECK-POSTP8-NEXT: ori r3, r3, 344636521; CHECK-POSTP8-NEXT: oris r3, r3, 16522; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6523; CHECK-POSTP8-NEXT: blr6524;6525; CHECK-P8-LABEL: st_not_disjoint32_double_int64_t:6526; CHECK-P8: # %bb.0: # %entry6527; CHECK-P8-NEXT: xscvdpsxds f0, f16528; CHECK-P8-NEXT: ori r3, r3, 344636529; CHECK-P8-NEXT: oris r3, r3, 16530; CHECK-P8-NEXT: stxsdx f0, 0, r36531; CHECK-P8-NEXT: blr6532entry:6533 %conv = fptosi double %str to i646534 %or = or i64 %ptr, 999996535 %0 = inttoptr i64 %or to ptr6536 store i64 %conv, ptr %0, align 86537 ret void6538}6539 6540; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6541define dso_local void @st_disjoint_align32_double_int64_t(i64 %ptr, double %str) {6542; CHECK-P10-LABEL: st_disjoint_align32_double_int64_t:6543; CHECK-P10: # %bb.0: # %entry6544; CHECK-P10-NEXT: xscvdpsxds v2, f16545; CHECK-P10-NEXT: lis r4, -152646546; CHECK-P10-NEXT: and r3, r3, r46547; CHECK-P10-NEXT: pstxsd v2, 999990000(r3), 06548; CHECK-P10-NEXT: blr6549;6550; CHECK-P9-LABEL: st_disjoint_align32_double_int64_t:6551; CHECK-P9: # %bb.0: # %entry6552; CHECK-P9-NEXT: xscvdpsxds f0, f16553; CHECK-P9-NEXT: lis r4, -152646554; CHECK-P9-NEXT: and r3, r3, r46555; CHECK-P9-NEXT: lis r4, 152586556; CHECK-P9-NEXT: ori r4, r4, 417126557; CHECK-P9-NEXT: stxsdx f0, r3, r46558; CHECK-P9-NEXT: blr6559;6560; CHECK-P8-LABEL: st_disjoint_align32_double_int64_t:6561; CHECK-P8: # %bb.0: # %entry6562; CHECK-P8-NEXT: lis r4, -152646563; CHECK-P8-NEXT: xscvdpsxds f0, f16564; CHECK-P8-NEXT: and r3, r3, r46565; CHECK-P8-NEXT: lis r4, 152586566; CHECK-P8-NEXT: ori r4, r4, 417126567; CHECK-P8-NEXT: stxsdx f0, r3, r46568; CHECK-P8-NEXT: blr6569entry:6570 %and = and i64 %ptr, -10003415046571 %conv = fptosi double %str to i646572 %or = or i64 %and, 9999900006573 %0 = inttoptr i64 %or to ptr6574 store i64 %conv, ptr %0, align 166575 ret void6576}6577 6578; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6579define dso_local void @st_not_disjoint64_double_int64_t(i64 %ptr, double %str) {6580; CHECK-P10-LABEL: st_not_disjoint64_double_int64_t:6581; CHECK-P10: # %bb.0: # %entry6582; CHECK-P10-NEXT: xscvdpsxds v2, f16583; CHECK-P10-NEXT: pli r4, 2326584; CHECK-P10-NEXT: pli r5, 35675873296585; CHECK-P10-NEXT: rldimi r5, r4, 32, 06586; CHECK-P10-NEXT: or r3, r3, r56587; CHECK-P10-NEXT: stxsd v2, 0(r3)6588; CHECK-P10-NEXT: blr6589;6590; CHECK-P9-LABEL: st_not_disjoint64_double_int64_t:6591; CHECK-P9: # %bb.0: # %entry6592; CHECK-P9-NEXT: li r4, 296593; CHECK-P9-NEXT: xscvdpsxds v2, f16594; CHECK-P9-NEXT: rldic r4, r4, 35, 246595; CHECK-P9-NEXT: oris r4, r4, 544376596; CHECK-P9-NEXT: ori r4, r4, 40976597; CHECK-P9-NEXT: or r3, r3, r46598; CHECK-P9-NEXT: stxsd v2, 0(r3)6599; CHECK-P9-NEXT: blr6600;6601; CHECK-P8-LABEL: st_not_disjoint64_double_int64_t:6602; CHECK-P8: # %bb.0: # %entry6603; CHECK-P8-NEXT: li r4, 296604; CHECK-P8-NEXT: xscvdpsxds f0, f16605; CHECK-P8-NEXT: rldic r4, r4, 35, 246606; CHECK-P8-NEXT: oris r4, r4, 544376607; CHECK-P8-NEXT: ori r4, r4, 40976608; CHECK-P8-NEXT: or r3, r3, r46609; CHECK-P8-NEXT: stxsdx f0, 0, r36610; CHECK-P8-NEXT: blr6611entry:6612 %conv = fptosi double %str to i646613 %or = or i64 %ptr, 10000000000016614 %0 = inttoptr i64 %or to ptr6615 store i64 %conv, ptr %0, align 86616 ret void6617}6618 6619; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6620define dso_local void @st_disjoint_align64_double_int64_t(i64 %ptr, double %str) {6621; CHECK-P10-LABEL: st_disjoint_align64_double_int64_t:6622; CHECK-P10: # %bb.0: # %entry6623; CHECK-P10-NEXT: xscvdpsxds f0, f16624; CHECK-P10-NEXT: pli r4, 2441406256625; CHECK-P10-NEXT: rldicr r3, r3, 0, 236626; CHECK-P10-NEXT: rldic r4, r4, 12, 246627; CHECK-P10-NEXT: stxsdx f0, r3, r46628; CHECK-P10-NEXT: blr6629;6630; CHECK-PREP10-LABEL: st_disjoint_align64_double_int64_t:6631; CHECK-PREP10: # %bb.0: # %entry6632; CHECK-PREP10-NEXT: xscvdpsxds f0, f16633; CHECK-PREP10-NEXT: lis r4, 37256634; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236635; CHECK-PREP10-NEXT: ori r4, r4, 190256636; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246637; CHECK-PREP10-NEXT: stxsdx f0, r3, r46638; CHECK-PREP10-NEXT: blr6639entry:6640 %and = and i64 %ptr, -10995116277766641 %conv = fptosi double %str to i646642 %or = or i64 %and, 10000000000006643 %0 = inttoptr i64 %or to ptr6644 store i64 %conv, ptr %0, align 40966645 ret void6646}6647 6648; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6649define dso_local void @st_cst_align16_double_int64_t(double %str) {6650; CHECK-POSTP8-LABEL: st_cst_align16_double_int64_t:6651; CHECK-POSTP8: # %bb.0: # %entry6652; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16653; CHECK-POSTP8-NEXT: stxsd v2, 4080(0)6654; CHECK-POSTP8-NEXT: blr6655;6656; CHECK-P8-LABEL: st_cst_align16_double_int64_t:6657; CHECK-P8: # %bb.0: # %entry6658; CHECK-P8-NEXT: xscvdpsxds f0, f16659; CHECK-P8-NEXT: li r3, 40806660; CHECK-P8-NEXT: stxsdx f0, 0, r36661; CHECK-P8-NEXT: blr6662entry:6663 %conv = fptosi double %str to i646664 store i64 %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_double_int64_t(double %str) {6670; CHECK-POSTP8-LABEL: st_cst_align32_double_int64_t:6671; CHECK-POSTP8: # %bb.0: # %entry6672; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16673; CHECK-POSTP8-NEXT: lis r3, 1536674; CHECK-POSTP8-NEXT: stxsd v2, -27108(r3)6675; CHECK-POSTP8-NEXT: blr6676;6677; CHECK-P8-LABEL: st_cst_align32_double_int64_t:6678; CHECK-P8: # %bb.0: # %entry6679; CHECK-P8-NEXT: xscvdpsxds f0, f16680; CHECK-P8-NEXT: lis r3, 1526681; CHECK-P8-NEXT: ori r3, r3, 384286682; CHECK-P8-NEXT: stxsdx f0, 0, r36683; CHECK-P8-NEXT: blr6684entry:6685 %conv = fptosi double %str to i646686 store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 86687 ret void6688}6689 6690; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6691define dso_local void @st_cst_align64_double_int64_t(double %str) {6692; CHECK-P10-LABEL: st_cst_align64_double_int64_t:6693; CHECK-P10: # %bb.0: # %entry6694; CHECK-P10-NEXT: xscvdpsxds v2, f16695; CHECK-P10-NEXT: pli r3, 2441406256696; CHECK-P10-NEXT: rldic r3, r3, 12, 246697; CHECK-P10-NEXT: stxsd v2, 0(r3)6698; CHECK-P10-NEXT: blr6699;6700; CHECK-P9-LABEL: st_cst_align64_double_int64_t:6701; CHECK-P9: # %bb.0: # %entry6702; CHECK-P9-NEXT: xscvdpsxds v2, f16703; CHECK-P9-NEXT: lis r3, 37256704; CHECK-P9-NEXT: ori r3, r3, 190256705; CHECK-P9-NEXT: rldic r3, r3, 12, 246706; CHECK-P9-NEXT: stxsd v2, 0(r3)6707; CHECK-P9-NEXT: blr6708;6709; CHECK-P8-LABEL: st_cst_align64_double_int64_t:6710; CHECK-P8: # %bb.0: # %entry6711; CHECK-P8-NEXT: xscvdpsxds f0, f16712; CHECK-P8-NEXT: lis r3, 37256713; CHECK-P8-NEXT: ori r3, r3, 190256714; CHECK-P8-NEXT: rldic r3, r3, 12, 246715; CHECK-P8-NEXT: stxsdx f0, 0, r36716; CHECK-P8-NEXT: blr6717entry:6718 %conv = fptosi double %str to i646719 store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966720 ret void6721}6722 6723; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6724define dso_local void @st_0_double_float(i64 %ptr, double %str) {6725; CHECK-LABEL: st_0_double_float:6726; CHECK: # %bb.0: # %entry6727; CHECK-NEXT: xsrsp f0, f16728; CHECK-NEXT: stfs f0, 0(r3)6729; CHECK-NEXT: blr6730entry:6731 %conv = fptrunc double %str to float6732 %0 = inttoptr i64 %ptr to ptr6733 store float %conv, ptr %0, align 46734 ret void6735}6736 6737; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6738define dso_local void @st_align16_double_float(ptr nocapture %ptr, double %str) {6739; CHECK-LABEL: st_align16_double_float:6740; CHECK: # %bb.0: # %entry6741; CHECK-NEXT: xsrsp f0, f16742; CHECK-NEXT: stfs f0, 8(r3)6743; CHECK-NEXT: blr6744entry:6745 %conv = fptrunc double %str to float6746 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86747 store float %conv, ptr %add.ptr, align 46748 ret void6749}6750 6751; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6752define dso_local void @st_align32_double_float(ptr nocapture %ptr, double %str) {6753; CHECK-P10-LABEL: st_align32_double_float:6754; CHECK-P10: # %bb.0: # %entry6755; CHECK-P10-NEXT: xsrsp f0, f16756; CHECK-P10-NEXT: pstfs f0, 99999000(r3), 06757; CHECK-P10-NEXT: blr6758;6759; CHECK-PREP10-LABEL: st_align32_double_float:6760; CHECK-PREP10: # %bb.0: # %entry6761; CHECK-PREP10-NEXT: xsrsp f0, f16762; CHECK-PREP10-NEXT: lis r4, 15256763; CHECK-PREP10-NEXT: ori r4, r4, 566006764; CHECK-PREP10-NEXT: stfsx f0, r3, r46765; CHECK-PREP10-NEXT: blr6766entry:6767 %conv = fptrunc double %str to float6768 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006769 store float %conv, ptr %add.ptr, align 46770 ret void6771}6772 6773; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6774define dso_local void @st_align64_double_float(ptr nocapture %ptr, double %str) {6775; CHECK-P10-LABEL: st_align64_double_float:6776; CHECK-P10: # %bb.0: # %entry6777; CHECK-P10-NEXT: xsrsp f0, f16778; CHECK-P10-NEXT: pli r4, 2441406256779; CHECK-P10-NEXT: rldic r4, r4, 12, 246780; CHECK-P10-NEXT: stfsx f0, r3, r46781; CHECK-P10-NEXT: blr6782;6783; CHECK-PREP10-LABEL: st_align64_double_float:6784; CHECK-PREP10: # %bb.0: # %entry6785; CHECK-PREP10-NEXT: xsrsp f0, f16786; CHECK-PREP10-NEXT: lis r4, 37256787; CHECK-PREP10-NEXT: ori r4, r4, 190256788; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246789; CHECK-PREP10-NEXT: stfsx f0, r3, r46790; CHECK-PREP10-NEXT: blr6791entry:6792 %conv = fptrunc double %str to float6793 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006794 store float %conv, ptr %add.ptr, align 46795 ret void6796}6797 6798; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6799define dso_local void @st_reg_double_float(ptr nocapture %ptr, i64 %off, double %str) {6800; CHECK-LABEL: st_reg_double_float:6801; CHECK: # %bb.0: # %entry6802; CHECK-NEXT: xsrsp f0, f16803; CHECK-NEXT: stfsx f0, r3, r46804; CHECK-NEXT: blr6805entry:6806 %conv = fptrunc double %str to float6807 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6808 store float %conv, ptr %add.ptr, align 46809 ret void6810}6811 6812; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6813define dso_local void @st_or1_double_float(i64 %ptr, i8 zeroext %off, double %str) {6814; CHECK-LABEL: st_or1_double_float:6815; CHECK: # %bb.0: # %entry6816; CHECK-NEXT: xsrsp f0, f16817; CHECK-NEXT: or r3, r4, r36818; CHECK-NEXT: stfs f0, 0(r3)6819; CHECK-NEXT: blr6820entry:6821 %conv = fptrunc double %str to float6822 %conv1 = zext i8 %off to i646823 %or = or i64 %conv1, %ptr6824 %0 = inttoptr i64 %or to ptr6825 store float %conv, ptr %0, align 46826 ret void6827}6828 6829; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6830define dso_local void @st_not_disjoint16_double_float(i64 %ptr, double %str) {6831; CHECK-LABEL: st_not_disjoint16_double_float:6832; CHECK: # %bb.0: # %entry6833; CHECK-NEXT: xsrsp f0, f16834; CHECK-NEXT: ori r3, r3, 66835; CHECK-NEXT: stfs f0, 0(r3)6836; CHECK-NEXT: blr6837entry:6838 %conv = fptrunc double %str to float6839 %or = or i64 %ptr, 66840 %0 = inttoptr i64 %or to ptr6841 store float %conv, ptr %0, align 46842 ret void6843}6844 6845; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6846define dso_local void @st_disjoint_align16_double_float(i64 %ptr, double %str) {6847; CHECK-LABEL: st_disjoint_align16_double_float:6848; CHECK: # %bb.0: # %entry6849; CHECK-NEXT: xsrsp f0, f16850; CHECK-NEXT: rldicr r3, r3, 0, 516851; CHECK-NEXT: stfs f0, 24(r3)6852; CHECK-NEXT: blr6853entry:6854 %and = and i64 %ptr, -40966855 %conv = fptrunc double %str to float6856 %or = or i64 %and, 246857 %0 = inttoptr i64 %or to ptr6858 store float %conv, ptr %0, align 86859 ret void6860}6861 6862; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6863define dso_local void @st_not_disjoint32_double_float(i64 %ptr, double %str) {6864; CHECK-LABEL: st_not_disjoint32_double_float:6865; CHECK: # %bb.0: # %entry6866; CHECK-NEXT: xsrsp f0, f16867; CHECK-NEXT: ori r3, r3, 344636868; CHECK-NEXT: oris r3, r3, 16869; CHECK-NEXT: stfs f0, 0(r3)6870; CHECK-NEXT: blr6871entry:6872 %conv = fptrunc double %str to float6873 %or = or i64 %ptr, 999996874 %0 = inttoptr i64 %or to ptr6875 store float %conv, ptr %0, align 46876 ret void6877}6878 6879; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6880define dso_local void @st_disjoint_align32_double_float(i64 %ptr, double %str) {6881; CHECK-P10-LABEL: st_disjoint_align32_double_float:6882; CHECK-P10: # %bb.0: # %entry6883; CHECK-P10-NEXT: xsrsp f0, f16884; CHECK-P10-NEXT: lis r4, -152646885; CHECK-P10-NEXT: and r3, r3, r46886; CHECK-P10-NEXT: pstfs f0, 999990000(r3), 06887; CHECK-P10-NEXT: blr6888;6889; CHECK-P9-LABEL: st_disjoint_align32_double_float:6890; CHECK-P9: # %bb.0: # %entry6891; CHECK-P9-NEXT: xsrsp f0, f16892; CHECK-P9-NEXT: lis r4, -152646893; CHECK-P9-NEXT: and r3, r3, r46894; CHECK-P9-NEXT: lis r4, 152586895; CHECK-P9-NEXT: ori r4, r4, 417126896; CHECK-P9-NEXT: stfsx f0, r3, r46897; CHECK-P9-NEXT: blr6898;6899; CHECK-P8-LABEL: st_disjoint_align32_double_float:6900; CHECK-P8: # %bb.0: # %entry6901; CHECK-P8-NEXT: lis r4, -152646902; CHECK-P8-NEXT: xsrsp f0, f16903; CHECK-P8-NEXT: and r3, r3, r46904; CHECK-P8-NEXT: lis r4, 152586905; CHECK-P8-NEXT: ori r4, r4, 417126906; CHECK-P8-NEXT: stfsx f0, r3, r46907; CHECK-P8-NEXT: blr6908entry:6909 %and = and i64 %ptr, -10003415046910 %conv = fptrunc double %str to float6911 %or = or i64 %and, 9999900006912 %0 = inttoptr i64 %or to ptr6913 store float %conv, ptr %0, align 166914 ret void6915}6916 6917; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6918define dso_local void @st_not_disjoint64_double_float(i64 %ptr, double %str) {6919; CHECK-P10-LABEL: st_not_disjoint64_double_float:6920; CHECK-P10: # %bb.0: # %entry6921; CHECK-P10-NEXT: xsrsp f0, f16922; CHECK-P10-NEXT: pli r4, 2326923; CHECK-P10-NEXT: pli r5, 35675873296924; CHECK-P10-NEXT: rldimi r5, r4, 32, 06925; CHECK-P10-NEXT: or r3, r3, r56926; CHECK-P10-NEXT: stfs f0, 0(r3)6927; CHECK-P10-NEXT: blr6928;6929; CHECK-PREP10-LABEL: st_not_disjoint64_double_float:6930; CHECK-PREP10: # %bb.0: # %entry6931; CHECK-PREP10-NEXT: li r4, 296932; CHECK-PREP10-NEXT: xsrsp f0, f16933; CHECK-PREP10-NEXT: rldic r4, r4, 35, 246934; CHECK-PREP10-NEXT: oris r4, r4, 544376935; CHECK-PREP10-NEXT: ori r4, r4, 40976936; CHECK-PREP10-NEXT: or r3, r3, r46937; CHECK-PREP10-NEXT: stfs f0, 0(r3)6938; CHECK-PREP10-NEXT: blr6939entry:6940 %conv = fptrunc double %str to float6941 %or = or i64 %ptr, 10000000000016942 %0 = inttoptr i64 %or to ptr6943 store float %conv, ptr %0, align 46944 ret void6945}6946 6947; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6948define dso_local void @st_disjoint_align64_double_float(i64 %ptr, double %str) {6949; CHECK-P10-LABEL: st_disjoint_align64_double_float:6950; CHECK-P10: # %bb.0: # %entry6951; CHECK-P10-NEXT: xsrsp f0, f16952; CHECK-P10-NEXT: pli r4, 2441406256953; CHECK-P10-NEXT: rldicr r3, r3, 0, 236954; CHECK-P10-NEXT: rldic r4, r4, 12, 246955; CHECK-P10-NEXT: stfsx f0, r3, r46956; CHECK-P10-NEXT: blr6957;6958; CHECK-PREP10-LABEL: st_disjoint_align64_double_float:6959; CHECK-PREP10: # %bb.0: # %entry6960; CHECK-PREP10-NEXT: xsrsp f0, f16961; CHECK-PREP10-NEXT: lis r4, 37256962; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236963; CHECK-PREP10-NEXT: ori r4, r4, 190256964; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246965; CHECK-PREP10-NEXT: stfsx f0, r3, r46966; CHECK-PREP10-NEXT: blr6967entry:6968 %and = and i64 %ptr, -10995116277766969 %conv = fptrunc double %str to float6970 %or = or i64 %and, 10000000000006971 %0 = inttoptr i64 %or to ptr6972 store float %conv, ptr %0, align 40966973 ret void6974}6975 6976; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6977define dso_local void @st_cst_align16_double_float(double %str) {6978; CHECK-LABEL: st_cst_align16_double_float:6979; CHECK: # %bb.0: # %entry6980; CHECK-NEXT: xsrsp f0, f16981; CHECK-NEXT: stfs f0, 4080(0)6982; CHECK-NEXT: blr6983entry:6984 %conv = fptrunc double %str to float6985 store float %conv, ptr inttoptr (i64 4080 to ptr), align 166986 ret void6987}6988 6989; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6990define dso_local void @st_cst_align32_double_float(double %str) {6991; CHECK-LABEL: st_cst_align32_double_float:6992; CHECK: # %bb.0: # %entry6993; CHECK-NEXT: xsrsp f0, f16994; CHECK-NEXT: lis r3, 1536995; CHECK-NEXT: stfs f0, -27108(r3)6996; CHECK-NEXT: blr6997entry:6998 %conv = fptrunc double %str to float6999 store float %conv, ptr inttoptr (i64 9999900 to ptr), align 47000 ret void7001}7002 7003; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7004define dso_local void @st_cst_align64_double_float(double %str) {7005; CHECK-P10-LABEL: st_cst_align64_double_float:7006; CHECK-P10: # %bb.0: # %entry7007; CHECK-P10-NEXT: xsrsp f0, f17008; CHECK-P10-NEXT: pli r3, 2441406257009; CHECK-P10-NEXT: rldic r3, r3, 12, 247010; CHECK-P10-NEXT: stfs f0, 0(r3)7011; CHECK-P10-NEXT: blr7012;7013; CHECK-PREP10-LABEL: st_cst_align64_double_float:7014; CHECK-PREP10: # %bb.0: # %entry7015; CHECK-PREP10-NEXT: xsrsp f0, f17016; CHECK-PREP10-NEXT: lis r3, 37257017; CHECK-PREP10-NEXT: ori r3, r3, 190257018; CHECK-PREP10-NEXT: rldic r3, r3, 12, 247019; CHECK-PREP10-NEXT: stfs f0, 0(r3)7020; CHECK-PREP10-NEXT: blr7021entry:7022 %conv = fptrunc double %str to float7023 store float %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967024 ret void7025}7026 7027; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7028define dso_local void @st_0_double_double(i64 %ptr, double %str) {7029; CHECK-LABEL: st_0_double_double:7030; CHECK: # %bb.0: # %entry7031; CHECK-NEXT: stfd f1, 0(r3)7032; CHECK-NEXT: blr7033entry:7034 %0 = inttoptr i64 %ptr to ptr7035 store double %str, ptr %0, align 87036 ret void7037}7038 7039; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7040define dso_local void @st_align16_double_double(ptr nocapture %ptr, double %str) {7041; CHECK-LABEL: st_align16_double_double:7042; CHECK: # %bb.0: # %entry7043; CHECK-NEXT: stfd f1, 8(r3)7044; CHECK-NEXT: blr7045entry:7046 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87047 store double %str, ptr %add.ptr, align 87048 ret void7049}7050 7051; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7052define dso_local void @st_align32_double_double(ptr nocapture %ptr, double %str) {7053; CHECK-P10-LABEL: st_align32_double_double:7054; CHECK-P10: # %bb.0: # %entry7055; CHECK-P10-NEXT: pstfd f1, 99999000(r3), 07056; CHECK-P10-NEXT: blr7057;7058; CHECK-PREP10-LABEL: st_align32_double_double:7059; CHECK-PREP10: # %bb.0: # %entry7060; CHECK-PREP10-NEXT: lis r4, 15257061; CHECK-PREP10-NEXT: ori r4, r4, 566007062; CHECK-PREP10-NEXT: stfdx f1, r3, r47063; CHECK-PREP10-NEXT: blr7064entry:7065 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007066 store double %str, ptr %add.ptr, align 87067 ret void7068}7069 7070; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7071define dso_local void @st_align64_double_double(ptr nocapture %ptr, double %str) {7072; CHECK-P10-LABEL: st_align64_double_double:7073; CHECK-P10: # %bb.0: # %entry7074; CHECK-P10-NEXT: pli r4, 2441406257075; CHECK-P10-NEXT: rldic r4, r4, 12, 247076; CHECK-P10-NEXT: stfdx f1, r3, r47077; CHECK-P10-NEXT: blr7078;7079; CHECK-PREP10-LABEL: st_align64_double_double:7080; CHECK-PREP10: # %bb.0: # %entry7081; CHECK-PREP10-NEXT: lis r4, 37257082; CHECK-PREP10-NEXT: ori r4, r4, 190257083; CHECK-PREP10-NEXT: rldic r4, r4, 12, 247084; CHECK-PREP10-NEXT: stfdx f1, r3, r47085; CHECK-PREP10-NEXT: blr7086entry:7087 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007088 store double %str, ptr %add.ptr, align 87089 ret void7090}7091 7092; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7093define dso_local void @st_reg_double_double(ptr nocapture %ptr, i64 %off, double %str) {7094; CHECK-LABEL: st_reg_double_double:7095; CHECK: # %bb.0: # %entry7096; CHECK-NEXT: stfdx f1, r3, r47097; CHECK-NEXT: blr7098entry:7099 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7100 store double %str, ptr %add.ptr, align 87101 ret void7102}7103 7104; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7105define dso_local void @st_or1_double_double(i64 %ptr, i8 zeroext %off, double %str) {7106; CHECK-LABEL: st_or1_double_double:7107; CHECK: # %bb.0: # %entry7108; CHECK-NEXT: or r3, r4, r37109; CHECK-NEXT: stfd f1, 0(r3)7110; CHECK-NEXT: blr7111entry:7112 %conv = zext i8 %off to i647113 %or = or i64 %conv, %ptr7114 %0 = inttoptr i64 %or to ptr7115 store double %str, ptr %0, align 87116 ret void7117}7118 7119; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7120define dso_local void @st_not_disjoint16_double_double(i64 %ptr, double %str) {7121; CHECK-LABEL: st_not_disjoint16_double_double:7122; CHECK: # %bb.0: # %entry7123; CHECK-NEXT: ori r3, r3, 67124; CHECK-NEXT: stfd f1, 0(r3)7125; CHECK-NEXT: blr7126entry:7127 %or = or i64 %ptr, 67128 %0 = inttoptr i64 %or to ptr7129 store double %str, ptr %0, align 87130 ret void7131}7132 7133; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7134define dso_local void @st_disjoint_align16_double_double(i64 %ptr, double %str) {7135; CHECK-LABEL: st_disjoint_align16_double_double:7136; CHECK: # %bb.0: # %entry7137; CHECK-NEXT: rldicr r3, r3, 0, 517138; CHECK-NEXT: stfd f1, 24(r3)7139; CHECK-NEXT: blr7140entry:7141 %and = and i64 %ptr, -40967142 %or = or i64 %and, 247143 %0 = inttoptr i64 %or to ptr7144 store double %str, ptr %0, align 87145 ret void7146}7147 7148; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7149define dso_local void @st_not_disjoint32_double_double(i64 %ptr, double %str) {7150; CHECK-LABEL: st_not_disjoint32_double_double:7151; CHECK: # %bb.0: # %entry7152; CHECK-NEXT: ori r3, r3, 344637153; CHECK-NEXT: oris r3, r3, 17154; CHECK-NEXT: stfd f1, 0(r3)7155; CHECK-NEXT: blr7156entry:7157 %or = or i64 %ptr, 999997158 %0 = inttoptr i64 %or to ptr7159 store double %str, ptr %0, align 87160 ret void7161}7162 7163; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7164define dso_local void @st_disjoint_align32_double_double(i64 %ptr, double %str) {7165; CHECK-P10-LABEL: st_disjoint_align32_double_double:7166; CHECK-P10: # %bb.0: # %entry7167; CHECK-P10-NEXT: lis r4, -152647168; CHECK-P10-NEXT: and r3, r3, r47169; CHECK-P10-NEXT: pstfd f1, 999990000(r3), 07170; CHECK-P10-NEXT: blr7171;7172; CHECK-PREP10-LABEL: st_disjoint_align32_double_double:7173; CHECK-PREP10: # %bb.0: # %entry7174; CHECK-PREP10-NEXT: lis r4, -152647175; CHECK-PREP10-NEXT: and r3, r3, r47176; CHECK-PREP10-NEXT: lis r4, 152587177; CHECK-PREP10-NEXT: ori r4, r4, 417127178; CHECK-PREP10-NEXT: stfdx f1, r3, r47179; CHECK-PREP10-NEXT: blr7180entry:7181 %and = and i64 %ptr, -10003415047182 %or = or i64 %and, 9999900007183 %0 = inttoptr i64 %or to ptr7184 store double %str, ptr %0, align 167185 ret void7186}7187 7188; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7189define dso_local void @st_not_disjoint64_double_double(i64 %ptr, double %str) {7190; CHECK-P10-LABEL: st_not_disjoint64_double_double:7191; CHECK-P10: # %bb.0: # %entry7192; CHECK-P10-NEXT: pli r4, 2327193; CHECK-P10-NEXT: pli r5, 35675873297194; CHECK-P10-NEXT: rldimi r5, r4, 32, 07195; CHECK-P10-NEXT: or r3, r3, r57196; CHECK-P10-NEXT: stfd f1, 0(r3)7197; CHECK-P10-NEXT: blr7198;7199; CHECK-PREP10-LABEL: st_not_disjoint64_double_double:7200; CHECK-PREP10: # %bb.0: # %entry7201; CHECK-PREP10-NEXT: li r4, 297202; CHECK-PREP10-NEXT: rldic r4, r4, 35, 247203; CHECK-PREP10-NEXT: oris r4, r4, 544377204; CHECK-PREP10-NEXT: ori r4, r4, 40977205; CHECK-PREP10-NEXT: or r3, r3, r47206; CHECK-PREP10-NEXT: stfd f1, 0(r3)7207; CHECK-PREP10-NEXT: blr7208entry:7209 %or = or i64 %ptr, 10000000000017210 %0 = inttoptr i64 %or to ptr7211 store double %str, ptr %0, align 87212 ret void7213}7214 7215; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7216define dso_local void @st_disjoint_align64_double_double(i64 %ptr, double %str) {7217; CHECK-P10-LABEL: st_disjoint_align64_double_double:7218; CHECK-P10: # %bb.0: # %entry7219; CHECK-P10-NEXT: pli r4, 2441406257220; CHECK-P10-NEXT: rldicr r3, r3, 0, 237221; CHECK-P10-NEXT: rldic r4, r4, 12, 247222; CHECK-P10-NEXT: stfdx f1, r3, r47223; CHECK-P10-NEXT: blr7224;7225; CHECK-PREP10-LABEL: st_disjoint_align64_double_double:7226; CHECK-PREP10: # %bb.0: # %entry7227; CHECK-PREP10-NEXT: lis r4, 37257228; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 237229; CHECK-PREP10-NEXT: ori r4, r4, 190257230; CHECK-PREP10-NEXT: rldic r4, r4, 12, 247231; CHECK-PREP10-NEXT: stfdx f1, r3, r47232; CHECK-PREP10-NEXT: blr7233entry:7234 %and = and i64 %ptr, -10995116277767235 %or = or i64 %and, 10000000000007236 %0 = inttoptr i64 %or to ptr7237 store double %str, ptr %0, align 40967238 ret void7239}7240 7241; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7242define dso_local void @st_cst_align16_double_double(double %str) {7243; CHECK-LABEL: st_cst_align16_double_double:7244; CHECK: # %bb.0: # %entry7245; CHECK-NEXT: stfd f1, 4080(0)7246; CHECK-NEXT: blr7247entry:7248 store double %str, ptr inttoptr (i64 4080 to ptr), align 167249 ret void7250}7251 7252; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7253define dso_local void @st_cst_align32_double_double(double %str) {7254; CHECK-LABEL: st_cst_align32_double_double:7255; CHECK: # %bb.0: # %entry7256; CHECK-NEXT: lis r3, 1537257; CHECK-NEXT: stfd f1, -27108(r3)7258; CHECK-NEXT: blr7259entry:7260 store double %str, ptr inttoptr (i64 9999900 to ptr), align 87261 ret void7262}7263 7264; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7265define dso_local void @st_cst_align64_double_double(double %str) {7266; CHECK-P10-LABEL: st_cst_align64_double_double:7267; CHECK-P10: # %bb.0: # %entry7268; CHECK-P10-NEXT: pli r3, 2441406257269; CHECK-P10-NEXT: rldic r3, r3, 12, 247270; CHECK-P10-NEXT: stfd f1, 0(r3)7271; CHECK-P10-NEXT: blr7272;7273; CHECK-PREP10-LABEL: st_cst_align64_double_double:7274; CHECK-PREP10: # %bb.0: # %entry7275; CHECK-PREP10-NEXT: lis r3, 37257276; CHECK-PREP10-NEXT: ori r3, r3, 190257277; CHECK-PREP10-NEXT: rldic r3, r3, 12, 247278; CHECK-PREP10-NEXT: stfd f1, 0(r3)7279; CHECK-PREP10-NEXT: blr7280entry:7281 store double %str, ptr inttoptr (i64 1000000000000 to ptr), align 40967282 ret void7283}7284 7285define dso_local void @st_reversed_double_from_i8(ptr %ptr) {7286; CHECK-P10-LABEL: st_reversed_double_from_i8:7287; CHECK-P10: # %bb.0: # %entry7288; CHECK-P10-NEXT: li r4, 87289; CHECK-P10-NEXT: lxsibzx f0, 0, r37290; CHECK-P10-NEXT: xxspltidp vs2, -10234101767291; CHECK-P10-NEXT: lxsibzx f1, r3, r47292; CHECK-P10-NEXT: xscvuxddp f0, f07293; CHECK-P10-NEXT: xscvuxddp f1, f17294; CHECK-P10-NEXT: xsadddp f0, f0, f27295; CHECK-P10-NEXT: xsadddp f1, f1, f27296; CHECK-P10-NEXT: stfd f1, 0(r3)7297; CHECK-P10-NEXT: stfd f0, 8(r3)7298; CHECK-P10-NEXT: blr7299;7300; CHECK-P9-LABEL: st_reversed_double_from_i8:7301; CHECK-P9: # %bb.0: # %entry7302; CHECK-P9-NEXT: li r4, 87303; CHECK-P9-NEXT: lxsibzx f0, 0, r37304; CHECK-P9-NEXT: lxsibzx f1, r3, r47305; CHECK-P9-NEXT: addis r4, r2, .LCPI300_0@toc@ha7306; CHECK-P9-NEXT: lfs f2, .LCPI300_0@toc@l(r4)7307; CHECK-P9-NEXT: xscvuxddp f0, f07308; CHECK-P9-NEXT: xscvuxddp f1, f17309; CHECK-P9-NEXT: xsadddp f0, f0, f27310; CHECK-P9-NEXT: xsadddp f1, f1, f27311; CHECK-P9-NEXT: stfd f0, 8(r3)7312; CHECK-P9-NEXT: stfd f1, 0(r3)7313; CHECK-P9-NEXT: blr7314;7315; CHECK-P8-LABEL: st_reversed_double_from_i8:7316; CHECK-P8: # %bb.0: # %entry7317; CHECK-P8-NEXT: lbz r4, 0(r3)7318; CHECK-P8-NEXT: lbz r5, 8(r3)7319; CHECK-P8-NEXT: mtfprwz f0, r47320; CHECK-P8-NEXT: mtfprwz f1, r57321; CHECK-P8-NEXT: addis r4, r2, .LCPI300_0@toc@ha7322; CHECK-P8-NEXT: lfs f2, .LCPI300_0@toc@l(r4)7323; CHECK-P8-NEXT: xscvuxddp f0, f07324; CHECK-P8-NEXT: xscvuxddp f1, f17325; CHECK-P8-NEXT: xsadddp f0, f0, f27326; CHECK-P8-NEXT: xsadddp f1, f1, f27327; CHECK-P8-NEXT: stfd f1, 0(r3)7328; CHECK-P8-NEXT: stfd f0, 8(r3)7329; CHECK-P8-NEXT: blr7330entry:7331 %idx = getelementptr inbounds i8, ptr %ptr, i64 87332 %i0 = load i8, ptr %ptr, align 17333 %i1 = load i8, ptr %idx, align 17334 %f0 = uitofp i8 %i0 to double7335 %f1 = uitofp i8 %i1 to double7336 %a0 = fadd double %f0, -1.280000e+027337 %a1 = fadd double %f1, -1.280000e+027338 store double %a1, ptr %ptr, align 87339 store double %a0, ptr %idx, align 87340 ret void7341}7342