brintos

brintos / llvm-project-archived public Read only

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