1; RUN: llc < %s -march=x86 -mattr=sse4.1 -mcpu=nehalem -stack-alignment=16 > %t
2; RUN: grep pmul %t | count 12
3; RUN: grep mov %t | count 14
4
5define <4 x i32> @a(<4 x i32> %i) nounwind  {
6        %A = mul <4 x i32> %i, < i32 117, i32 117, i32 117, i32 117 >
7        ret <4 x i32> %A
8}
9define <2 x i64> @b(<2 x i64> %i) nounwind  {
10        %A = mul <2 x i64> %i, < i64 117, i64 117 >
11        ret <2 x i64> %A
12}
13define <4 x i32> @c(<4 x i32> %i, <4 x i32> %j) nounwind  {
14        %A = mul <4 x i32> %i, %j
15        ret <4 x i32> %A
16}
17define <2 x i64> @d(<2 x i64> %i, <2 x i64> %j) nounwind  {
18        %A = mul <2 x i64> %i, %j
19        ret <2 x i64> %A
20}
21; Use a call to force spills.
22declare void @foo()
23define <4 x i32> @e(<4 x i32> %i, <4 x i32> %j) nounwind  {
24        call void @foo()
25        %A = mul <4 x i32> %i, %j
26        ret <4 x i32> %A
27}
28define <2 x i64> @f(<2 x i64> %i, <2 x i64> %j) nounwind  {
29        call void @foo()
30        %A = mul <2 x i64> %i, %j
31        ret <2 x i64> %A
32}
33