1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx | FileCheck %s
6 define <8 x i32> @vshift00(<8 x i32> %a) nounwind readnone {
7 %s = shl <8 x i32> %a, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32
14 define <16 x i16> @vshift01(<16 x i16> %a) nounwind readnone {
15 %s = shl <16 x i16> %a, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
21 define <4 x i64> @vshift02(<4 x i64> %a) nounwind readnone {
22 %s = shl <4 x i64> %a, <i64 2, i64 2, i64 2, i64 2>
26 ;;; Logical Shift right
29 define <8 x i32> @vshift03(<8 x i32> %a) nounwind readnone {
30 %s = lshr <8 x i32> %a, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32
37 define <16 x i16> @vshift04(<16 x i16> %a) nounwind readnone {
38 %s = lshr <16 x i16> %a, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
44 define <4 x i64> @vshift05(<4 x i64> %a) nounwind readnone {
45 %s = lshr <4 x i64> %a, <i64 2, i64 2, i64 2, i64 2>
49 ;;; Arithmetic Shift right
52 define <8 x i32> @vshift06(<8 x i32> %a) nounwind readnone {
53 %s = ashr <8 x i32> %a, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32
60 define <16 x i16> @vshift07(<16 x i16> %a) nounwind readnone {
61 %s = ashr <16 x i16> %a, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
73 define <32 x i8> @vshift09(<32 x i8> %a) nounwind readnone {
74 %s = ashr <32 x i8> %a, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
81 define <32 x i8> @vshift10(<32 x i8> %a) nounwind readnone {
82 %s = ashr <32 x i8> %a, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
90 define <32 x i8> @vshift11(<32 x i8> %a) nounwind readnone {
91 %s = lshr <32 x i8> %a, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
99 define <32 x i8> @vshift12(<32 x i8> %a) nounwind readnone {
100 %s = shl <32 x i8> %a, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
104 ;;; Support variable shifts
106 ; CHECK: vextractf128 $1
109 define <8 x i32> @vshift08(<8 x i32> %a) nounwind {
110 %bitop = shl <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %a
118 ; CHECK-NEXT: vpmulld
119 define <4 x i32> @vshift13(<4 x i32> %in) {
120 %T = shl <4 x i32> %in, <i32 0, i32 1, i32 2, i32 4>
124 ;;; Uses shifts for sign extension
125 ; CHECK: _sext_v16i16
131 define <16 x i16> @sext_v16i16(<16 x i16> %a) nounwind {
132 %b = trunc <16 x i16> %a to <16 x i8>
133 %c = sext <16 x i8> %b to <16 x i16>
143 define <8 x i32> @sext_v8i32(<8 x i32> %a) nounwind {
144 %b = trunc <8 x i32> %a to <8 x i16>
145 %c = sext <8 x i16> %b to <8 x i32>