7332 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 float @ld_0_float_uint8_t(i64 %ptr) {23; CHECK-POSTP8-LABEL: ld_0_float_uint8_t:24; CHECK-POSTP8: # %bb.0: # %entry25; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r326; CHECK-POSTP8-NEXT: xscvuxdsp f1, f027; CHECK-POSTP8-NEXT: blr28;29; CHECK-P8-LABEL: ld_0_float_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: xscvuxdsp 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 float39 ret float %conv40}41 42; Function Attrs: norecurse nounwind readonly uwtable willreturn43define dso_local float @ld_align16_float_uint8_t(ptr nocapture readonly %ptr) {44; CHECK-POSTP8-LABEL: ld_align16_float_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: xscvuxdsp f1, f049; CHECK-POSTP8-NEXT: blr50;51; CHECK-P8-LABEL: ld_align16_float_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: xscvuxdsp 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 float61 ret float %conv62}63 64; Function Attrs: norecurse nounwind readonly uwtable willreturn65define dso_local float @ld_align32_float_uint8_t(ptr nocapture readonly %ptr) {66; CHECK-P10-LABEL: ld_align32_float_uint8_t:67; CHECK-P10: # %bb.0: # %entry68; CHECK-P10-NEXT: pli r4, 9999900069; CHECK-P10-NEXT: lxsibzx f0, r3, r470; CHECK-P10-NEXT: xscvuxdsp f1, f071; CHECK-P10-NEXT: blr72;73; CHECK-P9-LABEL: ld_align32_float_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: xscvuxdsp f1, f079; CHECK-P9-NEXT: blr80;81; CHECK-P8-LABEL: ld_align32_float_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: xscvuxdsp 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 float93 ret float %conv94}95 96; Function Attrs: norecurse nounwind readonly uwtable willreturn97define dso_local float @ld_align64_float_uint8_t(ptr nocapture readonly %ptr) {98; CHECK-P10-LABEL: ld_align64_float_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: xscvuxdsp f1, f0104; CHECK-P10-NEXT: blr105;106; CHECK-P9-LABEL: ld_align64_float_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: xscvuxdsp f1, f0113; CHECK-P9-NEXT: blr114;115; CHECK-P8-LABEL: ld_align64_float_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: xscvuxdsp 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 float128 ret float %conv129}130 131; Function Attrs: norecurse nounwind readonly uwtable willreturn132define dso_local float @ld_reg_float_uint8_t(ptr nocapture readonly %ptr, i64 %off) {133; CHECK-POSTP8-LABEL: ld_reg_float_uint8_t:134; CHECK-POSTP8: # %bb.0: # %entry135; CHECK-POSTP8-NEXT: lxsibzx f0, r3, r4136; CHECK-POSTP8-NEXT: xscvuxdsp f1, f0137; CHECK-POSTP8-NEXT: blr138;139; CHECK-P8-LABEL: ld_reg_float_uint8_t:140; CHECK-P8: # %bb.0: # %entry141; CHECK-P8-NEXT: lbzx r3, r3, r4142; CHECK-P8-NEXT: mtfprwz f0, r3143; CHECK-P8-NEXT: xscvuxdsp 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 float149 ret float %conv150}151 152; Function Attrs: norecurse nounwind readonly uwtable willreturn153define dso_local float @ld_or_float_uint8_t(i64 %ptr, i8 zeroext %off) {154; CHECK-POSTP8-LABEL: ld_or_float_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: xscvuxdsp f1, f0159; CHECK-POSTP8-NEXT: blr160;161; CHECK-P8-LABEL: ld_or_float_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: xscvuxdsp 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 float174 ret float %conv1175}176 177; Function Attrs: norecurse nounwind readonly uwtable willreturn178define dso_local float @ld_not_disjoint16_float_uint8_t(i64 %ptr) {179; CHECK-POSTP8-LABEL: ld_not_disjoint16_float_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: xscvuxdsp f1, f0184; CHECK-POSTP8-NEXT: blr185;186; CHECK-P8-LABEL: ld_not_disjoint16_float_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: xscvuxdsp 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 float198 ret float %conv199}200 201; Function Attrs: norecurse nounwind readonly uwtable willreturn202define dso_local float @ld_disjoint_align16_float_uint8_t(i64 %ptr) {203; CHECK-POSTP8-LABEL: ld_disjoint_align16_float_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: xscvuxdsp f1, f0209; CHECK-POSTP8-NEXT: blr210;211; CHECK-P8-LABEL: ld_disjoint_align16_float_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: xscvuxdsp 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 float224 ret float %conv225}226 227; Function Attrs: norecurse nounwind readonly uwtable willreturn228define dso_local float @ld_not_disjoint32_float_uint8_t(i64 %ptr) {229; CHECK-POSTP8-LABEL: ld_not_disjoint32_float_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: xscvuxdsp f1, f0235; CHECK-POSTP8-NEXT: blr236;237; CHECK-P8-LABEL: ld_not_disjoint32_float_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: xscvuxdsp 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 float250 ret float %conv251}252 253; Function Attrs: norecurse nounwind readonly uwtable willreturn254define dso_local float @ld_disjoint_align32_float_uint8_t(i64 %ptr) {255; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvuxdsp f1, f0262; CHECK-P10-NEXT: blr263;264; CHECK-P9-LABEL: ld_disjoint_align32_float_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: xscvuxdsp f1, f0272; CHECK-P9-NEXT: blr273;274; CHECK-P8-LABEL: ld_disjoint_align32_float_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: xscvuxdsp 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 float290 ret float %conv291}292 293; Function Attrs: norecurse nounwind readonly uwtable willreturn294define dso_local float @ld_not_disjoint64_float_uint8_t(i64 %ptr) {295; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvuxdsp f1, f0303; CHECK-P10-NEXT: blr304;305; CHECK-P9-LABEL: ld_not_disjoint64_float_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: xscvuxdsp f1, f0314; CHECK-P9-NEXT: blr315;316; CHECK-P8-LABEL: ld_not_disjoint64_float_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: xscvuxdsp 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 float332 ret float %conv333}334 335; Function Attrs: norecurse nounwind readonly uwtable willreturn336define dso_local float @ld_disjoint_align64_float_uint8_t(i64 %ptr) {337; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvuxdsp f1, f0344; CHECK-P10-NEXT: blr345;346; CHECK-P9-LABEL: ld_disjoint_align64_float_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: xscvuxdsp f1, f0354; CHECK-P9-NEXT: blr355;356; CHECK-P8-LABEL: ld_disjoint_align64_float_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: xscvuxdsp 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 float372 ret float %conv373}374 375; Function Attrs: norecurse nounwind readonly uwtable willreturn376define dso_local float @ld_cst_align16_float_uint8_t() {377; CHECK-POSTP8-LABEL: ld_cst_align16_float_uint8_t:378; CHECK-POSTP8: # %bb.0: # %entry379; CHECK-POSTP8-NEXT: li r3, 4080380; CHECK-POSTP8-NEXT: lxsibzx f0, 0, r3381; CHECK-POSTP8-NEXT: xscvuxdsp f1, f0382; CHECK-POSTP8-NEXT: blr383;384; CHECK-P8-LABEL: ld_cst_align16_float_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: xscvuxdsp f1, f0389; CHECK-P8-NEXT: blr390entry:391 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 16392 %conv = uitofp i8 %0 to float393 ret float %conv394}395 396; Function Attrs: norecurse nounwind readonly uwtable willreturn397define dso_local float @ld_cst_align32_float_uint8_t() {398; CHECK-P10-LABEL: ld_cst_align32_float_uint8_t:399; CHECK-P10: # %bb.0: # %entry400; CHECK-P10-NEXT: pli r3, 9999900401; CHECK-P10-NEXT: lxsibzx f0, 0, r3402; CHECK-P10-NEXT: xscvuxdsp f1, f0403; CHECK-P10-NEXT: blr404;405; CHECK-P9-LABEL: ld_cst_align32_float_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: xscvuxdsp f1, f0411; CHECK-P9-NEXT: blr412;413; CHECK-P8-LABEL: ld_cst_align32_float_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: xscvuxdsp f1, f0419; CHECK-P8-NEXT: blr420entry:421 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 4422 %conv = uitofp i8 %0 to float423 ret float %conv424}425 426; Function Attrs: norecurse nounwind readonly uwtable willreturn427define dso_local float @ld_cst_align64_float_uint8_t() {428; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f0434; CHECK-P10-NEXT: blr435;436; CHECK-P9-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f0443; CHECK-P9-NEXT: blr444;445; CHECK-P8-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f0453; CHECK-P8-NEXT: blr454entry:455 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 4096456 %conv = uitofp i8 %0 to float457 ret float %conv458}459 460; Function Attrs: norecurse nounwind readonly uwtable willreturn461define dso_local float @ld_0_float_int8_t(i64 %ptr) {462; CHECK-POSTP8-LABEL: ld_0_float_int8_t:463; CHECK-POSTP8: # %bb.0: # %entry464; CHECK-POSTP8-NEXT: lxsibzx v2, 0, r3465; CHECK-POSTP8-NEXT: vextsb2d v2, v2466; CHECK-POSTP8-NEXT: xscvsxdsp f1, v2467; CHECK-POSTP8-NEXT: blr468;469; CHECK-P8-LABEL: ld_0_float_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: xscvsxdsp 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 float480 ret float %conv481}482 483; Function Attrs: norecurse nounwind readonly uwtable willreturn484define dso_local float @ld_align16_float_int8_t(ptr nocapture readonly %ptr) {485; CHECK-POSTP8-LABEL: ld_align16_float_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: xscvsxdsp f1, v2491; CHECK-POSTP8-NEXT: blr492;493; CHECK-P8-LABEL: ld_align16_float_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: xscvsxdsp 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 float504 ret float %conv505}506 507; Function Attrs: norecurse nounwind readonly uwtable willreturn508define dso_local float @ld_align32_float_int8_t(ptr nocapture readonly %ptr) {509; CHECK-P10-LABEL: ld_align32_float_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: xscvsxdsp f1, v2515; CHECK-P10-NEXT: blr516;517; CHECK-P9-LABEL: ld_align32_float_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: xscvsxdsp f1, v2524; CHECK-P9-NEXT: blr525;526; CHECK-P8-LABEL: ld_align32_float_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: xscvsxdsp 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 float539 ret float %conv540}541 542; Function Attrs: norecurse nounwind readonly uwtable willreturn543define dso_local float @ld_align64_float_int8_t(ptr nocapture readonly %ptr) {544; CHECK-P10-LABEL: ld_align64_float_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: xscvsxdsp f1, v2551; CHECK-P10-NEXT: blr552;553; CHECK-P9-LABEL: ld_align64_float_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: xscvsxdsp f1, v2561; CHECK-P9-NEXT: blr562;563; CHECK-P8-LABEL: ld_align64_float_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: xscvsxdsp 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 float577 ret float %conv578}579 580; Function Attrs: norecurse nounwind readonly uwtable willreturn581define dso_local float @ld_reg_float_int8_t(ptr nocapture readonly %ptr, i64 %off) {582; CHECK-POSTP8-LABEL: ld_reg_float_int8_t:583; CHECK-POSTP8: # %bb.0: # %entry584; CHECK-POSTP8-NEXT: lxsibzx v2, r3, r4585; CHECK-POSTP8-NEXT: vextsb2d v2, v2586; CHECK-POSTP8-NEXT: xscvsxdsp f1, v2587; CHECK-POSTP8-NEXT: blr588;589; CHECK-P8-LABEL: ld_reg_float_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: xscvsxdsp 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 float600 ret float %conv601}602 603; Function Attrs: norecurse nounwind readonly uwtable willreturn604define dso_local float @ld_or_float_int8_t(i64 %ptr, i8 zeroext %off) {605; CHECK-POSTP8-LABEL: ld_or_float_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: xscvsxdsp f1, v2611; CHECK-POSTP8-NEXT: blr612;613; CHECK-P8-LABEL: ld_or_float_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: xscvsxdsp 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 float627 ret float %conv1628}629 630; Function Attrs: norecurse nounwind readonly uwtable willreturn631define dso_local float @ld_not_disjoint16_float_int8_t(i64 %ptr) {632; CHECK-POSTP8-LABEL: ld_not_disjoint16_float_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: xscvsxdsp f1, v2638; CHECK-POSTP8-NEXT: blr639;640; CHECK-P8-LABEL: ld_not_disjoint16_float_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: xscvsxdsp 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 float653 ret float %conv654}655 656; Function Attrs: norecurse nounwind readonly uwtable willreturn657define dso_local float @ld_disjoint_align16_float_int8_t(i64 %ptr) {658; CHECK-POSTP8-LABEL: ld_disjoint_align16_float_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: xscvsxdsp f1, v2665; CHECK-POSTP8-NEXT: blr666;667; CHECK-P8-LABEL: ld_disjoint_align16_float_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: xscvsxdsp 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 float681 ret float %conv682}683 684; Function Attrs: norecurse nounwind readonly uwtable willreturn685define dso_local float @ld_not_disjoint32_float_int8_t(i64 %ptr) {686; CHECK-POSTP8-LABEL: ld_not_disjoint32_float_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: xscvsxdsp f1, v2693; CHECK-POSTP8-NEXT: blr694;695; CHECK-P8-LABEL: ld_not_disjoint32_float_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: xscvsxdsp 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 float709 ret float %conv710}711 712; Function Attrs: norecurse nounwind readonly uwtable willreturn713define dso_local float @ld_disjoint_align32_float_int8_t(i64 %ptr) {714; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvsxdsp f1, v2722; CHECK-P10-NEXT: blr723;724; CHECK-P9-LABEL: ld_disjoint_align32_float_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: xscvsxdsp f1, v2733; CHECK-P9-NEXT: blr734;735; CHECK-P8-LABEL: ld_disjoint_align32_float_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: xscvsxdsp 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 float752 ret float %conv753}754 755; Function Attrs: norecurse nounwind readonly uwtable willreturn756define dso_local float @ld_not_disjoint64_float_int8_t(i64 %ptr) {757; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvsxdsp f1, v2766; CHECK-P10-NEXT: blr767;768; CHECK-P9-LABEL: ld_not_disjoint64_float_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: xscvsxdsp f1, v2778; CHECK-P9-NEXT: blr779;780; CHECK-P8-LABEL: ld_not_disjoint64_float_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: xscvsxdsp 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 float797 ret float %conv798}799 800; Function Attrs: norecurse nounwind readonly uwtable willreturn801define dso_local float @ld_disjoint_align64_float_int8_t(i64 %ptr) {802; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvsxdsp f1, v2810; CHECK-P10-NEXT: blr811;812; CHECK-P9-LABEL: ld_disjoint_align64_float_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: xscvsxdsp f1, v2821; CHECK-P9-NEXT: blr822;823; CHECK-P8-LABEL: ld_disjoint_align64_float_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: xscvsxdsp 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 float840 ret float %conv841}842 843; Function Attrs: norecurse nounwind readonly uwtable willreturn844define dso_local float @ld_cst_align16_float_int8_t() {845; CHECK-POSTP8-LABEL: ld_cst_align16_float_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: xscvsxdsp f1, v2851; CHECK-POSTP8-NEXT: blr852;853; CHECK-P8-LABEL: ld_cst_align16_float_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: xscvsxdsp f1, f0859; CHECK-P8-NEXT: blr860entry:861 %0 = load i8, ptr inttoptr (i64 4080 to ptr), align 16862 %conv = sitofp i8 %0 to float863 ret float %conv864}865 866; Function Attrs: norecurse nounwind readonly uwtable willreturn867define dso_local float @ld_cst_align32_float_int8_t() {868; CHECK-P10-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, v2874; CHECK-P10-NEXT: blr875;876; CHECK-P9-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, v2883; CHECK-P9-NEXT: blr884;885; CHECK-P8-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, f0892; CHECK-P8-NEXT: blr893entry:894 %0 = load i8, ptr inttoptr (i64 9999900 to ptr), align 4895 %conv = sitofp i8 %0 to float896 ret float %conv897}898 899; Function Attrs: norecurse nounwind readonly uwtable willreturn900define dso_local float @ld_cst_align64_float_int8_t() {901; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, v2908; CHECK-P10-NEXT: blr909;910; CHECK-P9-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, v2918; CHECK-P9-NEXT: blr919;920; CHECK-P8-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, f0929; CHECK-P8-NEXT: blr930entry:931 %0 = load i8, ptr inttoptr (i64 1000000000000 to ptr), align 4096932 %conv = sitofp i8 %0 to float933 ret float %conv934}935 936; Function Attrs: norecurse nounwind readonly uwtable willreturn937define dso_local float @ld_0_float_uint16_t(i64 %ptr) {938; CHECK-POSTP8-LABEL: ld_0_float_uint16_t:939; CHECK-POSTP8: # %bb.0: # %entry940; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r3941; CHECK-POSTP8-NEXT: xscvuxdsp f1, f0942; CHECK-POSTP8-NEXT: blr943;944; CHECK-P8-LABEL: ld_0_float_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: xscvuxdsp 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 float954 ret float %conv955}956 957; Function Attrs: norecurse nounwind readonly uwtable willreturn958define dso_local float @ld_align16_float_uint16_t(ptr nocapture readonly %ptr) {959; CHECK-POSTP8-LABEL: ld_align16_float_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: xscvuxdsp f1, f0964; CHECK-POSTP8-NEXT: blr965;966; CHECK-P8-LABEL: ld_align16_float_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: xscvuxdsp 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 float976 ret float %conv977}978 979; Function Attrs: norecurse nounwind readonly uwtable willreturn980define dso_local float @ld_align32_float_uint16_t(ptr nocapture readonly %ptr) {981; CHECK-P10-LABEL: ld_align32_float_uint16_t:982; CHECK-P10: # %bb.0: # %entry983; CHECK-P10-NEXT: pli r4, 99999000984; CHECK-P10-NEXT: lxsihzx f0, r3, r4985; CHECK-P10-NEXT: xscvuxdsp f1, f0986; CHECK-P10-NEXT: blr987;988; CHECK-P9-LABEL: ld_align32_float_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: xscvuxdsp f1, f0994; CHECK-P9-NEXT: blr995;996; CHECK-P8-LABEL: ld_align32_float_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: xscvuxdsp 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 float1008 ret float %conv1009}1010 1011; Function Attrs: norecurse nounwind readonly uwtable willreturn1012define dso_local float @ld_align64_float_uint16_t(ptr nocapture readonly %ptr) {1013; CHECK-P10-LABEL: ld_align64_float_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: xscvuxdsp f1, f01019; CHECK-P10-NEXT: blr1020;1021; CHECK-P9-LABEL: ld_align64_float_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: xscvuxdsp f1, f01028; CHECK-P9-NEXT: blr1029;1030; CHECK-P8-LABEL: ld_align64_float_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: xscvuxdsp 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 float1043 ret float %conv1044}1045 1046; Function Attrs: norecurse nounwind readonly uwtable willreturn1047define dso_local float @ld_reg_float_uint16_t(ptr nocapture readonly %ptr, i64 %off) {1048; CHECK-POSTP8-LABEL: ld_reg_float_uint16_t:1049; CHECK-POSTP8: # %bb.0: # %entry1050; CHECK-POSTP8-NEXT: lxsihzx f0, r3, r41051; CHECK-POSTP8-NEXT: xscvuxdsp f1, f01052; CHECK-POSTP8-NEXT: blr1053;1054; CHECK-P8-LABEL: ld_reg_float_uint16_t:1055; CHECK-P8: # %bb.0: # %entry1056; CHECK-P8-NEXT: lhzx r3, r3, r41057; CHECK-P8-NEXT: mtfprwz f0, r31058; CHECK-P8-NEXT: xscvuxdsp 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 float1064 ret float %conv1065}1066 1067; Function Attrs: norecurse nounwind readonly uwtable willreturn1068define dso_local float @ld_or_float_uint16_t(i64 %ptr, i8 zeroext %off) {1069; CHECK-POSTP8-LABEL: ld_or_float_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: xscvuxdsp f1, f01074; CHECK-POSTP8-NEXT: blr1075;1076; CHECK-P8-LABEL: ld_or_float_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: xscvuxdsp 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 float1089 ret float %conv11090}1091 1092; Function Attrs: norecurse nounwind readonly uwtable willreturn1093define dso_local float @ld_not_disjoint16_float_uint16_t(i64 %ptr) {1094; CHECK-POSTP8-LABEL: ld_not_disjoint16_float_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: xscvuxdsp f1, f01099; CHECK-POSTP8-NEXT: blr1100;1101; CHECK-P8-LABEL: ld_not_disjoint16_float_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: xscvuxdsp 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 float1113 ret float %conv1114}1115 1116; Function Attrs: norecurse nounwind readonly uwtable willreturn1117define dso_local float @ld_disjoint_align16_float_uint16_t(i64 %ptr) {1118; CHECK-POSTP8-LABEL: ld_disjoint_align16_float_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: xscvuxdsp f1, f01124; CHECK-POSTP8-NEXT: blr1125;1126; CHECK-P8-LABEL: ld_disjoint_align16_float_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: xscvuxdsp 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 float1139 ret float %conv1140}1141 1142; Function Attrs: norecurse nounwind readonly uwtable willreturn1143define dso_local float @ld_not_disjoint32_float_uint16_t(i64 %ptr) {1144; CHECK-POSTP8-LABEL: ld_not_disjoint32_float_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: xscvuxdsp f1, f01150; CHECK-POSTP8-NEXT: blr1151;1152; CHECK-P8-LABEL: ld_not_disjoint32_float_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: xscvuxdsp 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 float1165 ret float %conv1166}1167 1168; Function Attrs: norecurse nounwind readonly uwtable willreturn1169define dso_local float @ld_disjoint_align32_float_uint16_t(i64 %ptr) {1170; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvuxdsp f1, f01177; CHECK-P10-NEXT: blr1178;1179; CHECK-P9-LABEL: ld_disjoint_align32_float_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: xscvuxdsp f1, f01187; CHECK-P9-NEXT: blr1188;1189; CHECK-P8-LABEL: ld_disjoint_align32_float_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: xscvuxdsp 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 float1205 ret float %conv1206}1207 1208; Function Attrs: norecurse nounwind readonly uwtable willreturn1209define dso_local float @ld_not_disjoint64_float_uint16_t(i64 %ptr) {1210; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvuxdsp f1, f01218; CHECK-P10-NEXT: blr1219;1220; CHECK-P9-LABEL: ld_not_disjoint64_float_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: xscvuxdsp f1, f01229; CHECK-P9-NEXT: blr1230;1231; CHECK-P8-LABEL: ld_not_disjoint64_float_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: xscvuxdsp 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 float1247 ret float %conv1248}1249 1250; Function Attrs: norecurse nounwind readonly uwtable willreturn1251define dso_local float @ld_disjoint_align64_float_uint16_t(i64 %ptr) {1252; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvuxdsp f1, f01259; CHECK-P10-NEXT: blr1260;1261; CHECK-P9-LABEL: ld_disjoint_align64_float_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: xscvuxdsp f1, f01269; CHECK-P9-NEXT: blr1270;1271; CHECK-P8-LABEL: ld_disjoint_align64_float_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: xscvuxdsp 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 float1287 ret float %conv1288}1289 1290; Function Attrs: norecurse nounwind readonly uwtable willreturn1291define dso_local float @ld_cst_align16_float_uint16_t() {1292; CHECK-POSTP8-LABEL: ld_cst_align16_float_uint16_t:1293; CHECK-POSTP8: # %bb.0: # %entry1294; CHECK-POSTP8-NEXT: li r3, 40801295; CHECK-POSTP8-NEXT: lxsihzx f0, 0, r31296; CHECK-POSTP8-NEXT: xscvuxdsp f1, f01297; CHECK-POSTP8-NEXT: blr1298;1299; CHECK-P8-LABEL: ld_cst_align16_float_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: xscvuxdsp f1, f01304; CHECK-P8-NEXT: blr1305entry:1306 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 161307 %conv = uitofp i16 %0 to float1308 ret float %conv1309}1310 1311; Function Attrs: norecurse nounwind readonly uwtable willreturn1312define dso_local float @ld_cst_align32_float_uint16_t() {1313; CHECK-P10-LABEL: ld_cst_align32_float_uint16_t:1314; CHECK-P10: # %bb.0: # %entry1315; CHECK-P10-NEXT: pli r3, 99999001316; CHECK-P10-NEXT: lxsihzx f0, 0, r31317; CHECK-P10-NEXT: xscvuxdsp f1, f01318; CHECK-P10-NEXT: blr1319;1320; CHECK-P9-LABEL: ld_cst_align32_float_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: xscvuxdsp f1, f01326; CHECK-P9-NEXT: blr1327;1328; CHECK-P8-LABEL: ld_cst_align32_float_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: xscvuxdsp f1, f01334; CHECK-P8-NEXT: blr1335entry:1336 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 41337 %conv = uitofp i16 %0 to float1338 ret float %conv1339}1340 1341; Function Attrs: norecurse nounwind readonly uwtable willreturn1342define dso_local float @ld_cst_align64_float_uint16_t() {1343; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f01349; CHECK-P10-NEXT: blr1350;1351; CHECK-P9-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f01358; CHECK-P9-NEXT: blr1359;1360; CHECK-P8-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f01368; CHECK-P8-NEXT: blr1369entry:1370 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40961371 %conv = uitofp i16 %0 to float1372 ret float %conv1373}1374 1375; Function Attrs: norecurse nounwind readonly uwtable willreturn1376define dso_local float @ld_0_float_int16_t(i64 %ptr) {1377; CHECK-POSTP8-LABEL: ld_0_float_int16_t:1378; CHECK-POSTP8: # %bb.0: # %entry1379; CHECK-POSTP8-NEXT: lxsihzx v2, 0, r31380; CHECK-POSTP8-NEXT: vextsh2d v2, v21381; CHECK-POSTP8-NEXT: xscvsxdsp f1, v21382; CHECK-POSTP8-NEXT: blr1383;1384; CHECK-P8-LABEL: ld_0_float_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: xscvsxdsp 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 float1394 ret float %conv1395}1396 1397; Function Attrs: norecurse nounwind readonly uwtable willreturn1398define dso_local float @ld_align16_float_int16_t(ptr nocapture readonly %ptr) {1399; CHECK-POSTP8-LABEL: ld_align16_float_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: xscvsxdsp f1, v21405; CHECK-POSTP8-NEXT: blr1406;1407; CHECK-P8-LABEL: ld_align16_float_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: xscvsxdsp 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 float1417 ret float %conv1418}1419 1420; Function Attrs: norecurse nounwind readonly uwtable willreturn1421define dso_local float @ld_align32_float_int16_t(ptr nocapture readonly %ptr) {1422; CHECK-P10-LABEL: ld_align32_float_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: xscvsxdsp f1, v21428; CHECK-P10-NEXT: blr1429;1430; CHECK-P9-LABEL: ld_align32_float_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: xscvsxdsp f1, v21437; CHECK-P9-NEXT: blr1438;1439; CHECK-P8-LABEL: ld_align32_float_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: xscvsxdsp 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 float1451 ret float %conv1452}1453 1454; Function Attrs: norecurse nounwind readonly uwtable willreturn1455define dso_local float @ld_align64_float_int16_t(ptr nocapture readonly %ptr) {1456; CHECK-P10-LABEL: ld_align64_float_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: xscvsxdsp f1, v21463; CHECK-P10-NEXT: blr1464;1465; CHECK-P9-LABEL: ld_align64_float_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: xscvsxdsp f1, v21473; CHECK-P9-NEXT: blr1474;1475; CHECK-P8-LABEL: ld_align64_float_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: xscvsxdsp 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 float1488 ret float %conv1489}1490 1491; Function Attrs: norecurse nounwind readonly uwtable willreturn1492define dso_local float @ld_reg_float_int16_t(ptr nocapture readonly %ptr, i64 %off) {1493; CHECK-POSTP8-LABEL: ld_reg_float_int16_t:1494; CHECK-POSTP8: # %bb.0: # %entry1495; CHECK-POSTP8-NEXT: lxsihzx v2, r3, r41496; CHECK-POSTP8-NEXT: vextsh2d v2, v21497; CHECK-POSTP8-NEXT: xscvsxdsp f1, v21498; CHECK-POSTP8-NEXT: blr1499;1500; CHECK-P8-LABEL: ld_reg_float_int16_t:1501; CHECK-P8: # %bb.0: # %entry1502; CHECK-P8-NEXT: lhax r3, r3, r41503; CHECK-P8-NEXT: mtfprwa f0, r31504; CHECK-P8-NEXT: xscvsxdsp 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 float1510 ret float %conv1511}1512 1513; Function Attrs: norecurse nounwind readonly uwtable willreturn1514define dso_local float @ld_or_float_int16_t(i64 %ptr, i8 zeroext %off) {1515; CHECK-POSTP8-LABEL: ld_or_float_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: xscvsxdsp f1, v21521; CHECK-POSTP8-NEXT: blr1522;1523; CHECK-P8-LABEL: ld_or_float_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: xscvsxdsp 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 float1536 ret float %conv11537}1538 1539; Function Attrs: norecurse nounwind readonly uwtable willreturn1540define dso_local float @ld_not_disjoint16_float_int16_t(i64 %ptr) {1541; CHECK-POSTP8-LABEL: ld_not_disjoint16_float_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: xscvsxdsp f1, v21547; CHECK-POSTP8-NEXT: blr1548;1549; CHECK-P8-LABEL: ld_not_disjoint16_float_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: xscvsxdsp 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 float1561 ret float %conv1562}1563 1564; Function Attrs: norecurse nounwind readonly uwtable willreturn1565define dso_local float @ld_disjoint_align16_float_int16_t(i64 %ptr) {1566; CHECK-POSTP8-LABEL: ld_disjoint_align16_float_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: xscvsxdsp f1, v21573; CHECK-POSTP8-NEXT: blr1574;1575; CHECK-P8-LABEL: ld_disjoint_align16_float_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: xscvsxdsp 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 float1588 ret float %conv1589}1590 1591; Function Attrs: norecurse nounwind readonly uwtable willreturn1592define dso_local float @ld_not_disjoint32_float_int16_t(i64 %ptr) {1593; CHECK-POSTP8-LABEL: ld_not_disjoint32_float_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: xscvsxdsp f1, v21600; CHECK-POSTP8-NEXT: blr1601;1602; CHECK-P8-LABEL: ld_not_disjoint32_float_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: xscvsxdsp 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 float1615 ret float %conv1616}1617 1618; Function Attrs: norecurse nounwind readonly uwtable willreturn1619define dso_local float @ld_disjoint_align32_float_int16_t(i64 %ptr) {1620; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvsxdsp f1, v21628; CHECK-P10-NEXT: blr1629;1630; CHECK-P9-LABEL: ld_disjoint_align32_float_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: xscvsxdsp f1, v21639; CHECK-P9-NEXT: blr1640;1641; CHECK-P8-LABEL: ld_disjoint_align32_float_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: xscvsxdsp 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 float1657 ret float %conv1658}1659 1660; Function Attrs: norecurse nounwind readonly uwtable willreturn1661define dso_local float @ld_not_disjoint64_float_int16_t(i64 %ptr) {1662; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvsxdsp f1, v21671; CHECK-P10-NEXT: blr1672;1673; CHECK-P9-LABEL: ld_not_disjoint64_float_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: xscvsxdsp f1, v21683; CHECK-P9-NEXT: blr1684;1685; CHECK-P8-LABEL: ld_not_disjoint64_float_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: xscvsxdsp 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 float1701 ret float %conv1702}1703 1704; Function Attrs: norecurse nounwind readonly uwtable willreturn1705define dso_local float @ld_disjoint_align64_float_int16_t(i64 %ptr) {1706; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvsxdsp f1, v21714; CHECK-P10-NEXT: blr1715;1716; CHECK-P9-LABEL: ld_disjoint_align64_float_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: xscvsxdsp f1, v21725; CHECK-P9-NEXT: blr1726;1727; CHECK-P8-LABEL: ld_disjoint_align64_float_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: xscvsxdsp 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 float1743 ret float %conv1744}1745 1746; Function Attrs: norecurse nounwind readonly uwtable willreturn1747define dso_local float @ld_cst_align16_float_int16_t() {1748; CHECK-POSTP8-LABEL: ld_cst_align16_float_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: xscvsxdsp f1, v21754; CHECK-POSTP8-NEXT: blr1755;1756; CHECK-P8-LABEL: ld_cst_align16_float_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: xscvsxdsp f1, f01761; CHECK-P8-NEXT: blr1762entry:1763 %0 = load i16, ptr inttoptr (i64 4080 to ptr), align 161764 %conv = sitofp i16 %0 to float1765 ret float %conv1766}1767 1768; Function Attrs: norecurse nounwind readonly uwtable willreturn1769define dso_local float @ld_cst_align32_float_int16_t() {1770; CHECK-P10-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, v21776; CHECK-P10-NEXT: blr1777;1778; CHECK-P9-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, v21785; CHECK-P9-NEXT: blr1786;1787; CHECK-P8-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, f01793; CHECK-P8-NEXT: blr1794entry:1795 %0 = load i16, ptr inttoptr (i64 9999900 to ptr), align 41796 %conv = sitofp i16 %0 to float1797 ret float %conv1798}1799 1800; Function Attrs: norecurse nounwind readonly uwtable willreturn1801define dso_local float @ld_cst_align64_float_int16_t() {1802; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, v21809; CHECK-P10-NEXT: blr1810;1811; CHECK-P9-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, v21819; CHECK-P9-NEXT: blr1820;1821; CHECK-P8-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, f01829; CHECK-P8-NEXT: blr1830entry:1831 %0 = load i16, ptr inttoptr (i64 1000000000000 to ptr), align 40961832 %conv = sitofp i16 %0 to float1833 ret float %conv1834}1835 1836; Function Attrs: norecurse nounwind readonly uwtable willreturn1837define dso_local float @ld_0_float_uint32_t(i64 %ptr) {1838; CHECK-LABEL: ld_0_float_uint32_t:1839; CHECK: # %bb.0: # %entry1840; CHECK-NEXT: lfiwzx f0, 0, r31841; CHECK-NEXT: xscvuxdsp f1, f01842; CHECK-NEXT: blr1843entry:1844 %0 = inttoptr i64 %ptr to ptr1845 %1 = load i32, ptr %0, align 41846 %conv = uitofp i32 %1 to float1847 ret float %conv1848}1849 1850; Function Attrs: norecurse nounwind readonly uwtable willreturn1851define dso_local float @ld_align16_float_uint32_t(ptr nocapture readonly %ptr) {1852; CHECK-LABEL: ld_align16_float_uint32_t:1853; CHECK: # %bb.0: # %entry1854; CHECK-NEXT: addi r3, r3, 81855; CHECK-NEXT: lfiwzx f0, 0, r31856; CHECK-NEXT: xscvuxdsp 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 float1862 ret float %conv1863}1864 1865; Function Attrs: norecurse nounwind readonly uwtable willreturn1866define dso_local float @ld_align32_float_uint32_t(ptr nocapture readonly %ptr) {1867; CHECK-P10-LABEL: ld_align32_float_uint32_t:1868; CHECK-P10: # %bb.0: # %entry1869; CHECK-P10-NEXT: pli r4, 999990001870; CHECK-P10-NEXT: lfiwzx f0, r3, r41871; CHECK-P10-NEXT: xscvuxdsp f1, f01872; CHECK-P10-NEXT: blr1873;1874; CHECK-PREP10-LABEL: ld_align32_float_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: xscvuxdsp 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 float1885 ret float %conv1886}1887 1888; Function Attrs: norecurse nounwind readonly uwtable willreturn1889define dso_local float @ld_align64_float_uint32_t(ptr nocapture readonly %ptr) {1890; CHECK-P10-LABEL: ld_align64_float_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: xscvuxdsp f1, f01896; CHECK-P10-NEXT: blr1897;1898; CHECK-PREP10-LABEL: ld_align64_float_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: xscvuxdsp 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 float1910 ret float %conv1911}1912 1913; Function Attrs: norecurse nounwind readonly uwtable willreturn1914define dso_local float @ld_reg_float_uint32_t(ptr nocapture readonly %ptr, i64 %off) {1915; CHECK-LABEL: ld_reg_float_uint32_t:1916; CHECK: # %bb.0: # %entry1917; CHECK-NEXT: lfiwzx f0, r3, r41918; CHECK-NEXT: xscvuxdsp 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 float1924 ret float %conv1925}1926 1927; Function Attrs: norecurse nounwind readonly uwtable willreturn1928define dso_local float @ld_or_float_uint32_t(i64 %ptr, i8 zeroext %off) {1929; CHECK-LABEL: ld_or_float_uint32_t:1930; CHECK: # %bb.0: # %entry1931; CHECK-NEXT: or r3, r4, r31932; CHECK-NEXT: lfiwzx f0, 0, r31933; CHECK-NEXT: xscvuxdsp 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 float1941 ret float %conv11942}1943 1944; Function Attrs: norecurse nounwind readonly uwtable willreturn1945define dso_local float @ld_not_disjoint16_float_uint32_t(i64 %ptr) {1946; CHECK-LABEL: ld_not_disjoint16_float_uint32_t:1947; CHECK: # %bb.0: # %entry1948; CHECK-NEXT: ori r3, r3, 61949; CHECK-NEXT: lfiwzx f0, 0, r31950; CHECK-NEXT: xscvuxdsp 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 float1957 ret float %conv1958}1959 1960; Function Attrs: norecurse nounwind readonly uwtable willreturn1961define dso_local float @ld_disjoint_align16_float_uint32_t(i64 %ptr) {1962; CHECK-LABEL: ld_disjoint_align16_float_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: xscvuxdsp 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 float1975 ret float %conv1976}1977 1978; Function Attrs: norecurse nounwind readonly uwtable willreturn1979define dso_local float @ld_not_disjoint32_float_uint32_t(i64 %ptr) {1980; CHECK-LABEL: ld_not_disjoint32_float_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: xscvuxdsp 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 float1992 ret float %conv1993}1994 1995; Function Attrs: norecurse nounwind readonly uwtable willreturn1996define dso_local float @ld_disjoint_align32_float_uint32_t(i64 %ptr) {1997; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvuxdsp f1, f02004; CHECK-P10-NEXT: blr2005;2006; CHECK-PREP10-LABEL: ld_disjoint_align32_float_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: xscvuxdsp 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 float2021 ret float %conv2022}2023 2024; Function Attrs: norecurse nounwind readonly uwtable willreturn2025define dso_local float @ld_not_disjoint64_float_uint32_t(i64 %ptr) {2026; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvuxdsp f1, f02034; CHECK-P10-NEXT: blr2035;2036; CHECK-PREP10-LABEL: ld_not_disjoint64_float_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: xscvuxdsp 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 float2051 ret float %conv2052}2053 2054; Function Attrs: norecurse nounwind readonly uwtable willreturn2055define dso_local float @ld_disjoint_align64_float_uint32_t(i64 %ptr) {2056; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvuxdsp f1, f02063; CHECK-P10-NEXT: blr2064;2065; CHECK-PREP10-LABEL: ld_disjoint_align64_float_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: xscvuxdsp 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 float2080 ret float %conv2081}2082 2083; Function Attrs: norecurse nounwind readonly uwtable willreturn2084define dso_local float @ld_cst_align16_float_uint32_t() {2085; CHECK-LABEL: ld_cst_align16_float_uint32_t:2086; CHECK: # %bb.0: # %entry2087; CHECK-NEXT: li r3, 40802088; CHECK-NEXT: lfiwzx f0, 0, r32089; CHECK-NEXT: xscvuxdsp f1, f02090; CHECK-NEXT: blr2091entry:2092 %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 162093 %conv = uitofp i32 %0 to float2094 ret float %conv2095}2096 2097; Function Attrs: norecurse nounwind readonly uwtable willreturn2098define dso_local float @ld_cst_align32_float_uint32_t() {2099; CHECK-P10-LABEL: ld_cst_align32_float_uint32_t:2100; CHECK-P10: # %bb.0: # %entry2101; CHECK-P10-NEXT: pli r3, 99999002102; CHECK-P10-NEXT: lfiwzx f0, 0, r32103; CHECK-P10-NEXT: xscvuxdsp f1, f02104; CHECK-P10-NEXT: blr2105;2106; CHECK-PREP10-LABEL: ld_cst_align32_float_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: xscvuxdsp f1, f02112; CHECK-PREP10-NEXT: blr2113entry:2114 %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 42115 %conv = uitofp i32 %0 to float2116 ret float %conv2117}2118 2119; Function Attrs: norecurse nounwind readonly uwtable willreturn2120define dso_local float @ld_cst_align64_float_uint32_t() {2121; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f02127; CHECK-P10-NEXT: blr2128;2129; CHECK-PREP10-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f02136; CHECK-PREP10-NEXT: blr2137entry:2138 %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40962139 %conv = uitofp i32 %0 to float2140 ret float %conv2141}2142 2143; Function Attrs: norecurse nounwind readonly uwtable willreturn2144define dso_local float @ld_0_float_int32_t(i64 %ptr) {2145; CHECK-LABEL: ld_0_float_int32_t:2146; CHECK: # %bb.0: # %entry2147; CHECK-NEXT: lfiwax f0, 0, r32148; CHECK-NEXT: xscvsxdsp f1, f02149; CHECK-NEXT: blr2150entry:2151 %0 = inttoptr i64 %ptr to ptr2152 %1 = load i32, ptr %0, align 42153 %conv = sitofp i32 %1 to float2154 ret float %conv2155}2156 2157; Function Attrs: norecurse nounwind readonly uwtable willreturn2158define dso_local float @ld_align16_float_int32_t(ptr nocapture readonly %ptr) {2159; CHECK-LABEL: ld_align16_float_int32_t:2160; CHECK: # %bb.0: # %entry2161; CHECK-NEXT: addi r3, r3, 82162; CHECK-NEXT: lfiwax f0, 0, r32163; CHECK-NEXT: xscvsxdsp 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 float2169 ret float %conv2170}2171 2172; Function Attrs: norecurse nounwind readonly uwtable willreturn2173define dso_local float @ld_align32_float_int32_t(ptr nocapture readonly %ptr) {2174; CHECK-P10-LABEL: ld_align32_float_int32_t:2175; CHECK-P10: # %bb.0: # %entry2176; CHECK-P10-NEXT: pli r4, 999990002177; CHECK-P10-NEXT: lfiwax f0, r3, r42178; CHECK-P10-NEXT: xscvsxdsp f1, f02179; CHECK-P10-NEXT: blr2180;2181; CHECK-PREP10-LABEL: ld_align32_float_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: xscvsxdsp 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 float2192 ret float %conv2193}2194 2195; Function Attrs: norecurse nounwind readonly uwtable willreturn2196define dso_local float @ld_align64_float_int32_t(ptr nocapture readonly %ptr) {2197; CHECK-P10-LABEL: ld_align64_float_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: xscvsxdsp f1, f02203; CHECK-P10-NEXT: blr2204;2205; CHECK-PREP10-LABEL: ld_align64_float_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: xscvsxdsp 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 float2217 ret float %conv2218}2219 2220; Function Attrs: norecurse nounwind readonly uwtable willreturn2221define dso_local float @ld_reg_float_int32_t(ptr nocapture readonly %ptr, i64 %off) {2222; CHECK-LABEL: ld_reg_float_int32_t:2223; CHECK: # %bb.0: # %entry2224; CHECK-NEXT: lfiwax f0, r3, r42225; CHECK-NEXT: xscvsxdsp 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 float2231 ret float %conv2232}2233 2234; Function Attrs: norecurse nounwind readonly uwtable willreturn2235define dso_local float @ld_or_float_int32_t(i64 %ptr, i8 zeroext %off) {2236; CHECK-LABEL: ld_or_float_int32_t:2237; CHECK: # %bb.0: # %entry2238; CHECK-NEXT: or r3, r4, r32239; CHECK-NEXT: lfiwax f0, 0, r32240; CHECK-NEXT: xscvsxdsp 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 float2248 ret float %conv12249}2250 2251; Function Attrs: norecurse nounwind readonly uwtable willreturn2252define dso_local float @ld_not_disjoint16_float_int32_t(i64 %ptr) {2253; CHECK-LABEL: ld_not_disjoint16_float_int32_t:2254; CHECK: # %bb.0: # %entry2255; CHECK-NEXT: ori r3, r3, 62256; CHECK-NEXT: lfiwax f0, 0, r32257; CHECK-NEXT: xscvsxdsp 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 float2264 ret float %conv2265}2266 2267; Function Attrs: norecurse nounwind readonly uwtable willreturn2268define dso_local float @ld_disjoint_align16_float_int32_t(i64 %ptr) {2269; CHECK-LABEL: ld_disjoint_align16_float_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: xscvsxdsp 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 float2282 ret float %conv2283}2284 2285; Function Attrs: norecurse nounwind readonly uwtable willreturn2286define dso_local float @ld_not_disjoint32_float_int32_t(i64 %ptr) {2287; CHECK-LABEL: ld_not_disjoint32_float_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: xscvsxdsp 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 float2299 ret float %conv2300}2301 2302; Function Attrs: norecurse nounwind readonly uwtable willreturn2303define dso_local float @ld_disjoint_align32_float_int32_t(i64 %ptr) {2304; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvsxdsp f1, f02311; CHECK-P10-NEXT: blr2312;2313; CHECK-PREP10-LABEL: ld_disjoint_align32_float_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: xscvsxdsp 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 float2328 ret float %conv2329}2330 2331; Function Attrs: norecurse nounwind readonly uwtable willreturn2332define dso_local float @ld_not_disjoint64_float_int32_t(i64 %ptr) {2333; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvsxdsp f1, f02341; CHECK-P10-NEXT: blr2342;2343; CHECK-PREP10-LABEL: ld_not_disjoint64_float_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: xscvsxdsp 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 float2358 ret float %conv2359}2360 2361; Function Attrs: norecurse nounwind readonly uwtable willreturn2362define dso_local float @ld_disjoint_align64_float_int32_t(i64 %ptr) {2363; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvsxdsp f1, f02370; CHECK-P10-NEXT: blr2371;2372; CHECK-PREP10-LABEL: ld_disjoint_align64_float_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: xscvsxdsp 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 float2387 ret float %conv2388}2389 2390; Function Attrs: norecurse nounwind readonly uwtable willreturn2391define dso_local float @ld_cst_align16_float_int32_t() {2392; CHECK-LABEL: ld_cst_align16_float_int32_t:2393; CHECK: # %bb.0: # %entry2394; CHECK-NEXT: li r3, 40802395; CHECK-NEXT: lfiwax f0, 0, r32396; CHECK-NEXT: xscvsxdsp f1, f02397; CHECK-NEXT: blr2398entry:2399 %0 = load i32, ptr inttoptr (i64 4080 to ptr), align 162400 %conv = sitofp i32 %0 to float2401 ret float %conv2402}2403 2404; Function Attrs: norecurse nounwind readonly uwtable willreturn2405define dso_local float @ld_cst_align32_float_int32_t() {2406; CHECK-P10-LABEL: ld_cst_align32_float_int32_t:2407; CHECK-P10: # %bb.0: # %entry2408; CHECK-P10-NEXT: pli r3, 99999002409; CHECK-P10-NEXT: lfiwax f0, 0, r32410; CHECK-P10-NEXT: xscvsxdsp f1, f02411; CHECK-P10-NEXT: blr2412;2413; CHECK-PREP10-LABEL: ld_cst_align32_float_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: xscvsxdsp f1, f02419; CHECK-PREP10-NEXT: blr2420entry:2421 %0 = load i32, ptr inttoptr (i64 9999900 to ptr), align 42422 %conv = sitofp i32 %0 to float2423 ret float %conv2424}2425 2426; Function Attrs: norecurse nounwind readonly uwtable willreturn2427define dso_local float @ld_cst_align64_float_int32_t() {2428; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, f02434; CHECK-P10-NEXT: blr2435;2436; CHECK-PREP10-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, f02443; CHECK-PREP10-NEXT: blr2444entry:2445 %0 = load i32, ptr inttoptr (i64 1000000000000 to ptr), align 40962446 %conv = sitofp i32 %0 to float2447 ret float %conv2448}2449 2450; Function Attrs: norecurse nounwind readonly uwtable willreturn2451define dso_local float @ld_0_float_uint64_t(i64 %ptr) {2452; CHECK-LABEL: ld_0_float_uint64_t:2453; CHECK: # %bb.0: # %entry2454; CHECK-NEXT: lfd f0, 0(r3)2455; CHECK-NEXT: xscvuxdsp f1, f02456; CHECK-NEXT: blr2457entry:2458 %0 = inttoptr i64 %ptr to ptr2459 %1 = load i64, ptr %0, align 82460 %conv = uitofp i64 %1 to float2461 ret float %conv2462}2463 2464; Function Attrs: norecurse nounwind readonly uwtable willreturn2465define dso_local float @ld_align16_float_uint64_t(ptr nocapture readonly %ptr) {2466; CHECK-LABEL: ld_align16_float_uint64_t:2467; CHECK: # %bb.0: # %entry2468; CHECK-NEXT: lfd f0, 8(r3)2469; CHECK-NEXT: xscvuxdsp 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 float2475 ret float %conv2476}2477 2478; Function Attrs: norecurse nounwind readonly uwtable willreturn2479define dso_local float @ld_align32_float_uint64_t(ptr nocapture readonly %ptr) {2480; CHECK-P10-LABEL: ld_align32_float_uint64_t:2481; CHECK-P10: # %bb.0: # %entry2482; CHECK-P10-NEXT: plfd f0, 99999000(r3), 02483; CHECK-P10-NEXT: xscvuxdsp f1, f02484; CHECK-P10-NEXT: blr2485;2486; CHECK-PREP10-LABEL: ld_align32_float_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: xscvuxdsp 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 float2497 ret float %conv2498}2499 2500; Function Attrs: norecurse nounwind readonly uwtable willreturn2501define dso_local float @ld_align64_float_uint64_t(ptr nocapture readonly %ptr) {2502; CHECK-P10-LABEL: ld_align64_float_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: xscvuxdsp f1, f02508; CHECK-P10-NEXT: blr2509;2510; CHECK-PREP10-LABEL: ld_align64_float_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: xscvuxdsp 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 float2522 ret float %conv2523}2524 2525; Function Attrs: norecurse nounwind readonly uwtable willreturn2526define dso_local float @ld_reg_float_uint64_t(ptr nocapture readonly %ptr, i64 %off) {2527; CHECK-LABEL: ld_reg_float_uint64_t:2528; CHECK: # %bb.0: # %entry2529; CHECK-NEXT: lfdx f0, r3, r42530; CHECK-NEXT: xscvuxdsp 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 float2536 ret float %conv2537}2538 2539; Function Attrs: norecurse nounwind readonly uwtable willreturn2540define dso_local float @ld_or_float_uint64_t(i64 %ptr, i8 zeroext %off) {2541; CHECK-LABEL: ld_or_float_uint64_t:2542; CHECK: # %bb.0: # %entry2543; CHECK-NEXT: or r3, r4, r32544; CHECK-NEXT: lfd f0, 0(r3)2545; CHECK-NEXT: xscvuxdsp 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 float2553 ret float %conv12554}2555 2556; Function Attrs: norecurse nounwind readonly uwtable willreturn2557define dso_local float @ld_not_disjoint16_float_uint64_t(i64 %ptr) {2558; CHECK-LABEL: ld_not_disjoint16_float_uint64_t:2559; CHECK: # %bb.0: # %entry2560; CHECK-NEXT: ori r3, r3, 62561; CHECK-NEXT: lfd f0, 0(r3)2562; CHECK-NEXT: xscvuxdsp 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 float2569 ret float %conv2570}2571 2572; Function Attrs: norecurse nounwind readonly uwtable willreturn2573define dso_local float @ld_disjoint_align16_float_uint64_t(i64 %ptr) {2574; CHECK-LABEL: ld_disjoint_align16_float_uint64_t:2575; CHECK: # %bb.0: # %entry2576; CHECK-NEXT: rldicr r3, r3, 0, 512577; CHECK-NEXT: lfd f0, 24(r3)2578; CHECK-NEXT: xscvuxdsp 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 float2586 ret float %conv2587}2588 2589; Function Attrs: norecurse nounwind readonly uwtable willreturn2590define dso_local float @ld_not_disjoint32_float_uint64_t(i64 %ptr) {2591; CHECK-LABEL: ld_not_disjoint32_float_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: xscvuxdsp 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 float2603 ret float %conv2604}2605 2606; Function Attrs: norecurse nounwind readonly uwtable willreturn2607define dso_local float @ld_disjoint_align32_float_uint64_t(i64 %ptr) {2608; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvuxdsp f1, f02614; CHECK-P10-NEXT: blr2615;2616; CHECK-PREP10-LABEL: ld_disjoint_align32_float_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: xscvuxdsp 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 float2631 ret float %conv2632}2633 2634; Function Attrs: norecurse nounwind readonly uwtable willreturn2635define dso_local float @ld_not_disjoint64_float_uint64_t(i64 %ptr) {2636; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvuxdsp f1, f02644; CHECK-P10-NEXT: blr2645;2646; CHECK-PREP10-LABEL: ld_not_disjoint64_float_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: xscvuxdsp 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 float2661 ret float %conv2662}2663 2664; Function Attrs: norecurse nounwind readonly uwtable willreturn2665define dso_local float @ld_disjoint_align64_float_uint64_t(i64 %ptr) {2666; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvuxdsp f1, f02673; CHECK-P10-NEXT: blr2674;2675; CHECK-PREP10-LABEL: ld_disjoint_align64_float_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: xscvuxdsp 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 float2690 ret float %conv2691}2692 2693; Function Attrs: norecurse nounwind readonly uwtable willreturn2694define dso_local float @ld_cst_align16_float_uint64_t() {2695; CHECK-LABEL: ld_cst_align16_float_uint64_t:2696; CHECK: # %bb.0: # %entry2697; CHECK-NEXT: lfd f0, 4080(0)2698; CHECK-NEXT: xscvuxdsp f1, f02699; CHECK-NEXT: blr2700entry:2701 %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 162702 %conv = uitofp i64 %0 to float2703 ret float %conv2704}2705 2706; Function Attrs: norecurse nounwind readonly uwtable willreturn2707define dso_local float @ld_cst_align32_float_uint64_t() {2708; CHECK-LABEL: ld_cst_align32_float_uint64_t:2709; CHECK: # %bb.0: # %entry2710; CHECK-NEXT: lis r3, 1532711; CHECK-NEXT: lfd f0, -27108(r3)2712; CHECK-NEXT: xscvuxdsp f1, f02713; CHECK-NEXT: blr2714entry:2715 %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 82716 %conv = uitofp i64 %0 to float2717 ret float %conv2718}2719 2720; Function Attrs: norecurse nounwind readonly uwtable willreturn2721define dso_local float @ld_cst_align64_float_uint64_t() {2722; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f02728; CHECK-P10-NEXT: blr2729;2730; CHECK-PREP10-LABEL: ld_cst_align64_float_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: xscvuxdsp f1, f02737; CHECK-PREP10-NEXT: blr2738entry:2739 %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40962740 %conv = uitofp i64 %0 to float2741 ret float %conv2742}2743 2744; Function Attrs: norecurse nounwind readonly uwtable willreturn2745define dso_local float @ld_0_float_int64_t(i64 %ptr) {2746; CHECK-LABEL: ld_0_float_int64_t:2747; CHECK: # %bb.0: # %entry2748; CHECK-NEXT: lfd f0, 0(r3)2749; CHECK-NEXT: xscvsxdsp f1, f02750; CHECK-NEXT: blr2751entry:2752 %0 = inttoptr i64 %ptr to ptr2753 %1 = load i64, ptr %0, align 82754 %conv = sitofp i64 %1 to float2755 ret float %conv2756}2757 2758; Function Attrs: norecurse nounwind readonly uwtable willreturn2759define dso_local float @ld_align16_float_int64_t(ptr nocapture readonly %ptr) {2760; CHECK-LABEL: ld_align16_float_int64_t:2761; CHECK: # %bb.0: # %entry2762; CHECK-NEXT: lfd f0, 8(r3)2763; CHECK-NEXT: xscvsxdsp 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 float2769 ret float %conv2770}2771 2772; Function Attrs: norecurse nounwind readonly uwtable willreturn2773define dso_local float @ld_align32_float_int64_t(ptr nocapture readonly %ptr) {2774; CHECK-P10-LABEL: ld_align32_float_int64_t:2775; CHECK-P10: # %bb.0: # %entry2776; CHECK-P10-NEXT: plfd f0, 99999000(r3), 02777; CHECK-P10-NEXT: xscvsxdsp f1, f02778; CHECK-P10-NEXT: blr2779;2780; CHECK-PREP10-LABEL: ld_align32_float_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: xscvsxdsp 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 float2791 ret float %conv2792}2793 2794; Function Attrs: norecurse nounwind readonly uwtable willreturn2795define dso_local float @ld_align64_float_int64_t(ptr nocapture readonly %ptr) {2796; CHECK-P10-LABEL: ld_align64_float_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: xscvsxdsp f1, f02802; CHECK-P10-NEXT: blr2803;2804; CHECK-PREP10-LABEL: ld_align64_float_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: xscvsxdsp 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 float2816 ret float %conv2817}2818 2819; Function Attrs: norecurse nounwind readonly uwtable willreturn2820define dso_local float @ld_reg_float_int64_t(ptr nocapture readonly %ptr, i64 %off) {2821; CHECK-LABEL: ld_reg_float_int64_t:2822; CHECK: # %bb.0: # %entry2823; CHECK-NEXT: lfdx f0, r3, r42824; CHECK-NEXT: xscvsxdsp 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 float2830 ret float %conv2831}2832 2833; Function Attrs: norecurse nounwind readonly uwtable willreturn2834define dso_local float @ld_or_float_int64_t(i64 %ptr, i8 zeroext %off) {2835; CHECK-LABEL: ld_or_float_int64_t:2836; CHECK: # %bb.0: # %entry2837; CHECK-NEXT: or r3, r4, r32838; CHECK-NEXT: lfd f0, 0(r3)2839; CHECK-NEXT: xscvsxdsp 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 float2847 ret float %conv12848}2849 2850; Function Attrs: norecurse nounwind readonly uwtable willreturn2851define dso_local float @ld_not_disjoint16_float_int64_t(i64 %ptr) {2852; CHECK-LABEL: ld_not_disjoint16_float_int64_t:2853; CHECK: # %bb.0: # %entry2854; CHECK-NEXT: ori r3, r3, 62855; CHECK-NEXT: lfd f0, 0(r3)2856; CHECK-NEXT: xscvsxdsp 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 float2863 ret float %conv2864}2865 2866; Function Attrs: norecurse nounwind readonly uwtable willreturn2867define dso_local float @ld_disjoint_align16_float_int64_t(i64 %ptr) {2868; CHECK-LABEL: ld_disjoint_align16_float_int64_t:2869; CHECK: # %bb.0: # %entry2870; CHECK-NEXT: rldicr r3, r3, 0, 512871; CHECK-NEXT: lfd f0, 24(r3)2872; CHECK-NEXT: xscvsxdsp 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 float2880 ret float %conv2881}2882 2883; Function Attrs: norecurse nounwind readonly uwtable willreturn2884define dso_local float @ld_not_disjoint32_float_int64_t(i64 %ptr) {2885; CHECK-LABEL: ld_not_disjoint32_float_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: xscvsxdsp 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 float2897 ret float %conv2898}2899 2900; Function Attrs: norecurse nounwind readonly uwtable willreturn2901define dso_local float @ld_disjoint_align32_float_int64_t(i64 %ptr) {2902; CHECK-P10-LABEL: ld_disjoint_align32_float_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: xscvsxdsp f1, f02908; CHECK-P10-NEXT: blr2909;2910; CHECK-PREP10-LABEL: ld_disjoint_align32_float_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: xscvsxdsp 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 float2925 ret float %conv2926}2927 2928; Function Attrs: norecurse nounwind readonly uwtable willreturn2929define dso_local float @ld_not_disjoint64_float_int64_t(i64 %ptr) {2930; CHECK-P10-LABEL: ld_not_disjoint64_float_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: xscvsxdsp f1, f02938; CHECK-P10-NEXT: blr2939;2940; CHECK-PREP10-LABEL: ld_not_disjoint64_float_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: xscvsxdsp 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 float2955 ret float %conv2956}2957 2958; Function Attrs: norecurse nounwind readonly uwtable willreturn2959define dso_local float @ld_disjoint_align64_float_int64_t(i64 %ptr) {2960; CHECK-P10-LABEL: ld_disjoint_align64_float_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: xscvsxdsp f1, f02967; CHECK-P10-NEXT: blr2968;2969; CHECK-PREP10-LABEL: ld_disjoint_align64_float_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: xscvsxdsp 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 float2984 ret float %conv2985}2986 2987; Function Attrs: norecurse nounwind readonly uwtable willreturn2988define dso_local float @ld_cst_align16_float_int64_t() {2989; CHECK-LABEL: ld_cst_align16_float_int64_t:2990; CHECK: # %bb.0: # %entry2991; CHECK-NEXT: lfd f0, 4080(0)2992; CHECK-NEXT: xscvsxdsp f1, f02993; CHECK-NEXT: blr2994entry:2995 %0 = load i64, ptr inttoptr (i64 4080 to ptr), align 162996 %conv = sitofp i64 %0 to float2997 ret float %conv2998}2999 3000; Function Attrs: norecurse nounwind readonly uwtable willreturn3001define dso_local float @ld_cst_align32_float_int64_t() {3002; CHECK-LABEL: ld_cst_align32_float_int64_t:3003; CHECK: # %bb.0: # %entry3004; CHECK-NEXT: lis r3, 1533005; CHECK-NEXT: lfd f0, -27108(r3)3006; CHECK-NEXT: xscvsxdsp f1, f03007; CHECK-NEXT: blr3008entry:3009 %0 = load i64, ptr inttoptr (i64 9999900 to ptr), align 83010 %conv = sitofp i64 %0 to float3011 ret float %conv3012}3013 3014; Function Attrs: norecurse nounwind readonly uwtable willreturn3015define dso_local float @ld_cst_align64_float_int64_t() {3016; CHECK-P10-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, f03022; CHECK-P10-NEXT: blr3023;3024; CHECK-PREP10-LABEL: ld_cst_align64_float_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: xscvsxdsp f1, f03031; CHECK-PREP10-NEXT: blr3032entry:3033 %0 = load i64, ptr inttoptr (i64 1000000000000 to ptr), align 40963034 %conv = sitofp i64 %0 to float3035 ret float %conv3036}3037 3038; Function Attrs: norecurse nounwind readonly uwtable willreturn3039define dso_local float @ld_0_float_float(i64 %ptr) {3040; CHECK-LABEL: ld_0_float_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 ret float %13048}3049 3050; Function Attrs: norecurse nounwind readonly uwtable willreturn3051define dso_local float @ld_align16_float_float(ptr nocapture readonly %ptr) {3052; CHECK-LABEL: ld_align16_float_float:3053; CHECK: # %bb.0: # %entry3054; CHECK-NEXT: lfs f1, 8(r3)3055; CHECK-NEXT: blr3056entry:3057 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83058 %0 = load float, ptr %add.ptr, align 43059 ret float %03060}3061 3062; Function Attrs: norecurse nounwind readonly uwtable willreturn3063define dso_local float @ld_align32_float_float(ptr nocapture readonly %ptr) {3064; CHECK-P10-LABEL: ld_align32_float_float:3065; CHECK-P10: # %bb.0: # %entry3066; CHECK-P10-NEXT: plfs f1, 99999000(r3), 03067; CHECK-P10-NEXT: blr3068;3069; CHECK-PREP10-LABEL: ld_align32_float_float:3070; CHECK-PREP10: # %bb.0: # %entry3071; CHECK-PREP10-NEXT: lis r4, 15253072; CHECK-PREP10-NEXT: ori r4, r4, 566003073; CHECK-PREP10-NEXT: lfsx f1, r3, r43074; CHECK-PREP10-NEXT: blr3075entry:3076 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003077 %0 = load float, ptr %add.ptr, align 43078 ret float %03079}3080 3081; Function Attrs: norecurse nounwind readonly uwtable willreturn3082define dso_local float @ld_align64_float_float(ptr nocapture readonly %ptr) {3083; CHECK-P10-LABEL: ld_align64_float_float:3084; CHECK-P10: # %bb.0: # %entry3085; CHECK-P10-NEXT: pli r4, 2441406253086; CHECK-P10-NEXT: rldic r4, r4, 12, 243087; CHECK-P10-NEXT: lfsx f1, r3, r43088; CHECK-P10-NEXT: blr3089;3090; CHECK-PREP10-LABEL: ld_align64_float_float:3091; CHECK-PREP10: # %bb.0: # %entry3092; CHECK-PREP10-NEXT: lis r4, 37253093; CHECK-PREP10-NEXT: ori r4, r4, 190253094; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243095; CHECK-PREP10-NEXT: lfsx f1, r3, r43096; CHECK-PREP10-NEXT: blr3097entry:3098 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003099 %0 = load float, ptr %add.ptr, align 43100 ret float %03101}3102 3103; Function Attrs: norecurse nounwind readonly uwtable willreturn3104define dso_local float @ld_reg_float_float(ptr nocapture readonly %ptr, i64 %off) {3105; CHECK-LABEL: ld_reg_float_float:3106; CHECK: # %bb.0: # %entry3107; CHECK-NEXT: lfsx f1, r3, r43108; CHECK-NEXT: blr3109entry:3110 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3111 %0 = load float, ptr %add.ptr, align 43112 ret float %03113}3114 3115; Function Attrs: norecurse nounwind readonly uwtable willreturn3116define dso_local float @ld_or_float_float(i64 %ptr, i8 zeroext %off) {3117; CHECK-LABEL: ld_or_float_float:3118; CHECK: # %bb.0: # %entry3119; CHECK-NEXT: or r3, r4, r33120; CHECK-NEXT: lfs f1, 0(r3)3121; CHECK-NEXT: blr3122entry:3123 %conv = zext i8 %off to i643124 %or = or i64 %conv, %ptr3125 %0 = inttoptr i64 %or to ptr3126 %1 = load float, ptr %0, align 43127 ret float %13128}3129 3130; Function Attrs: norecurse nounwind readonly uwtable willreturn3131define dso_local float @ld_not_disjoint16_float_float(i64 %ptr) {3132; CHECK-LABEL: ld_not_disjoint16_float_float:3133; CHECK: # %bb.0: # %entry3134; CHECK-NEXT: ori r3, r3, 63135; CHECK-NEXT: lfs f1, 0(r3)3136; CHECK-NEXT: blr3137entry:3138 %or = or i64 %ptr, 63139 %0 = inttoptr i64 %or to ptr3140 %1 = load float, ptr %0, align 43141 ret float %13142}3143 3144; Function Attrs: norecurse nounwind readonly uwtable willreturn3145define dso_local float @ld_disjoint_align16_float_float(i64 %ptr) {3146; CHECK-LABEL: ld_disjoint_align16_float_float:3147; CHECK: # %bb.0: # %entry3148; CHECK-NEXT: rldicr r3, r3, 0, 513149; CHECK-NEXT: lfs f1, 24(r3)3150; CHECK-NEXT: blr3151entry:3152 %and = and i64 %ptr, -40963153 %or = or i64 %and, 243154 %0 = inttoptr i64 %or to ptr3155 %1 = load float, ptr %0, align 83156 ret float %13157}3158 3159; Function Attrs: norecurse nounwind readonly uwtable willreturn3160define dso_local float @ld_not_disjoint32_float_float(i64 %ptr) {3161; CHECK-LABEL: ld_not_disjoint32_float_float:3162; CHECK: # %bb.0: # %entry3163; CHECK-NEXT: ori r3, r3, 344633164; CHECK-NEXT: oris r3, r3, 13165; CHECK-NEXT: lfs f1, 0(r3)3166; CHECK-NEXT: blr3167entry:3168 %or = or i64 %ptr, 999993169 %0 = inttoptr i64 %or to ptr3170 %1 = load float, ptr %0, align 43171 ret float %13172}3173 3174; Function Attrs: norecurse nounwind readonly uwtable willreturn3175define dso_local float @ld_disjoint_align32_float_float(i64 %ptr) {3176; CHECK-P10-LABEL: ld_disjoint_align32_float_float:3177; CHECK-P10: # %bb.0: # %entry3178; CHECK-P10-NEXT: lis r4, -152643179; CHECK-P10-NEXT: and r3, r3, r43180; CHECK-P10-NEXT: plfs f1, 999990000(r3), 03181; CHECK-P10-NEXT: blr3182;3183; CHECK-PREP10-LABEL: ld_disjoint_align32_float_float:3184; CHECK-PREP10: # %bb.0: # %entry3185; CHECK-PREP10-NEXT: lis r4, -152643186; CHECK-PREP10-NEXT: and r3, r3, r43187; CHECK-PREP10-NEXT: lis r4, 152583188; CHECK-PREP10-NEXT: ori r4, r4, 417123189; CHECK-PREP10-NEXT: lfsx f1, r3, r43190; CHECK-PREP10-NEXT: blr3191entry:3192 %and = and i64 %ptr, -10003415043193 %or = or i64 %and, 9999900003194 %0 = inttoptr i64 %or to ptr3195 %1 = load float, ptr %0, align 163196 ret float %13197}3198 3199; Function Attrs: norecurse nounwind readonly uwtable willreturn3200define dso_local float @ld_not_disjoint64_float_float(i64 %ptr) {3201; CHECK-P10-LABEL: ld_not_disjoint64_float_float:3202; CHECK-P10: # %bb.0: # %entry3203; CHECK-P10-NEXT: pli r4, 2323204; CHECK-P10-NEXT: pli r5, 35675873293205; CHECK-P10-NEXT: rldimi r5, r4, 32, 03206; CHECK-P10-NEXT: or r3, r3, r53207; CHECK-P10-NEXT: lfs f1, 0(r3)3208; CHECK-P10-NEXT: blr3209;3210; CHECK-PREP10-LABEL: ld_not_disjoint64_float_float:3211; CHECK-PREP10: # %bb.0: # %entry3212; CHECK-PREP10-NEXT: li r4, 293213; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243214; CHECK-PREP10-NEXT: oris r4, r4, 544373215; CHECK-PREP10-NEXT: ori r4, r4, 40973216; CHECK-PREP10-NEXT: or r3, r3, r43217; CHECK-PREP10-NEXT: lfs f1, 0(r3)3218; CHECK-PREP10-NEXT: blr3219entry:3220 %or = or i64 %ptr, 10000000000013221 %0 = inttoptr i64 %or to ptr3222 %1 = load float, ptr %0, align 43223 ret float %13224}3225 3226; Function Attrs: norecurse nounwind readonly uwtable willreturn3227define dso_local float @ld_disjoint_align64_float_float(i64 %ptr) {3228; CHECK-P10-LABEL: ld_disjoint_align64_float_float:3229; CHECK-P10: # %bb.0: # %entry3230; CHECK-P10-NEXT: pli r4, 2441406253231; CHECK-P10-NEXT: rldicr r3, r3, 0, 233232; CHECK-P10-NEXT: rldic r4, r4, 12, 243233; CHECK-P10-NEXT: lfsx f1, r3, r43234; CHECK-P10-NEXT: blr3235;3236; CHECK-PREP10-LABEL: ld_disjoint_align64_float_float:3237; CHECK-PREP10: # %bb.0: # %entry3238; CHECK-PREP10-NEXT: lis r4, 37253239; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233240; CHECK-PREP10-NEXT: ori r4, r4, 190253241; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243242; CHECK-PREP10-NEXT: lfsx f1, r3, r43243; CHECK-PREP10-NEXT: blr3244entry:3245 %and = and i64 %ptr, -10995116277763246 %or = or i64 %and, 10000000000003247 %0 = inttoptr i64 %or to ptr3248 %1 = load float, ptr %0, align 40963249 ret float %13250}3251 3252; Function Attrs: norecurse nounwind readonly uwtable willreturn3253define dso_local float @ld_cst_align16_float_float() {3254; CHECK-LABEL: ld_cst_align16_float_float:3255; CHECK: # %bb.0: # %entry3256; CHECK-NEXT: lfs f1, 4080(0)3257; CHECK-NEXT: blr3258entry:3259 %0 = load float, ptr inttoptr (i64 4080 to ptr), align 163260 ret float %03261}3262 3263; Function Attrs: norecurse nounwind readonly uwtable willreturn3264define dso_local float @ld_cst_align32_float_float() {3265; CHECK-LABEL: ld_cst_align32_float_float:3266; CHECK: # %bb.0: # %entry3267; CHECK-NEXT: lis r3, 1533268; CHECK-NEXT: lfs f1, -27108(r3)3269; CHECK-NEXT: blr3270entry:3271 %0 = load float, ptr inttoptr (i64 9999900 to ptr), align 43272 ret float %03273}3274 3275; Function Attrs: norecurse nounwind readonly uwtable willreturn3276define dso_local float @ld_cst_align64_float_float() {3277; CHECK-P10-LABEL: ld_cst_align64_float_float:3278; CHECK-P10: # %bb.0: # %entry3279; CHECK-P10-NEXT: pli r3, 2441406253280; CHECK-P10-NEXT: rldic r3, r3, 12, 243281; CHECK-P10-NEXT: lfs f1, 0(r3)3282; CHECK-P10-NEXT: blr3283;3284; CHECK-PREP10-LABEL: ld_cst_align64_float_float:3285; CHECK-PREP10: # %bb.0: # %entry3286; CHECK-PREP10-NEXT: lis r3, 37253287; CHECK-PREP10-NEXT: ori r3, r3, 190253288; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243289; CHECK-PREP10-NEXT: lfs f1, 0(r3)3290; CHECK-PREP10-NEXT: blr3291entry:3292 %0 = load float, ptr inttoptr (i64 1000000000000 to ptr), align 40963293 ret float %03294}3295 3296; Function Attrs: norecurse nounwind readonly uwtable willreturn3297define dso_local float @ld_0_float_double(i64 %ptr) {3298; CHECK-LABEL: ld_0_float_double:3299; CHECK: # %bb.0: # %entry3300; CHECK-NEXT: lfd f0, 0(r3)3301; CHECK-NEXT: xsrsp f1, f03302; CHECK-NEXT: blr3303entry:3304 %0 = inttoptr i64 %ptr to ptr3305 %1 = load double, ptr %0, align 83306 %conv = fptrunc double %1 to float3307 ret float %conv3308}3309 3310; Function Attrs: norecurse nounwind readonly uwtable willreturn3311define dso_local float @ld_align16_float_double(ptr nocapture readonly %ptr) {3312; CHECK-LABEL: ld_align16_float_double:3313; CHECK: # %bb.0: # %entry3314; CHECK-NEXT: lfd f0, 8(r3)3315; CHECK-NEXT: xsrsp f1, f03316; CHECK-NEXT: blr3317entry:3318 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83319 %0 = load double, ptr %add.ptr, align 83320 %conv = fptrunc double %0 to float3321 ret float %conv3322}3323 3324; Function Attrs: norecurse nounwind readonly uwtable willreturn3325define dso_local float @ld_align32_float_double(ptr nocapture readonly %ptr) {3326; CHECK-P10-LABEL: ld_align32_float_double:3327; CHECK-P10: # %bb.0: # %entry3328; CHECK-P10-NEXT: plfd f0, 99999000(r3), 03329; CHECK-P10-NEXT: xsrsp f1, f03330; CHECK-P10-NEXT: blr3331;3332; CHECK-PREP10-LABEL: ld_align32_float_double:3333; CHECK-PREP10: # %bb.0: # %entry3334; CHECK-PREP10-NEXT: lis r4, 15253335; CHECK-PREP10-NEXT: ori r4, r4, 566003336; CHECK-PREP10-NEXT: lfdx f0, r3, r43337; CHECK-PREP10-NEXT: xsrsp f1, f03338; CHECK-PREP10-NEXT: blr3339entry:3340 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003341 %0 = load double, ptr %add.ptr, align 83342 %conv = fptrunc double %0 to float3343 ret float %conv3344}3345 3346; Function Attrs: norecurse nounwind readonly uwtable willreturn3347define dso_local float @ld_align64_float_double(ptr nocapture readonly %ptr) {3348; CHECK-P10-LABEL: ld_align64_float_double:3349; CHECK-P10: # %bb.0: # %entry3350; CHECK-P10-NEXT: pli r4, 2441406253351; CHECK-P10-NEXT: rldic r4, r4, 12, 243352; CHECK-P10-NEXT: lfdx f0, r3, r43353; CHECK-P10-NEXT: xsrsp f1, f03354; CHECK-P10-NEXT: blr3355;3356; CHECK-PREP10-LABEL: ld_align64_float_double:3357; CHECK-PREP10: # %bb.0: # %entry3358; CHECK-PREP10-NEXT: lis r4, 37253359; CHECK-PREP10-NEXT: ori r4, r4, 190253360; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243361; CHECK-PREP10-NEXT: lfdx f0, r3, r43362; CHECK-PREP10-NEXT: xsrsp f1, f03363; CHECK-PREP10-NEXT: blr3364entry:3365 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003366 %0 = load double, ptr %add.ptr, align 83367 %conv = fptrunc double %0 to float3368 ret float %conv3369}3370 3371; Function Attrs: norecurse nounwind readonly uwtable willreturn3372define dso_local float @ld_reg_float_double(ptr nocapture readonly %ptr, i64 %off) {3373; CHECK-LABEL: ld_reg_float_double:3374; CHECK: # %bb.0: # %entry3375; CHECK-NEXT: lfdx f0, r3, r43376; CHECK-NEXT: xsrsp f1, f03377; CHECK-NEXT: blr3378entry:3379 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3380 %0 = load double, ptr %add.ptr, align 83381 %conv = fptrunc double %0 to float3382 ret float %conv3383}3384 3385; Function Attrs: norecurse nounwind readonly uwtable willreturn3386define dso_local float @ld_or_float_double(i64 %ptr, i8 zeroext %off) {3387; CHECK-LABEL: ld_or_float_double:3388; CHECK: # %bb.0: # %entry3389; CHECK-NEXT: or r3, r4, r33390; CHECK-NEXT: lfd f0, 0(r3)3391; CHECK-NEXT: xsrsp f1, f03392; CHECK-NEXT: blr3393entry:3394 %conv = zext i8 %off to i643395 %or = or i64 %conv, %ptr3396 %0 = inttoptr i64 %or to ptr3397 %1 = load double, ptr %0, align 83398 %conv1 = fptrunc double %1 to float3399 ret float %conv13400}3401 3402; Function Attrs: norecurse nounwind readonly uwtable willreturn3403define dso_local float @ld_not_disjoint16_float_double(i64 %ptr) {3404; CHECK-LABEL: ld_not_disjoint16_float_double:3405; CHECK: # %bb.0: # %entry3406; CHECK-NEXT: ori r3, r3, 63407; CHECK-NEXT: lfd f0, 0(r3)3408; CHECK-NEXT: xsrsp f1, f03409; CHECK-NEXT: blr3410entry:3411 %or = or i64 %ptr, 63412 %0 = inttoptr i64 %or to ptr3413 %1 = load double, ptr %0, align 83414 %conv = fptrunc double %1 to float3415 ret float %conv3416}3417 3418; Function Attrs: norecurse nounwind readonly uwtable willreturn3419define dso_local float @ld_disjoint_align16_float_double(i64 %ptr) {3420; CHECK-LABEL: ld_disjoint_align16_float_double:3421; CHECK: # %bb.0: # %entry3422; CHECK-NEXT: rldicr r3, r3, 0, 513423; CHECK-NEXT: lfd f0, 24(r3)3424; CHECK-NEXT: xsrsp f1, f03425; CHECK-NEXT: blr3426entry:3427 %and = and i64 %ptr, -40963428 %or = or i64 %and, 243429 %0 = inttoptr i64 %or to ptr3430 %1 = load double, ptr %0, align 83431 %conv = fptrunc double %1 to float3432 ret float %conv3433}3434 3435; Function Attrs: norecurse nounwind readonly uwtable willreturn3436define dso_local float @ld_not_disjoint32_float_double(i64 %ptr) {3437; CHECK-LABEL: ld_not_disjoint32_float_double:3438; CHECK: # %bb.0: # %entry3439; CHECK-NEXT: ori r3, r3, 344633440; CHECK-NEXT: oris r3, r3, 13441; CHECK-NEXT: lfd f0, 0(r3)3442; CHECK-NEXT: xsrsp f1, f03443; CHECK-NEXT: blr3444entry:3445 %or = or i64 %ptr, 999993446 %0 = inttoptr i64 %or to ptr3447 %1 = load double, ptr %0, align 83448 %conv = fptrunc double %1 to float3449 ret float %conv3450}3451 3452; Function Attrs: norecurse nounwind readonly uwtable willreturn3453define dso_local float @ld_disjoint_align32_float_double(i64 %ptr) {3454; CHECK-P10-LABEL: ld_disjoint_align32_float_double:3455; CHECK-P10: # %bb.0: # %entry3456; CHECK-P10-NEXT: lis r4, -152643457; CHECK-P10-NEXT: and r3, r3, r43458; CHECK-P10-NEXT: plfd f0, 999990000(r3), 03459; CHECK-P10-NEXT: xsrsp f1, f03460; CHECK-P10-NEXT: blr3461;3462; CHECK-PREP10-LABEL: ld_disjoint_align32_float_double:3463; CHECK-PREP10: # %bb.0: # %entry3464; CHECK-PREP10-NEXT: lis r4, -152643465; CHECK-PREP10-NEXT: and r3, r3, r43466; CHECK-PREP10-NEXT: lis r4, 152583467; CHECK-PREP10-NEXT: ori r4, r4, 417123468; CHECK-PREP10-NEXT: lfdx f0, r3, r43469; CHECK-PREP10-NEXT: xsrsp f1, f03470; CHECK-PREP10-NEXT: blr3471entry:3472 %and = and i64 %ptr, -10003415043473 %or = or i64 %and, 9999900003474 %0 = inttoptr i64 %or to ptr3475 %1 = load double, ptr %0, align 163476 %conv = fptrunc double %1 to float3477 ret float %conv3478}3479 3480; Function Attrs: norecurse nounwind readonly uwtable willreturn3481define dso_local float @ld_not_disjoint64_float_double(i64 %ptr) {3482; CHECK-P10-LABEL: ld_not_disjoint64_float_double:3483; CHECK-P10: # %bb.0: # %entry3484; CHECK-P10-NEXT: pli r4, 2323485; CHECK-P10-NEXT: pli r5, 35675873293486; CHECK-P10-NEXT: rldimi r5, r4, 32, 03487; CHECK-P10-NEXT: or r3, r3, r53488; CHECK-P10-NEXT: lfd f0, 0(r3)3489; CHECK-P10-NEXT: xsrsp f1, f03490; CHECK-P10-NEXT: blr3491;3492; CHECK-PREP10-LABEL: ld_not_disjoint64_float_double:3493; CHECK-PREP10: # %bb.0: # %entry3494; CHECK-PREP10-NEXT: li r4, 293495; CHECK-PREP10-NEXT: rldic r4, r4, 35, 243496; CHECK-PREP10-NEXT: oris r4, r4, 544373497; CHECK-PREP10-NEXT: ori r4, r4, 40973498; CHECK-PREP10-NEXT: or r3, r3, r43499; CHECK-PREP10-NEXT: lfd f0, 0(r3)3500; CHECK-PREP10-NEXT: xsrsp f1, f03501; CHECK-PREP10-NEXT: blr3502entry:3503 %or = or i64 %ptr, 10000000000013504 %0 = inttoptr i64 %or to ptr3505 %1 = load double, ptr %0, align 83506 %conv = fptrunc double %1 to float3507 ret float %conv3508}3509 3510; Function Attrs: norecurse nounwind readonly uwtable willreturn3511define dso_local float @ld_disjoint_align64_float_double(i64 %ptr) {3512; CHECK-P10-LABEL: ld_disjoint_align64_float_double:3513; CHECK-P10: # %bb.0: # %entry3514; CHECK-P10-NEXT: pli r4, 2441406253515; CHECK-P10-NEXT: rldicr r3, r3, 0, 233516; CHECK-P10-NEXT: rldic r4, r4, 12, 243517; CHECK-P10-NEXT: lfdx f0, r3, r43518; CHECK-P10-NEXT: xsrsp f1, f03519; CHECK-P10-NEXT: blr3520;3521; CHECK-PREP10-LABEL: ld_disjoint_align64_float_double:3522; CHECK-PREP10: # %bb.0: # %entry3523; CHECK-PREP10-NEXT: lis r4, 37253524; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 233525; CHECK-PREP10-NEXT: ori r4, r4, 190253526; CHECK-PREP10-NEXT: rldic r4, r4, 12, 243527; CHECK-PREP10-NEXT: lfdx f0, r3, r43528; CHECK-PREP10-NEXT: xsrsp f1, f03529; CHECK-PREP10-NEXT: blr3530entry:3531 %and = and i64 %ptr, -10995116277763532 %or = or i64 %and, 10000000000003533 %0 = inttoptr i64 %or to ptr3534 %1 = load double, ptr %0, align 40963535 %conv = fptrunc double %1 to float3536 ret float %conv3537}3538 3539; Function Attrs: norecurse nounwind readonly uwtable willreturn3540define dso_local float @ld_cst_align16_float_double() {3541; CHECK-LABEL: ld_cst_align16_float_double:3542; CHECK: # %bb.0: # %entry3543; CHECK-NEXT: lfd f0, 4080(0)3544; CHECK-NEXT: xsrsp f1, f03545; CHECK-NEXT: blr3546entry:3547 %0 = load double, ptr inttoptr (i64 4080 to ptr), align 163548 %conv = fptrunc double %0 to float3549 ret float %conv3550}3551 3552; Function Attrs: norecurse nounwind readonly uwtable willreturn3553define dso_local float @ld_cst_align32_float_double() {3554; CHECK-LABEL: ld_cst_align32_float_double:3555; CHECK: # %bb.0: # %entry3556; CHECK-NEXT: lis r3, 1533557; CHECK-NEXT: lfd f0, -27108(r3)3558; CHECK-NEXT: xsrsp f1, f03559; CHECK-NEXT: blr3560entry:3561 %0 = load double, ptr inttoptr (i64 9999900 to ptr), align 83562 %conv = fptrunc double %0 to float3563 ret float %conv3564}3565 3566; Function Attrs: norecurse nounwind readonly uwtable willreturn3567define dso_local float @ld_cst_align64_float_double() {3568; CHECK-P10-LABEL: ld_cst_align64_float_double:3569; CHECK-P10: # %bb.0: # %entry3570; CHECK-P10-NEXT: pli r3, 2441406253571; CHECK-P10-NEXT: rldic r3, r3, 12, 243572; CHECK-P10-NEXT: lfd f0, 0(r3)3573; CHECK-P10-NEXT: xsrsp f1, f03574; CHECK-P10-NEXT: blr3575;3576; CHECK-PREP10-LABEL: ld_cst_align64_float_double:3577; CHECK-PREP10: # %bb.0: # %entry3578; CHECK-PREP10-NEXT: lis r3, 37253579; CHECK-PREP10-NEXT: ori r3, r3, 190253580; CHECK-PREP10-NEXT: rldic r3, r3, 12, 243581; CHECK-PREP10-NEXT: lfd f0, 0(r3)3582; CHECK-PREP10-NEXT: xsrsp f1, f03583; CHECK-PREP10-NEXT: blr3584entry:3585 %0 = load double, ptr inttoptr (i64 1000000000000 to ptr), align 40963586 %conv = fptrunc double %0 to float3587 ret float %conv3588}3589 3590; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3591define dso_local void @st_0_float_uint8_t(i64 %ptr, float %str) {3592; CHECK-POSTP8-LABEL: st_0_float_uint8_t:3593; CHECK-POSTP8: # %bb.0: # %entry3594; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13595; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33596; CHECK-POSTP8-NEXT: blr3597;3598; CHECK-P8-LABEL: st_0_float_uint8_t:3599; CHECK-P8: # %bb.0: # %entry3600; CHECK-P8-NEXT: xscvdpsxws f0, f13601; CHECK-P8-NEXT: mffprwz r4, f03602; CHECK-P8-NEXT: stb r4, 0(r3)3603; CHECK-P8-NEXT: blr3604entry:3605 %conv = fptoui float %str to i83606 %0 = inttoptr i64 %ptr to ptr3607 store i8 %conv, ptr %0, align 13608 ret void3609}3610 3611; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3612define dso_local void @st_align16_float_uint8_t(ptr nocapture %ptr, float %str) {3613; CHECK-POSTP8-LABEL: st_align16_float_uint8_t:3614; CHECK-POSTP8: # %bb.0: # %entry3615; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13616; CHECK-POSTP8-NEXT: addi r3, r3, 83617; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33618; CHECK-POSTP8-NEXT: blr3619;3620; CHECK-P8-LABEL: st_align16_float_uint8_t:3621; CHECK-P8: # %bb.0: # %entry3622; CHECK-P8-NEXT: xscvdpsxws f0, f13623; CHECK-P8-NEXT: mffprwz r4, f03624; CHECK-P8-NEXT: stb r4, 8(r3)3625; CHECK-P8-NEXT: blr3626entry:3627 %conv = fptoui float %str to i83628 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 83629 store i8 %conv, ptr %add.ptr, align 13630 ret void3631}3632 3633; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3634define dso_local void @st_align32_float_uint8_t(ptr nocapture %ptr, float %str) {3635; CHECK-P10-LABEL: st_align32_float_uint8_t:3636; CHECK-P10: # %bb.0: # %entry3637; CHECK-P10-NEXT: xscvdpuxds f0, f13638; CHECK-P10-NEXT: pli r4, 999990003639; CHECK-P10-NEXT: stxsibx f0, r3, r43640; CHECK-P10-NEXT: blr3641;3642; CHECK-P9-LABEL: st_align32_float_uint8_t:3643; CHECK-P9: # %bb.0: # %entry3644; CHECK-P9-NEXT: xscvdpuxds f0, f13645; CHECK-P9-NEXT: lis r4, 15253646; CHECK-P9-NEXT: ori r4, r4, 566003647; CHECK-P9-NEXT: stxsibx f0, r3, r43648; CHECK-P9-NEXT: blr3649;3650; CHECK-P8-LABEL: st_align32_float_uint8_t:3651; CHECK-P8: # %bb.0: # %entry3652; CHECK-P8-NEXT: xscvdpsxws f0, f13653; CHECK-P8-NEXT: lis r5, 15253654; CHECK-P8-NEXT: ori r5, r5, 566003655; CHECK-P8-NEXT: mffprwz r4, f03656; CHECK-P8-NEXT: stbx r4, r3, r53657; CHECK-P8-NEXT: blr3658entry:3659 %conv = fptoui float %str to i83660 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990003661 store i8 %conv, ptr %add.ptr, align 13662 ret void3663}3664 3665; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3666define dso_local void @st_align64_float_uint8_t(ptr nocapture %ptr, float %str) {3667; CHECK-P10-LABEL: st_align64_float_uint8_t:3668; CHECK-P10: # %bb.0: # %entry3669; CHECK-P10-NEXT: xscvdpuxds f0, f13670; CHECK-P10-NEXT: pli r4, 2441406253671; CHECK-P10-NEXT: rldic r4, r4, 12, 243672; CHECK-P10-NEXT: stxsibx f0, r3, r43673; CHECK-P10-NEXT: blr3674;3675; CHECK-P9-LABEL: st_align64_float_uint8_t:3676; CHECK-P9: # %bb.0: # %entry3677; CHECK-P9-NEXT: xscvdpuxds f0, f13678; CHECK-P9-NEXT: lis r4, 37253679; CHECK-P9-NEXT: ori r4, r4, 190253680; CHECK-P9-NEXT: rldic r4, r4, 12, 243681; CHECK-P9-NEXT: stxsibx f0, r3, r43682; CHECK-P9-NEXT: blr3683;3684; CHECK-P8-LABEL: st_align64_float_uint8_t:3685; CHECK-P8: # %bb.0: # %entry3686; CHECK-P8-NEXT: xscvdpsxws f0, f13687; CHECK-P8-NEXT: lis r5, 37253688; CHECK-P8-NEXT: ori r5, r5, 190253689; CHECK-P8-NEXT: rldic r5, r5, 12, 243690; CHECK-P8-NEXT: mffprwz r4, f03691; CHECK-P8-NEXT: stbx r4, r3, r53692; CHECK-P8-NEXT: blr3693entry:3694 %conv = fptoui float %str to i83695 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000003696 store i8 %conv, ptr %add.ptr, align 13697 ret void3698}3699 3700; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3701define dso_local void @st_reg_float_uint8_t(ptr nocapture %ptr, i64 %off, float %str) {3702; CHECK-POSTP8-LABEL: st_reg_float_uint8_t:3703; CHECK-POSTP8: # %bb.0: # %entry3704; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13705; CHECK-POSTP8-NEXT: stxsibx f0, r3, r43706; CHECK-POSTP8-NEXT: blr3707;3708; CHECK-P8-LABEL: st_reg_float_uint8_t:3709; CHECK-P8: # %bb.0: # %entry3710; CHECK-P8-NEXT: xscvdpsxws f0, f13711; CHECK-P8-NEXT: mffprwz r5, f03712; CHECK-P8-NEXT: stbx r5, r3, r43713; CHECK-P8-NEXT: blr3714entry:3715 %conv = fptoui float %str to i83716 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off3717 store i8 %conv, ptr %add.ptr, align 13718 ret void3719}3720 3721; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3722define dso_local void @st_or1_float_uint8_t(i64 %ptr, i8 zeroext %off, float %str) {3723; CHECK-POSTP8-LABEL: st_or1_float_uint8_t:3724; CHECK-POSTP8: # %bb.0: # %entry3725; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13726; CHECK-POSTP8-NEXT: or r3, r4, r33727; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33728; CHECK-POSTP8-NEXT: blr3729;3730; CHECK-P8-LABEL: st_or1_float_uint8_t:3731; CHECK-P8: # %bb.0: # %entry3732; CHECK-P8-NEXT: xscvdpsxws f0, f13733; CHECK-P8-NEXT: or r3, r4, r33734; CHECK-P8-NEXT: mffprwz r5, f03735; CHECK-P8-NEXT: stb r5, 0(r3)3736; CHECK-P8-NEXT: blr3737entry:3738 %conv = fptoui float %str to i83739 %conv1 = zext i8 %off to i643740 %or = or i64 %conv1, %ptr3741 %0 = inttoptr i64 %or to ptr3742 store i8 %conv, ptr %0, align 13743 ret void3744}3745 3746; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3747define dso_local void @st_not_disjoint16_float_uint8_t(i64 %ptr, float %str) {3748; CHECK-POSTP8-LABEL: st_not_disjoint16_float_uint8_t:3749; CHECK-POSTP8: # %bb.0: # %entry3750; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13751; CHECK-POSTP8-NEXT: ori r3, r3, 63752; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33753; CHECK-POSTP8-NEXT: blr3754;3755; CHECK-P8-LABEL: st_not_disjoint16_float_uint8_t:3756; CHECK-P8: # %bb.0: # %entry3757; CHECK-P8-NEXT: xscvdpsxws f0, f13758; CHECK-P8-NEXT: ori r3, r3, 63759; CHECK-P8-NEXT: mffprwz r4, f03760; CHECK-P8-NEXT: stb r4, 0(r3)3761; CHECK-P8-NEXT: blr3762entry:3763 %conv = fptoui float %str to i83764 %or = or i64 %ptr, 63765 %0 = inttoptr i64 %or to ptr3766 store i8 %conv, ptr %0, align 13767 ret void3768}3769 3770; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3771define dso_local void @st_disjoint_align16_float_uint8_t(i64 %ptr, float %str) {3772; CHECK-POSTP8-LABEL: st_disjoint_align16_float_uint8_t:3773; CHECK-POSTP8: # %bb.0: # %entry3774; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13775; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 513776; CHECK-POSTP8-NEXT: ori r3, r3, 243777; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33778; CHECK-POSTP8-NEXT: blr3779;3780; CHECK-P8-LABEL: st_disjoint_align16_float_uint8_t:3781; CHECK-P8: # %bb.0: # %entry3782; CHECK-P8-NEXT: xscvdpsxws f0, f13783; CHECK-P8-NEXT: rldicr r3, r3, 0, 513784; CHECK-P8-NEXT: mffprwz r4, f03785; CHECK-P8-NEXT: stb r4, 24(r3)3786; CHECK-P8-NEXT: blr3787entry:3788 %and = and i64 %ptr, -40963789 %conv = fptoui float %str to i83790 %or = or i64 %and, 243791 %0 = inttoptr i64 %or to ptr3792 store i8 %conv, ptr %0, align 83793 ret void3794}3795 3796; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3797define dso_local void @st_not_disjoint32_float_uint8_t(i64 %ptr, float %str) {3798; CHECK-POSTP8-LABEL: st_not_disjoint32_float_uint8_t:3799; CHECK-POSTP8: # %bb.0: # %entry3800; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13801; CHECK-POSTP8-NEXT: ori r3, r3, 344633802; CHECK-POSTP8-NEXT: oris r3, r3, 13803; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33804; CHECK-POSTP8-NEXT: blr3805;3806; CHECK-P8-LABEL: st_not_disjoint32_float_uint8_t:3807; CHECK-P8: # %bb.0: # %entry3808; CHECK-P8-NEXT: xscvdpsxws f0, f13809; CHECK-P8-NEXT: ori r3, r3, 344633810; CHECK-P8-NEXT: oris r3, r3, 13811; CHECK-P8-NEXT: mffprwz r4, f03812; CHECK-P8-NEXT: stb r4, 0(r3)3813; CHECK-P8-NEXT: blr3814entry:3815 %conv = fptoui float %str to i83816 %or = or i64 %ptr, 999993817 %0 = inttoptr i64 %or to ptr3818 store i8 %conv, ptr %0, align 13819 ret void3820}3821 3822; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3823define dso_local void @st_disjoint_align32_float_uint8_t(i64 %ptr, float %str) {3824; CHECK-P10-LABEL: st_disjoint_align32_float_uint8_t:3825; CHECK-P10: # %bb.0: # %entry3826; CHECK-P10-NEXT: xscvdpuxds f0, f13827; CHECK-P10-NEXT: lis r4, -152643828; CHECK-P10-NEXT: and r3, r3, r43829; CHECK-P10-NEXT: pli r4, 9999900003830; CHECK-P10-NEXT: stxsibx f0, r3, r43831; CHECK-P10-NEXT: blr3832;3833; CHECK-P9-LABEL: st_disjoint_align32_float_uint8_t:3834; CHECK-P9: # %bb.0: # %entry3835; CHECK-P9-NEXT: xscvdpuxds f0, f13836; CHECK-P9-NEXT: lis r4, -152643837; CHECK-P9-NEXT: and r3, r3, r43838; CHECK-P9-NEXT: lis r4, 152583839; CHECK-P9-NEXT: ori r4, r4, 417123840; CHECK-P9-NEXT: stxsibx f0, r3, r43841; CHECK-P9-NEXT: blr3842;3843; CHECK-P8-LABEL: st_disjoint_align32_float_uint8_t:3844; CHECK-P8: # %bb.0: # %entry3845; CHECK-P8-NEXT: xscvdpsxws f0, f13846; CHECK-P8-NEXT: lis r4, -152643847; CHECK-P8-NEXT: lis r5, 152583848; CHECK-P8-NEXT: and r3, r3, r43849; CHECK-P8-NEXT: ori r5, r5, 417123850; CHECK-P8-NEXT: mffprwz r4, f03851; CHECK-P8-NEXT: stbx r4, r3, r53852; CHECK-P8-NEXT: blr3853entry:3854 %and = and i64 %ptr, -10003415043855 %conv = fptoui float %str to i83856 %or = or i64 %and, 9999900003857 %0 = inttoptr i64 %or to ptr3858 store i8 %conv, ptr %0, align 163859 ret void3860}3861 3862; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3863define dso_local void @st_not_disjoint64_float_uint8_t(i64 %ptr, float %str) {3864; CHECK-P10-LABEL: st_not_disjoint64_float_uint8_t:3865; CHECK-P10: # %bb.0: # %entry3866; CHECK-P10-NEXT: xscvdpuxds f0, f13867; CHECK-P10-NEXT: pli r4, 2323868; CHECK-P10-NEXT: pli r5, 35675873293869; CHECK-P10-NEXT: rldimi r5, r4, 32, 03870; CHECK-P10-NEXT: or r3, r3, r53871; CHECK-P10-NEXT: stxsibx f0, 0, r33872; CHECK-P10-NEXT: blr3873;3874; CHECK-P9-LABEL: st_not_disjoint64_float_uint8_t:3875; CHECK-P9: # %bb.0: # %entry3876; CHECK-P9-NEXT: li r4, 293877; CHECK-P9-NEXT: xscvdpuxds f0, f13878; CHECK-P9-NEXT: rldic r4, r4, 35, 243879; CHECK-P9-NEXT: oris r4, r4, 544373880; CHECK-P9-NEXT: ori r4, r4, 40973881; CHECK-P9-NEXT: or r3, r3, r43882; CHECK-P9-NEXT: stxsibx f0, 0, r33883; CHECK-P9-NEXT: blr3884;3885; CHECK-P8-LABEL: st_not_disjoint64_float_uint8_t:3886; CHECK-P8: # %bb.0: # %entry3887; CHECK-P8-NEXT: xscvdpsxws f0, f13888; CHECK-P8-NEXT: li r5, 293889; CHECK-P8-NEXT: rldic r5, r5, 35, 243890; CHECK-P8-NEXT: oris r5, r5, 544373891; CHECK-P8-NEXT: mffprwz r4, f03892; CHECK-P8-NEXT: ori r5, r5, 40973893; CHECK-P8-NEXT: or r3, r3, r53894; CHECK-P8-NEXT: stb r4, 0(r3)3895; CHECK-P8-NEXT: blr3896entry:3897 %conv = fptoui float %str to i83898 %or = or i64 %ptr, 10000000000013899 %0 = inttoptr i64 %or to ptr3900 store i8 %conv, ptr %0, align 13901 ret void3902}3903 3904; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3905define dso_local void @st_disjoint_align64_float_uint8_t(i64 %ptr, float %str) {3906; CHECK-P10-LABEL: st_disjoint_align64_float_uint8_t:3907; CHECK-P10: # %bb.0: # %entry3908; CHECK-P10-NEXT: xscvdpuxds f0, f13909; CHECK-P10-NEXT: pli r4, 2441406253910; CHECK-P10-NEXT: rldicr r3, r3, 0, 233911; CHECK-P10-NEXT: rldic r4, r4, 12, 243912; CHECK-P10-NEXT: stxsibx f0, r3, r43913; CHECK-P10-NEXT: blr3914;3915; CHECK-P9-LABEL: st_disjoint_align64_float_uint8_t:3916; CHECK-P9: # %bb.0: # %entry3917; CHECK-P9-NEXT: xscvdpuxds f0, f13918; CHECK-P9-NEXT: lis r4, 37253919; CHECK-P9-NEXT: rldicr r3, r3, 0, 233920; CHECK-P9-NEXT: ori r4, r4, 190253921; CHECK-P9-NEXT: rldic r4, r4, 12, 243922; CHECK-P9-NEXT: stxsibx f0, r3, r43923; CHECK-P9-NEXT: blr3924;3925; CHECK-P8-LABEL: st_disjoint_align64_float_uint8_t:3926; CHECK-P8: # %bb.0: # %entry3927; CHECK-P8-NEXT: xscvdpsxws f0, f13928; CHECK-P8-NEXT: lis r5, 37253929; CHECK-P8-NEXT: rldicr r3, r3, 0, 233930; CHECK-P8-NEXT: ori r5, r5, 190253931; CHECK-P8-NEXT: rldic r5, r5, 12, 243932; CHECK-P8-NEXT: mffprwz r4, f03933; CHECK-P8-NEXT: stbx r4, r3, r53934; CHECK-P8-NEXT: blr3935entry:3936 %and = and i64 %ptr, -10995116277763937 %conv = fptoui float %str to i83938 %or = or i64 %and, 10000000000003939 %0 = inttoptr i64 %or to ptr3940 store i8 %conv, ptr %0, align 40963941 ret void3942}3943 3944; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3945define dso_local void @st_cst_align16_float_uint8_t(float %str) {3946; CHECK-POSTP8-LABEL: st_cst_align16_float_uint8_t:3947; CHECK-POSTP8: # %bb.0: # %entry3948; CHECK-POSTP8-NEXT: xscvdpuxds f0, f13949; CHECK-POSTP8-NEXT: li r3, 40803950; CHECK-POSTP8-NEXT: stxsibx f0, 0, r33951; CHECK-POSTP8-NEXT: blr3952;3953; CHECK-P8-LABEL: st_cst_align16_float_uint8_t:3954; CHECK-P8: # %bb.0: # %entry3955; CHECK-P8-NEXT: xscvdpsxws f0, f13956; CHECK-P8-NEXT: mffprwz r3, f03957; CHECK-P8-NEXT: stb r3, 4080(0)3958; CHECK-P8-NEXT: blr3959entry:3960 %conv = fptoui float %str to i83961 store i8 %conv, ptr inttoptr (i64 4080 to ptr), align 163962 ret void3963}3964 3965; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3966define dso_local void @st_cst_align32_float_uint8_t(float %str) {3967; CHECK-P10-LABEL: st_cst_align32_float_uint8_t:3968; CHECK-P10: # %bb.0: # %entry3969; CHECK-P10-NEXT: xscvdpuxds f0, f13970; CHECK-P10-NEXT: pli r3, 99999003971; CHECK-P10-NEXT: stxsibx f0, 0, r33972; CHECK-P10-NEXT: blr3973;3974; CHECK-P9-LABEL: st_cst_align32_float_uint8_t:3975; CHECK-P9: # %bb.0: # %entry3976; CHECK-P9-NEXT: xscvdpuxds f0, f13977; CHECK-P9-NEXT: lis r3, 1523978; CHECK-P9-NEXT: ori r3, r3, 384283979; CHECK-P9-NEXT: stxsibx f0, 0, r33980; CHECK-P9-NEXT: blr3981;3982; CHECK-P8-LABEL: st_cst_align32_float_uint8_t:3983; CHECK-P8: # %bb.0: # %entry3984; CHECK-P8-NEXT: xscvdpsxws f0, f13985; CHECK-P8-NEXT: lis r4, 1533986; CHECK-P8-NEXT: mffprwz r3, f03987; CHECK-P8-NEXT: stb r3, -27108(r4)3988; CHECK-P8-NEXT: blr3989entry:3990 %conv = fptoui float %str to i83991 store i8 %conv, ptr inttoptr (i64 9999900 to ptr), align 43992 ret void3993}3994 3995; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly3996define dso_local void @st_cst_align64_float_uint8_t(float %str) {3997; CHECK-P10-LABEL: st_cst_align64_float_uint8_t:3998; CHECK-P10: # %bb.0: # %entry3999; CHECK-P10-NEXT: xscvdpuxds f0, f14000; CHECK-P10-NEXT: pli r3, 2441406254001; CHECK-P10-NEXT: rldic r3, r3, 12, 244002; CHECK-P10-NEXT: stxsibx f0, 0, r34003; CHECK-P10-NEXT: blr4004;4005; CHECK-P9-LABEL: st_cst_align64_float_uint8_t:4006; CHECK-P9: # %bb.0: # %entry4007; CHECK-P9-NEXT: xscvdpuxds f0, f14008; CHECK-P9-NEXT: lis r3, 37254009; CHECK-P9-NEXT: ori r3, r3, 190254010; CHECK-P9-NEXT: rldic r3, r3, 12, 244011; CHECK-P9-NEXT: stxsibx f0, 0, r34012; CHECK-P9-NEXT: blr4013;4014; CHECK-P8-LABEL: st_cst_align64_float_uint8_t:4015; CHECK-P8: # %bb.0: # %entry4016; CHECK-P8-NEXT: xscvdpsxws f0, f14017; CHECK-P8-NEXT: lis r4, 37254018; CHECK-P8-NEXT: ori r4, r4, 190254019; CHECK-P8-NEXT: rldic r4, r4, 12, 244020; CHECK-P8-NEXT: mffprwz r3, f04021; CHECK-P8-NEXT: stb r3, 0(r4)4022; CHECK-P8-NEXT: blr4023entry:4024 %conv = fptoui float %str to i84025 store i8 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40964026 ret void4027}4028 4029; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4030define dso_local void @st_0_float_int8_t(i64 %ptr, float %str) {4031; CHECK-POSTP8-LABEL: st_0_float_int8_t:4032; CHECK-POSTP8: # %bb.0: # %entry4033; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14034; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34035; CHECK-POSTP8-NEXT: blr4036;4037; CHECK-P8-LABEL: st_0_float_int8_t:4038; CHECK-P8: # %bb.0: # %entry4039; CHECK-P8-NEXT: xscvdpsxws f0, f14040; CHECK-P8-NEXT: mffprwz r4, f04041; CHECK-P8-NEXT: stb r4, 0(r3)4042; CHECK-P8-NEXT: blr4043entry:4044 %conv = fptosi float %str to i84045 %0 = inttoptr i64 %ptr to ptr4046 store i8 %conv, ptr %0, align 14047 ret void4048}4049 4050; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4051define dso_local void @st_align16_float_int8_t(ptr nocapture %ptr, float %str) {4052; CHECK-POSTP8-LABEL: st_align16_float_int8_t:4053; CHECK-POSTP8: # %bb.0: # %entry4054; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14055; CHECK-POSTP8-NEXT: addi r3, r3, 84056; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34057; CHECK-POSTP8-NEXT: blr4058;4059; CHECK-P8-LABEL: st_align16_float_int8_t:4060; CHECK-P8: # %bb.0: # %entry4061; CHECK-P8-NEXT: xscvdpsxws f0, f14062; CHECK-P8-NEXT: mffprwz r4, f04063; CHECK-P8-NEXT: stb r4, 8(r3)4064; CHECK-P8-NEXT: blr4065entry:4066 %conv = fptosi float %str to i84067 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84068 store i8 %conv, ptr %add.ptr, align 14069 ret void4070}4071 4072; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4073define dso_local void @st_align32_float_int8_t(ptr nocapture %ptr, float %str) {4074; CHECK-P10-LABEL: st_align32_float_int8_t:4075; CHECK-P10: # %bb.0: # %entry4076; CHECK-P10-NEXT: xscvdpsxds f0, f14077; CHECK-P10-NEXT: pli r4, 999990004078; CHECK-P10-NEXT: stxsibx f0, r3, r44079; CHECK-P10-NEXT: blr4080;4081; CHECK-P9-LABEL: st_align32_float_int8_t:4082; CHECK-P9: # %bb.0: # %entry4083; CHECK-P9-NEXT: xscvdpsxds f0, f14084; CHECK-P9-NEXT: lis r4, 15254085; CHECK-P9-NEXT: ori r4, r4, 566004086; CHECK-P9-NEXT: stxsibx f0, r3, r44087; CHECK-P9-NEXT: blr4088;4089; CHECK-P8-LABEL: st_align32_float_int8_t:4090; CHECK-P8: # %bb.0: # %entry4091; CHECK-P8-NEXT: xscvdpsxws f0, f14092; CHECK-P8-NEXT: lis r5, 15254093; CHECK-P8-NEXT: ori r5, r5, 566004094; CHECK-P8-NEXT: mffprwz r4, f04095; CHECK-P8-NEXT: stbx r4, r3, r54096; CHECK-P8-NEXT: blr4097entry:4098 %conv = fptosi float %str to i84099 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004100 store i8 %conv, ptr %add.ptr, align 14101 ret void4102}4103 4104; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4105define dso_local void @st_align64_float_int8_t(ptr nocapture %ptr, float %str) {4106; CHECK-P10-LABEL: st_align64_float_int8_t:4107; CHECK-P10: # %bb.0: # %entry4108; CHECK-P10-NEXT: xscvdpsxds f0, f14109; CHECK-P10-NEXT: pli r4, 2441406254110; CHECK-P10-NEXT: rldic r4, r4, 12, 244111; CHECK-P10-NEXT: stxsibx f0, r3, r44112; CHECK-P10-NEXT: blr4113;4114; CHECK-P9-LABEL: st_align64_float_int8_t:4115; CHECK-P9: # %bb.0: # %entry4116; CHECK-P9-NEXT: xscvdpsxds f0, f14117; CHECK-P9-NEXT: lis r4, 37254118; CHECK-P9-NEXT: ori r4, r4, 190254119; CHECK-P9-NEXT: rldic r4, r4, 12, 244120; CHECK-P9-NEXT: stxsibx f0, r3, r44121; CHECK-P9-NEXT: blr4122;4123; CHECK-P8-LABEL: st_align64_float_int8_t:4124; CHECK-P8: # %bb.0: # %entry4125; CHECK-P8-NEXT: xscvdpsxws f0, f14126; CHECK-P8-NEXT: lis r5, 37254127; CHECK-P8-NEXT: ori r5, r5, 190254128; CHECK-P8-NEXT: rldic r5, r5, 12, 244129; CHECK-P8-NEXT: mffprwz r4, f04130; CHECK-P8-NEXT: stbx r4, r3, r54131; CHECK-P8-NEXT: blr4132entry:4133 %conv = fptosi float %str to i84134 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004135 store i8 %conv, ptr %add.ptr, align 14136 ret void4137}4138 4139; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4140define dso_local void @st_reg_float_int8_t(ptr nocapture %ptr, i64 %off, float %str) {4141; CHECK-POSTP8-LABEL: st_reg_float_int8_t:4142; CHECK-POSTP8: # %bb.0: # %entry4143; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14144; CHECK-POSTP8-NEXT: stxsibx f0, r3, r44145; CHECK-POSTP8-NEXT: blr4146;4147; CHECK-P8-LABEL: st_reg_float_int8_t:4148; CHECK-P8: # %bb.0: # %entry4149; CHECK-P8-NEXT: xscvdpsxws f0, f14150; CHECK-P8-NEXT: mffprwz r5, f04151; CHECK-P8-NEXT: stbx r5, r3, r44152; CHECK-P8-NEXT: blr4153entry:4154 %conv = fptosi float %str to i84155 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4156 store i8 %conv, ptr %add.ptr, align 14157 ret void4158}4159 4160; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4161define dso_local void @st_or1_float_int8_t(i64 %ptr, i8 zeroext %off, float %str) {4162; CHECK-POSTP8-LABEL: st_or1_float_int8_t:4163; CHECK-POSTP8: # %bb.0: # %entry4164; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14165; CHECK-POSTP8-NEXT: or r3, r4, r34166; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34167; CHECK-POSTP8-NEXT: blr4168;4169; CHECK-P8-LABEL: st_or1_float_int8_t:4170; CHECK-P8: # %bb.0: # %entry4171; CHECK-P8-NEXT: xscvdpsxws f0, f14172; CHECK-P8-NEXT: or r3, r4, r34173; CHECK-P8-NEXT: mffprwz r5, f04174; CHECK-P8-NEXT: stb r5, 0(r3)4175; CHECK-P8-NEXT: blr4176entry:4177 %conv = fptosi float %str to i84178 %conv1 = zext i8 %off to i644179 %or = or i64 %conv1, %ptr4180 %0 = inttoptr i64 %or to ptr4181 store i8 %conv, ptr %0, align 14182 ret void4183}4184 4185; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4186define dso_local void @st_not_disjoint16_float_int8_t(i64 %ptr, float %str) {4187; CHECK-POSTP8-LABEL: st_not_disjoint16_float_int8_t:4188; CHECK-POSTP8: # %bb.0: # %entry4189; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14190; CHECK-POSTP8-NEXT: ori r3, r3, 64191; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34192; CHECK-POSTP8-NEXT: blr4193;4194; CHECK-P8-LABEL: st_not_disjoint16_float_int8_t:4195; CHECK-P8: # %bb.0: # %entry4196; CHECK-P8-NEXT: xscvdpsxws f0, f14197; CHECK-P8-NEXT: ori r3, r3, 64198; CHECK-P8-NEXT: mffprwz r4, f04199; CHECK-P8-NEXT: stb r4, 0(r3)4200; CHECK-P8-NEXT: blr4201entry:4202 %conv = fptosi float %str to i84203 %or = or i64 %ptr, 64204 %0 = inttoptr i64 %or to ptr4205 store i8 %conv, ptr %0, align 14206 ret void4207}4208 4209; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4210define dso_local void @st_disjoint_align16_float_int8_t(i64 %ptr, float %str) {4211; CHECK-POSTP8-LABEL: st_disjoint_align16_float_int8_t:4212; CHECK-POSTP8: # %bb.0: # %entry4213; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14214; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 514215; CHECK-POSTP8-NEXT: ori r3, r3, 244216; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34217; CHECK-POSTP8-NEXT: blr4218;4219; CHECK-P8-LABEL: st_disjoint_align16_float_int8_t:4220; CHECK-P8: # %bb.0: # %entry4221; CHECK-P8-NEXT: xscvdpsxws f0, f14222; CHECK-P8-NEXT: rldicr r3, r3, 0, 514223; CHECK-P8-NEXT: mffprwz r4, f04224; CHECK-P8-NEXT: stb r4, 24(r3)4225; CHECK-P8-NEXT: blr4226entry:4227 %and = and i64 %ptr, -40964228 %conv = fptosi float %str to i84229 %or = or i64 %and, 244230 %0 = inttoptr i64 %or to ptr4231 store i8 %conv, ptr %0, align 84232 ret void4233}4234 4235; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4236define dso_local void @st_not_disjoint32_float_int8_t(i64 %ptr, float %str) {4237; CHECK-POSTP8-LABEL: st_not_disjoint32_float_int8_t:4238; CHECK-POSTP8: # %bb.0: # %entry4239; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14240; CHECK-POSTP8-NEXT: ori r3, r3, 344634241; CHECK-POSTP8-NEXT: oris r3, r3, 14242; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34243; CHECK-POSTP8-NEXT: blr4244;4245; CHECK-P8-LABEL: st_not_disjoint32_float_int8_t:4246; CHECK-P8: # %bb.0: # %entry4247; CHECK-P8-NEXT: xscvdpsxws f0, f14248; CHECK-P8-NEXT: ori r3, r3, 344634249; CHECK-P8-NEXT: oris r3, r3, 14250; CHECK-P8-NEXT: mffprwz r4, f04251; CHECK-P8-NEXT: stb r4, 0(r3)4252; CHECK-P8-NEXT: blr4253entry:4254 %conv = fptosi float %str to i84255 %or = or i64 %ptr, 999994256 %0 = inttoptr i64 %or to ptr4257 store i8 %conv, ptr %0, align 14258 ret void4259}4260 4261; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4262define dso_local void @st_disjoint_align32_float_int8_t(i64 %ptr, float %str) {4263; CHECK-P10-LABEL: st_disjoint_align32_float_int8_t:4264; CHECK-P10: # %bb.0: # %entry4265; CHECK-P10-NEXT: xscvdpsxds f0, f14266; CHECK-P10-NEXT: lis r4, -152644267; CHECK-P10-NEXT: and r3, r3, r44268; CHECK-P10-NEXT: pli r4, 9999900004269; CHECK-P10-NEXT: stxsibx f0, r3, r44270; CHECK-P10-NEXT: blr4271;4272; CHECK-P9-LABEL: st_disjoint_align32_float_int8_t:4273; CHECK-P9: # %bb.0: # %entry4274; CHECK-P9-NEXT: xscvdpsxds f0, f14275; CHECK-P9-NEXT: lis r4, -152644276; CHECK-P9-NEXT: and r3, r3, r44277; CHECK-P9-NEXT: lis r4, 152584278; CHECK-P9-NEXT: ori r4, r4, 417124279; CHECK-P9-NEXT: stxsibx f0, r3, r44280; CHECK-P9-NEXT: blr4281;4282; CHECK-P8-LABEL: st_disjoint_align32_float_int8_t:4283; CHECK-P8: # %bb.0: # %entry4284; CHECK-P8-NEXT: xscvdpsxws f0, f14285; CHECK-P8-NEXT: lis r4, -152644286; CHECK-P8-NEXT: lis r5, 152584287; CHECK-P8-NEXT: and r3, r3, r44288; CHECK-P8-NEXT: ori r5, r5, 417124289; CHECK-P8-NEXT: mffprwz r4, f04290; CHECK-P8-NEXT: stbx r4, r3, r54291; CHECK-P8-NEXT: blr4292entry:4293 %and = and i64 %ptr, -10003415044294 %conv = fptosi float %str to i84295 %or = or i64 %and, 9999900004296 %0 = inttoptr i64 %or to ptr4297 store i8 %conv, ptr %0, align 164298 ret void4299}4300 4301; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4302define dso_local void @st_not_disjoint64_float_int8_t(i64 %ptr, float %str) {4303; CHECK-P10-LABEL: st_not_disjoint64_float_int8_t:4304; CHECK-P10: # %bb.0: # %entry4305; CHECK-P10-NEXT: xscvdpsxds f0, f14306; CHECK-P10-NEXT: pli r4, 2324307; CHECK-P10-NEXT: pli r5, 35675873294308; CHECK-P10-NEXT: rldimi r5, r4, 32, 04309; CHECK-P10-NEXT: or r3, r3, r54310; CHECK-P10-NEXT: stxsibx f0, 0, r34311; CHECK-P10-NEXT: blr4312;4313; CHECK-P9-LABEL: st_not_disjoint64_float_int8_t:4314; CHECK-P9: # %bb.0: # %entry4315; CHECK-P9-NEXT: li r4, 294316; CHECK-P9-NEXT: xscvdpsxds f0, f14317; CHECK-P9-NEXT: rldic r4, r4, 35, 244318; CHECK-P9-NEXT: oris r4, r4, 544374319; CHECK-P9-NEXT: ori r4, r4, 40974320; CHECK-P9-NEXT: or r3, r3, r44321; CHECK-P9-NEXT: stxsibx f0, 0, r34322; CHECK-P9-NEXT: blr4323;4324; CHECK-P8-LABEL: st_not_disjoint64_float_int8_t:4325; CHECK-P8: # %bb.0: # %entry4326; CHECK-P8-NEXT: xscvdpsxws f0, f14327; CHECK-P8-NEXT: li r5, 294328; CHECK-P8-NEXT: rldic r5, r5, 35, 244329; CHECK-P8-NEXT: oris r5, r5, 544374330; CHECK-P8-NEXT: mffprwz r4, f04331; CHECK-P8-NEXT: ori r5, r5, 40974332; CHECK-P8-NEXT: or r3, r3, r54333; CHECK-P8-NEXT: stb r4, 0(r3)4334; CHECK-P8-NEXT: blr4335entry:4336 %conv = fptosi float %str to i84337 %or = or i64 %ptr, 10000000000014338 %0 = inttoptr i64 %or to ptr4339 store i8 %conv, ptr %0, align 14340 ret void4341}4342 4343; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4344define dso_local void @st_disjoint_align64_float_int8_t(i64 %ptr, float %str) {4345; CHECK-P10-LABEL: st_disjoint_align64_float_int8_t:4346; CHECK-P10: # %bb.0: # %entry4347; CHECK-P10-NEXT: xscvdpsxds f0, f14348; CHECK-P10-NEXT: pli r4, 2441406254349; CHECK-P10-NEXT: rldicr r3, r3, 0, 234350; CHECK-P10-NEXT: rldic r4, r4, 12, 244351; CHECK-P10-NEXT: stxsibx f0, r3, r44352; CHECK-P10-NEXT: blr4353;4354; CHECK-P9-LABEL: st_disjoint_align64_float_int8_t:4355; CHECK-P9: # %bb.0: # %entry4356; CHECK-P9-NEXT: xscvdpsxds f0, f14357; CHECK-P9-NEXT: lis r4, 37254358; CHECK-P9-NEXT: rldicr r3, r3, 0, 234359; CHECK-P9-NEXT: ori r4, r4, 190254360; CHECK-P9-NEXT: rldic r4, r4, 12, 244361; CHECK-P9-NEXT: stxsibx f0, r3, r44362; CHECK-P9-NEXT: blr4363;4364; CHECK-P8-LABEL: st_disjoint_align64_float_int8_t:4365; CHECK-P8: # %bb.0: # %entry4366; CHECK-P8-NEXT: xscvdpsxws f0, f14367; CHECK-P8-NEXT: lis r5, 37254368; CHECK-P8-NEXT: rldicr r3, r3, 0, 234369; CHECK-P8-NEXT: ori r5, r5, 190254370; CHECK-P8-NEXT: rldic r5, r5, 12, 244371; CHECK-P8-NEXT: mffprwz r4, f04372; CHECK-P8-NEXT: stbx r4, r3, r54373; CHECK-P8-NEXT: blr4374entry:4375 %and = and i64 %ptr, -10995116277764376 %conv = fptosi float %str to i84377 %or = or i64 %and, 10000000000004378 %0 = inttoptr i64 %or to ptr4379 store i8 %conv, ptr %0, align 40964380 ret void4381}4382 4383; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4384define dso_local void @st_cst_align16_float_int8_t(float %str) {4385; CHECK-POSTP8-LABEL: st_cst_align16_float_int8_t:4386; CHECK-POSTP8: # %bb.0: # %entry4387; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14388; CHECK-POSTP8-NEXT: li r3, 40804389; CHECK-POSTP8-NEXT: stxsibx f0, 0, r34390; CHECK-POSTP8-NEXT: blr4391;4392; CHECK-P8-LABEL: st_cst_align16_float_int8_t:4393; CHECK-P8: # %bb.0: # %entry4394; CHECK-P8-NEXT: xscvdpsxws f0, f14395; CHECK-P8-NEXT: mffprwz r3, f04396; CHECK-P8-NEXT: stb r3, 4080(0)4397; CHECK-P8-NEXT: blr4398entry:4399 %conv = fptosi float %str to i84400 store i8 %conv, ptr inttoptr (i64 4080 to ptr), align 164401 ret void4402}4403 4404; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4405define dso_local void @st_cst_align32_float_int8_t(float %str) {4406; CHECK-P10-LABEL: st_cst_align32_float_int8_t:4407; CHECK-P10: # %bb.0: # %entry4408; CHECK-P10-NEXT: xscvdpsxds f0, f14409; CHECK-P10-NEXT: pli r3, 99999004410; CHECK-P10-NEXT: stxsibx f0, 0, r34411; CHECK-P10-NEXT: blr4412;4413; CHECK-P9-LABEL: st_cst_align32_float_int8_t:4414; CHECK-P9: # %bb.0: # %entry4415; CHECK-P9-NEXT: xscvdpsxds f0, f14416; CHECK-P9-NEXT: lis r3, 1524417; CHECK-P9-NEXT: ori r3, r3, 384284418; CHECK-P9-NEXT: stxsibx f0, 0, r34419; CHECK-P9-NEXT: blr4420;4421; CHECK-P8-LABEL: st_cst_align32_float_int8_t:4422; CHECK-P8: # %bb.0: # %entry4423; CHECK-P8-NEXT: xscvdpsxws f0, f14424; CHECK-P8-NEXT: lis r4, 1534425; CHECK-P8-NEXT: mffprwz r3, f04426; CHECK-P8-NEXT: stb r3, -27108(r4)4427; CHECK-P8-NEXT: blr4428entry:4429 %conv = fptosi float %str to i84430 store i8 %conv, ptr inttoptr (i64 9999900 to ptr), align 44431 ret void4432}4433 4434; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4435define dso_local void @st_cst_align64_float_int8_t(float %str) {4436; CHECK-P10-LABEL: st_cst_align64_float_int8_t:4437; CHECK-P10: # %bb.0: # %entry4438; CHECK-P10-NEXT: xscvdpsxds f0, f14439; CHECK-P10-NEXT: pli r3, 2441406254440; CHECK-P10-NEXT: rldic r3, r3, 12, 244441; CHECK-P10-NEXT: stxsibx f0, 0, r34442; CHECK-P10-NEXT: blr4443;4444; CHECK-P9-LABEL: st_cst_align64_float_int8_t:4445; CHECK-P9: # %bb.0: # %entry4446; CHECK-P9-NEXT: xscvdpsxds f0, f14447; CHECK-P9-NEXT: lis r3, 37254448; CHECK-P9-NEXT: ori r3, r3, 190254449; CHECK-P9-NEXT: rldic r3, r3, 12, 244450; CHECK-P9-NEXT: stxsibx f0, 0, r34451; CHECK-P9-NEXT: blr4452;4453; CHECK-P8-LABEL: st_cst_align64_float_int8_t:4454; CHECK-P8: # %bb.0: # %entry4455; CHECK-P8-NEXT: xscvdpsxws f0, f14456; CHECK-P8-NEXT: lis r4, 37254457; CHECK-P8-NEXT: ori r4, r4, 190254458; CHECK-P8-NEXT: rldic r4, r4, 12, 244459; CHECK-P8-NEXT: mffprwz r3, f04460; CHECK-P8-NEXT: stb r3, 0(r4)4461; CHECK-P8-NEXT: blr4462entry:4463 %conv = fptosi float %str to i84464 store i8 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40964465 ret void4466}4467 4468; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4469define dso_local void @st_0_float_uint16_t(i64 %ptr, float %str) {4470; CHECK-POSTP8-LABEL: st_0_float_uint16_t:4471; CHECK-POSTP8: # %bb.0: # %entry4472; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14473; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34474; CHECK-POSTP8-NEXT: blr4475;4476; CHECK-P8-LABEL: st_0_float_uint16_t:4477; CHECK-P8: # %bb.0: # %entry4478; CHECK-P8-NEXT: xscvdpsxws f0, f14479; CHECK-P8-NEXT: mffprwz r4, f04480; CHECK-P8-NEXT: sth r4, 0(r3)4481; CHECK-P8-NEXT: blr4482entry:4483 %conv = fptoui float %str to i164484 %0 = inttoptr i64 %ptr to ptr4485 store i16 %conv, ptr %0, align 24486 ret void4487}4488 4489; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4490define dso_local void @st_align16_float_uint16_t(ptr nocapture %ptr, float %str) {4491; CHECK-POSTP8-LABEL: st_align16_float_uint16_t:4492; CHECK-POSTP8: # %bb.0: # %entry4493; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14494; CHECK-POSTP8-NEXT: addi r3, r3, 84495; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34496; CHECK-POSTP8-NEXT: blr4497;4498; CHECK-P8-LABEL: st_align16_float_uint16_t:4499; CHECK-P8: # %bb.0: # %entry4500; CHECK-P8-NEXT: xscvdpsxws f0, f14501; CHECK-P8-NEXT: mffprwz r4, f04502; CHECK-P8-NEXT: sth r4, 8(r3)4503; CHECK-P8-NEXT: blr4504entry:4505 %conv = fptoui float %str to i164506 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84507 store i16 %conv, ptr %add.ptr, align 24508 ret void4509}4510 4511; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4512define dso_local void @st_align32_float_uint16_t(ptr nocapture %ptr, float %str) {4513; CHECK-P10-LABEL: st_align32_float_uint16_t:4514; CHECK-P10: # %bb.0: # %entry4515; CHECK-P10-NEXT: xscvdpuxds f0, f14516; CHECK-P10-NEXT: pli r4, 999990004517; CHECK-P10-NEXT: stxsihx f0, r3, r44518; CHECK-P10-NEXT: blr4519;4520; CHECK-P9-LABEL: st_align32_float_uint16_t:4521; CHECK-P9: # %bb.0: # %entry4522; CHECK-P9-NEXT: xscvdpuxds f0, f14523; CHECK-P9-NEXT: lis r4, 15254524; CHECK-P9-NEXT: ori r4, r4, 566004525; CHECK-P9-NEXT: stxsihx f0, r3, r44526; CHECK-P9-NEXT: blr4527;4528; CHECK-P8-LABEL: st_align32_float_uint16_t:4529; CHECK-P8: # %bb.0: # %entry4530; CHECK-P8-NEXT: xscvdpsxws f0, f14531; CHECK-P8-NEXT: lis r5, 15254532; CHECK-P8-NEXT: ori r5, r5, 566004533; CHECK-P8-NEXT: mffprwz r4, f04534; CHECK-P8-NEXT: sthx r4, r3, r54535; CHECK-P8-NEXT: blr4536entry:4537 %conv = fptoui float %str to i164538 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004539 store i16 %conv, ptr %add.ptr, align 24540 ret void4541}4542 4543; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4544define dso_local void @st_align64_float_uint16_t(ptr nocapture %ptr, float %str) {4545; CHECK-P10-LABEL: st_align64_float_uint16_t:4546; CHECK-P10: # %bb.0: # %entry4547; CHECK-P10-NEXT: xscvdpuxds f0, f14548; CHECK-P10-NEXT: pli r4, 2441406254549; CHECK-P10-NEXT: rldic r4, r4, 12, 244550; CHECK-P10-NEXT: stxsihx f0, r3, r44551; CHECK-P10-NEXT: blr4552;4553; CHECK-P9-LABEL: st_align64_float_uint16_t:4554; CHECK-P9: # %bb.0: # %entry4555; CHECK-P9-NEXT: xscvdpuxds f0, f14556; CHECK-P9-NEXT: lis r4, 37254557; CHECK-P9-NEXT: ori r4, r4, 190254558; CHECK-P9-NEXT: rldic r4, r4, 12, 244559; CHECK-P9-NEXT: stxsihx f0, r3, r44560; CHECK-P9-NEXT: blr4561;4562; CHECK-P8-LABEL: st_align64_float_uint16_t:4563; CHECK-P8: # %bb.0: # %entry4564; CHECK-P8-NEXT: xscvdpsxws f0, f14565; CHECK-P8-NEXT: lis r5, 37254566; CHECK-P8-NEXT: ori r5, r5, 190254567; CHECK-P8-NEXT: rldic r5, r5, 12, 244568; CHECK-P8-NEXT: mffprwz r4, f04569; CHECK-P8-NEXT: sthx r4, r3, r54570; CHECK-P8-NEXT: blr4571entry:4572 %conv = fptoui float %str to i164573 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000004574 store i16 %conv, ptr %add.ptr, align 24575 ret void4576}4577 4578; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4579define dso_local void @st_reg_float_uint16_t(ptr nocapture %ptr, i64 %off, float %str) {4580; CHECK-POSTP8-LABEL: st_reg_float_uint16_t:4581; CHECK-POSTP8: # %bb.0: # %entry4582; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14583; CHECK-POSTP8-NEXT: stxsihx f0, r3, r44584; CHECK-POSTP8-NEXT: blr4585;4586; CHECK-P8-LABEL: st_reg_float_uint16_t:4587; CHECK-P8: # %bb.0: # %entry4588; CHECK-P8-NEXT: xscvdpsxws f0, f14589; CHECK-P8-NEXT: mffprwz r5, f04590; CHECK-P8-NEXT: sthx r5, r3, r44591; CHECK-P8-NEXT: blr4592entry:4593 %conv = fptoui float %str to i164594 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off4595 store i16 %conv, ptr %add.ptr, align 24596 ret void4597}4598 4599; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4600define dso_local void @st_or1_float_uint16_t(i64 %ptr, i8 zeroext %off, float %str) {4601; CHECK-POSTP8-LABEL: st_or1_float_uint16_t:4602; CHECK-POSTP8: # %bb.0: # %entry4603; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14604; CHECK-POSTP8-NEXT: or r3, r4, r34605; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34606; CHECK-POSTP8-NEXT: blr4607;4608; CHECK-P8-LABEL: st_or1_float_uint16_t:4609; CHECK-P8: # %bb.0: # %entry4610; CHECK-P8-NEXT: xscvdpsxws f0, f14611; CHECK-P8-NEXT: or r3, r4, r34612; CHECK-P8-NEXT: mffprwz r5, f04613; CHECK-P8-NEXT: sth r5, 0(r3)4614; CHECK-P8-NEXT: blr4615entry:4616 %conv = fptoui float %str to i164617 %conv1 = zext i8 %off to i644618 %or = or i64 %conv1, %ptr4619 %0 = inttoptr i64 %or to ptr4620 store i16 %conv, ptr %0, align 24621 ret void4622}4623 4624; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4625define dso_local void @st_not_disjoint16_float_uint16_t(i64 %ptr, float %str) {4626; CHECK-POSTP8-LABEL: st_not_disjoint16_float_uint16_t:4627; CHECK-POSTP8: # %bb.0: # %entry4628; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14629; CHECK-POSTP8-NEXT: ori r3, r3, 64630; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34631; CHECK-POSTP8-NEXT: blr4632;4633; CHECK-P8-LABEL: st_not_disjoint16_float_uint16_t:4634; CHECK-P8: # %bb.0: # %entry4635; CHECK-P8-NEXT: xscvdpsxws f0, f14636; CHECK-P8-NEXT: ori r3, r3, 64637; CHECK-P8-NEXT: mffprwz r4, f04638; CHECK-P8-NEXT: sth r4, 0(r3)4639; CHECK-P8-NEXT: blr4640entry:4641 %conv = fptoui float %str to i164642 %or = or i64 %ptr, 64643 %0 = inttoptr i64 %or to ptr4644 store i16 %conv, ptr %0, align 24645 ret void4646}4647 4648; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4649define dso_local void @st_disjoint_align16_float_uint16_t(i64 %ptr, float %str) {4650; CHECK-POSTP8-LABEL: st_disjoint_align16_float_uint16_t:4651; CHECK-POSTP8: # %bb.0: # %entry4652; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14653; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 514654; CHECK-POSTP8-NEXT: ori r3, r3, 244655; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34656; CHECK-POSTP8-NEXT: blr4657;4658; CHECK-P8-LABEL: st_disjoint_align16_float_uint16_t:4659; CHECK-P8: # %bb.0: # %entry4660; CHECK-P8-NEXT: xscvdpsxws f0, f14661; CHECK-P8-NEXT: rldicr r3, r3, 0, 514662; CHECK-P8-NEXT: mffprwz r4, f04663; CHECK-P8-NEXT: sth r4, 24(r3)4664; CHECK-P8-NEXT: blr4665entry:4666 %and = and i64 %ptr, -40964667 %conv = fptoui float %str to i164668 %or = or i64 %and, 244669 %0 = inttoptr i64 %or to ptr4670 store i16 %conv, ptr %0, align 84671 ret void4672}4673 4674; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4675define dso_local void @st_not_disjoint32_float_uint16_t(i64 %ptr, float %str) {4676; CHECK-POSTP8-LABEL: st_not_disjoint32_float_uint16_t:4677; CHECK-POSTP8: # %bb.0: # %entry4678; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14679; CHECK-POSTP8-NEXT: ori r3, r3, 344634680; CHECK-POSTP8-NEXT: oris r3, r3, 14681; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34682; CHECK-POSTP8-NEXT: blr4683;4684; CHECK-P8-LABEL: st_not_disjoint32_float_uint16_t:4685; CHECK-P8: # %bb.0: # %entry4686; CHECK-P8-NEXT: xscvdpsxws f0, f14687; CHECK-P8-NEXT: ori r3, r3, 344634688; CHECK-P8-NEXT: oris r3, r3, 14689; CHECK-P8-NEXT: mffprwz r4, f04690; CHECK-P8-NEXT: sth r4, 0(r3)4691; CHECK-P8-NEXT: blr4692entry:4693 %conv = fptoui float %str to i164694 %or = or i64 %ptr, 999994695 %0 = inttoptr i64 %or to ptr4696 store i16 %conv, ptr %0, align 24697 ret void4698}4699 4700; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4701define dso_local void @st_disjoint_align32_float_uint16_t(i64 %ptr, float %str) {4702; CHECK-P10-LABEL: st_disjoint_align32_float_uint16_t:4703; CHECK-P10: # %bb.0: # %entry4704; CHECK-P10-NEXT: xscvdpuxds f0, f14705; CHECK-P10-NEXT: lis r4, -152644706; CHECK-P10-NEXT: and r3, r3, r44707; CHECK-P10-NEXT: pli r4, 9999900004708; CHECK-P10-NEXT: stxsihx f0, r3, r44709; CHECK-P10-NEXT: blr4710;4711; CHECK-P9-LABEL: st_disjoint_align32_float_uint16_t:4712; CHECK-P9: # %bb.0: # %entry4713; CHECK-P9-NEXT: xscvdpuxds f0, f14714; CHECK-P9-NEXT: lis r4, -152644715; CHECK-P9-NEXT: and r3, r3, r44716; CHECK-P9-NEXT: lis r4, 152584717; CHECK-P9-NEXT: ori r4, r4, 417124718; CHECK-P9-NEXT: stxsihx f0, r3, r44719; CHECK-P9-NEXT: blr4720;4721; CHECK-P8-LABEL: st_disjoint_align32_float_uint16_t:4722; CHECK-P8: # %bb.0: # %entry4723; CHECK-P8-NEXT: xscvdpsxws f0, f14724; CHECK-P8-NEXT: lis r4, -152644725; CHECK-P8-NEXT: lis r5, 152584726; CHECK-P8-NEXT: and r3, r3, r44727; CHECK-P8-NEXT: ori r5, r5, 417124728; CHECK-P8-NEXT: mffprwz r4, f04729; CHECK-P8-NEXT: sthx r4, r3, r54730; CHECK-P8-NEXT: blr4731entry:4732 %and = and i64 %ptr, -10003415044733 %conv = fptoui float %str to i164734 %or = or i64 %and, 9999900004735 %0 = inttoptr i64 %or to ptr4736 store i16 %conv, ptr %0, align 164737 ret void4738}4739 4740; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4741define dso_local void @st_not_disjoint64_float_uint16_t(i64 %ptr, float %str) {4742; CHECK-P10-LABEL: st_not_disjoint64_float_uint16_t:4743; CHECK-P10: # %bb.0: # %entry4744; CHECK-P10-NEXT: xscvdpuxds f0, f14745; CHECK-P10-NEXT: pli r4, 2324746; CHECK-P10-NEXT: pli r5, 35675873294747; CHECK-P10-NEXT: rldimi r5, r4, 32, 04748; CHECK-P10-NEXT: or r3, r3, r54749; CHECK-P10-NEXT: stxsihx f0, 0, r34750; CHECK-P10-NEXT: blr4751;4752; CHECK-P9-LABEL: st_not_disjoint64_float_uint16_t:4753; CHECK-P9: # %bb.0: # %entry4754; CHECK-P9-NEXT: li r4, 294755; CHECK-P9-NEXT: xscvdpuxds f0, f14756; CHECK-P9-NEXT: rldic r4, r4, 35, 244757; CHECK-P9-NEXT: oris r4, r4, 544374758; CHECK-P9-NEXT: ori r4, r4, 40974759; CHECK-P9-NEXT: or r3, r3, r44760; CHECK-P9-NEXT: stxsihx f0, 0, r34761; CHECK-P9-NEXT: blr4762;4763; CHECK-P8-LABEL: st_not_disjoint64_float_uint16_t:4764; CHECK-P8: # %bb.0: # %entry4765; CHECK-P8-NEXT: xscvdpsxws f0, f14766; CHECK-P8-NEXT: li r5, 294767; CHECK-P8-NEXT: rldic r5, r5, 35, 244768; CHECK-P8-NEXT: oris r5, r5, 544374769; CHECK-P8-NEXT: mffprwz r4, f04770; CHECK-P8-NEXT: ori r5, r5, 40974771; CHECK-P8-NEXT: or r3, r3, r54772; CHECK-P8-NEXT: sth r4, 0(r3)4773; CHECK-P8-NEXT: blr4774entry:4775 %conv = fptoui float %str to i164776 %or = or i64 %ptr, 10000000000014777 %0 = inttoptr i64 %or to ptr4778 store i16 %conv, ptr %0, align 24779 ret void4780}4781 4782; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4783define dso_local void @st_disjoint_align64_float_uint16_t(i64 %ptr, float %str) {4784; CHECK-P10-LABEL: st_disjoint_align64_float_uint16_t:4785; CHECK-P10: # %bb.0: # %entry4786; CHECK-P10-NEXT: xscvdpuxds f0, f14787; CHECK-P10-NEXT: pli r4, 2441406254788; CHECK-P10-NEXT: rldicr r3, r3, 0, 234789; CHECK-P10-NEXT: rldic r4, r4, 12, 244790; CHECK-P10-NEXT: stxsihx f0, r3, r44791; CHECK-P10-NEXT: blr4792;4793; CHECK-P9-LABEL: st_disjoint_align64_float_uint16_t:4794; CHECK-P9: # %bb.0: # %entry4795; CHECK-P9-NEXT: xscvdpuxds f0, f14796; CHECK-P9-NEXT: lis r4, 37254797; CHECK-P9-NEXT: rldicr r3, r3, 0, 234798; CHECK-P9-NEXT: ori r4, r4, 190254799; CHECK-P9-NEXT: rldic r4, r4, 12, 244800; CHECK-P9-NEXT: stxsihx f0, r3, r44801; CHECK-P9-NEXT: blr4802;4803; CHECK-P8-LABEL: st_disjoint_align64_float_uint16_t:4804; CHECK-P8: # %bb.0: # %entry4805; CHECK-P8-NEXT: xscvdpsxws f0, f14806; CHECK-P8-NEXT: lis r5, 37254807; CHECK-P8-NEXT: rldicr r3, r3, 0, 234808; CHECK-P8-NEXT: ori r5, r5, 190254809; CHECK-P8-NEXT: rldic r5, r5, 12, 244810; CHECK-P8-NEXT: mffprwz r4, f04811; CHECK-P8-NEXT: sthx r4, r3, r54812; CHECK-P8-NEXT: blr4813entry:4814 %and = and i64 %ptr, -10995116277764815 %conv = fptoui float %str to i164816 %or = or i64 %and, 10000000000004817 %0 = inttoptr i64 %or to ptr4818 store i16 %conv, ptr %0, align 40964819 ret void4820}4821 4822; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4823define dso_local void @st_cst_align16_float_uint16_t(float %str) {4824; CHECK-POSTP8-LABEL: st_cst_align16_float_uint16_t:4825; CHECK-POSTP8: # %bb.0: # %entry4826; CHECK-POSTP8-NEXT: xscvdpuxds f0, f14827; CHECK-POSTP8-NEXT: li r3, 40804828; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34829; CHECK-POSTP8-NEXT: blr4830;4831; CHECK-P8-LABEL: st_cst_align16_float_uint16_t:4832; CHECK-P8: # %bb.0: # %entry4833; CHECK-P8-NEXT: xscvdpsxws f0, f14834; CHECK-P8-NEXT: mffprwz r3, f04835; CHECK-P8-NEXT: sth r3, 4080(0)4836; CHECK-P8-NEXT: blr4837entry:4838 %conv = fptoui float %str to i164839 store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 164840 ret void4841}4842 4843; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4844define dso_local void @st_cst_align32_float_uint16_t(float %str) {4845; CHECK-P10-LABEL: st_cst_align32_float_uint16_t:4846; CHECK-P10: # %bb.0: # %entry4847; CHECK-P10-NEXT: xscvdpuxds f0, f14848; CHECK-P10-NEXT: pli r3, 99999004849; CHECK-P10-NEXT: stxsihx f0, 0, r34850; CHECK-P10-NEXT: blr4851;4852; CHECK-P9-LABEL: st_cst_align32_float_uint16_t:4853; CHECK-P9: # %bb.0: # %entry4854; CHECK-P9-NEXT: xscvdpuxds f0, f14855; CHECK-P9-NEXT: lis r3, 1524856; CHECK-P9-NEXT: ori r3, r3, 384284857; CHECK-P9-NEXT: stxsihx f0, 0, r34858; CHECK-P9-NEXT: blr4859;4860; CHECK-P8-LABEL: st_cst_align32_float_uint16_t:4861; CHECK-P8: # %bb.0: # %entry4862; CHECK-P8-NEXT: xscvdpsxws f0, f14863; CHECK-P8-NEXT: lis r4, 1534864; CHECK-P8-NEXT: mffprwz r3, f04865; CHECK-P8-NEXT: sth r3, -27108(r4)4866; CHECK-P8-NEXT: blr4867entry:4868 %conv = fptoui float %str to i164869 store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 44870 ret void4871}4872 4873; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4874define dso_local void @st_cst_align64_float_uint16_t(float %str) {4875; CHECK-P10-LABEL: st_cst_align64_float_uint16_t:4876; CHECK-P10: # %bb.0: # %entry4877; CHECK-P10-NEXT: xscvdpuxds f0, f14878; CHECK-P10-NEXT: pli r3, 2441406254879; CHECK-P10-NEXT: rldic r3, r3, 12, 244880; CHECK-P10-NEXT: stxsihx f0, 0, r34881; CHECK-P10-NEXT: blr4882;4883; CHECK-P9-LABEL: st_cst_align64_float_uint16_t:4884; CHECK-P9: # %bb.0: # %entry4885; CHECK-P9-NEXT: xscvdpuxds f0, f14886; CHECK-P9-NEXT: lis r3, 37254887; CHECK-P9-NEXT: ori r3, r3, 190254888; CHECK-P9-NEXT: rldic r3, r3, 12, 244889; CHECK-P9-NEXT: stxsihx f0, 0, r34890; CHECK-P9-NEXT: blr4891;4892; CHECK-P8-LABEL: st_cst_align64_float_uint16_t:4893; CHECK-P8: # %bb.0: # %entry4894; CHECK-P8-NEXT: xscvdpsxws f0, f14895; CHECK-P8-NEXT: lis r4, 37254896; CHECK-P8-NEXT: ori r4, r4, 190254897; CHECK-P8-NEXT: rldic r4, r4, 12, 244898; CHECK-P8-NEXT: mffprwz r3, f04899; CHECK-P8-NEXT: sth r3, 0(r4)4900; CHECK-P8-NEXT: blr4901entry:4902 %conv = fptoui float %str to i164903 store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40964904 ret void4905}4906 4907; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4908define dso_local void @st_0_float_int16_t(i64 %ptr, float %str) {4909; CHECK-POSTP8-LABEL: st_0_float_int16_t:4910; CHECK-POSTP8: # %bb.0: # %entry4911; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14912; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34913; CHECK-POSTP8-NEXT: blr4914;4915; CHECK-P8-LABEL: st_0_float_int16_t:4916; CHECK-P8: # %bb.0: # %entry4917; CHECK-P8-NEXT: xscvdpsxws f0, f14918; CHECK-P8-NEXT: mffprwz r4, f04919; CHECK-P8-NEXT: sth r4, 0(r3)4920; CHECK-P8-NEXT: blr4921entry:4922 %conv = fptosi float %str to i164923 %0 = inttoptr i64 %ptr to ptr4924 store i16 %conv, ptr %0, align 24925 ret void4926}4927 4928; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4929define dso_local void @st_align16_float_int16_t(ptr nocapture %ptr, float %str) {4930; CHECK-POSTP8-LABEL: st_align16_float_int16_t:4931; CHECK-POSTP8: # %bb.0: # %entry4932; CHECK-POSTP8-NEXT: xscvdpsxds f0, f14933; CHECK-POSTP8-NEXT: addi r3, r3, 84934; CHECK-POSTP8-NEXT: stxsihx f0, 0, r34935; CHECK-POSTP8-NEXT: blr4936;4937; CHECK-P8-LABEL: st_align16_float_int16_t:4938; CHECK-P8: # %bb.0: # %entry4939; CHECK-P8-NEXT: xscvdpsxws f0, f14940; CHECK-P8-NEXT: mffprwz r4, f04941; CHECK-P8-NEXT: sth r4, 8(r3)4942; CHECK-P8-NEXT: blr4943entry:4944 %conv = fptosi float %str to i164945 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 84946 store i16 %conv, ptr %add.ptr, align 24947 ret void4948}4949 4950; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4951define dso_local void @st_align32_float_int16_t(ptr nocapture %ptr, float %str) {4952; CHECK-P10-LABEL: st_align32_float_int16_t:4953; CHECK-P10: # %bb.0: # %entry4954; CHECK-P10-NEXT: xscvdpsxds f0, f14955; CHECK-P10-NEXT: pli r4, 999990004956; CHECK-P10-NEXT: stxsihx f0, r3, r44957; CHECK-P10-NEXT: blr4958;4959; CHECK-P9-LABEL: st_align32_float_int16_t:4960; CHECK-P9: # %bb.0: # %entry4961; CHECK-P9-NEXT: xscvdpsxds f0, f14962; CHECK-P9-NEXT: lis r4, 15254963; CHECK-P9-NEXT: ori r4, r4, 566004964; CHECK-P9-NEXT: stxsihx f0, r3, r44965; CHECK-P9-NEXT: blr4966;4967; CHECK-P8-LABEL: st_align32_float_int16_t:4968; CHECK-P8: # %bb.0: # %entry4969; CHECK-P8-NEXT: xscvdpsxws f0, f14970; CHECK-P8-NEXT: lis r5, 15254971; CHECK-P8-NEXT: ori r5, r5, 566004972; CHECK-P8-NEXT: mffprwz r4, f04973; CHECK-P8-NEXT: sthx r4, r3, r54974; CHECK-P8-NEXT: blr4975entry:4976 %conv = fptosi float %str to i164977 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990004978 store i16 %conv, ptr %add.ptr, align 24979 ret void4980}4981 4982; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly4983define dso_local void @st_align64_float_int16_t(ptr nocapture %ptr, float %str) {4984; CHECK-P10-LABEL: st_align64_float_int16_t:4985; CHECK-P10: # %bb.0: # %entry4986; CHECK-P10-NEXT: xscvdpsxds f0, f14987; CHECK-P10-NEXT: pli r4, 2441406254988; CHECK-P10-NEXT: rldic r4, r4, 12, 244989; CHECK-P10-NEXT: stxsihx f0, r3, r44990; CHECK-P10-NEXT: blr4991;4992; CHECK-P9-LABEL: st_align64_float_int16_t:4993; CHECK-P9: # %bb.0: # %entry4994; CHECK-P9-NEXT: xscvdpsxds f0, f14995; CHECK-P9-NEXT: lis r4, 37254996; CHECK-P9-NEXT: ori r4, r4, 190254997; CHECK-P9-NEXT: rldic r4, r4, 12, 244998; CHECK-P9-NEXT: stxsihx f0, r3, r44999; CHECK-P9-NEXT: blr5000;5001; CHECK-P8-LABEL: st_align64_float_int16_t:5002; CHECK-P8: # %bb.0: # %entry5003; CHECK-P8-NEXT: xscvdpsxws f0, f15004; CHECK-P8-NEXT: lis r5, 37255005; CHECK-P8-NEXT: ori r5, r5, 190255006; CHECK-P8-NEXT: rldic r5, r5, 12, 245007; CHECK-P8-NEXT: mffprwz r4, f05008; CHECK-P8-NEXT: sthx r4, r3, r55009; CHECK-P8-NEXT: blr5010entry:5011 %conv = fptosi float %str to i165012 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005013 store i16 %conv, ptr %add.ptr, align 25014 ret void5015}5016 5017; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5018define dso_local void @st_reg_float_int16_t(ptr nocapture %ptr, i64 %off, float %str) {5019; CHECK-POSTP8-LABEL: st_reg_float_int16_t:5020; CHECK-POSTP8: # %bb.0: # %entry5021; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15022; CHECK-POSTP8-NEXT: stxsihx f0, r3, r45023; CHECK-POSTP8-NEXT: blr5024;5025; CHECK-P8-LABEL: st_reg_float_int16_t:5026; CHECK-P8: # %bb.0: # %entry5027; CHECK-P8-NEXT: xscvdpsxws f0, f15028; CHECK-P8-NEXT: mffprwz r5, f05029; CHECK-P8-NEXT: sthx r5, r3, r45030; CHECK-P8-NEXT: blr5031entry:5032 %conv = fptosi float %str to i165033 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5034 store i16 %conv, ptr %add.ptr, align 25035 ret void5036}5037 5038; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5039define dso_local void @st_or1_float_int16_t(i64 %ptr, i8 zeroext %off, float %str) {5040; CHECK-POSTP8-LABEL: st_or1_float_int16_t:5041; CHECK-POSTP8: # %bb.0: # %entry5042; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15043; CHECK-POSTP8-NEXT: or r3, r4, r35044; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35045; CHECK-POSTP8-NEXT: blr5046;5047; CHECK-P8-LABEL: st_or1_float_int16_t:5048; CHECK-P8: # %bb.0: # %entry5049; CHECK-P8-NEXT: xscvdpsxws f0, f15050; CHECK-P8-NEXT: or r3, r4, r35051; CHECK-P8-NEXT: mffprwz r5, f05052; CHECK-P8-NEXT: sth r5, 0(r3)5053; CHECK-P8-NEXT: blr5054entry:5055 %conv = fptosi float %str to i165056 %conv1 = zext i8 %off to i645057 %or = or i64 %conv1, %ptr5058 %0 = inttoptr i64 %or to ptr5059 store i16 %conv, ptr %0, align 25060 ret void5061}5062 5063; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5064define dso_local void @st_not_disjoint16_float_int16_t(i64 %ptr, float %str) {5065; CHECK-POSTP8-LABEL: st_not_disjoint16_float_int16_t:5066; CHECK-POSTP8: # %bb.0: # %entry5067; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15068; CHECK-POSTP8-NEXT: ori r3, r3, 65069; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35070; CHECK-POSTP8-NEXT: blr5071;5072; CHECK-P8-LABEL: st_not_disjoint16_float_int16_t:5073; CHECK-P8: # %bb.0: # %entry5074; CHECK-P8-NEXT: xscvdpsxws f0, f15075; CHECK-P8-NEXT: ori r3, r3, 65076; CHECK-P8-NEXT: mffprwz r4, f05077; CHECK-P8-NEXT: sth r4, 0(r3)5078; CHECK-P8-NEXT: blr5079entry:5080 %conv = fptosi float %str to i165081 %or = or i64 %ptr, 65082 %0 = inttoptr i64 %or to ptr5083 store i16 %conv, ptr %0, align 25084 ret void5085}5086 5087; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5088define dso_local void @st_disjoint_align16_float_int16_t(i64 %ptr, float %str) {5089; CHECK-POSTP8-LABEL: st_disjoint_align16_float_int16_t:5090; CHECK-POSTP8: # %bb.0: # %entry5091; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15092; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 515093; CHECK-POSTP8-NEXT: ori r3, r3, 245094; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35095; CHECK-POSTP8-NEXT: blr5096;5097; CHECK-P8-LABEL: st_disjoint_align16_float_int16_t:5098; CHECK-P8: # %bb.0: # %entry5099; CHECK-P8-NEXT: xscvdpsxws f0, f15100; CHECK-P8-NEXT: rldicr r3, r3, 0, 515101; CHECK-P8-NEXT: mffprwz r4, f05102; CHECK-P8-NEXT: sth r4, 24(r3)5103; CHECK-P8-NEXT: blr5104entry:5105 %and = and i64 %ptr, -40965106 %conv = fptosi float %str to i165107 %or = or i64 %and, 245108 %0 = inttoptr i64 %or to ptr5109 store i16 %conv, ptr %0, align 85110 ret void5111}5112 5113; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5114define dso_local void @st_not_disjoint32_float_int16_t(i64 %ptr, float %str) {5115; CHECK-POSTP8-LABEL: st_not_disjoint32_float_int16_t:5116; CHECK-POSTP8: # %bb.0: # %entry5117; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15118; CHECK-POSTP8-NEXT: ori r3, r3, 344635119; CHECK-POSTP8-NEXT: oris r3, r3, 15120; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35121; CHECK-POSTP8-NEXT: blr5122;5123; CHECK-P8-LABEL: st_not_disjoint32_float_int16_t:5124; CHECK-P8: # %bb.0: # %entry5125; CHECK-P8-NEXT: xscvdpsxws f0, f15126; CHECK-P8-NEXT: ori r3, r3, 344635127; CHECK-P8-NEXT: oris r3, r3, 15128; CHECK-P8-NEXT: mffprwz r4, f05129; CHECK-P8-NEXT: sth r4, 0(r3)5130; CHECK-P8-NEXT: blr5131entry:5132 %conv = fptosi float %str to i165133 %or = or i64 %ptr, 999995134 %0 = inttoptr i64 %or to ptr5135 store i16 %conv, ptr %0, align 25136 ret void5137}5138 5139; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5140define dso_local void @st_disjoint_align32_float_int16_t(i64 %ptr, float %str) {5141; CHECK-P10-LABEL: st_disjoint_align32_float_int16_t:5142; CHECK-P10: # %bb.0: # %entry5143; CHECK-P10-NEXT: xscvdpsxds f0, f15144; CHECK-P10-NEXT: lis r4, -152645145; CHECK-P10-NEXT: and r3, r3, r45146; CHECK-P10-NEXT: pli r4, 9999900005147; CHECK-P10-NEXT: stxsihx f0, r3, r45148; CHECK-P10-NEXT: blr5149;5150; CHECK-P9-LABEL: st_disjoint_align32_float_int16_t:5151; CHECK-P9: # %bb.0: # %entry5152; CHECK-P9-NEXT: xscvdpsxds f0, f15153; CHECK-P9-NEXT: lis r4, -152645154; CHECK-P9-NEXT: and r3, r3, r45155; CHECK-P9-NEXT: lis r4, 152585156; CHECK-P9-NEXT: ori r4, r4, 417125157; CHECK-P9-NEXT: stxsihx f0, r3, r45158; CHECK-P9-NEXT: blr5159;5160; CHECK-P8-LABEL: st_disjoint_align32_float_int16_t:5161; CHECK-P8: # %bb.0: # %entry5162; CHECK-P8-NEXT: xscvdpsxws f0, f15163; CHECK-P8-NEXT: lis r4, -152645164; CHECK-P8-NEXT: lis r5, 152585165; CHECK-P8-NEXT: and r3, r3, r45166; CHECK-P8-NEXT: ori r5, r5, 417125167; CHECK-P8-NEXT: mffprwz r4, f05168; CHECK-P8-NEXT: sthx r4, r3, r55169; CHECK-P8-NEXT: blr5170entry:5171 %and = and i64 %ptr, -10003415045172 %conv = fptosi float %str to i165173 %or = or i64 %and, 9999900005174 %0 = inttoptr i64 %or to ptr5175 store i16 %conv, ptr %0, align 165176 ret void5177}5178 5179; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5180define dso_local void @st_not_disjoint64_float_int16_t(i64 %ptr, float %str) {5181; CHECK-P10-LABEL: st_not_disjoint64_float_int16_t:5182; CHECK-P10: # %bb.0: # %entry5183; CHECK-P10-NEXT: xscvdpsxds f0, f15184; CHECK-P10-NEXT: pli r4, 2325185; CHECK-P10-NEXT: pli r5, 35675873295186; CHECK-P10-NEXT: rldimi r5, r4, 32, 05187; CHECK-P10-NEXT: or r3, r3, r55188; CHECK-P10-NEXT: stxsihx f0, 0, r35189; CHECK-P10-NEXT: blr5190;5191; CHECK-P9-LABEL: st_not_disjoint64_float_int16_t:5192; CHECK-P9: # %bb.0: # %entry5193; CHECK-P9-NEXT: li r4, 295194; CHECK-P9-NEXT: xscvdpsxds f0, f15195; CHECK-P9-NEXT: rldic r4, r4, 35, 245196; CHECK-P9-NEXT: oris r4, r4, 544375197; CHECK-P9-NEXT: ori r4, r4, 40975198; CHECK-P9-NEXT: or r3, r3, r45199; CHECK-P9-NEXT: stxsihx f0, 0, r35200; CHECK-P9-NEXT: blr5201;5202; CHECK-P8-LABEL: st_not_disjoint64_float_int16_t:5203; CHECK-P8: # %bb.0: # %entry5204; CHECK-P8-NEXT: xscvdpsxws f0, f15205; CHECK-P8-NEXT: li r5, 295206; CHECK-P8-NEXT: rldic r5, r5, 35, 245207; CHECK-P8-NEXT: oris r5, r5, 544375208; CHECK-P8-NEXT: mffprwz r4, f05209; CHECK-P8-NEXT: ori r5, r5, 40975210; CHECK-P8-NEXT: or r3, r3, r55211; CHECK-P8-NEXT: sth r4, 0(r3)5212; CHECK-P8-NEXT: blr5213entry:5214 %conv = fptosi float %str to i165215 %or = or i64 %ptr, 10000000000015216 %0 = inttoptr i64 %or to ptr5217 store i16 %conv, ptr %0, align 25218 ret void5219}5220 5221; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5222define dso_local void @st_disjoint_align64_float_int16_t(i64 %ptr, float %str) {5223; CHECK-P10-LABEL: st_disjoint_align64_float_int16_t:5224; CHECK-P10: # %bb.0: # %entry5225; CHECK-P10-NEXT: xscvdpsxds f0, f15226; CHECK-P10-NEXT: pli r4, 2441406255227; CHECK-P10-NEXT: rldicr r3, r3, 0, 235228; CHECK-P10-NEXT: rldic r4, r4, 12, 245229; CHECK-P10-NEXT: stxsihx f0, r3, r45230; CHECK-P10-NEXT: blr5231;5232; CHECK-P9-LABEL: st_disjoint_align64_float_int16_t:5233; CHECK-P9: # %bb.0: # %entry5234; CHECK-P9-NEXT: xscvdpsxds f0, f15235; CHECK-P9-NEXT: lis r4, 37255236; CHECK-P9-NEXT: rldicr r3, r3, 0, 235237; CHECK-P9-NEXT: ori r4, r4, 190255238; CHECK-P9-NEXT: rldic r4, r4, 12, 245239; CHECK-P9-NEXT: stxsihx f0, r3, r45240; CHECK-P9-NEXT: blr5241;5242; CHECK-P8-LABEL: st_disjoint_align64_float_int16_t:5243; CHECK-P8: # %bb.0: # %entry5244; CHECK-P8-NEXT: xscvdpsxws f0, f15245; CHECK-P8-NEXT: lis r5, 37255246; CHECK-P8-NEXT: rldicr r3, r3, 0, 235247; CHECK-P8-NEXT: ori r5, r5, 190255248; CHECK-P8-NEXT: rldic r5, r5, 12, 245249; CHECK-P8-NEXT: mffprwz r4, f05250; CHECK-P8-NEXT: sthx r4, r3, r55251; CHECK-P8-NEXT: blr5252entry:5253 %and = and i64 %ptr, -10995116277765254 %conv = fptosi float %str to i165255 %or = or i64 %and, 10000000000005256 %0 = inttoptr i64 %or to ptr5257 store i16 %conv, ptr %0, align 40965258 ret void5259}5260 5261; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5262define dso_local void @st_cst_align16_float_int16_t(float %str) {5263; CHECK-POSTP8-LABEL: st_cst_align16_float_int16_t:5264; CHECK-POSTP8: # %bb.0: # %entry5265; CHECK-POSTP8-NEXT: xscvdpsxds f0, f15266; CHECK-POSTP8-NEXT: li r3, 40805267; CHECK-POSTP8-NEXT: stxsihx f0, 0, r35268; CHECK-POSTP8-NEXT: blr5269;5270; CHECK-P8-LABEL: st_cst_align16_float_int16_t:5271; CHECK-P8: # %bb.0: # %entry5272; CHECK-P8-NEXT: xscvdpsxws f0, f15273; CHECK-P8-NEXT: mffprwz r3, f05274; CHECK-P8-NEXT: sth r3, 4080(0)5275; CHECK-P8-NEXT: blr5276entry:5277 %conv = fptosi float %str to i165278 store i16 %conv, ptr inttoptr (i64 4080 to ptr), align 165279 ret void5280}5281 5282; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5283define dso_local void @st_cst_align32_float_int16_t(float %str) {5284; CHECK-P10-LABEL: st_cst_align32_float_int16_t:5285; CHECK-P10: # %bb.0: # %entry5286; CHECK-P10-NEXT: xscvdpsxds f0, f15287; CHECK-P10-NEXT: pli r3, 99999005288; CHECK-P10-NEXT: stxsihx f0, 0, r35289; CHECK-P10-NEXT: blr5290;5291; CHECK-P9-LABEL: st_cst_align32_float_int16_t:5292; CHECK-P9: # %bb.0: # %entry5293; CHECK-P9-NEXT: xscvdpsxds f0, f15294; CHECK-P9-NEXT: lis r3, 1525295; CHECK-P9-NEXT: ori r3, r3, 384285296; CHECK-P9-NEXT: stxsihx f0, 0, r35297; CHECK-P9-NEXT: blr5298;5299; CHECK-P8-LABEL: st_cst_align32_float_int16_t:5300; CHECK-P8: # %bb.0: # %entry5301; CHECK-P8-NEXT: xscvdpsxws f0, f15302; CHECK-P8-NEXT: lis r4, 1535303; CHECK-P8-NEXT: mffprwz r3, f05304; CHECK-P8-NEXT: sth r3, -27108(r4)5305; CHECK-P8-NEXT: blr5306entry:5307 %conv = fptosi float %str to i165308 store i16 %conv, ptr inttoptr (i64 9999900 to ptr), align 45309 ret void5310}5311 5312; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5313define dso_local void @st_cst_align64_float_int16_t(float %str) {5314; CHECK-P10-LABEL: st_cst_align64_float_int16_t:5315; CHECK-P10: # %bb.0: # %entry5316; CHECK-P10-NEXT: xscvdpsxds f0, f15317; CHECK-P10-NEXT: pli r3, 2441406255318; CHECK-P10-NEXT: rldic r3, r3, 12, 245319; CHECK-P10-NEXT: stxsihx f0, 0, r35320; CHECK-P10-NEXT: blr5321;5322; CHECK-P9-LABEL: st_cst_align64_float_int16_t:5323; CHECK-P9: # %bb.0: # %entry5324; CHECK-P9-NEXT: xscvdpsxds f0, f15325; CHECK-P9-NEXT: lis r3, 37255326; CHECK-P9-NEXT: ori r3, r3, 190255327; CHECK-P9-NEXT: rldic r3, r3, 12, 245328; CHECK-P9-NEXT: stxsihx f0, 0, r35329; CHECK-P9-NEXT: blr5330;5331; CHECK-P8-LABEL: st_cst_align64_float_int16_t:5332; CHECK-P8: # %bb.0: # %entry5333; CHECK-P8-NEXT: xscvdpsxws f0, f15334; CHECK-P8-NEXT: lis r4, 37255335; CHECK-P8-NEXT: ori r4, r4, 190255336; CHECK-P8-NEXT: rldic r4, r4, 12, 245337; CHECK-P8-NEXT: mffprwz r3, f05338; CHECK-P8-NEXT: sth r3, 0(r4)5339; CHECK-P8-NEXT: blr5340entry:5341 %conv = fptosi float %str to i165342 store i16 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965343 ret void5344}5345 5346; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5347define dso_local void @st_0_float_uint32_t(i64 %ptr, float %str) {5348; CHECK-LABEL: st_0_float_uint32_t:5349; CHECK: # %bb.0: # %entry5350; CHECK-NEXT: xscvdpuxws f0, f15351; CHECK-NEXT: stfiwx f0, 0, r35352; CHECK-NEXT: blr5353entry:5354 %conv = fptoui float %str to i325355 %0 = inttoptr i64 %ptr to ptr5356 store i32 %conv, ptr %0, align 45357 ret void5358}5359 5360; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5361define dso_local void @st_align16_float_uint32_t(ptr nocapture %ptr, float %str) {5362; CHECK-LABEL: st_align16_float_uint32_t:5363; CHECK: # %bb.0: # %entry5364; CHECK-NEXT: xscvdpuxws f0, f15365; CHECK-NEXT: addi r3, r3, 85366; CHECK-NEXT: stfiwx f0, 0, r35367; CHECK-NEXT: blr5368entry:5369 %conv = fptoui float %str to i325370 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85371 store i32 %conv, ptr %add.ptr, align 45372 ret void5373}5374 5375; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5376define dso_local void @st_align32_float_uint32_t(ptr nocapture %ptr, float %str) {5377; CHECK-P10-LABEL: st_align32_float_uint32_t:5378; CHECK-P10: # %bb.0: # %entry5379; CHECK-P10-NEXT: xscvdpuxws f0, f15380; CHECK-P10-NEXT: pli r4, 999990005381; CHECK-P10-NEXT: stfiwx f0, r3, r45382; CHECK-P10-NEXT: blr5383;5384; CHECK-PREP10-LABEL: st_align32_float_uint32_t:5385; CHECK-PREP10: # %bb.0: # %entry5386; CHECK-PREP10-NEXT: xscvdpuxws f0, f15387; CHECK-PREP10-NEXT: lis r4, 15255388; CHECK-PREP10-NEXT: ori r4, r4, 566005389; CHECK-PREP10-NEXT: stfiwx f0, r3, r45390; CHECK-PREP10-NEXT: blr5391entry:5392 %conv = fptoui float %str to i325393 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005394 store i32 %conv, ptr %add.ptr, align 45395 ret void5396}5397 5398; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5399define dso_local void @st_align64_float_uint32_t(ptr nocapture %ptr, float %str) {5400; CHECK-P10-LABEL: st_align64_float_uint32_t:5401; CHECK-P10: # %bb.0: # %entry5402; CHECK-P10-NEXT: xscvdpuxws f0, f15403; CHECK-P10-NEXT: pli r4, 2441406255404; CHECK-P10-NEXT: rldic r4, r4, 12, 245405; CHECK-P10-NEXT: stfiwx f0, r3, r45406; CHECK-P10-NEXT: blr5407;5408; CHECK-PREP10-LABEL: st_align64_float_uint32_t:5409; CHECK-PREP10: # %bb.0: # %entry5410; CHECK-PREP10-NEXT: xscvdpuxws f0, f15411; CHECK-PREP10-NEXT: lis r4, 37255412; CHECK-PREP10-NEXT: ori r4, r4, 190255413; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245414; CHECK-PREP10-NEXT: stfiwx f0, r3, r45415; CHECK-PREP10-NEXT: blr5416entry:5417 %conv = fptoui float %str to i325418 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005419 store i32 %conv, ptr %add.ptr, align 45420 ret void5421}5422 5423; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5424define dso_local void @st_reg_float_uint32_t(ptr nocapture %ptr, i64 %off, float %str) {5425; CHECK-LABEL: st_reg_float_uint32_t:5426; CHECK: # %bb.0: # %entry5427; CHECK-NEXT: xscvdpuxws f0, f15428; CHECK-NEXT: stfiwx f0, r3, r45429; CHECK-NEXT: blr5430entry:5431 %conv = fptoui float %str to i325432 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5433 store i32 %conv, ptr %add.ptr, align 45434 ret void5435}5436 5437; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5438define dso_local void @st_or1_float_uint32_t(i64 %ptr, i8 zeroext %off, float %str) {5439; CHECK-LABEL: st_or1_float_uint32_t:5440; CHECK: # %bb.0: # %entry5441; CHECK-NEXT: xscvdpuxws f0, f15442; CHECK-NEXT: or r3, r4, r35443; CHECK-NEXT: stfiwx f0, 0, r35444; CHECK-NEXT: blr5445entry:5446 %conv = fptoui float %str to i325447 %conv1 = zext i8 %off to i645448 %or = or i64 %conv1, %ptr5449 %0 = inttoptr i64 %or to ptr5450 store i32 %conv, ptr %0, align 45451 ret void5452}5453 5454; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5455define dso_local void @st_not_disjoint16_float_uint32_t(i64 %ptr, float %str) {5456; CHECK-LABEL: st_not_disjoint16_float_uint32_t:5457; CHECK: # %bb.0: # %entry5458; CHECK-NEXT: xscvdpuxws f0, f15459; CHECK-NEXT: ori r3, r3, 65460; CHECK-NEXT: stfiwx f0, 0, r35461; CHECK-NEXT: blr5462entry:5463 %conv = fptoui float %str to i325464 %or = or i64 %ptr, 65465 %0 = inttoptr i64 %or to ptr5466 store i32 %conv, ptr %0, align 45467 ret void5468}5469 5470; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5471define dso_local void @st_disjoint_align16_float_uint32_t(i64 %ptr, float %str) {5472; CHECK-LABEL: st_disjoint_align16_float_uint32_t:5473; CHECK: # %bb.0: # %entry5474; CHECK-NEXT: xscvdpuxws f0, f15475; CHECK-NEXT: rldicr r3, r3, 0, 515476; CHECK-NEXT: ori r3, r3, 245477; CHECK-NEXT: stfiwx f0, 0, r35478; CHECK-NEXT: blr5479entry:5480 %and = and i64 %ptr, -40965481 %conv = fptoui float %str to i325482 %or = or i64 %and, 245483 %0 = inttoptr i64 %or to ptr5484 store i32 %conv, ptr %0, align 85485 ret void5486}5487 5488; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5489define dso_local void @st_not_disjoint32_float_uint32_t(i64 %ptr, float %str) {5490; CHECK-LABEL: st_not_disjoint32_float_uint32_t:5491; CHECK: # %bb.0: # %entry5492; CHECK-NEXT: xscvdpuxws f0, f15493; CHECK-NEXT: ori r3, r3, 344635494; CHECK-NEXT: oris r3, r3, 15495; CHECK-NEXT: stfiwx f0, 0, r35496; CHECK-NEXT: blr5497entry:5498 %conv = fptoui float %str to i325499 %or = or i64 %ptr, 999995500 %0 = inttoptr i64 %or to ptr5501 store i32 %conv, ptr %0, align 45502 ret void5503}5504 5505; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5506define dso_local void @st_disjoint_align32_float_uint32_t(i64 %ptr, float %str) {5507; CHECK-P10-LABEL: st_disjoint_align32_float_uint32_t:5508; CHECK-P10: # %bb.0: # %entry5509; CHECK-P10-NEXT: xscvdpuxws f0, f15510; CHECK-P10-NEXT: lis r4, -152645511; CHECK-P10-NEXT: and r3, r3, r45512; CHECK-P10-NEXT: pli r4, 9999900005513; CHECK-P10-NEXT: stfiwx f0, r3, r45514; CHECK-P10-NEXT: blr5515;5516; CHECK-P9-LABEL: st_disjoint_align32_float_uint32_t:5517; CHECK-P9: # %bb.0: # %entry5518; CHECK-P9-NEXT: xscvdpuxws f0, f15519; CHECK-P9-NEXT: lis r4, -152645520; CHECK-P9-NEXT: and r3, r3, r45521; CHECK-P9-NEXT: lis r4, 152585522; CHECK-P9-NEXT: ori r4, r4, 417125523; CHECK-P9-NEXT: stfiwx f0, r3, r45524; CHECK-P9-NEXT: blr5525;5526; CHECK-P8-LABEL: st_disjoint_align32_float_uint32_t:5527; CHECK-P8: # %bb.0: # %entry5528; CHECK-P8-NEXT: lis r4, -152645529; CHECK-P8-NEXT: xscvdpuxws f0, f15530; CHECK-P8-NEXT: and r3, r3, r45531; CHECK-P8-NEXT: lis r4, 152585532; CHECK-P8-NEXT: ori r4, r4, 417125533; CHECK-P8-NEXT: stfiwx f0, r3, r45534; CHECK-P8-NEXT: blr5535entry:5536 %and = and i64 %ptr, -10003415045537 %conv = fptoui float %str to i325538 %or = or i64 %and, 9999900005539 %0 = inttoptr i64 %or to ptr5540 store i32 %conv, ptr %0, align 165541 ret void5542}5543 5544; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5545define dso_local void @st_not_disjoint64_float_uint32_t(i64 %ptr, float %str) {5546; CHECK-P10-LABEL: st_not_disjoint64_float_uint32_t:5547; CHECK-P10: # %bb.0: # %entry5548; CHECK-P10-NEXT: xscvdpuxws f0, f15549; CHECK-P10-NEXT: pli r4, 2325550; CHECK-P10-NEXT: pli r5, 35675873295551; CHECK-P10-NEXT: rldimi r5, r4, 32, 05552; CHECK-P10-NEXT: or r3, r3, r55553; CHECK-P10-NEXT: stfiwx f0, 0, r35554; CHECK-P10-NEXT: blr5555;5556; CHECK-PREP10-LABEL: st_not_disjoint64_float_uint32_t:5557; CHECK-PREP10: # %bb.0: # %entry5558; CHECK-PREP10-NEXT: li r4, 295559; CHECK-PREP10-NEXT: xscvdpuxws f0, f15560; CHECK-PREP10-NEXT: rldic r4, r4, 35, 245561; CHECK-PREP10-NEXT: oris r4, r4, 544375562; CHECK-PREP10-NEXT: ori r4, r4, 40975563; CHECK-PREP10-NEXT: or r3, r3, r45564; CHECK-PREP10-NEXT: stfiwx f0, 0, r35565; CHECK-PREP10-NEXT: blr5566entry:5567 %conv = fptoui float %str to i325568 %or = or i64 %ptr, 10000000000015569 %0 = inttoptr i64 %or to ptr5570 store i32 %conv, ptr %0, align 45571 ret void5572}5573 5574; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5575define dso_local void @st_disjoint_align64_float_uint32_t(i64 %ptr, float %str) {5576; CHECK-P10-LABEL: st_disjoint_align64_float_uint32_t:5577; CHECK-P10: # %bb.0: # %entry5578; CHECK-P10-NEXT: xscvdpuxws f0, f15579; CHECK-P10-NEXT: pli r4, 2441406255580; CHECK-P10-NEXT: rldicr r3, r3, 0, 235581; CHECK-P10-NEXT: rldic r4, r4, 12, 245582; CHECK-P10-NEXT: stfiwx f0, r3, r45583; CHECK-P10-NEXT: blr5584;5585; CHECK-PREP10-LABEL: st_disjoint_align64_float_uint32_t:5586; CHECK-PREP10: # %bb.0: # %entry5587; CHECK-PREP10-NEXT: xscvdpuxws f0, f15588; CHECK-PREP10-NEXT: lis r4, 37255589; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235590; CHECK-PREP10-NEXT: ori r4, r4, 190255591; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245592; CHECK-PREP10-NEXT: stfiwx f0, r3, r45593; CHECK-PREP10-NEXT: blr5594entry:5595 %and = and i64 %ptr, -10995116277765596 %conv = fptoui float %str to i325597 %or = or i64 %and, 10000000000005598 %0 = inttoptr i64 %or to ptr5599 store i32 %conv, ptr %0, align 40965600 ret void5601}5602 5603; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5604define dso_local void @st_cst_align16_float_uint32_t(float %str) {5605; CHECK-LABEL: st_cst_align16_float_uint32_t:5606; CHECK: # %bb.0: # %entry5607; CHECK-NEXT: xscvdpuxws f0, f15608; CHECK-NEXT: li r3, 40805609; CHECK-NEXT: stfiwx f0, 0, r35610; CHECK-NEXT: blr5611entry:5612 %conv = fptoui float %str to i325613 store i32 %conv, ptr inttoptr (i64 4080 to ptr), align 165614 ret void5615}5616 5617; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5618define dso_local void @st_cst_align32_float_uint32_t(float %str) {5619; CHECK-P10-LABEL: st_cst_align32_float_uint32_t:5620; CHECK-P10: # %bb.0: # %entry5621; CHECK-P10-NEXT: xscvdpuxws f0, f15622; CHECK-P10-NEXT: pli r3, 99999005623; CHECK-P10-NEXT: stfiwx f0, 0, r35624; CHECK-P10-NEXT: blr5625;5626; CHECK-PREP10-LABEL: st_cst_align32_float_uint32_t:5627; CHECK-PREP10: # %bb.0: # %entry5628; CHECK-PREP10-NEXT: xscvdpuxws f0, f15629; CHECK-PREP10-NEXT: lis r3, 1525630; CHECK-PREP10-NEXT: ori r3, r3, 384285631; CHECK-PREP10-NEXT: stfiwx f0, 0, r35632; CHECK-PREP10-NEXT: blr5633entry:5634 %conv = fptoui float %str to i325635 store i32 %conv, ptr inttoptr (i64 9999900 to ptr), align 45636 ret void5637}5638 5639; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5640define dso_local void @st_cst_align64_float_uint32_t(float %str) {5641; CHECK-P10-LABEL: st_cst_align64_float_uint32_t:5642; CHECK-P10: # %bb.0: # %entry5643; CHECK-P10-NEXT: xscvdpuxws f0, f15644; CHECK-P10-NEXT: pli r3, 2441406255645; CHECK-P10-NEXT: rldic r3, r3, 12, 245646; CHECK-P10-NEXT: stfiwx f0, 0, r35647; CHECK-P10-NEXT: blr5648;5649; CHECK-PREP10-LABEL: st_cst_align64_float_uint32_t:5650; CHECK-PREP10: # %bb.0: # %entry5651; CHECK-PREP10-NEXT: xscvdpuxws f0, f15652; CHECK-PREP10-NEXT: lis r3, 37255653; CHECK-PREP10-NEXT: ori r3, r3, 190255654; CHECK-PREP10-NEXT: rldic r3, r3, 12, 245655; CHECK-PREP10-NEXT: stfiwx f0, 0, r35656; CHECK-PREP10-NEXT: blr5657entry:5658 %conv = fptoui float %str to i325659 store i32 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965660 ret void5661}5662 5663; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5664define dso_local void @st_0_float_int32_t(i64 %ptr, float %str) {5665; CHECK-LABEL: st_0_float_int32_t:5666; CHECK: # %bb.0: # %entry5667; CHECK-NEXT: xscvdpsxws f0, f15668; CHECK-NEXT: stfiwx f0, 0, r35669; CHECK-NEXT: blr5670entry:5671 %conv = fptosi float %str to i325672 %0 = inttoptr i64 %ptr to ptr5673 store i32 %conv, ptr %0, align 45674 ret void5675}5676 5677; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5678define dso_local void @st_align16_float_int32_t(ptr nocapture %ptr, float %str) {5679; CHECK-LABEL: st_align16_float_int32_t:5680; CHECK: # %bb.0: # %entry5681; CHECK-NEXT: xscvdpsxws f0, f15682; CHECK-NEXT: addi r3, r3, 85683; CHECK-NEXT: stfiwx f0, 0, r35684; CHECK-NEXT: blr5685entry:5686 %conv = fptosi float %str to i325687 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 85688 store i32 %conv, ptr %add.ptr, align 45689 ret void5690}5691 5692; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5693define dso_local void @st_align32_float_int32_t(ptr nocapture %ptr, float %str) {5694; CHECK-P10-LABEL: st_align32_float_int32_t:5695; CHECK-P10: # %bb.0: # %entry5696; CHECK-P10-NEXT: xscvdpsxws f0, f15697; CHECK-P10-NEXT: pli r4, 999990005698; CHECK-P10-NEXT: stfiwx f0, r3, r45699; CHECK-P10-NEXT: blr5700;5701; CHECK-PREP10-LABEL: st_align32_float_int32_t:5702; CHECK-PREP10: # %bb.0: # %entry5703; CHECK-PREP10-NEXT: xscvdpsxws f0, f15704; CHECK-PREP10-NEXT: lis r4, 15255705; CHECK-PREP10-NEXT: ori r4, r4, 566005706; CHECK-PREP10-NEXT: stfiwx f0, r3, r45707; CHECK-PREP10-NEXT: blr5708entry:5709 %conv = fptosi float %str to i325710 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990005711 store i32 %conv, ptr %add.ptr, align 45712 ret void5713}5714 5715; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5716define dso_local void @st_align64_float_int32_t(ptr nocapture %ptr, float %str) {5717; CHECK-P10-LABEL: st_align64_float_int32_t:5718; CHECK-P10: # %bb.0: # %entry5719; CHECK-P10-NEXT: xscvdpsxws f0, f15720; CHECK-P10-NEXT: pli r4, 2441406255721; CHECK-P10-NEXT: rldic r4, r4, 12, 245722; CHECK-P10-NEXT: stfiwx f0, r3, r45723; CHECK-P10-NEXT: blr5724;5725; CHECK-PREP10-LABEL: st_align64_float_int32_t:5726; CHECK-PREP10: # %bb.0: # %entry5727; CHECK-PREP10-NEXT: xscvdpsxws f0, f15728; CHECK-PREP10-NEXT: lis r4, 37255729; CHECK-PREP10-NEXT: ori r4, r4, 190255730; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245731; CHECK-PREP10-NEXT: stfiwx f0, r3, r45732; CHECK-PREP10-NEXT: blr5733entry:5734 %conv = fptosi float %str to i325735 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000005736 store i32 %conv, ptr %add.ptr, align 45737 ret void5738}5739 5740; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5741define dso_local void @st_reg_float_int32_t(ptr nocapture %ptr, i64 %off, float %str) {5742; CHECK-LABEL: st_reg_float_int32_t:5743; CHECK: # %bb.0: # %entry5744; CHECK-NEXT: xscvdpsxws f0, f15745; CHECK-NEXT: stfiwx f0, r3, r45746; CHECK-NEXT: blr5747entry:5748 %conv = fptosi float %str to i325749 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off5750 store i32 %conv, ptr %add.ptr, align 45751 ret void5752}5753 5754; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5755define dso_local void @st_or1_float_int32_t(i64 %ptr, i8 zeroext %off, float %str) {5756; CHECK-LABEL: st_or1_float_int32_t:5757; CHECK: # %bb.0: # %entry5758; CHECK-NEXT: xscvdpsxws f0, f15759; CHECK-NEXT: or r3, r4, r35760; CHECK-NEXT: stfiwx f0, 0, r35761; CHECK-NEXT: blr5762entry:5763 %conv = fptosi float %str to i325764 %conv1 = zext i8 %off to i645765 %or = or i64 %conv1, %ptr5766 %0 = inttoptr i64 %or to ptr5767 store i32 %conv, ptr %0, align 45768 ret void5769}5770 5771; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5772define dso_local void @st_not_disjoint16_float_int32_t(i64 %ptr, float %str) {5773; CHECK-LABEL: st_not_disjoint16_float_int32_t:5774; CHECK: # %bb.0: # %entry5775; CHECK-NEXT: xscvdpsxws f0, f15776; CHECK-NEXT: ori r3, r3, 65777; CHECK-NEXT: stfiwx f0, 0, r35778; CHECK-NEXT: blr5779entry:5780 %conv = fptosi float %str to i325781 %or = or i64 %ptr, 65782 %0 = inttoptr i64 %or to ptr5783 store i32 %conv, ptr %0, align 45784 ret void5785}5786 5787; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5788define dso_local void @st_disjoint_align16_float_int32_t(i64 %ptr, float %str) {5789; CHECK-LABEL: st_disjoint_align16_float_int32_t:5790; CHECK: # %bb.0: # %entry5791; CHECK-NEXT: xscvdpsxws f0, f15792; CHECK-NEXT: rldicr r3, r3, 0, 515793; CHECK-NEXT: ori r3, r3, 245794; CHECK-NEXT: stfiwx f0, 0, r35795; CHECK-NEXT: blr5796entry:5797 %and = and i64 %ptr, -40965798 %conv = fptosi float %str to i325799 %or = or i64 %and, 245800 %0 = inttoptr i64 %or to ptr5801 store i32 %conv, ptr %0, align 85802 ret void5803}5804 5805; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5806define dso_local void @st_not_disjoint32_float_int32_t(i64 %ptr, float %str) {5807; CHECK-LABEL: st_not_disjoint32_float_int32_t:5808; CHECK: # %bb.0: # %entry5809; CHECK-NEXT: xscvdpsxws f0, f15810; CHECK-NEXT: ori r3, r3, 344635811; CHECK-NEXT: oris r3, r3, 15812; CHECK-NEXT: stfiwx f0, 0, r35813; CHECK-NEXT: blr5814entry:5815 %conv = fptosi float %str to i325816 %or = or i64 %ptr, 999995817 %0 = inttoptr i64 %or to ptr5818 store i32 %conv, ptr %0, align 45819 ret void5820}5821 5822; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5823define dso_local void @st_disjoint_align32_float_int32_t(i64 %ptr, float %str) {5824; CHECK-P10-LABEL: st_disjoint_align32_float_int32_t:5825; CHECK-P10: # %bb.0: # %entry5826; CHECK-P10-NEXT: xscvdpsxws f0, f15827; CHECK-P10-NEXT: lis r4, -152645828; CHECK-P10-NEXT: and r3, r3, r45829; CHECK-P10-NEXT: pli r4, 9999900005830; CHECK-P10-NEXT: stfiwx f0, r3, r45831; CHECK-P10-NEXT: blr5832;5833; CHECK-P9-LABEL: st_disjoint_align32_float_int32_t:5834; CHECK-P9: # %bb.0: # %entry5835; CHECK-P9-NEXT: xscvdpsxws f0, f15836; CHECK-P9-NEXT: lis r4, -152645837; CHECK-P9-NEXT: and r3, r3, r45838; CHECK-P9-NEXT: lis r4, 152585839; CHECK-P9-NEXT: ori r4, r4, 417125840; CHECK-P9-NEXT: stfiwx f0, r3, r45841; CHECK-P9-NEXT: blr5842;5843; CHECK-P8-LABEL: st_disjoint_align32_float_int32_t:5844; CHECK-P8: # %bb.0: # %entry5845; CHECK-P8-NEXT: lis r4, -152645846; CHECK-P8-NEXT: xscvdpsxws f0, f15847; CHECK-P8-NEXT: and r3, r3, r45848; CHECK-P8-NEXT: lis r4, 152585849; CHECK-P8-NEXT: ori r4, r4, 417125850; CHECK-P8-NEXT: stfiwx f0, r3, r45851; CHECK-P8-NEXT: blr5852entry:5853 %and = and i64 %ptr, -10003415045854 %conv = fptosi float %str to i325855 %or = or i64 %and, 9999900005856 %0 = inttoptr i64 %or to ptr5857 store i32 %conv, ptr %0, align 165858 ret void5859}5860 5861; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5862define dso_local void @st_not_disjoint64_float_int32_t(i64 %ptr, float %str) {5863; CHECK-P10-LABEL: st_not_disjoint64_float_int32_t:5864; CHECK-P10: # %bb.0: # %entry5865; CHECK-P10-NEXT: xscvdpsxws f0, f15866; CHECK-P10-NEXT: pli r4, 2325867; CHECK-P10-NEXT: pli r5, 35675873295868; CHECK-P10-NEXT: rldimi r5, r4, 32, 05869; CHECK-P10-NEXT: or r3, r3, r55870; CHECK-P10-NEXT: stfiwx f0, 0, r35871; CHECK-P10-NEXT: blr5872;5873; CHECK-PREP10-LABEL: st_not_disjoint64_float_int32_t:5874; CHECK-PREP10: # %bb.0: # %entry5875; CHECK-PREP10-NEXT: li r4, 295876; CHECK-PREP10-NEXT: xscvdpsxws f0, f15877; CHECK-PREP10-NEXT: rldic r4, r4, 35, 245878; CHECK-PREP10-NEXT: oris r4, r4, 544375879; CHECK-PREP10-NEXT: ori r4, r4, 40975880; CHECK-PREP10-NEXT: or r3, r3, r45881; CHECK-PREP10-NEXT: stfiwx f0, 0, r35882; CHECK-PREP10-NEXT: blr5883entry:5884 %conv = fptosi float %str to i325885 %or = or i64 %ptr, 10000000000015886 %0 = inttoptr i64 %or to ptr5887 store i32 %conv, ptr %0, align 45888 ret void5889}5890 5891; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5892define dso_local void @st_disjoint_align64_float_int32_t(i64 %ptr, float %str) {5893; CHECK-P10-LABEL: st_disjoint_align64_float_int32_t:5894; CHECK-P10: # %bb.0: # %entry5895; CHECK-P10-NEXT: xscvdpsxws f0, f15896; CHECK-P10-NEXT: pli r4, 2441406255897; CHECK-P10-NEXT: rldicr r3, r3, 0, 235898; CHECK-P10-NEXT: rldic r4, r4, 12, 245899; CHECK-P10-NEXT: stfiwx f0, r3, r45900; CHECK-P10-NEXT: blr5901;5902; CHECK-PREP10-LABEL: st_disjoint_align64_float_int32_t:5903; CHECK-PREP10: # %bb.0: # %entry5904; CHECK-PREP10-NEXT: xscvdpsxws f0, f15905; CHECK-PREP10-NEXT: lis r4, 37255906; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 235907; CHECK-PREP10-NEXT: ori r4, r4, 190255908; CHECK-PREP10-NEXT: rldic r4, r4, 12, 245909; CHECK-PREP10-NEXT: stfiwx f0, r3, r45910; CHECK-PREP10-NEXT: blr5911entry:5912 %and = and i64 %ptr, -10995116277765913 %conv = fptosi float %str to i325914 %or = or i64 %and, 10000000000005915 %0 = inttoptr i64 %or to ptr5916 store i32 %conv, ptr %0, align 40965917 ret void5918}5919 5920; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5921define dso_local void @st_cst_align16_float_int32_t(float %str) {5922; CHECK-LABEL: st_cst_align16_float_int32_t:5923; CHECK: # %bb.0: # %entry5924; CHECK-NEXT: xscvdpsxws f0, f15925; CHECK-NEXT: li r3, 40805926; CHECK-NEXT: stfiwx f0, 0, r35927; CHECK-NEXT: blr5928entry:5929 %conv = fptosi float %str to i325930 store i32 %conv, ptr inttoptr (i64 4080 to ptr), align 165931 ret void5932}5933 5934; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5935define dso_local void @st_cst_align32_float_int32_t(float %str) {5936; CHECK-P10-LABEL: st_cst_align32_float_int32_t:5937; CHECK-P10: # %bb.0: # %entry5938; CHECK-P10-NEXT: xscvdpsxws f0, f15939; CHECK-P10-NEXT: pli r3, 99999005940; CHECK-P10-NEXT: stfiwx f0, 0, r35941; CHECK-P10-NEXT: blr5942;5943; CHECK-PREP10-LABEL: st_cst_align32_float_int32_t:5944; CHECK-PREP10: # %bb.0: # %entry5945; CHECK-PREP10-NEXT: xscvdpsxws f0, f15946; CHECK-PREP10-NEXT: lis r3, 1525947; CHECK-PREP10-NEXT: ori r3, r3, 384285948; CHECK-PREP10-NEXT: stfiwx f0, 0, r35949; CHECK-PREP10-NEXT: blr5950entry:5951 %conv = fptosi float %str to i325952 store i32 %conv, ptr inttoptr (i64 9999900 to ptr), align 45953 ret void5954}5955 5956; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5957define dso_local void @st_cst_align64_float_int32_t(float %str) {5958; CHECK-P10-LABEL: st_cst_align64_float_int32_t:5959; CHECK-P10: # %bb.0: # %entry5960; CHECK-P10-NEXT: xscvdpsxws f0, f15961; CHECK-P10-NEXT: pli r3, 2441406255962; CHECK-P10-NEXT: rldic r3, r3, 12, 245963; CHECK-P10-NEXT: stfiwx f0, 0, r35964; CHECK-P10-NEXT: blr5965;5966; CHECK-PREP10-LABEL: st_cst_align64_float_int32_t:5967; CHECK-PREP10: # %bb.0: # %entry5968; CHECK-PREP10-NEXT: xscvdpsxws f0, f15969; CHECK-PREP10-NEXT: lis r3, 37255970; CHECK-PREP10-NEXT: ori r3, r3, 190255971; CHECK-PREP10-NEXT: rldic r3, r3, 12, 245972; CHECK-PREP10-NEXT: stfiwx f0, 0, r35973; CHECK-PREP10-NEXT: blr5974entry:5975 %conv = fptosi float %str to i325976 store i32 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40965977 ret void5978}5979 5980; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly5981define dso_local void @st_0_float_uint64_t(i64 %ptr, float %str) {5982; CHECK-POSTP8-LABEL: st_0_float_uint64_t:5983; CHECK-POSTP8: # %bb.0: # %entry5984; CHECK-POSTP8-NEXT: xscvdpuxds v2, f15985; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)5986; CHECK-POSTP8-NEXT: blr5987;5988; CHECK-P8-LABEL: st_0_float_uint64_t:5989; CHECK-P8: # %bb.0: # %entry5990; CHECK-P8-NEXT: xscvdpuxds f0, f15991; CHECK-P8-NEXT: stxsdx f0, 0, r35992; CHECK-P8-NEXT: blr5993entry:5994 %conv = fptoui float %str to i645995 %0 = inttoptr i64 %ptr to ptr5996 store i64 %conv, ptr %0, align 85997 ret void5998}5999 6000; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6001define dso_local void @st_align16_float_uint64_t(ptr nocapture %ptr, float %str) {6002; CHECK-POSTP8-LABEL: st_align16_float_uint64_t:6003; CHECK-POSTP8: # %bb.0: # %entry6004; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16005; CHECK-POSTP8-NEXT: stxsd v2, 8(r3)6006; CHECK-POSTP8-NEXT: blr6007;6008; CHECK-P8-LABEL: st_align16_float_uint64_t:6009; CHECK-P8: # %bb.0: # %entry6010; CHECK-P8-NEXT: xscvdpuxds f0, f16011; CHECK-P8-NEXT: li r4, 86012; CHECK-P8-NEXT: stxsdx f0, r3, r46013; CHECK-P8-NEXT: blr6014entry:6015 %conv = fptoui float %str to i646016 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86017 store i64 %conv, ptr %add.ptr, align 86018 ret void6019}6020 6021; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6022define dso_local void @st_align32_float_uint64_t(ptr nocapture %ptr, float %str) {6023; CHECK-P10-LABEL: st_align32_float_uint64_t:6024; CHECK-P10: # %bb.0: # %entry6025; CHECK-P10-NEXT: xscvdpuxds v2, f16026; CHECK-P10-NEXT: pstxsd v2, 99999000(r3), 06027; CHECK-P10-NEXT: blr6028;6029; CHECK-PREP10-LABEL: st_align32_float_uint64_t:6030; CHECK-PREP10: # %bb.0: # %entry6031; CHECK-PREP10-NEXT: xscvdpuxds f0, f16032; CHECK-PREP10-NEXT: lis r4, 15256033; CHECK-PREP10-NEXT: ori r4, r4, 566006034; CHECK-PREP10-NEXT: stxsdx f0, r3, r46035; CHECK-PREP10-NEXT: blr6036entry:6037 %conv = fptoui float %str to i646038 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006039 store i64 %conv, ptr %add.ptr, align 86040 ret void6041}6042 6043; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6044define dso_local void @st_align64_float_uint64_t(ptr nocapture %ptr, float %str) {6045; CHECK-P10-LABEL: st_align64_float_uint64_t:6046; CHECK-P10: # %bb.0: # %entry6047; CHECK-P10-NEXT: xscvdpuxds f0, f16048; CHECK-P10-NEXT: pli r4, 2441406256049; CHECK-P10-NEXT: rldic r4, r4, 12, 246050; CHECK-P10-NEXT: stxsdx f0, r3, r46051; CHECK-P10-NEXT: blr6052;6053; CHECK-PREP10-LABEL: st_align64_float_uint64_t:6054; CHECK-PREP10: # %bb.0: # %entry6055; CHECK-PREP10-NEXT: xscvdpuxds f0, f16056; CHECK-PREP10-NEXT: lis r4, 37256057; CHECK-PREP10-NEXT: ori r4, r4, 190256058; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246059; CHECK-PREP10-NEXT: stxsdx f0, r3, r46060; CHECK-PREP10-NEXT: blr6061entry:6062 %conv = fptoui float %str to i646063 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006064 store i64 %conv, ptr %add.ptr, align 86065 ret void6066}6067 6068; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6069define dso_local void @st_reg_float_uint64_t(ptr nocapture %ptr, i64 %off, float %str) {6070; CHECK-LABEL: st_reg_float_uint64_t:6071; CHECK: # %bb.0: # %entry6072; CHECK-NEXT: xscvdpuxds f0, f16073; CHECK-NEXT: stxsdx f0, r3, r46074; CHECK-NEXT: blr6075entry:6076 %conv = fptoui float %str to i646077 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6078 store i64 %conv, ptr %add.ptr, align 86079 ret void6080}6081 6082; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6083define dso_local void @st_or1_float_uint64_t(i64 %ptr, i8 zeroext %off, float %str) {6084; CHECK-POSTP8-LABEL: st_or1_float_uint64_t:6085; CHECK-POSTP8: # %bb.0: # %entry6086; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16087; CHECK-POSTP8-NEXT: or r3, r4, r36088; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6089; CHECK-POSTP8-NEXT: blr6090;6091; CHECK-P8-LABEL: st_or1_float_uint64_t:6092; CHECK-P8: # %bb.0: # %entry6093; CHECK-P8-NEXT: xscvdpuxds f0, f16094; CHECK-P8-NEXT: or r3, r4, r36095; CHECK-P8-NEXT: stxsdx f0, 0, r36096; CHECK-P8-NEXT: blr6097entry:6098 %conv = fptoui float %str to i646099 %conv1 = zext i8 %off to i646100 %or = or i64 %conv1, %ptr6101 %0 = inttoptr i64 %or to ptr6102 store i64 %conv, ptr %0, align 86103 ret void6104}6105 6106; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6107define dso_local void @st_not_disjoint16_float_uint64_t(i64 %ptr, float %str) {6108; CHECK-POSTP8-LABEL: st_not_disjoint16_float_uint64_t:6109; CHECK-POSTP8: # %bb.0: # %entry6110; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16111; CHECK-POSTP8-NEXT: ori r3, r3, 66112; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6113; CHECK-POSTP8-NEXT: blr6114;6115; CHECK-P8-LABEL: st_not_disjoint16_float_uint64_t:6116; CHECK-P8: # %bb.0: # %entry6117; CHECK-P8-NEXT: xscvdpuxds f0, f16118; CHECK-P8-NEXT: ori r3, r3, 66119; CHECK-P8-NEXT: stxsdx f0, 0, r36120; CHECK-P8-NEXT: blr6121entry:6122 %conv = fptoui float %str to i646123 %or = or i64 %ptr, 66124 %0 = inttoptr i64 %or to ptr6125 store i64 %conv, ptr %0, align 86126 ret void6127}6128 6129; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6130define dso_local void @st_disjoint_align16_float_uint64_t(i64 %ptr, float %str) {6131; CHECK-POSTP8-LABEL: st_disjoint_align16_float_uint64_t:6132; CHECK-POSTP8: # %bb.0: # %entry6133; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16134; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 516135; CHECK-POSTP8-NEXT: stxsd v2, 24(r3)6136; CHECK-POSTP8-NEXT: blr6137;6138; CHECK-P8-LABEL: st_disjoint_align16_float_uint64_t:6139; CHECK-P8: # %bb.0: # %entry6140; CHECK-P8-NEXT: xscvdpuxds f0, f16141; CHECK-P8-NEXT: rldicr r3, r3, 0, 516142; CHECK-P8-NEXT: ori r3, r3, 246143; CHECK-P8-NEXT: stxsdx f0, 0, r36144; CHECK-P8-NEXT: blr6145entry:6146 %and = and i64 %ptr, -40966147 %conv = fptoui float %str to i646148 %or = or i64 %and, 246149 %0 = inttoptr i64 %or to ptr6150 store i64 %conv, ptr %0, align 86151 ret void6152}6153 6154; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6155define dso_local void @st_not_disjoint32_float_uint64_t(i64 %ptr, float %str) {6156; CHECK-POSTP8-LABEL: st_not_disjoint32_float_uint64_t:6157; CHECK-POSTP8: # %bb.0: # %entry6158; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16159; CHECK-POSTP8-NEXT: ori r3, r3, 344636160; CHECK-POSTP8-NEXT: oris r3, r3, 16161; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6162; CHECK-POSTP8-NEXT: blr6163;6164; CHECK-P8-LABEL: st_not_disjoint32_float_uint64_t:6165; CHECK-P8: # %bb.0: # %entry6166; CHECK-P8-NEXT: xscvdpuxds f0, f16167; CHECK-P8-NEXT: ori r3, r3, 344636168; CHECK-P8-NEXT: oris r3, r3, 16169; CHECK-P8-NEXT: stxsdx f0, 0, r36170; CHECK-P8-NEXT: blr6171entry:6172 %conv = fptoui float %str to i646173 %or = or i64 %ptr, 999996174 %0 = inttoptr i64 %or to ptr6175 store i64 %conv, ptr %0, align 86176 ret void6177}6178 6179; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6180define dso_local void @st_disjoint_align32_float_uint64_t(i64 %ptr, float %str) {6181; CHECK-P10-LABEL: st_disjoint_align32_float_uint64_t:6182; CHECK-P10: # %bb.0: # %entry6183; CHECK-P10-NEXT: xscvdpuxds v2, f16184; CHECK-P10-NEXT: lis r4, -152646185; CHECK-P10-NEXT: and r3, r3, r46186; CHECK-P10-NEXT: pstxsd v2, 999990000(r3), 06187; CHECK-P10-NEXT: blr6188;6189; CHECK-P9-LABEL: st_disjoint_align32_float_uint64_t:6190; CHECK-P9: # %bb.0: # %entry6191; CHECK-P9-NEXT: xscvdpuxds f0, f16192; CHECK-P9-NEXT: lis r4, -152646193; CHECK-P9-NEXT: and r3, r3, r46194; CHECK-P9-NEXT: lis r4, 152586195; CHECK-P9-NEXT: ori r4, r4, 417126196; CHECK-P9-NEXT: stxsdx f0, r3, r46197; CHECK-P9-NEXT: blr6198;6199; CHECK-P8-LABEL: st_disjoint_align32_float_uint64_t:6200; CHECK-P8: # %bb.0: # %entry6201; CHECK-P8-NEXT: lis r4, -152646202; CHECK-P8-NEXT: xscvdpuxds f0, f16203; CHECK-P8-NEXT: and r3, r3, r46204; CHECK-P8-NEXT: lis r4, 152586205; CHECK-P8-NEXT: ori r4, r4, 417126206; CHECK-P8-NEXT: stxsdx f0, r3, r46207; CHECK-P8-NEXT: blr6208entry:6209 %and = and i64 %ptr, -10003415046210 %conv = fptoui float %str to i646211 %or = or i64 %and, 9999900006212 %0 = inttoptr i64 %or to ptr6213 store i64 %conv, ptr %0, align 166214 ret void6215}6216 6217; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6218define dso_local void @st_not_disjoint64_float_uint64_t(i64 %ptr, float %str) {6219; CHECK-P10-LABEL: st_not_disjoint64_float_uint64_t:6220; CHECK-P10: # %bb.0: # %entry6221; CHECK-P10-NEXT: xscvdpuxds v2, f16222; CHECK-P10-NEXT: pli r4, 2326223; CHECK-P10-NEXT: pli r5, 35675873296224; CHECK-P10-NEXT: rldimi r5, r4, 32, 06225; CHECK-P10-NEXT: or r3, r3, r56226; CHECK-P10-NEXT: stxsd v2, 0(r3)6227; CHECK-P10-NEXT: blr6228;6229; CHECK-P9-LABEL: st_not_disjoint64_float_uint64_t:6230; CHECK-P9: # %bb.0: # %entry6231; CHECK-P9-NEXT: li r4, 296232; CHECK-P9-NEXT: xscvdpuxds v2, f16233; CHECK-P9-NEXT: rldic r4, r4, 35, 246234; CHECK-P9-NEXT: oris r4, r4, 544376235; CHECK-P9-NEXT: ori r4, r4, 40976236; CHECK-P9-NEXT: or r3, r3, r46237; CHECK-P9-NEXT: stxsd v2, 0(r3)6238; CHECK-P9-NEXT: blr6239;6240; CHECK-P8-LABEL: st_not_disjoint64_float_uint64_t:6241; CHECK-P8: # %bb.0: # %entry6242; CHECK-P8-NEXT: li r4, 296243; CHECK-P8-NEXT: xscvdpuxds f0, f16244; CHECK-P8-NEXT: rldic r4, r4, 35, 246245; CHECK-P8-NEXT: oris r4, r4, 544376246; CHECK-P8-NEXT: ori r4, r4, 40976247; CHECK-P8-NEXT: or r3, r3, r46248; CHECK-P8-NEXT: stxsdx f0, 0, r36249; CHECK-P8-NEXT: blr6250entry:6251 %conv = fptoui float %str to i646252 %or = or i64 %ptr, 10000000000016253 %0 = inttoptr i64 %or to ptr6254 store i64 %conv, ptr %0, align 86255 ret void6256}6257 6258; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6259define dso_local void @st_disjoint_align64_float_uint64_t(i64 %ptr, float %str) {6260; CHECK-P10-LABEL: st_disjoint_align64_float_uint64_t:6261; CHECK-P10: # %bb.0: # %entry6262; CHECK-P10-NEXT: xscvdpuxds f0, f16263; CHECK-P10-NEXT: pli r4, 2441406256264; CHECK-P10-NEXT: rldicr r3, r3, 0, 236265; CHECK-P10-NEXT: rldic r4, r4, 12, 246266; CHECK-P10-NEXT: stxsdx f0, r3, r46267; CHECK-P10-NEXT: blr6268;6269; CHECK-PREP10-LABEL: st_disjoint_align64_float_uint64_t:6270; CHECK-PREP10: # %bb.0: # %entry6271; CHECK-PREP10-NEXT: xscvdpuxds f0, f16272; CHECK-PREP10-NEXT: lis r4, 37256273; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236274; CHECK-PREP10-NEXT: ori r4, r4, 190256275; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246276; CHECK-PREP10-NEXT: stxsdx f0, r3, r46277; CHECK-PREP10-NEXT: blr6278entry:6279 %and = and i64 %ptr, -10995116277766280 %conv = fptoui float %str to i646281 %or = or i64 %and, 10000000000006282 %0 = inttoptr i64 %or to ptr6283 store i64 %conv, ptr %0, align 40966284 ret void6285}6286 6287; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6288define dso_local void @st_cst_align16_float_uint64_t(float %str) {6289; CHECK-POSTP8-LABEL: st_cst_align16_float_uint64_t:6290; CHECK-POSTP8: # %bb.0: # %entry6291; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16292; CHECK-POSTP8-NEXT: stxsd v2, 4080(0)6293; CHECK-POSTP8-NEXT: blr6294;6295; CHECK-P8-LABEL: st_cst_align16_float_uint64_t:6296; CHECK-P8: # %bb.0: # %entry6297; CHECK-P8-NEXT: xscvdpuxds f0, f16298; CHECK-P8-NEXT: li r3, 40806299; CHECK-P8-NEXT: stxsdx f0, 0, r36300; CHECK-P8-NEXT: blr6301entry:6302 %conv = fptoui float %str to i646303 store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 166304 ret void6305}6306 6307; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6308define dso_local void @st_cst_align32_float_uint64_t(float %str) {6309; CHECK-POSTP8-LABEL: st_cst_align32_float_uint64_t:6310; CHECK-POSTP8: # %bb.0: # %entry6311; CHECK-POSTP8-NEXT: xscvdpuxds v2, f16312; CHECK-POSTP8-NEXT: lis r3, 1536313; CHECK-POSTP8-NEXT: stxsd v2, -27108(r3)6314; CHECK-POSTP8-NEXT: blr6315;6316; CHECK-P8-LABEL: st_cst_align32_float_uint64_t:6317; CHECK-P8: # %bb.0: # %entry6318; CHECK-P8-NEXT: xscvdpuxds f0, f16319; CHECK-P8-NEXT: lis r3, 1526320; CHECK-P8-NEXT: ori r3, r3, 384286321; CHECK-P8-NEXT: stxsdx f0, 0, r36322; CHECK-P8-NEXT: blr6323entry:6324 %conv = fptoui float %str to i646325 store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 86326 ret void6327}6328 6329; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6330define dso_local void @st_cst_align64_float_uint64_t(float %str) {6331; CHECK-P10-LABEL: st_cst_align64_float_uint64_t:6332; CHECK-P10: # %bb.0: # %entry6333; CHECK-P10-NEXT: xscvdpuxds v2, f16334; CHECK-P10-NEXT: pli r3, 2441406256335; CHECK-P10-NEXT: rldic r3, r3, 12, 246336; CHECK-P10-NEXT: stxsd v2, 0(r3)6337; CHECK-P10-NEXT: blr6338;6339; CHECK-P9-LABEL: st_cst_align64_float_uint64_t:6340; CHECK-P9: # %bb.0: # %entry6341; CHECK-P9-NEXT: xscvdpuxds v2, f16342; CHECK-P9-NEXT: lis r3, 37256343; CHECK-P9-NEXT: ori r3, r3, 190256344; CHECK-P9-NEXT: rldic r3, r3, 12, 246345; CHECK-P9-NEXT: stxsd v2, 0(r3)6346; CHECK-P9-NEXT: blr6347;6348; CHECK-P8-LABEL: st_cst_align64_float_uint64_t:6349; CHECK-P8: # %bb.0: # %entry6350; CHECK-P8-NEXT: xscvdpuxds f0, f16351; CHECK-P8-NEXT: lis r3, 37256352; CHECK-P8-NEXT: ori r3, r3, 190256353; CHECK-P8-NEXT: rldic r3, r3, 12, 246354; CHECK-P8-NEXT: stxsdx f0, 0, r36355; CHECK-P8-NEXT: blr6356entry:6357 %conv = fptoui float %str to i646358 store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966359 ret void6360}6361 6362; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6363define dso_local void @st_0_float_int64_t(i64 %ptr, float %str) {6364; CHECK-POSTP8-LABEL: st_0_float_int64_t:6365; CHECK-POSTP8: # %bb.0: # %entry6366; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16367; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6368; CHECK-POSTP8-NEXT: blr6369;6370; CHECK-P8-LABEL: st_0_float_int64_t:6371; CHECK-P8: # %bb.0: # %entry6372; CHECK-P8-NEXT: xscvdpsxds f0, f16373; CHECK-P8-NEXT: stxsdx f0, 0, r36374; CHECK-P8-NEXT: blr6375entry:6376 %conv = fptosi float %str to i646377 %0 = inttoptr i64 %ptr to ptr6378 store i64 %conv, ptr %0, align 86379 ret void6380}6381 6382; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6383define dso_local void @st_align16_float_int64_t(ptr nocapture %ptr, float %str) {6384; CHECK-POSTP8-LABEL: st_align16_float_int64_t:6385; CHECK-POSTP8: # %bb.0: # %entry6386; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16387; CHECK-POSTP8-NEXT: stxsd v2, 8(r3)6388; CHECK-POSTP8-NEXT: blr6389;6390; CHECK-P8-LABEL: st_align16_float_int64_t:6391; CHECK-P8: # %bb.0: # %entry6392; CHECK-P8-NEXT: xscvdpsxds f0, f16393; CHECK-P8-NEXT: li r4, 86394; CHECK-P8-NEXT: stxsdx f0, r3, r46395; CHECK-P8-NEXT: blr6396entry:6397 %conv = fptosi float %str to i646398 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86399 store i64 %conv, ptr %add.ptr, align 86400 ret void6401}6402 6403; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6404define dso_local void @st_align32_float_int64_t(ptr nocapture %ptr, float %str) {6405; CHECK-P10-LABEL: st_align32_float_int64_t:6406; CHECK-P10: # %bb.0: # %entry6407; CHECK-P10-NEXT: xscvdpsxds v2, f16408; CHECK-P10-NEXT: pstxsd v2, 99999000(r3), 06409; CHECK-P10-NEXT: blr6410;6411; CHECK-PREP10-LABEL: st_align32_float_int64_t:6412; CHECK-PREP10: # %bb.0: # %entry6413; CHECK-PREP10-NEXT: xscvdpsxds f0, f16414; CHECK-PREP10-NEXT: lis r4, 15256415; CHECK-PREP10-NEXT: ori r4, r4, 566006416; CHECK-PREP10-NEXT: stxsdx f0, r3, r46417; CHECK-PREP10-NEXT: blr6418entry:6419 %conv = fptosi float %str to i646420 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006421 store i64 %conv, ptr %add.ptr, align 86422 ret void6423}6424 6425; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6426define dso_local void @st_align64_float_int64_t(ptr nocapture %ptr, float %str) {6427; CHECK-P10-LABEL: st_align64_float_int64_t:6428; CHECK-P10: # %bb.0: # %entry6429; CHECK-P10-NEXT: xscvdpsxds f0, f16430; CHECK-P10-NEXT: pli r4, 2441406256431; CHECK-P10-NEXT: rldic r4, r4, 12, 246432; CHECK-P10-NEXT: stxsdx f0, r3, r46433; CHECK-P10-NEXT: blr6434;6435; CHECK-PREP10-LABEL: st_align64_float_int64_t:6436; CHECK-PREP10: # %bb.0: # %entry6437; CHECK-PREP10-NEXT: xscvdpsxds f0, f16438; CHECK-PREP10-NEXT: lis r4, 37256439; CHECK-PREP10-NEXT: ori r4, r4, 190256440; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246441; CHECK-PREP10-NEXT: stxsdx f0, r3, r46442; CHECK-PREP10-NEXT: blr6443entry:6444 %conv = fptosi float %str to i646445 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006446 store i64 %conv, ptr %add.ptr, align 86447 ret void6448}6449 6450; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6451define dso_local void @st_reg_float_int64_t(ptr nocapture %ptr, i64 %off, float %str) {6452; CHECK-LABEL: st_reg_float_int64_t:6453; CHECK: # %bb.0: # %entry6454; CHECK-NEXT: xscvdpsxds f0, f16455; CHECK-NEXT: stxsdx f0, r3, r46456; CHECK-NEXT: blr6457entry:6458 %conv = fptosi float %str to i646459 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6460 store i64 %conv, ptr %add.ptr, align 86461 ret void6462}6463 6464; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6465define dso_local void @st_or1_float_int64_t(i64 %ptr, i8 zeroext %off, float %str) {6466; CHECK-POSTP8-LABEL: st_or1_float_int64_t:6467; CHECK-POSTP8: # %bb.0: # %entry6468; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16469; CHECK-POSTP8-NEXT: or r3, r4, r36470; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6471; CHECK-POSTP8-NEXT: blr6472;6473; CHECK-P8-LABEL: st_or1_float_int64_t:6474; CHECK-P8: # %bb.0: # %entry6475; CHECK-P8-NEXT: xscvdpsxds f0, f16476; CHECK-P8-NEXT: or r3, r4, r36477; CHECK-P8-NEXT: stxsdx f0, 0, r36478; CHECK-P8-NEXT: blr6479entry:6480 %conv = fptosi float %str to i646481 %conv1 = zext i8 %off to i646482 %or = or i64 %conv1, %ptr6483 %0 = inttoptr i64 %or to ptr6484 store i64 %conv, ptr %0, align 86485 ret void6486}6487 6488; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6489define dso_local void @st_not_disjoint16_float_int64_t(i64 %ptr, float %str) {6490; CHECK-POSTP8-LABEL: st_not_disjoint16_float_int64_t:6491; CHECK-POSTP8: # %bb.0: # %entry6492; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16493; CHECK-POSTP8-NEXT: ori r3, r3, 66494; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6495; CHECK-POSTP8-NEXT: blr6496;6497; CHECK-P8-LABEL: st_not_disjoint16_float_int64_t:6498; CHECK-P8: # %bb.0: # %entry6499; CHECK-P8-NEXT: xscvdpsxds f0, f16500; CHECK-P8-NEXT: ori r3, r3, 66501; CHECK-P8-NEXT: stxsdx f0, 0, r36502; CHECK-P8-NEXT: blr6503entry:6504 %conv = fptosi float %str to i646505 %or = or i64 %ptr, 66506 %0 = inttoptr i64 %or to ptr6507 store i64 %conv, ptr %0, align 86508 ret void6509}6510 6511; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6512define dso_local void @st_disjoint_align16_float_int64_t(i64 %ptr, float %str) {6513; CHECK-POSTP8-LABEL: st_disjoint_align16_float_int64_t:6514; CHECK-POSTP8: # %bb.0: # %entry6515; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16516; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 516517; CHECK-POSTP8-NEXT: stxsd v2, 24(r3)6518; CHECK-POSTP8-NEXT: blr6519;6520; CHECK-P8-LABEL: st_disjoint_align16_float_int64_t:6521; CHECK-P8: # %bb.0: # %entry6522; CHECK-P8-NEXT: xscvdpsxds f0, f16523; CHECK-P8-NEXT: rldicr r3, r3, 0, 516524; CHECK-P8-NEXT: ori r3, r3, 246525; CHECK-P8-NEXT: stxsdx f0, 0, r36526; CHECK-P8-NEXT: blr6527entry:6528 %and = and i64 %ptr, -40966529 %conv = fptosi float %str to i646530 %or = or i64 %and, 246531 %0 = inttoptr i64 %or to ptr6532 store i64 %conv, ptr %0, align 86533 ret void6534}6535 6536; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6537define dso_local void @st_not_disjoint32_float_int64_t(i64 %ptr, float %str) {6538; CHECK-POSTP8-LABEL: st_not_disjoint32_float_int64_t:6539; CHECK-POSTP8: # %bb.0: # %entry6540; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16541; CHECK-POSTP8-NEXT: ori r3, r3, 344636542; CHECK-POSTP8-NEXT: oris r3, r3, 16543; CHECK-POSTP8-NEXT: stxsd v2, 0(r3)6544; CHECK-POSTP8-NEXT: blr6545;6546; CHECK-P8-LABEL: st_not_disjoint32_float_int64_t:6547; CHECK-P8: # %bb.0: # %entry6548; CHECK-P8-NEXT: xscvdpsxds f0, f16549; CHECK-P8-NEXT: ori r3, r3, 344636550; CHECK-P8-NEXT: oris r3, r3, 16551; CHECK-P8-NEXT: stxsdx f0, 0, r36552; CHECK-P8-NEXT: blr6553entry:6554 %conv = fptosi float %str to i646555 %or = or i64 %ptr, 999996556 %0 = inttoptr i64 %or to ptr6557 store i64 %conv, ptr %0, align 86558 ret void6559}6560 6561; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6562define dso_local void @st_disjoint_align32_float_int64_t(i64 %ptr, float %str) {6563; CHECK-P10-LABEL: st_disjoint_align32_float_int64_t:6564; CHECK-P10: # %bb.0: # %entry6565; CHECK-P10-NEXT: xscvdpsxds v2, f16566; CHECK-P10-NEXT: lis r4, -152646567; CHECK-P10-NEXT: and r3, r3, r46568; CHECK-P10-NEXT: pstxsd v2, 999990000(r3), 06569; CHECK-P10-NEXT: blr6570;6571; CHECK-P9-LABEL: st_disjoint_align32_float_int64_t:6572; CHECK-P9: # %bb.0: # %entry6573; CHECK-P9-NEXT: xscvdpsxds f0, f16574; CHECK-P9-NEXT: lis r4, -152646575; CHECK-P9-NEXT: and r3, r3, r46576; CHECK-P9-NEXT: lis r4, 152586577; CHECK-P9-NEXT: ori r4, r4, 417126578; CHECK-P9-NEXT: stxsdx f0, r3, r46579; CHECK-P9-NEXT: blr6580;6581; CHECK-P8-LABEL: st_disjoint_align32_float_int64_t:6582; CHECK-P8: # %bb.0: # %entry6583; CHECK-P8-NEXT: lis r4, -152646584; CHECK-P8-NEXT: xscvdpsxds f0, f16585; CHECK-P8-NEXT: and r3, r3, r46586; CHECK-P8-NEXT: lis r4, 152586587; CHECK-P8-NEXT: ori r4, r4, 417126588; CHECK-P8-NEXT: stxsdx f0, r3, r46589; CHECK-P8-NEXT: blr6590entry:6591 %and = and i64 %ptr, -10003415046592 %conv = fptosi float %str to i646593 %or = or i64 %and, 9999900006594 %0 = inttoptr i64 %or to ptr6595 store i64 %conv, ptr %0, align 166596 ret void6597}6598 6599; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6600define dso_local void @st_not_disjoint64_float_int64_t(i64 %ptr, float %str) {6601; CHECK-P10-LABEL: st_not_disjoint64_float_int64_t:6602; CHECK-P10: # %bb.0: # %entry6603; CHECK-P10-NEXT: xscvdpsxds v2, f16604; CHECK-P10-NEXT: pli r4, 2326605; CHECK-P10-NEXT: pli r5, 35675873296606; CHECK-P10-NEXT: rldimi r5, r4, 32, 06607; CHECK-P10-NEXT: or r3, r3, r56608; CHECK-P10-NEXT: stxsd v2, 0(r3)6609; CHECK-P10-NEXT: blr6610;6611; CHECK-P9-LABEL: st_not_disjoint64_float_int64_t:6612; CHECK-P9: # %bb.0: # %entry6613; CHECK-P9-NEXT: li r4, 296614; CHECK-P9-NEXT: xscvdpsxds v2, f16615; CHECK-P9-NEXT: rldic r4, r4, 35, 246616; CHECK-P9-NEXT: oris r4, r4, 544376617; CHECK-P9-NEXT: ori r4, r4, 40976618; CHECK-P9-NEXT: or r3, r3, r46619; CHECK-P9-NEXT: stxsd v2, 0(r3)6620; CHECK-P9-NEXT: blr6621;6622; CHECK-P8-LABEL: st_not_disjoint64_float_int64_t:6623; CHECK-P8: # %bb.0: # %entry6624; CHECK-P8-NEXT: li r4, 296625; CHECK-P8-NEXT: xscvdpsxds f0, f16626; CHECK-P8-NEXT: rldic r4, r4, 35, 246627; CHECK-P8-NEXT: oris r4, r4, 544376628; CHECK-P8-NEXT: ori r4, r4, 40976629; CHECK-P8-NEXT: or r3, r3, r46630; CHECK-P8-NEXT: stxsdx f0, 0, r36631; CHECK-P8-NEXT: blr6632entry:6633 %conv = fptosi float %str to i646634 %or = or i64 %ptr, 10000000000016635 %0 = inttoptr i64 %or to ptr6636 store i64 %conv, ptr %0, align 86637 ret void6638}6639 6640; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6641define dso_local void @st_disjoint_align64_float_int64_t(i64 %ptr, float %str) {6642; CHECK-P10-LABEL: st_disjoint_align64_float_int64_t:6643; CHECK-P10: # %bb.0: # %entry6644; CHECK-P10-NEXT: xscvdpsxds f0, f16645; CHECK-P10-NEXT: pli r4, 2441406256646; CHECK-P10-NEXT: rldicr r3, r3, 0, 236647; CHECK-P10-NEXT: rldic r4, r4, 12, 246648; CHECK-P10-NEXT: stxsdx f0, r3, r46649; CHECK-P10-NEXT: blr6650;6651; CHECK-PREP10-LABEL: st_disjoint_align64_float_int64_t:6652; CHECK-PREP10: # %bb.0: # %entry6653; CHECK-PREP10-NEXT: xscvdpsxds f0, f16654; CHECK-PREP10-NEXT: lis r4, 37256655; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236656; CHECK-PREP10-NEXT: ori r4, r4, 190256657; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246658; CHECK-PREP10-NEXT: stxsdx f0, r3, r46659; CHECK-PREP10-NEXT: blr6660entry:6661 %and = and i64 %ptr, -10995116277766662 %conv = fptosi float %str to i646663 %or = or i64 %and, 10000000000006664 %0 = inttoptr i64 %or to ptr6665 store i64 %conv, ptr %0, align 40966666 ret void6667}6668 6669; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6670define dso_local void @st_cst_align16_float_int64_t(float %str) {6671; CHECK-POSTP8-LABEL: st_cst_align16_float_int64_t:6672; CHECK-POSTP8: # %bb.0: # %entry6673; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16674; CHECK-POSTP8-NEXT: stxsd v2, 4080(0)6675; CHECK-POSTP8-NEXT: blr6676;6677; CHECK-P8-LABEL: st_cst_align16_float_int64_t:6678; CHECK-P8: # %bb.0: # %entry6679; CHECK-P8-NEXT: xscvdpsxds f0, f16680; CHECK-P8-NEXT: li r3, 40806681; CHECK-P8-NEXT: stxsdx f0, 0, r36682; CHECK-P8-NEXT: blr6683entry:6684 %conv = fptosi float %str to i646685 store i64 %conv, ptr inttoptr (i64 4080 to ptr), align 166686 ret void6687}6688 6689; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6690define dso_local void @st_cst_align32_float_int64_t(float %str) {6691; CHECK-POSTP8-LABEL: st_cst_align32_float_int64_t:6692; CHECK-POSTP8: # %bb.0: # %entry6693; CHECK-POSTP8-NEXT: xscvdpsxds v2, f16694; CHECK-POSTP8-NEXT: lis r3, 1536695; CHECK-POSTP8-NEXT: stxsd v2, -27108(r3)6696; CHECK-POSTP8-NEXT: blr6697;6698; CHECK-P8-LABEL: st_cst_align32_float_int64_t:6699; CHECK-P8: # %bb.0: # %entry6700; CHECK-P8-NEXT: xscvdpsxds f0, f16701; CHECK-P8-NEXT: lis r3, 1526702; CHECK-P8-NEXT: ori r3, r3, 384286703; CHECK-P8-NEXT: stxsdx f0, 0, r36704; CHECK-P8-NEXT: blr6705entry:6706 %conv = fptosi float %str to i646707 store i64 %conv, ptr inttoptr (i64 9999900 to ptr), align 86708 ret void6709}6710 6711; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6712define dso_local void @st_cst_align64_float_int64_t(float %str) {6713; CHECK-P10-LABEL: st_cst_align64_float_int64_t:6714; CHECK-P10: # %bb.0: # %entry6715; CHECK-P10-NEXT: xscvdpsxds v2, f16716; CHECK-P10-NEXT: pli r3, 2441406256717; CHECK-P10-NEXT: rldic r3, r3, 12, 246718; CHECK-P10-NEXT: stxsd v2, 0(r3)6719; CHECK-P10-NEXT: blr6720;6721; CHECK-P9-LABEL: st_cst_align64_float_int64_t:6722; CHECK-P9: # %bb.0: # %entry6723; CHECK-P9-NEXT: xscvdpsxds v2, f16724; CHECK-P9-NEXT: lis r3, 37256725; CHECK-P9-NEXT: ori r3, r3, 190256726; CHECK-P9-NEXT: rldic r3, r3, 12, 246727; CHECK-P9-NEXT: stxsd v2, 0(r3)6728; CHECK-P9-NEXT: blr6729;6730; CHECK-P8-LABEL: st_cst_align64_float_int64_t:6731; CHECK-P8: # %bb.0: # %entry6732; CHECK-P8-NEXT: xscvdpsxds f0, f16733; CHECK-P8-NEXT: lis r3, 37256734; CHECK-P8-NEXT: ori r3, r3, 190256735; CHECK-P8-NEXT: rldic r3, r3, 12, 246736; CHECK-P8-NEXT: stxsdx f0, 0, r36737; CHECK-P8-NEXT: blr6738entry:6739 %conv = fptosi float %str to i646740 store i64 %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40966741 ret void6742}6743 6744; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6745define dso_local void @st_0_float_float(i64 %ptr, float %str) {6746; CHECK-LABEL: st_0_float_float:6747; CHECK: # %bb.0: # %entry6748; CHECK-NEXT: stfs f1, 0(r3)6749; CHECK-NEXT: blr6750entry:6751 %0 = inttoptr i64 %ptr to ptr6752 store float %str, ptr %0, align 46753 ret void6754}6755 6756; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6757define dso_local void @st_align16_float_float(ptr nocapture %ptr, float %str) {6758; CHECK-LABEL: st_align16_float_float:6759; CHECK: # %bb.0: # %entry6760; CHECK-NEXT: stfs f1, 8(r3)6761; CHECK-NEXT: blr6762entry:6763 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 86764 store float %str, ptr %add.ptr, align 46765 ret void6766}6767 6768; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6769define dso_local void @st_align32_float_float(ptr nocapture %ptr, float %str) {6770; CHECK-P10-LABEL: st_align32_float_float:6771; CHECK-P10: # %bb.0: # %entry6772; CHECK-P10-NEXT: pstfs f1, 99999000(r3), 06773; CHECK-P10-NEXT: blr6774;6775; CHECK-PREP10-LABEL: st_align32_float_float:6776; CHECK-PREP10: # %bb.0: # %entry6777; CHECK-PREP10-NEXT: lis r4, 15256778; CHECK-PREP10-NEXT: ori r4, r4, 566006779; CHECK-PREP10-NEXT: stfsx f1, r3, r46780; CHECK-PREP10-NEXT: blr6781entry:6782 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990006783 store float %str, ptr %add.ptr, align 46784 ret void6785}6786 6787; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6788define dso_local void @st_align64_float_float(ptr nocapture %ptr, float %str) {6789; CHECK-P10-LABEL: st_align64_float_float:6790; CHECK-P10: # %bb.0: # %entry6791; CHECK-P10-NEXT: pli r4, 2441406256792; CHECK-P10-NEXT: rldic r4, r4, 12, 246793; CHECK-P10-NEXT: stfsx f1, r3, r46794; CHECK-P10-NEXT: blr6795;6796; CHECK-PREP10-LABEL: st_align64_float_float:6797; CHECK-PREP10: # %bb.0: # %entry6798; CHECK-PREP10-NEXT: lis r4, 37256799; CHECK-PREP10-NEXT: ori r4, r4, 190256800; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246801; CHECK-PREP10-NEXT: stfsx f1, r3, r46802; CHECK-PREP10-NEXT: blr6803entry:6804 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000006805 store float %str, ptr %add.ptr, align 46806 ret void6807}6808 6809; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6810define dso_local void @st_reg_float_float(ptr nocapture %ptr, i64 %off, float %str) {6811; CHECK-LABEL: st_reg_float_float:6812; CHECK: # %bb.0: # %entry6813; CHECK-NEXT: stfsx f1, r3, r46814; CHECK-NEXT: blr6815entry:6816 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off6817 store float %str, ptr %add.ptr, align 46818 ret void6819}6820 6821; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6822define dso_local void @st_or1_float_float(i64 %ptr, i8 zeroext %off, float %str) {6823; CHECK-LABEL: st_or1_float_float:6824; CHECK: # %bb.0: # %entry6825; CHECK-NEXT: or r3, r4, r36826; CHECK-NEXT: stfs f1, 0(r3)6827; CHECK-NEXT: blr6828entry:6829 %conv = zext i8 %off to i646830 %or = or i64 %conv, %ptr6831 %0 = inttoptr i64 %or to ptr6832 store float %str, ptr %0, align 46833 ret void6834}6835 6836; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6837define dso_local void @st_not_disjoint16_float_float(i64 %ptr, float %str) {6838; CHECK-LABEL: st_not_disjoint16_float_float:6839; CHECK: # %bb.0: # %entry6840; CHECK-NEXT: ori r3, r3, 66841; CHECK-NEXT: stfs f1, 0(r3)6842; CHECK-NEXT: blr6843entry:6844 %or = or i64 %ptr, 66845 %0 = inttoptr i64 %or to ptr6846 store float %str, ptr %0, align 46847 ret void6848}6849 6850; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6851define dso_local void @st_disjoint_align16_float_float(i64 %ptr, float %str) {6852; CHECK-LABEL: st_disjoint_align16_float_float:6853; CHECK: # %bb.0: # %entry6854; CHECK-NEXT: rldicr r3, r3, 0, 516855; CHECK-NEXT: stfs f1, 24(r3)6856; CHECK-NEXT: blr6857entry:6858 %and = and i64 %ptr, -40966859 %or = or i64 %and, 246860 %0 = inttoptr i64 %or to ptr6861 store float %str, ptr %0, align 86862 ret void6863}6864 6865; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6866define dso_local void @st_not_disjoint32_float_float(i64 %ptr, float %str) {6867; CHECK-LABEL: st_not_disjoint32_float_float:6868; CHECK: # %bb.0: # %entry6869; CHECK-NEXT: ori r3, r3, 344636870; CHECK-NEXT: oris r3, r3, 16871; CHECK-NEXT: stfs f1, 0(r3)6872; CHECK-NEXT: blr6873entry:6874 %or = or i64 %ptr, 999996875 %0 = inttoptr i64 %or to ptr6876 store float %str, ptr %0, align 46877 ret void6878}6879 6880; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6881define dso_local void @st_disjoint_align32_float_float(i64 %ptr, float %str) {6882; CHECK-P10-LABEL: st_disjoint_align32_float_float:6883; CHECK-P10: # %bb.0: # %entry6884; CHECK-P10-NEXT: lis r4, -152646885; CHECK-P10-NEXT: and r3, r3, r46886; CHECK-P10-NEXT: pstfs f1, 999990000(r3), 06887; CHECK-P10-NEXT: blr6888;6889; CHECK-PREP10-LABEL: st_disjoint_align32_float_float:6890; CHECK-PREP10: # %bb.0: # %entry6891; CHECK-PREP10-NEXT: lis r4, -152646892; CHECK-PREP10-NEXT: and r3, r3, r46893; CHECK-PREP10-NEXT: lis r4, 152586894; CHECK-PREP10-NEXT: ori r4, r4, 417126895; CHECK-PREP10-NEXT: stfsx f1, r3, r46896; CHECK-PREP10-NEXT: blr6897entry:6898 %and = and i64 %ptr, -10003415046899 %or = or i64 %and, 9999900006900 %0 = inttoptr i64 %or to ptr6901 store float %str, ptr %0, align 166902 ret void6903}6904 6905; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6906define dso_local void @st_not_disjoint64_float_float(i64 %ptr, float %str) {6907; CHECK-P10-LABEL: st_not_disjoint64_float_float:6908; CHECK-P10: # %bb.0: # %entry6909; CHECK-P10-NEXT: pli r4, 2326910; CHECK-P10-NEXT: pli r5, 35675873296911; CHECK-P10-NEXT: rldimi r5, r4, 32, 06912; CHECK-P10-NEXT: or r3, r3, r56913; CHECK-P10-NEXT: stfs f1, 0(r3)6914; CHECK-P10-NEXT: blr6915;6916; CHECK-PREP10-LABEL: st_not_disjoint64_float_float:6917; CHECK-PREP10: # %bb.0: # %entry6918; CHECK-PREP10-NEXT: li r4, 296919; CHECK-PREP10-NEXT: rldic r4, r4, 35, 246920; CHECK-PREP10-NEXT: oris r4, r4, 544376921; CHECK-PREP10-NEXT: ori r4, r4, 40976922; CHECK-PREP10-NEXT: or r3, r3, r46923; CHECK-PREP10-NEXT: stfs f1, 0(r3)6924; CHECK-PREP10-NEXT: blr6925entry:6926 %or = or i64 %ptr, 10000000000016927 %0 = inttoptr i64 %or to ptr6928 store float %str, ptr %0, align 46929 ret void6930}6931 6932; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6933define dso_local void @st_disjoint_align64_float_float(i64 %ptr, float %str) {6934; CHECK-P10-LABEL: st_disjoint_align64_float_float:6935; CHECK-P10: # %bb.0: # %entry6936; CHECK-P10-NEXT: pli r4, 2441406256937; CHECK-P10-NEXT: rldicr r3, r3, 0, 236938; CHECK-P10-NEXT: rldic r4, r4, 12, 246939; CHECK-P10-NEXT: stfsx f1, r3, r46940; CHECK-P10-NEXT: blr6941;6942; CHECK-PREP10-LABEL: st_disjoint_align64_float_float:6943; CHECK-PREP10: # %bb.0: # %entry6944; CHECK-PREP10-NEXT: lis r4, 37256945; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 236946; CHECK-PREP10-NEXT: ori r4, r4, 190256947; CHECK-PREP10-NEXT: rldic r4, r4, 12, 246948; CHECK-PREP10-NEXT: stfsx f1, r3, r46949; CHECK-PREP10-NEXT: blr6950entry:6951 %and = and i64 %ptr, -10995116277766952 %or = or i64 %and, 10000000000006953 %0 = inttoptr i64 %or to ptr6954 store float %str, ptr %0, align 40966955 ret void6956}6957 6958; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6959define dso_local void @st_cst_align16_float_float(float %str) {6960; CHECK-LABEL: st_cst_align16_float_float:6961; CHECK: # %bb.0: # %entry6962; CHECK-NEXT: stfs f1, 4080(0)6963; CHECK-NEXT: blr6964entry:6965 store float %str, ptr inttoptr (i64 4080 to ptr), align 166966 ret void6967}6968 6969; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6970define dso_local void @st_cst_align32_float_float(float %str) {6971; CHECK-LABEL: st_cst_align32_float_float:6972; CHECK: # %bb.0: # %entry6973; CHECK-NEXT: lis r3, 1536974; CHECK-NEXT: stfs f1, -27108(r3)6975; CHECK-NEXT: blr6976entry:6977 store float %str, ptr inttoptr (i64 9999900 to ptr), align 46978 ret void6979}6980 6981; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly6982define dso_local void @st_cst_align64_float_float(float %str) {6983; CHECK-P10-LABEL: st_cst_align64_float_float:6984; CHECK-P10: # %bb.0: # %entry6985; CHECK-P10-NEXT: pli r3, 2441406256986; CHECK-P10-NEXT: rldic r3, r3, 12, 246987; CHECK-P10-NEXT: stfs f1, 0(r3)6988; CHECK-P10-NEXT: blr6989;6990; CHECK-PREP10-LABEL: st_cst_align64_float_float:6991; CHECK-PREP10: # %bb.0: # %entry6992; CHECK-PREP10-NEXT: lis r3, 37256993; CHECK-PREP10-NEXT: ori r3, r3, 190256994; CHECK-PREP10-NEXT: rldic r3, r3, 12, 246995; CHECK-PREP10-NEXT: stfs f1, 0(r3)6996; CHECK-PREP10-NEXT: blr6997entry:6998 store float %str, ptr inttoptr (i64 1000000000000 to ptr), align 40966999 ret void7000}7001 7002; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7003define dso_local void @st_0_float_double(i64 %ptr, float %str) {7004; CHECK-LABEL: st_0_float_double:7005; CHECK: # %bb.0: # %entry7006; CHECK-NEXT: stfd f1, 0(r3)7007; CHECK-NEXT: blr7008entry:7009 %conv = fpext float %str to double7010 %0 = inttoptr i64 %ptr to ptr7011 store double %conv, ptr %0, align 87012 ret void7013}7014 7015; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7016define dso_local void @st_align16_float_double(ptr nocapture %ptr, float %str) {7017; CHECK-LABEL: st_align16_float_double:7018; CHECK: # %bb.0: # %entry7019; CHECK-NEXT: stfd f1, 8(r3)7020; CHECK-NEXT: blr7021entry:7022 %conv = fpext float %str to double7023 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 87024 store double %conv, ptr %add.ptr, align 87025 ret void7026}7027 7028; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7029define dso_local void @st_align32_float_double(ptr nocapture %ptr, float %str) {7030; CHECK-P10-LABEL: st_align32_float_double:7031; CHECK-P10: # %bb.0: # %entry7032; CHECK-P10-NEXT: pstfd f1, 99999000(r3), 07033; CHECK-P10-NEXT: blr7034;7035; CHECK-PREP10-LABEL: st_align32_float_double:7036; CHECK-PREP10: # %bb.0: # %entry7037; CHECK-PREP10-NEXT: lis r4, 15257038; CHECK-PREP10-NEXT: ori r4, r4, 566007039; CHECK-PREP10-NEXT: stfdx f1, r3, r47040; CHECK-PREP10-NEXT: blr7041entry:7042 %conv = fpext float %str to double7043 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 999990007044 store double %conv, ptr %add.ptr, align 87045 ret void7046}7047 7048; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7049define dso_local void @st_align64_float_double(ptr nocapture %ptr, float %str) {7050; CHECK-P10-LABEL: st_align64_float_double:7051; CHECK-P10: # %bb.0: # %entry7052; CHECK-P10-NEXT: pli r4, 2441406257053; CHECK-P10-NEXT: rldic r4, r4, 12, 247054; CHECK-P10-NEXT: stfdx f1, r3, r47055; CHECK-P10-NEXT: blr7056;7057; CHECK-PREP10-LABEL: st_align64_float_double:7058; CHECK-PREP10: # %bb.0: # %entry7059; CHECK-PREP10-NEXT: lis r4, 37257060; CHECK-PREP10-NEXT: ori r4, r4, 190257061; CHECK-PREP10-NEXT: rldic r4, r4, 12, 247062; CHECK-PREP10-NEXT: stfdx f1, r3, r47063; CHECK-PREP10-NEXT: blr7064entry:7065 %conv = fpext float %str to double7066 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 10000000000007067 store double %conv, ptr %add.ptr, align 87068 ret void7069}7070 7071; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7072define dso_local void @st_reg_float_double(ptr nocapture %ptr, i64 %off, float %str) {7073; CHECK-LABEL: st_reg_float_double:7074; CHECK: # %bb.0: # %entry7075; CHECK-NEXT: stfdx f1, r3, r47076; CHECK-NEXT: blr7077entry:7078 %conv = fpext float %str to double7079 %add.ptr = getelementptr inbounds i8, ptr %ptr, i64 %off7080 store double %conv, ptr %add.ptr, align 87081 ret void7082}7083 7084; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7085define dso_local void @st_or1_float_double(i64 %ptr, i8 zeroext %off, float %str) {7086; CHECK-LABEL: st_or1_float_double:7087; CHECK: # %bb.0: # %entry7088; CHECK-NEXT: or r3, r4, r37089; CHECK-NEXT: stfd f1, 0(r3)7090; CHECK-NEXT: blr7091entry:7092 %conv = fpext float %str to double7093 %conv1 = zext i8 %off to i647094 %or = or i64 %conv1, %ptr7095 %0 = inttoptr i64 %or to ptr7096 store double %conv, ptr %0, align 87097 ret void7098}7099 7100; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7101define dso_local void @st_not_disjoint16_float_double(i64 %ptr, float %str) {7102; CHECK-LABEL: st_not_disjoint16_float_double:7103; CHECK: # %bb.0: # %entry7104; CHECK-NEXT: ori r3, r3, 67105; CHECK-NEXT: stfd f1, 0(r3)7106; CHECK-NEXT: blr7107entry:7108 %conv = fpext float %str to double7109 %or = or i64 %ptr, 67110 %0 = inttoptr i64 %or to ptr7111 store double %conv, ptr %0, align 87112 ret void7113}7114 7115; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7116define dso_local void @st_disjoint_align16_float_double(i64 %ptr, float %str) {7117; CHECK-LABEL: st_disjoint_align16_float_double:7118; CHECK: # %bb.0: # %entry7119; CHECK-NEXT: rldicr r3, r3, 0, 517120; CHECK-NEXT: stfd f1, 24(r3)7121; CHECK-NEXT: blr7122entry:7123 %and = and i64 %ptr, -40967124 %conv = fpext float %str to double7125 %or = or i64 %and, 247126 %0 = inttoptr i64 %or to ptr7127 store double %conv, ptr %0, align 87128 ret void7129}7130 7131; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7132define dso_local void @st_not_disjoint32_float_double(i64 %ptr, float %str) {7133; CHECK-LABEL: st_not_disjoint32_float_double:7134; CHECK: # %bb.0: # %entry7135; CHECK-NEXT: ori r3, r3, 344637136; CHECK-NEXT: oris r3, r3, 17137; CHECK-NEXT: stfd f1, 0(r3)7138; CHECK-NEXT: blr7139entry:7140 %conv = fpext float %str to double7141 %or = or i64 %ptr, 999997142 %0 = inttoptr i64 %or to ptr7143 store double %conv, ptr %0, align 87144 ret void7145}7146 7147; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7148define dso_local void @st_disjoint_align32_float_double(i64 %ptr, float %str) {7149; CHECK-P10-LABEL: st_disjoint_align32_float_double:7150; CHECK-P10: # %bb.0: # %entry7151; CHECK-P10-NEXT: lis r4, -152647152; CHECK-P10-NEXT: and r3, r3, r47153; CHECK-P10-NEXT: pstfd f1, 999990000(r3), 07154; CHECK-P10-NEXT: blr7155;7156; CHECK-PREP10-LABEL: st_disjoint_align32_float_double:7157; CHECK-PREP10: # %bb.0: # %entry7158; CHECK-PREP10-NEXT: lis r4, -152647159; CHECK-PREP10-NEXT: and r3, r3, r47160; CHECK-PREP10-NEXT: lis r4, 152587161; CHECK-PREP10-NEXT: ori r4, r4, 417127162; CHECK-PREP10-NEXT: stfdx f1, r3, r47163; CHECK-PREP10-NEXT: blr7164entry:7165 %and = and i64 %ptr, -10003415047166 %conv = fpext float %str to double7167 %or = or i64 %and, 9999900007168 %0 = inttoptr i64 %or to ptr7169 store double %conv, ptr %0, align 167170 ret void7171}7172 7173; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7174define dso_local void @st_not_disjoint64_float_double(i64 %ptr, float %str) {7175; CHECK-P10-LABEL: st_not_disjoint64_float_double:7176; CHECK-P10: # %bb.0: # %entry7177; CHECK-P10-NEXT: pli r4, 2327178; CHECK-P10-NEXT: pli r5, 35675873297179; CHECK-P10-NEXT: rldimi r5, r4, 32, 07180; CHECK-P10-NEXT: or r3, r3, r57181; CHECK-P10-NEXT: stfd f1, 0(r3)7182; CHECK-P10-NEXT: blr7183;7184; CHECK-PREP10-LABEL: st_not_disjoint64_float_double:7185; CHECK-PREP10: # %bb.0: # %entry7186; CHECK-PREP10-NEXT: li r4, 297187; CHECK-PREP10-NEXT: rldic r4, r4, 35, 247188; CHECK-PREP10-NEXT: oris r4, r4, 544377189; CHECK-PREP10-NEXT: ori r4, r4, 40977190; CHECK-PREP10-NEXT: or r3, r3, r47191; CHECK-PREP10-NEXT: stfd f1, 0(r3)7192; CHECK-PREP10-NEXT: blr7193entry:7194 %conv = fpext float %str to double7195 %or = or i64 %ptr, 10000000000017196 %0 = inttoptr i64 %or to ptr7197 store double %conv, ptr %0, align 87198 ret void7199}7200 7201; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7202define dso_local void @st_disjoint_align64_float_double(i64 %ptr, float %str) {7203; CHECK-P10-LABEL: st_disjoint_align64_float_double:7204; CHECK-P10: # %bb.0: # %entry7205; CHECK-P10-NEXT: pli r4, 2441406257206; CHECK-P10-NEXT: rldicr r3, r3, 0, 237207; CHECK-P10-NEXT: rldic r4, r4, 12, 247208; CHECK-P10-NEXT: stfdx f1, r3, r47209; CHECK-P10-NEXT: blr7210;7211; CHECK-PREP10-LABEL: st_disjoint_align64_float_double:7212; CHECK-PREP10: # %bb.0: # %entry7213; CHECK-PREP10-NEXT: lis r4, 37257214; CHECK-PREP10-NEXT: rldicr r3, r3, 0, 237215; CHECK-PREP10-NEXT: ori r4, r4, 190257216; CHECK-PREP10-NEXT: rldic r4, r4, 12, 247217; CHECK-PREP10-NEXT: stfdx f1, r3, r47218; CHECK-PREP10-NEXT: blr7219entry:7220 %and = and i64 %ptr, -10995116277767221 %conv = fpext float %str to double7222 %or = or i64 %and, 10000000000007223 %0 = inttoptr i64 %or to ptr7224 store double %conv, ptr %0, align 40967225 ret void7226}7227 7228; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7229define dso_local void @st_cst_align16_float_double(float %str) {7230; CHECK-LABEL: st_cst_align16_float_double:7231; CHECK: # %bb.0: # %entry7232; CHECK-NEXT: stfd f1, 4080(0)7233; CHECK-NEXT: blr7234entry:7235 %conv = fpext float %str to double7236 store double %conv, ptr inttoptr (i64 4080 to ptr), align 167237 ret void7238}7239 7240; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7241define dso_local void @st_cst_align32_float_double(float %str) {7242; CHECK-LABEL: st_cst_align32_float_double:7243; CHECK: # %bb.0: # %entry7244; CHECK-NEXT: lis r3, 1537245; CHECK-NEXT: stfd f1, -27108(r3)7246; CHECK-NEXT: blr7247entry:7248 %conv = fpext float %str to double7249 store double %conv, ptr inttoptr (i64 9999900 to ptr), align 87250 ret void7251}7252 7253; Function Attrs: nofree norecurse nounwind uwtable willreturn writeonly7254define dso_local void @st_cst_align64_float_double(float %str) {7255; CHECK-P10-LABEL: st_cst_align64_float_double:7256; CHECK-P10: # %bb.0: # %entry7257; CHECK-P10-NEXT: pli r3, 2441406257258; CHECK-P10-NEXT: rldic r3, r3, 12, 247259; CHECK-P10-NEXT: stfd f1, 0(r3)7260; CHECK-P10-NEXT: blr7261;7262; CHECK-PREP10-LABEL: st_cst_align64_float_double:7263; CHECK-PREP10: # %bb.0: # %entry7264; CHECK-PREP10-NEXT: lis r3, 37257265; CHECK-PREP10-NEXT: ori r3, r3, 190257266; CHECK-PREP10-NEXT: rldic r3, r3, 12, 247267; CHECK-PREP10-NEXT: stfd f1, 0(r3)7268; CHECK-PREP10-NEXT: blr7269entry:7270 %conv = fpext float %str to double7271 store double %conv, ptr inttoptr (i64 1000000000000 to ptr), align 40967272 ret void7273}7274 7275define dso_local void @st_reversed_float_from_i8(ptr %ptr) {7276; CHECK-P10-LABEL: st_reversed_float_from_i8:7277; CHECK-P10: # %bb.0: # %entry7278; CHECK-P10-NEXT: li r4, 87279; CHECK-P10-NEXT: lxsibzx f0, 0, r37280; CHECK-P10-NEXT: xxspltidp vs2, -10234101767281; CHECK-P10-NEXT: lxsibzx f1, r3, r47282; CHECK-P10-NEXT: xscvuxdsp f0, f07283; CHECK-P10-NEXT: xscvuxdsp f1, f17284; CHECK-P10-NEXT: xsaddsp f0, f0, f27285; CHECK-P10-NEXT: xsaddsp f1, f1, f27286; CHECK-P10-NEXT: stfs f0, 8(r3)7287; CHECK-P10-NEXT: stfs f1, 0(r3)7288; CHECK-P10-NEXT: blr7289;7290; CHECK-P9-LABEL: st_reversed_float_from_i8:7291; CHECK-P9: # %bb.0: # %entry7292; CHECK-P9-NEXT: li r4, 87293; CHECK-P9-NEXT: lxsibzx f0, 0, r37294; CHECK-P9-NEXT: lxsibzx f1, r3, r47295; CHECK-P9-NEXT: addis r4, r2, .LCPI300_0@toc@ha7296; CHECK-P9-NEXT: lfs f2, .LCPI300_0@toc@l(r4)7297; CHECK-P9-NEXT: xscvuxdsp f0, f07298; CHECK-P9-NEXT: xscvuxdsp f1, f17299; CHECK-P9-NEXT: xsaddsp f0, f0, f27300; CHECK-P9-NEXT: xsaddsp f1, f1, f27301; CHECK-P9-NEXT: stfs f0, 8(r3)7302; CHECK-P9-NEXT: stfs f1, 0(r3)7303; CHECK-P9-NEXT: blr7304;7305; CHECK-P8-LABEL: st_reversed_float_from_i8:7306; CHECK-P8: # %bb.0: # %entry7307; CHECK-P8-NEXT: lbz r4, 0(r3)7308; CHECK-P8-NEXT: lbz r5, 8(r3)7309; CHECK-P8-NEXT: mtfprwz f0, r47310; CHECK-P8-NEXT: mtfprwz f1, r57311; CHECK-P8-NEXT: addis r4, r2, .LCPI300_0@toc@ha7312; CHECK-P8-NEXT: lfs f2, .LCPI300_0@toc@l(r4)7313; CHECK-P8-NEXT: xscvuxdsp f0, f07314; CHECK-P8-NEXT: xscvuxdsp f1, f17315; CHECK-P8-NEXT: xsaddsp f0, f0, f27316; CHECK-P8-NEXT: xsaddsp f1, f1, f27317; CHECK-P8-NEXT: stfs f1, 0(r3)7318; CHECK-P8-NEXT: stfs f0, 8(r3)7319; CHECK-P8-NEXT: blr7320entry:7321 %idx = getelementptr inbounds i8, ptr %ptr, i64 87322 %i0 = load i8, ptr %ptr, align 17323 %i1 = load i8, ptr %idx, align 17324 %f0 = uitofp i8 %i0 to float7325 %f1 = uitofp i8 %i1 to float7326 %a0 = fadd float %f0, -1.280000e+027327 %a1 = fadd float %f1, -1.280000e+027328 store float %a1, ptr %ptr, align 87329 store float %a0, ptr %idx, align 87330 ret void7331}7332