630 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \3; RUN: -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P9LE4; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \5; RUN: -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P9BE6; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \7; RUN: -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P8LE8; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \9; RUN: -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=P8BE10 11; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \12; RUN: -mtriple=powerpc64-ibm-aix-xcoff< %s | FileCheck %s \13; RUN: --check-prefixes=AIX,P9-AIX,P9-AIX-6414; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \15; RUN: -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s \16; RUN: --check-prefixes=AIX,P9-AIX,P9-AIX-3217; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \18; RUN: -mtriple=powerpc64-ibm-aix-xcoff < %s | FileCheck %s \19; RUN: --check-prefixes=AIX,P8-AIX-6420; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \21; RUN: -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s \22; RUN: --check-prefixes=AIX,P8-AIX-3223 24; Function Attrs: norecurse nounwind readonly25define <4 x i32> @s2v_test1(ptr nocapture readonly %int32, <4 x i32> %vec) {26; P9LE-LABEL: s2v_test1:27; P9LE: # %bb.0: # %entry28; P9LE-NEXT: lwz r3, 0(r3)29; P9LE-NEXT: mtfprwz f0, r330; P9LE-NEXT: xxinsertw v2, vs0, 1231; P9LE-NEXT: blr32;33; P9BE-LABEL: s2v_test1:34; P9BE: # %bb.0: # %entry35; P9BE-NEXT: lwz r3, 0(r3)36; P9BE-NEXT: mtfprwz f0, r337; P9BE-NEXT: xxinsertw v2, vs0, 038; P9BE-NEXT: blr39;40; P8LE-LABEL: s2v_test1:41; P8LE: # %bb.0: # %entry42; P8LE-NEXT: addis r4, r2, .LCPI0_0@toc@ha43; P8LE-NEXT: lxsiwzx v4, 0, r344; P8LE-NEXT: addi r4, r4, .LCPI0_0@toc@l45; P8LE-NEXT: lxvd2x vs0, 0, r446; P8LE-NEXT: xxswapd v3, vs047; P8LE-NEXT: vperm v2, v2, v4, v348; P8LE-NEXT: blr49;50; P8BE-LABEL: s2v_test1:51; P8BE: # %bb.0: # %entry52; P8BE-NEXT: addis r4, r2, .LCPI0_0@toc@ha53; P8BE-NEXT: lxsiwzx v4, 0, r354; P8BE-NEXT: addi r4, r4, .LCPI0_0@toc@l55; P8BE-NEXT: lxvw4x v3, 0, r456; P8BE-NEXT: vperm v2, v4, v2, v357; P8BE-NEXT: blr58;59; P9-AIX-LABEL: s2v_test1:60; P9-AIX: # %bb.0: # %entry61; P9-AIX-NEXT: lwz r3, 0(r3)62; P9-AIX-NEXT: mtfprwz f0, r363; P9-AIX-NEXT: xxinsertw v2, vs0, 064; P9-AIX-NEXT: blr65;66; P8-AIX-64-LABEL: s2v_test1:67; P8-AIX-64: # %bb.0: # %entry68; P8-AIX-64-NEXT: ld r4, L..C0(r2) # %const.069; P8-AIX-64-NEXT: lxsiwzx v4, 0, r370; P8-AIX-64-NEXT: lxvw4x v3, 0, r471; P8-AIX-64-NEXT: vperm v2, v4, v2, v372; P8-AIX-64-NEXT: blr73;74; P8-AIX-32-LABEL: s2v_test1:75; P8-AIX-32: # %bb.0: # %entry76; P8-AIX-32-NEXT: lfiwzx f0, 0, r377; P8-AIX-32-NEXT: lwz r3, L..C0(r2) # %const.078; P8-AIX-32-NEXT: lxvw4x v4, 0, r379; P8-AIX-32-NEXT: xxspltw v3, vs0, 180; P8-AIX-32-NEXT: vperm v2, v3, v2, v481; P8-AIX-32-NEXT: blr82entry:83 %0 = load i32, ptr %int32, align 484 %vecins = insertelement <4 x i32> %vec, i32 %0, i32 085 ret <4 x i32> %vecins86}87 88; Function Attrs: norecurse nounwind readonly89define <4 x i32> @s2v_test2(ptr nocapture readonly %int32, <4 x i32> %vec) {90; P9LE-LABEL: s2v_test2:91; P9LE: # %bb.0: # %entry92; P9LE-NEXT: lwz r3, 4(r3)93; P9LE-NEXT: mtfprwz f0, r394; P9LE-NEXT: xxinsertw v2, vs0, 1295; P9LE-NEXT: blr96;97; P9BE-LABEL: s2v_test2:98; P9BE: # %bb.0: # %entry99; P9BE-NEXT: lwz r3, 4(r3)100; P9BE-NEXT: mtfprwz f0, r3101; P9BE-NEXT: xxinsertw v2, vs0, 0102; P9BE-NEXT: blr103;104; P8LE-LABEL: s2v_test2:105; P8LE: # %bb.0: # %entry106; P8LE-NEXT: addis r4, r2, .LCPI1_0@toc@ha107; P8LE-NEXT: addi r3, r3, 4108; P8LE-NEXT: addi r4, r4, .LCPI1_0@toc@l109; P8LE-NEXT: lxsiwzx v4, 0, r3110; P8LE-NEXT: lxvd2x vs0, 0, r4111; P8LE-NEXT: xxswapd v3, vs0112; P8LE-NEXT: vperm v2, v2, v4, v3113; P8LE-NEXT: blr114;115; P8BE-LABEL: s2v_test2:116; P8BE: # %bb.0: # %entry117; P8BE-NEXT: addis r4, r2, .LCPI1_0@toc@ha118; P8BE-NEXT: addi r3, r3, 4119; P8BE-NEXT: addi r4, r4, .LCPI1_0@toc@l120; P8BE-NEXT: lxsiwzx v4, 0, r3121; P8BE-NEXT: lxvw4x v3, 0, r4122; P8BE-NEXT: vperm v2, v4, v2, v3123; P8BE-NEXT: blr124;125; P9-AIX-LABEL: s2v_test2:126; P9-AIX: # %bb.0: # %entry127; P9-AIX-NEXT: lwz r3, 4(r3)128; P9-AIX-NEXT: mtfprwz f0, r3129; P9-AIX-NEXT: xxinsertw v2, vs0, 0130; P9-AIX-NEXT: blr131;132; P8-AIX-64-LABEL: s2v_test2:133; P8-AIX-64: # %bb.0: # %entry134; P8-AIX-64-NEXT: ld r4, L..C1(r2) # %const.0135; P8-AIX-64-NEXT: addi r3, r3, 4136; P8-AIX-64-NEXT: lxsiwzx v4, 0, r3137; P8-AIX-64-NEXT: lxvw4x v3, 0, r4138; P8-AIX-64-NEXT: vperm v2, v4, v2, v3139; P8-AIX-64-NEXT: blr140;141; P8-AIX-32-LABEL: s2v_test2:142; P8-AIX-32: # %bb.0: # %entry143; P8-AIX-32-NEXT: addi r3, r3, 4144; P8-AIX-32-NEXT: lfiwzx f0, 0, r3145; P8-AIX-32-NEXT: lwz r3, L..C1(r2) # %const.0146; P8-AIX-32-NEXT: lxvw4x v4, 0, r3147; P8-AIX-32-NEXT: xxspltw v3, vs0, 1148; P8-AIX-32-NEXT: vperm v2, v3, v2, v4149; P8-AIX-32-NEXT: blr150entry:151 %arrayidx = getelementptr inbounds i32, ptr %int32, i64 1152 %0 = load i32, ptr %arrayidx, align 4153 %vecins = insertelement <4 x i32> %vec, i32 %0, i32 0154 ret <4 x i32> %vecins155}156 157; Function Attrs: norecurse nounwind readonly158define <4 x i32> @s2v_test3(ptr nocapture readonly %int32, <4 x i32> %vec, i32 signext %Idx) {159; P9LE-LABEL: s2v_test3:160; P9LE: # %bb.0: # %entry161; P9LE-NEXT: sldi r4, r7, 2162; P9LE-NEXT: lwzx r3, r3, r4163; P9LE-NEXT: mtfprwz f0, r3164; P9LE-NEXT: xxinsertw v2, vs0, 12165; P9LE-NEXT: blr166;167; P9BE-LABEL: s2v_test3:168; P9BE: # %bb.0: # %entry169; P9BE-NEXT: sldi r4, r7, 2170; P9BE-NEXT: lwzx r3, r3, r4171; P9BE-NEXT: mtfprwz f0, r3172; P9BE-NEXT: xxinsertw v2, vs0, 0173; P9BE-NEXT: blr174;175; P8LE-LABEL: s2v_test3:176; P8LE: # %bb.0: # %entry177; P8LE-NEXT: addis r4, r2, .LCPI2_0@toc@ha178; P8LE-NEXT: addi r4, r4, .LCPI2_0@toc@l179; P8LE-NEXT: lxvd2x vs0, 0, r4180; P8LE-NEXT: sldi r4, r7, 2181; P8LE-NEXT: lxsiwzx v4, r3, r4182; P8LE-NEXT: xxswapd v3, vs0183; P8LE-NEXT: vperm v2, v2, v4, v3184; P8LE-NEXT: blr185;186; P8BE-LABEL: s2v_test3:187; P8BE: # %bb.0: # %entry188; P8BE-NEXT: sldi r4, r7, 2189; P8BE-NEXT: lxsiwzx v3, r3, r4190; P8BE-NEXT: addis r3, r2, .LCPI2_0@toc@ha191; P8BE-NEXT: addi r3, r3, .LCPI2_0@toc@l192; P8BE-NEXT: lxvw4x v4, 0, r3193; P8BE-NEXT: vperm v2, v3, v2, v4194; P8BE-NEXT: blr195;196; P9-AIX-64-LABEL: s2v_test3:197; P9-AIX-64: # %bb.0: # %entry198; P9-AIX-64-NEXT: sldi r4, r4, 2199; P9-AIX-64-NEXT: lwzx r3, r3, r4200; P9-AIX-64-NEXT: mtfprwz f0, r3201; P9-AIX-64-NEXT: xxinsertw v2, vs0, 0202; P9-AIX-64-NEXT: blr203;204; P9-AIX-32-LABEL: s2v_test3:205; P9-AIX-32: # %bb.0: # %entry206; P9-AIX-32-NEXT: slwi r4, r4, 2207; P9-AIX-32-NEXT: lwzx r3, r3, r4208; P9-AIX-32-NEXT: mtfprwz f0, r3209; P9-AIX-32-NEXT: xxinsertw v2, vs0, 0210; P9-AIX-32-NEXT: blr211;212; P8-AIX-64-LABEL: s2v_test3:213; P8-AIX-64: # %bb.0: # %entry214; P8-AIX-64-NEXT: sldi r4, r4, 2215; P8-AIX-64-NEXT: lxsiwzx v3, r3, r4216; P8-AIX-64-NEXT: ld r3, L..C2(r2) # %const.0217; P8-AIX-64-NEXT: lxvw4x v4, 0, r3218; P8-AIX-64-NEXT: vperm v2, v3, v2, v4219; P8-AIX-64-NEXT: blr220;221; P8-AIX-32-LABEL: s2v_test3:222; P8-AIX-32: # %bb.0: # %entry223; P8-AIX-32-NEXT: slwi r4, r4, 2224; P8-AIX-32-NEXT: lfiwzx f0, r3, r4225; P8-AIX-32-NEXT: lwz r3, L..C2(r2) # %const.0226; P8-AIX-32-NEXT: lxvw4x v4, 0, r3227; P8-AIX-32-NEXT: xxspltw v3, vs0, 1228; P8-AIX-32-NEXT: vperm v2, v3, v2, v4229; P8-AIX-32-NEXT: blr230entry:231 %idxprom = sext i32 %Idx to i64232 %arrayidx = getelementptr inbounds i32, ptr %int32, i64 %idxprom233 %0 = load i32, ptr %arrayidx, align 4234 %vecins = insertelement <4 x i32> %vec, i32 %0, i32 0235 ret <4 x i32> %vecins236}237 238; Function Attrs: norecurse nounwind readonly239define <4 x i32> @s2v_test4(ptr nocapture readonly %int32, <4 x i32> %vec) {240; P9LE-LABEL: s2v_test4:241; P9LE: # %bb.0: # %entry242; P9LE-NEXT: lwz r3, 4(r3)243; P9LE-NEXT: mtfprwz f0, r3244; P9LE-NEXT: xxinsertw v2, vs0, 12245; P9LE-NEXT: blr246;247; P9BE-LABEL: s2v_test4:248; P9BE: # %bb.0: # %entry249; P9BE-NEXT: lwz r3, 4(r3)250; P9BE-NEXT: mtfprwz f0, r3251; P9BE-NEXT: xxinsertw v2, vs0, 0252; P9BE-NEXT: blr253;254; P8LE-LABEL: s2v_test4:255; P8LE: # %bb.0: # %entry256; P8LE-NEXT: addis r4, r2, .LCPI3_0@toc@ha257; P8LE-NEXT: addi r3, r3, 4258; P8LE-NEXT: addi r4, r4, .LCPI3_0@toc@l259; P8LE-NEXT: lxsiwzx v4, 0, r3260; P8LE-NEXT: lxvd2x vs0, 0, r4261; P8LE-NEXT: xxswapd v3, vs0262; P8LE-NEXT: vperm v2, v2, v4, v3263; P8LE-NEXT: blr264;265; P8BE-LABEL: s2v_test4:266; P8BE: # %bb.0: # %entry267; P8BE-NEXT: addis r4, r2, .LCPI3_0@toc@ha268; P8BE-NEXT: addi r3, r3, 4269; P8BE-NEXT: addi r4, r4, .LCPI3_0@toc@l270; P8BE-NEXT: lxsiwzx v4, 0, r3271; P8BE-NEXT: lxvw4x v3, 0, r4272; P8BE-NEXT: vperm v2, v4, v2, v3273; P8BE-NEXT: blr274;275; P9-AIX-LABEL: s2v_test4:276; P9-AIX: # %bb.0: # %entry277; P9-AIX-NEXT: lwz r3, 4(r3)278; P9-AIX-NEXT: mtfprwz f0, r3279; P9-AIX-NEXT: xxinsertw v2, vs0, 0280; P9-AIX-NEXT: blr281;282; P8-AIX-64-LABEL: s2v_test4:283; P8-AIX-64: # %bb.0: # %entry284; P8-AIX-64-NEXT: ld r4, L..C3(r2) # %const.0285; P8-AIX-64-NEXT: addi r3, r3, 4286; P8-AIX-64-NEXT: lxsiwzx v4, 0, r3287; P8-AIX-64-NEXT: lxvw4x v3, 0, r4288; P8-AIX-64-NEXT: vperm v2, v4, v2, v3289; P8-AIX-64-NEXT: blr290;291; P8-AIX-32-LABEL: s2v_test4:292; P8-AIX-32: # %bb.0: # %entry293; P8-AIX-32-NEXT: addi r3, r3, 4294; P8-AIX-32-NEXT: lfiwzx f0, 0, r3295; P8-AIX-32-NEXT: lwz r3, L..C3(r2) # %const.0296; P8-AIX-32-NEXT: lxvw4x v4, 0, r3297; P8-AIX-32-NEXT: xxspltw v3, vs0, 1298; P8-AIX-32-NEXT: vperm v2, v3, v2, v4299; P8-AIX-32-NEXT: blr300entry:301 %arrayidx = getelementptr inbounds i32, ptr %int32, i64 1302 %0 = load i32, ptr %arrayidx, align 4303 %vecins = insertelement <4 x i32> %vec, i32 %0, i32 0304 ret <4 x i32> %vecins305}306 307; Function Attrs: norecurse nounwind readonly308define <4 x i32> @s2v_test5(<4 x i32> %vec, ptr nocapture readonly %ptr1) {309; P9LE-LABEL: s2v_test5:310; P9LE: # %bb.0: # %entry311; P9LE-NEXT: lwz r3, 0(r5)312; P9LE-NEXT: mtfprwz f0, r3313; P9LE-NEXT: xxinsertw v2, vs0, 12314; P9LE-NEXT: blr315;316; P9BE-LABEL: s2v_test5:317; P9BE: # %bb.0: # %entry318; P9BE-NEXT: lwz r3, 0(r5)319; P9BE-NEXT: mtfprwz f0, r3320; P9BE-NEXT: xxinsertw v2, vs0, 0321; P9BE-NEXT: blr322;323; P8LE-LABEL: s2v_test5:324; P8LE: # %bb.0: # %entry325; P8LE-NEXT: addis r3, r2, .LCPI4_0@toc@ha326; P8LE-NEXT: lxsiwzx v4, 0, r5327; P8LE-NEXT: addi r3, r3, .LCPI4_0@toc@l328; P8LE-NEXT: lxvd2x vs0, 0, r3329; P8LE-NEXT: xxswapd v3, vs0330; P8LE-NEXT: vperm v2, v2, v4, v3331; P8LE-NEXT: blr332;333; P8BE-LABEL: s2v_test5:334; P8BE: # %bb.0: # %entry335; P8BE-NEXT: addis r3, r2, .LCPI4_0@toc@ha336; P8BE-NEXT: lxsiwzx v4, 0, r5337; P8BE-NEXT: addi r3, r3, .LCPI4_0@toc@l338; P8BE-NEXT: lxvw4x v3, 0, r3339; P8BE-NEXT: vperm v2, v4, v2, v3340; P8BE-NEXT: blr341;342; P9-AIX-LABEL: s2v_test5:343; P9-AIX: # %bb.0: # %entry344; P9-AIX-NEXT: lwz r3, 0(r3)345; P9-AIX-NEXT: mtfprwz f0, r3346; P9-AIX-NEXT: xxinsertw v2, vs0, 0347; P9-AIX-NEXT: blr348;349; P8-AIX-64-LABEL: s2v_test5:350; P8-AIX-64: # %bb.0: # %entry351; P8-AIX-64-NEXT: ld r4, L..C4(r2) # %const.0352; P8-AIX-64-NEXT: lxsiwzx v4, 0, r3353; P8-AIX-64-NEXT: lxvw4x v3, 0, r4354; P8-AIX-64-NEXT: vperm v2, v4, v2, v3355; P8-AIX-64-NEXT: blr356;357; P8-AIX-32-LABEL: s2v_test5:358; P8-AIX-32: # %bb.0: # %entry359; P8-AIX-32-NEXT: lfiwzx f0, 0, r3360; P8-AIX-32-NEXT: lwz r3, L..C4(r2) # %const.0361; P8-AIX-32-NEXT: lxvw4x v4, 0, r3362; P8-AIX-32-NEXT: xxspltw v3, vs0, 1363; P8-AIX-32-NEXT: vperm v2, v3, v2, v4364; P8-AIX-32-NEXT: blr365entry:366 %0 = load i32, ptr %ptr1, align 4367 %vecins = insertelement <4 x i32> %vec, i32 %0, i32 0368 ret <4 x i32> %vecins369}370 371; Function Attrs: norecurse nounwind readonly372define <4 x float> @s2v_test_f1(ptr nocapture readonly %f64, <4 x float> %vec) {373; P9LE-LABEL: s2v_test_f1:374; P9LE: # %bb.0: # %entry375; P9LE-NEXT: lwz r3, 0(r3)376; P9LE-NEXT: mtfprwz f0, r3377; P9LE-NEXT: xxinsertw v2, vs0, 12378; P9LE-NEXT: blr379;380; P9BE-LABEL: s2v_test_f1:381; P9BE: # %bb.0: # %entry382; P9BE-NEXT: lwz r3, 0(r3)383; P9BE-NEXT: mtfprwz f0, r3384; P9BE-NEXT: xxinsertw v2, vs0, 0385; P9BE-NEXT: blr386;387; P8LE-LABEL: s2v_test_f1:388; P8LE: # %bb.0: # %entry389; P8LE-NEXT: addis r4, r2, .LCPI5_0@toc@ha390; P8LE-NEXT: lxsiwzx v4, 0, r3391; P8LE-NEXT: addi r4, r4, .LCPI5_0@toc@l392; P8LE-NEXT: lxvd2x vs0, 0, r4393; P8LE-NEXT: xxswapd v3, vs0394; P8LE-NEXT: vperm v2, v2, v4, v3395; P8LE-NEXT: blr396;397; P8BE-LABEL: s2v_test_f1:398; P8BE: # %bb.0: # %entry399; P8BE-NEXT: addis r4, r2, .LCPI5_0@toc@ha400; P8BE-NEXT: lxsiwzx v4, 0, r3401; P8BE-NEXT: addi r4, r4, .LCPI5_0@toc@l402; P8BE-NEXT: lxvw4x v3, 0, r4403; P8BE-NEXT: vperm v2, v4, v2, v3404; P8BE-NEXT: blr405;406; P9-AIX-LABEL: s2v_test_f1:407; P9-AIX: # %bb.0: # %entry408; P9-AIX-NEXT: lwz r3, 0(r3)409; P9-AIX-NEXT: mtfprwz f0, r3410; P9-AIX-NEXT: xxinsertw v2, vs0, 0411; P9-AIX-NEXT: blr412;413; P8-AIX-64-LABEL: s2v_test_f1:414; P8-AIX-64: # %bb.0: # %entry415; P8-AIX-64-NEXT: ld r4, L..C5(r2) # %const.0416; P8-AIX-64-NEXT: lxsiwzx v4, 0, r3417; P8-AIX-64-NEXT: lxvw4x v3, 0, r4418; P8-AIX-64-NEXT: vperm v2, v4, v2, v3419; P8-AIX-64-NEXT: blr420;421; P8-AIX-32-LABEL: s2v_test_f1:422; P8-AIX-32: # %bb.0: # %entry423; P8-AIX-32-NEXT: lwz r4, L..C5(r2) # %const.0424; P8-AIX-32-NEXT: lxsiwzx v4, 0, r3425; P8-AIX-32-NEXT: lxvw4x v3, 0, r4426; P8-AIX-32-NEXT: vperm v2, v4, v2, v3427; P8-AIX-32-NEXT: blr428entry:429 %0 = load float, ptr %f64, align 4430 %vecins = insertelement <4 x float> %vec, float %0, i32 0431 ret <4 x float> %vecins432}433 434; Function Attrs: norecurse nounwind readonly435define <2 x float> @s2v_test_f2(ptr nocapture readonly %f64, <2 x float> %vec) {436; P9LE-LABEL: s2v_test_f2:437; P9LE: # %bb.0: # %entry438; P9LE-NEXT: addi r3, r3, 4439; P9LE-NEXT: xxmrglw vs1, v2, v2440; P9LE-NEXT: lfiwzx f0, 0, r3441; P9LE-NEXT: xxmrghw v2, vs1, vs0442; P9LE-NEXT: blr443;444; P9BE-LABEL: s2v_test_f2:445; P9BE: # %bb.0: # %entry446; P9BE-NEXT: addi r3, r3, 4447; P9BE-NEXT: lxsiwzx v3, 0, r3448; P9BE-NEXT: vmrgow v2, v3, v2449; P9BE-NEXT: blr450;451; P8LE-LABEL: s2v_test_f2:452; P8LE: # %bb.0: # %entry453; P8LE-NEXT: addi r3, r3, 4454; P8LE-NEXT: xxmrglw vs0, v2, v2455; P8LE-NEXT: lfiwzx f1, 0, r3456; P8LE-NEXT: xxmrghw v2, vs0, vs1457; P8LE-NEXT: blr458;459; P8BE-LABEL: s2v_test_f2:460; P8BE: # %bb.0: # %entry461; P8BE-NEXT: addi r3, r3, 4462; P8BE-NEXT: lxsiwzx v3, 0, r3463; P8BE-NEXT: vmrgow v2, v3, v2464; P8BE-NEXT: blr465;466; AIX-LABEL: s2v_test_f2:467; AIX: # %bb.0: # %entry468; AIX-NEXT: addi r3, r3, 4469; AIX-NEXT: lxsiwzx v3, 0, r3470; AIX-NEXT: vmrgow v2, v3, v2471; AIX-NEXT: blr472entry:473 %arrayidx = getelementptr inbounds float, ptr %f64, i64 1474 %0 = load float, ptr %arrayidx, align 8475 %vecins = insertelement <2 x float> %vec, float %0, i32 0476 ret <2 x float> %vecins477}478 479; Function Attrs: norecurse nounwind readonly480define <2 x float> @s2v_test_f3(ptr nocapture readonly %f64, <2 x float> %vec, i32 signext %Idx) {481; P9LE-LABEL: s2v_test_f3:482; P9LE: # %bb.0: # %entry483; P9LE-NEXT: sldi r4, r7, 2484; P9LE-NEXT: xxmrglw vs1, v2, v2485; P9LE-NEXT: lfiwzx f0, r3, r4486; P9LE-NEXT: xxmrghw v2, vs1, vs0487; P9LE-NEXT: blr488;489; P9BE-LABEL: s2v_test_f3:490; P9BE: # %bb.0: # %entry491; P9BE-NEXT: sldi r4, r7, 2492; P9BE-NEXT: lxsiwzx v3, r3, r4493; P9BE-NEXT: vmrgow v2, v3, v2494; P9BE-NEXT: blr495;496; P8LE-LABEL: s2v_test_f3:497; P8LE: # %bb.0: # %entry498; P8LE-NEXT: sldi r4, r7, 2499; P8LE-NEXT: xxmrglw vs0, v2, v2500; P8LE-NEXT: lfiwzx f1, r3, r4501; P8LE-NEXT: xxmrghw v2, vs0, vs1502; P8LE-NEXT: blr503;504; P8BE-LABEL: s2v_test_f3:505; P8BE: # %bb.0: # %entry506; P8BE-NEXT: sldi r4, r7, 2507; P8BE-NEXT: lxsiwzx v3, r3, r4508; P8BE-NEXT: vmrgow v2, v3, v2509; P8BE-NEXT: blr510;511; P9-AIX-64-LABEL: s2v_test_f3:512; P9-AIX-64: # %bb.0: # %entry513; P9-AIX-64-NEXT: sldi r4, r4, 2514; P9-AIX-64-NEXT: lxsiwzx v3, r3, r4515; P9-AIX-64-NEXT: vmrgow v2, v3, v2516; P9-AIX-64-NEXT: blr517;518; P9-AIX-32-LABEL: s2v_test_f3:519; P9-AIX-32: # %bb.0: # %entry520; P9-AIX-32-NEXT: slwi r4, r4, 2521; P9-AIX-32-NEXT: lxsiwzx v3, r3, r4522; P9-AIX-32-NEXT: vmrgow v2, v3, v2523; P9-AIX-32-NEXT: blr524;525; P8-AIX-64-LABEL: s2v_test_f3:526; P8-AIX-64: # %bb.0: # %entry527; P8-AIX-64-NEXT: sldi r4, r4, 2528; P8-AIX-64-NEXT: lxsiwzx v3, r3, r4529; P8-AIX-64-NEXT: vmrgow v2, v3, v2530; P8-AIX-64-NEXT: blr531;532; P8-AIX-32-LABEL: s2v_test_f3:533; P8-AIX-32: # %bb.0: # %entry534; P8-AIX-32-NEXT: slwi r4, r4, 2535; P8-AIX-32-NEXT: lxsiwzx v3, r3, r4536; P8-AIX-32-NEXT: vmrgow v2, v3, v2537; P8-AIX-32-NEXT: blr538entry:539 %idxprom = sext i32 %Idx to i64540 %arrayidx = getelementptr inbounds float, ptr %f64, i64 %idxprom541 %0 = load float, ptr %arrayidx, align 8542 %vecins = insertelement <2 x float> %vec, float %0, i32 0543 ret <2 x float> %vecins544}545 546; Function Attrs: norecurse nounwind readonly547define <2 x float> @s2v_test_f4(ptr nocapture readonly %f64, <2 x float> %vec) {548; P9LE-LABEL: s2v_test_f4:549; P9LE: # %bb.0: # %entry550; P9LE-NEXT: addi r3, r3, 4551; P9LE-NEXT: xxmrglw vs1, v2, v2552; P9LE-NEXT: lfiwzx f0, 0, r3553; P9LE-NEXT: xxmrghw v2, vs1, vs0554; P9LE-NEXT: blr555;556; P9BE-LABEL: s2v_test_f4:557; P9BE: # %bb.0: # %entry558; P9BE-NEXT: addi r3, r3, 4559; P9BE-NEXT: lxsiwzx v3, 0, r3560; P9BE-NEXT: vmrgow v2, v3, v2561; P9BE-NEXT: blr562;563; P8LE-LABEL: s2v_test_f4:564; P8LE: # %bb.0: # %entry565; P8LE-NEXT: addi r3, r3, 4566; P8LE-NEXT: xxmrglw vs0, v2, v2567; P8LE-NEXT: lfiwzx f1, 0, r3568; P8LE-NEXT: xxmrghw v2, vs0, vs1569; P8LE-NEXT: blr570;571; P8BE-LABEL: s2v_test_f4:572; P8BE: # %bb.0: # %entry573; P8BE-NEXT: addi r3, r3, 4574; P8BE-NEXT: lxsiwzx v3, 0, r3575; P8BE-NEXT: vmrgow v2, v3, v2576; P8BE-NEXT: blr577;578; AIX-LABEL: s2v_test_f4:579; AIX: # %bb.0: # %entry580; AIX-NEXT: addi r3, r3, 4581; AIX-NEXT: lxsiwzx v3, 0, r3582; AIX-NEXT: vmrgow v2, v3, v2583; AIX-NEXT: blr584entry:585 %arrayidx = getelementptr inbounds float, ptr %f64, i64 1586 %0 = load float, ptr %arrayidx, align 8587 %vecins = insertelement <2 x float> %vec, float %0, i32 0588 ret <2 x float> %vecins589}590 591; Function Attrs: norecurse nounwind readonly592define <2 x float> @s2v_test_f5(<2 x float> %vec, ptr nocapture readonly %ptr1) {593; P9LE-LABEL: s2v_test_f5:594; P9LE: # %bb.0: # %entry595; P9LE-NEXT: lfiwzx f0, 0, r5596; P9LE-NEXT: xxmrglw vs1, v2, v2597; P9LE-NEXT: xxmrghw v2, vs1, vs0598; P9LE-NEXT: blr599;600; P9BE-LABEL: s2v_test_f5:601; P9BE: # %bb.0: # %entry602; P9BE-NEXT: lxsiwzx v3, 0, r5603; P9BE-NEXT: vmrgow v2, v3, v2604; P9BE-NEXT: blr605;606; P8LE-LABEL: s2v_test_f5:607; P8LE: # %bb.0: # %entry608; P8LE-NEXT: lfiwzx f1, 0, r5609; P8LE-NEXT: xxmrglw vs0, v2, v2610; P8LE-NEXT: xxmrghw v2, vs0, vs1611; P8LE-NEXT: blr612;613; P8BE-LABEL: s2v_test_f5:614; P8BE: # %bb.0: # %entry615; P8BE-NEXT: lxsiwzx v3, 0, r5616; P8BE-NEXT: vmrgow v2, v3, v2617; P8BE-NEXT: blr618;619; AIX-LABEL: s2v_test_f5:620; AIX: # %bb.0: # %entry621; AIX-NEXT: lxsiwzx v3, 0, r3622; AIX-NEXT: vmrgow v2, v3, v2623; AIX-NEXT: blr624entry:625 %0 = load float, ptr %ptr1, align 8626 %vecins = insertelement <2 x float> %vec, float %0, i32 0627 ret <2 x float> %vecins628}629 630