; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx | FileCheck %s ;;; Shift left ; CHECK: vpslld ; CHECK: vpslld define <8 x i32> @vshift00(<8 x i32> %a) nounwind readnone { %s = shl <8 x i32> %a, ret <8 x i32> %s } ; CHECK: vpsllw ; CHECK: vpsllw define <16 x i16> @vshift01(<16 x i16> %a) nounwind readnone { %s = shl <16 x i16> %a, ret <16 x i16> %s } ; CHECK: vpsllq ; CHECK: vpsllq define <4 x i64> @vshift02(<4 x i64> %a) nounwind readnone { %s = shl <4 x i64> %a, ret <4 x i64> %s } ;;; Logical Shift right ; CHECK: vpsrld ; CHECK: vpsrld define <8 x i32> @vshift03(<8 x i32> %a) nounwind readnone { %s = lshr <8 x i32> %a, ret <8 x i32> %s } ; CHECK: vpsrlw ; CHECK: vpsrlw define <16 x i16> @vshift04(<16 x i16> %a) nounwind readnone { %s = lshr <16 x i16> %a, ret <16 x i16> %s } ; CHECK: vpsrlq ; CHECK: vpsrlq define <4 x i64> @vshift05(<4 x i64> %a) nounwind readnone { %s = lshr <4 x i64> %a, ret <4 x i64> %s } ;;; Arithmetic Shift right ; CHECK: vpsrad ; CHECK: vpsrad define <8 x i32> @vshift06(<8 x i32> %a) nounwind readnone { %s = ashr <8 x i32> %a, ret <8 x i32> %s } ; CHECK: vpsraw ; CHECK: vpsraw define <16 x i16> @vshift07(<16 x i16> %a) nounwind readnone { %s = ashr <16 x i16> %a, ret <16 x i16> %s } ;;; Support variable shifts ; CHECK: _vshift08 ; CHECK: vextractf128 $1 ; CHECK: vpslld $23 ; CHECK: vextractf128 $1 ; CHECK: vpslld $23 define <8 x i32> @vshift08(<8 x i32> %a) nounwind { %bitop = shl <8 x i32> , %a ret <8 x i32> %bitop }