1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE2 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+sse3 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE3 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+ssse3 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSSE3 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+sse4.1 | FileCheck %s --check-prefix=ALL --check-prefix=SSE --check-prefix=SSE41 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+avx | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX1 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX2 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 10*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-unknown" 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @insert_v2f64_z1(<2 x double> %a) { 13*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v2f64_z1: 14*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 15*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorpd %xmm1, %xmm1 16*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 17*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 18*9880d681SAndroid Build Coastguard Worker; 19*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v2f64_z1: 20*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 21*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorpd %xmm1, %xmm1 22*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 23*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 24*9880d681SAndroid Build Coastguard Worker; 25*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v2f64_z1: 26*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 27*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorpd %xmm1, %xmm1 28*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 29*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 30*9880d681SAndroid Build Coastguard Worker; 31*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v2f64_z1: 32*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 33*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: xorpd %xmm1, %xmm1 34*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: blendpd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 35*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 36*9880d681SAndroid Build Coastguard Worker; 37*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: insert_v2f64_z1: 38*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: 39*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vxorpd %xmm1, %xmm1, %xmm1 40*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendpd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 41*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 42*9880d681SAndroid Build Coastguard Worker %1 = insertelement <2 x double> %a, double 0.0, i32 0 43*9880d681SAndroid Build Coastguard Worker ret <2 x double> %1 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @insert_v4f64_0zz3(<4 x double> %a) { 47*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v4f64_0zz3: 48*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 49*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorpd %xmm2, %xmm2 50*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0] 51*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 52*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 53*9880d681SAndroid Build Coastguard Worker; 54*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v4f64_0zz3: 55*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 56*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorpd %xmm2, %xmm2 57*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0] 58*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 59*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 60*9880d681SAndroid Build Coastguard Worker; 61*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v4f64_0zz3: 62*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 63*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorpd %xmm2, %xmm2 64*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0] 65*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 66*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 67*9880d681SAndroid Build Coastguard Worker; 68*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v4f64_0zz3: 69*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 70*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero 71*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: xorpd %xmm2, %xmm2 72*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: blendpd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 73*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 74*9880d681SAndroid Build Coastguard Worker; 75*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: insert_v4f64_0zz3: 76*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: 77*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vxorpd %ymm1, %ymm1, %ymm1 78*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendpd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2],ymm0[3] 79*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 80*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x double> %a, double 0.0, i32 1 81*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x double> %1, double 0.0, i32 2 82*9880d681SAndroid Build Coastguard Worker ret <4 x double> %2 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @insert_v2i64_z1(<2 x i64> %a) { 86*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v2i64_z1: 87*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 88*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorpd %xmm1, %xmm1 89*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 90*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 91*9880d681SAndroid Build Coastguard Worker; 92*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v2i64_z1: 93*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 94*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorpd %xmm1, %xmm1 95*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 96*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 97*9880d681SAndroid Build Coastguard Worker; 98*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v2i64_z1: 99*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 100*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorpd %xmm1, %xmm1 101*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1] 102*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 103*9880d681SAndroid Build Coastguard Worker; 104*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v2i64_z1: 105*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 106*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm1, %xmm1 107*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7] 108*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 109*9880d681SAndroid Build Coastguard Worker; 110*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_v2i64_z1: 111*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 112*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 113*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0,1,2,3],xmm0[4,5,6,7] 114*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 115*9880d681SAndroid Build Coastguard Worker; 116*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_v2i64_z1: 117*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 118*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1 119*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3] 120*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 121*9880d681SAndroid Build Coastguard Worker %1 = insertelement <2 x i64> %a, i64 0, i32 0 122*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %1 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @insert_v4i64_01z3(<4 x i64> %a) { 126*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v4i64_01z3: 127*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 128*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorpd %xmm2, %xmm2 129*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 130*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 131*9880d681SAndroid Build Coastguard Worker; 132*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v4i64_01z3: 133*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 134*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorpd %xmm2, %xmm2 135*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 136*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 137*9880d681SAndroid Build Coastguard Worker; 138*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v4i64_01z3: 139*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 140*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorpd %xmm2, %xmm2 141*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movsd {{.*#+}} xmm1 = xmm2[0],xmm1[1] 142*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 143*9880d681SAndroid Build Coastguard Worker; 144*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v4i64_01z3: 145*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 146*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 147*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm2[0,1,2,3],xmm1[4,5,6,7] 148*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 149*9880d681SAndroid Build Coastguard Worker; 150*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_v4i64_01z3: 151*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 152*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vxorpd %ymm1, %ymm1, %ymm1 153*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendpd {{.*#+}} ymm0 = ymm0[0,1],ymm1[2],ymm0[3] 154*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 155*9880d681SAndroid Build Coastguard Worker; 156*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_v4i64_01z3: 157*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 158*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpxor %ymm1, %ymm1, %ymm1 159*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm1[4,5],ymm0[6,7] 160*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 161*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i64> %a, i64 0, i32 2 162*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %1 163*9880d681SAndroid Build Coastguard Worker} 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @insert_v4f32_01z3(<4 x float> %a) { 166*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v4f32_01z3: 167*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 168*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorps %xmm1, %xmm1 169*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0] 170*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2] 171*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 172*9880d681SAndroid Build Coastguard Worker; 173*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v4f32_01z3: 174*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 175*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorps %xmm1, %xmm1 176*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0] 177*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2] 178*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 179*9880d681SAndroid Build Coastguard Worker; 180*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v4f32_01z3: 181*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 182*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorps %xmm1, %xmm1 183*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0] 184*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2] 185*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 186*9880d681SAndroid Build Coastguard Worker; 187*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v4f32_01z3: 188*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 189*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: xorps %xmm1, %xmm1 190*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: blendps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3] 191*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 192*9880d681SAndroid Build Coastguard Worker; 193*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: insert_v4f32_01z3: 194*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: 195*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1 196*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3] 197*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 198*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x float> %a, float 0.0, i32 2 199*9880d681SAndroid Build Coastguard Worker ret <4 x float> %1 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @insert_v8f32_z12345z7(<8 x float> %a) { 203*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v8f32_z12345z7: 204*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 205*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorps %xmm2, %xmm2 206*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 207*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[3,0] 208*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm2[0,2] 209*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 210*9880d681SAndroid Build Coastguard Worker; 211*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v8f32_z12345z7: 212*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 213*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorps %xmm2, %xmm2 214*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 215*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[3,0] 216*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm2[0,2] 217*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 218*9880d681SAndroid Build Coastguard Worker; 219*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v8f32_z12345z7: 220*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 221*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorps %xmm2, %xmm2 222*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 223*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[3,0] 224*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm2[0,2] 225*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 226*9880d681SAndroid Build Coastguard Worker; 227*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v8f32_z12345z7: 228*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 229*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: xorps %xmm2, %xmm2 230*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: blendps {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 231*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: blendps {{.*#+}} xmm1 = xmm1[0,1],xmm2[2],xmm1[3] 232*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 233*9880d681SAndroid Build Coastguard Worker; 234*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: insert_v8f32_z12345z7: 235*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: 236*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vxorps %ymm1, %ymm1, %ymm1 237*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3,4,5],ymm1[6],ymm0[7] 238*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 239*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x float> %a, float 0.0, i32 0 240*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x float> %1, float 0.0, i32 6 241*9880d681SAndroid Build Coastguard Worker ret <8 x float> %2 242*9880d681SAndroid Build Coastguard Worker} 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @insert_v4i32_01z3(<4 x i32> %a) { 245*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v4i32_01z3: 246*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 247*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorl %eax, %eax 248*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm1 249*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0] 250*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2] 251*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 252*9880d681SAndroid Build Coastguard Worker; 253*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v4i32_01z3: 254*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 255*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorl %eax, %eax 256*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movd %eax, %xmm1 257*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0] 258*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2] 259*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 260*9880d681SAndroid Build Coastguard Worker; 261*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v4i32_01z3: 262*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 263*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorl %eax, %eax 264*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm1 265*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[3,0] 266*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,1],xmm1[0,2] 267*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 268*9880d681SAndroid Build Coastguard Worker; 269*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v4i32_01z3: 270*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 271*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm1, %xmm1 272*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5],xmm0[6,7] 273*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 274*9880d681SAndroid Build Coastguard Worker; 275*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_v4i32_01z3: 276*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 277*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 278*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5],xmm0[6,7] 279*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 280*9880d681SAndroid Build Coastguard Worker; 281*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_v4i32_01z3: 282*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 283*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1 284*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0,1],xmm1[2],xmm0[3] 285*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 286*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i32> %a, i32 0, i32 2 287*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %1 288*9880d681SAndroid Build Coastguard Worker} 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @insert_v8i32_z12345z7(<8 x i32> %a) { 291*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v8i32_z12345z7: 292*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 293*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorps %xmm2, %xmm2 294*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 295*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorl %eax, %eax 296*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm2 297*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[3,0] 298*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm2[0,2] 299*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 300*9880d681SAndroid Build Coastguard Worker; 301*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v8i32_z12345z7: 302*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 303*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorps %xmm2, %xmm2 304*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 305*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorl %eax, %eax 306*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movd %eax, %xmm2 307*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[3,0] 308*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm2[0,2] 309*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 310*9880d681SAndroid Build Coastguard Worker; 311*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v8i32_z12345z7: 312*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 313*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorps %xmm2, %xmm2 314*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movss {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3] 315*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorl %eax, %eax 316*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm2 317*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[3,0] 318*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm2[0,2] 319*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 320*9880d681SAndroid Build Coastguard Worker; 321*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v8i32_z12345z7: 322*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 323*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 324*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0,1],xmm0[2,3,4,5,6,7] 325*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1,2,3],xmm2[4,5],xmm1[6,7] 326*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 327*9880d681SAndroid Build Coastguard Worker; 328*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_v8i32_z12345z7: 329*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 330*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vxorps %ymm1, %ymm1, %ymm1 331*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3,4,5],ymm1[6],ymm0[7] 332*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 333*9880d681SAndroid Build Coastguard Worker; 334*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_v8i32_z12345z7: 335*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 336*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpxor %ymm1, %ymm1, %ymm1 337*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0],ymm0[1,2,3,4,5],ymm1[6],ymm0[7] 338*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 339*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i32> %a, i32 0, i32 0 340*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i32> %1, i32 0, i32 6 341*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %2 342*9880d681SAndroid Build Coastguard Worker} 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @insert_v8i16_z12345z7(<8 x i16> %a) { 345*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v8i16_z12345z7: 346*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 347*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorl %eax, %eax 348*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pinsrw $0, %eax, %xmm0 349*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pinsrw $6, %eax, %xmm0 350*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 351*9880d681SAndroid Build Coastguard Worker; 352*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v8i16_z12345z7: 353*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 354*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorl %eax, %eax 355*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pinsrw $0, %eax, %xmm0 356*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pinsrw $6, %eax, %xmm0 357*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 358*9880d681SAndroid Build Coastguard Worker; 359*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v8i16_z12345z7: 360*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 361*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorl %eax, %eax 362*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pinsrw $0, %eax, %xmm0 363*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pinsrw $6, %eax, %xmm0 364*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 365*9880d681SAndroid Build Coastguard Worker; 366*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v8i16_z12345z7: 367*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 368*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm1, %xmm1 369*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5],xmm1[6],xmm0[7] 370*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 371*9880d681SAndroid Build Coastguard Worker; 372*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: insert_v8i16_z12345z7: 373*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: 374*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1 375*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3,4,5],xmm1[6],xmm0[7] 376*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 377*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i16> %a, i16 0, i32 0 378*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i16> %1, i16 0, i32 6 379*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %2 380*9880d681SAndroid Build Coastguard Worker} 381*9880d681SAndroid Build Coastguard Worker 382*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @insert_v16i16_z12345z789ABZDEz(<16 x i16> %a) { 383*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v16i16_z12345z789ABZDEz: 384*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 385*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorl %eax, %eax 386*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pinsrw $0, %eax, %xmm0 387*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pinsrw $6, %eax, %xmm0 388*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pinsrw $7, %eax, %xmm1 389*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 390*9880d681SAndroid Build Coastguard Worker; 391*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v16i16_z12345z789ABZDEz: 392*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 393*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorl %eax, %eax 394*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pinsrw $0, %eax, %xmm0 395*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pinsrw $6, %eax, %xmm0 396*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pinsrw $7, %eax, %xmm1 397*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 398*9880d681SAndroid Build Coastguard Worker; 399*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v16i16_z12345z789ABZDEz: 400*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 401*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorl %eax, %eax 402*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pinsrw $0, %eax, %xmm0 403*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pinsrw $6, %eax, %xmm0 404*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pinsrw $7, %eax, %xmm1 405*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 406*9880d681SAndroid Build Coastguard Worker; 407*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v16i16_z12345z789ABZDEz: 408*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 409*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pxor %xmm2, %xmm2 410*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm0 = xmm2[0],xmm0[1,2,3,4,5],xmm2[6],xmm0[7] 411*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6],xmm2[7] 412*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 413*9880d681SAndroid Build Coastguard Worker; 414*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_v16i16_z12345z789ABZDEz: 415*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 416*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpxor %xmm1, %xmm1, %xmm1 417*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm1[0],xmm0[1,2,3,4,5,6,7] 418*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7] 419*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5],xmm1[6],xmm0[7] 420*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7] 421*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm2 422*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6],xmm1[7] 423*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 424*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 425*9880d681SAndroid Build Coastguard Worker; 426*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_v16i16_z12345z789ABZDEz: 427*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 428*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1 429*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm1[0],xmm0[1,2,3,4,5,6,7] 430*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7] 431*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm2 = xmm0[0,1,2,3,4,5],xmm1[6],xmm0[7] 432*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm2[0,1,2,3],ymm0[4,5,6,7] 433*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2 434*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} xmm1 = xmm2[0,1,2,3,4,5,6],xmm1[7] 435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 436*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 437*9880d681SAndroid Build Coastguard Worker %1 = insertelement <16 x i16> %a, i16 0, i32 0 438*9880d681SAndroid Build Coastguard Worker %2 = insertelement <16 x i16> %1, i16 0, i32 6 439*9880d681SAndroid Build Coastguard Worker %3 = insertelement <16 x i16> %2, i16 0, i32 15 440*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %3 441*9880d681SAndroid Build Coastguard Worker} 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @insert_v16i8_z123456789ABZDEz(<16 x i8> %a) { 444*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v16i8_z123456789ABZDEz: 445*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 446*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 447*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm1, %xmm0 448*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorl %eax, %eax 449*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm2 450*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pandn %xmm2, %xmm1 451*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: por %xmm1, %xmm0 452*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0] 453*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm1, %xmm0 454*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0] 455*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pandn %xmm2, %xmm1 456*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: por %xmm1, %xmm0 457*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 458*9880d681SAndroid Build Coastguard Worker; 459*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v16i8_z123456789ABZDEz: 460*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 461*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movdqa {{.*#+}} xmm1 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 462*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pand %xmm1, %xmm0 463*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorl %eax, %eax 464*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movd %eax, %xmm2 465*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pandn %xmm2, %xmm1 466*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: por %xmm1, %xmm0 467*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movdqa {{.*#+}} xmm1 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0] 468*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pand %xmm1, %xmm0 469*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pslldq {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0] 470*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pandn %xmm2, %xmm1 471*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: por %xmm1, %xmm0 472*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 473*9880d681SAndroid Build Coastguard Worker; 474*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v16i8_z123456789ABZDEz: 475*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 476*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = zero,xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 477*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorl %eax, %eax 478*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm1 479*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm1, %xmm2 480*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 481*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: por %xmm2, %xmm0 482*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],zero 483*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0] 484*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: por %xmm1, %xmm0 485*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 486*9880d681SAndroid Build Coastguard Worker; 487*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v16i8_z123456789ABZDEz: 488*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 489*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: xorl %eax, %eax 490*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $0, %eax, %xmm0 491*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm0 492*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 493*9880d681SAndroid Build Coastguard Worker; 494*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: insert_v16i8_z123456789ABZDEz: 495*9880d681SAndroid Build Coastguard Worker; AVX: # BB#0: 496*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 497*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpinsrb $0, %eax, %xmm0, %xmm0 498*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 499*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retq 500*9880d681SAndroid Build Coastguard Worker %1 = insertelement <16 x i8> %a, i8 0, i32 0 501*9880d681SAndroid Build Coastguard Worker %2 = insertelement <16 x i8> %1, i8 0, i32 15 502*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %2 503*9880d681SAndroid Build Coastguard Worker} 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz(<32 x i8> %a) { 506*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz: 507*9880d681SAndroid Build Coastguard Worker; SSE2: # BB#0: 508*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 509*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm2, %xmm0 510*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: xorl %eax, %eax 511*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movd %eax, %xmm3 512*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pandn %xmm3, %xmm2 513*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: por %xmm2, %xmm0 514*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0] 515*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm2, %xmm0 516*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa %xmm3, %xmm4 517*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslldq {{.*#+}} xmm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm4[0] 518*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255] 519*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm5, %xmm1 520*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pslldq {{.*#+}} xmm3 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm3[0,1] 521*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pandn %xmm3, %xmm5 522*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: por %xmm5, %xmm1 523*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pand %xmm2, %xmm1 524*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: pandn %xmm4, %xmm2 525*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: por %xmm2, %xmm0 526*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: por %xmm2, %xmm1 527*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT: retq 528*9880d681SAndroid Build Coastguard Worker; 529*9880d681SAndroid Build Coastguard Worker; SSE3-LABEL: insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz: 530*9880d681SAndroid Build Coastguard Worker; SSE3: # BB#0: 531*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movdqa {{.*#+}} xmm2 = [0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255] 532*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pand %xmm2, %xmm0 533*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: xorl %eax, %eax 534*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movd %eax, %xmm3 535*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pandn %xmm3, %xmm2 536*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: por %xmm2, %xmm0 537*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0] 538*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pand %xmm2, %xmm0 539*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movdqa %xmm3, %xmm4 540*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pslldq {{.*#+}} xmm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm4[0] 541*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255] 542*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pand %xmm5, %xmm1 543*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pslldq {{.*#+}} xmm3 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm3[0,1] 544*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pandn %xmm3, %xmm5 545*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: por %xmm5, %xmm1 546*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pand %xmm2, %xmm1 547*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: pandn %xmm4, %xmm2 548*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: por %xmm2, %xmm0 549*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: por %xmm2, %xmm1 550*9880d681SAndroid Build Coastguard Worker; SSE3-NEXT: retq 551*9880d681SAndroid Build Coastguard Worker; 552*9880d681SAndroid Build Coastguard Worker; SSSE3-LABEL: insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz: 553*9880d681SAndroid Build Coastguard Worker; SSSE3: # BB#0: 554*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = zero,xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 555*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: xorl %eax, %eax 556*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movd %eax, %xmm2 557*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm3 558*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero 559*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: por %xmm3, %xmm0 560*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,128] 561*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb %xmm3, %xmm0 562*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: movdqa %xmm2, %xmm4 563*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm4 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm4[0] 564*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: por %xmm4, %xmm0 565*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm1 = xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13],zero,xmm1[15] 566*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb {{.*#+}} xmm2 = zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,xmm2[0],zero 567*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: por %xmm2, %xmm1 568*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: pshufb %xmm3, %xmm1 569*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: por %xmm4, %xmm1 570*9880d681SAndroid Build Coastguard Worker; SSSE3-NEXT: retq 571*9880d681SAndroid Build Coastguard Worker; 572*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz: 573*9880d681SAndroid Build Coastguard Worker; SSE41: # BB#0: 574*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: xorl %eax, %eax 575*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $0, %eax, %xmm0 576*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm0 577*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $14, %eax, %xmm1 578*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: pinsrb $15, %eax, %xmm1 579*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT: retq 580*9880d681SAndroid Build Coastguard Worker; 581*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz: 582*9880d681SAndroid Build Coastguard Worker; AVX1: # BB#0: 583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: xorl %eax, %eax 584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $0, %eax, %xmm0, %xmm1 585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7] 586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $15, %eax, %xmm0, %xmm1 587*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7] 588*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1 589*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 590*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 591*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 592*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 593*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT: retq 594*9880d681SAndroid Build Coastguard Worker; 595*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: insert_v32i8_z123456789ABCDEzGHIJKLMNOPQRSTzz: 596*9880d681SAndroid Build Coastguard Worker; AVX2: # BB#0: 597*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: xorl %eax, %eax 598*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $0, %eax, %xmm0, %xmm1 599*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7] 600*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $15, %eax, %xmm0, %xmm1 601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7] 602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1 603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1 604*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 605*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 606*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0 607*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retq 608*9880d681SAndroid Build Coastguard Worker %1 = insertelement <32 x i8> %a, i8 0, i32 0 609*9880d681SAndroid Build Coastguard Worker %2 = insertelement <32 x i8> %1, i8 0, i32 15 610*9880d681SAndroid Build Coastguard Worker %3 = insertelement <32 x i8> %2, i8 0, i32 30 611*9880d681SAndroid Build Coastguard Worker %4 = insertelement <32 x i8> %3, i8 0, i32 31 612*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %4 613*9880d681SAndroid Build Coastguard Worker} 614