OLD | NEW |
1 ; Some shufflevector optimized lowering. This list is by no means exhaustive. It | 1 ; Some shufflevector optimized lowering. This list is by no means exhaustive. It |
2 ; is only a **basic** smoke test. the vector_ops crosstest has a broader range | 2 ; is only a **basic** smoke test. the vector_ops crosstest has a broader range |
3 ; of test cases. | 3 ; of test cases. |
4 | 4 |
5 ; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble -a -O2 \ | 5 ; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble -a -O2 \ |
6 ; RUN: --allow-externally-defined-symbols | FileCheck %s --check-prefix=X86 | 6 ; RUN: --allow-externally-defined-symbols | FileCheck %s --check-prefix=X86 |
7 | 7 |
| 8 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| 9 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target \ |
| 10 ; RUN: mips32 -i %s --args -O2 -allow-externally-defined-symbols \ |
| 11 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ |
| 12 ; RUN: --command FileCheck --check-prefix MIPS32 %s |
| 13 |
8 declare void @useV4I32(<4 x i32> %t); | 14 declare void @useV4I32(<4 x i32> %t); |
9 | 15 |
10 define internal void @shuffleV4I32(<4 x i32> %a, <4 x i32> %b) { | 16 define internal void @shuffleV4I32(<4 x i32> %a, <4 x i32> %b) { |
11 ; X86-LABEL: shuffleV4I32 | 17 ; X86-LABEL: shuffleV4I32 |
12 %a_0 = extractelement <4 x i32> %a, i32 0 | 18 %a_0 = extractelement <4 x i32> %a, i32 0 |
13 %a_1 = extractelement <4 x i32> %a, i32 1 | 19 %a_1 = extractelement <4 x i32> %a, i32 1 |
14 %a_2 = extractelement <4 x i32> %a, i32 2 | 20 %a_2 = extractelement <4 x i32> %a, i32 2 |
15 %a_3 = extractelement <4 x i32> %a, i32 3 | 21 %a_3 = extractelement <4 x i32> %a, i32 3 |
16 | 22 |
17 %b_0 = extractelement <4 x i32> %b, i32 0 | 23 %b_0 = extractelement <4 x i32> %b, i32 0 |
(...skipping 26 matching lines...) Expand all Loading... |
44 %t2 = insertelement <4 x i32> %t2_2, i32 %b_2, i32 3 | 50 %t2 = insertelement <4 x i32> %t2_2, i32 %b_2, i32 3 |
45 ; X86: shufps {{.*}},0x30 | 51 ; X86: shufps {{.*}},0x30 |
46 ; X86: shufps {{.*}},0x22 | 52 ; X86: shufps {{.*}},0x22 |
47 ; X86: shufps {{.*}},0x88 | 53 ; X86: shufps {{.*}},0x88 |
48 | 54 |
49 call void @useV4I32(<4 x i32> %t2) | 55 call void @useV4I32(<4 x i32> %t2) |
50 ; X86: call | 56 ; X86: call |
51 | 57 |
52 ret void | 58 ret void |
53 } | 59 } |
| 60 ; MIPS32-LABEL: shuffleV4I32 |
| 61 ; MIPS32: move |
| 62 ; MIPS32: move |
| 63 ; MIPS32: move |
| 64 ; MIPS32: move |
| 65 ; MIPS32: jal |
| 66 ; MIPS32: move |
| 67 ; MIPS32: move |
| 68 ; MIPS32: move |
| 69 ; MIPS32: move |
| 70 ; MIPS32: jal |
| 71 ; MIPS32: move |
| 72 ; MIPS32: move |
| 73 ; MIPS32: move |
| 74 ; MIPS32: move |
| 75 ; MIPS32: jal |
OLD | NEW |