61cc1ff186a911d6b88bc5a115de7a99360fd266
[oota-llvm.git] / test / CodeGen / X86 / vec_reassociate.ll
1 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mattr=+sse4.1 | FileCheck %s\r
2 \r
3 define <4 x i32> @add_4i32(<4 x i32> %a0, <4 x i32> %a1) {\r
4   ;CHECK-LABEL:  @add_4i32\r
5   ;CHECK:        # BB#0:\r
6   ;CHECK-NEXT:   paddd %xmm1, %xmm0\r
7   ;CHECK-NEXT:   retq\r
8   %1 = add <4 x i32> %a0, <i32  1, i32 -2, i32  3, i32 -4>\r
9   %2 = add <4 x i32> %a1, <i32 -1, i32  2, i32 -3, i32  4>\r
10   %3 = add <4 x i32> %1, %2\r
11   ret <4 x i32> %3\r
12 }\r
13 \r
14 define <4 x i32> @mul_4i32(<4 x i32> %a0, <4 x i32> %a1) {\r
15   ;CHECK-LABEL:  @mul_4i32\r
16   ;CHECK:        # BB#0:\r
17   ;CHECK-NEXT:   pmulld %xmm1, %xmm0\r
18   ;CHECK-NEXT:   pmulld .LCPI1_0(%rip), %xmm0\r
19   ;CHECK-NEXT:   retq\r
20   %1 = mul <4 x i32> %a0, <i32 1, i32 2, i32 3, i32 4>\r
21   %2 = mul <4 x i32> %a1, <i32 4, i32 3, i32 2, i32 1>\r
22   %3 = mul <4 x i32> %1, %2\r
23   ret <4 x i32> %3\r
24 }\r
25 \r
26 define <4 x i32> @and_4i32(<4 x i32> %a0, <4 x i32> %a1) {\r
27   ;CHECK-LABEL:  @and_4i32\r
28   ;CHECK:        # BB#0:\r
29   ;CHECK-NEXT:   andps %xmm1, %xmm0\r
30   ;CHECK-NEXT:   andps .LCPI2_0(%rip), %xmm0\r
31   ;CHECK-NEXT:   retq\r
32   %1 = and <4 x i32> %a0, <i32 -2, i32 -2, i32  3, i32  3>\r
33   %2 = and <4 x i32> %a1, <i32 -1, i32 -1, i32  1, i32  1>\r
34   %3 = and <4 x i32> %1, %2\r
35   ret <4 x i32> %3\r
36 }\r
37 \r
38 define <4 x i32> @or_4i32(<4 x i32> %a0, <4 x i32> %a1) {\r
39   ;CHECK-LABEL:  @or_4i32\r
40   ;CHECK:        # BB#0:\r
41   ;CHECK-NEXT:   orps %xmm1, %xmm0\r
42   ;CHECK-NEXT:   orps .LCPI3_0(%rip), %xmm0\r
43   ;CHECK-NEXT:   retq\r
44   %1 = or <4 x i32> %a0, <i32 -2, i32 -2, i32  3, i32  3>\r
45   %2 = or <4 x i32> %a1, <i32 -1, i32 -1, i32  1, i32  1>\r
46   %3 = or <4 x i32> %1, %2\r
47   ret <4 x i32> %3\r
48 }\r
49 \r
50 define <4 x i32> @xor_4i32(<4 x i32> %a0, <4 x i32> %a1) {\r
51   ;CHECK-LABEL:  @xor_4i32\r
52   ;CHECK:        # BB#0:\r
53   ;CHECK-NEXT:   xorps %xmm1, %xmm0\r
54   ;CHECK-NEXT:   xorps .LCPI4_0(%rip), %xmm0\r
55   ;CHECK-NEXT:   retq\r
56   %1 = xor <4 x i32> %a0, <i32 -2, i32 -2, i32  3, i32  3>\r
57   %2 = xor <4 x i32> %a1, <i32 -1, i32 -1, i32  1, i32  1>\r
58   %3 = xor <4 x i32> %1, %2\r
59   ret <4 x i32> %3\r
60 }\r