|
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