OLD | NEW |
1 ; This is a smoke test of randomized register allocation. The output | 1 ; This is a smoke test of randomized register allocation. The output |
2 ; of this test will change with changes to the random number generator | 2 ; of this test will change with changes to the random number generator |
3 ; implementation. | 3 ; implementation. |
4 | 4 |
5 ; RUN: %p2i -i %s --args -O2 -sz-seed=1 -randomize-regalloc \ | 5 ; RUN: %p2i -i %s --assemble --disassemble --args -O2 -sz-seed=1 \ |
6 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ | 6 ; RUN: -randomize-regalloc \ |
7 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - \ | |
8 ; RUN: | FileCheck %s --check-prefix=CHECK_1 | 7 ; RUN: | FileCheck %s --check-prefix=CHECK_1 |
9 ; RUN: %p2i -i %s --args -Om1 -sz-seed=1 -randomize-regalloc \ | 8 ; RUN: %p2i -i %s --assemble --disassemble --args -Om1 -sz-seed=1 \ |
10 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ | 9 ; RUN: -randomize-regalloc \ |
11 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - \ | |
12 ; RUN: | FileCheck %s --check-prefix=OPTM1_1 | 10 ; RUN: | FileCheck %s --check-prefix=OPTM1_1 |
13 | 11 |
14 ; Same tests but with a different seed, just to verify randomness. | 12 ; Same tests but with a different seed, just to verify randomness. |
15 ; RUN: %p2i -i %s --args -O2 -sz-seed=123 -randomize-regalloc \ | 13 ; RUN: %p2i -i %s --assemble --disassemble --args -O2 -sz-seed=123 \ |
16 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ | 14 ; RUN: -randomize-regalloc \ |
17 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - \ | |
18 ; RUN: | FileCheck %s --check-prefix=CHECK_123 | 15 ; RUN: | FileCheck %s --check-prefix=CHECK_123 |
19 ; RUN: %p2i -i %s --args -Om1 -sz-seed=123 -randomize-regalloc \ | 16 ; RUN: %p2i -i %s --assemble --disassemble --args -Om1 -sz-seed=123 \ |
20 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ | 17 ; RUN: -randomize-regalloc \ |
21 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - \ | |
22 ; RUN: | FileCheck %s --check-prefix=OPTM1_123 | 18 ; RUN: | FileCheck %s --check-prefix=OPTM1_123 |
23 | 19 |
24 define <4 x i32> @mul_v4i32(<4 x i32> %a, <4 x i32> %b) { | 20 define <4 x i32> @mul_v4i32(<4 x i32> %a, <4 x i32> %b) { |
25 entry: | 21 entry: |
26 %res = mul <4 x i32> %a, %b | 22 %res = mul <4 x i32> %a, %b |
27 ret <4 x i32> %res | 23 ret <4 x i32> %res |
28 ; OPTM1_1-LABEL: mul_v4i32: | 24 ; OPTM1_1-LABEL: mul_v4i32 |
29 ; OPTM1_1: sub esp, 60 | 25 ; OPTM1_1: sub esp,0x3c |
30 ; OPTM1_1-NEXT: movups xmmword ptr [esp + 32], xmm0 | 26 ; OPTM1_1-NEXT: movups XMMWORD PTR [esp+0x20],xmm0 |
31 ; OPTM1_1-NEXT: movups xmmword ptr [esp + 16], xmm1 | 27 ; OPTM1_1-NEXT: movups XMMWORD PTR [esp+0x10],xmm1 |
32 ; OPTM1_1-NEXT: movups xmm0, xmmword ptr [esp + 32] | 28 ; OPTM1_1-NEXT: movups xmm0,XMMWORD PTR [esp+0x20] |
33 ; OPTM1_1-NEXT: pshufd xmm7, xmmword ptr [esp + 32], 49 | 29 ; OPTM1_1-NEXT: pshufd xmm7,XMMWORD PTR [esp+0x20],0x31 |
34 ; OPTM1_1-NEXT: pshufd xmm4, xmmword ptr [esp + 16], 49 | 30 ; OPTM1_1-NEXT: pshufd xmm4,XMMWORD PTR [esp+0x10],0x31 |
35 ; OPTM1_1-NEXT: pmuludq xmm0, xmmword ptr [esp + 16] | 31 ; OPTM1_1-NEXT: pmuludq xmm0,XMMWORD PTR [esp+0x10] |
36 ; OPTM1_1-NEXT: pmuludq xmm7, xmm4 | 32 ; OPTM1_1-NEXT: pmuludq xmm7,xmm4 |
37 ; OPTM1_1-NEXT: shufps xmm0, xmm7, -120 | 33 ; OPTM1_1-NEXT: shufps xmm0,xmm7,0x88 |
38 ; OPTM1_1-NEXT: pshufd xmm0, xmm0, -40 | 34 ; OPTM1_1-NEXT: pshufd xmm0,xmm0,0xd8 |
39 ; OPTM1_1-NEXT: movups xmmword ptr [esp], xmm0 | 35 ; OPTM1_1-NEXT: movups XMMWORD PTR [esp],xmm0 |
40 ; OPTM1_1-NEXT: movups xmm0, xmmword ptr [esp] | 36 ; OPTM1_1-NEXT: movups xmm0,XMMWORD PTR [esp] |
41 ; OPTM1_1-NEXT: add esp, 60 | 37 ; OPTM1_1-NEXT: add esp,0x3c |
42 ; OPTM1_1-NEXT: ret | 38 ; OPTM1_1-NEXT: ret |
43 | 39 |
44 ; CHECK_1-LABEL: mul_v4i32: | 40 ; CHECK_1-LABEL: mul_v4i32 |
45 ; CHECK_1: movups xmm6, xmm0 | 41 ; CHECK_1: movups xmm6,xmm0 |
46 ; CHECK_1-NEXT: pshufd xmm0, xmm0, 49 | 42 ; CHECK_1-NEXT: pshufd xmm0,xmm0,0x31 |
47 ; CHECK_1-NEXT: pshufd xmm5, xmm1, 49 | 43 ; CHECK_1-NEXT: pshufd xmm5,xmm1,0x31 |
48 ; CHECK_1-NEXT: pmuludq xmm6, xmm1 | 44 ; CHECK_1-NEXT: pmuludq xmm6,xmm1 |
49 ; CHECK_1-NEXT: pmuludq xmm0, xmm5 | 45 ; CHECK_1-NEXT: pmuludq xmm0,xmm5 |
50 ; CHECK_1-NEXT: shufps xmm6, xmm0, -120 | 46 ; CHECK_1-NEXT: shufps xmm6,xmm0,0x88 |
51 ; CHECK_1-NEXT: pshufd xmm6, xmm6, -40 | 47 ; CHECK_1-NEXT: pshufd xmm6,xmm6,0xd8 |
52 ; CHECK_1-NEXT: movups xmm0, xmm6 | 48 ; CHECK_1-NEXT: movups xmm0,xmm6 |
53 ; CHECK_1-NEXT: ret | 49 ; CHECK_1-NEXT: ret |
54 | 50 |
55 ; OPTM1_123-LABEL: mul_v4i32: | 51 ; OPTM1_123-LABEL: mul_v4i32 |
56 ; OPTM1_123: sub esp, 60 | 52 ; OPTM1_123: sub esp,0x3c |
57 ; OPTM1_123-NEXT: movups xmmword ptr [esp + 32], xmm0 | 53 ; OPTM1_123-NEXT: movups XMMWORD PTR [esp+0x20],xmm0 |
58 ; OPTM1_123-NEXT: movups xmmword ptr [esp + 16], xmm1 | 54 ; OPTM1_123-NEXT: movups XMMWORD PTR [esp+0x10],xmm1 |
59 ; OPTM1_123-NEXT: movups xmm0, xmmword ptr [esp + 32] | 55 ; OPTM1_123-NEXT: movups xmm0,XMMWORD PTR [esp+0x20] |
60 ; OPTM1_123-NEXT: pshufd xmm2, xmmword ptr [esp + 32], 49 | 56 ; OPTM1_123-NEXT: pshufd xmm2,XMMWORD PTR [esp+0x20],0x31 |
61 ; OPTM1_123-NEXT: pshufd xmm6, xmmword ptr [esp + 16], 49 | 57 ; OPTM1_123-NEXT: pshufd xmm6,XMMWORD PTR [esp+0x10],0x31 |
62 ; OPTM1_123-NEXT: pmuludq xmm0, xmmword ptr [esp + 16] | 58 ; OPTM1_123-NEXT: pmuludq xmm0,XMMWORD PTR [esp+0x10] |
63 ; OPTM1_123-NEXT: pmuludq xmm2, xmm6 | 59 ; OPTM1_123-NEXT: pmuludq xmm2,xmm6 |
64 ; OPTM1_123-NEXT: shufps xmm0, xmm2, -120 | 60 ; OPTM1_123-NEXT: shufps xmm0,xmm2,0x88 |
65 ; OPTM1_123-NEXT: pshufd xmm0, xmm0, -40 | 61 ; OPTM1_123-NEXT: pshufd xmm0,xmm0,0xd8 |
66 ; OPTM1_123-NEXT: movups xmmword ptr [esp], xmm0 | 62 ; OPTM1_123-NEXT: movups XMMWORD PTR [esp],xmm0 |
67 ; OPTM1_123-NEXT: movups xmm0, xmmword ptr [esp] | 63 ; OPTM1_123-NEXT: movups xmm0,XMMWORD PTR [esp] |
68 ; OPTM1_123-NEXT: add esp, 60 | 64 ; OPTM1_123-NEXT: add esp,0x3c |
69 ; OPTM1_123-NEXT: ret | 65 ; OPTM1_123-NEXT: ret |
70 | 66 |
71 ; CHECK_123-LABEL: mul_v4i32: | 67 ; CHECK_123-LABEL: mul_v4i32 |
72 ; CHECK_123: movups xmm3, xmm0 | 68 ; CHECK_123: movups xmm3,xmm0 |
73 ; CHECK_123-NEXT: pshufd xmm0, xmm0, 49 | 69 ; CHECK_123-NEXT: pshufd xmm0,xmm0,0x31 |
74 ; CHECK_123-NEXT: pshufd xmm7, xmm1, 49 | 70 ; CHECK_123-NEXT: pshufd xmm7,xmm1,0x31 |
75 ; CHECK_123-NEXT: pmuludq xmm3, xmm1 | 71 ; CHECK_123-NEXT: pmuludq xmm3,xmm1 |
76 ; CHECK_123-NEXT: pmuludq xmm0, xmm7 | 72 ; CHECK_123-NEXT: pmuludq xmm0,xmm7 |
77 ; CHECK_123-NEXT: shufps xmm3, xmm0, -120 | 73 ; CHECK_123-NEXT: shufps xmm3,xmm0,0x88 |
78 ; CHECK_123-NEXT: pshufd xmm3, xmm3, -40 | 74 ; CHECK_123-NEXT: pshufd xmm3,xmm3,0xd8 |
79 ; CHECK_123-NEXT: movups xmm0, xmm3 | 75 ; CHECK_123-NEXT: movups xmm0,xmm3 |
80 ; CHECK_123-NEXT: ret | 76 ; CHECK_123-NEXT: ret |
81 } | 77 } |
82 | 78 |
83 ; ERRORS-NOT: ICE translation error | 79 ; ERRORS-NOT: ICE translation error |
84 ; DUMP-NOT: SZ | 80 ; DUMP-NOT: SZ |
OLD | NEW |