|
14 | 14 | define dso_local signext range(i32 0, 2) i32 @cmpeq16(ptr noundef readonly captures(none) %a, ptr noundef readonly captures(none) %b) { |
15 | 15 | ; CHECK-AIX32-P8-LABEL: cmpeq16: |
16 | 16 | ; CHECK-AIX32-P8: # %bb.0: # %entry |
17 | | -; CHECK-AIX32-P8-NEXT: lwz r5, 4(r3) |
18 | | -; CHECK-AIX32-P8-NEXT: lwz r6, 0(r3) |
19 | | -; CHECK-AIX32-P8-NEXT: lwz r7, 4(r4) |
20 | | -; CHECK-AIX32-P8-NEXT: lwz r8, 0(r4) |
21 | | -; CHECK-AIX32-P8-NEXT: xor r6, r6, r8 |
22 | | -; CHECK-AIX32-P8-NEXT: xor r5, r5, r7 |
23 | | -; CHECK-AIX32-P8-NEXT: or. r5, r5, r6 |
24 | | -; CHECK-AIX32-P8-NEXT: bne cr0, L..BB0_2 |
25 | | -; CHECK-AIX32-P8-NEXT: # %bb.1: # %loadbb1 |
26 | | -; CHECK-AIX32-P8-NEXT: lwz r5, 12(r3) |
27 | | -; CHECK-AIX32-P8-NEXT: lwz r3, 8(r3) |
28 | | -; CHECK-AIX32-P8-NEXT: lwz r6, 12(r4) |
29 | | -; CHECK-AIX32-P8-NEXT: lwz r4, 8(r4) |
30 | | -; CHECK-AIX32-P8-NEXT: xor r3, r3, r4 |
31 | | -; CHECK-AIX32-P8-NEXT: xor r4, r5, r6 |
32 | | -; CHECK-AIX32-P8-NEXT: or. r3, r4, r3 |
33 | | -; CHECK-AIX32-P8-NEXT: li r3, 0 |
34 | | -; CHECK-AIX32-P8-NEXT: beq cr0, L..BB0_3 |
35 | | -; CHECK-AIX32-P8-NEXT: L..BB0_2: # %res_block |
36 | | -; CHECK-AIX32-P8-NEXT: li r3, 1 |
37 | | -; CHECK-AIX32-P8-NEXT: L..BB0_3: # %endblock |
38 | | -; CHECK-AIX32-P8-NEXT: cntlzw r3, r3 |
39 | | -; CHECK-AIX32-P8-NEXT: rlwinm r3, r3, 27, 31, 31 |
| 17 | +; CHECK-AIX32-P8-NEXT: lxvw4x vs34, 0, r4 |
| 18 | +; CHECK-AIX32-P8-NEXT: lxvw4x vs35, 0, r3 |
| 19 | +; CHECK-AIX32-P8-NEXT: vcmpequb. v2, v3, v2 |
| 20 | +; CHECK-AIX32-P8-NEXT: mfocrf r3, 2 |
| 21 | +; CHECK-AIX32-P8-NEXT: rlwinm r3, r3, 25, 31, 31 |
40 | 22 | ; CHECK-AIX32-P8-NEXT: blr |
41 | 23 | ; |
42 | 24 | ; CHECK-AIX32-P10-LABEL: cmpeq16: |
43 | 25 | ; CHECK-AIX32-P10: # %bb.0: # %entry |
44 | | -; CHECK-AIX32-P10-NEXT: lwz r5, 4(r3) |
45 | | -; CHECK-AIX32-P10-NEXT: lwz r6, 0(r3) |
46 | | -; CHECK-AIX32-P10-NEXT: lwz r7, 4(r4) |
47 | | -; CHECK-AIX32-P10-NEXT: xor r5, r5, r7 |
48 | | -; CHECK-AIX32-P10-NEXT: lwz r8, 0(r4) |
49 | | -; CHECK-AIX32-P10-NEXT: xor r6, r6, r8 |
50 | | -; CHECK-AIX32-P10-NEXT: or. r5, r5, r6 |
51 | | -; CHECK-AIX32-P10-NEXT: bne cr0, L..BB0_2 |
52 | | -; CHECK-AIX32-P10-NEXT: # %bb.1: # %loadbb1 |
53 | | -; CHECK-AIX32-P10-NEXT: lwz r5, 12(r3) |
54 | | -; CHECK-AIX32-P10-NEXT: lwz r3, 8(r3) |
55 | | -; CHECK-AIX32-P10-NEXT: lwz r6, 12(r4) |
56 | | -; CHECK-AIX32-P10-NEXT: lwz r4, 8(r4) |
57 | | -; CHECK-AIX32-P10-NEXT: xor r3, r3, r4 |
58 | | -; CHECK-AIX32-P10-NEXT: xor r4, r5, r6 |
59 | | -; CHECK-AIX32-P10-NEXT: or. r3, r4, r3 |
60 | | -; CHECK-AIX32-P10-NEXT: li r3, 0 |
61 | | -; CHECK-AIX32-P10-NEXT: beq cr0, L..BB0_3 |
62 | | -; CHECK-AIX32-P10-NEXT: L..BB0_2: # %res_block |
63 | | -; CHECK-AIX32-P10-NEXT: li r3, 1 |
64 | | -; CHECK-AIX32-P10-NEXT: L..BB0_3: # %endblock |
65 | | -; CHECK-AIX32-P10-NEXT: cntlzw r3, r3 |
66 | | -; CHECK-AIX32-P10-NEXT: rlwinm r3, r3, 27, 31, 31 |
| 26 | +; CHECK-AIX32-P10-NEXT: lxv vs34, 0(r4) |
| 27 | +; CHECK-AIX32-P10-NEXT: lxv vs35, 0(r3) |
| 28 | +; CHECK-AIX32-P10-NEXT: vcmpequb. v2, v3, v2 |
| 29 | +; CHECK-AIX32-P10-NEXT: setbc r3, 4*cr6+lt |
67 | 30 | ; CHECK-AIX32-P10-NEXT: blr |
68 | 31 | ; |
69 | 32 | ; CHECK-LINUX32-P8-LABEL: cmpeq16: |
70 | 33 | ; CHECK-LINUX32-P8: # %bb.0: # %entry |
71 | | -; CHECK-LINUX32-P8-NEXT: lwz r5, 0(r3) |
72 | | -; CHECK-LINUX32-P8-NEXT: lwz r6, 4(r3) |
73 | | -; CHECK-LINUX32-P8-NEXT: lwz r7, 0(r4) |
74 | | -; CHECK-LINUX32-P8-NEXT: lwz r8, 4(r4) |
75 | | -; CHECK-LINUX32-P8-NEXT: xor r6, r6, r8 |
76 | | -; CHECK-LINUX32-P8-NEXT: xor r5, r5, r7 |
77 | | -; CHECK-LINUX32-P8-NEXT: or. r5, r5, r6 |
78 | | -; CHECK-LINUX32-P8-NEXT: bne cr0, .LBB0_2 |
79 | | -; CHECK-LINUX32-P8-NEXT: # %bb.1: # %loadbb1 |
80 | | -; CHECK-LINUX32-P8-NEXT: lwz r5, 8(r3) |
81 | | -; CHECK-LINUX32-P8-NEXT: lwz r3, 12(r3) |
82 | | -; CHECK-LINUX32-P8-NEXT: lwz r6, 8(r4) |
83 | | -; CHECK-LINUX32-P8-NEXT: lwz r4, 12(r4) |
84 | | -; CHECK-LINUX32-P8-NEXT: xor r3, r3, r4 |
85 | | -; CHECK-LINUX32-P8-NEXT: xor r4, r5, r6 |
86 | | -; CHECK-LINUX32-P8-NEXT: or. r3, r4, r3 |
87 | | -; CHECK-LINUX32-P8-NEXT: li r3, 0 |
88 | | -; CHECK-LINUX32-P8-NEXT: beq cr0, .LBB0_3 |
89 | | -; CHECK-LINUX32-P8-NEXT: .LBB0_2: # %res_block |
90 | | -; CHECK-LINUX32-P8-NEXT: li r3, 1 |
91 | | -; CHECK-LINUX32-P8-NEXT: .LBB0_3: # %endblock |
92 | | -; CHECK-LINUX32-P8-NEXT: cntlzw r3, r3 |
93 | | -; CHECK-LINUX32-P8-NEXT: rlwinm r3, r3, 27, 31, 31 |
| 34 | +; CHECK-LINUX32-P8-NEXT: lxvd2x vs0, 0, r4 |
| 35 | +; CHECK-LINUX32-P8-NEXT: xxswapd vs34, vs0 |
| 36 | +; CHECK-LINUX32-P8-NEXT: lxvd2x vs0, 0, r3 |
| 37 | +; CHECK-LINUX32-P8-NEXT: xxswapd vs35, vs0 |
| 38 | +; CHECK-LINUX32-P8-NEXT: vcmpequb. v2, v3, v2 |
| 39 | +; CHECK-LINUX32-P8-NEXT: mfocrf r3, 2 |
| 40 | +; CHECK-LINUX32-P8-NEXT: rlwinm r3, r3, 25, 31, 31 |
94 | 41 | ; CHECK-LINUX32-P8-NEXT: blr |
95 | 42 | ; |
96 | 43 | ; CHECK-LINUX32-P10-LABEL: cmpeq16: |
97 | 44 | ; CHECK-LINUX32-P10: # %bb.0: # %entry |
98 | | -; CHECK-LINUX32-P10-NEXT: lwz r5, 0(r3) |
99 | | -; CHECK-LINUX32-P10-NEXT: lwz r6, 4(r3) |
100 | | -; CHECK-LINUX32-P10-NEXT: lwz r7, 0(r4) |
101 | | -; CHECK-LINUX32-P10-NEXT: xor r5, r5, r7 |
102 | | -; CHECK-LINUX32-P10-NEXT: lwz r8, 4(r4) |
103 | | -; CHECK-LINUX32-P10-NEXT: xor r6, r6, r8 |
104 | | -; CHECK-LINUX32-P10-NEXT: or. r5, r5, r6 |
105 | | -; CHECK-LINUX32-P10-NEXT: bne cr0, .LBB0_2 |
106 | | -; CHECK-LINUX32-P10-NEXT: # %bb.1: # %loadbb1 |
107 | | -; CHECK-LINUX32-P10-NEXT: lwz r5, 8(r3) |
108 | | -; CHECK-LINUX32-P10-NEXT: lwz r3, 12(r3) |
109 | | -; CHECK-LINUX32-P10-NEXT: lwz r6, 8(r4) |
110 | | -; CHECK-LINUX32-P10-NEXT: lwz r4, 12(r4) |
111 | | -; CHECK-LINUX32-P10-NEXT: xor r3, r3, r4 |
112 | | -; CHECK-LINUX32-P10-NEXT: xor r4, r5, r6 |
113 | | -; CHECK-LINUX32-P10-NEXT: or. r3, r4, r3 |
114 | | -; CHECK-LINUX32-P10-NEXT: li r3, 0 |
115 | | -; CHECK-LINUX32-P10-NEXT: beq cr0, .LBB0_3 |
116 | | -; CHECK-LINUX32-P10-NEXT: .LBB0_2: # %res_block |
117 | | -; CHECK-LINUX32-P10-NEXT: li r3, 1 |
118 | | -; CHECK-LINUX32-P10-NEXT: .LBB0_3: # %endblock |
119 | | -; CHECK-LINUX32-P10-NEXT: cntlzw r3, r3 |
120 | | -; CHECK-LINUX32-P10-NEXT: rlwinm r3, r3, 27, 31, 31 |
| 45 | +; CHECK-LINUX32-P10-NEXT: lxv vs34, 0(r4) |
| 46 | +; CHECK-LINUX32-P10-NEXT: lxv vs35, 0(r3) |
| 47 | +; CHECK-LINUX32-P10-NEXT: vcmpequb. v2, v3, v2 |
| 48 | +; CHECK-LINUX32-P10-NEXT: setbc r3, 4*cr6+lt |
121 | 49 | ; CHECK-LINUX32-P10-NEXT: blr |
122 | 50 | entry: |
123 | 51 | %bcmp = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(16) %a, ptr noundef nonnull dereferenceable(16) %b, i32 16) |
|
0 commit comments