[x86] FileCheck-ize this test.
[oota-llvm.git] / test / CodeGen / X86 / pmul.ll
1 ; RUN: llc < %s -march=x86 -mattr=sse4.1 -mcpu=nehalem -stack-alignment=16 | FileCheck %s
2
3 define <4 x i32> @a(<4 x i32> %i) nounwind  {
4 ; CHECK-LABEL: a:
5 ; CHECK:         pmulld
6 ; CHECK-NEXT:    retl
7 entry:
8   %A = mul <4 x i32> %i, < i32 117, i32 117, i32 117, i32 117 >
9   ret <4 x i32> %A
10 }
11
12 define <2 x i64> @b(<2 x i64> %i) nounwind  {
13 ; CHECK-LABEL: b:
14 ; CHECK:         pmuludq
15 ; CHECK:         pmuludq
16 ; CHECK:         pmuludq
17 entry:
18   %A = mul <2 x i64> %i, < i64 117, i64 117 >
19   ret <2 x i64> %A
20 }
21
22 define <4 x i32> @c(<4 x i32> %i, <4 x i32> %j) nounwind  {
23 ; CHECK-LABEL: c:
24 ; CHECK:         pmulld
25 ; CHECK-NEXT:    retl
26 entry:
27   %A = mul <4 x i32> %i, %j
28   ret <4 x i32> %A
29 }
30
31 define <2 x i64> @d(<2 x i64> %i, <2 x i64> %j) nounwind  {
32 ; CHECK-LABEL: d:
33 ; CHECK:         pmuludq
34 ; CHECK:         pmuludq
35 ; CHECK:         pmuludq
36 entry:
37   %A = mul <2 x i64> %i, %j
38   ret <2 x i64> %A
39 }
40
41 declare void @foo()
42
43 define <4 x i32> @e(<4 x i32> %i, <4 x i32> %j) nounwind  {
44 ; CHECK-LABEL: e:
45 ; CHECK:         pmulld {{[0-9]+}}(%esp), %xmm
46 ; CHECK-NEXT:    addl ${{[0-9]+}}, %esp
47 ; CHECK-NEXT:    retl
48 entry:
49   ; Use a call to force spills.
50   call void @foo()
51   %A = mul <4 x i32> %i, %j
52   ret <4 x i32> %A
53 }
54
55 define <2 x i64> @f(<2 x i64> %i, <2 x i64> %j) nounwind  {
56 ; CHECK-LABEL: f:
57 ; CHECK:         pmuludq
58 ; CHECK:         pmuludq
59 ; CHECK:         pmuludq
60 entry:
61   ; Use a call to force spills.
62   call void @foo()
63   %A = mul <2 x i64> %i, %j
64   ret <2 x i64> %A
65 }