brintos

brintos / llvm-project-archived public Read only

0
0
Text · 241.3 KiB · f396057 Raw
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