1*fc59f2ccSRolandF77; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2*fc59f2ccSRolandF77; RUN: llc -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -verify-machineinstrs \ 3*fc59f2ccSRolandF77; RUN: -mtriple=powerpc64-- -mcpu=pwr7 < %s | FileCheck \ 4*fc59f2ccSRolandF77; RUN: --check-prefix=PWR7-BE %s 5*fc59f2ccSRolandF77; RUN: llc -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -verify-machineinstrs \ 6*fc59f2ccSRolandF77; RUN: -mtriple=powerpc64-- -mcpu=pwr8 < %s | FileCheck \ 7*fc59f2ccSRolandF77; RUN: --check-prefix=PWR8-BE %s 8*fc59f2ccSRolandF77; RUN: llc -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -verify-machineinstrs \ 9*fc59f2ccSRolandF77; RUN: -mtriple=powerpc64le-- -mcpu=pwr8 < %s | FileCheck \ 10*fc59f2ccSRolandF77; RUN: --check-prefix=PWR8-LE %s 11*fc59f2ccSRolandF77 12*fc59f2ccSRolandF77define <16 x i8> @i8(ptr nocapture noundef readonly %p) { 13*fc59f2ccSRolandF77; PWR7-BE-LABEL: i8: 14*fc59f2ccSRolandF77; PWR7-BE: # %bb.0: # %entry 15*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvw4x v3, 0, r3 16*fc59f2ccSRolandF77; PWR7-BE-NEXT: addis r3, r2, .LCPI0_0@toc@ha 17*fc59f2ccSRolandF77; PWR7-BE-NEXT: vspltisb v2, 10 18*fc59f2ccSRolandF77; PWR7-BE-NEXT: addi r3, r3, .LCPI0_0@toc@l 19*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvw4x v4, 0, r3 20*fc59f2ccSRolandF77; PWR7-BE-NEXT: vperm v2, v3, v2, v4 21*fc59f2ccSRolandF77; PWR7-BE-NEXT: blr 22*fc59f2ccSRolandF77; 23*fc59f2ccSRolandF77; PWR8-BE-LABEL: i8: 24*fc59f2ccSRolandF77; PWR8-BE: # %bb.0: # %entry 25*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvw4x v2, 0, r3 26*fc59f2ccSRolandF77; PWR8-BE-NEXT: addis r3, r2, .LCPI0_0@toc@ha 27*fc59f2ccSRolandF77; PWR8-BE-NEXT: addi r3, r3, .LCPI0_0@toc@l 28*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvw4x v3, 0, r3 29*fc59f2ccSRolandF77; PWR8-BE-NEXT: li r3, 10 30*fc59f2ccSRolandF77; PWR8-BE-NEXT: mtvsrwz v4, r3 31*fc59f2ccSRolandF77; PWR8-BE-NEXT: vperm v2, v2, v4, v3 32*fc59f2ccSRolandF77; PWR8-BE-NEXT: blr 33*fc59f2ccSRolandF77; 34*fc59f2ccSRolandF77; PWR8-LE-LABEL: i8: 35*fc59f2ccSRolandF77; PWR8-LE: # %bb.0: # %entry 36*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 37*fc59f2ccSRolandF77; PWR8-LE-NEXT: addis r3, r2, .LCPI0_0@toc@ha 38*fc59f2ccSRolandF77; PWR8-LE-NEXT: addi r3, r3, .LCPI0_0@toc@l 39*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v2, vs0 40*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 41*fc59f2ccSRolandF77; PWR8-LE-NEXT: li r3, 10 42*fc59f2ccSRolandF77; PWR8-LE-NEXT: mtvsrd v4, r3 43*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v3, vs0 44*fc59f2ccSRolandF77; PWR8-LE-NEXT: vperm v2, v4, v2, v3 45*fc59f2ccSRolandF77; PWR8-LE-NEXT: blr 46*fc59f2ccSRolandF77entry: 47*fc59f2ccSRolandF77 %0 = load <16 x i8>, ptr %p, align 16 48*fc59f2ccSRolandF77 %vecinit1 = insertelement <16 x i8> %0, i8 10, i64 1 49*fc59f2ccSRolandF77 ret <16 x i8> %vecinit1 50*fc59f2ccSRolandF77} 51*fc59f2ccSRolandF77 52*fc59f2ccSRolandF77define <8 x i16> @i16(ptr nocapture noundef readonly %p) { 53*fc59f2ccSRolandF77; PWR7-BE-LABEL: i16: 54*fc59f2ccSRolandF77; PWR7-BE: # %bb.0: # %entry 55*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvw4x v3, 0, r3 56*fc59f2ccSRolandF77; PWR7-BE-NEXT: addis r3, r2, .LCPI1_0@toc@ha 57*fc59f2ccSRolandF77; PWR7-BE-NEXT: vspltish v2, 9 58*fc59f2ccSRolandF77; PWR7-BE-NEXT: addi r3, r3, .LCPI1_0@toc@l 59*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvw4x v4, 0, r3 60*fc59f2ccSRolandF77; PWR7-BE-NEXT: vperm v2, v3, v2, v4 61*fc59f2ccSRolandF77; PWR7-BE-NEXT: blr 62*fc59f2ccSRolandF77; 63*fc59f2ccSRolandF77; PWR8-BE-LABEL: i16: 64*fc59f2ccSRolandF77; PWR8-BE: # %bb.0: # %entry 65*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvw4x v2, 0, r3 66*fc59f2ccSRolandF77; PWR8-BE-NEXT: addis r3, r2, .LCPI1_0@toc@ha 67*fc59f2ccSRolandF77; PWR8-BE-NEXT: addi r3, r3, .LCPI1_0@toc@l 68*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvw4x v3, 0, r3 69*fc59f2ccSRolandF77; PWR8-BE-NEXT: li r3, 9 70*fc59f2ccSRolandF77; PWR8-BE-NEXT: mtvsrwz v4, r3 71*fc59f2ccSRolandF77; PWR8-BE-NEXT: vperm v2, v2, v4, v3 72*fc59f2ccSRolandF77; PWR8-BE-NEXT: blr 73*fc59f2ccSRolandF77; 74*fc59f2ccSRolandF77; PWR8-LE-LABEL: i16: 75*fc59f2ccSRolandF77; PWR8-LE: # %bb.0: # %entry 76*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 77*fc59f2ccSRolandF77; PWR8-LE-NEXT: addis r3, r2, .LCPI1_0@toc@ha 78*fc59f2ccSRolandF77; PWR8-LE-NEXT: addi r3, r3, .LCPI1_0@toc@l 79*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v2, vs0 80*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 81*fc59f2ccSRolandF77; PWR8-LE-NEXT: li r3, 9 82*fc59f2ccSRolandF77; PWR8-LE-NEXT: mtvsrd v4, r3 83*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v3, vs0 84*fc59f2ccSRolandF77; PWR8-LE-NEXT: vperm v2, v4, v2, v3 85*fc59f2ccSRolandF77; PWR8-LE-NEXT: blr 86*fc59f2ccSRolandF77entry: 87*fc59f2ccSRolandF77 %0 = load <8 x i16>, ptr %p, align 16 88*fc59f2ccSRolandF77 %vecinit1 = insertelement <8 x i16> %0, i16 9, i64 1 89*fc59f2ccSRolandF77 ret <8 x i16> %vecinit1 90*fc59f2ccSRolandF77} 91*fc59f2ccSRolandF77 92*fc59f2ccSRolandF77define <4 x i32> @i32(ptr nocapture noundef readonly %p) { 93*fc59f2ccSRolandF77; PWR7-BE-LABEL: i32: 94*fc59f2ccSRolandF77; PWR7-BE: # %bb.0: # %entry 95*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvw4x v3, 0, r3 96*fc59f2ccSRolandF77; PWR7-BE-NEXT: addis r3, r2, .LCPI2_0@toc@ha 97*fc59f2ccSRolandF77; PWR7-BE-NEXT: vspltisw v2, 7 98*fc59f2ccSRolandF77; PWR7-BE-NEXT: addi r3, r3, .LCPI2_0@toc@l 99*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvw4x v4, 0, r3 100*fc59f2ccSRolandF77; PWR7-BE-NEXT: vperm v2, v3, v2, v4 101*fc59f2ccSRolandF77; PWR7-BE-NEXT: blr 102*fc59f2ccSRolandF77; 103*fc59f2ccSRolandF77; PWR8-BE-LABEL: i32: 104*fc59f2ccSRolandF77; PWR8-BE: # %bb.0: # %entry 105*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvw4x v2, 0, r3 106*fc59f2ccSRolandF77; PWR8-BE-NEXT: addis r3, r2, .LCPI2_0@toc@ha 107*fc59f2ccSRolandF77; PWR8-BE-NEXT: addi r3, r3, .LCPI2_0@toc@l 108*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvw4x v3, 0, r3 109*fc59f2ccSRolandF77; PWR8-BE-NEXT: li r3, 7 110*fc59f2ccSRolandF77; PWR8-BE-NEXT: mtvsrwz v4, r3 111*fc59f2ccSRolandF77; PWR8-BE-NEXT: vperm v2, v2, v4, v3 112*fc59f2ccSRolandF77; PWR8-BE-NEXT: blr 113*fc59f2ccSRolandF77; 114*fc59f2ccSRolandF77; PWR8-LE-LABEL: i32: 115*fc59f2ccSRolandF77; PWR8-LE: # %bb.0: # %entry 116*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 117*fc59f2ccSRolandF77; PWR8-LE-NEXT: addis r3, r2, .LCPI2_0@toc@ha 118*fc59f2ccSRolandF77; PWR8-LE-NEXT: addi r3, r3, .LCPI2_0@toc@l 119*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v2, vs0 120*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 121*fc59f2ccSRolandF77; PWR8-LE-NEXT: li r3, 7 122*fc59f2ccSRolandF77; PWR8-LE-NEXT: mtvsrwz v4, r3 123*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v3, vs0 124*fc59f2ccSRolandF77; PWR8-LE-NEXT: vperm v2, v4, v2, v3 125*fc59f2ccSRolandF77; PWR8-LE-NEXT: blr 126*fc59f2ccSRolandF77entry: 127*fc59f2ccSRolandF77 %0 = load <4 x i32>, ptr %p, align 16 128*fc59f2ccSRolandF77 %vecinit1 = insertelement <4 x i32> %0, i32 7, i64 1 129*fc59f2ccSRolandF77 ret <4 x i32> %vecinit1 130*fc59f2ccSRolandF77} 131*fc59f2ccSRolandF77 132*fc59f2ccSRolandF77define <2 x i64> @i64(ptr nocapture noundef readonly %p) { 133*fc59f2ccSRolandF77; PWR7-BE-LABEL: i64: 134*fc59f2ccSRolandF77; PWR7-BE: # %bb.0: # %entry 135*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvd2x v2, 0, r3 136*fc59f2ccSRolandF77; PWR7-BE-NEXT: li r3, 10 137*fc59f2ccSRolandF77; PWR7-BE-NEXT: std r3, -16(r1) 138*fc59f2ccSRolandF77; PWR7-BE-NEXT: std r3, -8(r1) 139*fc59f2ccSRolandF77; PWR7-BE-NEXT: addi r3, r1, -16 140*fc59f2ccSRolandF77; PWR7-BE-NEXT: lxvd2x v3, 0, r3 141*fc59f2ccSRolandF77; PWR7-BE-NEXT: xxmrghd v2, v2, v3 142*fc59f2ccSRolandF77; PWR7-BE-NEXT: blr 143*fc59f2ccSRolandF77; 144*fc59f2ccSRolandF77; PWR8-BE-LABEL: i64: 145*fc59f2ccSRolandF77; PWR8-BE: # %bb.0: # %entry 146*fc59f2ccSRolandF77; PWR8-BE-NEXT: lxvd2x v2, 0, r3 147*fc59f2ccSRolandF77; PWR8-BE-NEXT: li r3, 10 148*fc59f2ccSRolandF77; PWR8-BE-NEXT: mtfprd f0, r3 149*fc59f2ccSRolandF77; PWR8-BE-NEXT: xxmrghd v2, v2, vs0 150*fc59f2ccSRolandF77; PWR8-BE-NEXT: blr 151*fc59f2ccSRolandF77; 152*fc59f2ccSRolandF77; PWR8-LE-LABEL: i64: 153*fc59f2ccSRolandF77; PWR8-LE: # %bb.0: # %entry 154*fc59f2ccSRolandF77; PWR8-LE-NEXT: lxvd2x vs0, 0, r3 155*fc59f2ccSRolandF77; PWR8-LE-NEXT: li r3, 10 156*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxswapd v2, vs0 157*fc59f2ccSRolandF77; PWR8-LE-NEXT: mtfprd f0, r3 158*fc59f2ccSRolandF77; PWR8-LE-NEXT: xxpermdi v2, vs0, v2, 1 159*fc59f2ccSRolandF77; PWR8-LE-NEXT: blr 160*fc59f2ccSRolandF77entry: 161*fc59f2ccSRolandF77 %0 = load <2 x i64>, ptr %p, align 16 162*fc59f2ccSRolandF77 %vecinit1 = insertelement <2 x i64> %0, i64 10, i64 1 163*fc59f2ccSRolandF77 ret <2 x i64> %vecinit1 164*fc59f2ccSRolandF77} 165