|
2 | 2 | # RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \
|
3 | 3 | # RUN: | FileCheck %s --check-prefixes=CHECK,RV64I
|
4 | 4 | # RUN: llc -mtriple=riscv64 -mattr=+zbb -run-pass=legalizer %s -o - \
|
5 |
| -# RUN: | FileCheck %s --check-prefixes=CHECK,RV64ZBB |
| 5 | +# RUN: | FileCheck %s --check-prefixes=CHECK,RV64ZBB_OR_RV64ZBKB |
| 6 | +# RUN: llc -mtriple=riscv64 -mattr=+zbkb -run-pass=legalizer %s -o - \ |
| 7 | +# RUN: | FileCheck %s --check-prefixes=CHECK,RV64ZBB_OR_RV64ZBKB |
6 | 8 |
|
7 | 9 | ---
|
8 | 10 | name: rotl_i8
|
@@ -105,18 +107,18 @@ body: |
|
105 | 107 | ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
|
106 | 108 | ; RV64I-NEXT: PseudoRET implicit $x10
|
107 | 109 | ;
|
108 |
| - ; RV64ZBB-LABEL: name: rotl_i32 |
109 |
| - ; RV64ZBB: liveins: $x10, $x11 |
110 |
| - ; RV64ZBB-NEXT: {{ $}} |
111 |
| - ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
112 |
| - ; RV64ZBB-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64) |
113 |
| - ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
114 |
| - ; RV64ZBB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295 |
115 |
| - ; RV64ZBB-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] |
116 |
| - ; RV64ZBB-NEXT: [[ROTL:%[0-9]+]]:_(s32) = G_ROTL [[TRUNC]], [[AND]](s64) |
117 |
| - ; RV64ZBB-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ROTL]](s32) |
118 |
| - ; RV64ZBB-NEXT: $x10 = COPY [[ANYEXT]](s64) |
119 |
| - ; RV64ZBB-NEXT: PseudoRET implicit $x10 |
| 110 | + ; RV64ZBB_OR_RV64ZBKB-LABEL: name: rotl_i32 |
| 111 | + ; RV64ZBB_OR_RV64ZBKB: liveins: $x10, $x11 |
| 112 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: {{ $}} |
| 113 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
| 114 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64) |
| 115 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
| 116 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295 |
| 117 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] |
| 118 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[ROTL:%[0-9]+]]:_(s32) = G_ROTL [[TRUNC]], [[AND]](s64) |
| 119 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ROTL]](s32) |
| 120 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: $x10 = COPY [[ANYEXT]](s64) |
| 121 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: PseudoRET implicit $x10 |
120 | 122 | %2:_(s64) = COPY $x10
|
121 | 123 | %0:_(s32) = G_TRUNC %2(s64)
|
122 | 124 | %3:_(s64) = COPY $x11
|
@@ -149,14 +151,14 @@ body: |
|
149 | 151 | ; RV64I-NEXT: $x10 = COPY [[OR]](s64)
|
150 | 152 | ; RV64I-NEXT: PseudoRET implicit $x10
|
151 | 153 | ;
|
152 |
| - ; RV64ZBB-LABEL: name: rotl_i64 |
153 |
| - ; RV64ZBB: liveins: $x10, $x11 |
154 |
| - ; RV64ZBB-NEXT: {{ $}} |
155 |
| - ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
156 |
| - ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
157 |
| - ; RV64ZBB-NEXT: [[ROTL:%[0-9]+]]:_(s64) = G_ROTL [[COPY]], [[COPY1]](s64) |
158 |
| - ; RV64ZBB-NEXT: $x10 = COPY [[ROTL]](s64) |
159 |
| - ; RV64ZBB-NEXT: PseudoRET implicit $x10 |
| 154 | + ; RV64ZBB_OR_RV64ZBKB-LABEL: name: rotl_i64 |
| 155 | + ; RV64ZBB_OR_RV64ZBKB: liveins: $x10, $x11 |
| 156 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: {{ $}} |
| 157 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
| 158 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
| 159 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[ROTL:%[0-9]+]]:_(s64) = G_ROTL [[COPY]], [[COPY1]](s64) |
| 160 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: $x10 = COPY [[ROTL]](s64) |
| 161 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: PseudoRET implicit $x10 |
160 | 162 | %0:_(s64) = COPY $x10
|
161 | 163 | %1:_(s64) = COPY $x11
|
162 | 164 | %2:_(s64) = G_ROTL %0, %1(s64)
|
@@ -265,18 +267,18 @@ body: |
|
265 | 267 | ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
|
266 | 268 | ; RV64I-NEXT: PseudoRET implicit $x10
|
267 | 269 | ;
|
268 |
| - ; RV64ZBB-LABEL: name: rotr_i32 |
269 |
| - ; RV64ZBB: liveins: $x10, $x11 |
270 |
| - ; RV64ZBB-NEXT: {{ $}} |
271 |
| - ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
272 |
| - ; RV64ZBB-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64) |
273 |
| - ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
274 |
| - ; RV64ZBB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295 |
275 |
| - ; RV64ZBB-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] |
276 |
| - ; RV64ZBB-NEXT: [[ROTR:%[0-9]+]]:_(s32) = G_ROTR [[TRUNC]], [[AND]](s64) |
277 |
| - ; RV64ZBB-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ROTR]](s32) |
278 |
| - ; RV64ZBB-NEXT: $x10 = COPY [[ANYEXT]](s64) |
279 |
| - ; RV64ZBB-NEXT: PseudoRET implicit $x10 |
| 270 | + ; RV64ZBB_OR_RV64ZBKB-LABEL: name: rotr_i32 |
| 271 | + ; RV64ZBB_OR_RV64ZBKB: liveins: $x10, $x11 |
| 272 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: {{ $}} |
| 273 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
| 274 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64) |
| 275 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
| 276 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295 |
| 277 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] |
| 278 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[ROTR:%[0-9]+]]:_(s32) = G_ROTR [[TRUNC]], [[AND]](s64) |
| 279 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[ROTR]](s32) |
| 280 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: $x10 = COPY [[ANYEXT]](s64) |
| 281 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: PseudoRET implicit $x10 |
280 | 282 | %2:_(s64) = COPY $x10
|
281 | 283 | %0:_(s32) = G_TRUNC %2(s64)
|
282 | 284 | %3:_(s64) = COPY $x11
|
@@ -309,14 +311,14 @@ body: |
|
309 | 311 | ; RV64I-NEXT: $x10 = COPY [[OR]](s64)
|
310 | 312 | ; RV64I-NEXT: PseudoRET implicit $x10
|
311 | 313 | ;
|
312 |
| - ; RV64ZBB-LABEL: name: rotr_i64 |
313 |
| - ; RV64ZBB: liveins: $x10, $x11 |
314 |
| - ; RV64ZBB-NEXT: {{ $}} |
315 |
| - ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
316 |
| - ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
317 |
| - ; RV64ZBB-NEXT: [[ROTR:%[0-9]+]]:_(s64) = G_ROTR [[COPY]], [[COPY1]](s64) |
318 |
| - ; RV64ZBB-NEXT: $x10 = COPY [[ROTR]](s64) |
319 |
| - ; RV64ZBB-NEXT: PseudoRET implicit $x10 |
| 314 | + ; RV64ZBB_OR_RV64ZBKB-LABEL: name: rotr_i64 |
| 315 | + ; RV64ZBB_OR_RV64ZBKB: liveins: $x10, $x11 |
| 316 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: {{ $}} |
| 317 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10 |
| 318 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11 |
| 319 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: [[ROTR:%[0-9]+]]:_(s64) = G_ROTR [[COPY]], [[COPY1]](s64) |
| 320 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: $x10 = COPY [[ROTR]](s64) |
| 321 | + ; RV64ZBB_OR_RV64ZBKB-NEXT: PseudoRET implicit $x10 |
320 | 322 | %0:_(s64) = COPY $x10
|
321 | 323 | %1:_(s64) = COPY $x11
|
322 | 324 | %2:_(s64) = G_ROTR %0, %1(s64)
|
|
0 commit comments