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-linux-gnu -mcpu=corei7-avx -mattr=+avx | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Verify that the backend correctly folds a sign/zero extend of a vector where 5*9880d681SAndroid Build Coastguard Worker; elements are all constant values or UNDEFs. 6*9880d681SAndroid Build Coastguard Worker; The backend should be able to optimize all the test functions below into 7*9880d681SAndroid Build Coastguard Worker; simple loads from constant pool of the result. That is because the resulting 8*9880d681SAndroid Build Coastguard Worker; vector should be known at static time. 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test1() { 11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1: 12*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = [0,4294967295,2,4294967293] 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 15*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 16*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 17*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 18*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 19*9880d681SAndroid Build Coastguard Worker %5 = sext <4 x i8> %4 to <4 x i16> 20*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %5 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test2() { 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2: 25*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <u,4294967295,u,4294967293> 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 28*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 undef, i32 0 29*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 30*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 undef, i32 2 31*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 32*9880d681SAndroid Build Coastguard Worker %5 = sext <4 x i8> %4 to <4 x i16> 33*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %5 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test3() { 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3: 38*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = [0,4294967295,2,4294967293] 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 41*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 42*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 43*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 44*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 45*9880d681SAndroid Build Coastguard Worker %5 = sext <4 x i8> %4 to <4 x i32> 46*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %5 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test4() { 50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test4: 51*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <u,4294967295,u,4294967293> 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 54*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 undef, i32 0 55*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 56*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 undef, i32 2 57*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 58*9880d681SAndroid Build Coastguard Worker %5 = sext <4 x i8> %4 to <4 x i32> 59*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %5 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test5() { 63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test5: 64*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = [0,18446744073709551615,2,18446744073709551613] 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 67*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 68*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 69*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 70*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 71*9880d681SAndroid Build Coastguard Worker %5 = sext <4 x i8> %4 to <4 x i64> 72*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %5 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test6() { 76*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test6: 77*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = <u,18446744073709551615,u,18446744073709551613> 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 80*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 undef, i32 0 81*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 82*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 undef, i32 2 83*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 84*9880d681SAndroid Build Coastguard Worker %5 = sext <4 x i8> %4 to <4 x i64> 85*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %5 86*9880d681SAndroid Build Coastguard Worker} 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test7() { 89*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test7: 90*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <0,65535,2,65533,u,u,u,u> 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 93*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 0, i32 0 94*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 -1, i32 1 95*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 2, i32 2 96*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 97*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 4, i32 4 98*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 -5, i32 5 99*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 6, i32 6 100*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 -7, i32 7 101*9880d681SAndroid Build Coastguard Worker %9 = sext <8 x i8> %4 to <8 x i16> 102*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %9 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test8() { 106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test8: 107*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = <0,4294967295,2,4294967293,u,u,u,u> 109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 110*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 0, i32 0 111*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 -1, i32 1 112*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 2, i32 2 113*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 114*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 4, i32 4 115*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 -5, i32 5 116*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 6, i32 6 117*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 -7, i32 7 118*9880d681SAndroid Build Coastguard Worker %9 = sext <8 x i8> %4 to <8 x i32> 119*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %9 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test9() { 123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test9: 124*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <u,65535,u,65533,u,u,u,u> 126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 127*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 undef, i32 0 128*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 -1, i32 1 129*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 undef, i32 2 130*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 131*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 undef, i32 4 132*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 -5, i32 5 133*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 undef, i32 6 134*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 -7, i32 7 135*9880d681SAndroid Build Coastguard Worker %9 = sext <8 x i8> %4 to <8 x i16> 136*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %9 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test10() { 140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test10: 141*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = <0,u,2,u,u,u,u,u> 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 144*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 0, i32 0 145*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 undef, i32 1 146*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 2, i32 2 147*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 undef, i32 3 148*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 4, i32 4 149*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 undef, i32 5 150*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 6, i32 6 151*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 undef, i32 7 152*9880d681SAndroid Build Coastguard Worker %9 = sext <8 x i8> %4 to <8 x i32> 153*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %9 154*9880d681SAndroid Build Coastguard Worker} 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test11() { 157*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test11: 158*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = [0,255,2,253] 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 161*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 162*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 163*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 164*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 165*9880d681SAndroid Build Coastguard Worker %5 = zext <4 x i8> %4 to <4 x i16> 166*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %5 167*9880d681SAndroid Build Coastguard Worker} 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test12() { 170*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test12: 171*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = [0,255,2,253] 173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 174*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 175*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 176*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 177*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 178*9880d681SAndroid Build Coastguard Worker %5 = zext <4 x i8> %4 to <4 x i32> 179*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %5 180*9880d681SAndroid Build Coastguard Worker} 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test13() { 183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test13: 184*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = [0,255,2,253] 186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 187*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 188*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 189*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 190*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 191*9880d681SAndroid Build Coastguard Worker %5 = zext <4 x i8> %4 to <4 x i64> 192*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %5 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test14() { 196*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test14: 197*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <u,255,u,253> 199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 200*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 undef, i32 0 201*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 202*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 undef, i32 2 203*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 -3, i32 3 204*9880d681SAndroid Build Coastguard Worker %5 = zext <4 x i8> %4 to <4 x i16> 205*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %5 206*9880d681SAndroid Build Coastguard Worker} 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test15() { 209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test15: 210*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <0,u,2,u> 212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 213*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 0, i32 0 214*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 undef, i32 1 215*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 216*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 undef, i32 3 217*9880d681SAndroid Build Coastguard Worker %5 = zext <4 x i8> %4 to <4 x i32> 218*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %5 219*9880d681SAndroid Build Coastguard Worker} 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test16() { 222*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test16: 223*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = <u,255,2,u> 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 226*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x i8> undef, i8 undef, i32 0 227*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i8> %1, i8 -1, i32 1 228*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i8> %2, i8 2, i32 2 229*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i8> %3, i8 undef, i32 3 230*9880d681SAndroid Build Coastguard Worker %5 = zext <4 x i8> %4 to <4 x i64> 231*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %5 232*9880d681SAndroid Build Coastguard Worker} 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test17() { 235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test17: 236*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = [0,255,2,253,4,251,6,249] 238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 239*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 0, i32 0 240*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 -1, i32 1 241*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 2, i32 2 242*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 243*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 4, i32 4 244*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 -5, i32 5 245*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 6, i32 6 246*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 -7, i32 7 247*9880d681SAndroid Build Coastguard Worker %9 = zext <8 x i8> %8 to <8 x i16> 248*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %9 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test18() { 252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test18: 253*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = [0,255,2,253,4,251,6,249] 255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 256*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 0, i32 0 257*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 -1, i32 1 258*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 2, i32 2 259*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 260*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 4, i32 4 261*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 -5, i32 5 262*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 6, i32 6 263*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 -7, i32 7 264*9880d681SAndroid Build Coastguard Worker %9 = zext <8 x i8> %8 to <8 x i32> 265*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %9 266*9880d681SAndroid Build Coastguard Worker} 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test19() { 269*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test19: 270*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} xmm0 = <u,255,u,253,u,251,u,249> 272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 273*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 undef, i32 0 274*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 -1, i32 1 275*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 undef, i32 2 276*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 277*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 undef, i32 4 278*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 -5, i32 5 279*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 undef, i32 6 280*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 -7, i32 7 281*9880d681SAndroid Build Coastguard Worker %9 = zext <8 x i8> %8 to <8 x i16> 282*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %9 283*9880d681SAndroid Build Coastguard Worker} 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test20() { 286*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test20: 287*9880d681SAndroid Build Coastguard Worker; CHECK: # BB#0: 288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps {{.*#+}} ymm0 = <0,u,2,253,4,u,6,u> 289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 290*9880d681SAndroid Build Coastguard Worker %1 = insertelement <8 x i8> undef, i8 0, i32 0 291*9880d681SAndroid Build Coastguard Worker %2 = insertelement <8 x i8> %1, i8 undef, i32 1 292*9880d681SAndroid Build Coastguard Worker %3 = insertelement <8 x i8> %2, i8 2, i32 2 293*9880d681SAndroid Build Coastguard Worker %4 = insertelement <8 x i8> %3, i8 -3, i32 3 294*9880d681SAndroid Build Coastguard Worker %5 = insertelement <8 x i8> %4, i8 4, i32 4 295*9880d681SAndroid Build Coastguard Worker %6 = insertelement <8 x i8> %5, i8 undef, i32 5 296*9880d681SAndroid Build Coastguard Worker %7 = insertelement <8 x i8> %6, i8 6, i32 6 297*9880d681SAndroid Build Coastguard Worker %8 = insertelement <8 x i8> %7, i8 undef, i32 7 298*9880d681SAndroid Build Coastguard Worker %9 = zext <8 x i8> %8 to <8 x i32> 299*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %9 300*9880d681SAndroid Build Coastguard Worker} 301