595 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 i64 @test2elt(<2 x i64> %a) local_unnamed_addr #0 {13; CHECK-P8-LABEL: test2elt:14; CHECK-P8: # %bb.0: # %entry15; CHECK-P8-NEXT: xxswapd vs0, v216; CHECK-P8-NEXT: xscvuxdsp f1, v217; CHECK-P8-NEXT: xscvuxdsp f0, f018; CHECK-P8-NEXT: xscvdpspn vs1, f119; CHECK-P8-NEXT: xscvdpspn vs0, f020; CHECK-P8-NEXT: xxmrghw vs0, vs1, vs021; CHECK-P8-NEXT: xxswapd vs0, vs022; CHECK-P8-NEXT: mffprd r3, f023; CHECK-P8-NEXT: blr24;25; CHECK-P9-LABEL: test2elt:26; CHECK-P9: # %bb.0: # %entry27; CHECK-P9-NEXT: xxswapd vs0, v228; CHECK-P9-NEXT: xscvuxdsp f1, v229; CHECK-P9-NEXT: xscvuxdsp f0, f030; CHECK-P9-NEXT: xscvdpspn vs1, f131; CHECK-P9-NEXT: xscvdpspn vs0, f032; CHECK-P9-NEXT: xxmrghw vs0, vs1, vs033; CHECK-P9-NEXT: mfvsrld r3, vs034; CHECK-P9-NEXT: blr35;36; CHECK-BE-LABEL: test2elt:37; CHECK-BE: # %bb.0: # %entry38; CHECK-BE-NEXT: xscvuxdsp f0, v239; CHECK-BE-NEXT: xscvdpspn v3, f040; CHECK-BE-NEXT: xxswapd vs0, v241; CHECK-BE-NEXT: xscvuxdsp f0, f042; CHECK-BE-NEXT: xscvdpspn v2, f043; CHECK-BE-NEXT: vmrgow v2, v3, v244; CHECK-BE-NEXT: mfvsrd r3, v245; CHECK-BE-NEXT: blr46entry:47 %0 = uitofp <2 x i64> %a to <2 x float>48 %1 = bitcast <2 x float> %0 to i6449 ret i64 %150}51 52define <4 x float> @test4elt(ptr nocapture readonly) local_unnamed_addr #1 {53; CHECK-P8-LABEL: test4elt:54; CHECK-P8: # %bb.0: # %entry55; CHECK-P8-NEXT: li r4, 1656; CHECK-P8-NEXT: lxvd2x vs0, r3, r457; CHECK-P8-NEXT: xxswapd v2, vs058; CHECK-P8-NEXT: lxvd2x vs0, 0, r359; CHECK-P8-NEXT: xxswapd v3, vs060; CHECK-P8-NEXT: xvcvuxdsp vs0, v261; CHECK-P8-NEXT: xxsldwi v2, vs0, vs0, 362; CHECK-P8-NEXT: xvcvuxdsp vs0, v363; CHECK-P8-NEXT: xxsldwi v3, vs0, vs0, 364; CHECK-P8-NEXT: vpkudum v2, v2, v365; CHECK-P8-NEXT: blr66;67; CHECK-P9-LABEL: test4elt:68; CHECK-P9: # %bb.0: # %entry69; CHECK-P9-NEXT: lxv v3, 0(r3)70; CHECK-P9-NEXT: lxv v2, 16(r3)71; CHECK-P9-NEXT: xvcvuxdsp vs0, v372; CHECK-P9-NEXT: xxsldwi v3, vs0, vs0, 373; CHECK-P9-NEXT: xvcvuxdsp vs0, v274; CHECK-P9-NEXT: xxsldwi v2, vs0, vs0, 375; CHECK-P9-NEXT: vpkudum v2, v2, v376; CHECK-P9-NEXT: blr77;78; CHECK-BE-LABEL: test4elt:79; CHECK-BE: # %bb.0: # %entry80; CHECK-BE-NEXT: lxv v3, 16(r3)81; CHECK-BE-NEXT: lxv v2, 0(r3)82; CHECK-BE-NEXT: xvcvuxdsp vs0, v383; CHECK-BE-NEXT: xxsldwi v3, vs0, vs0, 384; CHECK-BE-NEXT: xvcvuxdsp vs0, v285; CHECK-BE-NEXT: xxsldwi v2, vs0, vs0, 386; CHECK-BE-NEXT: vpkudum v2, v2, v387; CHECK-BE-NEXT: blr88entry:89 %a = load <4 x i64>, ptr %0, align 3290 %1 = uitofp <4 x i64> %a to <4 x float>91 ret <4 x float> %192}93 94define void @test8elt(ptr noalias nocapture sret(<8 x float>) %agg.result, ptr nocapture readonly) local_unnamed_addr #2 {95; CHECK-P8-LABEL: test8elt:96; CHECK-P8: # %bb.0: # %entry97; CHECK-P8-NEXT: li r6, 4898; CHECK-P8-NEXT: li r5, 1699; CHECK-P8-NEXT: lxvd2x vs0, r4, r6100; CHECK-P8-NEXT: li r6, 32101; CHECK-P8-NEXT: lxvd2x vs1, r4, r6102; CHECK-P8-NEXT: xxswapd v2, vs0103; CHECK-P8-NEXT: lxvd2x vs0, r4, r5104; CHECK-P8-NEXT: xxswapd v3, vs1105; CHECK-P8-NEXT: lxvd2x vs1, 0, r4106; CHECK-P8-NEXT: xxswapd v4, vs0107; CHECK-P8-NEXT: xvcvuxdsp vs0, v3108; CHECK-P8-NEXT: xxswapd v5, vs1109; CHECK-P8-NEXT: xvcvuxdsp vs1, v2110; CHECK-P8-NEXT: xxsldwi v2, vs0, vs0, 3111; CHECK-P8-NEXT: xvcvuxdsp vs0, v4112; CHECK-P8-NEXT: xxsldwi v3, vs1, vs1, 3113; CHECK-P8-NEXT: vpkudum v2, v3, v2114; CHECK-P8-NEXT: xxsldwi v4, vs0, vs0, 3115; CHECK-P8-NEXT: xvcvuxdsp vs0, v5116; CHECK-P8-NEXT: xxsldwi v5, vs0, vs0, 3117; CHECK-P8-NEXT: xxswapd vs0, v2118; CHECK-P8-NEXT: stxvd2x vs0, r3, r5119; CHECK-P8-NEXT: vpkudum v3, v4, v5120; CHECK-P8-NEXT: xxswapd vs1, v3121; CHECK-P8-NEXT: stxvd2x vs1, 0, r3122; CHECK-P8-NEXT: blr123;124; CHECK-P9-LABEL: test8elt:125; CHECK-P9: # %bb.0: # %entry126; CHECK-P9-NEXT: lxv v5, 0(r4)127; CHECK-P9-NEXT: lxv v4, 16(r4)128; CHECK-P9-NEXT: lxv v3, 32(r4)129; CHECK-P9-NEXT: lxv v2, 48(r4)130; CHECK-P9-NEXT: xvcvuxdsp vs0, v5131; CHECK-P9-NEXT: xxsldwi v5, vs0, vs0, 3132; CHECK-P9-NEXT: xvcvuxdsp vs0, v4133; CHECK-P9-NEXT: xxsldwi v4, vs0, vs0, 3134; CHECK-P9-NEXT: xvcvuxdsp vs0, v3135; CHECK-P9-NEXT: vpkudum v3, v4, v5136; CHECK-P9-NEXT: stxv v3, 0(r3)137; CHECK-P9-NEXT: xxsldwi v4, vs0, vs0, 3138; CHECK-P9-NEXT: xvcvuxdsp vs0, v2139; CHECK-P9-NEXT: xxsldwi v2, vs0, vs0, 3140; CHECK-P9-NEXT: vpkudum v2, v2, v4141; CHECK-P9-NEXT: stxv v2, 16(r3)142; CHECK-P9-NEXT: blr143;144; CHECK-BE-LABEL: test8elt:145; CHECK-BE: # %bb.0: # %entry146; CHECK-BE-NEXT: lxv v5, 16(r4)147; CHECK-BE-NEXT: lxv v4, 0(r4)148; CHECK-BE-NEXT: lxv v3, 48(r4)149; CHECK-BE-NEXT: lxv v2, 32(r4)150; CHECK-BE-NEXT: xvcvuxdsp vs0, v5151; CHECK-BE-NEXT: xxsldwi v5, vs0, vs0, 3152; CHECK-BE-NEXT: xvcvuxdsp vs0, v4153; CHECK-BE-NEXT: xxsldwi v4, vs0, vs0, 3154; CHECK-BE-NEXT: xvcvuxdsp vs0, v3155; CHECK-BE-NEXT: vpkudum v3, v4, v5156; CHECK-BE-NEXT: stxv v3, 0(r3)157; CHECK-BE-NEXT: xxsldwi v4, vs0, vs0, 3158; CHECK-BE-NEXT: xvcvuxdsp vs0, v2159; CHECK-BE-NEXT: xxsldwi v2, vs0, vs0, 3160; CHECK-BE-NEXT: vpkudum v2, v2, v4161; CHECK-BE-NEXT: stxv v2, 16(r3)162; CHECK-BE-NEXT: blr163entry:164 %a = load <8 x i64>, ptr %0, align 64165 %1 = uitofp <8 x i64> %a to <8 x float>166 store <8 x float> %1, ptr %agg.result, align 32167 ret void168}169 170define void @test16elt(ptr noalias nocapture sret(<16 x float>) %agg.result, ptr nocapture readonly) local_unnamed_addr #2 {171; CHECK-P8-LABEL: test16elt:172; CHECK-P8: # %bb.0: # %entry173; CHECK-P8-NEXT: li r7, 96174; CHECK-P8-NEXT: li r6, 112175; CHECK-P8-NEXT: li r5, 16176; CHECK-P8-NEXT: lxvd2x vs1, r4, r7177; CHECK-P8-NEXT: li r7, 64178; CHECK-P8-NEXT: lxvd2x vs0, r4, r6179; CHECK-P8-NEXT: li r6, 80180; CHECK-P8-NEXT: lxvd2x vs3, r4, r7181; CHECK-P8-NEXT: li r7, 32182; CHECK-P8-NEXT: lxvd2x vs2, r4, r6183; CHECK-P8-NEXT: li r6, 48184; CHECK-P8-NEXT: lxvd2x vs5, r4, r7185; CHECK-P8-NEXT: lxvd2x vs4, r4, r6186; CHECK-P8-NEXT: xxswapd v4, vs0187; CHECK-P8-NEXT: lxvd2x vs0, r4, r5188; CHECK-P8-NEXT: xxswapd v5, vs1189; CHECK-P8-NEXT: lxvd2x vs1, 0, r4190; CHECK-P8-NEXT: xxswapd v0, vs2191; CHECK-P8-NEXT: xxswapd v1, vs3192; CHECK-P8-NEXT: xvcvuxdsp vs2, v1193; CHECK-P8-NEXT: xvcvuxdsp vs3, v0194; CHECK-P8-NEXT: xxswapd v3, vs5195; CHECK-P8-NEXT: xxswapd v2, vs4196; CHECK-P8-NEXT: xvcvuxdsp vs4, v5197; CHECK-P8-NEXT: xvcvuxdsp vs5, v4198; CHECK-P8-NEXT: xxswapd v6, vs0199; CHECK-P8-NEXT: xxswapd v7, vs1200; CHECK-P8-NEXT: xvcvuxdsp vs0, v3201; CHECK-P8-NEXT: xvcvuxdsp vs1, v2202; CHECK-P8-NEXT: xxsldwi v4, vs2, vs2, 3203; CHECK-P8-NEXT: xxsldwi v5, vs3, vs3, 3204; CHECK-P8-NEXT: xxsldwi v0, vs4, vs4, 3205; CHECK-P8-NEXT: xxsldwi v1, vs5, vs5, 3206; CHECK-P8-NEXT: xxsldwi v2, vs0, vs0, 3207; CHECK-P8-NEXT: xvcvuxdsp vs0, v6208; CHECK-P8-NEXT: xxsldwi v3, vs1, vs1, 3209; CHECK-P8-NEXT: vpkudum v2, v3, v2210; CHECK-P8-NEXT: vpkudum v3, v5, v4211; CHECK-P8-NEXT: vpkudum v4, v1, v0212; CHECK-P8-NEXT: xxswapd vs1, v3213; CHECK-P8-NEXT: xxswapd vs2, v2214; CHECK-P8-NEXT: stxvd2x vs1, r3, r7215; CHECK-P8-NEXT: stxvd2x vs2, r3, r5216; CHECK-P8-NEXT: xxsldwi v6, vs0, vs0, 3217; CHECK-P8-NEXT: xvcvuxdsp vs0, v7218; CHECK-P8-NEXT: xxsldwi v7, vs0, vs0, 3219; CHECK-P8-NEXT: xxswapd vs0, v4220; CHECK-P8-NEXT: stxvd2x vs0, r3, r6221; CHECK-P8-NEXT: vpkudum v5, v6, v7222; CHECK-P8-NEXT: xxswapd vs3, v5223; CHECK-P8-NEXT: stxvd2x vs3, 0, r3224; CHECK-P8-NEXT: blr225;226; CHECK-P9-LABEL: test16elt:227; CHECK-P9: # %bb.0: # %entry228; CHECK-P9-NEXT: lxv v7, 0(r4)229; CHECK-P9-NEXT: lxv v6, 16(r4)230; CHECK-P9-NEXT: lxv v1, 32(r4)231; CHECK-P9-NEXT: lxv v0, 48(r4)232; CHECK-P9-NEXT: xvcvuxdsp vs0, v7233; CHECK-P9-NEXT: lxv v5, 64(r4)234; CHECK-P9-NEXT: lxv v4, 80(r4)235; CHECK-P9-NEXT: lxv v3, 96(r4)236; CHECK-P9-NEXT: lxv v2, 112(r4)237; CHECK-P9-NEXT: xxsldwi v7, vs0, vs0, 3238; CHECK-P9-NEXT: xvcvuxdsp vs0, v6239; CHECK-P9-NEXT: xxsldwi v6, vs0, vs0, 3240; CHECK-P9-NEXT: xvcvuxdsp vs0, v1241; CHECK-P9-NEXT: vpkudum v1, v6, v7242; CHECK-P9-NEXT: stxv v1, 0(r3)243; CHECK-P9-NEXT: xxsldwi v6, vs0, vs0, 3244; CHECK-P9-NEXT: xvcvuxdsp vs0, v0245; CHECK-P9-NEXT: xxsldwi v0, vs0, vs0, 3246; CHECK-P9-NEXT: xvcvuxdsp vs0, v5247; CHECK-P9-NEXT: vpkudum v0, v0, v6248; CHECK-P9-NEXT: stxv v0, 16(r3)249; CHECK-P9-NEXT: xxsldwi v5, vs0, vs0, 3250; CHECK-P9-NEXT: xvcvuxdsp vs0, v4251; CHECK-P9-NEXT: xxsldwi v4, vs0, vs0, 3252; CHECK-P9-NEXT: xvcvuxdsp vs0, v3253; CHECK-P9-NEXT: vpkudum v4, v4, v5254; CHECK-P9-NEXT: stxv v4, 32(r3)255; CHECK-P9-NEXT: xxsldwi v3, vs0, vs0, 3256; CHECK-P9-NEXT: xvcvuxdsp vs0, v2257; CHECK-P9-NEXT: xxsldwi v2, vs0, vs0, 3258; CHECK-P9-NEXT: vpkudum v2, v2, v3259; CHECK-P9-NEXT: stxv v2, 48(r3)260; CHECK-P9-NEXT: blr261;262; CHECK-BE-LABEL: test16elt:263; CHECK-BE: # %bb.0: # %entry264; CHECK-BE-NEXT: lxv v7, 16(r4)265; CHECK-BE-NEXT: lxv v6, 0(r4)266; CHECK-BE-NEXT: lxv v1, 48(r4)267; CHECK-BE-NEXT: lxv v0, 32(r4)268; CHECK-BE-NEXT: xvcvuxdsp vs0, v7269; CHECK-BE-NEXT: lxv v5, 80(r4)270; CHECK-BE-NEXT: lxv v4, 64(r4)271; CHECK-BE-NEXT: lxv v3, 112(r4)272; CHECK-BE-NEXT: lxv v2, 96(r4)273; CHECK-BE-NEXT: xxsldwi v7, vs0, vs0, 3274; CHECK-BE-NEXT: xvcvuxdsp vs0, v6275; CHECK-BE-NEXT: xxsldwi v6, vs0, vs0, 3276; CHECK-BE-NEXT: xvcvuxdsp vs0, v1277; CHECK-BE-NEXT: vpkudum v1, v6, v7278; CHECK-BE-NEXT: stxv v1, 0(r3)279; CHECK-BE-NEXT: xxsldwi v6, vs0, vs0, 3280; CHECK-BE-NEXT: xvcvuxdsp vs0, v0281; CHECK-BE-NEXT: xxsldwi v0, vs0, vs0, 3282; CHECK-BE-NEXT: xvcvuxdsp vs0, v5283; CHECK-BE-NEXT: vpkudum v0, v0, v6284; CHECK-BE-NEXT: stxv v0, 16(r3)285; CHECK-BE-NEXT: xxsldwi v5, vs0, vs0, 3286; CHECK-BE-NEXT: xvcvuxdsp vs0, v4287; CHECK-BE-NEXT: xxsldwi v4, vs0, vs0, 3288; CHECK-BE-NEXT: xvcvuxdsp vs0, v3289; CHECK-BE-NEXT: vpkudum v4, v4, v5290; CHECK-BE-NEXT: stxv v4, 32(r3)291; CHECK-BE-NEXT: xxsldwi v3, vs0, vs0, 3292; CHECK-BE-NEXT: xvcvuxdsp vs0, v2293; CHECK-BE-NEXT: xxsldwi v2, vs0, vs0, 3294; CHECK-BE-NEXT: vpkudum v2, v2, v3295; CHECK-BE-NEXT: stxv v2, 48(r3)296; CHECK-BE-NEXT: blr297entry:298 %a = load <16 x i64>, ptr %0, align 128299 %1 = uitofp <16 x i64> %a to <16 x float>300 store <16 x float> %1, ptr %agg.result, align 64301 ret void302}303 304define i64 @test2elt_signed(<2 x i64> %a) local_unnamed_addr #0 {305; CHECK-P8-LABEL: test2elt_signed:306; CHECK-P8: # %bb.0: # %entry307; CHECK-P8-NEXT: xxswapd vs0, v2308; CHECK-P8-NEXT: xscvsxdsp f1, v2309; CHECK-P8-NEXT: xscvsxdsp f0, f0310; CHECK-P8-NEXT: xscvdpspn vs1, f1311; CHECK-P8-NEXT: xscvdpspn vs0, f0312; CHECK-P8-NEXT: xxmrghw vs0, vs1, vs0313; CHECK-P8-NEXT: xxswapd vs0, vs0314; CHECK-P8-NEXT: mffprd r3, f0315; CHECK-P8-NEXT: blr316;317; CHECK-P9-LABEL: test2elt_signed:318; CHECK-P9: # %bb.0: # %entry319; CHECK-P9-NEXT: xxswapd vs0, v2320; CHECK-P9-NEXT: xscvsxdsp f1, v2321; CHECK-P9-NEXT: xscvsxdsp f0, f0322; CHECK-P9-NEXT: xscvdpspn vs1, f1323; CHECK-P9-NEXT: xscvdpspn vs0, f0324; CHECK-P9-NEXT: xxmrghw vs0, vs1, vs0325; CHECK-P9-NEXT: mfvsrld r3, vs0326; CHECK-P9-NEXT: blr327;328; CHECK-BE-LABEL: test2elt_signed:329; CHECK-BE: # %bb.0: # %entry330; CHECK-BE-NEXT: xscvsxdsp f0, v2331; CHECK-BE-NEXT: xscvdpspn v3, f0332; CHECK-BE-NEXT: xxswapd vs0, v2333; CHECK-BE-NEXT: xscvsxdsp f0, f0334; CHECK-BE-NEXT: xscvdpspn v2, f0335; CHECK-BE-NEXT: vmrgow v2, v3, v2336; CHECK-BE-NEXT: mfvsrd r3, v2337; CHECK-BE-NEXT: blr338entry:339 %0 = sitofp <2 x i64> %a to <2 x float>340 %1 = bitcast <2 x float> %0 to i64341 ret i64 %1342}343 344define <4 x float> @test4elt_signed(ptr nocapture readonly) local_unnamed_addr #1 {345; CHECK-P8-LABEL: test4elt_signed:346; CHECK-P8: # %bb.0: # %entry347; CHECK-P8-NEXT: li r4, 16348; CHECK-P8-NEXT: lxvd2x vs0, r3, r4349; CHECK-P8-NEXT: xxswapd v2, vs0350; CHECK-P8-NEXT: lxvd2x vs0, 0, r3351; CHECK-P8-NEXT: xxswapd v3, vs0352; CHECK-P8-NEXT: xvcvsxdsp vs0, v2353; CHECK-P8-NEXT: xxsldwi v2, vs0, vs0, 3354; CHECK-P8-NEXT: xvcvsxdsp vs0, v3355; CHECK-P8-NEXT: xxsldwi v3, vs0, vs0, 3356; CHECK-P8-NEXT: vpkudum v2, v2, v3357; CHECK-P8-NEXT: blr358;359; CHECK-P9-LABEL: test4elt_signed:360; CHECK-P9: # %bb.0: # %entry361; CHECK-P9-NEXT: lxv v3, 0(r3)362; CHECK-P9-NEXT: lxv v2, 16(r3)363; CHECK-P9-NEXT: xvcvsxdsp vs0, v3364; CHECK-P9-NEXT: xxsldwi v3, vs0, vs0, 3365; CHECK-P9-NEXT: xvcvsxdsp vs0, v2366; CHECK-P9-NEXT: xxsldwi v2, vs0, vs0, 3367; CHECK-P9-NEXT: vpkudum v2, v2, v3368; CHECK-P9-NEXT: blr369;370; CHECK-BE-LABEL: test4elt_signed:371; CHECK-BE: # %bb.0: # %entry372; CHECK-BE-NEXT: lxv v3, 16(r3)373; CHECK-BE-NEXT: lxv v2, 0(r3)374; CHECK-BE-NEXT: xvcvsxdsp vs0, v3375; CHECK-BE-NEXT: xxsldwi v3, vs0, vs0, 3376; CHECK-BE-NEXT: xvcvsxdsp vs0, v2377; CHECK-BE-NEXT: xxsldwi v2, vs0, vs0, 3378; CHECK-BE-NEXT: vpkudum v2, v2, v3379; CHECK-BE-NEXT: blr380entry:381 %a = load <4 x i64>, ptr %0, align 32382 %1 = sitofp <4 x i64> %a to <4 x float>383 ret <4 x float> %1384}385 386define void @test8elt_signed(ptr noalias nocapture sret(<8 x float>) %agg.result, ptr nocapture readonly) local_unnamed_addr #2 {387; CHECK-P8-LABEL: test8elt_signed:388; CHECK-P8: # %bb.0: # %entry389; CHECK-P8-NEXT: li r6, 48390; CHECK-P8-NEXT: li r5, 16391; CHECK-P8-NEXT: lxvd2x vs0, r4, r6392; CHECK-P8-NEXT: li r6, 32393; CHECK-P8-NEXT: lxvd2x vs1, r4, r6394; CHECK-P8-NEXT: xxswapd v2, vs0395; CHECK-P8-NEXT: lxvd2x vs0, r4, r5396; CHECK-P8-NEXT: xxswapd v3, vs1397; CHECK-P8-NEXT: lxvd2x vs1, 0, r4398; CHECK-P8-NEXT: xxswapd v4, vs0399; CHECK-P8-NEXT: xvcvsxdsp vs0, v3400; CHECK-P8-NEXT: xxswapd v5, vs1401; CHECK-P8-NEXT: xvcvsxdsp vs1, v2402; CHECK-P8-NEXT: xxsldwi v2, vs0, vs0, 3403; CHECK-P8-NEXT: xvcvsxdsp vs0, v4404; CHECK-P8-NEXT: xxsldwi v3, vs1, vs1, 3405; CHECK-P8-NEXT: vpkudum v2, v3, v2406; CHECK-P8-NEXT: xxsldwi v4, vs0, vs0, 3407; CHECK-P8-NEXT: xvcvsxdsp vs0, v5408; CHECK-P8-NEXT: xxsldwi v5, vs0, vs0, 3409; CHECK-P8-NEXT: xxswapd vs0, v2410; CHECK-P8-NEXT: stxvd2x vs0, r3, r5411; CHECK-P8-NEXT: vpkudum v3, v4, v5412; CHECK-P8-NEXT: xxswapd vs1, v3413; CHECK-P8-NEXT: stxvd2x vs1, 0, r3414; CHECK-P8-NEXT: blr415;416; CHECK-P9-LABEL: test8elt_signed:417; CHECK-P9: # %bb.0: # %entry418; CHECK-P9-NEXT: lxv v5, 0(r4)419; CHECK-P9-NEXT: lxv v4, 16(r4)420; CHECK-P9-NEXT: lxv v3, 32(r4)421; CHECK-P9-NEXT: lxv v2, 48(r4)422; CHECK-P9-NEXT: xvcvsxdsp vs0, v5423; CHECK-P9-NEXT: xxsldwi v5, vs0, vs0, 3424; CHECK-P9-NEXT: xvcvsxdsp vs0, v4425; CHECK-P9-NEXT: xxsldwi v4, vs0, vs0, 3426; CHECK-P9-NEXT: xvcvsxdsp vs0, v3427; CHECK-P9-NEXT: vpkudum v3, v4, v5428; CHECK-P9-NEXT: stxv v3, 0(r3)429; CHECK-P9-NEXT: xxsldwi v4, vs0, vs0, 3430; CHECK-P9-NEXT: xvcvsxdsp vs0, v2431; CHECK-P9-NEXT: xxsldwi v2, vs0, vs0, 3432; CHECK-P9-NEXT: vpkudum v2, v2, v4433; CHECK-P9-NEXT: stxv v2, 16(r3)434; CHECK-P9-NEXT: blr435;436; CHECK-BE-LABEL: test8elt_signed:437; CHECK-BE: # %bb.0: # %entry438; CHECK-BE-NEXT: lxv v5, 16(r4)439; CHECK-BE-NEXT: lxv v4, 0(r4)440; CHECK-BE-NEXT: lxv v3, 48(r4)441; CHECK-BE-NEXT: lxv v2, 32(r4)442; CHECK-BE-NEXT: xvcvsxdsp vs0, v5443; CHECK-BE-NEXT: xxsldwi v5, vs0, vs0, 3444; CHECK-BE-NEXT: xvcvsxdsp vs0, v4445; CHECK-BE-NEXT: xxsldwi v4, vs0, vs0, 3446; CHECK-BE-NEXT: xvcvsxdsp vs0, v3447; CHECK-BE-NEXT: vpkudum v3, v4, v5448; CHECK-BE-NEXT: stxv v3, 0(r3)449; CHECK-BE-NEXT: xxsldwi v4, vs0, vs0, 3450; CHECK-BE-NEXT: xvcvsxdsp vs0, v2451; CHECK-BE-NEXT: xxsldwi v2, vs0, vs0, 3452; CHECK-BE-NEXT: vpkudum v2, v2, v4453; CHECK-BE-NEXT: stxv v2, 16(r3)454; CHECK-BE-NEXT: blr455entry:456 %a = load <8 x i64>, ptr %0, align 64457 %1 = sitofp <8 x i64> %a to <8 x float>458 store <8 x float> %1, ptr %agg.result, align 32459 ret void460}461 462define void @test16elt_signed(ptr noalias nocapture sret(<16 x float>) %agg.result, ptr nocapture readonly) local_unnamed_addr #2 {463; CHECK-P8-LABEL: test16elt_signed:464; CHECK-P8: # %bb.0: # %entry465; CHECK-P8-NEXT: li r7, 96466; CHECK-P8-NEXT: li r6, 112467; CHECK-P8-NEXT: li r5, 16468; CHECK-P8-NEXT: lxvd2x vs1, r4, r7469; CHECK-P8-NEXT: li r7, 64470; CHECK-P8-NEXT: lxvd2x vs0, r4, r6471; CHECK-P8-NEXT: li r6, 80472; CHECK-P8-NEXT: lxvd2x vs3, r4, r7473; CHECK-P8-NEXT: li r7, 32474; CHECK-P8-NEXT: lxvd2x vs2, r4, r6475; CHECK-P8-NEXT: li r6, 48476; CHECK-P8-NEXT: lxvd2x vs5, r4, r7477; CHECK-P8-NEXT: lxvd2x vs4, r4, r6478; CHECK-P8-NEXT: xxswapd v4, vs0479; CHECK-P8-NEXT: lxvd2x vs0, r4, r5480; CHECK-P8-NEXT: xxswapd v5, vs1481; CHECK-P8-NEXT: lxvd2x vs1, 0, r4482; CHECK-P8-NEXT: xxswapd v0, vs2483; CHECK-P8-NEXT: xxswapd v1, vs3484; CHECK-P8-NEXT: xvcvsxdsp vs2, v1485; CHECK-P8-NEXT: xvcvsxdsp vs3, v0486; CHECK-P8-NEXT: xxswapd v3, vs5487; CHECK-P8-NEXT: xxswapd v2, vs4488; CHECK-P8-NEXT: xvcvsxdsp vs4, v5489; CHECK-P8-NEXT: xvcvsxdsp vs5, v4490; CHECK-P8-NEXT: xxswapd v6, vs0491; CHECK-P8-NEXT: xxswapd v7, vs1492; CHECK-P8-NEXT: xvcvsxdsp vs0, v3493; CHECK-P8-NEXT: xvcvsxdsp vs1, v2494; CHECK-P8-NEXT: xxsldwi v4, vs2, vs2, 3495; CHECK-P8-NEXT: xxsldwi v5, vs3, vs3, 3496; CHECK-P8-NEXT: xxsldwi v0, vs4, vs4, 3497; CHECK-P8-NEXT: xxsldwi v1, vs5, vs5, 3498; CHECK-P8-NEXT: xxsldwi v2, vs0, vs0, 3499; CHECK-P8-NEXT: xvcvsxdsp vs0, v6500; CHECK-P8-NEXT: xxsldwi v3, vs1, vs1, 3501; CHECK-P8-NEXT: vpkudum v2, v3, v2502; CHECK-P8-NEXT: vpkudum v3, v5, v4503; CHECK-P8-NEXT: vpkudum v4, v1, v0504; CHECK-P8-NEXT: xxswapd vs1, v3505; CHECK-P8-NEXT: xxswapd vs2, v2506; CHECK-P8-NEXT: stxvd2x vs1, r3, r7507; CHECK-P8-NEXT: stxvd2x vs2, r3, r5508; CHECK-P8-NEXT: xxsldwi v6, vs0, vs0, 3509; CHECK-P8-NEXT: xvcvsxdsp vs0, v7510; CHECK-P8-NEXT: xxsldwi v7, vs0, vs0, 3511; CHECK-P8-NEXT: xxswapd vs0, v4512; CHECK-P8-NEXT: stxvd2x vs0, r3, r6513; CHECK-P8-NEXT: vpkudum v5, v6, v7514; CHECK-P8-NEXT: xxswapd vs3, v5515; CHECK-P8-NEXT: stxvd2x vs3, 0, r3516; CHECK-P8-NEXT: blr517;518; CHECK-P9-LABEL: test16elt_signed:519; CHECK-P9: # %bb.0: # %entry520; CHECK-P9-NEXT: lxv v7, 0(r4)521; CHECK-P9-NEXT: lxv v6, 16(r4)522; CHECK-P9-NEXT: lxv v1, 32(r4)523; CHECK-P9-NEXT: lxv v0, 48(r4)524; CHECK-P9-NEXT: xvcvsxdsp vs0, v7525; CHECK-P9-NEXT: lxv v5, 64(r4)526; CHECK-P9-NEXT: lxv v4, 80(r4)527; CHECK-P9-NEXT: lxv v3, 96(r4)528; CHECK-P9-NEXT: lxv v2, 112(r4)529; CHECK-P9-NEXT: xxsldwi v7, vs0, vs0, 3530; CHECK-P9-NEXT: xvcvsxdsp vs0, v6531; CHECK-P9-NEXT: xxsldwi v6, vs0, vs0, 3532; CHECK-P9-NEXT: xvcvsxdsp vs0, v1533; CHECK-P9-NEXT: vpkudum v1, v6, v7534; CHECK-P9-NEXT: stxv v1, 0(r3)535; CHECK-P9-NEXT: xxsldwi v6, vs0, vs0, 3536; CHECK-P9-NEXT: xvcvsxdsp vs0, v0537; CHECK-P9-NEXT: xxsldwi v0, vs0, vs0, 3538; CHECK-P9-NEXT: xvcvsxdsp vs0, v5539; CHECK-P9-NEXT: vpkudum v0, v0, v6540; CHECK-P9-NEXT: stxv v0, 16(r3)541; CHECK-P9-NEXT: xxsldwi v5, vs0, vs0, 3542; CHECK-P9-NEXT: xvcvsxdsp vs0, v4543; CHECK-P9-NEXT: xxsldwi v4, vs0, vs0, 3544; CHECK-P9-NEXT: xvcvsxdsp vs0, v3545; CHECK-P9-NEXT: vpkudum v4, v4, v5546; CHECK-P9-NEXT: stxv v4, 32(r3)547; CHECK-P9-NEXT: xxsldwi v3, vs0, vs0, 3548; CHECK-P9-NEXT: xvcvsxdsp vs0, v2549; CHECK-P9-NEXT: xxsldwi v2, vs0, vs0, 3550; CHECK-P9-NEXT: vpkudum v2, v2, v3551; CHECK-P9-NEXT: stxv v2, 48(r3)552; CHECK-P9-NEXT: blr553;554; CHECK-BE-LABEL: test16elt_signed:555; CHECK-BE: # %bb.0: # %entry556; CHECK-BE-NEXT: lxv v7, 16(r4)557; CHECK-BE-NEXT: lxv v6, 0(r4)558; CHECK-BE-NEXT: lxv v1, 48(r4)559; CHECK-BE-NEXT: lxv v0, 32(r4)560; CHECK-BE-NEXT: xvcvsxdsp vs0, v7561; CHECK-BE-NEXT: lxv v5, 80(r4)562; CHECK-BE-NEXT: lxv v4, 64(r4)563; CHECK-BE-NEXT: lxv v3, 112(r4)564; CHECK-BE-NEXT: lxv v2, 96(r4)565; CHECK-BE-NEXT: xxsldwi v7, vs0, vs0, 3566; CHECK-BE-NEXT: xvcvsxdsp vs0, v6567; CHECK-BE-NEXT: xxsldwi v6, vs0, vs0, 3568; CHECK-BE-NEXT: xvcvsxdsp vs0, v1569; CHECK-BE-NEXT: vpkudum v1, v6, v7570; CHECK-BE-NEXT: stxv v1, 0(r3)571; CHECK-BE-NEXT: xxsldwi v6, vs0, vs0, 3572; CHECK-BE-NEXT: xvcvsxdsp vs0, v0573; CHECK-BE-NEXT: xxsldwi v0, vs0, vs0, 3574; CHECK-BE-NEXT: xvcvsxdsp vs0, v5575; CHECK-BE-NEXT: vpkudum v0, v0, v6576; CHECK-BE-NEXT: stxv v0, 16(r3)577; CHECK-BE-NEXT: xxsldwi v5, vs0, vs0, 3578; CHECK-BE-NEXT: xvcvsxdsp vs0, v4579; CHECK-BE-NEXT: xxsldwi v4, vs0, vs0, 3580; CHECK-BE-NEXT: xvcvsxdsp vs0, v3581; CHECK-BE-NEXT: vpkudum v4, v4, v5582; CHECK-BE-NEXT: stxv v4, 32(r3)583; CHECK-BE-NEXT: xxsldwi v3, vs0, vs0, 3584; CHECK-BE-NEXT: xvcvsxdsp vs0, v2585; CHECK-BE-NEXT: xxsldwi v2, vs0, vs0, 3586; CHECK-BE-NEXT: vpkudum v2, v2, v3587; CHECK-BE-NEXT: stxv v2, 48(r3)588; CHECK-BE-NEXT: blr589entry:590 %a = load <16 x i64>, ptr %0, align 128591 %1 = sitofp <16 x i64> %a to <16 x float>592 store <16 x float> %1, ptr %agg.result, align 64593 ret void594}595