|
6 | 6 | ; RUN: llc -mtriple=riscv64 -mattr=+conditional-cmv-fusion,+c,+zicond -verify-machineinstrs < %s \ |
7 | 7 | ; RUN: | FileCheck -check-prefixes=CMOV,CMOV-ZICOND %s |
8 | 8 | ; RUN: llc -mtriple=riscv64 -mattr=+short-forward-branch-opt -verify-machineinstrs < %s \ |
9 | | -; RUN: | FileCheck -check-prefixes=SHORT_FORWARD,SFB-NOZICOND %s |
| 9 | +; RUN: | FileCheck -check-prefixes=SHORT_FORWARD,SFB-NOZICOND,SFB-NOZICOND-NOC %s |
10 | 10 | ; RUN: llc -mtriple=riscv64 -mattr=+short-forward-branch-opt,+c -verify-machineinstrs < %s \ |
11 | | -; RUN: | FileCheck -check-prefixes=SHORT_FORWARD,SFB-NOZICOND %s |
| 11 | +; RUN: | FileCheck -check-prefixes=SHORT_FORWARD,SFB-NOZICOND,SFB-NOZICOND-C %s |
12 | 12 | ; RUN: llc -mtriple=riscv64 -mattr=+short-forward-branch-opt,+zicond -verify-machineinstrs < %s \ |
13 | 13 | ; RUN: | FileCheck -check-prefixes=SHORT_FORWARD,SFB-ZICOND %s |
14 | 14 |
|
@@ -263,6 +263,24 @@ define i32 @select_xor_2(i32 %A, i32 %B, i8 %cond) { |
263 | 263 | ; CMOV-NEXT: .LBB6_2: # %entry |
264 | 264 | ; CMOV-NEXT: ret |
265 | 265 | ; |
| 266 | +; SFB-NOZICOND-NOC-LABEL: select_xor_2: |
| 267 | +; SFB-NOZICOND-NOC: # %bb.0: # %entry |
| 268 | +; SFB-NOZICOND-NOC-NEXT: andi a2, a2, 1 |
| 269 | +; SFB-NOZICOND-NOC-NEXT: beqz a2, .LBB6_2 |
| 270 | +; SFB-NOZICOND-NOC-NEXT: # %bb.1: # %entry |
| 271 | +; SFB-NOZICOND-NOC-NEXT: xor a0, a1, a0 |
| 272 | +; SFB-NOZICOND-NOC-NEXT: .LBB6_2: # %entry |
| 273 | +; SFB-NOZICOND-NOC-NEXT: ret |
| 274 | +; |
| 275 | +; SFB-NOZICOND-C-LABEL: select_xor_2: |
| 276 | +; SFB-NOZICOND-C: # %bb.0: # %entry |
| 277 | +; SFB-NOZICOND-C-NEXT: andi a2, a2, 1 |
| 278 | +; SFB-NOZICOND-C-NEXT: beqz a2, .LBB6_2 |
| 279 | +; SFB-NOZICOND-C-NEXT: # %bb.1: # %entry |
| 280 | +; SFB-NOZICOND-C-NEXT: xor a0, a0, a1 |
| 281 | +; SFB-NOZICOND-C-NEXT: .LBB6_2: # %entry |
| 282 | +; SFB-NOZICOND-C-NEXT: ret |
| 283 | +; |
266 | 284 | ; SFB-ZICOND-LABEL: select_xor_2: |
267 | 285 | ; SFB-ZICOND: # %bb.0: # %entry |
268 | 286 | ; SFB-ZICOND-NEXT: andi a2, a2, 1 |
@@ -300,6 +318,24 @@ define i32 @select_xor_2b(i32 %A, i32 %B, i8 %cond) { |
300 | 318 | ; CMOV-NEXT: .LBB7_2: # %entry |
301 | 319 | ; CMOV-NEXT: ret |
302 | 320 | ; |
| 321 | +; SFB-NOZICOND-NOC-LABEL: select_xor_2b: |
| 322 | +; SFB-NOZICOND-NOC: # %bb.0: # %entry |
| 323 | +; SFB-NOZICOND-NOC-NEXT: andi a2, a2, 1 |
| 324 | +; SFB-NOZICOND-NOC-NEXT: beqz a2, .LBB7_2 |
| 325 | +; SFB-NOZICOND-NOC-NEXT: # %bb.1: # %entry |
| 326 | +; SFB-NOZICOND-NOC-NEXT: xor a0, a1, a0 |
| 327 | +; SFB-NOZICOND-NOC-NEXT: .LBB7_2: # %entry |
| 328 | +; SFB-NOZICOND-NOC-NEXT: ret |
| 329 | +; |
| 330 | +; SFB-NOZICOND-C-LABEL: select_xor_2b: |
| 331 | +; SFB-NOZICOND-C: # %bb.0: # %entry |
| 332 | +; SFB-NOZICOND-C-NEXT: andi a2, a2, 1 |
| 333 | +; SFB-NOZICOND-C-NEXT: beqz a2, .LBB7_2 |
| 334 | +; SFB-NOZICOND-C-NEXT: # %bb.1: # %entry |
| 335 | +; SFB-NOZICOND-C-NEXT: xor a0, a0, a1 |
| 336 | +; SFB-NOZICOND-C-NEXT: .LBB7_2: # %entry |
| 337 | +; SFB-NOZICOND-C-NEXT: ret |
| 338 | +; |
303 | 339 | ; SFB-ZICOND-LABEL: select_xor_2b: |
304 | 340 | ; SFB-ZICOND: # %bb.0: # %entry |
305 | 341 | ; SFB-ZICOND-NEXT: andi a2, a2, 1 |
@@ -335,6 +371,24 @@ define i32 @select_or(i32 %A, i32 %B, i8 %cond) { |
335 | 371 | ; CMOV-NEXT: .LBB8_2: # %entry |
336 | 372 | ; CMOV-NEXT: ret |
337 | 373 | ; |
| 374 | +; SFB-NOZICOND-NOC-LABEL: select_or: |
| 375 | +; SFB-NOZICOND-NOC: # %bb.0: # %entry |
| 376 | +; SFB-NOZICOND-NOC-NEXT: andi a2, a2, 1 |
| 377 | +; SFB-NOZICOND-NOC-NEXT: beqz a2, .LBB8_2 |
| 378 | +; SFB-NOZICOND-NOC-NEXT: # %bb.1: # %entry |
| 379 | +; SFB-NOZICOND-NOC-NEXT: or a0, a1, a0 |
| 380 | +; SFB-NOZICOND-NOC-NEXT: .LBB8_2: # %entry |
| 381 | +; SFB-NOZICOND-NOC-NEXT: ret |
| 382 | +; |
| 383 | +; SFB-NOZICOND-C-LABEL: select_or: |
| 384 | +; SFB-NOZICOND-C: # %bb.0: # %entry |
| 385 | +; SFB-NOZICOND-C-NEXT: andi a2, a2, 1 |
| 386 | +; SFB-NOZICOND-C-NEXT: beqz a2, .LBB8_2 |
| 387 | +; SFB-NOZICOND-C-NEXT: # %bb.1: # %entry |
| 388 | +; SFB-NOZICOND-C-NEXT: or a0, a0, a1 |
| 389 | +; SFB-NOZICOND-C-NEXT: .LBB8_2: # %entry |
| 390 | +; SFB-NOZICOND-C-NEXT: ret |
| 391 | +; |
338 | 392 | ; SFB-ZICOND-LABEL: select_or: |
339 | 393 | ; SFB-ZICOND: # %bb.0: # %entry |
340 | 394 | ; SFB-ZICOND-NEXT: andi a2, a2, 1 |
@@ -372,6 +426,24 @@ define i32 @select_or_b(i32 %A, i32 %B, i8 %cond) { |
372 | 426 | ; CMOV-NEXT: .LBB9_2: # %entry |
373 | 427 | ; CMOV-NEXT: ret |
374 | 428 | ; |
| 429 | +; SFB-NOZICOND-NOC-LABEL: select_or_b: |
| 430 | +; SFB-NOZICOND-NOC: # %bb.0: # %entry |
| 431 | +; SFB-NOZICOND-NOC-NEXT: andi a2, a2, 1 |
| 432 | +; SFB-NOZICOND-NOC-NEXT: beqz a2, .LBB9_2 |
| 433 | +; SFB-NOZICOND-NOC-NEXT: # %bb.1: # %entry |
| 434 | +; SFB-NOZICOND-NOC-NEXT: or a0, a1, a0 |
| 435 | +; SFB-NOZICOND-NOC-NEXT: .LBB9_2: # %entry |
| 436 | +; SFB-NOZICOND-NOC-NEXT: ret |
| 437 | +; |
| 438 | +; SFB-NOZICOND-C-LABEL: select_or_b: |
| 439 | +; SFB-NOZICOND-C: # %bb.0: # %entry |
| 440 | +; SFB-NOZICOND-C-NEXT: andi a2, a2, 1 |
| 441 | +; SFB-NOZICOND-C-NEXT: beqz a2, .LBB9_2 |
| 442 | +; SFB-NOZICOND-C-NEXT: # %bb.1: # %entry |
| 443 | +; SFB-NOZICOND-C-NEXT: or a0, a0, a1 |
| 444 | +; SFB-NOZICOND-C-NEXT: .LBB9_2: # %entry |
| 445 | +; SFB-NOZICOND-C-NEXT: ret |
| 446 | +; |
375 | 447 | ; SFB-ZICOND-LABEL: select_or_b: |
376 | 448 | ; SFB-ZICOND: # %bb.0: # %entry |
377 | 449 | ; SFB-ZICOND-NEXT: andi a2, a2, 1 |
@@ -407,6 +479,24 @@ define i32 @select_or_1(i32 %A, i32 %B, i32 %cond) { |
407 | 479 | ; CMOV-NEXT: .LBB10_2: # %entry |
408 | 480 | ; CMOV-NEXT: ret |
409 | 481 | ; |
| 482 | +; SFB-NOZICOND-NOC-LABEL: select_or_1: |
| 483 | +; SFB-NOZICOND-NOC: # %bb.0: # %entry |
| 484 | +; SFB-NOZICOND-NOC-NEXT: andi a2, a2, 1 |
| 485 | +; SFB-NOZICOND-NOC-NEXT: beqz a2, .LBB10_2 |
| 486 | +; SFB-NOZICOND-NOC-NEXT: # %bb.1: # %entry |
| 487 | +; SFB-NOZICOND-NOC-NEXT: or a0, a1, a0 |
| 488 | +; SFB-NOZICOND-NOC-NEXT: .LBB10_2: # %entry |
| 489 | +; SFB-NOZICOND-NOC-NEXT: ret |
| 490 | +; |
| 491 | +; SFB-NOZICOND-C-LABEL: select_or_1: |
| 492 | +; SFB-NOZICOND-C: # %bb.0: # %entry |
| 493 | +; SFB-NOZICOND-C-NEXT: andi a2, a2, 1 |
| 494 | +; SFB-NOZICOND-C-NEXT: beqz a2, .LBB10_2 |
| 495 | +; SFB-NOZICOND-C-NEXT: # %bb.1: # %entry |
| 496 | +; SFB-NOZICOND-C-NEXT: or a0, a0, a1 |
| 497 | +; SFB-NOZICOND-C-NEXT: .LBB10_2: # %entry |
| 498 | +; SFB-NOZICOND-C-NEXT: ret |
| 499 | +; |
410 | 500 | ; SFB-ZICOND-LABEL: select_or_1: |
411 | 501 | ; SFB-ZICOND: # %bb.0: # %entry |
412 | 502 | ; SFB-ZICOND-NEXT: andi a2, a2, 1 |
@@ -444,6 +534,24 @@ define i32 @select_or_1b(i32 %A, i32 %B, i32 %cond) { |
444 | 534 | ; CMOV-NEXT: .LBB11_2: # %entry |
445 | 535 | ; CMOV-NEXT: ret |
446 | 536 | ; |
| 537 | +; SFB-NOZICOND-NOC-LABEL: select_or_1b: |
| 538 | +; SFB-NOZICOND-NOC: # %bb.0: # %entry |
| 539 | +; SFB-NOZICOND-NOC-NEXT: andi a2, a2, 1 |
| 540 | +; SFB-NOZICOND-NOC-NEXT: beqz a2, .LBB11_2 |
| 541 | +; SFB-NOZICOND-NOC-NEXT: # %bb.1: # %entry |
| 542 | +; SFB-NOZICOND-NOC-NEXT: or a0, a1, a0 |
| 543 | +; SFB-NOZICOND-NOC-NEXT: .LBB11_2: # %entry |
| 544 | +; SFB-NOZICOND-NOC-NEXT: ret |
| 545 | +; |
| 546 | +; SFB-NOZICOND-C-LABEL: select_or_1b: |
| 547 | +; SFB-NOZICOND-C: # %bb.0: # %entry |
| 548 | +; SFB-NOZICOND-C-NEXT: andi a2, a2, 1 |
| 549 | +; SFB-NOZICOND-C-NEXT: beqz a2, .LBB11_2 |
| 550 | +; SFB-NOZICOND-C-NEXT: # %bb.1: # %entry |
| 551 | +; SFB-NOZICOND-C-NEXT: or a0, a0, a1 |
| 552 | +; SFB-NOZICOND-C-NEXT: .LBB11_2: # %entry |
| 553 | +; SFB-NOZICOND-C-NEXT: ret |
| 554 | +; |
447 | 555 | ; SFB-ZICOND-LABEL: select_or_1b: |
448 | 556 | ; SFB-ZICOND: # %bb.0: # %entry |
449 | 557 | ; SFB-ZICOND-NEXT: andi a2, a2, 1 |
|
0 commit comments