1*77f62652SAndrea Di Biagio; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 -fast-isel -fast-isel-abort=1 -asm-verbose=0 | FileCheck %s 2*77f62652SAndrea Di Biagio; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -fast-isel -fast-isel-abort=1 -asm-verbose=0 | FileCheck %s 3*77f62652SAndrea Di Biagio; 4*77f62652SAndrea Di Biagio; Bitcasts between 128-bit vector types are no-ops since no instruction is 5*77f62652SAndrea Di Biagio; needed for the conversion. 6*77f62652SAndrea Di Biagio 7*77f62652SAndrea Di Biagiodefine <2 x i64> @v4i32_to_v2i64(<4 x i32> %a) { 8*77f62652SAndrea Di Biagio;CHECK-LABEL: v4i32_to_v2i64: 9*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 10*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 11*77f62652SAndrea Di Biagio %1 = bitcast <4 x i32> %a to <2 x i64> 12*77f62652SAndrea Di Biagio ret <2 x i64> %1 13*77f62652SAndrea Di Biagio} 14*77f62652SAndrea Di Biagio 15*77f62652SAndrea Di Biagiodefine <2 x i64> @v8i16_to_v2i64(<8 x i16> %a) { 16*77f62652SAndrea Di Biagio;CHECK-LABEL: v8i16_to_v2i64: 17*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 18*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 19*77f62652SAndrea Di Biagio %1 = bitcast <8 x i16> %a to <2 x i64> 20*77f62652SAndrea Di Biagio ret <2 x i64> %1 21*77f62652SAndrea Di Biagio} 22*77f62652SAndrea Di Biagio 23*77f62652SAndrea Di Biagiodefine <2 x i64> @v16i8_to_v2i64(<16 x i8> %a) { 24*77f62652SAndrea Di Biagio;CHECK-LABEL: v16i8_to_v2i64: 25*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 26*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 27*77f62652SAndrea Di Biagio %1 = bitcast <16 x i8> %a to <2 x i64> 28*77f62652SAndrea Di Biagio ret <2 x i64> %1 29*77f62652SAndrea Di Biagio} 30*77f62652SAndrea Di Biagio 31*77f62652SAndrea Di Biagiodefine <2 x i64> @v2f64_to_v2i64(<2 x double> %a) { 32*77f62652SAndrea Di Biagio;CHECK-LABEL: v2f64_to_v2i64: 33*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 34*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 35*77f62652SAndrea Di Biagio %1 = bitcast <2 x double> %a to <2 x i64> 36*77f62652SAndrea Di Biagio ret <2 x i64> %1 37*77f62652SAndrea Di Biagio} 38*77f62652SAndrea Di Biagio 39*77f62652SAndrea Di Biagiodefine <2 x i64> @v4f32_to_v2i64(<4 x float> %a) { 40*77f62652SAndrea Di Biagio;CHECK-LABEL: v4f32_to_v2i64: 41*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 42*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 43*77f62652SAndrea Di Biagio %1 = bitcast <4 x float> %a to <2 x i64> 44*77f62652SAndrea Di Biagio ret <2 x i64> %1 45*77f62652SAndrea Di Biagio} 46*77f62652SAndrea Di Biagio 47*77f62652SAndrea Di Biagiodefine <4 x i32> @v2i64_to_v4i32(<2 x i64> %a) { 48*77f62652SAndrea Di Biagio;CHECK-LABEL: v2i64_to_v4i32: 49*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 50*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 51*77f62652SAndrea Di Biagio %1 = bitcast <2 x i64> %a to <4 x i32> 52*77f62652SAndrea Di Biagio ret <4 x i32> %1 53*77f62652SAndrea Di Biagio} 54*77f62652SAndrea Di Biagio 55*77f62652SAndrea Di Biagiodefine <4 x i32> @v8i16_to_v4i32(<8 x i16> %a) { 56*77f62652SAndrea Di Biagio;CHECK-LABEL: v8i16_to_v4i32: 57*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 58*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 59*77f62652SAndrea Di Biagio %1 = bitcast <8 x i16> %a to <4 x i32> 60*77f62652SAndrea Di Biagio ret <4 x i32> %1 61*77f62652SAndrea Di Biagio} 62*77f62652SAndrea Di Biagio 63*77f62652SAndrea Di Biagiodefine <4 x i32> @v16i8_to_v4i32(<16 x i8> %a) { 64*77f62652SAndrea Di Biagio;CHECK-LABEL: v16i8_to_v4i32: 65*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 66*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 67*77f62652SAndrea Di Biagio %1 = bitcast <16 x i8> %a to <4 x i32> 68*77f62652SAndrea Di Biagio ret <4 x i32> %1 69*77f62652SAndrea Di Biagio} 70*77f62652SAndrea Di Biagio 71*77f62652SAndrea Di Biagiodefine <4 x i32> @v2f64_to_v4i32(<2 x double> %a) { 72*77f62652SAndrea Di Biagio;CHECK-LABEL: v2f64_to_v4i32: 73*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 74*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 75*77f62652SAndrea Di Biagio %1 = bitcast <2 x double> %a to <4 x i32> 76*77f62652SAndrea Di Biagio ret <4 x i32> %1 77*77f62652SAndrea Di Biagio} 78*77f62652SAndrea Di Biagio 79*77f62652SAndrea Di Biagiodefine <4 x i32> @v4f32_to_v4i32(<4 x float> %a) { 80*77f62652SAndrea Di Biagio;CHECK-LABEL: v4f32_to_v4i32: 81*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 82*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 83*77f62652SAndrea Di Biagio %1 = bitcast <4 x float> %a to <4 x i32> 84*77f62652SAndrea Di Biagio ret <4 x i32> %1 85*77f62652SAndrea Di Biagio} 86*77f62652SAndrea Di Biagio 87*77f62652SAndrea Di Biagiodefine <8 x i16> @v2i64_to_v8i16(<2 x i64> %a) { 88*77f62652SAndrea Di Biagio;CHECK-LABEL: v2i64_to_v8i16: 89*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 90*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 91*77f62652SAndrea Di Biagio %1 = bitcast <2 x i64> %a to <8 x i16> 92*77f62652SAndrea Di Biagio ret <8 x i16> %1 93*77f62652SAndrea Di Biagio} 94*77f62652SAndrea Di Biagio 95*77f62652SAndrea Di Biagiodefine <8 x i16> @v4i32_to_v8i16(<4 x i32> %a) { 96*77f62652SAndrea Di Biagio;CHECK-LABEL: v4i32_to_v8i16: 97*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 98*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 99*77f62652SAndrea Di Biagio %1 = bitcast <4 x i32> %a to <8 x i16> 100*77f62652SAndrea Di Biagio ret <8 x i16> %1 101*77f62652SAndrea Di Biagio} 102*77f62652SAndrea Di Biagio 103*77f62652SAndrea Di Biagiodefine <8 x i16> @v16i8_to_v8i16(<16 x i8> %a) { 104*77f62652SAndrea Di Biagio;CHECK-LABEL: v16i8_to_v8i16: 105*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 106*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 107*77f62652SAndrea Di Biagio %1 = bitcast <16 x i8> %a to <8 x i16> 108*77f62652SAndrea Di Biagio ret <8 x i16> %1 109*77f62652SAndrea Di Biagio} 110*77f62652SAndrea Di Biagio 111*77f62652SAndrea Di Biagiodefine <8 x i16> @v2f64_to_v8i16(<2 x double> %a) { 112*77f62652SAndrea Di Biagio;CHECK-LABEL: v2f64_to_v8i16: 113*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 114*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 115*77f62652SAndrea Di Biagio %1 = bitcast <2 x double> %a to <8 x i16> 116*77f62652SAndrea Di Biagio ret <8 x i16> %1 117*77f62652SAndrea Di Biagio} 118*77f62652SAndrea Di Biagio 119*77f62652SAndrea Di Biagiodefine <8 x i16> @v4f32_to_v8i16(<4 x float> %a) { 120*77f62652SAndrea Di Biagio;CHECK-LABEL: v4f32_to_v8i16: 121*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 122*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 123*77f62652SAndrea Di Biagio %1 = bitcast <4 x float> %a to <8 x i16> 124*77f62652SAndrea Di Biagio ret <8 x i16> %1 125*77f62652SAndrea Di Biagio} 126*77f62652SAndrea Di Biagio 127*77f62652SAndrea Di Biagiodefine <16 x i8> @v8i16_to_v16i8(<8 x i16> %a) { 128*77f62652SAndrea Di Biagio;CHECK-LABEL: v8i16_to_v16i8: 129*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 130*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 131*77f62652SAndrea Di Biagio %1 = bitcast <8 x i16> %a to <16 x i8> 132*77f62652SAndrea Di Biagio ret <16 x i8> %1 133*77f62652SAndrea Di Biagio} 134*77f62652SAndrea Di Biagio 135*77f62652SAndrea Di Biagiodefine <16 x i8> @v2i64_to_v16i8(<2 x i64> %a) { 136*77f62652SAndrea Di Biagio;CHECK-LABEL: v2i64_to_v16i8: 137*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 138*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 139*77f62652SAndrea Di Biagio %1 = bitcast <2 x i64> %a to <16 x i8> 140*77f62652SAndrea Di Biagio ret <16 x i8> %1 141*77f62652SAndrea Di Biagio} 142*77f62652SAndrea Di Biagio 143*77f62652SAndrea Di Biagiodefine <16 x i8> @v4i32_to_v16i8(<4 x i32> %a) { 144*77f62652SAndrea Di Biagio;CHECK-LABEL: v4i32_to_v16i8: 145*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 146*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 147*77f62652SAndrea Di Biagio %1 = bitcast <4 x i32> %a to <16 x i8> 148*77f62652SAndrea Di Biagio ret <16 x i8> %1 149*77f62652SAndrea Di Biagio} 150*77f62652SAndrea Di Biagio 151*77f62652SAndrea Di Biagiodefine <16 x i8> @v2f64_to_v16i8(<2 x double> %a) { 152*77f62652SAndrea Di Biagio;CHECK-LABEL: v2f64_to_v16i8: 153*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 154*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 155*77f62652SAndrea Di Biagio %1 = bitcast <2 x double> %a to <16 x i8> 156*77f62652SAndrea Di Biagio ret <16 x i8> %1 157*77f62652SAndrea Di Biagio} 158*77f62652SAndrea Di Biagio 159*77f62652SAndrea Di Biagiodefine <16 x i8> @v4f32_to_v16i8(<4 x float> %a) { 160*77f62652SAndrea Di Biagio;CHECK-LABEL: v4f32_to_v16i8: 161*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 162*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 163*77f62652SAndrea Di Biagio %1 = bitcast <4 x float> %a to <16 x i8> 164*77f62652SAndrea Di Biagio ret <16 x i8> %1 165*77f62652SAndrea Di Biagio} 166*77f62652SAndrea Di Biagio 167*77f62652SAndrea Di Biagiodefine <4 x float> @v16i8_to_v4f32(<16 x i8> %a) { 168*77f62652SAndrea Di Biagio;CHECK-LABEL: v16i8_to_v4f32: 169*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 170*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 171*77f62652SAndrea Di Biagio %1 = bitcast <16 x i8> %a to <4 x float> 172*77f62652SAndrea Di Biagio ret <4 x float> %1 173*77f62652SAndrea Di Biagio} 174*77f62652SAndrea Di Biagio 175*77f62652SAndrea Di Biagiodefine <4 x float> @v8i16_to_v4f32(<8 x i16> %a) { 176*77f62652SAndrea Di Biagio;CHECK-LABEL: v8i16_to_v4f32: 177*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 178*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 179*77f62652SAndrea Di Biagio %1 = bitcast <8 x i16> %a to <4 x float> 180*77f62652SAndrea Di Biagio ret <4 x float> %1 181*77f62652SAndrea Di Biagio} 182*77f62652SAndrea Di Biagio 183*77f62652SAndrea Di Biagiodefine <4 x float> @v2i64_to_v4f32(<2 x i64> %a) { 184*77f62652SAndrea Di Biagio;CHECK-LABEL: v2i64_to_v4f32: 185*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 186*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 187*77f62652SAndrea Di Biagio %1 = bitcast <2 x i64> %a to <4 x float> 188*77f62652SAndrea Di Biagio ret <4 x float> %1 189*77f62652SAndrea Di Biagio} 190*77f62652SAndrea Di Biagio 191*77f62652SAndrea Di Biagiodefine <4 x float> @v4i32_to_v4f32(<4 x i32> %a) { 192*77f62652SAndrea Di Biagio;CHECK-LABEL: v4i32_to_v4f32: 193*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 194*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 195*77f62652SAndrea Di Biagio %1 = bitcast <4 x i32> %a to <4 x float> 196*77f62652SAndrea Di Biagio ret <4 x float> %1 197*77f62652SAndrea Di Biagio} 198*77f62652SAndrea Di Biagio 199*77f62652SAndrea Di Biagiodefine <4 x float> @v2f64_to_v4f32(<2 x double> %a) { 200*77f62652SAndrea Di Biagio;CHECK-LABEL: v2f64_to_v4f32: 201*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 202*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 203*77f62652SAndrea Di Biagio %1 = bitcast <2 x double> %a to <4 x float> 204*77f62652SAndrea Di Biagio ret <4 x float> %1 205*77f62652SAndrea Di Biagio} 206*77f62652SAndrea Di Biagio 207*77f62652SAndrea Di Biagiodefine <2 x double> @v4f32_to_v2f64(<4 x float> %a) { 208*77f62652SAndrea Di Biagio;CHECK-LABEL: v4f32_to_v2f64: 209*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 210*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 211*77f62652SAndrea Di Biagio %1 = bitcast <4 x float> %a to <2 x double> 212*77f62652SAndrea Di Biagio ret <2 x double> %1 213*77f62652SAndrea Di Biagio} 214*77f62652SAndrea Di Biagio 215*77f62652SAndrea Di Biagiodefine <2 x double> @v16i8_to_v2f64(<16 x i8> %a) { 216*77f62652SAndrea Di Biagio;CHECK-LABEL: v16i8_to_v2f64: 217*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 218*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 219*77f62652SAndrea Di Biagio %1 = bitcast <16 x i8> %a to <2 x double> 220*77f62652SAndrea Di Biagio ret <2 x double> %1 221*77f62652SAndrea Di Biagio} 222*77f62652SAndrea Di Biagio 223*77f62652SAndrea Di Biagiodefine <2 x double> @v8i16_to_v2f64(<8 x i16> %a) { 224*77f62652SAndrea Di Biagio;CHECK-LABEL: v8i16_to_v2f64: 225*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 226*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 227*77f62652SAndrea Di Biagio %1 = bitcast <8 x i16> %a to <2 x double> 228*77f62652SAndrea Di Biagio ret <2 x double> %1 229*77f62652SAndrea Di Biagio} 230*77f62652SAndrea Di Biagio 231*77f62652SAndrea Di Biagiodefine <2 x double> @v2i64_to_v2f64(<2 x i64> %a) { 232*77f62652SAndrea Di Biagio;CHECK-LABEL: v2i64_to_v2f64: 233*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 234*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 235*77f62652SAndrea Di Biagio %1 = bitcast <2 x i64> %a to <2 x double> 236*77f62652SAndrea Di Biagio ret <2 x double> %1 237*77f62652SAndrea Di Biagio} 238*77f62652SAndrea Di Biagio 239*77f62652SAndrea Di Biagiodefine <2 x double> @v4i32_to_v2f64(<4 x i32> %a) { 240*77f62652SAndrea Di Biagio;CHECK-LABEL: v4i32_to_v2f64: 241*77f62652SAndrea Di Biagio;CHECK-NEXT: .cfi_startproc 242*77f62652SAndrea Di Biagio;CHECK-NEXT: ret 243*77f62652SAndrea Di Biagio %1 = bitcast <4 x i32> %a to <2 x double> 244*77f62652SAndrea Di Biagio ret <2 x double> %1 245*77f62652SAndrea Di Biagio} 246