brintos

brintos / llvm-project-archived public Read only

0
0
Text · 38.4 KiB · 9229310 Raw
1105 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=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \4; RUN: FileCheck %s --check-prefix=CHECK-P85; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \6; RUN:     -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \7; RUN: FileCheck %s --check-prefix=CHECK-P98; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \9; RUN:     -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \10; RUN: FileCheck %s --check-prefix=CHECK-BE11 12define i32 @test2elt(<2 x double> %a) local_unnamed_addr #0 {13; CHECK-P8-LABEL: test2elt:14; CHECK-P8:       # %bb.0: # %entry15; CHECK-P8-NEXT:    xscvdpsxws f1, v216; CHECK-P8-NEXT:    xxswapd vs0, v217; CHECK-P8-NEXT:    xscvdpsxws f0, f018; CHECK-P8-NEXT:    mffprwz r3, f119; CHECK-P8-NEXT:    mtvsrd v2, r320; CHECK-P8-NEXT:    mffprwz r3, f021; CHECK-P8-NEXT:    mtvsrd v3, r322; CHECK-P8-NEXT:    vmrghh v2, v2, v323; CHECK-P8-NEXT:    xxswapd vs0, v224; CHECK-P8-NEXT:    mffprwz r3, f025; CHECK-P8-NEXT:    blr26;27; CHECK-P9-LABEL: test2elt:28; CHECK-P9:       # %bb.0: # %entry29; CHECK-P9-NEXT:    xscvdpsxws f0, v230; CHECK-P9-NEXT:    mffprwz r3, f031; CHECK-P9-NEXT:    xxswapd vs0, v232; CHECK-P9-NEXT:    mtvsrd v3, r333; CHECK-P9-NEXT:    xscvdpsxws f0, f034; CHECK-P9-NEXT:    mffprwz r3, f035; CHECK-P9-NEXT:    mtvsrd v2, r336; CHECK-P9-NEXT:    li r3, 037; CHECK-P9-NEXT:    vmrghh v2, v3, v238; CHECK-P9-NEXT:    vextuwrx r3, r3, v239; CHECK-P9-NEXT:    blr40;41; CHECK-BE-LABEL: test2elt:42; CHECK-BE:       # %bb.0: # %entry43; CHECK-BE-NEXT:    xxswapd vs2, v244; CHECK-BE-NEXT:    xscvdpsxws f1, v245; CHECK-BE-NEXT:    addis r3, r2, .LCPI0_0@toc@ha46; CHECK-BE-NEXT:    addi r3, r3, .LCPI0_0@toc@l47; CHECK-BE-NEXT:    xscvdpsxws f2, f248; CHECK-BE-NEXT:    lxv vs0, 0(r3)49; CHECK-BE-NEXT:    mffprwz r3, f150; CHECK-BE-NEXT:    mtfprwz f1, r351; CHECK-BE-NEXT:    mffprwz r3, f252; CHECK-BE-NEXT:    mtvsrwz v2, r353; CHECK-BE-NEXT:    li r3, 054; CHECK-BE-NEXT:    xxperm v2, vs1, vs055; CHECK-BE-NEXT:    vextuwlx r3, r3, v256; CHECK-BE-NEXT:    blr57entry:58  %0 = fptoui <2 x double> %a to <2 x i16>59  %1 = bitcast <2 x i16> %0 to i3260  ret i32 %161}62 63define i64 @test4elt(ptr nocapture readonly) local_unnamed_addr #1 {64; CHECK-P8-LABEL: test4elt:65; CHECK-P8:       # %bb.0: # %entry66; CHECK-P8-NEXT:    lxvd2x vs0, 0, r367; CHECK-P8-NEXT:    li r4, 1668; CHECK-P8-NEXT:    lxvd2x vs2, r3, r469; CHECK-P8-NEXT:    xxswapd vs1, vs070; CHECK-P8-NEXT:    xscvdpsxws f0, f071; CHECK-P8-NEXT:    xscvdpsxws f1, f172; CHECK-P8-NEXT:    mffprwz r3, f073; CHECK-P8-NEXT:    xscvdpsxws f0, f274; CHECK-P8-NEXT:    mffprwz r4, f175; CHECK-P8-NEXT:    mtvsrd v2, r376; CHECK-P8-NEXT:    mtvsrd v3, r477; CHECK-P8-NEXT:    xxswapd vs3, vs278; CHECK-P8-NEXT:    xscvdpsxws f3, f379; CHECK-P8-NEXT:    mffprwz r3, f380; CHECK-P8-NEXT:    mtvsrd v4, r381; CHECK-P8-NEXT:    mffprwz r3, f082; CHECK-P8-NEXT:    vmrghh v2, v3, v283; CHECK-P8-NEXT:    mtvsrd v3, r384; CHECK-P8-NEXT:    vmrghh v3, v4, v385; CHECK-P8-NEXT:    xxmrglw vs0, v3, v286; CHECK-P8-NEXT:    xxswapd vs0, vs087; CHECK-P8-NEXT:    mffprd r3, f088; CHECK-P8-NEXT:    blr89;90; CHECK-P9-LABEL: test4elt:91; CHECK-P9:       # %bb.0: # %entry92; CHECK-P9-NEXT:    lxv vs1, 0(r3)93; CHECK-P9-NEXT:    lxv vs0, 16(r3)94; CHECK-P9-NEXT:    xscvdpsxws f2, f195; CHECK-P9-NEXT:    xxswapd vs1, vs196; CHECK-P9-NEXT:    xscvdpsxws f1, f197; CHECK-P9-NEXT:    mffprwz r3, f298; CHECK-P9-NEXT:    mtvsrd v2, r399; CHECK-P9-NEXT:    mffprwz r3, f1100; CHECK-P9-NEXT:    xscvdpsxws f1, f0101; CHECK-P9-NEXT:    xxswapd vs0, vs0102; CHECK-P9-NEXT:    mtvsrd v3, r3103; CHECK-P9-NEXT:    xscvdpsxws f0, f0104; CHECK-P9-NEXT:    vmrghh v2, v2, v3105; CHECK-P9-NEXT:    mffprwz r3, f1106; CHECK-P9-NEXT:    mtvsrd v3, r3107; CHECK-P9-NEXT:    mffprwz r3, f0108; CHECK-P9-NEXT:    mtvsrd v4, r3109; CHECK-P9-NEXT:    vmrghh v3, v3, v4110; CHECK-P9-NEXT:    xxmrglw vs0, v3, v2111; CHECK-P9-NEXT:    mfvsrld r3, vs0112; CHECK-P9-NEXT:    blr113;114; CHECK-BE-LABEL: test4elt:115; CHECK-BE:       # %bb.0: # %entry116; CHECK-BE-NEXT:    lxv vs1, 16(r3)117; CHECK-BE-NEXT:    lxv vs0, 0(r3)118; CHECK-BE-NEXT:    addis r3, r2, .LCPI1_0@toc@ha119; CHECK-BE-NEXT:    addi r3, r3, .LCPI1_0@toc@l120; CHECK-BE-NEXT:    lxv vs2, 0(r3)121; CHECK-BE-NEXT:    xscvdpsxws f3, f1122; CHECK-BE-NEXT:    xxswapd vs1, vs1123; CHECK-BE-NEXT:    xscvdpsxws f1, f1124; CHECK-BE-NEXT:    mffprwz r3, f3125; CHECK-BE-NEXT:    mtfprwz f3, r3126; CHECK-BE-NEXT:    mffprwz r3, f1127; CHECK-BE-NEXT:    mtfprwz f1, r3128; CHECK-BE-NEXT:    xxperm vs1, vs3, vs2129; CHECK-BE-NEXT:    xscvdpsxws f3, f0130; CHECK-BE-NEXT:    xxswapd vs0, vs0131; CHECK-BE-NEXT:    xscvdpsxws f0, f0132; CHECK-BE-NEXT:    mffprwz r3, f3133; CHECK-BE-NEXT:    mtfprwz f3, r3134; CHECK-BE-NEXT:    mffprwz r3, f0135; CHECK-BE-NEXT:    mtfprwz f0, r3136; CHECK-BE-NEXT:    xxperm vs0, vs3, vs2137; CHECK-BE-NEXT:    xxmrghw vs0, vs0, vs1138; CHECK-BE-NEXT:    mffprd r3, f0139; CHECK-BE-NEXT:    blr140entry:141  %a = load <4 x double>, ptr %0, align 32142  %1 = fptoui <4 x double> %a to <4 x i16>143  %2 = bitcast <4 x i16> %1 to i64144  ret i64 %2145}146 147define <8 x i16> @test8elt(ptr nocapture readonly) local_unnamed_addr #2 {148; CHECK-P8-LABEL: test8elt:149; CHECK-P8:       # %bb.0: # %entry150; CHECK-P8-NEXT:    li r4, 16151; CHECK-P8-NEXT:    lxvd2x vs1, 0, r3152; CHECK-P8-NEXT:    lxvd2x vs0, r3, r4153; CHECK-P8-NEXT:    li r4, 32154; CHECK-P8-NEXT:    lxvd2x vs4, r3, r4155; CHECK-P8-NEXT:    li r4, 48156; CHECK-P8-NEXT:    lxvd2x vs6, r3, r4157; CHECK-P8-NEXT:    xxswapd vs3, vs1158; CHECK-P8-NEXT:    xscvdpsxws f1, f1159; CHECK-P8-NEXT:    xscvdpsxws f3, f3160; CHECK-P8-NEXT:    mffprwz r3, f1161; CHECK-P8-NEXT:    mtvsrd v2, r3162; CHECK-P8-NEXT:    xxswapd vs2, vs0163; CHECK-P8-NEXT:    xscvdpsxws f0, f0164; CHECK-P8-NEXT:    mffprwz r4, f0165; CHECK-P8-NEXT:    xscvdpsxws f2, f2166; CHECK-P8-NEXT:    xscvdpsxws f0, f6167; CHECK-P8-NEXT:    mtvsrd v3, r4168; CHECK-P8-NEXT:    mffprwz r4, f3169; CHECK-P8-NEXT:    mtvsrd v5, r4170; CHECK-P8-NEXT:    xxswapd vs5, vs4171; CHECK-P8-NEXT:    xscvdpsxws f4, f4172; CHECK-P8-NEXT:    mffprwz r3, f4173; CHECK-P8-NEXT:    xscvdpsxws f5, f5174; CHECK-P8-NEXT:    mtvsrd v4, r3175; CHECK-P8-NEXT:    mffprwz r3, f2176; CHECK-P8-NEXT:    mffprwz r4, f5177; CHECK-P8-NEXT:    xxswapd vs7, vs6178; CHECK-P8-NEXT:    xscvdpsxws f7, f7179; CHECK-P8-NEXT:    vmrghh v2, v5, v2180; CHECK-P8-NEXT:    mtvsrd v5, r3181; CHECK-P8-NEXT:    mffprwz r3, f7182; CHECK-P8-NEXT:    mtvsrd v0, r3183; CHECK-P8-NEXT:    mffprwz r3, f0184; CHECK-P8-NEXT:    vmrghh v3, v5, v3185; CHECK-P8-NEXT:    mtvsrd v5, r4186; CHECK-P8-NEXT:    xxmrglw vs0, v3, v2187; CHECK-P8-NEXT:    vmrghh v4, v5, v4188; CHECK-P8-NEXT:    mtvsrd v5, r3189; CHECK-P8-NEXT:    vmrghh v5, v0, v5190; CHECK-P8-NEXT:    xxmrglw vs1, v5, v4191; CHECK-P8-NEXT:    xxmrgld v2, vs1, vs0192; CHECK-P8-NEXT:    blr193;194; CHECK-P9-LABEL: test8elt:195; CHECK-P9:       # %bb.0: # %entry196; CHECK-P9-NEXT:    lxv vs3, 0(r3)197; CHECK-P9-NEXT:    lxv vs2, 16(r3)198; CHECK-P9-NEXT:    lxv vs0, 48(r3)199; CHECK-P9-NEXT:    lxv vs1, 32(r3)200; CHECK-P9-NEXT:    xscvdpsxws f4, f3201; CHECK-P9-NEXT:    xxswapd vs3, vs3202; CHECK-P9-NEXT:    xscvdpsxws f3, f3203; CHECK-P9-NEXT:    mffprwz r3, f4204; CHECK-P9-NEXT:    mtvsrd v2, r3205; CHECK-P9-NEXT:    mffprwz r3, f3206; CHECK-P9-NEXT:    xscvdpsxws f3, f2207; CHECK-P9-NEXT:    xxswapd vs2, vs2208; CHECK-P9-NEXT:    mtvsrd v3, r3209; CHECK-P9-NEXT:    xscvdpsxws f2, f2210; CHECK-P9-NEXT:    vmrghh v2, v2, v3211; CHECK-P9-NEXT:    mffprwz r3, f3212; CHECK-P9-NEXT:    xscvdpsxws f3, f1213; CHECK-P9-NEXT:    xxswapd vs1, vs1214; CHECK-P9-NEXT:    mtvsrd v3, r3215; CHECK-P9-NEXT:    mffprwz r3, f2216; CHECK-P9-NEXT:    xscvdpsxws f1, f1217; CHECK-P9-NEXT:    mtvsrd v4, r3218; CHECK-P9-NEXT:    vmrghh v3, v3, v4219; CHECK-P9-NEXT:    mffprwz r3, f3220; CHECK-P9-NEXT:    xxmrglw vs2, v3, v2221; CHECK-P9-NEXT:    mtvsrd v2, r3222; CHECK-P9-NEXT:    mffprwz r3, f1223; CHECK-P9-NEXT:    xscvdpsxws f1, f0224; CHECK-P9-NEXT:    xxswapd vs0, vs0225; CHECK-P9-NEXT:    mtvsrd v3, r3226; CHECK-P9-NEXT:    xscvdpsxws f0, f0227; CHECK-P9-NEXT:    vmrghh v2, v2, v3228; CHECK-P9-NEXT:    mffprwz r3, f1229; CHECK-P9-NEXT:    mtvsrd v3, r3230; CHECK-P9-NEXT:    mffprwz r3, f0231; CHECK-P9-NEXT:    mtvsrd v4, r3232; CHECK-P9-NEXT:    vmrghh v3, v3, v4233; CHECK-P9-NEXT:    xxmrglw vs0, v3, v2234; CHECK-P9-NEXT:    xxmrgld v2, vs0, vs2235; CHECK-P9-NEXT:    blr236;237; CHECK-BE-LABEL: test8elt:238; CHECK-BE:       # %bb.0: # %entry239; CHECK-BE-NEXT:    lxv vs3, 48(r3)240; CHECK-BE-NEXT:    lxv vs0, 0(r3)241; CHECK-BE-NEXT:    lxv vs1, 16(r3)242; CHECK-BE-NEXT:    lxv vs2, 32(r3)243; CHECK-BE-NEXT:    addis r3, r2, .LCPI2_0@toc@ha244; CHECK-BE-NEXT:    addi r3, r3, .LCPI2_0@toc@l245; CHECK-BE-NEXT:    lxv vs4, 0(r3)246; CHECK-BE-NEXT:    xscvdpsxws f5, f3247; CHECK-BE-NEXT:    xxswapd vs3, vs3248; CHECK-BE-NEXT:    xscvdpsxws f3, f3249; CHECK-BE-NEXT:    mffprwz r3, f5250; CHECK-BE-NEXT:    mtfprwz f5, r3251; CHECK-BE-NEXT:    mffprwz r3, f3252; CHECK-BE-NEXT:    mtfprwz f3, r3253; CHECK-BE-NEXT:    xxperm vs3, vs5, vs4254; CHECK-BE-NEXT:    xscvdpsxws f5, f2255; CHECK-BE-NEXT:    xxswapd vs2, vs2256; CHECK-BE-NEXT:    xscvdpsxws f2, f2257; CHECK-BE-NEXT:    mffprwz r3, f5258; CHECK-BE-NEXT:    mtfprwz f5, r3259; CHECK-BE-NEXT:    mffprwz r3, f2260; CHECK-BE-NEXT:    mtfprwz f2, r3261; CHECK-BE-NEXT:    xxperm vs2, vs5, vs4262; CHECK-BE-NEXT:    xxmrghw vs2, vs2, vs3263; CHECK-BE-NEXT:    xscvdpsxws f3, f1264; CHECK-BE-NEXT:    xxswapd vs1, vs1265; CHECK-BE-NEXT:    xscvdpsxws f1, f1266; CHECK-BE-NEXT:    mffprwz r3, f3267; CHECK-BE-NEXT:    mtfprwz f3, r3268; CHECK-BE-NEXT:    mffprwz r3, f1269; CHECK-BE-NEXT:    mtfprwz f1, r3270; CHECK-BE-NEXT:    xxperm vs1, vs3, vs4271; CHECK-BE-NEXT:    xscvdpsxws f3, f0272; CHECK-BE-NEXT:    xxswapd vs0, vs0273; CHECK-BE-NEXT:    xscvdpsxws f0, f0274; CHECK-BE-NEXT:    mffprwz r3, f3275; CHECK-BE-NEXT:    mtfprwz f3, r3276; CHECK-BE-NEXT:    mffprwz r3, f0277; CHECK-BE-NEXT:    mtfprwz f0, r3278; CHECK-BE-NEXT:    xxperm vs0, vs3, vs4279; CHECK-BE-NEXT:    xxmrghw vs0, vs0, vs1280; CHECK-BE-NEXT:    xxmrghd v2, vs0, vs2281; CHECK-BE-NEXT:    blr282entry:283  %a = load <8 x double>, ptr %0, align 64284  %1 = fptoui <8 x double> %a to <8 x i16>285  ret <8 x i16> %1286}287 288define void @test16elt(ptr noalias nocapture sret(<16 x i16>) %agg.result, ptr nocapture readonly) local_unnamed_addr #3 {289; CHECK-P8-LABEL: test16elt:290; CHECK-P8:       # %bb.0: # %entry291; CHECK-P8-NEXT:    lxvd2x vs5, 0, r4292; CHECK-P8-NEXT:    li r5, 80293; CHECK-P8-NEXT:    li r6, 32294; CHECK-P8-NEXT:    lxvd2x vs3, r4, r5295; CHECK-P8-NEXT:    li r5, 16296; CHECK-P8-NEXT:    lxvd2x vs9, r4, r6297; CHECK-P8-NEXT:    li r6, 64298; CHECK-P8-NEXT:    lxvd2x vs7, r4, r5299; CHECK-P8-NEXT:    lxvd2x vs11, r4, r6300; CHECK-P8-NEXT:    li r6, 48301; CHECK-P8-NEXT:    lxvd2x vs12, r4, r6302; CHECK-P8-NEXT:    li r6, 96303; CHECK-P8-NEXT:    lxvd2x vs2, r4, r6304; CHECK-P8-NEXT:    li r6, 112305; CHECK-P8-NEXT:    lxvd2x vs0, r4, r6306; CHECK-P8-NEXT:    xxswapd vs6, vs5307; CHECK-P8-NEXT:    xscvdpsxws f5, f5308; CHECK-P8-NEXT:    xscvdpsxws f6, f6309; CHECK-P8-NEXT:    mffprwz r4, f5310; CHECK-P8-NEXT:    mtvsrd v4, r4311; CHECK-P8-NEXT:    xxswapd vs10, vs9312; CHECK-P8-NEXT:    xscvdpsxws f9, f9313; CHECK-P8-NEXT:    xxswapd vs4, vs3314; CHECK-P8-NEXT:    xscvdpsxws f3, f3315; CHECK-P8-NEXT:    xscvdpsxws f10, f10316; CHECK-P8-NEXT:    xscvdpsxws f4, f4317; CHECK-P8-NEXT:    xxswapd vs8, vs7318; CHECK-P8-NEXT:    xscvdpsxws f7, f7319; CHECK-P8-NEXT:    mffprwz r4, f7320; CHECK-P8-NEXT:    xxswapd vs13, vs11321; CHECK-P8-NEXT:    xscvdpsxws f11, f11322; CHECK-P8-NEXT:    xscvdpsxws f8, f8323; CHECK-P8-NEXT:    xscvdpsxws f13, f13324; CHECK-P8-NEXT:    mtvsrd v5, r4325; CHECK-P8-NEXT:    xxswapd v2, vs12326; CHECK-P8-NEXT:    xscvdpsxws f12, f12327; CHECK-P8-NEXT:    mffprwz r4, f9328; CHECK-P8-NEXT:    xscvdpsxws v2, v2329; CHECK-P8-NEXT:    mtvsrd v0, r4330; CHECK-P8-NEXT:    mffprwz r4, f12331; CHECK-P8-NEXT:    mtvsrd v1, r4332; CHECK-P8-NEXT:    mffprwz r4, f11333; CHECK-P8-NEXT:    xxswapd v3, vs2334; CHECK-P8-NEXT:    xscvdpsxws v3, v3335; CHECK-P8-NEXT:    xscvdpsxws f2, f2336; CHECK-P8-NEXT:    mtvsrd v6, r4337; CHECK-P8-NEXT:    mffprwz r4, f3338; CHECK-P8-NEXT:    mtvsrd v7, r4339; CHECK-P8-NEXT:    mffprwz r4, f6340; CHECK-P8-NEXT:    mtvsrd v8, r4341; CHECK-P8-NEXT:    mffprwz r4, f8342; CHECK-P8-NEXT:    xxswapd vs1, vs0343; CHECK-P8-NEXT:    xscvdpsxws f1, f1344; CHECK-P8-NEXT:    xscvdpsxws f0, f0345; CHECK-P8-NEXT:    mtvsrd v9, r4346; CHECK-P8-NEXT:    mffprwz r4, f10347; CHECK-P8-NEXT:    mtvsrd v10, r4348; CHECK-P8-NEXT:    mfvsrwz r4, v2349; CHECK-P8-NEXT:    mtvsrd v2, r4350; CHECK-P8-NEXT:    mffprwz r4, f13351; CHECK-P8-NEXT:    vmrghh v4, v8, v4352; CHECK-P8-NEXT:    mtvsrd v8, r4353; CHECK-P8-NEXT:    mffprwz r4, f4354; CHECK-P8-NEXT:    vmrghh v5, v9, v5355; CHECK-P8-NEXT:    mtvsrd v9, r4356; CHECK-P8-NEXT:    mfvsrwz r4, v3357; CHECK-P8-NEXT:    vmrghh v0, v10, v0358; CHECK-P8-NEXT:    vmrghh v2, v2, v1359; CHECK-P8-NEXT:    vmrghh v3, v8, v6360; CHECK-P8-NEXT:    mtvsrd v6, r4361; CHECK-P8-NEXT:    mffprwz r4, f2362; CHECK-P8-NEXT:    vmrghh v1, v9, v7363; CHECK-P8-NEXT:    mtvsrd v7, r4364; CHECK-P8-NEXT:    mffprwz r4, f1365; CHECK-P8-NEXT:    xxmrglw vs2, v1, v3366; CHECK-P8-NEXT:    xxmrglw vs1, v2, v0367; CHECK-P8-NEXT:    vmrghh v6, v6, v7368; CHECK-P8-NEXT:    mtvsrd v7, r4369; CHECK-P8-NEXT:    mffprwz r4, f0370; CHECK-P8-NEXT:    xxmrglw vs0, v5, v4371; CHECK-P8-NEXT:    mtvsrd v8, r4372; CHECK-P8-NEXT:    xxmrgld v2, vs1, vs0373; CHECK-P8-NEXT:    xxswapd vs1, v2374; CHECK-P8-NEXT:    stxvd2x vs1, 0, r3375; CHECK-P8-NEXT:    vmrghh v7, v7, v8376; CHECK-P8-NEXT:    xxmrglw vs3, v7, v6377; CHECK-P8-NEXT:    xxmrgld v3, vs3, vs2378; CHECK-P8-NEXT:    xxswapd vs0, v3379; CHECK-P8-NEXT:    stxvd2x vs0, r3, r5380; CHECK-P8-NEXT:    blr381;382; CHECK-P9-LABEL: test16elt:383; CHECK-P9:       # %bb.0: # %entry384; CHECK-P9-NEXT:    lxv vs2, 0(r4)385; CHECK-P9-NEXT:    lxv vs1, 16(r4)386; CHECK-P9-NEXT:    lxv vs0, 32(r4)387; CHECK-P9-NEXT:    xscvdpsxws f3, f2388; CHECK-P9-NEXT:    xscvdpsxws f4, f1389; CHECK-P9-NEXT:    xxswapd vs2, vs2390; CHECK-P9-NEXT:    xscvdpsxws f5, f0391; CHECK-P9-NEXT:    xxswapd vs1, vs1392; CHECK-P9-NEXT:    xxswapd vs0, vs0393; CHECK-P9-NEXT:    xscvdpsxws f2, f2394; CHECK-P9-NEXT:    xscvdpsxws f1, f1395; CHECK-P9-NEXT:    xscvdpsxws f0, f0396; CHECK-P9-NEXT:    mffprwz r5, f3397; CHECK-P9-NEXT:    lxv vs3, 64(r4)398; CHECK-P9-NEXT:    mtvsrd v2, r5399; CHECK-P9-NEXT:    mffprwz r5, f4400; CHECK-P9-NEXT:    lxv vs4, 48(r4)401; CHECK-P9-NEXT:    mtvsrd v3, r5402; CHECK-P9-NEXT:    mffprwz r5, f5403; CHECK-P9-NEXT:    xscvdpsxws f7, f3404; CHECK-P9-NEXT:    xxswapd vs3, vs3405; CHECK-P9-NEXT:    mtvsrd v4, r5406; CHECK-P9-NEXT:    mffprwz r5, f2407; CHECK-P9-NEXT:    lxv vs2, 80(r4)408; CHECK-P9-NEXT:    xscvdpsxws f5, f4409; CHECK-P9-NEXT:    xxswapd vs4, vs4410; CHECK-P9-NEXT:    mtvsrd v5, r5411; CHECK-P9-NEXT:    mffprwz r5, f1412; CHECK-P9-NEXT:    xscvdpsxws f3, f3413; CHECK-P9-NEXT:    lxv vs1, 96(r4)414; CHECK-P9-NEXT:    xscvdpsxws f4, f4415; CHECK-P9-NEXT:    vmrghh v2, v2, v5416; CHECK-P9-NEXT:    mtvsrd v5, r5417; CHECK-P9-NEXT:    mffprwz r5, f0418; CHECK-P9-NEXT:    lxv vs0, 112(r4)419; CHECK-P9-NEXT:    vmrghh v3, v3, v5420; CHECK-P9-NEXT:    mtvsrd v5, r5421; CHECK-P9-NEXT:    mffprwz r4, f5422; CHECK-P9-NEXT:    vmrghh v4, v4, v5423; CHECK-P9-NEXT:    xxmrglw vs6, v3, v2424; CHECK-P9-NEXT:    mtvsrd v2, r4425; CHECK-P9-NEXT:    mffprwz r4, f4426; CHECK-P9-NEXT:    mtvsrd v3, r4427; CHECK-P9-NEXT:    mffprwz r4, f7428; CHECK-P9-NEXT:    vmrghh v2, v2, v3429; CHECK-P9-NEXT:    mtvsrd v3, r4430; CHECK-P9-NEXT:    mffprwz r4, f3431; CHECK-P9-NEXT:    xscvdpsxws f3, f2432; CHECK-P9-NEXT:    xxswapd vs2, vs2433; CHECK-P9-NEXT:    xscvdpsxws f2, f2434; CHECK-P9-NEXT:    xxmrglw vs4, v2, v4435; CHECK-P9-NEXT:    mtvsrd v2, r4436; CHECK-P9-NEXT:    vmrghh v2, v3, v2437; CHECK-P9-NEXT:    xxmrgld vs4, vs4, vs6438; CHECK-P9-NEXT:    mffprwz r4, f3439; CHECK-P9-NEXT:    xscvdpsxws f3, f1440; CHECK-P9-NEXT:    xxswapd vs1, vs1441; CHECK-P9-NEXT:    mtvsrd v3, r4442; CHECK-P9-NEXT:    stxv vs4, 0(r3)443; CHECK-P9-NEXT:    mffprwz r4, f2444; CHECK-P9-NEXT:    xscvdpsxws f1, f1445; CHECK-P9-NEXT:    mtvsrd v4, r4446; CHECK-P9-NEXT:    vmrghh v3, v3, v4447; CHECK-P9-NEXT:    mffprwz r4, f3448; CHECK-P9-NEXT:    xxmrglw vs2, v3, v2449; CHECK-P9-NEXT:    mtvsrd v2, r4450; CHECK-P9-NEXT:    mffprwz r4, f1451; CHECK-P9-NEXT:    xscvdpsxws f1, f0452; CHECK-P9-NEXT:    xxswapd vs0, vs0453; CHECK-P9-NEXT:    mtvsrd v3, r4454; CHECK-P9-NEXT:    xscvdpsxws f0, f0455; CHECK-P9-NEXT:    vmrghh v2, v2, v3456; CHECK-P9-NEXT:    mffprwz r4, f1457; CHECK-P9-NEXT:    mtvsrd v3, r4458; CHECK-P9-NEXT:    mffprwz r4, f0459; CHECK-P9-NEXT:    mtvsrd v4, r4460; CHECK-P9-NEXT:    vmrghh v3, v3, v4461; CHECK-P9-NEXT:    xxmrglw vs0, v3, v2462; CHECK-P9-NEXT:    xxmrgld vs0, vs0, vs2463; CHECK-P9-NEXT:    stxv vs0, 16(r3)464; CHECK-P9-NEXT:    blr465;466; CHECK-BE-LABEL: test16elt:467; CHECK-BE:       # %bb.0: # %entry468; CHECK-BE-NEXT:    lxv vs7, 48(r4)469; CHECK-BE-NEXT:    lxv vs0, 64(r4)470; CHECK-BE-NEXT:    lxv vs1, 80(r4)471; CHECK-BE-NEXT:    lxv vs2, 96(r4)472; CHECK-BE-NEXT:    xscvdpsxws f9, f7473; CHECK-BE-NEXT:    xxswapd vs7, vs7474; CHECK-BE-NEXT:    lxv vs3, 112(r4)475; CHECK-BE-NEXT:    lxv vs4, 0(r4)476; CHECK-BE-NEXT:    lxv vs5, 16(r4)477; CHECK-BE-NEXT:    lxv vs6, 32(r4)478; CHECK-BE-NEXT:    addis r4, r2, .LCPI3_0@toc@ha479; CHECK-BE-NEXT:    addi r4, r4, .LCPI3_0@toc@l480; CHECK-BE-NEXT:    lxv vs8, 0(r4)481; CHECK-BE-NEXT:    xscvdpsxws f7, f7482; CHECK-BE-NEXT:    mffprwz r4, f9483; CHECK-BE-NEXT:    mtfprwz f9, r4484; CHECK-BE-NEXT:    mffprwz r4, f7485; CHECK-BE-NEXT:    mtfprwz f7, r4486; CHECK-BE-NEXT:    xxperm vs7, vs9, vs8487; CHECK-BE-NEXT:    xscvdpsxws f9, f6488; CHECK-BE-NEXT:    xxswapd vs6, vs6489; CHECK-BE-NEXT:    xscvdpsxws f6, f6490; CHECK-BE-NEXT:    mffprwz r4, f9491; CHECK-BE-NEXT:    mtfprwz f9, r4492; CHECK-BE-NEXT:    mffprwz r4, f6493; CHECK-BE-NEXT:    mtfprwz f6, r4494; CHECK-BE-NEXT:    xxperm vs6, vs9, vs8495; CHECK-BE-NEXT:    xscvdpsxws f9, f5496; CHECK-BE-NEXT:    xxswapd vs5, vs5497; CHECK-BE-NEXT:    xscvdpsxws f5, f5498; CHECK-BE-NEXT:    xxmrghw vs6, vs6, vs7499; CHECK-BE-NEXT:    mffprwz r4, f9500; CHECK-BE-NEXT:    mtfprwz f9, r4501; CHECK-BE-NEXT:    mffprwz r4, f5502; CHECK-BE-NEXT:    mtfprwz f5, r4503; CHECK-BE-NEXT:    xxperm vs5, vs9, vs8504; CHECK-BE-NEXT:    xscvdpsxws f9, f4505; CHECK-BE-NEXT:    xxswapd vs4, vs4506; CHECK-BE-NEXT:    xscvdpsxws f4, f4507; CHECK-BE-NEXT:    mffprwz r4, f9508; CHECK-BE-NEXT:    mtfprwz f9, r4509; CHECK-BE-NEXT:    mffprwz r4, f4510; CHECK-BE-NEXT:    mtfprwz f4, r4511; CHECK-BE-NEXT:    xxperm vs4, vs9, vs8512; CHECK-BE-NEXT:    xscvdpsxws f9, f3513; CHECK-BE-NEXT:    xxswapd vs3, vs3514; CHECK-BE-NEXT:    xscvdpsxws f3, f3515; CHECK-BE-NEXT:    xxmrghw vs4, vs4, vs5516; CHECK-BE-NEXT:    xscvdpsxws f5, f2517; CHECK-BE-NEXT:    xxswapd vs2, vs2518; CHECK-BE-NEXT:    xscvdpsxws f2, f2519; CHECK-BE-NEXT:    xxmrghd vs4, vs4, vs6520; CHECK-BE-NEXT:    mffprwz r4, f9521; CHECK-BE-NEXT:    mtfprwz f9, r4522; CHECK-BE-NEXT:    stxv vs4, 0(r3)523; CHECK-BE-NEXT:    mffprwz r4, f3524; CHECK-BE-NEXT:    mtfprwz f3, r4525; CHECK-BE-NEXT:    mffprwz r4, f5526; CHECK-BE-NEXT:    mtfprwz f5, r4527; CHECK-BE-NEXT:    mffprwz r4, f2528; CHECK-BE-NEXT:    xxperm vs3, vs9, vs8529; CHECK-BE-NEXT:    mtfprwz f2, r4530; CHECK-BE-NEXT:    xxperm vs2, vs5, vs8531; CHECK-BE-NEXT:    xxmrghw vs2, vs2, vs3532; CHECK-BE-NEXT:    xscvdpsxws f3, f1533; CHECK-BE-NEXT:    xxswapd vs1, vs1534; CHECK-BE-NEXT:    xscvdpsxws f1, f1535; CHECK-BE-NEXT:    mffprwz r4, f3536; CHECK-BE-NEXT:    mtfprwz f3, r4537; CHECK-BE-NEXT:    mffprwz r4, f1538; CHECK-BE-NEXT:    mtfprwz f1, r4539; CHECK-BE-NEXT:    xxperm vs1, vs3, vs8540; CHECK-BE-NEXT:    xscvdpsxws f3, f0541; CHECK-BE-NEXT:    xxswapd vs0, vs0542; CHECK-BE-NEXT:    xscvdpsxws f0, f0543; CHECK-BE-NEXT:    mffprwz r4, f3544; CHECK-BE-NEXT:    mtfprwz f3, r4545; CHECK-BE-NEXT:    mffprwz r4, f0546; CHECK-BE-NEXT:    mtfprwz f0, r4547; CHECK-BE-NEXT:    xxperm vs0, vs3, vs8548; CHECK-BE-NEXT:    xxmrghw vs0, vs0, vs1549; CHECK-BE-NEXT:    xxmrghd vs0, vs0, vs2550; CHECK-BE-NEXT:    stxv vs0, 16(r3)551; CHECK-BE-NEXT:    blr552entry:553  %a = load <16 x double>, ptr %0, align 128554  %1 = fptoui <16 x double> %a to <16 x i16>555  store <16 x i16> %1, ptr %agg.result, align 32556  ret void557}558 559define i32 @test2elt_signed(<2 x double> %a) local_unnamed_addr #0 {560; CHECK-P8-LABEL: test2elt_signed:561; CHECK-P8:       # %bb.0: # %entry562; CHECK-P8-NEXT:    xscvdpsxws f1, v2563; CHECK-P8-NEXT:    xxswapd vs0, v2564; CHECK-P8-NEXT:    xscvdpsxws f0, f0565; CHECK-P8-NEXT:    mffprwz r3, f1566; CHECK-P8-NEXT:    mtvsrd v2, r3567; CHECK-P8-NEXT:    mffprwz r3, f0568; CHECK-P8-NEXT:    mtvsrd v3, r3569; CHECK-P8-NEXT:    vmrghh v2, v2, v3570; CHECK-P8-NEXT:    xxswapd vs0, v2571; CHECK-P8-NEXT:    mffprwz r3, f0572; CHECK-P8-NEXT:    blr573;574; CHECK-P9-LABEL: test2elt_signed:575; CHECK-P9:       # %bb.0: # %entry576; CHECK-P9-NEXT:    xscvdpsxws f0, v2577; CHECK-P9-NEXT:    mffprwz r3, f0578; CHECK-P9-NEXT:    xxswapd vs0, v2579; CHECK-P9-NEXT:    mtvsrd v3, r3580; CHECK-P9-NEXT:    xscvdpsxws f0, f0581; CHECK-P9-NEXT:    mffprwz r3, f0582; CHECK-P9-NEXT:    mtvsrd v2, r3583; CHECK-P9-NEXT:    li r3, 0584; CHECK-P9-NEXT:    vmrghh v2, v3, v2585; CHECK-P9-NEXT:    vextuwrx r3, r3, v2586; CHECK-P9-NEXT:    blr587;588; CHECK-BE-LABEL: test2elt_signed:589; CHECK-BE:       # %bb.0: # %entry590; CHECK-BE-NEXT:    xxswapd vs2, v2591; CHECK-BE-NEXT:    xscvdpsxws f1, v2592; CHECK-BE-NEXT:    addis r3, r2, .LCPI4_0@toc@ha593; CHECK-BE-NEXT:    addi r3, r3, .LCPI4_0@toc@l594; CHECK-BE-NEXT:    xscvdpsxws f2, f2595; CHECK-BE-NEXT:    lxv vs0, 0(r3)596; CHECK-BE-NEXT:    mffprwz r3, f1597; CHECK-BE-NEXT:    mtfprwz f1, r3598; CHECK-BE-NEXT:    mffprwz r3, f2599; CHECK-BE-NEXT:    mtvsrwz v2, r3600; CHECK-BE-NEXT:    li r3, 0601; CHECK-BE-NEXT:    xxperm v2, vs1, vs0602; CHECK-BE-NEXT:    vextuwlx r3, r3, v2603; CHECK-BE-NEXT:    blr604entry:605  %0 = fptosi <2 x double> %a to <2 x i16>606  %1 = bitcast <2 x i16> %0 to i32607  ret i32 %1608}609 610define i64 @test4elt_signed(ptr nocapture readonly) local_unnamed_addr #1 {611; CHECK-P8-LABEL: test4elt_signed:612; CHECK-P8:       # %bb.0: # %entry613; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3614; CHECK-P8-NEXT:    li r4, 16615; CHECK-P8-NEXT:    lxvd2x vs2, r3, r4616; CHECK-P8-NEXT:    xxswapd vs1, vs0617; CHECK-P8-NEXT:    xscvdpsxws f0, f0618; CHECK-P8-NEXT:    xscvdpsxws f1, f1619; CHECK-P8-NEXT:    mffprwz r3, f0620; CHECK-P8-NEXT:    xscvdpsxws f0, f2621; CHECK-P8-NEXT:    mffprwz r4, f1622; CHECK-P8-NEXT:    mtvsrd v2, r3623; CHECK-P8-NEXT:    mtvsrd v3, r4624; CHECK-P8-NEXT:    xxswapd vs3, vs2625; CHECK-P8-NEXT:    xscvdpsxws f3, f3626; CHECK-P8-NEXT:    mffprwz r3, f3627; CHECK-P8-NEXT:    mtvsrd v4, r3628; CHECK-P8-NEXT:    mffprwz r3, f0629; CHECK-P8-NEXT:    vmrghh v2, v3, v2630; CHECK-P8-NEXT:    mtvsrd v3, r3631; CHECK-P8-NEXT:    vmrghh v3, v4, v3632; CHECK-P8-NEXT:    xxmrglw vs0, v3, v2633; CHECK-P8-NEXT:    xxswapd vs0, vs0634; CHECK-P8-NEXT:    mffprd r3, f0635; CHECK-P8-NEXT:    blr636;637; CHECK-P9-LABEL: test4elt_signed:638; CHECK-P9:       # %bb.0: # %entry639; CHECK-P9-NEXT:    lxv vs1, 0(r3)640; CHECK-P9-NEXT:    lxv vs0, 16(r3)641; CHECK-P9-NEXT:    xscvdpsxws f2, f1642; CHECK-P9-NEXT:    xxswapd vs1, vs1643; CHECK-P9-NEXT:    xscvdpsxws f1, f1644; CHECK-P9-NEXT:    mffprwz r3, f2645; CHECK-P9-NEXT:    mtvsrd v2, r3646; CHECK-P9-NEXT:    mffprwz r3, f1647; CHECK-P9-NEXT:    xscvdpsxws f1, f0648; CHECK-P9-NEXT:    xxswapd vs0, vs0649; CHECK-P9-NEXT:    mtvsrd v3, r3650; CHECK-P9-NEXT:    xscvdpsxws f0, f0651; CHECK-P9-NEXT:    vmrghh v2, v2, v3652; CHECK-P9-NEXT:    mffprwz r3, f1653; CHECK-P9-NEXT:    mtvsrd v3, r3654; CHECK-P9-NEXT:    mffprwz r3, f0655; CHECK-P9-NEXT:    mtvsrd v4, r3656; CHECK-P9-NEXT:    vmrghh v3, v3, v4657; CHECK-P9-NEXT:    xxmrglw vs0, v3, v2658; CHECK-P9-NEXT:    mfvsrld r3, vs0659; CHECK-P9-NEXT:    blr660;661; CHECK-BE-LABEL: test4elt_signed:662; CHECK-BE:       # %bb.0: # %entry663; CHECK-BE-NEXT:    lxv vs1, 16(r3)664; CHECK-BE-NEXT:    lxv vs0, 0(r3)665; CHECK-BE-NEXT:    addis r3, r2, .LCPI5_0@toc@ha666; CHECK-BE-NEXT:    addi r3, r3, .LCPI5_0@toc@l667; CHECK-BE-NEXT:    lxv vs2, 0(r3)668; CHECK-BE-NEXT:    xscvdpsxws f3, f1669; CHECK-BE-NEXT:    xxswapd vs1, vs1670; CHECK-BE-NEXT:    xscvdpsxws f1, f1671; CHECK-BE-NEXT:    mffprwz r3, f3672; CHECK-BE-NEXT:    mtfprwz f3, r3673; CHECK-BE-NEXT:    mffprwz r3, f1674; CHECK-BE-NEXT:    mtfprwz f1, r3675; CHECK-BE-NEXT:    xxperm vs1, vs3, vs2676; CHECK-BE-NEXT:    xscvdpsxws f3, f0677; CHECK-BE-NEXT:    xxswapd vs0, vs0678; CHECK-BE-NEXT:    xscvdpsxws f0, f0679; CHECK-BE-NEXT:    mffprwz r3, f3680; CHECK-BE-NEXT:    mtfprwz f3, r3681; CHECK-BE-NEXT:    mffprwz r3, f0682; CHECK-BE-NEXT:    mtfprwz f0, r3683; CHECK-BE-NEXT:    xxperm vs0, vs3, vs2684; CHECK-BE-NEXT:    xxmrghw vs0, vs0, vs1685; CHECK-BE-NEXT:    mffprd r3, f0686; CHECK-BE-NEXT:    blr687entry:688  %a = load <4 x double>, ptr %0, align 32689  %1 = fptosi <4 x double> %a to <4 x i16>690  %2 = bitcast <4 x i16> %1 to i64691  ret i64 %2692}693 694define <8 x i16> @test8elt_signed(ptr nocapture readonly) local_unnamed_addr #2 {695; CHECK-P8-LABEL: test8elt_signed:696; CHECK-P8:       # %bb.0: # %entry697; CHECK-P8-NEXT:    li r4, 16698; CHECK-P8-NEXT:    lxvd2x vs1, 0, r3699; CHECK-P8-NEXT:    lxvd2x vs0, r3, r4700; CHECK-P8-NEXT:    li r4, 32701; CHECK-P8-NEXT:    lxvd2x vs4, r3, r4702; CHECK-P8-NEXT:    li r4, 48703; CHECK-P8-NEXT:    lxvd2x vs6, r3, r4704; CHECK-P8-NEXT:    xxswapd vs3, vs1705; CHECK-P8-NEXT:    xscvdpsxws f1, f1706; CHECK-P8-NEXT:    xscvdpsxws f3, f3707; CHECK-P8-NEXT:    mffprwz r3, f1708; CHECK-P8-NEXT:    mtvsrd v2, r3709; CHECK-P8-NEXT:    xxswapd vs2, vs0710; CHECK-P8-NEXT:    xscvdpsxws f0, f0711; CHECK-P8-NEXT:    mffprwz r4, f0712; CHECK-P8-NEXT:    xscvdpsxws f2, f2713; CHECK-P8-NEXT:    xscvdpsxws f0, f6714; CHECK-P8-NEXT:    mtvsrd v3, r4715; CHECK-P8-NEXT:    mffprwz r4, f3716; CHECK-P8-NEXT:    mtvsrd v5, r4717; CHECK-P8-NEXT:    xxswapd vs5, vs4718; CHECK-P8-NEXT:    xscvdpsxws f4, f4719; CHECK-P8-NEXT:    mffprwz r3, f4720; CHECK-P8-NEXT:    xscvdpsxws f5, f5721; CHECK-P8-NEXT:    mtvsrd v4, r3722; CHECK-P8-NEXT:    mffprwz r3, f2723; CHECK-P8-NEXT:    mffprwz r4, f5724; CHECK-P8-NEXT:    xxswapd vs7, vs6725; CHECK-P8-NEXT:    xscvdpsxws f7, f7726; CHECK-P8-NEXT:    vmrghh v2, v5, v2727; CHECK-P8-NEXT:    mtvsrd v5, r3728; CHECK-P8-NEXT:    mffprwz r3, f7729; CHECK-P8-NEXT:    mtvsrd v0, r3730; CHECK-P8-NEXT:    mffprwz r3, f0731; CHECK-P8-NEXT:    vmrghh v3, v5, v3732; CHECK-P8-NEXT:    mtvsrd v5, r4733; CHECK-P8-NEXT:    xxmrglw vs0, v3, v2734; CHECK-P8-NEXT:    vmrghh v4, v5, v4735; CHECK-P8-NEXT:    mtvsrd v5, r3736; CHECK-P8-NEXT:    vmrghh v5, v0, v5737; CHECK-P8-NEXT:    xxmrglw vs1, v5, v4738; CHECK-P8-NEXT:    xxmrgld v2, vs1, vs0739; CHECK-P8-NEXT:    blr740;741; CHECK-P9-LABEL: test8elt_signed:742; CHECK-P9:       # %bb.0: # %entry743; CHECK-P9-NEXT:    lxv vs3, 0(r3)744; CHECK-P9-NEXT:    lxv vs2, 16(r3)745; CHECK-P9-NEXT:    lxv vs0, 48(r3)746; CHECK-P9-NEXT:    lxv vs1, 32(r3)747; CHECK-P9-NEXT:    xscvdpsxws f4, f3748; CHECK-P9-NEXT:    xxswapd vs3, vs3749; CHECK-P9-NEXT:    xscvdpsxws f3, f3750; CHECK-P9-NEXT:    mffprwz r3, f4751; CHECK-P9-NEXT:    mtvsrd v2, r3752; CHECK-P9-NEXT:    mffprwz r3, f3753; CHECK-P9-NEXT:    xscvdpsxws f3, f2754; CHECK-P9-NEXT:    xxswapd vs2, vs2755; CHECK-P9-NEXT:    mtvsrd v3, r3756; CHECK-P9-NEXT:    xscvdpsxws f2, f2757; CHECK-P9-NEXT:    vmrghh v2, v2, v3758; CHECK-P9-NEXT:    mffprwz r3, f3759; CHECK-P9-NEXT:    xscvdpsxws f3, f1760; CHECK-P9-NEXT:    xxswapd vs1, vs1761; CHECK-P9-NEXT:    mtvsrd v3, r3762; CHECK-P9-NEXT:    mffprwz r3, f2763; CHECK-P9-NEXT:    xscvdpsxws f1, f1764; CHECK-P9-NEXT:    mtvsrd v4, r3765; CHECK-P9-NEXT:    vmrghh v3, v3, v4766; CHECK-P9-NEXT:    mffprwz r3, f3767; CHECK-P9-NEXT:    xxmrglw vs2, v3, v2768; CHECK-P9-NEXT:    mtvsrd v2, r3769; CHECK-P9-NEXT:    mffprwz r3, f1770; CHECK-P9-NEXT:    xscvdpsxws f1, f0771; CHECK-P9-NEXT:    xxswapd vs0, vs0772; CHECK-P9-NEXT:    mtvsrd v3, r3773; CHECK-P9-NEXT:    xscvdpsxws f0, f0774; CHECK-P9-NEXT:    vmrghh v2, v2, v3775; CHECK-P9-NEXT:    mffprwz r3, f1776; CHECK-P9-NEXT:    mtvsrd v3, r3777; CHECK-P9-NEXT:    mffprwz r3, f0778; CHECK-P9-NEXT:    mtvsrd v4, r3779; CHECK-P9-NEXT:    vmrghh v3, v3, v4780; CHECK-P9-NEXT:    xxmrglw vs0, v3, v2781; CHECK-P9-NEXT:    xxmrgld v2, vs0, vs2782; CHECK-P9-NEXT:    blr783;784; CHECK-BE-LABEL: test8elt_signed:785; CHECK-BE:       # %bb.0: # %entry786; CHECK-BE-NEXT:    lxv vs3, 48(r3)787; CHECK-BE-NEXT:    lxv vs0, 0(r3)788; CHECK-BE-NEXT:    lxv vs1, 16(r3)789; CHECK-BE-NEXT:    lxv vs2, 32(r3)790; CHECK-BE-NEXT:    addis r3, r2, .LCPI6_0@toc@ha791; CHECK-BE-NEXT:    addi r3, r3, .LCPI6_0@toc@l792; CHECK-BE-NEXT:    lxv vs4, 0(r3)793; CHECK-BE-NEXT:    xscvdpsxws f5, f3794; CHECK-BE-NEXT:    xxswapd vs3, vs3795; CHECK-BE-NEXT:    xscvdpsxws f3, f3796; CHECK-BE-NEXT:    mffprwz r3, f5797; CHECK-BE-NEXT:    mtfprwz f5, r3798; CHECK-BE-NEXT:    mffprwz r3, f3799; CHECK-BE-NEXT:    mtfprwz f3, r3800; CHECK-BE-NEXT:    xxperm vs3, vs5, vs4801; CHECK-BE-NEXT:    xscvdpsxws f5, f2802; CHECK-BE-NEXT:    xxswapd vs2, vs2803; CHECK-BE-NEXT:    xscvdpsxws f2, f2804; CHECK-BE-NEXT:    mffprwz r3, f5805; CHECK-BE-NEXT:    mtfprwz f5, r3806; CHECK-BE-NEXT:    mffprwz r3, f2807; CHECK-BE-NEXT:    mtfprwz f2, r3808; CHECK-BE-NEXT:    xxperm vs2, vs5, vs4809; CHECK-BE-NEXT:    xxmrghw vs2, vs2, vs3810; CHECK-BE-NEXT:    xscvdpsxws f3, f1811; CHECK-BE-NEXT:    xxswapd vs1, vs1812; CHECK-BE-NEXT:    xscvdpsxws f1, f1813; CHECK-BE-NEXT:    mffprwz r3, f3814; CHECK-BE-NEXT:    mtfprwz f3, r3815; CHECK-BE-NEXT:    mffprwz r3, f1816; CHECK-BE-NEXT:    mtfprwz f1, r3817; CHECK-BE-NEXT:    xxperm vs1, vs3, vs4818; CHECK-BE-NEXT:    xscvdpsxws f3, f0819; CHECK-BE-NEXT:    xxswapd vs0, vs0820; CHECK-BE-NEXT:    xscvdpsxws f0, f0821; CHECK-BE-NEXT:    mffprwz r3, f3822; CHECK-BE-NEXT:    mtfprwz f3, r3823; CHECK-BE-NEXT:    mffprwz r3, f0824; CHECK-BE-NEXT:    mtfprwz f0, r3825; CHECK-BE-NEXT:    xxperm vs0, vs3, vs4826; CHECK-BE-NEXT:    xxmrghw vs0, vs0, vs1827; CHECK-BE-NEXT:    xxmrghd v2, vs0, vs2828; CHECK-BE-NEXT:    blr829entry:830  %a = load <8 x double>, ptr %0, align 64831  %1 = fptosi <8 x double> %a to <8 x i16>832  ret <8 x i16> %1833}834 835define void @test16elt_signed(ptr noalias nocapture sret(<16 x i16>) %agg.result, ptr nocapture readonly) local_unnamed_addr #3 {836; CHECK-P8-LABEL: test16elt_signed:837; CHECK-P8:       # %bb.0: # %entry838; CHECK-P8-NEXT:    lxvd2x vs5, 0, r4839; CHECK-P8-NEXT:    li r5, 80840; CHECK-P8-NEXT:    li r6, 32841; CHECK-P8-NEXT:    lxvd2x vs3, r4, r5842; CHECK-P8-NEXT:    li r5, 16843; CHECK-P8-NEXT:    lxvd2x vs9, r4, r6844; CHECK-P8-NEXT:    li r6, 64845; CHECK-P8-NEXT:    lxvd2x vs7, r4, r5846; CHECK-P8-NEXT:    lxvd2x vs11, r4, r6847; CHECK-P8-NEXT:    li r6, 48848; CHECK-P8-NEXT:    lxvd2x vs12, r4, r6849; CHECK-P8-NEXT:    li r6, 96850; CHECK-P8-NEXT:    lxvd2x vs2, r4, r6851; CHECK-P8-NEXT:    li r6, 112852; CHECK-P8-NEXT:    lxvd2x vs0, r4, r6853; CHECK-P8-NEXT:    xxswapd vs6, vs5854; CHECK-P8-NEXT:    xscvdpsxws f5, f5855; CHECK-P8-NEXT:    xscvdpsxws f6, f6856; CHECK-P8-NEXT:    mffprwz r4, f5857; CHECK-P8-NEXT:    mtvsrd v4, r4858; CHECK-P8-NEXT:    xxswapd vs10, vs9859; CHECK-P8-NEXT:    xscvdpsxws f9, f9860; CHECK-P8-NEXT:    xxswapd vs4, vs3861; CHECK-P8-NEXT:    xscvdpsxws f3, f3862; CHECK-P8-NEXT:    xscvdpsxws f10, f10863; CHECK-P8-NEXT:    xscvdpsxws f4, f4864; CHECK-P8-NEXT:    xxswapd vs8, vs7865; CHECK-P8-NEXT:    xscvdpsxws f7, f7866; CHECK-P8-NEXT:    mffprwz r4, f7867; CHECK-P8-NEXT:    xxswapd vs13, vs11868; CHECK-P8-NEXT:    xscvdpsxws f11, f11869; CHECK-P8-NEXT:    xscvdpsxws f8, f8870; CHECK-P8-NEXT:    xscvdpsxws f13, f13871; CHECK-P8-NEXT:    mtvsrd v5, r4872; CHECK-P8-NEXT:    xxswapd v2, vs12873; CHECK-P8-NEXT:    xscvdpsxws f12, f12874; CHECK-P8-NEXT:    mffprwz r4, f9875; CHECK-P8-NEXT:    xscvdpsxws v2, v2876; CHECK-P8-NEXT:    mtvsrd v0, r4877; CHECK-P8-NEXT:    mffprwz r4, f12878; CHECK-P8-NEXT:    mtvsrd v1, r4879; CHECK-P8-NEXT:    mffprwz r4, f11880; CHECK-P8-NEXT:    xxswapd v3, vs2881; CHECK-P8-NEXT:    xscvdpsxws v3, v3882; CHECK-P8-NEXT:    xscvdpsxws f2, f2883; CHECK-P8-NEXT:    mtvsrd v6, r4884; CHECK-P8-NEXT:    mffprwz r4, f3885; CHECK-P8-NEXT:    mtvsrd v7, r4886; CHECK-P8-NEXT:    mffprwz r4, f6887; CHECK-P8-NEXT:    mtvsrd v8, r4888; CHECK-P8-NEXT:    mffprwz r4, f8889; CHECK-P8-NEXT:    xxswapd vs1, vs0890; CHECK-P8-NEXT:    xscvdpsxws f1, f1891; CHECK-P8-NEXT:    xscvdpsxws f0, f0892; CHECK-P8-NEXT:    mtvsrd v9, r4893; CHECK-P8-NEXT:    mffprwz r4, f10894; CHECK-P8-NEXT:    mtvsrd v10, r4895; CHECK-P8-NEXT:    mfvsrwz r4, v2896; CHECK-P8-NEXT:    mtvsrd v2, r4897; CHECK-P8-NEXT:    mffprwz r4, f13898; CHECK-P8-NEXT:    vmrghh v4, v8, v4899; CHECK-P8-NEXT:    mtvsrd v8, r4900; CHECK-P8-NEXT:    mffprwz r4, f4901; CHECK-P8-NEXT:    vmrghh v5, v9, v5902; CHECK-P8-NEXT:    mtvsrd v9, r4903; CHECK-P8-NEXT:    mfvsrwz r4, v3904; CHECK-P8-NEXT:    vmrghh v0, v10, v0905; CHECK-P8-NEXT:    vmrghh v2, v2, v1906; CHECK-P8-NEXT:    vmrghh v3, v8, v6907; CHECK-P8-NEXT:    mtvsrd v6, r4908; CHECK-P8-NEXT:    mffprwz r4, f2909; CHECK-P8-NEXT:    vmrghh v1, v9, v7910; CHECK-P8-NEXT:    mtvsrd v7, r4911; CHECK-P8-NEXT:    mffprwz r4, f1912; CHECK-P8-NEXT:    xxmrglw vs2, v1, v3913; CHECK-P8-NEXT:    xxmrglw vs1, v2, v0914; CHECK-P8-NEXT:    vmrghh v6, v6, v7915; CHECK-P8-NEXT:    mtvsrd v7, r4916; CHECK-P8-NEXT:    mffprwz r4, f0917; CHECK-P8-NEXT:    xxmrglw vs0, v5, v4918; CHECK-P8-NEXT:    mtvsrd v8, r4919; CHECK-P8-NEXT:    xxmrgld v2, vs1, vs0920; CHECK-P8-NEXT:    xxswapd vs1, v2921; CHECK-P8-NEXT:    stxvd2x vs1, 0, r3922; CHECK-P8-NEXT:    vmrghh v7, v7, v8923; CHECK-P8-NEXT:    xxmrglw vs3, v7, v6924; CHECK-P8-NEXT:    xxmrgld v3, vs3, vs2925; CHECK-P8-NEXT:    xxswapd vs0, v3926; CHECK-P8-NEXT:    stxvd2x vs0, r3, r5927; CHECK-P8-NEXT:    blr928;929; CHECK-P9-LABEL: test16elt_signed:930; CHECK-P9:       # %bb.0: # %entry931; CHECK-P9-NEXT:    lxv vs2, 0(r4)932; CHECK-P9-NEXT:    lxv vs1, 16(r4)933; CHECK-P9-NEXT:    lxv vs0, 32(r4)934; CHECK-P9-NEXT:    xscvdpsxws f3, f2935; CHECK-P9-NEXT:    xscvdpsxws f4, f1936; CHECK-P9-NEXT:    xxswapd vs2, vs2937; CHECK-P9-NEXT:    xscvdpsxws f5, f0938; CHECK-P9-NEXT:    xxswapd vs1, vs1939; CHECK-P9-NEXT:    xxswapd vs0, vs0940; CHECK-P9-NEXT:    xscvdpsxws f2, f2941; CHECK-P9-NEXT:    xscvdpsxws f1, f1942; CHECK-P9-NEXT:    xscvdpsxws f0, f0943; CHECK-P9-NEXT:    mffprwz r5, f3944; CHECK-P9-NEXT:    lxv vs3, 64(r4)945; CHECK-P9-NEXT:    mtvsrd v2, r5946; CHECK-P9-NEXT:    mffprwz r5, f4947; CHECK-P9-NEXT:    lxv vs4, 48(r4)948; CHECK-P9-NEXT:    mtvsrd v3, r5949; CHECK-P9-NEXT:    mffprwz r5, f5950; CHECK-P9-NEXT:    xscvdpsxws f7, f3951; CHECK-P9-NEXT:    xxswapd vs3, vs3952; CHECK-P9-NEXT:    mtvsrd v4, r5953; CHECK-P9-NEXT:    mffprwz r5, f2954; CHECK-P9-NEXT:    lxv vs2, 80(r4)955; CHECK-P9-NEXT:    xscvdpsxws f5, f4956; CHECK-P9-NEXT:    xxswapd vs4, vs4957; CHECK-P9-NEXT:    mtvsrd v5, r5958; CHECK-P9-NEXT:    mffprwz r5, f1959; CHECK-P9-NEXT:    xscvdpsxws f3, f3960; CHECK-P9-NEXT:    lxv vs1, 96(r4)961; CHECK-P9-NEXT:    xscvdpsxws f4, f4962; CHECK-P9-NEXT:    vmrghh v2, v2, v5963; CHECK-P9-NEXT:    mtvsrd v5, r5964; CHECK-P9-NEXT:    mffprwz r5, f0965; CHECK-P9-NEXT:    lxv vs0, 112(r4)966; CHECK-P9-NEXT:    vmrghh v3, v3, v5967; CHECK-P9-NEXT:    mtvsrd v5, r5968; CHECK-P9-NEXT:    mffprwz r4, f5969; CHECK-P9-NEXT:    vmrghh v4, v4, v5970; CHECK-P9-NEXT:    xxmrglw vs6, v3, v2971; CHECK-P9-NEXT:    mtvsrd v2, r4972; CHECK-P9-NEXT:    mffprwz r4, f4973; CHECK-P9-NEXT:    mtvsrd v3, r4974; CHECK-P9-NEXT:    mffprwz r4, f7975; CHECK-P9-NEXT:    vmrghh v2, v2, v3976; CHECK-P9-NEXT:    mtvsrd v3, r4977; CHECK-P9-NEXT:    mffprwz r4, f3978; CHECK-P9-NEXT:    xscvdpsxws f3, f2979; CHECK-P9-NEXT:    xxswapd vs2, vs2980; CHECK-P9-NEXT:    xscvdpsxws f2, f2981; CHECK-P9-NEXT:    xxmrglw vs4, v2, v4982; CHECK-P9-NEXT:    mtvsrd v2, r4983; CHECK-P9-NEXT:    vmrghh v2, v3, v2984; CHECK-P9-NEXT:    xxmrgld vs4, vs4, vs6985; CHECK-P9-NEXT:    mffprwz r4, f3986; CHECK-P9-NEXT:    xscvdpsxws f3, f1987; CHECK-P9-NEXT:    xxswapd vs1, vs1988; CHECK-P9-NEXT:    mtvsrd v3, r4989; CHECK-P9-NEXT:    stxv vs4, 0(r3)990; CHECK-P9-NEXT:    mffprwz r4, f2991; CHECK-P9-NEXT:    xscvdpsxws f1, f1992; CHECK-P9-NEXT:    mtvsrd v4, r4993; CHECK-P9-NEXT:    vmrghh v3, v3, v4994; CHECK-P9-NEXT:    mffprwz r4, f3995; CHECK-P9-NEXT:    xxmrglw vs2, v3, v2996; CHECK-P9-NEXT:    mtvsrd v2, r4997; CHECK-P9-NEXT:    mffprwz r4, f1998; CHECK-P9-NEXT:    xscvdpsxws f1, f0999; CHECK-P9-NEXT:    xxswapd vs0, vs01000; CHECK-P9-NEXT:    mtvsrd v3, r41001; CHECK-P9-NEXT:    xscvdpsxws f0, f01002; CHECK-P9-NEXT:    vmrghh v2, v2, v31003; CHECK-P9-NEXT:    mffprwz r4, f11004; CHECK-P9-NEXT:    mtvsrd v3, r41005; CHECK-P9-NEXT:    mffprwz r4, f01006; CHECK-P9-NEXT:    mtvsrd v4, r41007; CHECK-P9-NEXT:    vmrghh v3, v3, v41008; CHECK-P9-NEXT:    xxmrglw vs0, v3, v21009; CHECK-P9-NEXT:    xxmrgld vs0, vs0, vs21010; CHECK-P9-NEXT:    stxv vs0, 16(r3)1011; CHECK-P9-NEXT:    blr1012;1013; CHECK-BE-LABEL: test16elt_signed:1014; CHECK-BE:       # %bb.0: # %entry1015; CHECK-BE-NEXT:    lxv vs7, 48(r4)1016; CHECK-BE-NEXT:    lxv vs0, 64(r4)1017; CHECK-BE-NEXT:    lxv vs1, 80(r4)1018; CHECK-BE-NEXT:    lxv vs2, 96(r4)1019; CHECK-BE-NEXT:    xscvdpsxws f9, f71020; CHECK-BE-NEXT:    xxswapd vs7, vs71021; CHECK-BE-NEXT:    lxv vs3, 112(r4)1022; CHECK-BE-NEXT:    lxv vs4, 0(r4)1023; CHECK-BE-NEXT:    lxv vs5, 16(r4)1024; CHECK-BE-NEXT:    lxv vs6, 32(r4)1025; CHECK-BE-NEXT:    addis r4, r2, .LCPI7_0@toc@ha1026; CHECK-BE-NEXT:    addi r4, r4, .LCPI7_0@toc@l1027; CHECK-BE-NEXT:    lxv vs8, 0(r4)1028; CHECK-BE-NEXT:    xscvdpsxws f7, f71029; CHECK-BE-NEXT:    mffprwz r4, f91030; CHECK-BE-NEXT:    mtfprwz f9, r41031; CHECK-BE-NEXT:    mffprwz r4, f71032; CHECK-BE-NEXT:    mtfprwz f7, r41033; CHECK-BE-NEXT:    xxperm vs7, vs9, vs81034; CHECK-BE-NEXT:    xscvdpsxws f9, f61035; CHECK-BE-NEXT:    xxswapd vs6, vs61036; CHECK-BE-NEXT:    xscvdpsxws f6, f61037; CHECK-BE-NEXT:    mffprwz r4, f91038; CHECK-BE-NEXT:    mtfprwz f9, r41039; CHECK-BE-NEXT:    mffprwz r4, f61040; CHECK-BE-NEXT:    mtfprwz f6, r41041; CHECK-BE-NEXT:    xxperm vs6, vs9, vs81042; CHECK-BE-NEXT:    xscvdpsxws f9, f51043; CHECK-BE-NEXT:    xxswapd vs5, vs51044; CHECK-BE-NEXT:    xscvdpsxws f5, f51045; CHECK-BE-NEXT:    xxmrghw vs6, vs6, vs71046; CHECK-BE-NEXT:    mffprwz r4, f91047; CHECK-BE-NEXT:    mtfprwz f9, r41048; CHECK-BE-NEXT:    mffprwz r4, f51049; CHECK-BE-NEXT:    mtfprwz f5, r41050; CHECK-BE-NEXT:    xxperm vs5, vs9, vs81051; CHECK-BE-NEXT:    xscvdpsxws f9, f41052; CHECK-BE-NEXT:    xxswapd vs4, vs41053; CHECK-BE-NEXT:    xscvdpsxws f4, f41054; CHECK-BE-NEXT:    mffprwz r4, f91055; CHECK-BE-NEXT:    mtfprwz f9, r41056; CHECK-BE-NEXT:    mffprwz r4, f41057; CHECK-BE-NEXT:    mtfprwz f4, r41058; CHECK-BE-NEXT:    xxperm vs4, vs9, vs81059; CHECK-BE-NEXT:    xscvdpsxws f9, f31060; CHECK-BE-NEXT:    xxswapd vs3, vs31061; CHECK-BE-NEXT:    xscvdpsxws f3, f31062; CHECK-BE-NEXT:    xxmrghw vs4, vs4, vs51063; CHECK-BE-NEXT:    xscvdpsxws f5, f21064; CHECK-BE-NEXT:    xxswapd vs2, vs21065; CHECK-BE-NEXT:    xscvdpsxws f2, f21066; CHECK-BE-NEXT:    xxmrghd vs4, vs4, vs61067; CHECK-BE-NEXT:    mffprwz r4, f91068; CHECK-BE-NEXT:    mtfprwz f9, r41069; CHECK-BE-NEXT:    stxv vs4, 0(r3)1070; CHECK-BE-NEXT:    mffprwz r4, f31071; CHECK-BE-NEXT:    mtfprwz f3, r41072; CHECK-BE-NEXT:    mffprwz r4, f51073; CHECK-BE-NEXT:    mtfprwz f5, r41074; CHECK-BE-NEXT:    mffprwz r4, f21075; CHECK-BE-NEXT:    xxperm vs3, vs9, vs81076; CHECK-BE-NEXT:    mtfprwz f2, r41077; CHECK-BE-NEXT:    xxperm vs2, vs5, vs81078; CHECK-BE-NEXT:    xxmrghw vs2, vs2, vs31079; CHECK-BE-NEXT:    xscvdpsxws f3, f11080; CHECK-BE-NEXT:    xxswapd vs1, vs11081; CHECK-BE-NEXT:    xscvdpsxws f1, f11082; CHECK-BE-NEXT:    mffprwz r4, f31083; CHECK-BE-NEXT:    mtfprwz f3, r41084; CHECK-BE-NEXT:    mffprwz r4, f11085; CHECK-BE-NEXT:    mtfprwz f1, r41086; CHECK-BE-NEXT:    xxperm vs1, vs3, vs81087; CHECK-BE-NEXT:    xscvdpsxws f3, f01088; CHECK-BE-NEXT:    xxswapd vs0, vs01089; CHECK-BE-NEXT:    xscvdpsxws f0, f01090; CHECK-BE-NEXT:    mffprwz r4, f31091; CHECK-BE-NEXT:    mtfprwz f3, r41092; CHECK-BE-NEXT:    mffprwz r4, f01093; CHECK-BE-NEXT:    mtfprwz f0, r41094; CHECK-BE-NEXT:    xxperm vs0, vs3, vs81095; CHECK-BE-NEXT:    xxmrghw vs0, vs0, vs11096; CHECK-BE-NEXT:    xxmrghd vs0, vs0, vs21097; CHECK-BE-NEXT:    stxv vs0, 16(r3)1098; CHECK-BE-NEXT:    blr1099entry:1100  %a = load <16 x double>, ptr %0, align 1281101  %1 = fptosi <16 x double> %a to <16 x i16>1102  store <16 x i16> %1, ptr %agg.result, align 321103  ret void1104}1105