1121 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 i16 @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: vmrghb v2, v2, v323; CHECK-P8-NEXT: xxswapd vs0, v224; CHECK-P8-NEXT: mffprd r3, f025; CHECK-P8-NEXT: clrldi r3, r3, 4826; CHECK-P8-NEXT: sth r3, -2(r1)27; CHECK-P8-NEXT: lhz r3, -2(r1)28; CHECK-P8-NEXT: blr29;30; CHECK-P9-LABEL: test2elt:31; CHECK-P9: # %bb.0: # %entry32; CHECK-P9-NEXT: xscvdpsxws f0, v233; CHECK-P9-NEXT: mffprwz r3, f034; CHECK-P9-NEXT: xxswapd vs0, v235; CHECK-P9-NEXT: mtvsrd v3, r336; CHECK-P9-NEXT: xscvdpsxws f0, f037; CHECK-P9-NEXT: mffprwz r3, f038; CHECK-P9-NEXT: mtvsrd v2, r339; CHECK-P9-NEXT: addi r3, r1, -240; CHECK-P9-NEXT: vmrghb v2, v3, v241; CHECK-P9-NEXT: vsldoi v2, v2, v2, 842; CHECK-P9-NEXT: stxsihx v2, 0, r343; CHECK-P9-NEXT: lhz r3, -2(r1)44; CHECK-P9-NEXT: blr45;46; CHECK-BE-LABEL: test2elt:47; CHECK-BE: # %bb.0: # %entry48; CHECK-BE-NEXT: xxswapd vs2, v249; CHECK-BE-NEXT: xscvdpsxws f1, v250; CHECK-BE-NEXT: addis r3, r2, .LCPI0_0@toc@ha51; CHECK-BE-NEXT: addi r3, r3, .LCPI0_0@toc@l52; CHECK-BE-NEXT: xscvdpsxws f2, f253; CHECK-BE-NEXT: lxv vs0, 0(r3)54; CHECK-BE-NEXT: mffprwz r3, f155; CHECK-BE-NEXT: mtfprwz f1, r356; CHECK-BE-NEXT: mffprwz r3, f257; CHECK-BE-NEXT: mtvsrwz v2, r358; CHECK-BE-NEXT: addi r3, r1, -259; CHECK-BE-NEXT: xxperm v2, vs1, vs060; CHECK-BE-NEXT: vsldoi v2, v2, v2, 1061; CHECK-BE-NEXT: stxsihx v2, 0, r362; CHECK-BE-NEXT: lhz r3, -2(r1)63; CHECK-BE-NEXT: blr64entry:65 %0 = fptoui <2 x double> %a to <2 x i8>66 %1 = bitcast <2 x i8> %0 to i1667 ret i16 %168}69 70define i32 @test4elt(ptr nocapture readonly) local_unnamed_addr #1 {71; CHECK-P8-LABEL: test4elt:72; CHECK-P8: # %bb.0: # %entry73; CHECK-P8-NEXT: lxvd2x vs0, 0, r374; CHECK-P8-NEXT: li r4, 1675; CHECK-P8-NEXT: lxvd2x vs2, r3, r476; CHECK-P8-NEXT: xxswapd vs1, vs077; CHECK-P8-NEXT: xscvdpsxws f0, f078; CHECK-P8-NEXT: xscvdpsxws f1, f179; CHECK-P8-NEXT: mffprwz r3, f080; CHECK-P8-NEXT: xscvdpsxws f0, f281; CHECK-P8-NEXT: mffprwz r4, f182; CHECK-P8-NEXT: mtvsrd v2, r383; CHECK-P8-NEXT: mtvsrd v3, r484; CHECK-P8-NEXT: xxswapd vs3, vs285; CHECK-P8-NEXT: xscvdpsxws f3, f386; CHECK-P8-NEXT: mffprwz r3, f387; CHECK-P8-NEXT: mtvsrd v4, r388; CHECK-P8-NEXT: mffprwz r3, f089; CHECK-P8-NEXT: vmrghb v2, v3, v290; CHECK-P8-NEXT: mtvsrd v3, r391; CHECK-P8-NEXT: vmrghb v3, v4, v392; CHECK-P8-NEXT: vmrglh v2, v3, v293; CHECK-P8-NEXT: xxswapd vs0, v294; CHECK-P8-NEXT: mffprwz r3, f095; CHECK-P8-NEXT: blr96;97; CHECK-P9-LABEL: test4elt:98; CHECK-P9: # %bb.0: # %entry99; CHECK-P9-NEXT: lxv vs1, 0(r3)100; CHECK-P9-NEXT: lxv vs0, 16(r3)101; CHECK-P9-NEXT: xscvdpsxws f2, f1102; CHECK-P9-NEXT: xxswapd vs1, vs1103; CHECK-P9-NEXT: xscvdpsxws f1, f1104; CHECK-P9-NEXT: mffprwz r3, f2105; CHECK-P9-NEXT: mtvsrd v2, r3106; CHECK-P9-NEXT: mffprwz r3, f1107; CHECK-P9-NEXT: xscvdpsxws f1, f0108; CHECK-P9-NEXT: xxswapd vs0, vs0109; CHECK-P9-NEXT: mtvsrd v3, r3110; CHECK-P9-NEXT: xscvdpsxws f0, f0111; CHECK-P9-NEXT: vmrghb v2, v2, v3112; CHECK-P9-NEXT: mffprwz r3, f1113; CHECK-P9-NEXT: mtvsrd v3, r3114; CHECK-P9-NEXT: mffprwz r3, f0115; CHECK-P9-NEXT: mtvsrd v4, r3116; CHECK-P9-NEXT: li r3, 0117; CHECK-P9-NEXT: vmrghb v3, v3, v4118; CHECK-P9-NEXT: vmrglh v2, v3, v2119; CHECK-P9-NEXT: vextuwrx r3, r3, v2120; CHECK-P9-NEXT: blr121;122; CHECK-BE-LABEL: test4elt:123; CHECK-BE: # %bb.0: # %entry124; CHECK-BE-NEXT: lxv vs1, 16(r3)125; CHECK-BE-NEXT: lxv vs0, 0(r3)126; CHECK-BE-NEXT: addis r3, r2, .LCPI1_0@toc@ha127; CHECK-BE-NEXT: addi r3, r3, .LCPI1_0@toc@l128; CHECK-BE-NEXT: lxv vs2, 0(r3)129; CHECK-BE-NEXT: xscvdpsxws f3, f1130; CHECK-BE-NEXT: xxswapd vs1, vs1131; CHECK-BE-NEXT: xscvdpsxws f1, f1132; CHECK-BE-NEXT: mffprwz r3, f3133; CHECK-BE-NEXT: mtfprwz f3, r3134; CHECK-BE-NEXT: mffprwz r3, f1135; CHECK-BE-NEXT: xscvdpsxws f1, f0136; CHECK-BE-NEXT: xxswapd vs0, vs0137; CHECK-BE-NEXT: mtvsrwz v2, r3138; CHECK-BE-NEXT: xscvdpsxws f0, f0139; CHECK-BE-NEXT: xxperm v2, vs3, vs2140; CHECK-BE-NEXT: mffprwz r3, f1141; CHECK-BE-NEXT: mtfprwz f1, r3142; CHECK-BE-NEXT: mffprwz r3, f0143; CHECK-BE-NEXT: mtvsrwz v3, r3144; CHECK-BE-NEXT: li r3, 0145; CHECK-BE-NEXT: xxperm v3, vs1, vs2146; CHECK-BE-NEXT: vmrghh v2, v3, v2147; CHECK-BE-NEXT: vextuwlx r3, r3, v2148; CHECK-BE-NEXT: blr149entry:150 %a = load <4 x double>, ptr %0, align 32151 %1 = fptoui <4 x double> %a to <4 x i8>152 %2 = bitcast <4 x i8> %1 to i32153 ret i32 %2154}155 156define i64 @test8elt(ptr nocapture readonly) local_unnamed_addr #1 {157; CHECK-P8-LABEL: test8elt:158; CHECK-P8: # %bb.0: # %entry159; CHECK-P8-NEXT: li r4, 16160; CHECK-P8-NEXT: lxvd2x vs1, 0, r3161; CHECK-P8-NEXT: lxvd2x vs0, r3, r4162; CHECK-P8-NEXT: li r4, 32163; CHECK-P8-NEXT: lxvd2x vs4, r3, r4164; CHECK-P8-NEXT: li r4, 48165; CHECK-P8-NEXT: lxvd2x vs6, r3, r4166; CHECK-P8-NEXT: xxswapd vs3, vs1167; CHECK-P8-NEXT: xscvdpsxws f1, f1168; CHECK-P8-NEXT: xscvdpsxws f3, f3169; CHECK-P8-NEXT: mffprwz r3, f1170; CHECK-P8-NEXT: mtvsrd v2, r3171; CHECK-P8-NEXT: xxswapd vs2, vs0172; CHECK-P8-NEXT: xscvdpsxws f0, f0173; CHECK-P8-NEXT: mffprwz r4, f0174; CHECK-P8-NEXT: xscvdpsxws f2, f2175; CHECK-P8-NEXT: xscvdpsxws f0, f6176; CHECK-P8-NEXT: mtvsrd v3, r4177; CHECK-P8-NEXT: mffprwz r4, f3178; CHECK-P8-NEXT: mtvsrd v5, r4179; CHECK-P8-NEXT: xxswapd vs5, vs4180; CHECK-P8-NEXT: xscvdpsxws f4, f4181; CHECK-P8-NEXT: mffprwz r3, f4182; CHECK-P8-NEXT: xscvdpsxws f5, f5183; CHECK-P8-NEXT: mtvsrd v4, r3184; CHECK-P8-NEXT: mffprwz r3, f2185; CHECK-P8-NEXT: mffprwz r4, f5186; CHECK-P8-NEXT: xxswapd vs7, vs6187; CHECK-P8-NEXT: xscvdpsxws f7, f7188; CHECK-P8-NEXT: vmrghb v2, v5, v2189; CHECK-P8-NEXT: mtvsrd v5, r3190; CHECK-P8-NEXT: mffprwz r3, f7191; CHECK-P8-NEXT: mtvsrd v0, r3192; CHECK-P8-NEXT: mffprwz r3, f0193; CHECK-P8-NEXT: vmrghb v3, v5, v3194; CHECK-P8-NEXT: mtvsrd v5, r4195; CHECK-P8-NEXT: vmrglh v2, v3, v2196; CHECK-P8-NEXT: vmrghb v4, v5, v4197; CHECK-P8-NEXT: mtvsrd v5, r3198; CHECK-P8-NEXT: vmrghb v5, v0, v5199; CHECK-P8-NEXT: vmrglh v3, v5, v4200; CHECK-P8-NEXT: xxmrglw vs0, v3, v2201; CHECK-P8-NEXT: xxswapd vs0, vs0202; CHECK-P8-NEXT: mffprd r3, f0203; CHECK-P8-NEXT: blr204;205; CHECK-P9-LABEL: test8elt:206; CHECK-P9: # %bb.0: # %entry207; CHECK-P9-NEXT: lxv vs3, 0(r3)208; CHECK-P9-NEXT: lxv vs2, 16(r3)209; CHECK-P9-NEXT: lxv vs0, 48(r3)210; CHECK-P9-NEXT: lxv vs1, 32(r3)211; CHECK-P9-NEXT: xscvdpsxws f4, f3212; CHECK-P9-NEXT: xxswapd vs3, vs3213; CHECK-P9-NEXT: xscvdpsxws f3, f3214; CHECK-P9-NEXT: mffprwz r3, f4215; CHECK-P9-NEXT: mtvsrd v2, r3216; CHECK-P9-NEXT: mffprwz r3, f3217; CHECK-P9-NEXT: xscvdpsxws f3, f2218; CHECK-P9-NEXT: xxswapd vs2, vs2219; CHECK-P9-NEXT: mtvsrd v3, r3220; CHECK-P9-NEXT: xscvdpsxws f2, f2221; CHECK-P9-NEXT: vmrghb v2, v2, v3222; CHECK-P9-NEXT: mffprwz r3, f3223; CHECK-P9-NEXT: mtvsrd v3, r3224; CHECK-P9-NEXT: mffprwz r3, f2225; CHECK-P9-NEXT: xscvdpsxws f2, f1226; CHECK-P9-NEXT: xxswapd vs1, vs1227; CHECK-P9-NEXT: mtvsrd v4, r3228; CHECK-P9-NEXT: xscvdpsxws f1, f1229; CHECK-P9-NEXT: vmrghb v3, v3, v4230; CHECK-P9-NEXT: mffprwz r3, f2231; CHECK-P9-NEXT: vmrglh v2, v3, v2232; CHECK-P9-NEXT: mtvsrd v3, r3233; CHECK-P9-NEXT: mffprwz r3, f1234; CHECK-P9-NEXT: xscvdpsxws f1, f0235; CHECK-P9-NEXT: xxswapd vs0, vs0236; CHECK-P9-NEXT: mtvsrd v4, r3237; CHECK-P9-NEXT: xscvdpsxws f0, f0238; CHECK-P9-NEXT: vmrghb v3, v3, v4239; CHECK-P9-NEXT: mffprwz r3, f1240; CHECK-P9-NEXT: mtvsrd v4, r3241; CHECK-P9-NEXT: mffprwz r3, f0242; CHECK-P9-NEXT: mtvsrd v5, r3243; CHECK-P9-NEXT: vmrghb v4, v4, v5244; CHECK-P9-NEXT: vmrglh v3, v4, v3245; CHECK-P9-NEXT: xxmrglw vs0, v3, v2246; CHECK-P9-NEXT: mfvsrld r3, vs0247; CHECK-P9-NEXT: blr248;249; CHECK-BE-LABEL: test8elt:250; CHECK-BE: # %bb.0: # %entry251; CHECK-BE-NEXT: lxv vs3, 48(r3)252; CHECK-BE-NEXT: lxv vs0, 0(r3)253; CHECK-BE-NEXT: lxv vs1, 16(r3)254; CHECK-BE-NEXT: lxv vs2, 32(r3)255; CHECK-BE-NEXT: addis r3, r2, .LCPI2_0@toc@ha256; CHECK-BE-NEXT: addi r3, r3, .LCPI2_0@toc@l257; CHECK-BE-NEXT: lxv vs4, 0(r3)258; CHECK-BE-NEXT: xscvdpsxws f5, f3259; CHECK-BE-NEXT: xxswapd vs3, vs3260; CHECK-BE-NEXT: xscvdpsxws f3, f3261; CHECK-BE-NEXT: mffprwz r3, f5262; CHECK-BE-NEXT: mtfprwz f5, r3263; CHECK-BE-NEXT: mffprwz r3, f3264; CHECK-BE-NEXT: xscvdpsxws f3, f2265; CHECK-BE-NEXT: xxswapd vs2, vs2266; CHECK-BE-NEXT: mtvsrwz v2, r3267; CHECK-BE-NEXT: xscvdpsxws f2, f2268; CHECK-BE-NEXT: xxperm v2, vs5, vs4269; CHECK-BE-NEXT: mffprwz r3, f3270; CHECK-BE-NEXT: mtfprwz f3, r3271; CHECK-BE-NEXT: mffprwz r3, f2272; CHECK-BE-NEXT: xscvdpsxws f2, f1273; CHECK-BE-NEXT: xxswapd vs1, vs1274; CHECK-BE-NEXT: mtvsrwz v3, r3275; CHECK-BE-NEXT: xscvdpsxws f1, f1276; CHECK-BE-NEXT: xxperm v3, vs3, vs4277; CHECK-BE-NEXT: mffprwz r3, f2278; CHECK-BE-NEXT: vmrghh v2, v3, v2279; CHECK-BE-NEXT: mtfprwz f2, r3280; CHECK-BE-NEXT: mffprwz r3, f1281; CHECK-BE-NEXT: xscvdpsxws f1, f0282; CHECK-BE-NEXT: xxswapd vs0, vs0283; CHECK-BE-NEXT: mtvsrwz v3, r3284; CHECK-BE-NEXT: xscvdpsxws f0, f0285; CHECK-BE-NEXT: xxperm v3, vs2, vs4286; CHECK-BE-NEXT: mffprwz r3, f1287; CHECK-BE-NEXT: mtfprwz f1, r3288; CHECK-BE-NEXT: mffprwz r3, f0289; CHECK-BE-NEXT: mtvsrwz v4, r3290; CHECK-BE-NEXT: xxperm v4, vs1, vs4291; CHECK-BE-NEXT: vmrghh v3, v4, v3292; CHECK-BE-NEXT: xxmrghw vs0, v3, v2293; CHECK-BE-NEXT: mffprd r3, f0294; CHECK-BE-NEXT: blr295entry:296 %a = load <8 x double>, ptr %0, align 64297 %1 = fptoui <8 x double> %a to <8 x i8>298 %2 = bitcast <8 x i8> %1 to i64299 ret i64 %2300}301 302define <16 x i8> @test16elt(ptr nocapture readonly) local_unnamed_addr #2 {303; CHECK-P8-LABEL: test16elt:304; CHECK-P8: # %bb.0: # %entry305; CHECK-P8-NEXT: li r4, 80306; CHECK-P8-NEXT: lxvd2x vs4, 0, r3307; CHECK-P8-NEXT: lxvd2x vs3, r3, r4308; CHECK-P8-NEXT: li r4, 48309; CHECK-P8-NEXT: lxvd2x vs6, r3, r4310; CHECK-P8-NEXT: li r4, 16311; CHECK-P8-NEXT: lxvd2x vs7, r3, r4312; CHECK-P8-NEXT: li r4, 32313; CHECK-P8-NEXT: lxvd2x vs9, r3, r4314; CHECK-P8-NEXT: li r4, 64315; CHECK-P8-NEXT: lxvd2x vs12, r3, r4316; CHECK-P8-NEXT: li r4, 96317; CHECK-P8-NEXT: lxvd2x vs2, r3, r4318; CHECK-P8-NEXT: li r4, 112319; CHECK-P8-NEXT: lxvd2x vs0, r3, r4320; CHECK-P8-NEXT: xxswapd vs5, vs4321; CHECK-P8-NEXT: xscvdpsxws f4, f4322; CHECK-P8-NEXT: mffprwz r3, f4323; CHECK-P8-NEXT: xscvdpsxws f5, f5324; CHECK-P8-NEXT: mtvsrd v4, r3325; CHECK-P8-NEXT: xxswapd vs13, vs3326; CHECK-P8-NEXT: xscvdpsxws f3, f3327; CHECK-P8-NEXT: xscvdpsxws f13, f13328; CHECK-P8-NEXT: xxswapd vs10, vs6329; CHECK-P8-NEXT: xscvdpsxws f6, f6330; CHECK-P8-NEXT: xscvdpsxws f10, f10331; CHECK-P8-NEXT: xxswapd vs8, vs7332; CHECK-P8-NEXT: xscvdpsxws f7, f7333; CHECK-P8-NEXT: mffprwz r4, f7334; CHECK-P8-NEXT: xscvdpsxws f8, f8335; CHECK-P8-NEXT: mtvsrd v5, r4336; CHECK-P8-NEXT: mffprwz r4, f6337; CHECK-P8-NEXT: mtvsrd v1, r4338; CHECK-P8-NEXT: mffprwz r4, f3339; CHECK-P8-NEXT: xxswapd vs11, vs9340; CHECK-P8-NEXT: xscvdpsxws f9, f9341; CHECK-P8-NEXT: mffprwz r3, f9342; CHECK-P8-NEXT: mtvsrd v0, r3343; CHECK-P8-NEXT: xscvdpsxws f11, f11344; CHECK-P8-NEXT: mtvsrd v7, r4345; CHECK-P8-NEXT: mffprwz r4, f8346; CHECK-P8-NEXT: mtvsrd v9, r4347; CHECK-P8-NEXT: xxswapd v2, vs12348; CHECK-P8-NEXT: xscvdpsxws f12, f12349; CHECK-P8-NEXT: mffprwz r3, f12350; CHECK-P8-NEXT: mtvsrd v6, r3351; CHECK-P8-NEXT: mffprwz r3, f5352; CHECK-P8-NEXT: xscvdpsxws v2, v2353; CHECK-P8-NEXT: mtvsrd v8, r3354; CHECK-P8-NEXT: mffprwz r3, f11355; CHECK-P8-NEXT: xxswapd v3, vs2356; CHECK-P8-NEXT: xscvdpsxws v3, v3357; CHECK-P8-NEXT: mffprwz r4, f10358; CHECK-P8-NEXT: xscvdpsxws f2, f2359; CHECK-P8-NEXT: xxswapd vs1, vs0360; CHECK-P8-NEXT: xscvdpsxws f1, f1361; CHECK-P8-NEXT: xscvdpsxws f0, f0362; CHECK-P8-NEXT: vmrghb v4, v8, v4363; CHECK-P8-NEXT: mtvsrd v8, r3364; CHECK-P8-NEXT: mfvsrwz r3, v2365; CHECK-P8-NEXT: mtvsrd v2, r4366; CHECK-P8-NEXT: mffprwz r4, f13367; CHECK-P8-NEXT: vmrghb v5, v9, v5368; CHECK-P8-NEXT: vmrghb v0, v8, v0369; CHECK-P8-NEXT: mtvsrd v8, r3370; CHECK-P8-NEXT: mfvsrwz r3, v3371; CHECK-P8-NEXT: vmrglh v4, v5, v4372; CHECK-P8-NEXT: mtvsrd v3, r4373; CHECK-P8-NEXT: vmrghb v2, v2, v1374; CHECK-P8-NEXT: vmrghb v1, v8, v6375; CHECK-P8-NEXT: mtvsrd v6, r3376; CHECK-P8-NEXT: mffprwz r3, f2377; CHECK-P8-NEXT: vmrglh v2, v2, v0378; CHECK-P8-NEXT: vmrghb v3, v3, v7379; CHECK-P8-NEXT: mtvsrd v7, r3380; CHECK-P8-NEXT: mffprwz r3, f1381; CHECK-P8-NEXT: vmrglh v3, v3, v1382; CHECK-P8-NEXT: vmrghb v6, v6, v7383; CHECK-P8-NEXT: mtvsrd v7, r3384; CHECK-P8-NEXT: mffprwz r3, f0385; CHECK-P8-NEXT: xxmrglw vs0, v2, v4386; CHECK-P8-NEXT: mtvsrd v8, r3387; CHECK-P8-NEXT: vmrghb v7, v7, v8388; CHECK-P8-NEXT: vmrglh v5, v7, v6389; CHECK-P8-NEXT: xxmrglw vs1, v5, v3390; CHECK-P8-NEXT: xxmrgld v2, vs1, vs0391; CHECK-P8-NEXT: blr392;393; CHECK-P9-LABEL: test16elt:394; CHECK-P9: # %bb.0: # %entry395; CHECK-P9-NEXT: lxv vs7, 0(r3)396; CHECK-P9-NEXT: lxv vs6, 16(r3)397; CHECK-P9-NEXT: lxv vs0, 112(r3)398; CHECK-P9-NEXT: lxv vs1, 96(r3)399; CHECK-P9-NEXT: xscvdpsxws f8, f7400; CHECK-P9-NEXT: xxswapd vs7, vs7401; CHECK-P9-NEXT: lxv vs2, 80(r3)402; CHECK-P9-NEXT: lxv vs3, 64(r3)403; CHECK-P9-NEXT: lxv vs4, 48(r3)404; CHECK-P9-NEXT: lxv vs5, 32(r3)405; CHECK-P9-NEXT: xscvdpsxws f7, f7406; CHECK-P9-NEXT: mffprwz r3, f8407; CHECK-P9-NEXT: mtvsrd v2, r3408; CHECK-P9-NEXT: mffprwz r3, f7409; CHECK-P9-NEXT: xscvdpsxws f7, f6410; CHECK-P9-NEXT: xxswapd vs6, vs6411; CHECK-P9-NEXT: mtvsrd v3, r3412; CHECK-P9-NEXT: xscvdpsxws f6, f6413; CHECK-P9-NEXT: vmrghb v2, v2, v3414; CHECK-P9-NEXT: mffprwz r3, f7415; CHECK-P9-NEXT: mtvsrd v3, r3416; CHECK-P9-NEXT: mffprwz r3, f6417; CHECK-P9-NEXT: xscvdpsxws f6, f5418; CHECK-P9-NEXT: xxswapd vs5, vs5419; CHECK-P9-NEXT: mtvsrd v4, r3420; CHECK-P9-NEXT: xscvdpsxws f5, f5421; CHECK-P9-NEXT: vmrghb v3, v3, v4422; CHECK-P9-NEXT: mffprwz r3, f6423; CHECK-P9-NEXT: vmrglh v2, v3, v2424; CHECK-P9-NEXT: mtvsrd v3, r3425; CHECK-P9-NEXT: mffprwz r3, f5426; CHECK-P9-NEXT: xscvdpsxws f5, f4427; CHECK-P9-NEXT: xxswapd vs4, vs4428; CHECK-P9-NEXT: mtvsrd v4, r3429; CHECK-P9-NEXT: xscvdpsxws f4, f4430; CHECK-P9-NEXT: vmrghb v3, v3, v4431; CHECK-P9-NEXT: mffprwz r3, f5432; CHECK-P9-NEXT: xscvdpsxws f5, f3433; CHECK-P9-NEXT: xxswapd vs3, vs3434; CHECK-P9-NEXT: mtvsrd v4, r3435; CHECK-P9-NEXT: mffprwz r3, f4436; CHECK-P9-NEXT: xscvdpsxws f3, f3437; CHECK-P9-NEXT: mtvsrd v5, r3438; CHECK-P9-NEXT: vmrghb v4, v4, v5439; CHECK-P9-NEXT: mffprwz r3, f5440; CHECK-P9-NEXT: vmrglh v3, v4, v3441; CHECK-P9-NEXT: xxmrglw vs4, v3, v2442; CHECK-P9-NEXT: mtvsrd v2, r3443; CHECK-P9-NEXT: mffprwz r3, f3444; CHECK-P9-NEXT: xscvdpsxws f3, f2445; CHECK-P9-NEXT: xxswapd vs2, vs2446; CHECK-P9-NEXT: mtvsrd v3, r3447; CHECK-P9-NEXT: xscvdpsxws f2, f2448; CHECK-P9-NEXT: vmrghb v2, v2, v3449; CHECK-P9-NEXT: mffprwz r3, f3450; CHECK-P9-NEXT: mtvsrd v3, r3451; CHECK-P9-NEXT: mffprwz r3, f2452; CHECK-P9-NEXT: xscvdpsxws f2, f1453; CHECK-P9-NEXT: xxswapd vs1, vs1454; CHECK-P9-NEXT: mtvsrd v4, r3455; CHECK-P9-NEXT: xscvdpsxws f1, f1456; CHECK-P9-NEXT: vmrghb v3, v3, v4457; CHECK-P9-NEXT: mffprwz r3, f2458; CHECK-P9-NEXT: vmrglh v2, v3, v2459; CHECK-P9-NEXT: mtvsrd v3, r3460; CHECK-P9-NEXT: mffprwz r3, f1461; CHECK-P9-NEXT: xscvdpsxws f1, f0462; CHECK-P9-NEXT: xxswapd vs0, vs0463; CHECK-P9-NEXT: mtvsrd v4, r3464; CHECK-P9-NEXT: xscvdpsxws f0, f0465; CHECK-P9-NEXT: vmrghb v3, v3, v4466; CHECK-P9-NEXT: mffprwz r3, f1467; CHECK-P9-NEXT: mtvsrd v4, r3468; CHECK-P9-NEXT: mffprwz r3, f0469; CHECK-P9-NEXT: mtvsrd v5, r3470; CHECK-P9-NEXT: vmrghb v4, v4, v5471; CHECK-P9-NEXT: vmrglh v3, v4, v3472; CHECK-P9-NEXT: xxmrglw vs0, v3, v2473; CHECK-P9-NEXT: xxmrgld v2, vs0, vs4474; CHECK-P9-NEXT: blr475;476; CHECK-BE-LABEL: test16elt:477; CHECK-BE: # %bb.0: # %entry478; CHECK-BE-NEXT: lxv vs7, 112(r3)479; CHECK-BE-NEXT: lxv vs0, 0(r3)480; CHECK-BE-NEXT: lxv vs1, 16(r3)481; CHECK-BE-NEXT: lxv vs2, 32(r3)482; CHECK-BE-NEXT: xscvdpsxws f9, f7483; CHECK-BE-NEXT: xxswapd vs7, vs7484; CHECK-BE-NEXT: lxv vs3, 48(r3)485; CHECK-BE-NEXT: lxv vs4, 64(r3)486; CHECK-BE-NEXT: lxv vs5, 80(r3)487; CHECK-BE-NEXT: lxv vs6, 96(r3)488; CHECK-BE-NEXT: addis r3, r2, .LCPI3_0@toc@ha489; CHECK-BE-NEXT: addi r3, r3, .LCPI3_0@toc@l490; CHECK-BE-NEXT: lxv vs8, 0(r3)491; CHECK-BE-NEXT: xscvdpsxws f7, f7492; CHECK-BE-NEXT: mffprwz r3, f9493; CHECK-BE-NEXT: mtfprwz f9, r3494; CHECK-BE-NEXT: mffprwz r3, f7495; CHECK-BE-NEXT: xscvdpsxws f7, f6496; CHECK-BE-NEXT: xxswapd vs6, vs6497; CHECK-BE-NEXT: mtvsrwz v2, r3498; CHECK-BE-NEXT: xscvdpsxws f6, f6499; CHECK-BE-NEXT: xxperm v2, vs9, vs8500; CHECK-BE-NEXT: mffprwz r3, f7501; CHECK-BE-NEXT: mtfprwz f7, r3502; CHECK-BE-NEXT: mffprwz r3, f6503; CHECK-BE-NEXT: xscvdpsxws f6, f5504; CHECK-BE-NEXT: xxswapd vs5, vs5505; CHECK-BE-NEXT: mtvsrwz v3, r3506; CHECK-BE-NEXT: xscvdpsxws f5, f5507; CHECK-BE-NEXT: xxperm v3, vs7, vs8508; CHECK-BE-NEXT: mffprwz r3, f6509; CHECK-BE-NEXT: vmrghh v2, v3, v2510; CHECK-BE-NEXT: mtfprwz f6, r3511; CHECK-BE-NEXT: mffprwz r3, f5512; CHECK-BE-NEXT: xscvdpsxws f5, f4513; CHECK-BE-NEXT: xxswapd vs4, vs4514; CHECK-BE-NEXT: mtvsrwz v3, r3515; CHECK-BE-NEXT: xscvdpsxws f4, f4516; CHECK-BE-NEXT: xxperm v3, vs6, vs8517; CHECK-BE-NEXT: mffprwz r3, f5518; CHECK-BE-NEXT: mtfprwz f5, r3519; CHECK-BE-NEXT: mffprwz r3, f4520; CHECK-BE-NEXT: mtvsrwz v4, r3521; CHECK-BE-NEXT: xxperm v4, vs5, vs8522; CHECK-BE-NEXT: xscvdpsxws f5, f3523; CHECK-BE-NEXT: xxswapd vs3, vs3524; CHECK-BE-NEXT: xscvdpsxws f3, f3525; CHECK-BE-NEXT: vmrghh v3, v4, v3526; CHECK-BE-NEXT: xxmrghw vs4, v3, v2527; CHECK-BE-NEXT: mffprwz r3, f5528; CHECK-BE-NEXT: mtfprwz f5, r3529; CHECK-BE-NEXT: mffprwz r3, f3530; CHECK-BE-NEXT: xscvdpsxws f3, f2531; CHECK-BE-NEXT: xxswapd vs2, vs2532; CHECK-BE-NEXT: mtvsrwz v2, r3533; CHECK-BE-NEXT: xscvdpsxws f2, f2534; CHECK-BE-NEXT: xxperm v2, vs5, vs8535; CHECK-BE-NEXT: mffprwz r3, f3536; CHECK-BE-NEXT: mtfprwz f3, r3537; CHECK-BE-NEXT: mffprwz r3, f2538; CHECK-BE-NEXT: xscvdpsxws f2, f1539; CHECK-BE-NEXT: xxswapd vs1, vs1540; CHECK-BE-NEXT: mtvsrwz v3, r3541; CHECK-BE-NEXT: xscvdpsxws f1, f1542; CHECK-BE-NEXT: xxperm v3, vs3, vs8543; CHECK-BE-NEXT: mffprwz r3, f2544; CHECK-BE-NEXT: vmrghh v2, v3, v2545; CHECK-BE-NEXT: mtfprwz f2, r3546; CHECK-BE-NEXT: mffprwz r3, f1547; CHECK-BE-NEXT: xscvdpsxws f1, f0548; CHECK-BE-NEXT: xxswapd vs0, vs0549; CHECK-BE-NEXT: mtvsrwz v3, r3550; CHECK-BE-NEXT: xscvdpsxws f0, f0551; CHECK-BE-NEXT: xxperm v3, vs2, vs8552; CHECK-BE-NEXT: mffprwz r3, f1553; CHECK-BE-NEXT: mtfprwz f1, r3554; CHECK-BE-NEXT: mffprwz r3, f0555; CHECK-BE-NEXT: mtvsrwz v4, r3556; CHECK-BE-NEXT: xxperm v4, vs1, vs8557; CHECK-BE-NEXT: vmrghh v3, v4, v3558; CHECK-BE-NEXT: xxmrghw vs0, v3, v2559; CHECK-BE-NEXT: xxmrghd v2, vs0, vs4560; CHECK-BE-NEXT: blr561entry:562 %a = load <16 x double>, ptr %0, align 128563 %1 = fptoui <16 x double> %a to <16 x i8>564 ret <16 x i8> %1565}566 567define i16 @test2elt_signed(<2 x double> %a) local_unnamed_addr #0 {568; CHECK-P8-LABEL: test2elt_signed:569; CHECK-P8: # %bb.0: # %entry570; CHECK-P8-NEXT: xscvdpsxws f1, v2571; CHECK-P8-NEXT: xxswapd vs0, v2572; CHECK-P8-NEXT: xscvdpsxws f0, f0573; CHECK-P8-NEXT: mffprwz r3, f1574; CHECK-P8-NEXT: mtvsrd v2, r3575; CHECK-P8-NEXT: mffprwz r3, f0576; CHECK-P8-NEXT: mtvsrd v3, r3577; CHECK-P8-NEXT: vmrghb v2, v2, v3578; CHECK-P8-NEXT: xxswapd vs0, v2579; CHECK-P8-NEXT: mffprd r3, f0580; CHECK-P8-NEXT: clrldi r3, r3, 48581; CHECK-P8-NEXT: sth r3, -2(r1)582; CHECK-P8-NEXT: lhz r3, -2(r1)583; CHECK-P8-NEXT: blr584;585; CHECK-P9-LABEL: test2elt_signed:586; CHECK-P9: # %bb.0: # %entry587; CHECK-P9-NEXT: xscvdpsxws f0, v2588; CHECK-P9-NEXT: mffprwz r3, f0589; CHECK-P9-NEXT: xxswapd vs0, v2590; CHECK-P9-NEXT: mtvsrd v3, r3591; CHECK-P9-NEXT: xscvdpsxws f0, f0592; CHECK-P9-NEXT: mffprwz r3, f0593; CHECK-P9-NEXT: mtvsrd v2, r3594; CHECK-P9-NEXT: addi r3, r1, -2595; CHECK-P9-NEXT: vmrghb v2, v3, v2596; CHECK-P9-NEXT: vsldoi v2, v2, v2, 8597; CHECK-P9-NEXT: stxsihx v2, 0, r3598; CHECK-P9-NEXT: lhz r3, -2(r1)599; CHECK-P9-NEXT: blr600;601; CHECK-BE-LABEL: test2elt_signed:602; CHECK-BE: # %bb.0: # %entry603; CHECK-BE-NEXT: xxswapd vs2, v2604; CHECK-BE-NEXT: xscvdpsxws f1, v2605; CHECK-BE-NEXT: addis r3, r2, .LCPI4_0@toc@ha606; CHECK-BE-NEXT: addi r3, r3, .LCPI4_0@toc@l607; CHECK-BE-NEXT: xscvdpsxws f2, f2608; CHECK-BE-NEXT: lxv vs0, 0(r3)609; CHECK-BE-NEXT: mffprwz r3, f1610; CHECK-BE-NEXT: mtfprwz f1, r3611; CHECK-BE-NEXT: mffprwz r3, f2612; CHECK-BE-NEXT: mtvsrwz v2, r3613; CHECK-BE-NEXT: addi r3, r1, -2614; CHECK-BE-NEXT: xxperm v2, vs1, vs0615; CHECK-BE-NEXT: vsldoi v2, v2, v2, 10616; CHECK-BE-NEXT: stxsihx v2, 0, r3617; CHECK-BE-NEXT: lhz r3, -2(r1)618; CHECK-BE-NEXT: blr619entry:620 %0 = fptosi <2 x double> %a to <2 x i8>621 %1 = bitcast <2 x i8> %0 to i16622 ret i16 %1623}624 625define i32 @test4elt_signed(ptr nocapture readonly) local_unnamed_addr #1 {626; CHECK-P8-LABEL: test4elt_signed:627; CHECK-P8: # %bb.0: # %entry628; CHECK-P8-NEXT: lxvd2x vs0, 0, r3629; CHECK-P8-NEXT: li r4, 16630; CHECK-P8-NEXT: lxvd2x vs2, r3, r4631; CHECK-P8-NEXT: xxswapd vs1, vs0632; CHECK-P8-NEXT: xscvdpsxws f0, f0633; CHECK-P8-NEXT: xscvdpsxws f1, f1634; CHECK-P8-NEXT: mffprwz r3, f0635; CHECK-P8-NEXT: xscvdpsxws f0, f2636; CHECK-P8-NEXT: mffprwz r4, f1637; CHECK-P8-NEXT: mtvsrd v2, r3638; CHECK-P8-NEXT: mtvsrd v3, r4639; CHECK-P8-NEXT: xxswapd vs3, vs2640; CHECK-P8-NEXT: xscvdpsxws f3, f3641; CHECK-P8-NEXT: mffprwz r3, f3642; CHECK-P8-NEXT: mtvsrd v4, r3643; CHECK-P8-NEXT: mffprwz r3, f0644; CHECK-P8-NEXT: vmrghb v2, v3, v2645; CHECK-P8-NEXT: mtvsrd v3, r3646; CHECK-P8-NEXT: vmrghb v3, v4, v3647; CHECK-P8-NEXT: vmrglh v2, v3, v2648; CHECK-P8-NEXT: xxswapd vs0, v2649; CHECK-P8-NEXT: mffprwz r3, f0650; CHECK-P8-NEXT: blr651;652; CHECK-P9-LABEL: test4elt_signed:653; CHECK-P9: # %bb.0: # %entry654; CHECK-P9-NEXT: lxv vs1, 0(r3)655; CHECK-P9-NEXT: lxv vs0, 16(r3)656; CHECK-P9-NEXT: xscvdpsxws f2, f1657; CHECK-P9-NEXT: xxswapd vs1, vs1658; CHECK-P9-NEXT: xscvdpsxws f1, f1659; CHECK-P9-NEXT: mffprwz r3, f2660; CHECK-P9-NEXT: mtvsrd v2, r3661; CHECK-P9-NEXT: mffprwz r3, f1662; CHECK-P9-NEXT: xscvdpsxws f1, f0663; CHECK-P9-NEXT: xxswapd vs0, vs0664; CHECK-P9-NEXT: mtvsrd v3, r3665; CHECK-P9-NEXT: xscvdpsxws f0, f0666; CHECK-P9-NEXT: vmrghb v2, v2, v3667; CHECK-P9-NEXT: mffprwz r3, f1668; CHECK-P9-NEXT: mtvsrd v3, r3669; CHECK-P9-NEXT: mffprwz r3, f0670; CHECK-P9-NEXT: mtvsrd v4, r3671; CHECK-P9-NEXT: li r3, 0672; CHECK-P9-NEXT: vmrghb v3, v3, v4673; CHECK-P9-NEXT: vmrglh v2, v3, v2674; CHECK-P9-NEXT: vextuwrx r3, r3, v2675; CHECK-P9-NEXT: blr676;677; CHECK-BE-LABEL: test4elt_signed:678; CHECK-BE: # %bb.0: # %entry679; CHECK-BE-NEXT: lxv vs1, 16(r3)680; CHECK-BE-NEXT: lxv vs0, 0(r3)681; CHECK-BE-NEXT: addis r3, r2, .LCPI5_0@toc@ha682; CHECK-BE-NEXT: addi r3, r3, .LCPI5_0@toc@l683; CHECK-BE-NEXT: lxv vs2, 0(r3)684; CHECK-BE-NEXT: xscvdpsxws f3, f1685; CHECK-BE-NEXT: xxswapd vs1, vs1686; CHECK-BE-NEXT: xscvdpsxws f1, f1687; CHECK-BE-NEXT: mffprwz r3, f3688; CHECK-BE-NEXT: mtfprwz f3, r3689; CHECK-BE-NEXT: mffprwz r3, f1690; CHECK-BE-NEXT: xscvdpsxws f1, f0691; CHECK-BE-NEXT: xxswapd vs0, vs0692; CHECK-BE-NEXT: mtvsrwz v2, r3693; CHECK-BE-NEXT: xscvdpsxws f0, f0694; CHECK-BE-NEXT: xxperm v2, vs3, vs2695; CHECK-BE-NEXT: mffprwz r3, f1696; CHECK-BE-NEXT: mtfprwz f1, r3697; CHECK-BE-NEXT: mffprwz r3, f0698; CHECK-BE-NEXT: mtvsrwz v3, r3699; CHECK-BE-NEXT: li r3, 0700; CHECK-BE-NEXT: xxperm v3, vs1, vs2701; CHECK-BE-NEXT: vmrghh v2, v3, v2702; CHECK-BE-NEXT: vextuwlx r3, r3, v2703; CHECK-BE-NEXT: blr704entry:705 %a = load <4 x double>, ptr %0, align 32706 %1 = fptosi <4 x double> %a to <4 x i8>707 %2 = bitcast <4 x i8> %1 to i32708 ret i32 %2709}710 711define i64 @test8elt_signed(ptr nocapture readonly) local_unnamed_addr #1 {712; CHECK-P8-LABEL: test8elt_signed:713; CHECK-P8: # %bb.0: # %entry714; CHECK-P8-NEXT: li r4, 16715; CHECK-P8-NEXT: lxvd2x vs1, 0, r3716; CHECK-P8-NEXT: lxvd2x vs0, r3, r4717; CHECK-P8-NEXT: li r4, 32718; CHECK-P8-NEXT: lxvd2x vs4, r3, r4719; CHECK-P8-NEXT: li r4, 48720; CHECK-P8-NEXT: lxvd2x vs6, r3, r4721; CHECK-P8-NEXT: xxswapd vs3, vs1722; CHECK-P8-NEXT: xscvdpsxws f1, f1723; CHECK-P8-NEXT: xscvdpsxws f3, f3724; CHECK-P8-NEXT: mffprwz r3, f1725; CHECK-P8-NEXT: mtvsrd v2, r3726; CHECK-P8-NEXT: xxswapd vs2, vs0727; CHECK-P8-NEXT: xscvdpsxws f0, f0728; CHECK-P8-NEXT: mffprwz r4, f0729; CHECK-P8-NEXT: xscvdpsxws f2, f2730; CHECK-P8-NEXT: xscvdpsxws f0, f6731; CHECK-P8-NEXT: mtvsrd v3, r4732; CHECK-P8-NEXT: mffprwz r4, f3733; CHECK-P8-NEXT: mtvsrd v5, r4734; CHECK-P8-NEXT: xxswapd vs5, vs4735; CHECK-P8-NEXT: xscvdpsxws f4, f4736; CHECK-P8-NEXT: mffprwz r3, f4737; CHECK-P8-NEXT: xscvdpsxws f5, f5738; CHECK-P8-NEXT: mtvsrd v4, r3739; CHECK-P8-NEXT: mffprwz r3, f2740; CHECK-P8-NEXT: mffprwz r4, f5741; CHECK-P8-NEXT: xxswapd vs7, vs6742; CHECK-P8-NEXT: xscvdpsxws f7, f7743; CHECK-P8-NEXT: vmrghb v2, v5, v2744; CHECK-P8-NEXT: mtvsrd v5, r3745; CHECK-P8-NEXT: mffprwz r3, f7746; CHECK-P8-NEXT: mtvsrd v0, r3747; CHECK-P8-NEXT: mffprwz r3, f0748; CHECK-P8-NEXT: vmrghb v3, v5, v3749; CHECK-P8-NEXT: mtvsrd v5, r4750; CHECK-P8-NEXT: vmrglh v2, v3, v2751; CHECK-P8-NEXT: vmrghb v4, v5, v4752; CHECK-P8-NEXT: mtvsrd v5, r3753; CHECK-P8-NEXT: vmrghb v5, v0, v5754; CHECK-P8-NEXT: vmrglh v3, v5, v4755; CHECK-P8-NEXT: xxmrglw vs0, v3, v2756; CHECK-P8-NEXT: xxswapd vs0, vs0757; CHECK-P8-NEXT: mffprd r3, f0758; CHECK-P8-NEXT: blr759;760; CHECK-P9-LABEL: test8elt_signed:761; CHECK-P9: # %bb.0: # %entry762; CHECK-P9-NEXT: lxv vs3, 0(r3)763; CHECK-P9-NEXT: lxv vs2, 16(r3)764; CHECK-P9-NEXT: lxv vs0, 48(r3)765; CHECK-P9-NEXT: lxv vs1, 32(r3)766; CHECK-P9-NEXT: xscvdpsxws f4, f3767; CHECK-P9-NEXT: xxswapd vs3, vs3768; CHECK-P9-NEXT: xscvdpsxws f3, f3769; CHECK-P9-NEXT: mffprwz r3, f4770; CHECK-P9-NEXT: mtvsrd v2, r3771; CHECK-P9-NEXT: mffprwz r3, f3772; CHECK-P9-NEXT: xscvdpsxws f3, f2773; CHECK-P9-NEXT: xxswapd vs2, vs2774; CHECK-P9-NEXT: mtvsrd v3, r3775; CHECK-P9-NEXT: xscvdpsxws f2, f2776; CHECK-P9-NEXT: vmrghb v2, v2, v3777; CHECK-P9-NEXT: mffprwz r3, f3778; CHECK-P9-NEXT: mtvsrd v3, r3779; CHECK-P9-NEXT: mffprwz r3, f2780; CHECK-P9-NEXT: xscvdpsxws f2, f1781; CHECK-P9-NEXT: xxswapd vs1, vs1782; CHECK-P9-NEXT: mtvsrd v4, r3783; CHECK-P9-NEXT: xscvdpsxws f1, f1784; CHECK-P9-NEXT: vmrghb v3, v3, v4785; CHECK-P9-NEXT: mffprwz r3, f2786; CHECK-P9-NEXT: vmrglh v2, v3, v2787; CHECK-P9-NEXT: mtvsrd v3, r3788; CHECK-P9-NEXT: mffprwz r3, f1789; CHECK-P9-NEXT: xscvdpsxws f1, f0790; CHECK-P9-NEXT: xxswapd vs0, vs0791; CHECK-P9-NEXT: mtvsrd v4, r3792; CHECK-P9-NEXT: xscvdpsxws f0, f0793; CHECK-P9-NEXT: vmrghb v3, v3, v4794; CHECK-P9-NEXT: mffprwz r3, f1795; CHECK-P9-NEXT: mtvsrd v4, r3796; CHECK-P9-NEXT: mffprwz r3, f0797; CHECK-P9-NEXT: mtvsrd v5, r3798; CHECK-P9-NEXT: vmrghb v4, v4, v5799; CHECK-P9-NEXT: vmrglh v3, v4, v3800; CHECK-P9-NEXT: xxmrglw vs0, v3, v2801; CHECK-P9-NEXT: mfvsrld r3, vs0802; CHECK-P9-NEXT: blr803;804; CHECK-BE-LABEL: test8elt_signed:805; CHECK-BE: # %bb.0: # %entry806; CHECK-BE-NEXT: lxv vs3, 48(r3)807; CHECK-BE-NEXT: lxv vs0, 0(r3)808; CHECK-BE-NEXT: lxv vs1, 16(r3)809; CHECK-BE-NEXT: lxv vs2, 32(r3)810; CHECK-BE-NEXT: addis r3, r2, .LCPI6_0@toc@ha811; CHECK-BE-NEXT: addi r3, r3, .LCPI6_0@toc@l812; CHECK-BE-NEXT: lxv vs4, 0(r3)813; CHECK-BE-NEXT: xscvdpsxws f5, f3814; CHECK-BE-NEXT: xxswapd vs3, vs3815; CHECK-BE-NEXT: xscvdpsxws f3, f3816; CHECK-BE-NEXT: mffprwz r3, f5817; CHECK-BE-NEXT: mtfprwz f5, r3818; CHECK-BE-NEXT: mffprwz r3, f3819; CHECK-BE-NEXT: xscvdpsxws f3, f2820; CHECK-BE-NEXT: xxswapd vs2, vs2821; CHECK-BE-NEXT: mtvsrwz v2, r3822; CHECK-BE-NEXT: xscvdpsxws f2, f2823; CHECK-BE-NEXT: xxperm v2, vs5, vs4824; CHECK-BE-NEXT: mffprwz r3, f3825; CHECK-BE-NEXT: mtfprwz f3, r3826; CHECK-BE-NEXT: mffprwz r3, f2827; CHECK-BE-NEXT: xscvdpsxws f2, f1828; CHECK-BE-NEXT: xxswapd vs1, vs1829; CHECK-BE-NEXT: mtvsrwz v3, r3830; CHECK-BE-NEXT: xscvdpsxws f1, f1831; CHECK-BE-NEXT: xxperm v3, vs3, vs4832; CHECK-BE-NEXT: mffprwz r3, f2833; CHECK-BE-NEXT: vmrghh v2, v3, v2834; CHECK-BE-NEXT: mtfprwz f2, r3835; CHECK-BE-NEXT: mffprwz r3, f1836; CHECK-BE-NEXT: xscvdpsxws f1, f0837; CHECK-BE-NEXT: xxswapd vs0, vs0838; CHECK-BE-NEXT: mtvsrwz v3, r3839; CHECK-BE-NEXT: xscvdpsxws f0, f0840; CHECK-BE-NEXT: xxperm v3, vs2, vs4841; CHECK-BE-NEXT: mffprwz r3, f1842; CHECK-BE-NEXT: mtfprwz f1, r3843; CHECK-BE-NEXT: mffprwz r3, f0844; CHECK-BE-NEXT: mtvsrwz v4, r3845; CHECK-BE-NEXT: xxperm v4, vs1, vs4846; CHECK-BE-NEXT: vmrghh v3, v4, v3847; CHECK-BE-NEXT: xxmrghw vs0, v3, v2848; CHECK-BE-NEXT: mffprd r3, f0849; CHECK-BE-NEXT: blr850entry:851 %a = load <8 x double>, ptr %0, align 64852 %1 = fptosi <8 x double> %a to <8 x i8>853 %2 = bitcast <8 x i8> %1 to i64854 ret i64 %2855}856 857define <16 x i8> @test16elt_signed(ptr nocapture readonly) local_unnamed_addr #2 {858; CHECK-P8-LABEL: test16elt_signed:859; CHECK-P8: # %bb.0: # %entry860; CHECK-P8-NEXT: li r4, 80861; CHECK-P8-NEXT: lxvd2x vs4, 0, r3862; CHECK-P8-NEXT: lxvd2x vs3, r3, r4863; CHECK-P8-NEXT: li r4, 48864; CHECK-P8-NEXT: lxvd2x vs6, r3, r4865; CHECK-P8-NEXT: li r4, 16866; CHECK-P8-NEXT: lxvd2x vs7, r3, r4867; CHECK-P8-NEXT: li r4, 32868; CHECK-P8-NEXT: lxvd2x vs9, r3, r4869; CHECK-P8-NEXT: li r4, 64870; CHECK-P8-NEXT: lxvd2x vs12, r3, r4871; CHECK-P8-NEXT: li r4, 96872; CHECK-P8-NEXT: lxvd2x vs2, r3, r4873; CHECK-P8-NEXT: li r4, 112874; CHECK-P8-NEXT: lxvd2x vs0, r3, r4875; CHECK-P8-NEXT: xxswapd vs5, vs4876; CHECK-P8-NEXT: xscvdpsxws f4, f4877; CHECK-P8-NEXT: mffprwz r3, f4878; CHECK-P8-NEXT: xscvdpsxws f5, f5879; CHECK-P8-NEXT: mtvsrd v4, r3880; CHECK-P8-NEXT: xxswapd vs13, vs3881; CHECK-P8-NEXT: xscvdpsxws f3, f3882; CHECK-P8-NEXT: xscvdpsxws f13, f13883; CHECK-P8-NEXT: xxswapd vs10, vs6884; CHECK-P8-NEXT: xscvdpsxws f6, f6885; CHECK-P8-NEXT: xscvdpsxws f10, f10886; CHECK-P8-NEXT: xxswapd vs8, vs7887; CHECK-P8-NEXT: xscvdpsxws f7, f7888; CHECK-P8-NEXT: mffprwz r4, f7889; CHECK-P8-NEXT: xscvdpsxws f8, f8890; CHECK-P8-NEXT: mtvsrd v5, r4891; CHECK-P8-NEXT: mffprwz r4, f6892; CHECK-P8-NEXT: mtvsrd v1, r4893; CHECK-P8-NEXT: mffprwz r4, f3894; CHECK-P8-NEXT: xxswapd vs11, vs9895; CHECK-P8-NEXT: xscvdpsxws f9, f9896; CHECK-P8-NEXT: mffprwz r3, f9897; CHECK-P8-NEXT: mtvsrd v0, r3898; CHECK-P8-NEXT: xscvdpsxws f11, f11899; CHECK-P8-NEXT: mtvsrd v7, r4900; CHECK-P8-NEXT: mffprwz r4, f8901; CHECK-P8-NEXT: mtvsrd v9, r4902; CHECK-P8-NEXT: xxswapd v2, vs12903; CHECK-P8-NEXT: xscvdpsxws f12, f12904; CHECK-P8-NEXT: mffprwz r3, f12905; CHECK-P8-NEXT: mtvsrd v6, r3906; CHECK-P8-NEXT: mffprwz r3, f5907; CHECK-P8-NEXT: xscvdpsxws v2, v2908; CHECK-P8-NEXT: mtvsrd v8, r3909; CHECK-P8-NEXT: mffprwz r3, f11910; CHECK-P8-NEXT: xxswapd v3, vs2911; CHECK-P8-NEXT: xscvdpsxws v3, v3912; CHECK-P8-NEXT: mffprwz r4, f10913; CHECK-P8-NEXT: xscvdpsxws f2, f2914; CHECK-P8-NEXT: xxswapd vs1, vs0915; CHECK-P8-NEXT: xscvdpsxws f1, f1916; CHECK-P8-NEXT: xscvdpsxws f0, f0917; CHECK-P8-NEXT: vmrghb v4, v8, v4918; CHECK-P8-NEXT: mtvsrd v8, r3919; CHECK-P8-NEXT: mfvsrwz r3, v2920; CHECK-P8-NEXT: mtvsrd v2, r4921; CHECK-P8-NEXT: mffprwz r4, f13922; CHECK-P8-NEXT: vmrghb v5, v9, v5923; CHECK-P8-NEXT: vmrghb v0, v8, v0924; CHECK-P8-NEXT: mtvsrd v8, r3925; CHECK-P8-NEXT: mfvsrwz r3, v3926; CHECK-P8-NEXT: vmrglh v4, v5, v4927; CHECK-P8-NEXT: mtvsrd v3, r4928; CHECK-P8-NEXT: vmrghb v2, v2, v1929; CHECK-P8-NEXT: vmrghb v1, v8, v6930; CHECK-P8-NEXT: mtvsrd v6, r3931; CHECK-P8-NEXT: mffprwz r3, f2932; CHECK-P8-NEXT: vmrglh v2, v2, v0933; CHECK-P8-NEXT: vmrghb v3, v3, v7934; CHECK-P8-NEXT: mtvsrd v7, r3935; CHECK-P8-NEXT: mffprwz r3, f1936; CHECK-P8-NEXT: vmrglh v3, v3, v1937; CHECK-P8-NEXT: vmrghb v6, v6, v7938; CHECK-P8-NEXT: mtvsrd v7, r3939; CHECK-P8-NEXT: mffprwz r3, f0940; CHECK-P8-NEXT: xxmrglw vs0, v2, v4941; CHECK-P8-NEXT: mtvsrd v8, r3942; CHECK-P8-NEXT: vmrghb v7, v7, v8943; CHECK-P8-NEXT: vmrglh v5, v7, v6944; CHECK-P8-NEXT: xxmrglw vs1, v5, v3945; CHECK-P8-NEXT: xxmrgld v2, vs1, vs0946; CHECK-P8-NEXT: blr947;948; CHECK-P9-LABEL: test16elt_signed:949; CHECK-P9: # %bb.0: # %entry950; CHECK-P9-NEXT: lxv vs7, 0(r3)951; CHECK-P9-NEXT: lxv vs6, 16(r3)952; CHECK-P9-NEXT: lxv vs0, 112(r3)953; CHECK-P9-NEXT: lxv vs1, 96(r3)954; CHECK-P9-NEXT: xscvdpsxws f8, f7955; CHECK-P9-NEXT: xxswapd vs7, vs7956; CHECK-P9-NEXT: lxv vs2, 80(r3)957; CHECK-P9-NEXT: lxv vs3, 64(r3)958; CHECK-P9-NEXT: lxv vs4, 48(r3)959; CHECK-P9-NEXT: lxv vs5, 32(r3)960; CHECK-P9-NEXT: xscvdpsxws f7, f7961; CHECK-P9-NEXT: mffprwz r3, f8962; CHECK-P9-NEXT: mtvsrd v2, r3963; CHECK-P9-NEXT: mffprwz r3, f7964; CHECK-P9-NEXT: xscvdpsxws f7, f6965; CHECK-P9-NEXT: xxswapd vs6, vs6966; CHECK-P9-NEXT: mtvsrd v3, r3967; CHECK-P9-NEXT: xscvdpsxws f6, f6968; CHECK-P9-NEXT: vmrghb v2, v2, v3969; CHECK-P9-NEXT: mffprwz r3, f7970; CHECK-P9-NEXT: mtvsrd v3, r3971; CHECK-P9-NEXT: mffprwz r3, f6972; CHECK-P9-NEXT: xscvdpsxws f6, f5973; CHECK-P9-NEXT: xxswapd vs5, vs5974; CHECK-P9-NEXT: mtvsrd v4, r3975; CHECK-P9-NEXT: xscvdpsxws f5, f5976; CHECK-P9-NEXT: vmrghb v3, v3, v4977; CHECK-P9-NEXT: mffprwz r3, f6978; CHECK-P9-NEXT: vmrglh v2, v3, v2979; CHECK-P9-NEXT: mtvsrd v3, r3980; CHECK-P9-NEXT: mffprwz r3, f5981; CHECK-P9-NEXT: xscvdpsxws f5, f4982; CHECK-P9-NEXT: xxswapd vs4, vs4983; CHECK-P9-NEXT: mtvsrd v4, r3984; CHECK-P9-NEXT: xscvdpsxws f4, f4985; CHECK-P9-NEXT: vmrghb v3, v3, v4986; CHECK-P9-NEXT: mffprwz r3, f5987; CHECK-P9-NEXT: xscvdpsxws f5, f3988; CHECK-P9-NEXT: xxswapd vs3, vs3989; CHECK-P9-NEXT: mtvsrd v4, r3990; CHECK-P9-NEXT: mffprwz r3, f4991; CHECK-P9-NEXT: xscvdpsxws f3, f3992; CHECK-P9-NEXT: mtvsrd v5, r3993; CHECK-P9-NEXT: vmrghb v4, v4, v5994; CHECK-P9-NEXT: mffprwz r3, f5995; CHECK-P9-NEXT: vmrglh v3, v4, v3996; CHECK-P9-NEXT: xxmrglw vs4, v3, v2997; CHECK-P9-NEXT: mtvsrd v2, r3998; CHECK-P9-NEXT: mffprwz r3, f3999; CHECK-P9-NEXT: xscvdpsxws f3, f21000; CHECK-P9-NEXT: xxswapd vs2, vs21001; CHECK-P9-NEXT: mtvsrd v3, r31002; CHECK-P9-NEXT: xscvdpsxws f2, f21003; CHECK-P9-NEXT: vmrghb v2, v2, v31004; CHECK-P9-NEXT: mffprwz r3, f31005; CHECK-P9-NEXT: mtvsrd v3, r31006; CHECK-P9-NEXT: mffprwz r3, f21007; CHECK-P9-NEXT: xscvdpsxws f2, f11008; CHECK-P9-NEXT: xxswapd vs1, vs11009; CHECK-P9-NEXT: mtvsrd v4, r31010; CHECK-P9-NEXT: xscvdpsxws f1, f11011; CHECK-P9-NEXT: vmrghb v3, v3, v41012; CHECK-P9-NEXT: mffprwz r3, f21013; CHECK-P9-NEXT: vmrglh v2, v3, v21014; CHECK-P9-NEXT: mtvsrd v3, r31015; CHECK-P9-NEXT: mffprwz r3, f11016; CHECK-P9-NEXT: xscvdpsxws f1, f01017; CHECK-P9-NEXT: xxswapd vs0, vs01018; CHECK-P9-NEXT: mtvsrd v4, r31019; CHECK-P9-NEXT: xscvdpsxws f0, f01020; CHECK-P9-NEXT: vmrghb v3, v3, v41021; CHECK-P9-NEXT: mffprwz r3, f11022; CHECK-P9-NEXT: mtvsrd v4, r31023; CHECK-P9-NEXT: mffprwz r3, f01024; CHECK-P9-NEXT: mtvsrd v5, r31025; CHECK-P9-NEXT: vmrghb v4, v4, v51026; CHECK-P9-NEXT: vmrglh v3, v4, v31027; CHECK-P9-NEXT: xxmrglw vs0, v3, v21028; CHECK-P9-NEXT: xxmrgld v2, vs0, vs41029; CHECK-P9-NEXT: blr1030;1031; CHECK-BE-LABEL: test16elt_signed:1032; CHECK-BE: # %bb.0: # %entry1033; CHECK-BE-NEXT: lxv vs7, 112(r3)1034; CHECK-BE-NEXT: lxv vs0, 0(r3)1035; CHECK-BE-NEXT: lxv vs1, 16(r3)1036; CHECK-BE-NEXT: lxv vs2, 32(r3)1037; CHECK-BE-NEXT: xscvdpsxws f9, f71038; CHECK-BE-NEXT: xxswapd vs7, vs71039; CHECK-BE-NEXT: lxv vs3, 48(r3)1040; CHECK-BE-NEXT: lxv vs4, 64(r3)1041; CHECK-BE-NEXT: lxv vs5, 80(r3)1042; CHECK-BE-NEXT: lxv vs6, 96(r3)1043; CHECK-BE-NEXT: addis r3, r2, .LCPI7_0@toc@ha1044; CHECK-BE-NEXT: addi r3, r3, .LCPI7_0@toc@l1045; CHECK-BE-NEXT: lxv vs8, 0(r3)1046; CHECK-BE-NEXT: xscvdpsxws f7, f71047; CHECK-BE-NEXT: mffprwz r3, f91048; CHECK-BE-NEXT: mtfprwz f9, r31049; CHECK-BE-NEXT: mffprwz r3, f71050; CHECK-BE-NEXT: xscvdpsxws f7, f61051; CHECK-BE-NEXT: xxswapd vs6, vs61052; CHECK-BE-NEXT: mtvsrwz v2, r31053; CHECK-BE-NEXT: xscvdpsxws f6, f61054; CHECK-BE-NEXT: xxperm v2, vs9, vs81055; CHECK-BE-NEXT: mffprwz r3, f71056; CHECK-BE-NEXT: mtfprwz f7, r31057; CHECK-BE-NEXT: mffprwz r3, f61058; CHECK-BE-NEXT: xscvdpsxws f6, f51059; CHECK-BE-NEXT: xxswapd vs5, vs51060; CHECK-BE-NEXT: mtvsrwz v3, r31061; CHECK-BE-NEXT: xscvdpsxws f5, f51062; CHECK-BE-NEXT: xxperm v3, vs7, vs81063; CHECK-BE-NEXT: mffprwz r3, f61064; CHECK-BE-NEXT: vmrghh v2, v3, v21065; CHECK-BE-NEXT: mtfprwz f6, r31066; CHECK-BE-NEXT: mffprwz r3, f51067; CHECK-BE-NEXT: xscvdpsxws f5, f41068; CHECK-BE-NEXT: xxswapd vs4, vs41069; CHECK-BE-NEXT: mtvsrwz v3, r31070; CHECK-BE-NEXT: xscvdpsxws f4, f41071; CHECK-BE-NEXT: xxperm v3, vs6, vs81072; CHECK-BE-NEXT: mffprwz r3, f51073; CHECK-BE-NEXT: mtfprwz f5, r31074; CHECK-BE-NEXT: mffprwz r3, f41075; CHECK-BE-NEXT: mtvsrwz v4, r31076; CHECK-BE-NEXT: xxperm v4, vs5, vs81077; CHECK-BE-NEXT: xscvdpsxws f5, f31078; CHECK-BE-NEXT: xxswapd vs3, vs31079; CHECK-BE-NEXT: xscvdpsxws f3, f31080; CHECK-BE-NEXT: vmrghh v3, v4, v31081; CHECK-BE-NEXT: xxmrghw vs4, v3, v21082; CHECK-BE-NEXT: mffprwz r3, f51083; CHECK-BE-NEXT: mtfprwz f5, r31084; CHECK-BE-NEXT: mffprwz r3, f31085; CHECK-BE-NEXT: xscvdpsxws f3, f21086; CHECK-BE-NEXT: xxswapd vs2, vs21087; CHECK-BE-NEXT: mtvsrwz v2, r31088; CHECK-BE-NEXT: xscvdpsxws f2, f21089; CHECK-BE-NEXT: xxperm v2, vs5, vs81090; CHECK-BE-NEXT: mffprwz r3, f31091; CHECK-BE-NEXT: mtfprwz f3, r31092; CHECK-BE-NEXT: mffprwz r3, f21093; CHECK-BE-NEXT: xscvdpsxws f2, f11094; CHECK-BE-NEXT: xxswapd vs1, vs11095; CHECK-BE-NEXT: mtvsrwz v3, r31096; CHECK-BE-NEXT: xscvdpsxws f1, f11097; CHECK-BE-NEXT: xxperm v3, vs3, vs81098; CHECK-BE-NEXT: mffprwz r3, f21099; CHECK-BE-NEXT: vmrghh v2, v3, v21100; CHECK-BE-NEXT: mtfprwz f2, r31101; CHECK-BE-NEXT: mffprwz r3, f11102; CHECK-BE-NEXT: xscvdpsxws f1, f01103; CHECK-BE-NEXT: xxswapd vs0, vs01104; CHECK-BE-NEXT: mtvsrwz v3, r31105; CHECK-BE-NEXT: xscvdpsxws f0, f01106; CHECK-BE-NEXT: xxperm v3, vs2, vs81107; CHECK-BE-NEXT: mffprwz r3, f11108; CHECK-BE-NEXT: mtfprwz f1, r31109; CHECK-BE-NEXT: mffprwz r3, f01110; CHECK-BE-NEXT: mtvsrwz v4, r31111; CHECK-BE-NEXT: xxperm v4, vs1, vs81112; CHECK-BE-NEXT: vmrghh v3, v4, v31113; CHECK-BE-NEXT: xxmrghw vs0, v3, v21114; CHECK-BE-NEXT: xxmrghd v2, vs0, vs41115; CHECK-BE-NEXT: blr1116entry:1117 %a = load <16 x double>, ptr %0, align 1281118 %1 = fptosi <16 x double> %a to <16 x i8>1119 ret <16 x i8> %11120}1121