875 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 <2 x double> @test2elt(i16 %a.coerce) local_unnamed_addr #0 {13; CHECK-P8-LABEL: test2elt:14; CHECK-P8: # %bb.0: # %entry15; CHECK-P8-NEXT: addis r4, r2, .LCPI0_0@toc@ha16; CHECK-P8-NEXT: mtvsrd v3, r317; CHECK-P8-NEXT: xxlxor v4, v4, v418; CHECK-P8-NEXT: addi r4, r4, .LCPI0_0@toc@l19; CHECK-P8-NEXT: lxvd2x vs0, 0, r420; CHECK-P8-NEXT: xxswapd v2, vs021; CHECK-P8-NEXT: vperm v2, v4, v3, v222; CHECK-P8-NEXT: xvcvuxddp v2, v223; CHECK-P8-NEXT: blr24;25; CHECK-P9-LABEL: test2elt:26; CHECK-P9: # %bb.0: # %entry27; CHECK-P9-NEXT: mtfprd f0, r328; CHECK-P9-NEXT: addis r3, r2, .LCPI0_0@toc@ha29; CHECK-P9-NEXT: xxlxor vs2, vs2, vs230; CHECK-P9-NEXT: addi r3, r3, .LCPI0_0@toc@l31; CHECK-P9-NEXT: lxv vs1, 0(r3)32; CHECK-P9-NEXT: xxperm vs0, vs2, vs133; CHECK-P9-NEXT: xvcvuxddp v2, vs034; CHECK-P9-NEXT: blr35;36; CHECK-BE-LABEL: test2elt:37; CHECK-BE: # %bb.0: # %entry38; CHECK-BE-NEXT: mtfprwz f0, r339; CHECK-BE-NEXT: addis r3, r2, .LCPI0_0@toc@ha40; CHECK-BE-NEXT: xxlxor vs2, vs2, vs241; CHECK-BE-NEXT: addi r3, r3, .LCPI0_0@toc@l42; CHECK-BE-NEXT: lxv vs1, 0(r3)43; CHECK-BE-NEXT: xxperm vs0, vs2, vs144; CHECK-BE-NEXT: xvcvuxddp v2, vs045; CHECK-BE-NEXT: blr46entry:47 %0 = bitcast i16 %a.coerce to <2 x i8>48 %1 = uitofp <2 x i8> %0 to <2 x double>49 ret <2 x double> %150}51 52define void @test4elt(ptr noalias nocapture sret(<4 x double>) %agg.result, i32 %a.coerce) local_unnamed_addr #1 {53; CHECK-P8-LABEL: test4elt:54; CHECK-P8: # %bb.0: # %entry55; CHECK-P8-NEXT: addis r5, r2, .LCPI1_0@toc@ha56; CHECK-P8-NEXT: mtvsrwz v4, r457; CHECK-P8-NEXT: xxlxor v5, v5, v558; CHECK-P8-NEXT: li r4, 1659; CHECK-P8-NEXT: addi r5, r5, .LCPI1_0@toc@l60; CHECK-P8-NEXT: lxvd2x vs0, 0, r561; CHECK-P8-NEXT: addis r5, r2, .LCPI1_1@toc@ha62; CHECK-P8-NEXT: addi r5, r5, .LCPI1_1@toc@l63; CHECK-P8-NEXT: lxvd2x vs1, 0, r564; CHECK-P8-NEXT: xxswapd v2, vs065; CHECK-P8-NEXT: vperm v2, v5, v4, v266; CHECK-P8-NEXT: xvcvuxddp vs0, v267; CHECK-P8-NEXT: xxswapd v3, vs168; CHECK-P8-NEXT: vperm v3, v5, v4, v369; CHECK-P8-NEXT: xvcvuxddp vs1, v370; CHECK-P8-NEXT: xxswapd vs0, vs071; CHECK-P8-NEXT: stxvd2x vs0, 0, r372; CHECK-P8-NEXT: xxswapd vs1, vs173; CHECK-P8-NEXT: stxvd2x vs1, r3, r474; CHECK-P8-NEXT: blr75;76; CHECK-P9-LABEL: test4elt:77; CHECK-P9: # %bb.0: # %entry78; CHECK-P9-NEXT: mtvsrwz v2, r479; CHECK-P9-NEXT: addis r4, r2, .LCPI1_0@toc@ha80; CHECK-P9-NEXT: xxlxor v4, v4, v481; CHECK-P9-NEXT: addi r4, r4, .LCPI1_0@toc@l82; CHECK-P9-NEXT: lxv v3, 0(r4)83; CHECK-P9-NEXT: addis r4, r2, .LCPI1_1@toc@ha84; CHECK-P9-NEXT: addi r4, r4, .LCPI1_1@toc@l85; CHECK-P9-NEXT: vperm v3, v4, v2, v386; CHECK-P9-NEXT: xvcvuxddp vs0, v387; CHECK-P9-NEXT: lxv v3, 0(r4)88; CHECK-P9-NEXT: vperm v2, v4, v2, v389; CHECK-P9-NEXT: stxv vs0, 0(r3)90; CHECK-P9-NEXT: xvcvuxddp vs1, v291; CHECK-P9-NEXT: stxv vs1, 16(r3)92; CHECK-P9-NEXT: blr93;94; CHECK-BE-LABEL: test4elt:95; CHECK-BE: # %bb.0: # %entry96; CHECK-BE-NEXT: mtvsrwz v2, r497; CHECK-BE-NEXT: addis r4, r2, .LCPI1_0@toc@ha98; CHECK-BE-NEXT: xxlxor v4, v4, v499; CHECK-BE-NEXT: addi r4, r4, .LCPI1_0@toc@l100; CHECK-BE-NEXT: lxv v3, 0(r4)101; CHECK-BE-NEXT: addis r4, r2, .LCPI1_1@toc@ha102; CHECK-BE-NEXT: addi r4, r4, .LCPI1_1@toc@l103; CHECK-BE-NEXT: vperm v3, v4, v2, v3104; CHECK-BE-NEXT: xvcvuxddp vs0, v3105; CHECK-BE-NEXT: lxv v3, 0(r4)106; CHECK-BE-NEXT: vperm v2, v4, v2, v3107; CHECK-BE-NEXT: stxv vs0, 0(r3)108; CHECK-BE-NEXT: xvcvuxddp vs1, v2109; CHECK-BE-NEXT: stxv vs1, 16(r3)110; CHECK-BE-NEXT: blr111entry:112 %0 = bitcast i32 %a.coerce to <4 x i8>113 %1 = uitofp <4 x i8> %0 to <4 x double>114 store <4 x double> %1, ptr %agg.result, align 32115 ret void116}117 118define void @test8elt(ptr noalias nocapture sret(<8 x double>) %agg.result, i64 %a.coerce) local_unnamed_addr #1 {119; CHECK-P8-LABEL: test8elt:120; CHECK-P8: # %bb.0: # %entry121; CHECK-P8-NEXT: addis r5, r2, .LCPI2_0@toc@ha122; CHECK-P8-NEXT: mtvsrd v0, r4123; CHECK-P8-NEXT: xxlxor v1, v1, v1124; CHECK-P8-NEXT: li r4, 48125; CHECK-P8-NEXT: addi r5, r5, .LCPI2_0@toc@l126; CHECK-P8-NEXT: lxvd2x vs0, 0, r5127; CHECK-P8-NEXT: addis r5, r2, .LCPI2_1@toc@ha128; CHECK-P8-NEXT: addi r5, r5, .LCPI2_1@toc@l129; CHECK-P8-NEXT: lxvd2x vs1, 0, r5130; CHECK-P8-NEXT: addis r5, r2, .LCPI2_3@toc@ha131; CHECK-P8-NEXT: addi r5, r5, .LCPI2_3@toc@l132; CHECK-P8-NEXT: lxvd2x vs2, 0, r5133; CHECK-P8-NEXT: addis r5, r2, .LCPI2_2@toc@ha134; CHECK-P8-NEXT: addi r5, r5, .LCPI2_2@toc@l135; CHECK-P8-NEXT: xxswapd v3, vs0136; CHECK-P8-NEXT: vperm v3, v1, v0, v3137; CHECK-P8-NEXT: xvcvuxddp vs0, v3138; CHECK-P8-NEXT: xxswapd v4, vs1139; CHECK-P8-NEXT: vperm v4, v1, v0, v4140; CHECK-P8-NEXT: xvcvuxddp vs1, v4141; CHECK-P8-NEXT: xxswapd v2, vs2142; CHECK-P8-NEXT: lxvd2x vs2, 0, r5143; CHECK-P8-NEXT: vperm v2, v1, v0, v2144; CHECK-P8-NEXT: xxswapd vs0, vs0145; CHECK-P8-NEXT: stxvd2x vs0, 0, r3146; CHECK-P8-NEXT: xxswapd v5, vs2147; CHECK-P8-NEXT: xvcvuxddp vs2, v2148; CHECK-P8-NEXT: xxswapd vs1, vs1149; CHECK-P8-NEXT: vperm v5, v1, v0, v5150; CHECK-P8-NEXT: xvcvuxddp vs3, v5151; CHECK-P8-NEXT: xxswapd vs2, vs2152; CHECK-P8-NEXT: stxvd2x vs2, r3, r4153; CHECK-P8-NEXT: li r4, 32154; CHECK-P8-NEXT: xxswapd vs3, vs3155; CHECK-P8-NEXT: stxvd2x vs3, r3, r4156; CHECK-P8-NEXT: li r4, 16157; CHECK-P8-NEXT: stxvd2x vs1, r3, r4158; CHECK-P8-NEXT: blr159;160; CHECK-P9-LABEL: test8elt:161; CHECK-P9: # %bb.0: # %entry162; CHECK-P9-NEXT: mtvsrd v2, r4163; CHECK-P9-NEXT: addis r4, r2, .LCPI2_0@toc@ha164; CHECK-P9-NEXT: xxlxor v4, v4, v4165; CHECK-P9-NEXT: addi r4, r4, .LCPI2_0@toc@l166; CHECK-P9-NEXT: lxv v3, 0(r4)167; CHECK-P9-NEXT: addis r4, r2, .LCPI2_1@toc@ha168; CHECK-P9-NEXT: addi r4, r4, .LCPI2_1@toc@l169; CHECK-P9-NEXT: vperm v3, v4, v2, v3170; CHECK-P9-NEXT: xvcvuxddp vs0, v3171; CHECK-P9-NEXT: lxv v3, 0(r4)172; CHECK-P9-NEXT: addis r4, r2, .LCPI2_2@toc@ha173; CHECK-P9-NEXT: addi r4, r4, .LCPI2_2@toc@l174; CHECK-P9-NEXT: vperm v3, v4, v2, v3175; CHECK-P9-NEXT: stxv vs0, 0(r3)176; CHECK-P9-NEXT: xvcvuxddp vs1, v3177; CHECK-P9-NEXT: lxv v3, 0(r4)178; CHECK-P9-NEXT: addis r4, r2, .LCPI2_3@toc@ha179; CHECK-P9-NEXT: addi r4, r4, .LCPI2_3@toc@l180; CHECK-P9-NEXT: vperm v3, v4, v2, v3181; CHECK-P9-NEXT: stxv vs1, 16(r3)182; CHECK-P9-NEXT: xvcvuxddp vs2, v3183; CHECK-P9-NEXT: lxv v3, 0(r4)184; CHECK-P9-NEXT: vperm v2, v4, v2, v3185; CHECK-P9-NEXT: stxv vs2, 32(r3)186; CHECK-P9-NEXT: xvcvuxddp vs3, v2187; CHECK-P9-NEXT: stxv vs3, 48(r3)188; CHECK-P9-NEXT: blr189;190; CHECK-BE-LABEL: test8elt:191; CHECK-BE: # %bb.0: # %entry192; CHECK-BE-NEXT: mtvsrd v2, r4193; CHECK-BE-NEXT: addis r4, r2, .LCPI2_0@toc@ha194; CHECK-BE-NEXT: xxlxor v4, v4, v4195; CHECK-BE-NEXT: addi r4, r4, .LCPI2_0@toc@l196; CHECK-BE-NEXT: lxv v3, 0(r4)197; CHECK-BE-NEXT: addis r4, r2, .LCPI2_1@toc@ha198; CHECK-BE-NEXT: addi r4, r4, .LCPI2_1@toc@l199; CHECK-BE-NEXT: vperm v3, v4, v2, v3200; CHECK-BE-NEXT: xvcvuxddp vs0, v3201; CHECK-BE-NEXT: lxv v3, 0(r4)202; CHECK-BE-NEXT: addis r4, r2, .LCPI2_2@toc@ha203; CHECK-BE-NEXT: addi r4, r4, .LCPI2_2@toc@l204; CHECK-BE-NEXT: vperm v3, v4, v2, v3205; CHECK-BE-NEXT: stxv vs0, 0(r3)206; CHECK-BE-NEXT: xvcvuxddp vs1, v3207; CHECK-BE-NEXT: lxv v3, 0(r4)208; CHECK-BE-NEXT: addis r4, r2, .LCPI2_3@toc@ha209; CHECK-BE-NEXT: addi r4, r4, .LCPI2_3@toc@l210; CHECK-BE-NEXT: vperm v3, v4, v2, v3211; CHECK-BE-NEXT: stxv vs1, 16(r3)212; CHECK-BE-NEXT: xvcvuxddp vs2, v3213; CHECK-BE-NEXT: lxv v3, 0(r4)214; CHECK-BE-NEXT: vperm v2, v4, v2, v3215; CHECK-BE-NEXT: stxv vs2, 32(r3)216; CHECK-BE-NEXT: xvcvuxddp vs3, v2217; CHECK-BE-NEXT: stxv vs3, 48(r3)218; CHECK-BE-NEXT: blr219entry:220 %0 = bitcast i64 %a.coerce to <8 x i8>221 %1 = uitofp <8 x i8> %0 to <8 x double>222 store <8 x double> %1, ptr %agg.result, align 64223 ret void224}225 226define void @test16elt(ptr noalias nocapture sret(<16 x double>) %agg.result, <16 x i8> %a) local_unnamed_addr #2 {227; CHECK-P8-LABEL: test16elt:228; CHECK-P8: # %bb.0: # %entry229; CHECK-P8-NEXT: addis r4, r2, .LCPI3_0@toc@ha230; CHECK-P8-NEXT: xxlxor v0, v0, v0231; CHECK-P8-NEXT: addi r4, r4, .LCPI3_0@toc@l232; CHECK-P8-NEXT: lxvd2x vs0, 0, r4233; CHECK-P8-NEXT: addis r4, r2, .LCPI3_1@toc@ha234; CHECK-P8-NEXT: addi r4, r4, .LCPI3_1@toc@l235; CHECK-P8-NEXT: lxvd2x vs1, 0, r4236; CHECK-P8-NEXT: addis r4, r2, .LCPI3_3@toc@ha237; CHECK-P8-NEXT: addi r4, r4, .LCPI3_3@toc@l238; CHECK-P8-NEXT: lxvd2x vs2, 0, r4239; CHECK-P8-NEXT: addis r4, r2, .LCPI3_4@toc@ha240; CHECK-P8-NEXT: addi r4, r4, .LCPI3_4@toc@l241; CHECK-P8-NEXT: lxvd2x vs3, 0, r4242; CHECK-P8-NEXT: addis r4, r2, .LCPI3_6@toc@ha243; CHECK-P8-NEXT: addi r4, r4, .LCPI3_6@toc@l244; CHECK-P8-NEXT: lxvd2x vs4, 0, r4245; CHECK-P8-NEXT: addis r4, r2, .LCPI3_7@toc@ha246; CHECK-P8-NEXT: addi r4, r4, .LCPI3_7@toc@l247; CHECK-P8-NEXT: lxvd2x vs5, 0, r4248; CHECK-P8-NEXT: addis r4, r2, .LCPI3_5@toc@ha249; CHECK-P8-NEXT: addi r4, r4, .LCPI3_5@toc@l250; CHECK-P8-NEXT: xxswapd v7, vs0251; CHECK-P8-NEXT: vperm v7, v0, v2, v7252; CHECK-P8-NEXT: xvcvuxddp vs0, v7253; CHECK-P8-NEXT: xxswapd v8, vs1254; CHECK-P8-NEXT: vperm v8, v0, v2, v8255; CHECK-P8-NEXT: xvcvuxddp vs1, v8256; CHECK-P8-NEXT: xxswapd v1, vs2257; CHECK-P8-NEXT: vperm v1, v0, v2, v1258; CHECK-P8-NEXT: xxswapd vs0, vs0259; CHECK-P8-NEXT: stxvd2x vs0, 0, r3260; CHECK-P8-NEXT: xxswapd v6, vs3261; CHECK-P8-NEXT: vperm v6, v0, v2, v6262; CHECK-P8-NEXT: xvcvuxddp vs6, v6263; CHECK-P8-NEXT: xxswapd vs1, vs1264; CHECK-P8-NEXT: xxswapd v3, vs4265; CHECK-P8-NEXT: lxvd2x vs4, 0, r4266; CHECK-P8-NEXT: addis r4, r2, .LCPI3_2@toc@ha267; CHECK-P8-NEXT: addi r4, r4, .LCPI3_2@toc@l268; CHECK-P8-NEXT: lxvd2x vs2, 0, r4269; CHECK-P8-NEXT: li r4, 112270; CHECK-P8-NEXT: vperm v3, v0, v2, v3271; CHECK-P8-NEXT: xvcvuxddp vs3, v3272; CHECK-P8-NEXT: xxswapd v4, vs5273; CHECK-P8-NEXT: xvcvuxddp vs5, v1274; CHECK-P8-NEXT: vperm v4, v0, v2, v4275; CHECK-P8-NEXT: xxswapd v5, vs4276; CHECK-P8-NEXT: xvcvuxddp vs4, v4277; CHECK-P8-NEXT: vperm v5, v0, v2, v5278; CHECK-P8-NEXT: xxswapd vs3, vs3279; CHECK-P8-NEXT: xvcvuxddp vs7, v5280; CHECK-P8-NEXT: xxswapd v9, vs2281; CHECK-P8-NEXT: xxswapd vs4, vs4282; CHECK-P8-NEXT: vperm v2, v0, v2, v9283; CHECK-P8-NEXT: stxvd2x vs4, r3, r4284; CHECK-P8-NEXT: li r4, 96285; CHECK-P8-NEXT: xvcvuxddp vs2, v2286; CHECK-P8-NEXT: stxvd2x vs3, r3, r4287; CHECK-P8-NEXT: li r4, 80288; CHECK-P8-NEXT: xxswapd vs4, vs5289; CHECK-P8-NEXT: xxswapd vs7, vs7290; CHECK-P8-NEXT: xxswapd vs3, vs6291; CHECK-P8-NEXT: stxvd2x vs7, r3, r4292; CHECK-P8-NEXT: li r4, 64293; CHECK-P8-NEXT: stxvd2x vs3, r3, r4294; CHECK-P8-NEXT: li r4, 48295; CHECK-P8-NEXT: stxvd2x vs4, r3, r4296; CHECK-P8-NEXT: li r4, 32297; CHECK-P8-NEXT: xxswapd vs2, vs2298; CHECK-P8-NEXT: stxvd2x vs2, r3, r4299; CHECK-P8-NEXT: li r4, 16300; CHECK-P8-NEXT: stxvd2x vs1, r3, r4301; CHECK-P8-NEXT: blr302;303; CHECK-P9-LABEL: test16elt:304; CHECK-P9: # %bb.0: # %entry305; CHECK-P9-NEXT: addis r4, r2, .LCPI3_0@toc@ha306; CHECK-P9-NEXT: xxlxor v4, v4, v4307; CHECK-P9-NEXT: addi r4, r4, .LCPI3_0@toc@l308; CHECK-P9-NEXT: lxv v3, 0(r4)309; CHECK-P9-NEXT: addis r4, r2, .LCPI3_1@toc@ha310; CHECK-P9-NEXT: addi r4, r4, .LCPI3_1@toc@l311; CHECK-P9-NEXT: vperm v3, v4, v2, v3312; CHECK-P9-NEXT: xvcvuxddp vs0, v3313; CHECK-P9-NEXT: lxv v3, 0(r4)314; CHECK-P9-NEXT: addis r4, r2, .LCPI3_2@toc@ha315; CHECK-P9-NEXT: addi r4, r4, .LCPI3_2@toc@l316; CHECK-P9-NEXT: vperm v3, v4, v2, v3317; CHECK-P9-NEXT: stxv vs0, 0(r3)318; CHECK-P9-NEXT: xvcvuxddp vs1, v3319; CHECK-P9-NEXT: lxv v3, 0(r4)320; CHECK-P9-NEXT: addis r4, r2, .LCPI3_3@toc@ha321; CHECK-P9-NEXT: addi r4, r4, .LCPI3_3@toc@l322; CHECK-P9-NEXT: vperm v3, v4, v2, v3323; CHECK-P9-NEXT: stxv vs1, 16(r3)324; CHECK-P9-NEXT: xvcvuxddp vs2, v3325; CHECK-P9-NEXT: lxv v3, 0(r4)326; CHECK-P9-NEXT: addis r4, r2, .LCPI3_4@toc@ha327; CHECK-P9-NEXT: addi r4, r4, .LCPI3_4@toc@l328; CHECK-P9-NEXT: vperm v3, v4, v2, v3329; CHECK-P9-NEXT: stxv vs2, 32(r3)330; CHECK-P9-NEXT: xvcvuxddp vs3, v3331; CHECK-P9-NEXT: lxv v3, 0(r4)332; CHECK-P9-NEXT: addis r4, r2, .LCPI3_5@toc@ha333; CHECK-P9-NEXT: addi r4, r4, .LCPI3_5@toc@l334; CHECK-P9-NEXT: vperm v3, v4, v2, v3335; CHECK-P9-NEXT: stxv vs3, 48(r3)336; CHECK-P9-NEXT: xvcvuxddp vs4, v3337; CHECK-P9-NEXT: lxv v3, 0(r4)338; CHECK-P9-NEXT: addis r4, r2, .LCPI3_6@toc@ha339; CHECK-P9-NEXT: addi r4, r4, .LCPI3_6@toc@l340; CHECK-P9-NEXT: vperm v3, v4, v2, v3341; CHECK-P9-NEXT: stxv vs4, 64(r3)342; CHECK-P9-NEXT: xvcvuxddp vs5, v3343; CHECK-P9-NEXT: lxv v3, 0(r4)344; CHECK-P9-NEXT: addis r4, r2, .LCPI3_7@toc@ha345; CHECK-P9-NEXT: addi r4, r4, .LCPI3_7@toc@l346; CHECK-P9-NEXT: vperm v3, v4, v2, v3347; CHECK-P9-NEXT: stxv vs5, 80(r3)348; CHECK-P9-NEXT: xvcvuxddp vs6, v3349; CHECK-P9-NEXT: lxv v3, 0(r4)350; CHECK-P9-NEXT: vperm v2, v4, v2, v3351; CHECK-P9-NEXT: stxv vs6, 96(r3)352; CHECK-P9-NEXT: xvcvuxddp vs7, v2353; CHECK-P9-NEXT: stxv vs7, 112(r3)354; CHECK-P9-NEXT: blr355;356; CHECK-BE-LABEL: test16elt:357; CHECK-BE: # %bb.0: # %entry358; CHECK-BE-NEXT: addis r4, r2, .LCPI3_0@toc@ha359; CHECK-BE-NEXT: xxlxor v4, v4, v4360; CHECK-BE-NEXT: addi r4, r4, .LCPI3_0@toc@l361; CHECK-BE-NEXT: lxv v3, 0(r4)362; CHECK-BE-NEXT: addis r4, r2, .LCPI3_1@toc@ha363; CHECK-BE-NEXT: addi r4, r4, .LCPI3_1@toc@l364; CHECK-BE-NEXT: vperm v3, v4, v2, v3365; CHECK-BE-NEXT: xvcvuxddp vs0, v3366; CHECK-BE-NEXT: lxv v3, 0(r4)367; CHECK-BE-NEXT: addis r4, r2, .LCPI3_2@toc@ha368; CHECK-BE-NEXT: addi r4, r4, .LCPI3_2@toc@l369; CHECK-BE-NEXT: vperm v3, v4, v2, v3370; CHECK-BE-NEXT: stxv vs0, 0(r3)371; CHECK-BE-NEXT: xvcvuxddp vs1, v3372; CHECK-BE-NEXT: lxv v3, 0(r4)373; CHECK-BE-NEXT: addis r4, r2, .LCPI3_3@toc@ha374; CHECK-BE-NEXT: addi r4, r4, .LCPI3_3@toc@l375; CHECK-BE-NEXT: vperm v3, v4, v2, v3376; CHECK-BE-NEXT: stxv vs1, 16(r3)377; CHECK-BE-NEXT: xvcvuxddp vs2, v3378; CHECK-BE-NEXT: lxv v3, 0(r4)379; CHECK-BE-NEXT: addis r4, r2, .LCPI3_4@toc@ha380; CHECK-BE-NEXT: addi r4, r4, .LCPI3_4@toc@l381; CHECK-BE-NEXT: vperm v3, v4, v2, v3382; CHECK-BE-NEXT: stxv vs2, 32(r3)383; CHECK-BE-NEXT: xvcvuxddp vs3, v3384; CHECK-BE-NEXT: lxv v3, 0(r4)385; CHECK-BE-NEXT: addis r4, r2, .LCPI3_5@toc@ha386; CHECK-BE-NEXT: addi r4, r4, .LCPI3_5@toc@l387; CHECK-BE-NEXT: vperm v3, v4, v2, v3388; CHECK-BE-NEXT: stxv vs3, 48(r3)389; CHECK-BE-NEXT: xvcvuxddp vs4, v3390; CHECK-BE-NEXT: lxv v3, 0(r4)391; CHECK-BE-NEXT: addis r4, r2, .LCPI3_6@toc@ha392; CHECK-BE-NEXT: addi r4, r4, .LCPI3_6@toc@l393; CHECK-BE-NEXT: vperm v3, v4, v2, v3394; CHECK-BE-NEXT: stxv vs4, 64(r3)395; CHECK-BE-NEXT: xvcvuxddp vs5, v3396; CHECK-BE-NEXT: lxv v3, 0(r4)397; CHECK-BE-NEXT: addis r4, r2, .LCPI3_7@toc@ha398; CHECK-BE-NEXT: addi r4, r4, .LCPI3_7@toc@l399; CHECK-BE-NEXT: vperm v3, v4, v2, v3400; CHECK-BE-NEXT: stxv vs5, 80(r3)401; CHECK-BE-NEXT: xvcvuxddp vs6, v3402; CHECK-BE-NEXT: lxv v3, 0(r4)403; CHECK-BE-NEXT: vperm v2, v4, v2, v3404; CHECK-BE-NEXT: stxv vs6, 96(r3)405; CHECK-BE-NEXT: xvcvuxddp vs7, v2406; CHECK-BE-NEXT: stxv vs7, 112(r3)407; CHECK-BE-NEXT: blr408entry:409 %0 = uitofp <16 x i8> %a to <16 x double>410 store <16 x double> %0, ptr %agg.result, align 128411 ret void412}413 414define <2 x double> @test2elt_signed(i16 %a.coerce) local_unnamed_addr #0 {415; CHECK-P8-LABEL: test2elt_signed:416; CHECK-P8: # %bb.0: # %entry417; CHECK-P8-NEXT: addis r4, r2, .LCPI4_0@toc@ha418; CHECK-P8-NEXT: mtvsrd v3, r3419; CHECK-P8-NEXT: addis r3, r2, .LCPI4_1@toc@ha420; CHECK-P8-NEXT: addi r4, r4, .LCPI4_0@toc@l421; CHECK-P8-NEXT: addi r3, r3, .LCPI4_1@toc@l422; CHECK-P8-NEXT: lxvd2x vs0, 0, r4423; CHECK-P8-NEXT: xxswapd v2, vs0424; CHECK-P8-NEXT: vperm v2, v3, v3, v2425; CHECK-P8-NEXT: lxvd2x v3, 0, r3426; CHECK-P8-NEXT: vsld v2, v2, v3427; CHECK-P8-NEXT: vsrad v2, v2, v3428; CHECK-P8-NEXT: xvcvsxddp v2, v2429; CHECK-P8-NEXT: blr430;431; CHECK-P9-LABEL: test2elt_signed:432; CHECK-P9: # %bb.0: # %entry433; CHECK-P9-NEXT: mtvsrd v2, r3434; CHECK-P9-NEXT: addis r3, r2, .LCPI4_0@toc@ha435; CHECK-P9-NEXT: addi r3, r3, .LCPI4_0@toc@l436; CHECK-P9-NEXT: lxv vs0, 0(r3)437; CHECK-P9-NEXT: xxperm v2, v2, vs0438; CHECK-P9-NEXT: vextsb2d v2, v2439; CHECK-P9-NEXT: xvcvsxddp v2, v2440; CHECK-P9-NEXT: blr441;442; CHECK-BE-LABEL: test2elt_signed:443; CHECK-BE: # %bb.0: # %entry444; CHECK-BE-NEXT: mtvsrwz v2, r3445; CHECK-BE-NEXT: addis r3, r2, .LCPI4_0@toc@ha446; CHECK-BE-NEXT: addi r3, r3, .LCPI4_0@toc@l447; CHECK-BE-NEXT: lxv vs0, 0(r3)448; CHECK-BE-NEXT: xxperm v2, v2, vs0449; CHECK-BE-NEXT: vextsb2d v2, v2450; CHECK-BE-NEXT: xvcvsxddp v2, v2451; CHECK-BE-NEXT: blr452entry:453 %0 = bitcast i16 %a.coerce to <2 x i8>454 %1 = sitofp <2 x i8> %0 to <2 x double>455 ret <2 x double> %1456}457 458define void @test4elt_signed(ptr noalias nocapture sret(<4 x double>) %agg.result, i32 %a.coerce) local_unnamed_addr #1 {459; CHECK-P8-LABEL: test4elt_signed:460; CHECK-P8: # %bb.0: # %entry461; CHECK-P8-NEXT: addis r5, r2, .LCPI5_0@toc@ha462; CHECK-P8-NEXT: mtvsrwz v4, r4463; CHECK-P8-NEXT: addis r4, r2, .LCPI5_1@toc@ha464; CHECK-P8-NEXT: addi r5, r5, .LCPI5_0@toc@l465; CHECK-P8-NEXT: addi r4, r4, .LCPI5_1@toc@l466; CHECK-P8-NEXT: lxvd2x vs0, 0, r5467; CHECK-P8-NEXT: addis r5, r2, .LCPI5_2@toc@ha468; CHECK-P8-NEXT: addi r5, r5, .LCPI5_2@toc@l469; CHECK-P8-NEXT: lxvd2x vs1, 0, r5470; CHECK-P8-NEXT: xxswapd v2, vs0471; CHECK-P8-NEXT: vperm v2, v4, v4, v2472; CHECK-P8-NEXT: xxswapd v3, vs1473; CHECK-P8-NEXT: vperm v3, v4, v4, v3474; CHECK-P8-NEXT: lxvd2x v4, 0, r4475; CHECK-P8-NEXT: li r4, 16476; CHECK-P8-NEXT: vsld v2, v2, v4477; CHECK-P8-NEXT: vsrad v2, v2, v4478; CHECK-P8-NEXT: xvcvsxddp vs0, v2479; CHECK-P8-NEXT: vsld v2, v3, v4480; CHECK-P8-NEXT: vsrad v2, v2, v4481; CHECK-P8-NEXT: xvcvsxddp vs1, v2482; CHECK-P8-NEXT: xxswapd vs0, vs0483; CHECK-P8-NEXT: stxvd2x vs0, 0, r3484; CHECK-P8-NEXT: xxswapd vs1, vs1485; CHECK-P8-NEXT: stxvd2x vs1, r3, r4486; CHECK-P8-NEXT: blr487;488; CHECK-P9-LABEL: test4elt_signed:489; CHECK-P9: # %bb.0: # %entry490; CHECK-P9-NEXT: mtvsrwz v2, r4491; CHECK-P9-NEXT: addis r4, r2, .LCPI5_0@toc@ha492; CHECK-P9-NEXT: addi r4, r4, .LCPI5_0@toc@l493; CHECK-P9-NEXT: lxv v3, 0(r4)494; CHECK-P9-NEXT: addis r4, r2, .LCPI5_1@toc@ha495; CHECK-P9-NEXT: addi r4, r4, .LCPI5_1@toc@l496; CHECK-P9-NEXT: vperm v3, v2, v2, v3497; CHECK-P9-NEXT: vextsb2d v3, v3498; CHECK-P9-NEXT: xvcvsxddp vs0, v3499; CHECK-P9-NEXT: lxv v3, 0(r4)500; CHECK-P9-NEXT: vperm v2, v2, v2, v3501; CHECK-P9-NEXT: stxv vs0, 0(r3)502; CHECK-P9-NEXT: vextsb2d v2, v2503; CHECK-P9-NEXT: xvcvsxddp vs1, v2504; CHECK-P9-NEXT: stxv vs1, 16(r3)505; CHECK-P9-NEXT: blr506;507; CHECK-BE-LABEL: test4elt_signed:508; CHECK-BE: # %bb.0: # %entry509; CHECK-BE-NEXT: mtvsrwz v2, r4510; CHECK-BE-NEXT: addis r4, r2, .LCPI5_0@toc@ha511; CHECK-BE-NEXT: addi r4, r4, .LCPI5_0@toc@l512; CHECK-BE-NEXT: lxv v3, 0(r4)513; CHECK-BE-NEXT: addis r4, r2, .LCPI5_1@toc@ha514; CHECK-BE-NEXT: addi r4, r4, .LCPI5_1@toc@l515; CHECK-BE-NEXT: vperm v3, v2, v2, v3516; CHECK-BE-NEXT: vextsb2d v3, v3517; CHECK-BE-NEXT: xvcvsxddp vs0, v3518; CHECK-BE-NEXT: lxv v3, 0(r4)519; CHECK-BE-NEXT: vperm v2, v2, v2, v3520; CHECK-BE-NEXT: stxv vs0, 0(r3)521; CHECK-BE-NEXT: vextsb2d v2, v2522; CHECK-BE-NEXT: xvcvsxddp vs1, v2523; CHECK-BE-NEXT: stxv vs1, 16(r3)524; CHECK-BE-NEXT: blr525entry:526 %0 = bitcast i32 %a.coerce to <4 x i8>527 %1 = sitofp <4 x i8> %0 to <4 x double>528 store <4 x double> %1, ptr %agg.result, align 32529 ret void530}531 532define void @test8elt_signed(ptr noalias nocapture sret(<8 x double>) %agg.result, i64 %a.coerce) local_unnamed_addr #1 {533; CHECK-P8-LABEL: test8elt_signed:534; CHECK-P8: # %bb.0: # %entry535; CHECK-P8-NEXT: addis r5, r2, .LCPI6_0@toc@ha536; CHECK-P8-NEXT: mtvsrd v0, r4537; CHECK-P8-NEXT: addis r4, r2, .LCPI6_1@toc@ha538; CHECK-P8-NEXT: addi r5, r5, .LCPI6_0@toc@l539; CHECK-P8-NEXT: addi r4, r4, .LCPI6_1@toc@l540; CHECK-P8-NEXT: lxvd2x vs0, 0, r5541; CHECK-P8-NEXT: addis r5, r2, .LCPI6_2@toc@ha542; CHECK-P8-NEXT: addi r5, r5, .LCPI6_2@toc@l543; CHECK-P8-NEXT: lxvd2x vs1, 0, r5544; CHECK-P8-NEXT: addis r5, r2, .LCPI6_4@toc@ha545; CHECK-P8-NEXT: addi r5, r5, .LCPI6_4@toc@l546; CHECK-P8-NEXT: lxvd2x vs2, 0, r5547; CHECK-P8-NEXT: addis r5, r2, .LCPI6_3@toc@ha548; CHECK-P8-NEXT: addi r5, r5, .LCPI6_3@toc@l549; CHECK-P8-NEXT: xxswapd v3, vs0550; CHECK-P8-NEXT: vperm v3, v0, v0, v3551; CHECK-P8-NEXT: xxswapd v4, vs1552; CHECK-P8-NEXT: vperm v4, v0, v0, v4553; CHECK-P8-NEXT: xxswapd v2, vs2554; CHECK-P8-NEXT: lxvd2x vs2, 0, r5555; CHECK-P8-NEXT: vperm v2, v0, v0, v2556; CHECK-P8-NEXT: xxswapd v5, vs2557; CHECK-P8-NEXT: vperm v5, v0, v0, v5558; CHECK-P8-NEXT: lxvd2x v0, 0, r4559; CHECK-P8-NEXT: li r4, 48560; CHECK-P8-NEXT: vsld v2, v2, v0561; CHECK-P8-NEXT: vsld v5, v5, v0562; CHECK-P8-NEXT: vsld v3, v3, v0563; CHECK-P8-NEXT: vsld v4, v4, v0564; CHECK-P8-NEXT: vsrad v2, v2, v0565; CHECK-P8-NEXT: vsrad v5, v5, v0566; CHECK-P8-NEXT: vsrad v3, v3, v0567; CHECK-P8-NEXT: vsrad v4, v4, v0568; CHECK-P8-NEXT: xvcvsxddp vs2, v2569; CHECK-P8-NEXT: xvcvsxddp vs3, v5570; CHECK-P8-NEXT: xvcvsxddp vs0, v3571; CHECK-P8-NEXT: xvcvsxddp vs1, v4572; CHECK-P8-NEXT: xxswapd vs2, vs2573; CHECK-P8-NEXT: xxswapd vs3, vs3574; CHECK-P8-NEXT: xxswapd vs1, vs1575; CHECK-P8-NEXT: xxswapd vs0, vs0576; CHECK-P8-NEXT: stxvd2x vs2, r3, r4577; CHECK-P8-NEXT: li r4, 32578; CHECK-P8-NEXT: stxvd2x vs0, 0, r3579; CHECK-P8-NEXT: stxvd2x vs3, r3, r4580; CHECK-P8-NEXT: li r4, 16581; CHECK-P8-NEXT: stxvd2x vs1, r3, r4582; CHECK-P8-NEXT: blr583;584; CHECK-P9-LABEL: test8elt_signed:585; CHECK-P9: # %bb.0: # %entry586; CHECK-P9-NEXT: mtvsrd v2, r4587; CHECK-P9-NEXT: addis r4, r2, .LCPI6_0@toc@ha588; CHECK-P9-NEXT: addi r4, r4, .LCPI6_0@toc@l589; CHECK-P9-NEXT: lxv v3, 0(r4)590; CHECK-P9-NEXT: addis r4, r2, .LCPI6_1@toc@ha591; CHECK-P9-NEXT: addi r4, r4, .LCPI6_1@toc@l592; CHECK-P9-NEXT: vperm v3, v2, v2, v3593; CHECK-P9-NEXT: vextsb2d v3, v3594; CHECK-P9-NEXT: xvcvsxddp vs0, v3595; CHECK-P9-NEXT: lxv v3, 0(r4)596; CHECK-P9-NEXT: addis r4, r2, .LCPI6_2@toc@ha597; CHECK-P9-NEXT: addi r4, r4, .LCPI6_2@toc@l598; CHECK-P9-NEXT: vperm v3, v2, v2, v3599; CHECK-P9-NEXT: stxv vs0, 0(r3)600; CHECK-P9-NEXT: vextsb2d v3, v3601; CHECK-P9-NEXT: xvcvsxddp vs1, v3602; CHECK-P9-NEXT: lxv v3, 0(r4)603; CHECK-P9-NEXT: addis r4, r2, .LCPI6_3@toc@ha604; CHECK-P9-NEXT: addi r4, r4, .LCPI6_3@toc@l605; CHECK-P9-NEXT: vperm v3, v2, v2, v3606; CHECK-P9-NEXT: stxv vs1, 16(r3)607; CHECK-P9-NEXT: vextsb2d v3, v3608; CHECK-P9-NEXT: xvcvsxddp vs2, v3609; CHECK-P9-NEXT: lxv v3, 0(r4)610; CHECK-P9-NEXT: vperm v2, v2, v2, v3611; CHECK-P9-NEXT: stxv vs2, 32(r3)612; CHECK-P9-NEXT: vextsb2d v2, v2613; CHECK-P9-NEXT: xvcvsxddp vs3, v2614; CHECK-P9-NEXT: stxv vs3, 48(r3)615; CHECK-P9-NEXT: blr616;617; CHECK-BE-LABEL: test8elt_signed:618; CHECK-BE: # %bb.0: # %entry619; CHECK-BE-NEXT: mtvsrd v2, r4620; CHECK-BE-NEXT: addis r4, r2, .LCPI6_0@toc@ha621; CHECK-BE-NEXT: addi r4, r4, .LCPI6_0@toc@l622; CHECK-BE-NEXT: lxv v3, 0(r4)623; CHECK-BE-NEXT: addis r4, r2, .LCPI6_1@toc@ha624; CHECK-BE-NEXT: addi r4, r4, .LCPI6_1@toc@l625; CHECK-BE-NEXT: vperm v3, v2, v2, v3626; CHECK-BE-NEXT: vextsb2d v3, v3627; CHECK-BE-NEXT: xvcvsxddp vs0, v3628; CHECK-BE-NEXT: lxv v3, 0(r4)629; CHECK-BE-NEXT: addis r4, r2, .LCPI6_2@toc@ha630; CHECK-BE-NEXT: addi r4, r4, .LCPI6_2@toc@l631; CHECK-BE-NEXT: vperm v3, v2, v2, v3632; CHECK-BE-NEXT: stxv vs0, 0(r3)633; CHECK-BE-NEXT: vextsb2d v3, v3634; CHECK-BE-NEXT: xvcvsxddp vs1, v3635; CHECK-BE-NEXT: lxv v3, 0(r4)636; CHECK-BE-NEXT: addis r4, r2, .LCPI6_3@toc@ha637; CHECK-BE-NEXT: addi r4, r4, .LCPI6_3@toc@l638; CHECK-BE-NEXT: vperm v3, v2, v2, v3639; CHECK-BE-NEXT: stxv vs1, 16(r3)640; CHECK-BE-NEXT: vextsb2d v3, v3641; CHECK-BE-NEXT: xvcvsxddp vs2, v3642; CHECK-BE-NEXT: lxv v3, 0(r4)643; CHECK-BE-NEXT: vperm v2, v2, v2, v3644; CHECK-BE-NEXT: stxv vs2, 32(r3)645; CHECK-BE-NEXT: vextsb2d v2, v2646; CHECK-BE-NEXT: xvcvsxddp vs3, v2647; CHECK-BE-NEXT: stxv vs3, 48(r3)648; CHECK-BE-NEXT: blr649entry:650 %0 = bitcast i64 %a.coerce to <8 x i8>651 %1 = sitofp <8 x i8> %0 to <8 x double>652 store <8 x double> %1, ptr %agg.result, align 64653 ret void654}655 656define void @test16elt_signed(ptr noalias nocapture sret(<16 x double>) %agg.result, <16 x i8> %a) local_unnamed_addr #2 {657; CHECK-P8-LABEL: test16elt_signed:658; CHECK-P8: # %bb.0: # %entry659; CHECK-P8-NEXT: addis r4, r2, .LCPI7_0@toc@ha660; CHECK-P8-NEXT: addi r4, r4, .LCPI7_0@toc@l661; CHECK-P8-NEXT: lxvd2x vs0, 0, r4662; CHECK-P8-NEXT: addis r4, r2, .LCPI7_2@toc@ha663; CHECK-P8-NEXT: addi r4, r4, .LCPI7_2@toc@l664; CHECK-P8-NEXT: lxvd2x vs1, 0, r4665; CHECK-P8-NEXT: addis r4, r2, .LCPI7_4@toc@ha666; CHECK-P8-NEXT: addi r4, r4, .LCPI7_4@toc@l667; CHECK-P8-NEXT: lxvd2x vs2, 0, r4668; CHECK-P8-NEXT: addis r4, r2, .LCPI7_7@toc@ha669; CHECK-P8-NEXT: addi r4, r4, .LCPI7_7@toc@l670; CHECK-P8-NEXT: lxvd2x vs3, 0, r4671; CHECK-P8-NEXT: addis r4, r2, .LCPI7_8@toc@ha672; CHECK-P8-NEXT: addi r4, r4, .LCPI7_8@toc@l673; CHECK-P8-NEXT: lxvd2x vs4, 0, r4674; CHECK-P8-NEXT: addis r4, r2, .LCPI7_6@toc@ha675; CHECK-P8-NEXT: addi r4, r4, .LCPI7_6@toc@l676; CHECK-P8-NEXT: xxswapd v6, vs0677; CHECK-P8-NEXT: vperm v6, v2, v2, v6678; CHECK-P8-NEXT: xxswapd v7, vs1679; CHECK-P8-NEXT: vperm v7, v2, v2, v7680; CHECK-P8-NEXT: xxswapd v0, vs2681; CHECK-P8-NEXT: vperm v0, v2, v2, v0682; CHECK-P8-NEXT: xxswapd v3, vs3683; CHECK-P8-NEXT: lxvd2x vs3, 0, r4684; CHECK-P8-NEXT: addis r4, r2, .LCPI7_5@toc@ha685; CHECK-P8-NEXT: addi r4, r4, .LCPI7_5@toc@l686; CHECK-P8-NEXT: vperm v3, v2, v2, v3687; CHECK-P8-NEXT: xxswapd v4, vs4688; CHECK-P8-NEXT: vperm v4, v2, v2, v4689; CHECK-P8-NEXT: xxswapd v5, vs3690; CHECK-P8-NEXT: lxvd2x vs3, 0, r4691; CHECK-P8-NEXT: addis r4, r2, .LCPI7_3@toc@ha692; CHECK-P8-NEXT: addi r4, r4, .LCPI7_3@toc@l693; CHECK-P8-NEXT: lxvd2x vs2, 0, r4694; CHECK-P8-NEXT: addis r4, r2, .LCPI7_1@toc@ha695; CHECK-P8-NEXT: addi r4, r4, .LCPI7_1@toc@l696; CHECK-P8-NEXT: vperm v5, v2, v2, v5697; CHECK-P8-NEXT: xxswapd v1, vs3698; CHECK-P8-NEXT: vperm v1, v2, v2, v1699; CHECK-P8-NEXT: xxswapd v8, vs2700; CHECK-P8-NEXT: vperm v2, v2, v2, v8701; CHECK-P8-NEXT: lxvd2x v8, 0, r4702; CHECK-P8-NEXT: li r4, 112703; CHECK-P8-NEXT: vsld v4, v4, v8704; CHECK-P8-NEXT: vsld v3, v3, v8705; CHECK-P8-NEXT: vsld v5, v5, v8706; CHECK-P8-NEXT: vsld v1, v1, v8707; CHECK-P8-NEXT: vsld v0, v0, v8708; CHECK-P8-NEXT: vsld v2, v2, v8709; CHECK-P8-NEXT: vsld v6, v6, v8710; CHECK-P8-NEXT: vsld v7, v7, v8711; CHECK-P8-NEXT: vsrad v4, v4, v8712; CHECK-P8-NEXT: vsrad v3, v3, v8713; CHECK-P8-NEXT: vsrad v5, v5, v8714; CHECK-P8-NEXT: vsrad v1, v1, v8715; CHECK-P8-NEXT: vsrad v0, v0, v8716; CHECK-P8-NEXT: vsrad v2, v2, v8717; CHECK-P8-NEXT: vsrad v6, v6, v8718; CHECK-P8-NEXT: vsrad v7, v7, v8719; CHECK-P8-NEXT: xvcvsxddp vs4, v4720; CHECK-P8-NEXT: xvcvsxddp vs3, v3721; CHECK-P8-NEXT: xvcvsxddp vs7, v5722; CHECK-P8-NEXT: xvcvsxddp vs6, v1723; CHECK-P8-NEXT: xvcvsxddp vs5, v0724; CHECK-P8-NEXT: xvcvsxddp vs2, v2725; CHECK-P8-NEXT: xvcvsxddp vs0, v6726; CHECK-P8-NEXT: xvcvsxddp vs1, v7727; CHECK-P8-NEXT: xxswapd vs4, vs4728; CHECK-P8-NEXT: xxswapd vs3, vs3729; CHECK-P8-NEXT: xxswapd vs7, vs7730; CHECK-P8-NEXT: xxswapd vs2, vs2731; CHECK-P8-NEXT: xxswapd vs1, vs1732; CHECK-P8-NEXT: xxswapd vs0, vs0733; CHECK-P8-NEXT: stxvd2x vs4, r3, r4734; CHECK-P8-NEXT: li r4, 96735; CHECK-P8-NEXT: xxswapd vs4, vs5736; CHECK-P8-NEXT: stxvd2x vs0, 0, r3737; CHECK-P8-NEXT: stxvd2x vs3, r3, r4738; CHECK-P8-NEXT: li r4, 80739; CHECK-P8-NEXT: stxvd2x vs7, r3, r4740; CHECK-P8-NEXT: li r4, 64741; CHECK-P8-NEXT: xxswapd vs3, vs6742; CHECK-P8-NEXT: stxvd2x vs3, r3, r4743; CHECK-P8-NEXT: li r4, 48744; CHECK-P8-NEXT: stxvd2x vs4, r3, r4745; CHECK-P8-NEXT: li r4, 32746; CHECK-P8-NEXT: stxvd2x vs2, r3, r4747; CHECK-P8-NEXT: li r4, 16748; CHECK-P8-NEXT: stxvd2x vs1, r3, r4749; CHECK-P8-NEXT: blr750;751; CHECK-P9-LABEL: test16elt_signed:752; CHECK-P9: # %bb.0: # %entry753; CHECK-P9-NEXT: addis r4, r2, .LCPI7_0@toc@ha754; CHECK-P9-NEXT: addi r4, r4, .LCPI7_0@toc@l755; CHECK-P9-NEXT: lxv v3, 0(r4)756; CHECK-P9-NEXT: addis r4, r2, .LCPI7_1@toc@ha757; CHECK-P9-NEXT: addi r4, r4, .LCPI7_1@toc@l758; CHECK-P9-NEXT: vperm v3, v2, v2, v3759; CHECK-P9-NEXT: vextsb2d v3, v3760; CHECK-P9-NEXT: xvcvsxddp vs0, v3761; CHECK-P9-NEXT: lxv v3, 0(r4)762; CHECK-P9-NEXT: addis r4, r2, .LCPI7_2@toc@ha763; CHECK-P9-NEXT: addi r4, r4, .LCPI7_2@toc@l764; CHECK-P9-NEXT: vperm v3, v2, v2, v3765; CHECK-P9-NEXT: stxv vs0, 0(r3)766; CHECK-P9-NEXT: vextsb2d v3, v3767; CHECK-P9-NEXT: xvcvsxddp vs1, v3768; CHECK-P9-NEXT: lxv v3, 0(r4)769; CHECK-P9-NEXT: addis r4, r2, .LCPI7_3@toc@ha770; CHECK-P9-NEXT: addi r4, r4, .LCPI7_3@toc@l771; CHECK-P9-NEXT: vperm v3, v2, v2, v3772; CHECK-P9-NEXT: stxv vs1, 16(r3)773; CHECK-P9-NEXT: vextsb2d v3, v3774; CHECK-P9-NEXT: xvcvsxddp vs2, v3775; CHECK-P9-NEXT: lxv v3, 0(r4)776; CHECK-P9-NEXT: addis r4, r2, .LCPI7_4@toc@ha777; CHECK-P9-NEXT: addi r4, r4, .LCPI7_4@toc@l778; CHECK-P9-NEXT: vperm v3, v2, v2, v3779; CHECK-P9-NEXT: stxv vs2, 32(r3)780; CHECK-P9-NEXT: vextsb2d v3, v3781; CHECK-P9-NEXT: xvcvsxddp vs3, v3782; CHECK-P9-NEXT: lxv v3, 0(r4)783; CHECK-P9-NEXT: addis r4, r2, .LCPI7_5@toc@ha784; CHECK-P9-NEXT: addi r4, r4, .LCPI7_5@toc@l785; CHECK-P9-NEXT: vperm v3, v2, v2, v3786; CHECK-P9-NEXT: stxv vs3, 48(r3)787; CHECK-P9-NEXT: vextsb2d v3, v3788; CHECK-P9-NEXT: xvcvsxddp vs4, v3789; CHECK-P9-NEXT: lxv v3, 0(r4)790; CHECK-P9-NEXT: addis r4, r2, .LCPI7_6@toc@ha791; CHECK-P9-NEXT: addi r4, r4, .LCPI7_6@toc@l792; CHECK-P9-NEXT: vperm v3, v2, v2, v3793; CHECK-P9-NEXT: stxv vs4, 64(r3)794; CHECK-P9-NEXT: vextsb2d v3, v3795; CHECK-P9-NEXT: xvcvsxddp vs5, v3796; CHECK-P9-NEXT: lxv v3, 0(r4)797; CHECK-P9-NEXT: addis r4, r2, .LCPI7_7@toc@ha798; CHECK-P9-NEXT: addi r4, r4, .LCPI7_7@toc@l799; CHECK-P9-NEXT: vperm v3, v2, v2, v3800; CHECK-P9-NEXT: stxv vs5, 80(r3)801; CHECK-P9-NEXT: vextsb2d v3, v3802; CHECK-P9-NEXT: xvcvsxddp vs6, v3803; CHECK-P9-NEXT: lxv v3, 0(r4)804; CHECK-P9-NEXT: vperm v2, v2, v2, v3805; CHECK-P9-NEXT: stxv vs6, 96(r3)806; CHECK-P9-NEXT: vextsb2d v2, v2807; CHECK-P9-NEXT: xvcvsxddp vs7, v2808; CHECK-P9-NEXT: stxv vs7, 112(r3)809; CHECK-P9-NEXT: blr810;811; CHECK-BE-LABEL: test16elt_signed:812; CHECK-BE: # %bb.0: # %entry813; CHECK-BE-NEXT: addis r4, r2, .LCPI7_0@toc@ha814; CHECK-BE-NEXT: addi r4, r4, .LCPI7_0@toc@l815; CHECK-BE-NEXT: lxv v3, 0(r4)816; CHECK-BE-NEXT: addis r4, r2, .LCPI7_1@toc@ha817; CHECK-BE-NEXT: addi r4, r4, .LCPI7_1@toc@l818; CHECK-BE-NEXT: vperm v3, v2, v2, v3819; CHECK-BE-NEXT: vextsb2d v3, v3820; CHECK-BE-NEXT: xvcvsxddp vs0, v3821; CHECK-BE-NEXT: lxv v3, 0(r4)822; CHECK-BE-NEXT: addis r4, r2, .LCPI7_2@toc@ha823; CHECK-BE-NEXT: addi r4, r4, .LCPI7_2@toc@l824; CHECK-BE-NEXT: vperm v3, v2, v2, v3825; CHECK-BE-NEXT: stxv vs0, 0(r3)826; CHECK-BE-NEXT: vextsb2d v3, v3827; CHECK-BE-NEXT: xvcvsxddp vs1, v3828; CHECK-BE-NEXT: lxv v3, 0(r4)829; CHECK-BE-NEXT: addis r4, r2, .LCPI7_3@toc@ha830; CHECK-BE-NEXT: addi r4, r4, .LCPI7_3@toc@l831; CHECK-BE-NEXT: vperm v3, v2, v2, v3832; CHECK-BE-NEXT: stxv vs1, 16(r3)833; CHECK-BE-NEXT: vextsb2d v3, v3834; CHECK-BE-NEXT: xvcvsxddp vs2, v3835; CHECK-BE-NEXT: lxv v3, 0(r4)836; CHECK-BE-NEXT: addis r4, r2, .LCPI7_4@toc@ha837; CHECK-BE-NEXT: addi r4, r4, .LCPI7_4@toc@l838; CHECK-BE-NEXT: vperm v3, v2, v2, v3839; CHECK-BE-NEXT: stxv vs2, 32(r3)840; CHECK-BE-NEXT: vextsb2d v3, v3841; CHECK-BE-NEXT: xvcvsxddp vs3, v3842; CHECK-BE-NEXT: lxv v3, 0(r4)843; CHECK-BE-NEXT: addis r4, r2, .LCPI7_5@toc@ha844; CHECK-BE-NEXT: addi r4, r4, .LCPI7_5@toc@l845; CHECK-BE-NEXT: vperm v3, v2, v2, v3846; CHECK-BE-NEXT: stxv vs3, 48(r3)847; CHECK-BE-NEXT: vextsb2d v3, v3848; CHECK-BE-NEXT: xvcvsxddp vs4, v3849; CHECK-BE-NEXT: lxv v3, 0(r4)850; CHECK-BE-NEXT: addis r4, r2, .LCPI7_6@toc@ha851; CHECK-BE-NEXT: addi r4, r4, .LCPI7_6@toc@l852; CHECK-BE-NEXT: vperm v3, v2, v2, v3853; CHECK-BE-NEXT: stxv vs4, 64(r3)854; CHECK-BE-NEXT: vextsb2d v3, v3855; CHECK-BE-NEXT: xvcvsxddp vs5, v3856; CHECK-BE-NEXT: lxv v3, 0(r4)857; CHECK-BE-NEXT: addis r4, r2, .LCPI7_7@toc@ha858; CHECK-BE-NEXT: addi r4, r4, .LCPI7_7@toc@l859; CHECK-BE-NEXT: vperm v3, v2, v2, v3860; CHECK-BE-NEXT: stxv vs5, 80(r3)861; CHECK-BE-NEXT: vextsb2d v3, v3862; CHECK-BE-NEXT: xvcvsxddp vs6, v3863; CHECK-BE-NEXT: lxv v3, 0(r4)864; CHECK-BE-NEXT: vperm v2, v2, v2, v3865; CHECK-BE-NEXT: stxv vs6, 96(r3)866; CHECK-BE-NEXT: vextsb2d v2, v2867; CHECK-BE-NEXT: xvcvsxddp vs7, v2868; CHECK-BE-NEXT: stxv vs7, 112(r3)869; CHECK-BE-NEXT: blr870entry:871 %0 = sitofp <16 x i8> %a to <16 x double>872 store <16 x double> %0, ptr %agg.result, align 128873 ret void874}875