1*f818ec9dSZarko Todorovski; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-ibm-aix-xcoff -vec-extabi \ 2*f818ec9dSZarko Todorovski; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefix=CHECK-64 3*f818ec9dSZarko Todorovski; RUN: llc -mcpu=pwr9 -mtriple=powerpc-ibm-aix-xcoff -vec-extabi \ 4*f818ec9dSZarko Todorovski; RUN: -verify-machineinstrs < %s | FileCheck %s --check-prefix=CHECK-32 5*f818ec9dSZarko Todorovski 6*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 7*f818ec9dSZarko Todorovskientry: 8*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_fET1_S1_S1_ 9*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 10*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 11*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 4, i32 1, i32 2, i32 3> 12*f818ec9dSZarko Todorovski ret <4 x float> %vecins 13*f818ec9dSZarko Todorovski} 14*f818ec9dSZarko Todorovski 15*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 16*f818ec9dSZarko Todorovskientry: 17*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_fET1_S1_S1_ 18*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 19*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0 20*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 5, i32 1, i32 2, i32 3> 21*f818ec9dSZarko Todorovski ret <4 x float> %vecins 22*f818ec9dSZarko Todorovski} 23*f818ec9dSZarko Todorovski 24*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 25*f818ec9dSZarko Todorovskientry: 26*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_fET1_S1_S1_ 27*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 28*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 29*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 6, i32 1, i32 2, i32 3> 30*f818ec9dSZarko Todorovski ret <4 x float> %vecins 31*f818ec9dSZarko Todorovski} 32*f818ec9dSZarko Todorovski 33*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 34*f818ec9dSZarko Todorovskientry: 35*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_fET1_S1_S1_ 36*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 37*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 38*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 7, i32 1, i32 2, i32 3> 39*f818ec9dSZarko Todorovski ret <4 x float> %vecins 40*f818ec9dSZarko Todorovski} 41*f818ec9dSZarko Todorovski 42*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 43*f818ec9dSZarko Todorovskientry: 44*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_fET1_S1_S1_ 45*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 46*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 47*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 3> 48*f818ec9dSZarko Todorovski ret <4 x float> %vecins 49*f818ec9dSZarko Todorovski} 50*f818ec9dSZarko Todorovski 51*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 52*f818ec9dSZarko Todorovskientry: 53*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_fET1_S1_S1_ 54*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 55*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4 56*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 5, i32 2, i32 3> 57*f818ec9dSZarko Todorovski ret <4 x float> %vecins 58*f818ec9dSZarko Todorovski} 59*f818ec9dSZarko Todorovski 60*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 61*f818ec9dSZarko Todorovskientry: 62*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_fET1_S1_S1_ 63*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 64*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 65*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 6, i32 2, i32 3> 66*f818ec9dSZarko Todorovski ret <4 x float> %vecins 67*f818ec9dSZarko Todorovski} 68*f818ec9dSZarko Todorovski 69*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 70*f818ec9dSZarko Todorovskientry: 71*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_fET1_S1_S1_ 72*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 73*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 74*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 7, i32 2, i32 3> 75*f818ec9dSZarko Todorovski ret <4 x float> %vecins 76*f818ec9dSZarko Todorovski} 77*f818ec9dSZarko Todorovski 78*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 79*f818ec9dSZarko Todorovskientry: 80*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_fET1_S1_S1_ 81*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 82*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 83*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 4, i32 3> 84*f818ec9dSZarko Todorovski ret <4 x float> %vecins 85*f818ec9dSZarko Todorovski} 86*f818ec9dSZarko Todorovski 87*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 88*f818ec9dSZarko Todorovskientry: 89*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_fET1_S1_S1_ 90*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 91*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8 92*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 5, i32 3> 93*f818ec9dSZarko Todorovski ret <4 x float> %vecins 94*f818ec9dSZarko Todorovski} 95*f818ec9dSZarko Todorovski 96*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 97*f818ec9dSZarko Todorovskientry: 98*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_fET1_S1_S1_ 99*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 100*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 101*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 3> 102*f818ec9dSZarko Todorovski ret <4 x float> %vecins 103*f818ec9dSZarko Todorovski} 104*f818ec9dSZarko Todorovski 105*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 106*f818ec9dSZarko Todorovskientry: 107*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_fET1_S1_S1_ 108*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 109*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 110*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 7, i32 3> 111*f818ec9dSZarko Todorovski ret <4 x float> %vecins 112*f818ec9dSZarko Todorovski} 113*f818ec9dSZarko Todorovski 114*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj0EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 115*f818ec9dSZarko Todorovskientry: 116*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_fET1_S1_S1_ 117*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 118*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 119*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 4> 120*f818ec9dSZarko Todorovski ret <4 x float> %vecins 121*f818ec9dSZarko Todorovski} 122*f818ec9dSZarko Todorovski 123*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj1EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 124*f818ec9dSZarko Todorovskientry: 125*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_fET1_S1_S1_ 126*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 127*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12 128*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 5> 129*f818ec9dSZarko Todorovski ret <4 x float> %vecins 130*f818ec9dSZarko Todorovski} 131*f818ec9dSZarko Todorovski 132*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj2EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 133*f818ec9dSZarko Todorovskientry: 134*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_fET1_S1_S1_ 135*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 136*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 137*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 6> 138*f818ec9dSZarko Todorovski ret <4 x float> %vecins 139*f818ec9dSZarko Todorovski} 140*f818ec9dSZarko Todorovski 141*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj3EDv4_fET1_S1_S1_(<4 x float> %a, <4 x float> %b) { 142*f818ec9dSZarko Todorovskientry: 143*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_fET1_S1_S1_ 144*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 145*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 146*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 7> 147*f818ec9dSZarko Todorovski ret <4 x float> %vecins 148*f818ec9dSZarko Todorovski} 149*f818ec9dSZarko Todorovski 150*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 151*f818ec9dSZarko Todorovskientry: 152*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_jET1_S1_S1_ 153*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 154*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 155*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 4, i32 1, i32 2, i32 3> 156*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 157*f818ec9dSZarko Todorovski} 158*f818ec9dSZarko Todorovski 159*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 160*f818ec9dSZarko Todorovskientry: 161*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_jET1_S1_S1_ 162*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 163*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0 164*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 5, i32 1, i32 2, i32 3> 165*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 166*f818ec9dSZarko Todorovski} 167*f818ec9dSZarko Todorovski 168*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 169*f818ec9dSZarko Todorovskientry: 170*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_jET1_S1_S1_ 171*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 172*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 173*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 6, i32 1, i32 2, i32 3> 174*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 175*f818ec9dSZarko Todorovski} 176*f818ec9dSZarko Todorovski 177*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 178*f818ec9dSZarko Todorovskientry: 179*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_jET1_S1_S1_ 180*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 181*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 182*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 7, i32 1, i32 2, i32 3> 183*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 184*f818ec9dSZarko Todorovski} 185*f818ec9dSZarko Todorovski 186*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 187*f818ec9dSZarko Todorovskientry: 188*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_jET1_S1_S1_ 189*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 190*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 191*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 4, i32 2, i32 3> 192*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 193*f818ec9dSZarko Todorovski} 194*f818ec9dSZarko Todorovski 195*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 196*f818ec9dSZarko Todorovskientry: 197*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_jET1_S1_S1_ 198*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 199*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4 200*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 5, i32 2, i32 3> 201*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 202*f818ec9dSZarko Todorovski} 203*f818ec9dSZarko Todorovski 204*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 205*f818ec9dSZarko Todorovskientry: 206*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_jET1_S1_S1_ 207*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 208*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 209*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 6, i32 2, i32 3> 210*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 211*f818ec9dSZarko Todorovski} 212*f818ec9dSZarko Todorovski 213*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 214*f818ec9dSZarko Todorovskientry: 215*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_jET1_S1_S1_ 216*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 217*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 218*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 7, i32 2, i32 3> 219*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 220*f818ec9dSZarko Todorovski} 221*f818ec9dSZarko Todorovski 222*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 223*f818ec9dSZarko Todorovskientry: 224*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_jET1_S1_S1_ 225*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 226*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 227*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 4, i32 3> 228*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 229*f818ec9dSZarko Todorovski} 230*f818ec9dSZarko Todorovski 231*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 232*f818ec9dSZarko Todorovskientry: 233*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_jET1_S1_S1_ 234*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 235*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8 236*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 5, i32 3> 237*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 238*f818ec9dSZarko Todorovski} 239*f818ec9dSZarko Todorovski 240*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 241*f818ec9dSZarko Todorovskientry: 242*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_jET1_S1_S1_ 243*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 244*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 245*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 6, i32 3> 246*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 247*f818ec9dSZarko Todorovski} 248*f818ec9dSZarko Todorovski 249*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 250*f818ec9dSZarko Todorovskientry: 251*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_jET1_S1_S1_ 252*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 253*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 254*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 7, i32 3> 255*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 256*f818ec9dSZarko Todorovski} 257*f818ec9dSZarko Todorovski 258*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj0EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 259*f818ec9dSZarko Todorovskientry: 260*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_jET1_S1_S1_ 261*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 262*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 263*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 4> 264*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 265*f818ec9dSZarko Todorovski} 266*f818ec9dSZarko Todorovski 267*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj1EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 268*f818ec9dSZarko Todorovskientry: 269*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_jET1_S1_S1_ 270*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 271*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12 272*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 5> 273*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 274*f818ec9dSZarko Todorovski} 275*f818ec9dSZarko Todorovski 276*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj2EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 277*f818ec9dSZarko Todorovskientry: 278*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_jET1_S1_S1_ 279*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 280*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 281*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 6> 282*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 283*f818ec9dSZarko Todorovski} 284*f818ec9dSZarko Todorovski 285*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj3EDv4_jET1_S1_S1_(<4 x i32> %a, <4 x i32> %b) { 286*f818ec9dSZarko Todorovskientry: 287*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_jET1_S1_S1_ 288*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 289*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 290*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %a, <4 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 7> 291*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 292*f818ec9dSZarko Todorovski} 293*f818ec9dSZarko Todorovski 294*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj0EEfDv4_j(<4 x i32> %a) { 295*f818ec9dSZarko Todorovskientry: 296*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj0EEfDv4_j 297*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 0 298*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0 299*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj0EEfDv4_j 300*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3 301*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0 302*f818ec9dSZarko Todorovski %vecext = extractelement <4 x i32> %a, i32 0 303*f818ec9dSZarko Todorovski %conv = uitofp i32 %vecext to float 304*f818ec9dSZarko Todorovski ret float %conv 305*f818ec9dSZarko Todorovski} 306*f818ec9dSZarko Todorovski 307*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj1EEfDv4_j(<4 x i32> %a) { 308*f818ec9dSZarko Todorovskientry: 309*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj1EEfDv4_j 310*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 4 311*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0 312*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj1EEfDv4_j 313*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3 314*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0 315*f818ec9dSZarko Todorovski %vecext = extractelement <4 x i32> %a, i32 1 316*f818ec9dSZarko Todorovski %conv = uitofp i32 %vecext to float 317*f818ec9dSZarko Todorovski ret float %conv 318*f818ec9dSZarko Todorovski} 319*f818ec9dSZarko Todorovski 320*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj2EEfDv4_j(<4 x i32> %a) { 321*f818ec9dSZarko Todorovskientry: 322*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj2EEfDv4_j 323*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 8 324*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0 325*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj2EEfDv4_j 326*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3 327*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0 328*f818ec9dSZarko Todorovski %vecext = extractelement <4 x i32> %a, i32 2 329*f818ec9dSZarko Todorovski %conv = uitofp i32 %vecext to float 330*f818ec9dSZarko Todorovski ret float %conv 331*f818ec9dSZarko Todorovski} 332*f818ec9dSZarko Todorovski 333*f818ec9dSZarko Todorovskidefine float @_Z13testUiToFpExtILj3EEfDv4_j(<4 x i32> %a) { 334*f818ec9dSZarko Todorovskientry: 335*f818ec9dSZarko Todorovski; CHECK-64-LABEL: _Z13testUiToFpExtILj3EEfDv4_j 336*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw 0, 34, 12 337*f818ec9dSZarko Todorovski; CHECK-64: xscvuxdsp 1, 0 338*f818ec9dSZarko Todorovski; CHECK-32-LABEL: _Z13testUiToFpExtILj3EEfDv4_j 339*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx 0, 0, 3 340*f818ec9dSZarko Todorovski; CHECK-32: xscvuxdsp 1, 0 341*f818ec9dSZarko Todorovski %vecext = extractelement <4 x i32> %a, i32 3 342*f818ec9dSZarko Todorovski %conv = uitofp i32 %vecext to float 343*f818ec9dSZarko Todorovski ret float %conv 344*f818ec9dSZarko Todorovski} 345*f818ec9dSZarko Todorovski 346*f818ec9dSZarko Todorovski; Verify we generate optimal code for unsigned vector int elem extract followed 347*f818ec9dSZarko Todorovski; by conversion to double 348*f818ec9dSZarko Todorovski 349*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui0(<4 x i32> %a) { 350*f818ec9dSZarko Todorovskientry: 351*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui0 352*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 0 353*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]] 354*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui0 355*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3 356*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]] 357*f818ec9dSZarko Todorovski %0 = extractelement <4 x i32> %a, i32 0 358*f818ec9dSZarko Todorovski %1 = uitofp i32 %0 to double 359*f818ec9dSZarko Todorovski ret double %1 360*f818ec9dSZarko Todorovski} 361*f818ec9dSZarko Todorovski 362*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui1(<4 x i32> %a) { 363*f818ec9dSZarko Todorovskientry: 364*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui1 365*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 4 366*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]] 367*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui1 368*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3 369*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]] 370*f818ec9dSZarko Todorovski %0 = extractelement <4 x i32> %a, i32 1 371*f818ec9dSZarko Todorovski %1 = uitofp i32 %0 to double 372*f818ec9dSZarko Todorovski ret double %1 373*f818ec9dSZarko Todorovski} 374*f818ec9dSZarko Todorovski 375*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui2(<4 x i32> %a) { 376*f818ec9dSZarko Todorovskientry: 377*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui2 378*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 8 379*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]] 380*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui2 381*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3 382*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]] 383*f818ec9dSZarko Todorovski %0 = extractelement <4 x i32> %a, i32 2 384*f818ec9dSZarko Todorovski %1 = uitofp i32 %0 to double 385*f818ec9dSZarko Todorovski ret double %1 386*f818ec9dSZarko Todorovski} 387*f818ec9dSZarko Todorovski 388*f818ec9dSZarko Todorovskidefine double @conv2dlbTestui3(<4 x i32> %a) { 389*f818ec9dSZarko Todorovskientry: 390*f818ec9dSZarko Todorovski; CHECK-64-LABEL: conv2dlbTestui3 391*f818ec9dSZarko Todorovski; CHECK-64: xxextractuw [[CP64:[0-9]+]], 34, 12 392*f818ec9dSZarko Todorovski; CHECK-64: xscvuxddp 1, [[CP64]] 393*f818ec9dSZarko Todorovski; CHECK-32-LABEL: conv2dlbTestui3 394*f818ec9dSZarko Todorovski; CHECK-32: lfiwzx [[CP32:[0-9]+]], 0, 3 395*f818ec9dSZarko Todorovski; CHECK-32: xscvuxddp 1, [[CP32]] 396*f818ec9dSZarko Todorovski %0 = extractelement <4 x i32> %a, i32 3 397*f818ec9dSZarko Todorovski %1 = uitofp i32 %0 to double 398*f818ec9dSZarko Todorovski ret double %1 399*f818ec9dSZarko Todorovski} 400*f818ec9dSZarko Todorovski 401*f818ec9dSZarko Todorovski; verify we don't crash for variable elem extract 402*f818ec9dSZarko Todorovskidefine double @conv2dlbTestuiVar(<4 x i32> %a, i32 zeroext %elem) { 403*f818ec9dSZarko Todorovskientry: 404*f818ec9dSZarko Todorovski %vecext = extractelement <4 x i32> %a, i32 %elem 405*f818ec9dSZarko Todorovski %conv = uitofp i32 %vecext to double 406*f818ec9dSZarko Todorovski ret double %conv 407*f818ec9dSZarko Todorovski} 408*f818ec9dSZarko Todorovski 409*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj0EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) { 410*f818ec9dSZarko Todorovskientry: 411*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj0EDv4_ffET0_S1_T1_ 412*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1 413*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3 414*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 415*f818ec9dSZarko Todorovski %vecins = insertelement <4 x float> %a, float %b, i32 0 416*f818ec9dSZarko Todorovski ret <4 x float> %vecins 417*f818ec9dSZarko Todorovski} 418*f818ec9dSZarko Todorovski 419*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj1EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) { 420*f818ec9dSZarko Todorovskientry: 421*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj1EDv4_ffET0_S1_T1_ 422*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1 423*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3 424*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 425*f818ec9dSZarko Todorovski %vecins = insertelement <4 x float> %a, float %b, i32 1 426*f818ec9dSZarko Todorovski ret <4 x float> %vecins 427*f818ec9dSZarko Todorovski} 428*f818ec9dSZarko Todorovski 429*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj2EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) { 430*f818ec9dSZarko Todorovskientry: 431*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj2EDv4_ffET0_S1_T1_ 432*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1 433*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3 434*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 435*f818ec9dSZarko Todorovski %vecins = insertelement <4 x float> %a, float %b, i32 2 436*f818ec9dSZarko Todorovski ret <4 x float> %vecins 437*f818ec9dSZarko Todorovski} 438*f818ec9dSZarko Todorovski 439*f818ec9dSZarko Todorovskidefine <4 x float> @_Z10testInsEltILj3EDv4_ffET0_S1_T1_(<4 x float> %a, float %b) { 440*f818ec9dSZarko Todorovskientry: 441*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj3EDv4_ffET0_S1_T1_ 442*f818ec9dSZarko Todorovski; CHECK: xscvdpspn 0, 1 443*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 0, 0, 3 444*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 445*f818ec9dSZarko Todorovski %vecins = insertelement <4 x float> %a, float %b, i32 3 446*f818ec9dSZarko Todorovski ret <4 x float> %vecins 447*f818ec9dSZarko Todorovski} 448*f818ec9dSZarko Todorovski 449*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj0EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) { 450*f818ec9dSZarko Todorovskientry: 451*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj0EDv4_jjET0_S1_T1_ 452*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3 453*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 454*f818ec9dSZarko Todorovski %vecins = insertelement <4 x i32> %a, i32 %b, i32 0 455*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 456*f818ec9dSZarko Todorovski} 457*f818ec9dSZarko Todorovski 458*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj1EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) { 459*f818ec9dSZarko Todorovskientry: 460*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj1EDv4_jjET0_S1_T1_ 461*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3 462*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 463*f818ec9dSZarko Todorovski %vecins = insertelement <4 x i32> %a, i32 %b, i32 1 464*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 465*f818ec9dSZarko Todorovski} 466*f818ec9dSZarko Todorovski 467*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj2EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) { 468*f818ec9dSZarko Todorovskientry: 469*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj2EDv4_jjET0_S1_T1_ 470*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3 471*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 472*f818ec9dSZarko Todorovski %vecins = insertelement <4 x i32> %a, i32 %b, i32 2 473*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 474*f818ec9dSZarko Todorovski} 475*f818ec9dSZarko Todorovski 476*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z10testInsEltILj3EDv4_jjET0_S1_T1_(<4 x i32> %a, i32 zeroext %b) { 477*f818ec9dSZarko Todorovskientry: 478*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z10testInsEltILj3EDv4_jjET0_S1_T1_ 479*f818ec9dSZarko Todorovski; CHECK: mtfprwz 0, 3 480*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 481*f818ec9dSZarko Todorovski %vecins = insertelement <4 x i32> %a, i32 %b, i32 3 482*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 483*f818ec9dSZarko Todorovski} 484*f818ec9dSZarko Todorovski 485*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 486*f818ec9dSZarko Todorovskientry: 487*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_fET1_S1_S1_ 488*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 489*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 490*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 0, i32 5, i32 6, i32 7> 491*f818ec9dSZarko Todorovski ret <4 x float> %vecins 492*f818ec9dSZarko Todorovski} 493*f818ec9dSZarko Todorovski 494*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 495*f818ec9dSZarko Todorovskientry: 496*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_fET1_S1_S1_ 497*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 498*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0 499*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 1, i32 5, i32 6, i32 7> 500*f818ec9dSZarko Todorovski ret <4 x float> %vecins 501*f818ec9dSZarko Todorovski} 502*f818ec9dSZarko Todorovski 503*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 504*f818ec9dSZarko Todorovskientry: 505*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_fET1_S1_S1_ 506*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 507*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 508*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 2, i32 5, i32 6, i32 7> 509*f818ec9dSZarko Todorovski ret <4 x float> %vecins 510*f818ec9dSZarko Todorovski} 511*f818ec9dSZarko Todorovski 512*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj0ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 513*f818ec9dSZarko Todorovskientry: 514*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_fET1_S1_S1_ 515*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 516*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 517*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 3, i32 5, i32 6, i32 7> 518*f818ec9dSZarko Todorovski ret <4 x float> %vecins 519*f818ec9dSZarko Todorovski} 520*f818ec9dSZarko Todorovski 521*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 522*f818ec9dSZarko Todorovskientry: 523*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_fET1_S1_S1_ 524*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 525*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 526*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 0, i32 6, i32 7> 527*f818ec9dSZarko Todorovski ret <4 x float> %vecins 528*f818ec9dSZarko Todorovski} 529*f818ec9dSZarko Todorovski 530*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 531*f818ec9dSZarko Todorovskientry: 532*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_fET1_S1_S1_ 533*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 534*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4 535*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 1, i32 6, i32 7> 536*f818ec9dSZarko Todorovski ret <4 x float> %vecins 537*f818ec9dSZarko Todorovski} 538*f818ec9dSZarko Todorovski 539*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 540*f818ec9dSZarko Todorovskientry: 541*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_fET1_S1_S1_ 542*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 543*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 544*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 2, i32 6, i32 7> 545*f818ec9dSZarko Todorovski ret <4 x float> %vecins 546*f818ec9dSZarko Todorovski} 547*f818ec9dSZarko Todorovski 548*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj1ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 549*f818ec9dSZarko Todorovskientry: 550*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_fET1_S1_S1_ 551*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 552*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 553*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 3, i32 6, i32 7> 554*f818ec9dSZarko Todorovski ret <4 x float> %vecins 555*f818ec9dSZarko Todorovski} 556*f818ec9dSZarko Todorovski 557*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 558*f818ec9dSZarko Todorovskientry: 559*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_fET1_S1_S1_ 560*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 561*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 562*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 0, i32 7> 563*f818ec9dSZarko Todorovski ret <4 x float> %vecins 564*f818ec9dSZarko Todorovski} 565*f818ec9dSZarko Todorovski 566*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 567*f818ec9dSZarko Todorovskientry: 568*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_fET1_S1_S1_ 569*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 570*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8 571*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 1, i32 7> 572*f818ec9dSZarko Todorovski ret <4 x float> %vecins 573*f818ec9dSZarko Todorovski} 574*f818ec9dSZarko Todorovski 575*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 576*f818ec9dSZarko Todorovskientry: 577*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_fET1_S1_S1_ 578*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 579*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 580*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 2, i32 7> 581*f818ec9dSZarko Todorovski ret <4 x float> %vecins 582*f818ec9dSZarko Todorovski} 583*f818ec9dSZarko Todorovski 584*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj2ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 585*f818ec9dSZarko Todorovskientry: 586*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_fET1_S1_S1_ 587*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 588*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 589*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 3, i32 7> 590*f818ec9dSZarko Todorovski ret <4 x float> %vecins 591*f818ec9dSZarko Todorovski} 592*f818ec9dSZarko Todorovski 593*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj0EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 594*f818ec9dSZarko Todorovskientry: 595*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_fET1_S1_S1_ 596*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 597*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 598*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 0> 599*f818ec9dSZarko Todorovski ret <4 x float> %vecins 600*f818ec9dSZarko Todorovski} 601*f818ec9dSZarko Todorovski 602*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj1EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 603*f818ec9dSZarko Todorovskientry: 604*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_fET1_S1_S1_ 605*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 606*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12 607*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 1> 608*f818ec9dSZarko Todorovski ret <4 x float> %vecins 609*f818ec9dSZarko Todorovski} 610*f818ec9dSZarko Todorovski 611*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj2EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 612*f818ec9dSZarko Todorovskientry: 613*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_fET1_S1_S1_ 614*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 615*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 616*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 2> 617*f818ec9dSZarko Todorovski ret <4 x float> %vecins 618*f818ec9dSZarko Todorovski} 619*f818ec9dSZarko Todorovski 620*f818ec9dSZarko Todorovskidefine <4 x float> @_Z7testInsILj3ELj3EDv4_fET1_S1_S1_r(<4 x float> %a, <4 x float> %b) { 621*f818ec9dSZarko Todorovskientry: 622*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_fET1_S1_S1_ 623*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 624*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 625*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %b, <4 x float> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 3> 626*f818ec9dSZarko Todorovski ret <4 x float> %vecins 627*f818ec9dSZarko Todorovski} 628*f818ec9dSZarko Todorovski 629*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 630*f818ec9dSZarko Todorovskientry: 631*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj0EDv4_jET1_S1_S1_ 632*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 633*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 634*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 0, i32 5, i32 6, i32 7> 635*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 636*f818ec9dSZarko Todorovski} 637*f818ec9dSZarko Todorovski 638*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 639*f818ec9dSZarko Todorovskientry: 640*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj1EDv4_jET1_S1_S1_ 641*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 642*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 0 643*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 1, i32 5, i32 6, i32 7> 644*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 645*f818ec9dSZarko Todorovski} 646*f818ec9dSZarko Todorovski 647*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 648*f818ec9dSZarko Todorovskientry: 649*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj2EDv4_jET1_S1_S1_ 650*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 651*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 652*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 2, i32 5, i32 6, i32 7> 653*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 654*f818ec9dSZarko Todorovski} 655*f818ec9dSZarko Todorovski 656*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj0ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 657*f818ec9dSZarko Todorovskientry: 658*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj0ELj3EDv4_jET1_S1_S1_ 659*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 660*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 0 661*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 3, i32 5, i32 6, i32 7> 662*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 663*f818ec9dSZarko Todorovski} 664*f818ec9dSZarko Todorovski 665*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 666*f818ec9dSZarko Todorovskientry: 667*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj0EDv4_jET1_S1_S1_ 668*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 669*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 670*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 0, i32 6, i32 7> 671*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 672*f818ec9dSZarko Todorovski} 673*f818ec9dSZarko Todorovski 674*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 675*f818ec9dSZarko Todorovskientry: 676*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj1EDv4_jET1_S1_S1_ 677*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 678*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 4 679*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 1, i32 6, i32 7> 680*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 681*f818ec9dSZarko Todorovski} 682*f818ec9dSZarko Todorovski 683*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 684*f818ec9dSZarko Todorovskientry: 685*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj2EDv4_jET1_S1_S1_ 686*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 687*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 688*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 2, i32 6, i32 7> 689*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 690*f818ec9dSZarko Todorovski} 691*f818ec9dSZarko Todorovski 692*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj1ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 693*f818ec9dSZarko Todorovskientry: 694*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj1ELj3EDv4_jET1_S1_S1_ 695*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 696*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 4 697*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 3, i32 6, i32 7> 698*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 699*f818ec9dSZarko Todorovski} 700*f818ec9dSZarko Todorovski 701*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 702*f818ec9dSZarko Todorovskientry: 703*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj0EDv4_jET1_S1_S1_ 704*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 705*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 706*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 0, i32 7> 707*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 708*f818ec9dSZarko Todorovski} 709*f818ec9dSZarko Todorovski 710*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 711*f818ec9dSZarko Todorovskientry: 712*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj1EDv4_jET1_S1_S1_ 713*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 714*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 8 715*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 1, i32 7> 716*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 717*f818ec9dSZarko Todorovski} 718*f818ec9dSZarko Todorovski 719*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 720*f818ec9dSZarko Todorovskientry: 721*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj2EDv4_jET1_S1_S1_ 722*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 723*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 724*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 2, i32 7> 725*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 726*f818ec9dSZarko Todorovski} 727*f818ec9dSZarko Todorovski 728*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj2ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 729*f818ec9dSZarko Todorovskientry: 730*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj2ELj3EDv4_jET1_S1_S1_ 731*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 732*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 8 733*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 3, i32 7> 734*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 735*f818ec9dSZarko Todorovski} 736*f818ec9dSZarko Todorovski 737*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj0EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 738*f818ec9dSZarko Todorovskientry: 739*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj0EDv4_jET1_S1_S1_ 740*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 3 741*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 742*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 0> 743*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 744*f818ec9dSZarko Todorovski} 745*f818ec9dSZarko Todorovski 746*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj1EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 747*f818ec9dSZarko Todorovskientry: 748*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj1EDv4_jET1_S1_S1_ 749*f818ec9dSZarko Todorovski; CHECK-NOT: xxsldwi 750*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 35, 12 751*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 1> 752*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 753*f818ec9dSZarko Todorovski} 754*f818ec9dSZarko Todorovski 755*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj2EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 756*f818ec9dSZarko Todorovskientry: 757*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj2EDv4_jET1_S1_S1_ 758*f818ec9dSZarko Todorovski; CHECK: xxsldwi 0, 35, 35, 1 759*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 760*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 2> 761*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 762*f818ec9dSZarko Todorovski} 763*f818ec9dSZarko Todorovski 764*f818ec9dSZarko Todorovskidefine <4 x i32> @_Z7testInsILj3ELj3EDv4_jET1_S1_S1_r(<4 x i32> %a, <4 x i32> %b) { 765*f818ec9dSZarko Todorovskientry: 766*f818ec9dSZarko Todorovski; CHECK-LABEL: _Z7testInsILj3ELj3EDv4_jET1_S1_S1_ 767*f818ec9dSZarko Todorovski; CHECK: xxswapd 0, 35 768*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 0, 12 769*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x i32> %b, <4 x i32> %a, <4 x i32> <i32 4, i32 5, i32 6, i32 3> 770*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 771*f818ec9dSZarko Todorovski} 772*f818ec9dSZarko Todorovskidefine <4 x float> @testSameVecEl0BE(<4 x float> %a) { 773*f818ec9dSZarko Todorovskientry: 774*f818ec9dSZarko Todorovski; CHECK-LABEL: testSameVecEl0BE 775*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 34, 0 776*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 5, i32 1, i32 2, i32 3> 777*f818ec9dSZarko Todorovski ret <4 x float> %vecins 778*f818ec9dSZarko Todorovski} 779*f818ec9dSZarko Todorovskidefine <4 x float> @testSameVecEl2BE(<4 x float> %a) { 780*f818ec9dSZarko Todorovskientry: 781*f818ec9dSZarko Todorovski; CHECK-LABEL: testSameVecEl2BE 782*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 34, 8 783*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 5, i32 3> 784*f818ec9dSZarko Todorovski ret <4 x float> %vecins 785*f818ec9dSZarko Todorovski} 786*f818ec9dSZarko Todorovskidefine <4 x float> @testSameVecEl3BE(<4 x float> %a) { 787*f818ec9dSZarko Todorovskientry: 788*f818ec9dSZarko Todorovski; CHECK-LABEL: testSameVecEl3BE 789*f818ec9dSZarko Todorovski; CHECK: xxinsertw 34, 34, 12 790*f818ec9dSZarko Todorovski %vecins = shufflevector <4 x float> %a, <4 x float> %a, <4 x i32> <i32 0, i32 1, i32 2, i32 5> 791*f818ec9dSZarko Todorovski ret <4 x float> %vecins 792*f818ec9dSZarko Todorovski} 793*f818ec9dSZarko Todorovskidefine <4 x float> @insertVarF(<4 x float> %a, float %f, i32 %el) { 794*f818ec9dSZarko Todorovskientry: 795*f818ec9dSZarko Todorovski; CHECK-LABEL: insertVarF 796*f818ec9dSZarko Todorovski; CHECK: stfsx 1, 797*f818ec9dSZarko Todorovski; CHECK: lxv 798*f818ec9dSZarko Todorovski %vecins = insertelement <4 x float> %a, float %f, i32 %el 799*f818ec9dSZarko Todorovski ret <4 x float> %vecins 800*f818ec9dSZarko Todorovski} 801*f818ec9dSZarko Todorovskidefine <4 x i32> @insertVarI(<4 x i32> %a, i32 %i, i32 %el) { 802*f818ec9dSZarko Todorovskientry: 803*f818ec9dSZarko Todorovski; CHECK-LABEL: insertVarI 804*f818ec9dSZarko Todorovski; CHECK: stwx 805*f818ec9dSZarko Todorovski; CHECK: lxv 806*f818ec9dSZarko Todorovski %vecins = insertelement <4 x i32> %a, i32 %i, i32 %el 807*f818ec9dSZarko Todorovski ret <4 x i32> %vecins 808*f818ec9dSZarko Todorovski} 809