40 lines · plain
1; RUN: llc -mtriple=x86_64-apple-darwin -mattr=+sse2 < %s | FileCheck --check-prefix=SSE2-CODEGEN %s2; RUN: opt -mtriple=x86_64-apple-darwin -mattr=+sse2 -passes="print<cost-model>" 2>&1 -disable-output < %s | FileCheck --check-prefix=SSE2 %s3 4define <4 x i32> @shl(<4 x i32> %vector, i32 %scalar) {5entry:6 ; SSE2: 'shl'7 ; SSE2: cost of 2 {{.*}} shl8 ; SSE2-CODEGEN: movd %edi, %xmm19 ; SSE2-CODEGEN: pslld %xmm1, %xmm010 %insert = insertelement <4 x i32> undef, i32 %scalar, i32 011 %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer12 %ret = shl <4 x i32> %vector , %splat13 ret <4 x i32> %ret14}15 16define <4 x i32> @ashr(<4 x i32> %vector, i32 %scalar) {17entry:18 ; SSE2: 'ashr'19 ; SSE2: cost of 2 {{.*}} ashr20 ; SSE2-CODEGEN: movd %edi, %xmm121 ; SSE2-CODEGEN: psrad %xmm1, %xmm022 %insert = insertelement <4 x i32> undef, i32 %scalar, i32 023 %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer24 %ret = ashr <4 x i32> %vector , %splat25 ret <4 x i32> %ret26}27 28define <4 x i32> @lshr(<4 x i32> %vector, i32 %scalar) {29entry:30 ; SSE2: 'lshr'31 ; SSE2: cost of 2 {{.*}} lshr32 ; SSE2-CODEGEN: movd %edi, %xmm133 ; SSE2-CODEGEN: psrld %xmm1, %xmm034 %insert = insertelement <4 x i32> undef, i32 %scalar, i32 035 %splat = shufflevector <4 x i32> %insert, <4 x i32> undef, <4 x i32> zeroinitializer36 %ret = lshr <4 x i32> %vector , %splat37 ret <4 x i32> %ret38}39 40