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 -mcpu=x86-64 -mattr=-sse2 | FileCheck %s --check-prefix=SSE1 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-unknown" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_0001(<4 x float> %a, <4 x float> %b) { 7*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_0001: 8*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 9*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,0,1] 10*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 11*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 0, i32 0, i32 1> 12*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_0020(<4 x float> %a, <4 x float> %b) { 15*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_0020: 16*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 17*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,2,0] 18*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 19*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 0, i32 2, i32 0> 20*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_0300(<4 x float> %a, <4 x float> %b) { 23*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_0300: 24*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 25*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,3,0,0] 26*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 27*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 3, i32 0, i32 0> 28*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_1000(<4 x float> %a, <4 x float> %b) { 31*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_1000: 32*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 33*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,0,0,0] 34*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 35*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 0, i32 0, i32 0> 36*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_2200(<4 x float> %a, <4 x float> %b) { 39*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_2200: 40*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 41*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,2,0,0] 42*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 43*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 2, i32 0, i32 0> 44*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 45*9880d681SAndroid Build Coastguard Worker} 46*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_3330(<4 x float> %a, <4 x float> %b) { 47*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_3330: 48*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 49*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,0] 50*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 51*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 3, i32 3, i32 3, i32 0> 52*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_3210(<4 x float> %a, <4 x float> %b) { 55*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_3210: 56*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 57*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,2,1,0] 58*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 59*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 3, i32 2, i32 1, i32 0> 60*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_0011(<4 x float> %a, <4 x float> %b) { 63*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_0011: 64*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 65*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0,0,1,1] 66*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 67*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 0, i32 1, i32 1> 68*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_2233(<4 x float> %a, <4 x float> %b) { 71*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_2233: 72*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 73*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: unpckhps {{.*#+}} xmm0 = xmm0[2,2,3,3] 74*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 75*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 2, i32 2, i32 3, i32 3> 76*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 77*9880d681SAndroid Build Coastguard Worker} 78*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_0022(<4 x float> %a, <4 x float> %b) { 79*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_0022: 80*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 81*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,2,2] 82*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 83*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 0, i32 2, i32 2> 84*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_1133(<4 x float> %a, <4 x float> %b) { 87*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_1133: 88*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 89*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,3,3] 90*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 91*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 1, i32 1, i32 3, i32 3> 92*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_0145(<4 x float> %a, <4 x float> %b) { 95*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_0145: 96*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 97*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0] 98*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 99*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 4, i32 5> 100*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_6723(<4 x float> %a, <4 x float> %b) { 103*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_6723: 104*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 105*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movhlps {{.*#+}} xmm0 = xmm1[1],xmm0[1] 106*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 107*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 6, i32 7, i32 2, i32 3> 108*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_4zzz(<4 x float> %a) { 112*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_4zzz: 113*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 114*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 115*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm1 = xmm0[0],xmm1[1,2,3] 116*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps %xmm1, %xmm0 117*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 118*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> zeroinitializer, <4 x float> %a, <4 x i32> <i32 4, i32 1, i32 2, i32 3> 119*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_z4zz(<4 x float> %a) { 123*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_z4zz: 124*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 125*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 126*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0],xmm1[0,0] 127*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm1[2,3] 128*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 129*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> zeroinitializer, <4 x float> %a, <4 x i32> <i32 2, i32 4, i32 3, i32 0> 130*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 131*9880d681SAndroid Build Coastguard Worker} 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_zz4z(<4 x float> %a) { 134*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_zz4z: 135*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 136*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 137*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0],xmm1[3,0] 138*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[0,2] 139*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps %xmm1, %xmm0 140*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 141*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> zeroinitializer, <4 x float> %a, <4 x i32> <i32 0, i32 0, i32 4, i32 0> 142*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 143*9880d681SAndroid Build Coastguard Worker} 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_zuu4(<4 x float> %a) { 146*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_zuu4: 147*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 148*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 149*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,0] 150*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps %xmm1, %xmm0 151*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 152*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> zeroinitializer, <4 x float> %a, <4 x i32> <i32 0, i32 undef, i32 undef, i32 4> 153*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 154*9880d681SAndroid Build Coastguard Worker} 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_zzz7(<4 x float> %a) { 157*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_zzz7: 158*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 159*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 160*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,0],xmm1[2,0] 161*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,0] 162*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps %xmm1, %xmm0 163*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 164*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> zeroinitializer, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 2, i32 7> 165*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 166*9880d681SAndroid Build Coastguard Worker} 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_v4f32_z6zz(<4 x float> %a) { 169*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_v4f32_z6zz: 170*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 171*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 172*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm1[0,0] 173*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[2,0],xmm1[2,3] 174*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 175*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> zeroinitializer, <4 x float> %a, <4 x i32> <i32 0, i32 6, i32 2, i32 3> 176*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 177*9880d681SAndroid Build Coastguard Worker} 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @insert_reg_and_zero_v4f32(float %a) { 180*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: insert_reg_and_zero_v4f32: 181*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 182*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm1, %xmm1 183*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm1 = xmm0[0],xmm1[1,2,3] 184*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps %xmm1, %xmm0 185*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 186*9880d681SAndroid Build Coastguard Worker %v = insertelement <4 x float> undef, float %a, i32 0 187*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %v, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 5, i32 6, i32 7> 188*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 189*9880d681SAndroid Build Coastguard Worker} 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @insert_mem_and_zero_v4f32(float* %ptr) { 192*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: insert_mem_and_zero_v4f32: 193*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 194*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero 195*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 196*9880d681SAndroid Build Coastguard Worker %a = load float, float* %ptr 197*9880d681SAndroid Build Coastguard Worker %v = insertelement <4 x float> undef, float %a, i32 0 198*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %v, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 5, i32 6, i32 7> 199*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @insert_mem_lo_v4f32(<2 x float>* %ptr, <4 x float> %b) { 203*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: insert_mem_lo_v4f32: 204*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 205*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movq (%rdi), %rax 206*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movl %eax, -{{[0-9]+}}(%rsp) 207*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shrq $32, %rax 208*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movl %eax, -{{[0-9]+}}(%rsp) 209*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero 210*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero 211*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 212*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm2, %xmm2 213*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0] 214*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,1],xmm0[2,3] 215*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps %xmm1, %xmm0 216*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 217*9880d681SAndroid Build Coastguard Worker %a = load <2 x float>, <2 x float>* %ptr 218*9880d681SAndroid Build Coastguard Worker %v = shufflevector <2 x float> %a, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> 219*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %v, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 7> 220*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 221*9880d681SAndroid Build Coastguard Worker} 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @insert_mem_hi_v4f32(<2 x float>* %ptr, <4 x float> %b) { 224*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: insert_mem_hi_v4f32: 225*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 226*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movq (%rdi), %rax 227*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movl %eax, -{{[0-9]+}}(%rsp) 228*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shrq $32, %rax 229*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movl %eax, -{{[0-9]+}}(%rsp) 230*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero 231*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero 232*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1] 233*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: xorps %xmm2, %xmm2 234*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm2[0] 235*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0] 236*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 237*9880d681SAndroid Build Coastguard Worker %a = load <2 x float>, <2 x float>* %ptr 238*9880d681SAndroid Build Coastguard Worker %v = shufflevector <2 x float> %a, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> 239*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %v, <4 x float> %b, <4 x i32> <i32 4, i32 5, i32 0, i32 1> 240*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 241*9880d681SAndroid Build Coastguard Worker} 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_mem_v4f32_3210(<4 x float>* %ptr) { 244*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_mem_v4f32_3210: 245*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 246*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movaps (%rdi), %xmm0 247*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,2,1,0] 248*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 249*9880d681SAndroid Build Coastguard Worker %a = load <4 x float>, <4 x float>* %ptr 250*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0> 251*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 252*9880d681SAndroid Build Coastguard Worker} 253*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_mem_v4f32_0145(<4 x float> %a, <4 x float>* %pb) { 254*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_mem_v4f32_0145: 255*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 256*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movhps (%rdi), %xmm0 257*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 258*9880d681SAndroid Build Coastguard Worker %b = load <4 x float>, <4 x float>* %pb, align 16 259*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 4, i32 5> 260*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 261*9880d681SAndroid Build Coastguard Worker} 262*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @shuffle_mem_v4f32_6723(<4 x float> %a, <4 x float>* %pb) { 263*9880d681SAndroid Build Coastguard Worker; SSE1-LABEL: shuffle_mem_v4f32_6723: 264*9880d681SAndroid Build Coastguard Worker; SSE1: # BB#0: 265*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: movlps 8(%rdi), %xmm0 266*9880d681SAndroid Build Coastguard Worker; SSE1-NEXT: retq 267*9880d681SAndroid Build Coastguard Worker %b = load <4 x float>, <4 x float>* %pb, align 16 268*9880d681SAndroid Build Coastguard Worker %shuffle = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 6, i32 7, i32 2, i32 3> 269*9880d681SAndroid Build Coastguard Worker ret <4 x float> %shuffle 270*9880d681SAndroid Build Coastguard Worker} 271