1275 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(i64 %a.coerce) local_unnamed_addr #0 {13; CHECK-P8-LABEL: test2elt:14; CHECK-P8: # %bb.0: # %entry15; CHECK-P8-NEXT: mtfprd f0, r316; CHECK-P8-NEXT: xxswapd v2, vs017; CHECK-P8-NEXT: xscvspdpn f0, vs018; CHECK-P8-NEXT: xscvdpsxws f0, f019; CHECK-P8-NEXT: xxsldwi vs1, v2, v2, 320; CHECK-P8-NEXT: xscvspdpn f1, vs121; CHECK-P8-NEXT: xscvdpsxws f1, f122; CHECK-P8-NEXT: mffprwz r3, f123; CHECK-P8-NEXT: mtvsrd v2, r324; CHECK-P8-NEXT: mffprwz r3, f025; CHECK-P8-NEXT: mtvsrd v3, r326; CHECK-P8-NEXT: vmrghh v2, v3, v227; CHECK-P8-NEXT: xxswapd vs0, v228; CHECK-P8-NEXT: mffprwz r3, f029; CHECK-P8-NEXT: blr30;31; CHECK-P9-LABEL: test2elt:32; CHECK-P9: # %bb.0: # %entry33; CHECK-P9-NEXT: mtfprd f0, r334; CHECK-P9-NEXT: xxswapd v2, vs035; CHECK-P9-NEXT: xscvspdpn f0, vs036; CHECK-P9-NEXT: xxsldwi vs1, v2, v2, 337; CHECK-P9-NEXT: xscvdpsxws f0, f038; CHECK-P9-NEXT: xscvspdpn f1, vs139; CHECK-P9-NEXT: xscvdpsxws f1, f140; CHECK-P9-NEXT: mffprwz r3, f141; CHECK-P9-NEXT: mtvsrd v2, r342; CHECK-P9-NEXT: mffprwz r3, f043; CHECK-P9-NEXT: mtvsrd v3, r344; CHECK-P9-NEXT: li r3, 045; CHECK-P9-NEXT: vmrghh v2, v3, v246; CHECK-P9-NEXT: vextuwrx r3, r3, v247; CHECK-P9-NEXT: blr48;49; CHECK-BE-LABEL: test2elt:50; CHECK-BE: # %bb.0: # %entry51; CHECK-BE-NEXT: mtfprd f0, r352; CHECK-BE-NEXT: addis r3, r2, .LCPI0_0@toc@ha53; CHECK-BE-NEXT: xscvspdpn f2, vs054; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 155; CHECK-BE-NEXT: addi r3, r3, .LCPI0_0@toc@l56; CHECK-BE-NEXT: lxv vs1, 0(r3)57; CHECK-BE-NEXT: xscvspdpn f0, vs058; CHECK-BE-NEXT: xscvdpsxws f2, f259; CHECK-BE-NEXT: xscvdpsxws f0, f060; CHECK-BE-NEXT: mffprwz r3, f261; CHECK-BE-NEXT: mtfprwz f2, r362; CHECK-BE-NEXT: mffprwz r3, f063; CHECK-BE-NEXT: mtvsrwz v2, r364; CHECK-BE-NEXT: li r3, 065; CHECK-BE-NEXT: xxperm v2, vs2, vs166; CHECK-BE-NEXT: vextuwlx r3, r3, v267; CHECK-BE-NEXT: blr68entry:69 %0 = bitcast i64 %a.coerce to <2 x float>70 %1 = fptoui <2 x float> %0 to <2 x i16>71 %2 = bitcast <2 x i16> %1 to i3272 ret i32 %273}74 75define i64 @test4elt(<4 x float> %a) local_unnamed_addr #1 {76; CHECK-P8-LABEL: test4elt:77; CHECK-P8: # %bb.0: # %entry78; CHECK-P8-NEXT: xxsldwi vs0, v2, v2, 379; CHECK-P8-NEXT: xxswapd vs1, v280; CHECK-P8-NEXT: xscvspdpn f0, vs081; CHECK-P8-NEXT: xscvspdpn f1, vs182; CHECK-P8-NEXT: xxsldwi vs2, v2, v2, 183; CHECK-P8-NEXT: xscvdpsxws f0, f084; CHECK-P8-NEXT: xscvdpsxws f1, f185; CHECK-P8-NEXT: mffprwz r3, f086; CHECK-P8-NEXT: xscvspdpn f0, v287; CHECK-P8-NEXT: mtvsrd v3, r388; CHECK-P8-NEXT: mffprwz r3, f189; CHECK-P8-NEXT: xscvspdpn f1, vs290; CHECK-P8-NEXT: xscvdpsxws f0, f091; CHECK-P8-NEXT: mtvsrd v4, r392; CHECK-P8-NEXT: mffprwz r3, f093; CHECK-P8-NEXT: xscvdpsxws f0, f194; CHECK-P8-NEXT: mtvsrd v2, r395; CHECK-P8-NEXT: mffprwz r3, f096; CHECK-P8-NEXT: vmrghh v3, v4, v397; CHECK-P8-NEXT: mtvsrd v4, r398; CHECK-P8-NEXT: vmrghh v2, v2, v499; CHECK-P8-NEXT: xxmrglw vs0, v2, v3100; CHECK-P8-NEXT: xxswapd vs0, vs0101; CHECK-P8-NEXT: mffprd r3, f0102; CHECK-P8-NEXT: blr103;104; CHECK-P9-LABEL: test4elt:105; CHECK-P9: # %bb.0: # %entry106; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 3107; CHECK-P9-NEXT: xscvspdpn f0, vs0108; CHECK-P9-NEXT: xscvdpsxws f0, f0109; CHECK-P9-NEXT: mffprwz r3, f0110; CHECK-P9-NEXT: xxswapd vs0, v2111; CHECK-P9-NEXT: mtvsrd v3, r3112; CHECK-P9-NEXT: xscvspdpn f0, vs0113; CHECK-P9-NEXT: xscvdpsxws f0, f0114; CHECK-P9-NEXT: mffprwz r3, f0115; CHECK-P9-NEXT: xscvspdpn f0, v2116; CHECK-P9-NEXT: mtvsrd v4, r3117; CHECK-P9-NEXT: xscvdpsxws f0, f0118; CHECK-P9-NEXT: vmrghh v3, v4, v3119; CHECK-P9-NEXT: mffprwz r3, f0120; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 1121; CHECK-P9-NEXT: mtvsrd v4, r3122; CHECK-P9-NEXT: xscvspdpn f0, vs0123; CHECK-P9-NEXT: xscvdpsxws f0, f0124; CHECK-P9-NEXT: mffprwz r3, f0125; CHECK-P9-NEXT: mtvsrd v2, r3126; CHECK-P9-NEXT: vmrghh v2, v4, v2127; CHECK-P9-NEXT: xxmrglw vs0, v2, v3128; CHECK-P9-NEXT: mfvsrld r3, vs0129; CHECK-P9-NEXT: blr130;131; CHECK-BE-LABEL: test4elt:132; CHECK-BE: # %bb.0: # %entry133; CHECK-BE-NEXT: xxsldwi vs1, v2, v2, 3134; CHECK-BE-NEXT: xxswapd vs2, v2135; CHECK-BE-NEXT: addis r3, r2, .LCPI1_0@toc@ha136; CHECK-BE-NEXT: addi r3, r3, .LCPI1_0@toc@l137; CHECK-BE-NEXT: xxsldwi vs3, v2, v2, 1138; CHECK-BE-NEXT: xscvspdpn f1, vs1139; CHECK-BE-NEXT: xscvspdpn f2, vs2140; CHECK-BE-NEXT: xscvspdpn f3, vs3141; CHECK-BE-NEXT: lxv vs0, 0(r3)142; CHECK-BE-NEXT: xscvdpsxws f1, f1143; CHECK-BE-NEXT: xscvdpsxws f2, f2144; CHECK-BE-NEXT: xscvdpsxws f3, f3145; CHECK-BE-NEXT: mffprwz r3, f1146; CHECK-BE-NEXT: mtfprwz f1, r3147; CHECK-BE-NEXT: mffprwz r3, f2148; CHECK-BE-NEXT: mtfprwz f2, r3149; CHECK-BE-NEXT: xxperm vs1, vs2, vs0150; CHECK-BE-NEXT: xscvspdpn f2, v2151; CHECK-BE-NEXT: xscvdpsxws f2, f2152; CHECK-BE-NEXT: mffprwz r3, f2153; CHECK-BE-NEXT: mtfprwz f2, r3154; CHECK-BE-NEXT: mffprwz r3, f3155; CHECK-BE-NEXT: mtfprwz f3, r3156; CHECK-BE-NEXT: xxperm vs3, vs2, vs0157; CHECK-BE-NEXT: xxmrghw vs0, vs3, vs1158; CHECK-BE-NEXT: mffprd r3, f0159; CHECK-BE-NEXT: blr160entry:161 %0 = fptoui <4 x float> %a to <4 x i16>162 %1 = bitcast <4 x i16> %0 to i64163 ret i64 %1164}165 166define <8 x i16> @test8elt(ptr nocapture readonly) local_unnamed_addr #2 {167; CHECK-P8-LABEL: test8elt:168; CHECK-P8: # %bb.0: # %entry169; CHECK-P8-NEXT: lxvd2x vs0, 0, r3170; CHECK-P8-NEXT: li r4, 16171; CHECK-P8-NEXT: lxvd2x vs2, r3, r4172; CHECK-P8-NEXT: xxswapd v3, vs0173; CHECK-P8-NEXT: xscvspdpn f0, vs0174; CHECK-P8-NEXT: xscvdpsxws f0, f0175; CHECK-P8-NEXT: mffprwz r3, f0176; CHECK-P8-NEXT: xscvspdpn f0, v3177; CHECK-P8-NEXT: mtvsrd v4, r3178; CHECK-P8-NEXT: xscvdpsxws f0, f0179; CHECK-P8-NEXT: mffprwz r3, f0180; CHECK-P8-NEXT: xxsldwi vs1, v3, v3, 3181; CHECK-P8-NEXT: xscvspdpn f1, vs1182; CHECK-P8-NEXT: xscvdpsxws f1, f1183; CHECK-P8-NEXT: xxsldwi vs3, v3, v3, 1184; CHECK-P8-NEXT: mffprwz r4, f1185; CHECK-P8-NEXT: xscvspdpn f1, vs3186; CHECK-P8-NEXT: xscvdpsxws f1, f1187; CHECK-P8-NEXT: xscvspdpn f0, vs2188; CHECK-P8-NEXT: xxswapd v2, vs2189; CHECK-P8-NEXT: mtvsrd v5, r4190; CHECK-P8-NEXT: mffprwz r4, f1191; CHECK-P8-NEXT: mtvsrd v3, r3192; CHECK-P8-NEXT: xscvdpsxws f0, f0193; CHECK-P8-NEXT: mffprwz r3, f0194; CHECK-P8-NEXT: xscvspdpn f0, v2195; CHECK-P8-NEXT: xscvdpsxws f0, f0196; CHECK-P8-NEXT: xxsldwi vs4, v2, v2, 3197; CHECK-P8-NEXT: xscvspdpn f1, vs4198; CHECK-P8-NEXT: xscvdpsxws f1, f1199; CHECK-P8-NEXT: xxsldwi vs5, v2, v2, 1200; CHECK-P8-NEXT: vmrghh v4, v4, v5201; CHECK-P8-NEXT: mtvsrd v5, r4202; CHECK-P8-NEXT: mffprwz r4, f1203; CHECK-P8-NEXT: xscvspdpn f1, vs5204; CHECK-P8-NEXT: mtvsrd v0, r4205; CHECK-P8-NEXT: vmrghh v3, v3, v5206; CHECK-P8-NEXT: mtvsrd v5, r3207; CHECK-P8-NEXT: mffprwz r3, f0208; CHECK-P8-NEXT: xscvdpsxws f0, f1209; CHECK-P8-NEXT: mtvsrd v2, r3210; CHECK-P8-NEXT: mffprwz r3, f0211; CHECK-P8-NEXT: vmrghh v5, v5, v0212; CHECK-P8-NEXT: mtvsrd v0, r3213; CHECK-P8-NEXT: xxmrglw vs0, v3, v4214; CHECK-P8-NEXT: vmrghh v2, v2, v0215; CHECK-P8-NEXT: xxmrglw vs1, v2, v5216; CHECK-P8-NEXT: xxmrgld v2, vs1, vs0217; CHECK-P8-NEXT: blr218;219; CHECK-P9-LABEL: test8elt:220; CHECK-P9: # %bb.0: # %entry221; CHECK-P9-NEXT: lxv vs1, 0(r3)222; CHECK-P9-NEXT: lxv vs0, 16(r3)223; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3224; CHECK-P9-NEXT: xscvspdpn f2, vs2225; CHECK-P9-NEXT: xscvdpsxws f2, f2226; CHECK-P9-NEXT: mffprwz r3, f2227; CHECK-P9-NEXT: xxswapd vs2, vs1228; CHECK-P9-NEXT: mtvsrd v2, r3229; CHECK-P9-NEXT: xscvspdpn f2, vs2230; CHECK-P9-NEXT: xscvdpsxws f2, f2231; CHECK-P9-NEXT: mffprwz r3, f2232; CHECK-P9-NEXT: xscvspdpn f2, vs1233; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1234; CHECK-P9-NEXT: mtvsrd v3, r3235; CHECK-P9-NEXT: xscvdpsxws f2, f2236; CHECK-P9-NEXT: xscvspdpn f1, vs1237; CHECK-P9-NEXT: vmrghh v2, v3, v2238; CHECK-P9-NEXT: xscvdpsxws f1, f1239; CHECK-P9-NEXT: mffprwz r3, f2240; CHECK-P9-NEXT: xxsldwi vs2, vs0, vs0, 3241; CHECK-P9-NEXT: mtvsrd v3, r3242; CHECK-P9-NEXT: xscvspdpn f2, vs2243; CHECK-P9-NEXT: mffprwz r3, f1244; CHECK-P9-NEXT: mtvsrd v4, r3245; CHECK-P9-NEXT: xscvdpsxws f2, f2246; CHECK-P9-NEXT: vmrghh v3, v3, v4247; CHECK-P9-NEXT: xxmrglw vs1, v3, v2248; CHECK-P9-NEXT: mffprwz r3, f2249; CHECK-P9-NEXT: xxswapd vs2, vs0250; CHECK-P9-NEXT: mtvsrd v2, r3251; CHECK-P9-NEXT: xscvspdpn f2, vs2252; CHECK-P9-NEXT: xscvdpsxws f2, f2253; CHECK-P9-NEXT: mffprwz r3, f2254; CHECK-P9-NEXT: xscvspdpn f2, vs0255; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1256; CHECK-P9-NEXT: mtvsrd v3, r3257; CHECK-P9-NEXT: xscvspdpn f0, vs0258; CHECK-P9-NEXT: xscvdpsxws f2, f2259; CHECK-P9-NEXT: vmrghh v2, v3, v2260; CHECK-P9-NEXT: xscvdpsxws f0, f0261; CHECK-P9-NEXT: mffprwz r3, f2262; CHECK-P9-NEXT: mtvsrd v3, r3263; CHECK-P9-NEXT: mffprwz r3, f0264; CHECK-P9-NEXT: mtvsrd v4, r3265; CHECK-P9-NEXT: vmrghh v3, v3, v4266; CHECK-P9-NEXT: xxmrglw vs0, v3, v2267; CHECK-P9-NEXT: xxmrgld v2, vs0, vs1268; CHECK-P9-NEXT: blr269;270; CHECK-BE-LABEL: test8elt:271; CHECK-BE: # %bb.0: # %entry272; CHECK-BE-NEXT: lxv vs1, 16(r3)273; CHECK-BE-NEXT: lxv vs0, 0(r3)274; CHECK-BE-NEXT: addis r3, r2, .LCPI2_0@toc@ha275; CHECK-BE-NEXT: addi r3, r3, .LCPI2_0@toc@l276; CHECK-BE-NEXT: lxv vs2, 0(r3)277; CHECK-BE-NEXT: xxsldwi vs3, vs1, vs1, 3278; CHECK-BE-NEXT: xxswapd vs4, vs1279; CHECK-BE-NEXT: xscvspdpn f3, vs3280; CHECK-BE-NEXT: xscvspdpn f4, vs4281; CHECK-BE-NEXT: xscvdpsxws f3, f3282; CHECK-BE-NEXT: xscvdpsxws f4, f4283; CHECK-BE-NEXT: mffprwz r3, f3284; CHECK-BE-NEXT: mtfprwz f3, r3285; CHECK-BE-NEXT: mffprwz r3, f4286; CHECK-BE-NEXT: mtfprwz f4, r3287; CHECK-BE-NEXT: xxperm vs3, vs4, vs2288; CHECK-BE-NEXT: xscvspdpn f4, vs1289; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1290; CHECK-BE-NEXT: xscvspdpn f1, vs1291; CHECK-BE-NEXT: xscvdpsxws f4, f4292; CHECK-BE-NEXT: xscvdpsxws f1, f1293; CHECK-BE-NEXT: mffprwz r3, f4294; CHECK-BE-NEXT: mtfprwz f4, r3295; CHECK-BE-NEXT: mffprwz r3, f1296; CHECK-BE-NEXT: mtfprwz f1, r3297; CHECK-BE-NEXT: xxperm vs1, vs4, vs2298; CHECK-BE-NEXT: xxswapd vs4, vs0299; CHECK-BE-NEXT: xxmrghw vs1, vs1, vs3300; CHECK-BE-NEXT: xxsldwi vs3, vs0, vs0, 3301; CHECK-BE-NEXT: xscvspdpn f4, vs4302; CHECK-BE-NEXT: xscvspdpn f3, vs3303; CHECK-BE-NEXT: xscvdpsxws f4, f4304; CHECK-BE-NEXT: xscvdpsxws f3, f3305; CHECK-BE-NEXT: mffprwz r3, f3306; CHECK-BE-NEXT: mtfprwz f3, r3307; CHECK-BE-NEXT: mffprwz r3, f4308; CHECK-BE-NEXT: mtfprwz f4, r3309; CHECK-BE-NEXT: xxperm vs3, vs4, vs2310; CHECK-BE-NEXT: xscvspdpn f4, vs0311; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1312; CHECK-BE-NEXT: xscvspdpn f0, vs0313; CHECK-BE-NEXT: xscvdpsxws f4, f4314; CHECK-BE-NEXT: xscvdpsxws f0, f0315; CHECK-BE-NEXT: mffprwz r3, f4316; CHECK-BE-NEXT: mtfprwz f4, r3317; CHECK-BE-NEXT: mffprwz r3, f0318; CHECK-BE-NEXT: mtfprwz f0, r3319; CHECK-BE-NEXT: xxperm vs0, vs4, vs2320; CHECK-BE-NEXT: xxmrghw vs0, vs0, vs3321; CHECK-BE-NEXT: xxmrghd v2, vs0, vs1322; CHECK-BE-NEXT: blr323entry:324 %a = load <8 x float>, ptr %0, align 32325 %1 = fptoui <8 x float> %a to <8 x i16>326 ret <8 x i16> %1327}328 329define void @test16elt(ptr noalias nocapture sret(<16 x i16>) %agg.result, ptr nocapture readonly) local_unnamed_addr #3 {330; CHECK-P8-LABEL: test16elt:331; CHECK-P8: # %bb.0: # %entry332; CHECK-P8-NEXT: lxvd2x vs1, 0, r4333; CHECK-P8-NEXT: li r6, 32334; CHECK-P8-NEXT: li r5, 16335; CHECK-P8-NEXT: lxvd2x vs6, r4, r6336; CHECK-P8-NEXT: li r6, 48337; CHECK-P8-NEXT: lxvd2x vs0, r4, r5338; CHECK-P8-NEXT: lxvd2x vs8, r4, r6339; CHECK-P8-NEXT: xxswapd v3, vs1340; CHECK-P8-NEXT: xscvspdpn f1, vs1341; CHECK-P8-NEXT: xscvdpsxws f1, f1342; CHECK-P8-NEXT: mffprwz r4, f1343; CHECK-P8-NEXT: xscvspdpn f1, v3344; CHECK-P8-NEXT: mtvsrd v0, r4345; CHECK-P8-NEXT: xscvdpsxws f1, f1346; CHECK-P8-NEXT: xxsldwi vs2, v3, v3, 3347; CHECK-P8-NEXT: xscvspdpn f2, vs2348; CHECK-P8-NEXT: xscvdpsxws f2, f2349; CHECK-P8-NEXT: xxsldwi vs3, v3, v3, 1350; CHECK-P8-NEXT: mffprwz r4, f2351; CHECK-P8-NEXT: xscvspdpn f2, vs3352; CHECK-P8-NEXT: xxswapd v2, vs0353; CHECK-P8-NEXT: xscvspdpn f0, vs0354; CHECK-P8-NEXT: xscvdpsxws f0, f0355; CHECK-P8-NEXT: xxswapd v5, vs6356; CHECK-P8-NEXT: xxswapd v4, vs8357; CHECK-P8-NEXT: mtvsrd v1, r4358; CHECK-P8-NEXT: xxsldwi vs4, v2, v2, 3359; CHECK-P8-NEXT: xxsldwi vs5, v2, v2, 1360; CHECK-P8-NEXT: xscvdpsxws f2, f2361; CHECK-P8-NEXT: mffprwz r4, f1362; CHECK-P8-NEXT: xscvspdpn f1, vs4363; CHECK-P8-NEXT: xxsldwi vs7, v5, v5, 3364; CHECK-P8-NEXT: xxsldwi vs9, v5, v5, 1365; CHECK-P8-NEXT: xxsldwi vs10, v4, v4, 3366; CHECK-P8-NEXT: xxsldwi vs11, v4, v4, 1367; CHECK-P8-NEXT: mtvsrd v3, r4368; CHECK-P8-NEXT: mffprwz r4, f2369; CHECK-P8-NEXT: xscvdpsxws f1, f1370; CHECK-P8-NEXT: vmrghh v0, v0, v1371; CHECK-P8-NEXT: mtvsrd v1, r4372; CHECK-P8-NEXT: mffprwz r4, f0373; CHECK-P8-NEXT: xscvspdpn f0, v2374; CHECK-P8-NEXT: xscvdpsxws f0, f0375; CHECK-P8-NEXT: vmrghh v3, v3, v1376; CHECK-P8-NEXT: mtvsrd v1, r4377; CHECK-P8-NEXT: mffprwz r4, f1378; CHECK-P8-NEXT: xscvspdpn f1, vs5379; CHECK-P8-NEXT: mtvsrd v6, r4380; CHECK-P8-NEXT: xscvdpsxws f1, f1381; CHECK-P8-NEXT: mffprwz r4, f0382; CHECK-P8-NEXT: xscvspdpn f0, vs6383; CHECK-P8-NEXT: mtvsrd v2, r4384; CHECK-P8-NEXT: mffprwz r4, f1385; CHECK-P8-NEXT: xscvspdpn f1, vs7386; CHECK-P8-NEXT: xscvdpsxws f0, f0387; CHECK-P8-NEXT: xscvdpsxws f1, f1388; CHECK-P8-NEXT: vmrghh v1, v1, v6389; CHECK-P8-NEXT: mtvsrd v6, r4390; CHECK-P8-NEXT: mffprwz r4, f0391; CHECK-P8-NEXT: xscvspdpn f0, v5392; CHECK-P8-NEXT: xscvdpsxws f0, f0393; CHECK-P8-NEXT: vmrghh v2, v2, v6394; CHECK-P8-NEXT: mtvsrd v6, r4395; CHECK-P8-NEXT: mffprwz r4, f1396; CHECK-P8-NEXT: xscvspdpn f1, vs9397; CHECK-P8-NEXT: mtvsrd v7, r4398; CHECK-P8-NEXT: xscvdpsxws f1, f1399; CHECK-P8-NEXT: mffprwz r4, f0400; CHECK-P8-NEXT: xscvspdpn f0, vs10401; CHECK-P8-NEXT: mtvsrd v5, r4402; CHECK-P8-NEXT: mffprwz r4, f1403; CHECK-P8-NEXT: xscvdpsxws f0, f0404; CHECK-P8-NEXT: vmrghh v6, v6, v7405; CHECK-P8-NEXT: mtvsrd v7, r4406; CHECK-P8-NEXT: mffprwz r4, f0407; CHECK-P8-NEXT: xscvspdpn f0, vs8408; CHECK-P8-NEXT: xscvdpsxws f0, f0409; CHECK-P8-NEXT: xxmrglw vs1, v2, v1410; CHECK-P8-NEXT: vmrghh v5, v5, v7411; CHECK-P8-NEXT: mtvsrd v7, r4412; CHECK-P8-NEXT: mffprwz r4, f0413; CHECK-P8-NEXT: xscvspdpn f0, v4414; CHECK-P8-NEXT: mtvsrd v8, r4415; CHECK-P8-NEXT: xscvdpsxws f0, f0416; CHECK-P8-NEXT: mffprwz r4, f0417; CHECK-P8-NEXT: xscvspdpn f0, vs11418; CHECK-P8-NEXT: xxmrglw vs2, v5, v6419; CHECK-P8-NEXT: mtvsrd v4, r4420; CHECK-P8-NEXT: xscvdpsxws f0, f0421; CHECK-P8-NEXT: mffprwz r4, f0422; CHECK-P8-NEXT: vmrghh v7, v8, v7423; CHECK-P8-NEXT: mtvsrd v8, r4424; CHECK-P8-NEXT: xxmrglw vs0, v3, v0425; CHECK-P8-NEXT: xxmrgld v2, vs1, vs0426; CHECK-P8-NEXT: xxswapd vs1, v2427; CHECK-P8-NEXT: stxvd2x vs1, 0, r3428; CHECK-P8-NEXT: vmrghh v4, v4, v8429; CHECK-P8-NEXT: xxmrglw vs3, v4, v7430; CHECK-P8-NEXT: xxmrgld v3, vs3, vs2431; CHECK-P8-NEXT: xxswapd vs0, v3432; CHECK-P8-NEXT: stxvd2x vs0, r3, r5433; CHECK-P8-NEXT: blr434;435; CHECK-P9-LABEL: test16elt:436; CHECK-P9: # %bb.0: # %entry437; CHECK-P9-NEXT: lxv vs1, 0(r4)438; CHECK-P9-NEXT: lxv vs0, 16(r4)439; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3440; CHECK-P9-NEXT: xxswapd vs3, vs1441; CHECK-P9-NEXT: xscvspdpn f4, vs1442; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1443; CHECK-P9-NEXT: xxsldwi vs5, vs0, vs0, 3444; CHECK-P9-NEXT: xscvspdpn f2, vs2445; CHECK-P9-NEXT: xscvspdpn f3, vs3446; CHECK-P9-NEXT: xscvspdpn f1, vs1447; CHECK-P9-NEXT: xscvdpsxws f2, f2448; CHECK-P9-NEXT: xscvdpsxws f3, f3449; CHECK-P9-NEXT: xscvdpsxws f1, f1450; CHECK-P9-NEXT: mffprwz r5, f2451; CHECK-P9-NEXT: xxswapd vs2, vs0452; CHECK-P9-NEXT: mtvsrd v2, r5453; CHECK-P9-NEXT: mffprwz r5, f3454; CHECK-P9-NEXT: xscvdpsxws f3, f4455; CHECK-P9-NEXT: xscvspdpn f2, vs2456; CHECK-P9-NEXT: mtvsrd v3, r5457; CHECK-P9-NEXT: vmrghh v2, v3, v2458; CHECK-P9-NEXT: xscvdpsxws f2, f2459; CHECK-P9-NEXT: mffprwz r5, f3460; CHECK-P9-NEXT: xscvspdpn f3, vs5461; CHECK-P9-NEXT: mtvsrd v3, r5462; CHECK-P9-NEXT: mffprwz r5, f1463; CHECK-P9-NEXT: xscvspdpn f1, vs0464; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1465; CHECK-P9-NEXT: xscvdpsxws f3, f3466; CHECK-P9-NEXT: mtvsrd v4, r5467; CHECK-P9-NEXT: xscvdpsxws f1, f1468; CHECK-P9-NEXT: xscvspdpn f0, vs0469; CHECK-P9-NEXT: vmrghh v3, v3, v4470; CHECK-P9-NEXT: xscvdpsxws f0, f0471; CHECK-P9-NEXT: mffprwz r5, f1472; CHECK-P9-NEXT: mtvsrd v4, r5473; CHECK-P9-NEXT: mffprwz r5, f3474; CHECK-P9-NEXT: mtvsrd v5, r5475; CHECK-P9-NEXT: mffprwz r5, f2476; CHECK-P9-NEXT: xxmrglw vs2, v3, v2477; CHECK-P9-NEXT: mtvsrd v0, r5478; CHECK-P9-NEXT: mffprwz r5, f0479; CHECK-P9-NEXT: lxv vs0, 32(r4)480; CHECK-P9-NEXT: vmrghh v5, v0, v5481; CHECK-P9-NEXT: mtvsrd v0, r5482; CHECK-P9-NEXT: vmrghh v4, v4, v0483; CHECK-P9-NEXT: xxsldwi vs1, vs0, vs0, 3484; CHECK-P9-NEXT: xxswapd vs3, vs0485; CHECK-P9-NEXT: xscvspdpn f4, vs0486; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1487; CHECK-P9-NEXT: xscvspdpn f1, vs1488; CHECK-P9-NEXT: xscvspdpn f3, vs3489; CHECK-P9-NEXT: xscvspdpn f0, vs0490; CHECK-P9-NEXT: xscvdpsxws f4, f4491; CHECK-P9-NEXT: xscvdpsxws f1, f1492; CHECK-P9-NEXT: xscvdpsxws f3, f3493; CHECK-P9-NEXT: xscvdpsxws f0, f0494; CHECK-P9-NEXT: mffprwz r5, f1495; CHECK-P9-NEXT: lxv vs1, 48(r4)496; CHECK-P9-NEXT: mffprwz r4, f4497; CHECK-P9-NEXT: mtvsrd v2, r5498; CHECK-P9-NEXT: mffprwz r5, f3499; CHECK-P9-NEXT: xxmrglw vs3, v4, v5500; CHECK-P9-NEXT: mtvsrd v3, r5501; CHECK-P9-NEXT: xxmrgld vs2, vs3, vs2502; CHECK-P9-NEXT: xxsldwi vs3, vs1, vs1, 3503; CHECK-P9-NEXT: vmrghh v2, v3, v2504; CHECK-P9-NEXT: mtvsrd v3, r4505; CHECK-P9-NEXT: mffprwz r4, f0506; CHECK-P9-NEXT: xscvspdpn f3, vs3507; CHECK-P9-NEXT: mtvsrd v4, r4508; CHECK-P9-NEXT: stxv vs2, 0(r3)509; CHECK-P9-NEXT: vmrghh v3, v3, v4510; CHECK-P9-NEXT: xscvdpsxws f3, f3511; CHECK-P9-NEXT: xxmrglw vs0, v3, v2512; CHECK-P9-NEXT: mffprwz r4, f3513; CHECK-P9-NEXT: xxswapd vs3, vs1514; CHECK-P9-NEXT: mtvsrd v2, r4515; CHECK-P9-NEXT: xscvspdpn f3, vs3516; CHECK-P9-NEXT: xscvdpsxws f3, f3517; CHECK-P9-NEXT: mffprwz r4, f3518; CHECK-P9-NEXT: xscvspdpn f3, vs1519; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1520; CHECK-P9-NEXT: mtvsrd v3, r4521; CHECK-P9-NEXT: xscvspdpn f1, vs1522; CHECK-P9-NEXT: xscvdpsxws f3, f3523; CHECK-P9-NEXT: vmrghh v2, v3, v2524; CHECK-P9-NEXT: xscvdpsxws f1, f1525; CHECK-P9-NEXT: mffprwz r4, f3526; CHECK-P9-NEXT: mtvsrd v3, r4527; CHECK-P9-NEXT: mffprwz r4, f1528; CHECK-P9-NEXT: mtvsrd v4, r4529; CHECK-P9-NEXT: vmrghh v3, v3, v4530; CHECK-P9-NEXT: xxmrglw vs1, v3, v2531; CHECK-P9-NEXT: xxmrgld vs0, vs1, vs0532; CHECK-P9-NEXT: stxv vs0, 16(r3)533; CHECK-P9-NEXT: blr534;535; CHECK-BE-LABEL: test16elt:536; CHECK-BE: # %bb.0: # %entry537; CHECK-BE-NEXT: lxv vs3, 16(r4)538; CHECK-BE-NEXT: lxv vs2, 0(r4)539; CHECK-BE-NEXT: addis r5, r2, .LCPI3_0@toc@ha540; CHECK-BE-NEXT: lxv vs1, 48(r4)541; CHECK-BE-NEXT: addi r5, r5, .LCPI3_0@toc@l542; CHECK-BE-NEXT: lxv vs0, 0(r5)543; CHECK-BE-NEXT: xscvspdpn f6, vs3544; CHECK-BE-NEXT: xxsldwi vs4, vs3, vs3, 3545; CHECK-BE-NEXT: xscvspdpn f9, vs2546; CHECK-BE-NEXT: xxswapd vs5, vs3547; CHECK-BE-NEXT: xxsldwi vs3, vs3, vs3, 1548; CHECK-BE-NEXT: xxsldwi vs7, vs2, vs2, 3549; CHECK-BE-NEXT: xxswapd vs8, vs2550; CHECK-BE-NEXT: xxsldwi vs2, vs2, vs2, 1551; CHECK-BE-NEXT: xxsldwi vs10, vs1, vs1, 3552; CHECK-BE-NEXT: xxswapd vs11, vs1553; CHECK-BE-NEXT: xscvdpsxws f6, f6554; CHECK-BE-NEXT: xscvspdpn f4, vs4555; CHECK-BE-NEXT: xscvdpsxws f9, f9556; CHECK-BE-NEXT: xscvspdpn f5, vs5557; CHECK-BE-NEXT: xscvspdpn f3, vs3558; CHECK-BE-NEXT: xscvspdpn f7, vs7559; CHECK-BE-NEXT: xscvspdpn f8, vs8560; CHECK-BE-NEXT: xscvspdpn f2, vs2561; CHECK-BE-NEXT: xscvspdpn f10, vs10562; CHECK-BE-NEXT: xscvspdpn f11, vs11563; CHECK-BE-NEXT: xscvdpsxws f4, f4564; CHECK-BE-NEXT: xscvdpsxws f5, f5565; CHECK-BE-NEXT: xscvdpsxws f3, f3566; CHECK-BE-NEXT: xscvdpsxws f7, f7567; CHECK-BE-NEXT: xscvdpsxws f8, f8568; CHECK-BE-NEXT: xscvdpsxws f2, f2569; CHECK-BE-NEXT: xscvdpsxws f10, f10570; CHECK-BE-NEXT: xscvdpsxws f11, f11571; CHECK-BE-NEXT: mffprwz r5, f6572; CHECK-BE-NEXT: mtfprwz f6, r5573; CHECK-BE-NEXT: mffprwz r5, f9574; CHECK-BE-NEXT: mtfprwz f9, r5575; CHECK-BE-NEXT: mffprwz r5, f4576; CHECK-BE-NEXT: mtfprwz f4, r5577; CHECK-BE-NEXT: mffprwz r5, f5578; CHECK-BE-NEXT: mtfprwz f5, r5579; CHECK-BE-NEXT: mffprwz r5, f3580; CHECK-BE-NEXT: xxperm vs4, vs5, vs0581; CHECK-BE-NEXT: xscvspdpn f5, vs1582; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1583; CHECK-BE-NEXT: mtfprwz f3, r5584; CHECK-BE-NEXT: mffprwz r5, f7585; CHECK-BE-NEXT: mtfprwz f7, r5586; CHECK-BE-NEXT: mffprwz r5, f8587; CHECK-BE-NEXT: xxperm vs3, vs6, vs0588; CHECK-BE-NEXT: xscvspdpn f1, vs1589; CHECK-BE-NEXT: xscvdpsxws f5, f5590; CHECK-BE-NEXT: mtfprwz f8, r5591; CHECK-BE-NEXT: mffprwz r5, f2592; CHECK-BE-NEXT: xxmrghw vs3, vs3, vs4593; CHECK-BE-NEXT: lxv vs4, 32(r4)594; CHECK-BE-NEXT: xscvdpsxws f1, f1595; CHECK-BE-NEXT: mtfprwz f2, r5596; CHECK-BE-NEXT: xxperm vs7, vs8, vs0597; CHECK-BE-NEXT: mffprwz r5, f10598; CHECK-BE-NEXT: xxperm vs2, vs9, vs0599; CHECK-BE-NEXT: mtfprwz f10, r5600; CHECK-BE-NEXT: mffprwz r5, f11601; CHECK-BE-NEXT: mffprwz r4, f5602; CHECK-BE-NEXT: mtfprwz f11, r5603; CHECK-BE-NEXT: xxmrghw vs2, vs2, vs7604; CHECK-BE-NEXT: mtfprwz f5, r4605; CHECK-BE-NEXT: xxperm vs10, vs11, vs0606; CHECK-BE-NEXT: mffprwz r4, f1607; CHECK-BE-NEXT: xxmrghd vs2, vs2, vs3608; CHECK-BE-NEXT: xxsldwi vs3, vs4, vs4, 3609; CHECK-BE-NEXT: mtfprwz f1, r4610; CHECK-BE-NEXT: xxperm vs1, vs5, vs0611; CHECK-BE-NEXT: xxswapd vs5, vs4612; CHECK-BE-NEXT: xscvspdpn f3, vs3613; CHECK-BE-NEXT: stxv vs2, 0(r3)614; CHECK-BE-NEXT: xscvspdpn f5, vs5615; CHECK-BE-NEXT: xscvdpsxws f3, f3616; CHECK-BE-NEXT: xxmrghw vs1, vs1, vs10617; CHECK-BE-NEXT: xscvdpsxws f5, f5618; CHECK-BE-NEXT: mffprwz r4, f3619; CHECK-BE-NEXT: mtfprwz f3, r4620; CHECK-BE-NEXT: mffprwz r4, f5621; CHECK-BE-NEXT: mtfprwz f5, r4622; CHECK-BE-NEXT: xxperm vs3, vs5, vs0623; CHECK-BE-NEXT: xscvspdpn f5, vs4624; CHECK-BE-NEXT: xxsldwi vs4, vs4, vs4, 1625; CHECK-BE-NEXT: xscvspdpn f4, vs4626; CHECK-BE-NEXT: xscvdpsxws f5, f5627; CHECK-BE-NEXT: xscvdpsxws f4, f4628; CHECK-BE-NEXT: mffprwz r4, f5629; CHECK-BE-NEXT: mtfprwz f5, r4630; CHECK-BE-NEXT: mffprwz r4, f4631; CHECK-BE-NEXT: mtfprwz f4, r4632; CHECK-BE-NEXT: xxperm vs4, vs5, vs0633; CHECK-BE-NEXT: xxmrghw vs0, vs4, vs3634; CHECK-BE-NEXT: xxmrghd vs0, vs0, vs1635; CHECK-BE-NEXT: stxv vs0, 16(r3)636; CHECK-BE-NEXT: blr637entry:638 %a = load <16 x float>, ptr %0, align 64639 %1 = fptoui <16 x float> %a to <16 x i16>640 store <16 x i16> %1, ptr %agg.result, align 32641 ret void642}643 644define i32 @test2elt_signed(i64 %a.coerce) local_unnamed_addr #0 {645; CHECK-P8-LABEL: test2elt_signed:646; CHECK-P8: # %bb.0: # %entry647; CHECK-P8-NEXT: mtfprd f0, r3648; CHECK-P8-NEXT: xxswapd v2, vs0649; CHECK-P8-NEXT: xscvspdpn f0, vs0650; CHECK-P8-NEXT: xscvdpsxws f0, f0651; CHECK-P8-NEXT: xxsldwi vs1, v2, v2, 3652; CHECK-P8-NEXT: xscvspdpn f1, vs1653; CHECK-P8-NEXT: xscvdpsxws f1, f1654; CHECK-P8-NEXT: mffprwz r3, f1655; CHECK-P8-NEXT: mtvsrd v2, r3656; CHECK-P8-NEXT: mffprwz r3, f0657; CHECK-P8-NEXT: mtvsrd v3, r3658; CHECK-P8-NEXT: vmrghh v2, v3, v2659; CHECK-P8-NEXT: xxswapd vs0, v2660; CHECK-P8-NEXT: mffprwz r3, f0661; CHECK-P8-NEXT: blr662;663; CHECK-P9-LABEL: test2elt_signed:664; CHECK-P9: # %bb.0: # %entry665; CHECK-P9-NEXT: mtfprd f0, r3666; CHECK-P9-NEXT: xxswapd v2, vs0667; CHECK-P9-NEXT: xscvspdpn f0, vs0668; CHECK-P9-NEXT: xxsldwi vs1, v2, v2, 3669; CHECK-P9-NEXT: xscvdpsxws f0, f0670; CHECK-P9-NEXT: xscvspdpn f1, vs1671; CHECK-P9-NEXT: xscvdpsxws f1, f1672; CHECK-P9-NEXT: mffprwz r3, f1673; CHECK-P9-NEXT: mtvsrd v2, r3674; CHECK-P9-NEXT: mffprwz r3, f0675; CHECK-P9-NEXT: mtvsrd v3, r3676; CHECK-P9-NEXT: li r3, 0677; CHECK-P9-NEXT: vmrghh v2, v3, v2678; CHECK-P9-NEXT: vextuwrx r3, r3, v2679; CHECK-P9-NEXT: blr680;681; CHECK-BE-LABEL: test2elt_signed:682; CHECK-BE: # %bb.0: # %entry683; CHECK-BE-NEXT: mtfprd f0, r3684; CHECK-BE-NEXT: addis r3, r2, .LCPI4_0@toc@ha685; CHECK-BE-NEXT: xscvspdpn f2, vs0686; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1687; CHECK-BE-NEXT: addi r3, r3, .LCPI4_0@toc@l688; CHECK-BE-NEXT: lxv vs1, 0(r3)689; CHECK-BE-NEXT: xscvspdpn f0, vs0690; CHECK-BE-NEXT: xscvdpsxws f2, f2691; CHECK-BE-NEXT: xscvdpsxws f0, f0692; CHECK-BE-NEXT: mffprwz r3, f2693; CHECK-BE-NEXT: mtfprwz f2, r3694; CHECK-BE-NEXT: mffprwz r3, f0695; CHECK-BE-NEXT: mtvsrwz v2, r3696; CHECK-BE-NEXT: li r3, 0697; CHECK-BE-NEXT: xxperm v2, vs2, vs1698; CHECK-BE-NEXT: vextuwlx r3, r3, v2699; CHECK-BE-NEXT: blr700entry:701 %0 = bitcast i64 %a.coerce to <2 x float>702 %1 = fptosi <2 x float> %0 to <2 x i16>703 %2 = bitcast <2 x i16> %1 to i32704 ret i32 %2705}706 707define i64 @test4elt_signed(<4 x float> %a) local_unnamed_addr #1 {708; CHECK-P8-LABEL: test4elt_signed:709; CHECK-P8: # %bb.0: # %entry710; CHECK-P8-NEXT: xxsldwi vs0, v2, v2, 3711; CHECK-P8-NEXT: xxswapd vs1, v2712; CHECK-P8-NEXT: xscvspdpn f0, vs0713; CHECK-P8-NEXT: xscvspdpn f1, vs1714; CHECK-P8-NEXT: xxsldwi vs2, v2, v2, 1715; CHECK-P8-NEXT: xscvdpsxws f0, f0716; CHECK-P8-NEXT: xscvdpsxws f1, f1717; CHECK-P8-NEXT: mffprwz r3, f0718; CHECK-P8-NEXT: xscvspdpn f0, v2719; CHECK-P8-NEXT: mtvsrd v3, r3720; CHECK-P8-NEXT: mffprwz r3, f1721; CHECK-P8-NEXT: xscvspdpn f1, vs2722; CHECK-P8-NEXT: xscvdpsxws f0, f0723; CHECK-P8-NEXT: mtvsrd v4, r3724; CHECK-P8-NEXT: mffprwz r3, f0725; CHECK-P8-NEXT: xscvdpsxws f0, f1726; CHECK-P8-NEXT: mtvsrd v2, r3727; CHECK-P8-NEXT: mffprwz r3, f0728; CHECK-P8-NEXT: vmrghh v3, v4, v3729; CHECK-P8-NEXT: mtvsrd v4, r3730; CHECK-P8-NEXT: vmrghh v2, v2, v4731; CHECK-P8-NEXT: xxmrglw vs0, v2, v3732; CHECK-P8-NEXT: xxswapd vs0, vs0733; CHECK-P8-NEXT: mffprd r3, f0734; CHECK-P8-NEXT: blr735;736; CHECK-P9-LABEL: test4elt_signed:737; CHECK-P9: # %bb.0: # %entry738; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 3739; CHECK-P9-NEXT: xscvspdpn f0, vs0740; CHECK-P9-NEXT: xscvdpsxws f0, f0741; CHECK-P9-NEXT: mffprwz r3, f0742; CHECK-P9-NEXT: xxswapd vs0, v2743; CHECK-P9-NEXT: mtvsrd v3, r3744; CHECK-P9-NEXT: xscvspdpn f0, vs0745; CHECK-P9-NEXT: xscvdpsxws f0, f0746; CHECK-P9-NEXT: mffprwz r3, f0747; CHECK-P9-NEXT: xscvspdpn f0, v2748; CHECK-P9-NEXT: mtvsrd v4, r3749; CHECK-P9-NEXT: xscvdpsxws f0, f0750; CHECK-P9-NEXT: vmrghh v3, v4, v3751; CHECK-P9-NEXT: mffprwz r3, f0752; CHECK-P9-NEXT: xxsldwi vs0, v2, v2, 1753; CHECK-P9-NEXT: mtvsrd v4, r3754; CHECK-P9-NEXT: xscvspdpn f0, vs0755; CHECK-P9-NEXT: xscvdpsxws f0, f0756; CHECK-P9-NEXT: mffprwz r3, f0757; CHECK-P9-NEXT: mtvsrd v2, r3758; CHECK-P9-NEXT: vmrghh v2, v4, v2759; CHECK-P9-NEXT: xxmrglw vs0, v2, v3760; CHECK-P9-NEXT: mfvsrld r3, vs0761; CHECK-P9-NEXT: blr762;763; CHECK-BE-LABEL: test4elt_signed:764; CHECK-BE: # %bb.0: # %entry765; CHECK-BE-NEXT: xxsldwi vs1, v2, v2, 3766; CHECK-BE-NEXT: xxswapd vs2, v2767; CHECK-BE-NEXT: addis r3, r2, .LCPI5_0@toc@ha768; CHECK-BE-NEXT: addi r3, r3, .LCPI5_0@toc@l769; CHECK-BE-NEXT: xxsldwi vs3, v2, v2, 1770; CHECK-BE-NEXT: xscvspdpn f1, vs1771; CHECK-BE-NEXT: xscvspdpn f2, vs2772; CHECK-BE-NEXT: xscvspdpn f3, vs3773; CHECK-BE-NEXT: lxv vs0, 0(r3)774; CHECK-BE-NEXT: xscvdpsxws f1, f1775; CHECK-BE-NEXT: xscvdpsxws f2, f2776; CHECK-BE-NEXT: xscvdpsxws f3, f3777; CHECK-BE-NEXT: mffprwz r3, f1778; CHECK-BE-NEXT: mtfprwz f1, r3779; CHECK-BE-NEXT: mffprwz r3, f2780; CHECK-BE-NEXT: mtfprwz f2, r3781; CHECK-BE-NEXT: xxperm vs1, vs2, vs0782; CHECK-BE-NEXT: xscvspdpn f2, v2783; CHECK-BE-NEXT: xscvdpsxws f2, f2784; CHECK-BE-NEXT: mffprwz r3, f2785; CHECK-BE-NEXT: mtfprwz f2, r3786; CHECK-BE-NEXT: mffprwz r3, f3787; CHECK-BE-NEXT: mtfprwz f3, r3788; CHECK-BE-NEXT: xxperm vs3, vs2, vs0789; CHECK-BE-NEXT: xxmrghw vs0, vs3, vs1790; CHECK-BE-NEXT: mffprd r3, f0791; CHECK-BE-NEXT: blr792entry:793 %0 = fptosi <4 x float> %a to <4 x i16>794 %1 = bitcast <4 x i16> %0 to i64795 ret i64 %1796}797 798define <8 x i16> @test8elt_signed(ptr nocapture readonly) local_unnamed_addr #2 {799; CHECK-P8-LABEL: test8elt_signed:800; CHECK-P8: # %bb.0: # %entry801; CHECK-P8-NEXT: lxvd2x vs0, 0, r3802; CHECK-P8-NEXT: li r4, 16803; CHECK-P8-NEXT: lxvd2x vs2, r3, r4804; CHECK-P8-NEXT: xxswapd v3, vs0805; CHECK-P8-NEXT: xscvspdpn f0, vs0806; CHECK-P8-NEXT: xscvdpsxws f0, f0807; CHECK-P8-NEXT: mffprwz r3, f0808; CHECK-P8-NEXT: xscvspdpn f0, v3809; CHECK-P8-NEXT: mtvsrd v4, r3810; CHECK-P8-NEXT: xscvdpsxws f0, f0811; CHECK-P8-NEXT: mffprwz r3, f0812; CHECK-P8-NEXT: xxsldwi vs1, v3, v3, 3813; CHECK-P8-NEXT: xscvspdpn f1, vs1814; CHECK-P8-NEXT: xscvdpsxws f1, f1815; CHECK-P8-NEXT: xxsldwi vs3, v3, v3, 1816; CHECK-P8-NEXT: mffprwz r4, f1817; CHECK-P8-NEXT: xscvspdpn f1, vs3818; CHECK-P8-NEXT: xscvdpsxws f1, f1819; CHECK-P8-NEXT: xscvspdpn f0, vs2820; CHECK-P8-NEXT: xxswapd v2, vs2821; CHECK-P8-NEXT: mtvsrd v5, r4822; CHECK-P8-NEXT: mffprwz r4, f1823; CHECK-P8-NEXT: mtvsrd v3, r3824; CHECK-P8-NEXT: xscvdpsxws f0, f0825; CHECK-P8-NEXT: mffprwz r3, f0826; CHECK-P8-NEXT: xscvspdpn f0, v2827; CHECK-P8-NEXT: xscvdpsxws f0, f0828; CHECK-P8-NEXT: xxsldwi vs4, v2, v2, 3829; CHECK-P8-NEXT: xscvspdpn f1, vs4830; CHECK-P8-NEXT: xscvdpsxws f1, f1831; CHECK-P8-NEXT: xxsldwi vs5, v2, v2, 1832; CHECK-P8-NEXT: vmrghh v4, v4, v5833; CHECK-P8-NEXT: mtvsrd v5, r4834; CHECK-P8-NEXT: mffprwz r4, f1835; CHECK-P8-NEXT: xscvspdpn f1, vs5836; CHECK-P8-NEXT: mtvsrd v0, r4837; CHECK-P8-NEXT: vmrghh v3, v3, v5838; CHECK-P8-NEXT: mtvsrd v5, r3839; CHECK-P8-NEXT: mffprwz r3, f0840; CHECK-P8-NEXT: xscvdpsxws f0, f1841; CHECK-P8-NEXT: mtvsrd v2, r3842; CHECK-P8-NEXT: mffprwz r3, f0843; CHECK-P8-NEXT: vmrghh v5, v5, v0844; CHECK-P8-NEXT: mtvsrd v0, r3845; CHECK-P8-NEXT: xxmrglw vs0, v3, v4846; CHECK-P8-NEXT: vmrghh v2, v2, v0847; CHECK-P8-NEXT: xxmrglw vs1, v2, v5848; CHECK-P8-NEXT: xxmrgld v2, vs1, vs0849; CHECK-P8-NEXT: blr850;851; CHECK-P9-LABEL: test8elt_signed:852; CHECK-P9: # %bb.0: # %entry853; CHECK-P9-NEXT: lxv vs1, 0(r3)854; CHECK-P9-NEXT: lxv vs0, 16(r3)855; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 3856; CHECK-P9-NEXT: xscvspdpn f2, vs2857; CHECK-P9-NEXT: xscvdpsxws f2, f2858; CHECK-P9-NEXT: mffprwz r3, f2859; CHECK-P9-NEXT: xxswapd vs2, vs1860; CHECK-P9-NEXT: mtvsrd v2, r3861; CHECK-P9-NEXT: xscvspdpn f2, vs2862; CHECK-P9-NEXT: xscvdpsxws f2, f2863; CHECK-P9-NEXT: mffprwz r3, f2864; CHECK-P9-NEXT: xscvspdpn f2, vs1865; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 1866; CHECK-P9-NEXT: mtvsrd v3, r3867; CHECK-P9-NEXT: xscvdpsxws f2, f2868; CHECK-P9-NEXT: xscvspdpn f1, vs1869; CHECK-P9-NEXT: vmrghh v2, v3, v2870; CHECK-P9-NEXT: xscvdpsxws f1, f1871; CHECK-P9-NEXT: mffprwz r3, f2872; CHECK-P9-NEXT: xxsldwi vs2, vs0, vs0, 3873; CHECK-P9-NEXT: mtvsrd v3, r3874; CHECK-P9-NEXT: xscvspdpn f2, vs2875; CHECK-P9-NEXT: mffprwz r3, f1876; CHECK-P9-NEXT: mtvsrd v4, r3877; CHECK-P9-NEXT: xscvdpsxws f2, f2878; CHECK-P9-NEXT: vmrghh v3, v3, v4879; CHECK-P9-NEXT: xxmrglw vs1, v3, v2880; CHECK-P9-NEXT: mffprwz r3, f2881; CHECK-P9-NEXT: xxswapd vs2, vs0882; CHECK-P9-NEXT: mtvsrd v2, r3883; CHECK-P9-NEXT: xscvspdpn f2, vs2884; CHECK-P9-NEXT: xscvdpsxws f2, f2885; CHECK-P9-NEXT: mffprwz r3, f2886; CHECK-P9-NEXT: xscvspdpn f2, vs0887; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 1888; CHECK-P9-NEXT: mtvsrd v3, r3889; CHECK-P9-NEXT: xscvspdpn f0, vs0890; CHECK-P9-NEXT: xscvdpsxws f2, f2891; CHECK-P9-NEXT: vmrghh v2, v3, v2892; CHECK-P9-NEXT: xscvdpsxws f0, f0893; CHECK-P9-NEXT: mffprwz r3, f2894; CHECK-P9-NEXT: mtvsrd v3, r3895; CHECK-P9-NEXT: mffprwz r3, f0896; CHECK-P9-NEXT: mtvsrd v4, r3897; CHECK-P9-NEXT: vmrghh v3, v3, v4898; CHECK-P9-NEXT: xxmrglw vs0, v3, v2899; CHECK-P9-NEXT: xxmrgld v2, vs0, vs1900; CHECK-P9-NEXT: blr901;902; CHECK-BE-LABEL: test8elt_signed:903; CHECK-BE: # %bb.0: # %entry904; CHECK-BE-NEXT: lxv vs1, 16(r3)905; CHECK-BE-NEXT: lxv vs0, 0(r3)906; CHECK-BE-NEXT: addis r3, r2, .LCPI6_0@toc@ha907; CHECK-BE-NEXT: addi r3, r3, .LCPI6_0@toc@l908; CHECK-BE-NEXT: lxv vs2, 0(r3)909; CHECK-BE-NEXT: xxsldwi vs3, vs1, vs1, 3910; CHECK-BE-NEXT: xxswapd vs4, vs1911; CHECK-BE-NEXT: xscvspdpn f3, vs3912; CHECK-BE-NEXT: xscvspdpn f4, vs4913; CHECK-BE-NEXT: xscvdpsxws f3, f3914; CHECK-BE-NEXT: xscvdpsxws f4, f4915; CHECK-BE-NEXT: mffprwz r3, f3916; CHECK-BE-NEXT: mtfprwz f3, r3917; CHECK-BE-NEXT: mffprwz r3, f4918; CHECK-BE-NEXT: mtfprwz f4, r3919; CHECK-BE-NEXT: xxperm vs3, vs4, vs2920; CHECK-BE-NEXT: xscvspdpn f4, vs1921; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 1922; CHECK-BE-NEXT: xscvspdpn f1, vs1923; CHECK-BE-NEXT: xscvdpsxws f4, f4924; CHECK-BE-NEXT: xscvdpsxws f1, f1925; CHECK-BE-NEXT: mffprwz r3, f4926; CHECK-BE-NEXT: mtfprwz f4, r3927; CHECK-BE-NEXT: mffprwz r3, f1928; CHECK-BE-NEXT: mtfprwz f1, r3929; CHECK-BE-NEXT: xxperm vs1, vs4, vs2930; CHECK-BE-NEXT: xxswapd vs4, vs0931; CHECK-BE-NEXT: xxmrghw vs1, vs1, vs3932; CHECK-BE-NEXT: xxsldwi vs3, vs0, vs0, 3933; CHECK-BE-NEXT: xscvspdpn f4, vs4934; CHECK-BE-NEXT: xscvspdpn f3, vs3935; CHECK-BE-NEXT: xscvdpsxws f4, f4936; CHECK-BE-NEXT: xscvdpsxws f3, f3937; CHECK-BE-NEXT: mffprwz r3, f3938; CHECK-BE-NEXT: mtfprwz f3, r3939; CHECK-BE-NEXT: mffprwz r3, f4940; CHECK-BE-NEXT: mtfprwz f4, r3941; CHECK-BE-NEXT: xxperm vs3, vs4, vs2942; CHECK-BE-NEXT: xscvspdpn f4, vs0943; CHECK-BE-NEXT: xxsldwi vs0, vs0, vs0, 1944; CHECK-BE-NEXT: xscvspdpn f0, vs0945; CHECK-BE-NEXT: xscvdpsxws f4, f4946; CHECK-BE-NEXT: xscvdpsxws f0, f0947; CHECK-BE-NEXT: mffprwz r3, f4948; CHECK-BE-NEXT: mtfprwz f4, r3949; CHECK-BE-NEXT: mffprwz r3, f0950; CHECK-BE-NEXT: mtfprwz f0, r3951; CHECK-BE-NEXT: xxperm vs0, vs4, vs2952; CHECK-BE-NEXT: xxmrghw vs0, vs0, vs3953; CHECK-BE-NEXT: xxmrghd v2, vs0, vs1954; CHECK-BE-NEXT: blr955entry:956 %a = load <8 x float>, ptr %0, align 32957 %1 = fptosi <8 x float> %a to <8 x i16>958 ret <8 x i16> %1959}960 961define void @test16elt_signed(ptr noalias nocapture sret(<16 x i16>) %agg.result, ptr nocapture readonly) local_unnamed_addr #3 {962; CHECK-P8-LABEL: test16elt_signed:963; CHECK-P8: # %bb.0: # %entry964; CHECK-P8-NEXT: lxvd2x vs1, 0, r4965; CHECK-P8-NEXT: li r6, 32966; CHECK-P8-NEXT: li r5, 16967; CHECK-P8-NEXT: lxvd2x vs6, r4, r6968; CHECK-P8-NEXT: li r6, 48969; CHECK-P8-NEXT: lxvd2x vs0, r4, r5970; CHECK-P8-NEXT: lxvd2x vs8, r4, r6971; CHECK-P8-NEXT: xxswapd v3, vs1972; CHECK-P8-NEXT: xscvspdpn f1, vs1973; CHECK-P8-NEXT: xscvdpsxws f1, f1974; CHECK-P8-NEXT: mffprwz r4, f1975; CHECK-P8-NEXT: xscvspdpn f1, v3976; CHECK-P8-NEXT: mtvsrd v0, r4977; CHECK-P8-NEXT: xscvdpsxws f1, f1978; CHECK-P8-NEXT: xxsldwi vs2, v3, v3, 3979; CHECK-P8-NEXT: xscvspdpn f2, vs2980; CHECK-P8-NEXT: xscvdpsxws f2, f2981; CHECK-P8-NEXT: xxsldwi vs3, v3, v3, 1982; CHECK-P8-NEXT: mffprwz r4, f2983; CHECK-P8-NEXT: xscvspdpn f2, vs3984; CHECK-P8-NEXT: xxswapd v2, vs0985; CHECK-P8-NEXT: xscvspdpn f0, vs0986; CHECK-P8-NEXT: xscvdpsxws f0, f0987; CHECK-P8-NEXT: xxswapd v5, vs6988; CHECK-P8-NEXT: xxswapd v4, vs8989; CHECK-P8-NEXT: mtvsrd v1, r4990; CHECK-P8-NEXT: xxsldwi vs4, v2, v2, 3991; CHECK-P8-NEXT: xxsldwi vs5, v2, v2, 1992; CHECK-P8-NEXT: xscvdpsxws f2, f2993; CHECK-P8-NEXT: mffprwz r4, f1994; CHECK-P8-NEXT: xscvspdpn f1, vs4995; CHECK-P8-NEXT: xxsldwi vs7, v5, v5, 3996; CHECK-P8-NEXT: xxsldwi vs9, v5, v5, 1997; CHECK-P8-NEXT: xxsldwi vs10, v4, v4, 3998; CHECK-P8-NEXT: xxsldwi vs11, v4, v4, 1999; CHECK-P8-NEXT: mtvsrd v3, r41000; CHECK-P8-NEXT: mffprwz r4, f21001; CHECK-P8-NEXT: xscvdpsxws f1, f11002; CHECK-P8-NEXT: vmrghh v0, v0, v11003; CHECK-P8-NEXT: mtvsrd v1, r41004; CHECK-P8-NEXT: mffprwz r4, f01005; CHECK-P8-NEXT: xscvspdpn f0, v21006; CHECK-P8-NEXT: xscvdpsxws f0, f01007; CHECK-P8-NEXT: vmrghh v3, v3, v11008; CHECK-P8-NEXT: mtvsrd v1, r41009; CHECK-P8-NEXT: mffprwz r4, f11010; CHECK-P8-NEXT: xscvspdpn f1, vs51011; CHECK-P8-NEXT: mtvsrd v6, r41012; CHECK-P8-NEXT: xscvdpsxws f1, f11013; CHECK-P8-NEXT: mffprwz r4, f01014; CHECK-P8-NEXT: xscvspdpn f0, vs61015; CHECK-P8-NEXT: mtvsrd v2, r41016; CHECK-P8-NEXT: mffprwz r4, f11017; CHECK-P8-NEXT: xscvspdpn f1, vs71018; CHECK-P8-NEXT: xscvdpsxws f0, f01019; CHECK-P8-NEXT: xscvdpsxws f1, f11020; CHECK-P8-NEXT: vmrghh v1, v1, v61021; CHECK-P8-NEXT: mtvsrd v6, r41022; CHECK-P8-NEXT: mffprwz r4, f01023; CHECK-P8-NEXT: xscvspdpn f0, v51024; CHECK-P8-NEXT: xscvdpsxws f0, f01025; CHECK-P8-NEXT: vmrghh v2, v2, v61026; CHECK-P8-NEXT: mtvsrd v6, r41027; CHECK-P8-NEXT: mffprwz r4, f11028; CHECK-P8-NEXT: xscvspdpn f1, vs91029; CHECK-P8-NEXT: mtvsrd v7, r41030; CHECK-P8-NEXT: xscvdpsxws f1, f11031; CHECK-P8-NEXT: mffprwz r4, f01032; CHECK-P8-NEXT: xscvspdpn f0, vs101033; CHECK-P8-NEXT: mtvsrd v5, r41034; CHECK-P8-NEXT: mffprwz r4, f11035; CHECK-P8-NEXT: xscvdpsxws f0, f01036; CHECK-P8-NEXT: vmrghh v6, v6, v71037; CHECK-P8-NEXT: mtvsrd v7, r41038; CHECK-P8-NEXT: mffprwz r4, f01039; CHECK-P8-NEXT: xscvspdpn f0, vs81040; CHECK-P8-NEXT: xscvdpsxws f0, f01041; CHECK-P8-NEXT: xxmrglw vs1, v2, v11042; CHECK-P8-NEXT: vmrghh v5, v5, v71043; CHECK-P8-NEXT: mtvsrd v7, r41044; CHECK-P8-NEXT: mffprwz r4, f01045; CHECK-P8-NEXT: xscvspdpn f0, v41046; CHECK-P8-NEXT: mtvsrd v8, r41047; CHECK-P8-NEXT: xscvdpsxws f0, f01048; CHECK-P8-NEXT: mffprwz r4, f01049; CHECK-P8-NEXT: xscvspdpn f0, vs111050; CHECK-P8-NEXT: xxmrglw vs2, v5, v61051; CHECK-P8-NEXT: mtvsrd v4, r41052; CHECK-P8-NEXT: xscvdpsxws f0, f01053; CHECK-P8-NEXT: mffprwz r4, f01054; CHECK-P8-NEXT: vmrghh v7, v8, v71055; CHECK-P8-NEXT: mtvsrd v8, r41056; CHECK-P8-NEXT: xxmrglw vs0, v3, v01057; CHECK-P8-NEXT: xxmrgld v2, vs1, vs01058; CHECK-P8-NEXT: xxswapd vs1, v21059; CHECK-P8-NEXT: stxvd2x vs1, 0, r31060; CHECK-P8-NEXT: vmrghh v4, v4, v81061; CHECK-P8-NEXT: xxmrglw vs3, v4, v71062; CHECK-P8-NEXT: xxmrgld v3, vs3, vs21063; CHECK-P8-NEXT: xxswapd vs0, v31064; CHECK-P8-NEXT: stxvd2x vs0, r3, r51065; CHECK-P8-NEXT: blr1066;1067; CHECK-P9-LABEL: test16elt_signed:1068; CHECK-P9: # %bb.0: # %entry1069; CHECK-P9-NEXT: lxv vs1, 0(r4)1070; CHECK-P9-NEXT: lxv vs0, 16(r4)1071; CHECK-P9-NEXT: xxsldwi vs2, vs1, vs1, 31072; CHECK-P9-NEXT: xxswapd vs3, vs11073; CHECK-P9-NEXT: xscvspdpn f4, vs11074; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 11075; CHECK-P9-NEXT: xxsldwi vs5, vs0, vs0, 31076; CHECK-P9-NEXT: xscvspdpn f2, vs21077; CHECK-P9-NEXT: xscvspdpn f3, vs31078; CHECK-P9-NEXT: xscvspdpn f1, vs11079; CHECK-P9-NEXT: xscvdpsxws f2, f21080; CHECK-P9-NEXT: xscvdpsxws f3, f31081; CHECK-P9-NEXT: xscvdpsxws f1, f11082; CHECK-P9-NEXT: mffprwz r5, f21083; CHECK-P9-NEXT: xxswapd vs2, vs01084; CHECK-P9-NEXT: mtvsrd v2, r51085; CHECK-P9-NEXT: mffprwz r5, f31086; CHECK-P9-NEXT: xscvdpsxws f3, f41087; CHECK-P9-NEXT: xscvspdpn f2, vs21088; CHECK-P9-NEXT: mtvsrd v3, r51089; CHECK-P9-NEXT: vmrghh v2, v3, v21090; CHECK-P9-NEXT: xscvdpsxws f2, f21091; CHECK-P9-NEXT: mffprwz r5, f31092; CHECK-P9-NEXT: xscvspdpn f3, vs51093; CHECK-P9-NEXT: mtvsrd v3, r51094; CHECK-P9-NEXT: mffprwz r5, f11095; CHECK-P9-NEXT: xscvspdpn f1, vs01096; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 11097; CHECK-P9-NEXT: xscvdpsxws f3, f31098; CHECK-P9-NEXT: mtvsrd v4, r51099; CHECK-P9-NEXT: xscvdpsxws f1, f11100; CHECK-P9-NEXT: xscvspdpn f0, vs01101; CHECK-P9-NEXT: vmrghh v3, v3, v41102; CHECK-P9-NEXT: xscvdpsxws f0, f01103; CHECK-P9-NEXT: mffprwz r5, f11104; CHECK-P9-NEXT: mtvsrd v4, r51105; CHECK-P9-NEXT: mffprwz r5, f31106; CHECK-P9-NEXT: mtvsrd v5, r51107; CHECK-P9-NEXT: mffprwz r5, f21108; CHECK-P9-NEXT: xxmrglw vs2, v3, v21109; CHECK-P9-NEXT: mtvsrd v0, r51110; CHECK-P9-NEXT: mffprwz r5, f01111; CHECK-P9-NEXT: lxv vs0, 32(r4)1112; CHECK-P9-NEXT: vmrghh v5, v0, v51113; CHECK-P9-NEXT: mtvsrd v0, r51114; CHECK-P9-NEXT: vmrghh v4, v4, v01115; CHECK-P9-NEXT: xxsldwi vs1, vs0, vs0, 31116; CHECK-P9-NEXT: xxswapd vs3, vs01117; CHECK-P9-NEXT: xscvspdpn f4, vs01118; CHECK-P9-NEXT: xxsldwi vs0, vs0, vs0, 11119; CHECK-P9-NEXT: xscvspdpn f1, vs11120; CHECK-P9-NEXT: xscvspdpn f3, vs31121; CHECK-P9-NEXT: xscvspdpn f0, vs01122; CHECK-P9-NEXT: xscvdpsxws f4, f41123; CHECK-P9-NEXT: xscvdpsxws f1, f11124; CHECK-P9-NEXT: xscvdpsxws f3, f31125; CHECK-P9-NEXT: xscvdpsxws f0, f01126; CHECK-P9-NEXT: mffprwz r5, f11127; CHECK-P9-NEXT: lxv vs1, 48(r4)1128; CHECK-P9-NEXT: mffprwz r4, f41129; CHECK-P9-NEXT: mtvsrd v2, r51130; CHECK-P9-NEXT: mffprwz r5, f31131; CHECK-P9-NEXT: xxmrglw vs3, v4, v51132; CHECK-P9-NEXT: mtvsrd v3, r51133; CHECK-P9-NEXT: xxmrgld vs2, vs3, vs21134; CHECK-P9-NEXT: xxsldwi vs3, vs1, vs1, 31135; CHECK-P9-NEXT: vmrghh v2, v3, v21136; CHECK-P9-NEXT: mtvsrd v3, r41137; CHECK-P9-NEXT: mffprwz r4, f01138; CHECK-P9-NEXT: xscvspdpn f3, vs31139; CHECK-P9-NEXT: mtvsrd v4, r41140; CHECK-P9-NEXT: stxv vs2, 0(r3)1141; CHECK-P9-NEXT: vmrghh v3, v3, v41142; CHECK-P9-NEXT: xscvdpsxws f3, f31143; CHECK-P9-NEXT: xxmrglw vs0, v3, v21144; CHECK-P9-NEXT: mffprwz r4, f31145; CHECK-P9-NEXT: xxswapd vs3, vs11146; CHECK-P9-NEXT: mtvsrd v2, r41147; CHECK-P9-NEXT: xscvspdpn f3, vs31148; CHECK-P9-NEXT: xscvdpsxws f3, f31149; CHECK-P9-NEXT: mffprwz r4, f31150; CHECK-P9-NEXT: xscvspdpn f3, vs11151; CHECK-P9-NEXT: xxsldwi vs1, vs1, vs1, 11152; CHECK-P9-NEXT: mtvsrd v3, r41153; CHECK-P9-NEXT: xscvspdpn f1, vs11154; CHECK-P9-NEXT: xscvdpsxws f3, f31155; CHECK-P9-NEXT: vmrghh v2, v3, v21156; CHECK-P9-NEXT: xscvdpsxws f1, f11157; CHECK-P9-NEXT: mffprwz r4, f31158; CHECK-P9-NEXT: mtvsrd v3, r41159; CHECK-P9-NEXT: mffprwz r4, f11160; CHECK-P9-NEXT: mtvsrd v4, r41161; CHECK-P9-NEXT: vmrghh v3, v3, v41162; CHECK-P9-NEXT: xxmrglw vs1, v3, v21163; CHECK-P9-NEXT: xxmrgld vs0, vs1, vs01164; CHECK-P9-NEXT: stxv vs0, 16(r3)1165; CHECK-P9-NEXT: blr1166;1167; CHECK-BE-LABEL: test16elt_signed:1168; CHECK-BE: # %bb.0: # %entry1169; CHECK-BE-NEXT: lxv vs3, 16(r4)1170; CHECK-BE-NEXT: lxv vs2, 0(r4)1171; CHECK-BE-NEXT: addis r5, r2, .LCPI7_0@toc@ha1172; CHECK-BE-NEXT: lxv vs1, 48(r4)1173; CHECK-BE-NEXT: addi r5, r5, .LCPI7_0@toc@l1174; CHECK-BE-NEXT: lxv vs0, 0(r5)1175; CHECK-BE-NEXT: xscvspdpn f6, vs31176; CHECK-BE-NEXT: xxsldwi vs4, vs3, vs3, 31177; CHECK-BE-NEXT: xscvspdpn f9, vs21178; CHECK-BE-NEXT: xxswapd vs5, vs31179; CHECK-BE-NEXT: xxsldwi vs3, vs3, vs3, 11180; CHECK-BE-NEXT: xxsldwi vs7, vs2, vs2, 31181; CHECK-BE-NEXT: xxswapd vs8, vs21182; CHECK-BE-NEXT: xxsldwi vs2, vs2, vs2, 11183; CHECK-BE-NEXT: xxsldwi vs10, vs1, vs1, 31184; CHECK-BE-NEXT: xxswapd vs11, vs11185; CHECK-BE-NEXT: xscvdpsxws f6, f61186; CHECK-BE-NEXT: xscvspdpn f4, vs41187; CHECK-BE-NEXT: xscvdpsxws f9, f91188; CHECK-BE-NEXT: xscvspdpn f5, vs51189; CHECK-BE-NEXT: xscvspdpn f3, vs31190; CHECK-BE-NEXT: xscvspdpn f7, vs71191; CHECK-BE-NEXT: xscvspdpn f8, vs81192; CHECK-BE-NEXT: xscvspdpn f2, vs21193; CHECK-BE-NEXT: xscvspdpn f10, vs101194; CHECK-BE-NEXT: xscvspdpn f11, vs111195; CHECK-BE-NEXT: xscvdpsxws f4, f41196; CHECK-BE-NEXT: xscvdpsxws f5, f51197; CHECK-BE-NEXT: xscvdpsxws f3, f31198; CHECK-BE-NEXT: xscvdpsxws f7, f71199; CHECK-BE-NEXT: xscvdpsxws f8, f81200; CHECK-BE-NEXT: xscvdpsxws f2, f21201; CHECK-BE-NEXT: xscvdpsxws f10, f101202; CHECK-BE-NEXT: xscvdpsxws f11, f111203; CHECK-BE-NEXT: mffprwz r5, f61204; CHECK-BE-NEXT: mtfprwz f6, r51205; CHECK-BE-NEXT: mffprwz r5, f91206; CHECK-BE-NEXT: mtfprwz f9, r51207; CHECK-BE-NEXT: mffprwz r5, f41208; CHECK-BE-NEXT: mtfprwz f4, r51209; CHECK-BE-NEXT: mffprwz r5, f51210; CHECK-BE-NEXT: mtfprwz f5, r51211; CHECK-BE-NEXT: mffprwz r5, f31212; CHECK-BE-NEXT: xxperm vs4, vs5, vs01213; CHECK-BE-NEXT: xscvspdpn f5, vs11214; CHECK-BE-NEXT: xxsldwi vs1, vs1, vs1, 11215; CHECK-BE-NEXT: mtfprwz f3, r51216; CHECK-BE-NEXT: mffprwz r5, f71217; CHECK-BE-NEXT: mtfprwz f7, r51218; CHECK-BE-NEXT: mffprwz r5, f81219; CHECK-BE-NEXT: xxperm vs3, vs6, vs01220; CHECK-BE-NEXT: xscvspdpn f1, vs11221; CHECK-BE-NEXT: xscvdpsxws f5, f51222; CHECK-BE-NEXT: mtfprwz f8, r51223; CHECK-BE-NEXT: mffprwz r5, f21224; CHECK-BE-NEXT: xxmrghw vs3, vs3, vs41225; CHECK-BE-NEXT: lxv vs4, 32(r4)1226; CHECK-BE-NEXT: xscvdpsxws f1, f11227; CHECK-BE-NEXT: mtfprwz f2, r51228; CHECK-BE-NEXT: xxperm vs7, vs8, vs01229; CHECK-BE-NEXT: mffprwz r5, f101230; CHECK-BE-NEXT: xxperm vs2, vs9, vs01231; CHECK-BE-NEXT: mtfprwz f10, r51232; CHECK-BE-NEXT: mffprwz r5, f111233; CHECK-BE-NEXT: mffprwz r4, f51234; CHECK-BE-NEXT: mtfprwz f11, r51235; CHECK-BE-NEXT: xxmrghw vs2, vs2, vs71236; CHECK-BE-NEXT: mtfprwz f5, r41237; CHECK-BE-NEXT: xxperm vs10, vs11, vs01238; CHECK-BE-NEXT: mffprwz r4, f11239; CHECK-BE-NEXT: xxmrghd vs2, vs2, vs31240; CHECK-BE-NEXT: xxsldwi vs3, vs4, vs4, 31241; CHECK-BE-NEXT: mtfprwz f1, r41242; CHECK-BE-NEXT: xxperm vs1, vs5, vs01243; CHECK-BE-NEXT: xxswapd vs5, vs41244; CHECK-BE-NEXT: xscvspdpn f3, vs31245; CHECK-BE-NEXT: stxv vs2, 0(r3)1246; CHECK-BE-NEXT: xscvspdpn f5, vs51247; CHECK-BE-NEXT: xscvdpsxws f3, f31248; CHECK-BE-NEXT: xxmrghw vs1, vs1, vs101249; CHECK-BE-NEXT: xscvdpsxws f5, f51250; CHECK-BE-NEXT: mffprwz r4, f31251; CHECK-BE-NEXT: mtfprwz f3, r41252; CHECK-BE-NEXT: mffprwz r4, f51253; CHECK-BE-NEXT: mtfprwz f5, r41254; CHECK-BE-NEXT: xxperm vs3, vs5, vs01255; CHECK-BE-NEXT: xscvspdpn f5, vs41256; CHECK-BE-NEXT: xxsldwi vs4, vs4, vs4, 11257; CHECK-BE-NEXT: xscvspdpn f4, vs41258; CHECK-BE-NEXT: xscvdpsxws f5, f51259; CHECK-BE-NEXT: xscvdpsxws f4, f41260; CHECK-BE-NEXT: mffprwz r4, f51261; CHECK-BE-NEXT: mtfprwz f5, r41262; CHECK-BE-NEXT: mffprwz r4, f41263; CHECK-BE-NEXT: mtfprwz f4, r41264; CHECK-BE-NEXT: xxperm vs4, vs5, vs01265; CHECK-BE-NEXT: xxmrghw vs0, vs4, vs31266; CHECK-BE-NEXT: xxmrghd vs0, vs0, vs11267; CHECK-BE-NEXT: stxv vs0, 16(r3)1268; CHECK-BE-NEXT: blr1269entry:1270 %a = load <16 x float>, ptr %0, align 641271 %1 = fptosi <16 x float> %a to <16 x i16>1272 store <16 x i16> %1, ptr %agg.result, align 321273 ret void1274}1275