|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
|
2 | 2 | ; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu \
|
3 |
| -; RUN: < %s | FileCheck %s --check-prefix=POWERPC_64LE |
| 3 | +; RUN: -ppc-asm-full-reg-names --ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=POWERPC_64LE |
4 | 4 |
|
5 | 5 | ; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64-ibm-aix \
|
6 |
| -; RUN: < %s | FileCheck %s --check-prefix=POWERPC_64 |
| 6 | +; RUN: -ppc-asm-full-reg-names --ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=POWERPC_64 |
7 | 7 |
|
8 | 8 | ; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc-ibm-aix \
|
9 |
| -; RUN: < %s | FileCheck %s --check-prefix=POWERPC_32 |
| 9 | +; RUN: -ppc-asm-full-reg-names --ppc-vsr-nums-as-vr < %s | FileCheck %s --check-prefix=POWERPC_32 |
10 | 10 |
|
11 | 11 | define i32 @test_Greater_than(ptr %colauths) {
|
12 | 12 | ; This testcase is for the special case of zero-vector comparisons.
|
13 | 13 | ; Currently the generated code does a comparison (vcmpequh) and then a negation (xxlnor).
|
14 | 14 | ; This pattern is expected to be optimized in a future patch.
|
15 | 15 | ; POWERPC_64LE-LABEL: test_Greater_than:
|
16 | 16 | ; POWERPC_64LE: # %bb.0: # %entry
|
17 |
| -; POWERPC_64LE-NEXT: lfd 0, 0(3) |
18 |
| -; POWERPC_64LE-NEXT: xxlxor 35, 35, 35 |
19 |
| -; POWERPC_64LE-NEXT: li 4, 0 |
20 |
| -; POWERPC_64LE-NEXT: li 3, 4 |
21 |
| -; POWERPC_64LE-NEXT: xxswapd 34, 0 |
22 |
| -; POWERPC_64LE-NEXT: vcmpequh 2, 2, 3 |
23 |
| -; POWERPC_64LE-NEXT: xxlnor 34, 34, 34 |
24 |
| -; POWERPC_64LE-NEXT: vmrglh 3, 2, 2 |
25 |
| -; POWERPC_64LE-NEXT: vextuwrx 4, 4, 2 |
26 |
| -; POWERPC_64LE-NEXT: vextuwrx 3, 3, 3 |
27 |
| -; POWERPC_64LE-NEXT: clrlwi 4, 4, 31 |
28 |
| -; POWERPC_64LE-NEXT: rlwimi 4, 3, 1, 30, 30 |
29 |
| -; POWERPC_64LE-NEXT: mfvsrwz 3, 35 |
30 |
| -; POWERPC_64LE-NEXT: rlwimi 4, 3, 2, 29, 29 |
31 |
| -; POWERPC_64LE-NEXT: li 3, 12 |
32 |
| -; POWERPC_64LE-NEXT: vextuwrx 3, 3, 3 |
33 |
| -; POWERPC_64LE-NEXT: rlwimi 4, 3, 3, 28, 28 |
34 |
| -; POWERPC_64LE-NEXT: stb 4, -1(1) |
35 |
| -; POWERPC_64LE-NEXT: lbz 3, -1(1) |
36 |
| -; POWERPC_64LE-NEXT: popcntd 3, 3 |
| 17 | +; POWERPC_64LE-NEXT: lfd f0, 0(r3) |
| 18 | +; POWERPC_64LE-NEXT: xxlxor v3, v3, v3 |
| 19 | +; POWERPC_64LE-NEXT: li r4, 0 |
| 20 | +; POWERPC_64LE-NEXT: li r3, 4 |
| 21 | +; POWERPC_64LE-NEXT: xxswapd v2, f0 |
| 22 | +; POWERPC_64LE-NEXT: vcmpequh v2, v2, v3 |
| 23 | +; POWERPC_64LE-NEXT: xxlnor v2, v2, v2 |
| 24 | +; POWERPC_64LE-NEXT: vmrglh v3, v2, v2 |
| 25 | +; POWERPC_64LE-NEXT: vextuwrx r4, r4, v2 |
| 26 | +; POWERPC_64LE-NEXT: vextuwrx r3, r3, v3 |
| 27 | +; POWERPC_64LE-NEXT: clrlwi r4, r4, 31 |
| 28 | +; POWERPC_64LE-NEXT: rlwimi r4, r3, 1, 30, 30 |
| 29 | +; POWERPC_64LE-NEXT: mfvsrwz r3, v3 |
| 30 | +; POWERPC_64LE-NEXT: rlwimi r4, r3, 2, 29, 29 |
| 31 | +; POWERPC_64LE-NEXT: li r3, 12 |
| 32 | +; POWERPC_64LE-NEXT: vextuwrx r3, r3, v3 |
| 33 | +; POWERPC_64LE-NEXT: rlwimi r4, r3, 3, 28, 28 |
| 34 | +; POWERPC_64LE-NEXT: stb r4, -1(r1) |
| 35 | +; POWERPC_64LE-NEXT: lbz r3, -1(r1) |
| 36 | +; POWERPC_64LE-NEXT: popcntd r3, r3 |
37 | 37 | ; POWERPC_64LE-NEXT: blr
|
38 | 38 | ;
|
39 | 39 | ; POWERPC_64-LABEL: test_Greater_than:
|
40 | 40 | ; POWERPC_64: # %bb.0: # %entry
|
41 |
| -; POWERPC_64-NEXT: lxsd 2, 0(3) |
42 |
| -; POWERPC_64-NEXT: xxlxor 35, 35, 35 |
43 |
| -; POWERPC_64-NEXT: li 4, 12 |
44 |
| -; POWERPC_64-NEXT: li 3, 8 |
45 |
| -; POWERPC_64-NEXT: vcmpequh 2, 2, 3 |
46 |
| -; POWERPC_64-NEXT: xxlnor 34, 34, 34 |
47 |
| -; POWERPC_64-NEXT: vmrghh 2, 2, 2 |
48 |
| -; POWERPC_64-NEXT: vextuwlx 4, 4, 2 |
49 |
| -; POWERPC_64-NEXT: vextuwlx 3, 3, 2 |
50 |
| -; POWERPC_64-NEXT: clrlwi 4, 4, 31 |
51 |
| -; POWERPC_64-NEXT: rlwimi 4, 3, 1, 30, 30 |
52 |
| -; POWERPC_64-NEXT: mfvsrwz 3, 34 |
53 |
| -; POWERPC_64-NEXT: rlwimi 4, 3, 2, 29, 29 |
54 |
| -; POWERPC_64-NEXT: li 3, 0 |
55 |
| -; POWERPC_64-NEXT: vextuwlx 3, 3, 2 |
56 |
| -; POWERPC_64-NEXT: rlwimi 4, 3, 3, 28, 28 |
57 |
| -; POWERPC_64-NEXT: stb 4, -1(1) |
58 |
| -; POWERPC_64-NEXT: lbz 3, -1(1) |
59 |
| -; POWERPC_64-NEXT: popcntd 3, 3 |
| 41 | +; POWERPC_64-NEXT: lxsd v2, 0(r3) |
| 42 | +; POWERPC_64-NEXT: xxlxor v3, v3, v3 |
| 43 | +; POWERPC_64-NEXT: li r4, 12 |
| 44 | +; POWERPC_64-NEXT: li r3, 8 |
| 45 | +; POWERPC_64-NEXT: vcmpequh v2, v2, v3 |
| 46 | +; POWERPC_64-NEXT: xxlnor v2, v2, v2 |
| 47 | +; POWERPC_64-NEXT: vmrghh v2, v2, v2 |
| 48 | +; POWERPC_64-NEXT: vextuwlx r4, r4, v2 |
| 49 | +; POWERPC_64-NEXT: vextuwlx r3, r3, v2 |
| 50 | +; POWERPC_64-NEXT: clrlwi r4, r4, 31 |
| 51 | +; POWERPC_64-NEXT: rlwimi r4, r3, 1, 30, 30 |
| 52 | +; POWERPC_64-NEXT: mfvsrwz r3, v2 |
| 53 | +; POWERPC_64-NEXT: rlwimi r4, r3, 2, 29, 29 |
| 54 | +; POWERPC_64-NEXT: li r3, 0 |
| 55 | +; POWERPC_64-NEXT: vextuwlx r3, r3, v2 |
| 56 | +; POWERPC_64-NEXT: rlwimi r4, r3, 3, 28, 28 |
| 57 | +; POWERPC_64-NEXT: stb r4, -1(r1) |
| 58 | +; POWERPC_64-NEXT: lbz r3, -1(r1) |
| 59 | +; POWERPC_64-NEXT: popcntd r3, r3 |
60 | 60 | ; POWERPC_64-NEXT: blr
|
61 | 61 | ;
|
62 | 62 | ; POWERPC_32-LABEL: test_Greater_than:
|
63 | 63 | ; POWERPC_32: # %bb.0: # %entry
|
64 |
| -; POWERPC_32-NEXT: li 4, 4 |
65 |
| -; POWERPC_32-NEXT: lxvwsx 1, 0, 3 |
66 |
| -; POWERPC_32-NEXT: xxlxor 35, 35, 35 |
67 |
| -; POWERPC_32-NEXT: lxvwsx 0, 3, 4 |
68 |
| -; POWERPC_32-NEXT: xxmrghw 34, 1, 0 |
69 |
| -; POWERPC_32-NEXT: vcmpequh 2, 2, 3 |
70 |
| -; POWERPC_32-NEXT: xxlnor 34, 34, 34 |
71 |
| -; POWERPC_32-NEXT: vmrghh 2, 2, 2 |
72 |
| -; POWERPC_32-NEXT: stxv 34, -32(1) |
73 |
| -; POWERPC_32-NEXT: lwz 3, -20(1) |
74 |
| -; POWERPC_32-NEXT: lwz 4, -24(1) |
75 |
| -; POWERPC_32-NEXT: clrlwi 3, 3, 31 |
76 |
| -; POWERPC_32-NEXT: rlwimi 3, 4, 1, 30, 30 |
77 |
| -; POWERPC_32-NEXT: lwz 4, -28(1) |
78 |
| -; POWERPC_32-NEXT: rlwimi 3, 4, 2, 29, 29 |
79 |
| -; POWERPC_32-NEXT: lwz 4, -32(1) |
80 |
| -; POWERPC_32-NEXT: rlwimi 3, 4, 3, 28, 28 |
81 |
| -; POWERPC_32-NEXT: popcntw 3, 3 |
| 64 | +; POWERPC_32-NEXT: li r4, 4 |
| 65 | +; POWERPC_32-NEXT: lxvwsx vs1, 0, r3 |
| 66 | +; POWERPC_32-NEXT: xxlxor v3, v3, v3 |
| 67 | +; POWERPC_32-NEXT: lxvwsx vs0, r3, r4 |
| 68 | +; POWERPC_32-NEXT: xxmrghw v2, vs1, vs0 |
| 69 | +; POWERPC_32-NEXT: vcmpequh v2, v2, v3 |
| 70 | +; POWERPC_32-NEXT: xxlnor v2, v2, v2 |
| 71 | +; POWERPC_32-NEXT: vmrghh v2, v2, v2 |
| 72 | +; POWERPC_32-NEXT: stxv v2, -32(r1) |
| 73 | +; POWERPC_32-NEXT: lwz r3, -20(r1) |
| 74 | +; POWERPC_32-NEXT: lwz r4, -24(r1) |
| 75 | +; POWERPC_32-NEXT: clrlwi r3, r3, 31 |
| 76 | +; POWERPC_32-NEXT: rlwimi r3, r4, 1, 30, 30 |
| 77 | +; POWERPC_32-NEXT: lwz r4, -28(r1) |
| 78 | +; POWERPC_32-NEXT: rlwimi r3, r4, 2, 29, 29 |
| 79 | +; POWERPC_32-NEXT: lwz r4, -32(r1) |
| 80 | +; POWERPC_32-NEXT: rlwimi r3, r4, 3, 28, 28 |
| 81 | +; POWERPC_32-NEXT: popcntw r3, r3 |
82 | 82 | ; POWERPC_32-NEXT: blr
|
83 | 83 | entry:
|
84 | 84 | %0 = load <4 x i16>, ptr %colauths, align 2, !tbaa !5
|
|
0 commit comments