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
108 ; CHECK: vextractf128 $1
110 define <8 x i32> @vshift08(<8 x i32> %a) nounwind {
111 %bitop = shl <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %a
115 ;;; Uses shifts for sign extension
116 ; CHECK: _sext_v16i16
122 define <16 x i16> @sext_v16i16(<16 x i16> %a) nounwind {
123 %b = trunc <16 x i16> %a to <16 x i8>
124 %c = sext <16 x i8> %b to <16 x i16>
134 define <8 x i32> @sext_v8i32(<8 x i32> %a) nounwind {
135 %b = trunc <8 x i32> %a to <8 x i16>
136 %c = sext <8 x i16> %b to <8 x i32>