|
3 | 3 | ; RUN: | FileCheck %s --check-prefixes=CHECK,NOZBA
|
4 | 4 | ; RUN: llc -mtriple=riscv64 -mattr=+m,+v,+zba -verify-machineinstrs < %s \
|
5 | 5 | ; RUN: | FileCheck %s --check-prefixes=CHECK,ZBA
|
| 6 | +; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \ |
| 7 | +; RUN: | FileCheck %s --check-prefixes=CHECK,NOMUL |
6 | 8 |
|
7 | 9 | define void @lmul1() nounwind {
|
8 | 10 | ; CHECK-LABEL: lmul1:
|
@@ -243,6 +245,26 @@ define void @lmul4_and_2_x2_1() nounwind {
|
243 | 245 | ; ZBA-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
|
244 | 246 | ; ZBA-NEXT: addi sp, sp, 48
|
245 | 247 | ; ZBA-NEXT: ret
|
| 248 | +; |
| 249 | +; NOMUL-LABEL: lmul4_and_2_x2_1: |
| 250 | +; NOMUL: # %bb.0: |
| 251 | +; NOMUL-NEXT: addi sp, sp, -48 |
| 252 | +; NOMUL-NEXT: sd ra, 40(sp) # 8-byte Folded Spill |
| 253 | +; NOMUL-NEXT: sd s0, 32(sp) # 8-byte Folded Spill |
| 254 | +; NOMUL-NEXT: addi s0, sp, 48 |
| 255 | +; NOMUL-NEXT: csrr a0, vlenb |
| 256 | +; NOMUL-NEXT: li a1, 0 |
| 257 | +; NOMUL-NEXT: slli a0, a0, 2 |
| 258 | +; NOMUL-NEXT: add a1, a1, a0 |
| 259 | +; NOMUL-NEXT: slli a0, a0, 1 |
| 260 | +; NOMUL-NEXT: add a0, a0, a1 |
| 261 | +; NOMUL-NEXT: sub sp, sp, a0 |
| 262 | +; NOMUL-NEXT: andi sp, sp, -32 |
| 263 | +; NOMUL-NEXT: addi sp, s0, -48 |
| 264 | +; NOMUL-NEXT: ld ra, 40(sp) # 8-byte Folded Reload |
| 265 | +; NOMUL-NEXT: ld s0, 32(sp) # 8-byte Folded Reload |
| 266 | +; NOMUL-NEXT: addi sp, sp, 48 |
| 267 | +; NOMUL-NEXT: ret |
246 | 268 | %v1 = alloca <vscale x 4 x i64>
|
247 | 269 | %v3 = alloca <vscale x 4 x i64>
|
248 | 270 | %v2 = alloca <vscale x 2 x i64>
|
@@ -425,6 +447,26 @@ define void @lmul_8_x5() nounwind {
|
425 | 447 | ; ZBA-NEXT: ld s0, 64(sp) # 8-byte Folded Reload
|
426 | 448 | ; ZBA-NEXT: addi sp, sp, 80
|
427 | 449 | ; ZBA-NEXT: ret
|
| 450 | +; |
| 451 | +; NOMUL-LABEL: lmul_8_x5: |
| 452 | +; NOMUL: # %bb.0: |
| 453 | +; NOMUL-NEXT: addi sp, sp, -80 |
| 454 | +; NOMUL-NEXT: sd ra, 72(sp) # 8-byte Folded Spill |
| 455 | +; NOMUL-NEXT: sd s0, 64(sp) # 8-byte Folded Spill |
| 456 | +; NOMUL-NEXT: addi s0, sp, 80 |
| 457 | +; NOMUL-NEXT: csrr a0, vlenb |
| 458 | +; NOMUL-NEXT: li a1, 0 |
| 459 | +; NOMUL-NEXT: slli a0, a0, 3 |
| 460 | +; NOMUL-NEXT: add a1, a1, a0 |
| 461 | +; NOMUL-NEXT: slli a0, a0, 2 |
| 462 | +; NOMUL-NEXT: add a0, a0, a1 |
| 463 | +; NOMUL-NEXT: sub sp, sp, a0 |
| 464 | +; NOMUL-NEXT: andi sp, sp, -64 |
| 465 | +; NOMUL-NEXT: addi sp, s0, -80 |
| 466 | +; NOMUL-NEXT: ld ra, 72(sp) # 8-byte Folded Reload |
| 467 | +; NOMUL-NEXT: ld s0, 64(sp) # 8-byte Folded Reload |
| 468 | +; NOMUL-NEXT: addi sp, sp, 80 |
| 469 | +; NOMUL-NEXT: ret |
428 | 470 | %v1 = alloca <vscale x 8 x i64>
|
429 | 471 | %v2 = alloca <vscale x 8 x i64>
|
430 | 472 | %v3 = alloca <vscale x 8 x i64>
|
@@ -467,6 +509,26 @@ define void @lmul_8_x9() nounwind {
|
467 | 509 | ; ZBA-NEXT: ld s0, 64(sp) # 8-byte Folded Reload
|
468 | 510 | ; ZBA-NEXT: addi sp, sp, 80
|
469 | 511 | ; ZBA-NEXT: ret
|
| 512 | +; |
| 513 | +; NOMUL-LABEL: lmul_8_x9: |
| 514 | +; NOMUL: # %bb.0: |
| 515 | +; NOMUL-NEXT: addi sp, sp, -80 |
| 516 | +; NOMUL-NEXT: sd ra, 72(sp) # 8-byte Folded Spill |
| 517 | +; NOMUL-NEXT: sd s0, 64(sp) # 8-byte Folded Spill |
| 518 | +; NOMUL-NEXT: addi s0, sp, 80 |
| 519 | +; NOMUL-NEXT: csrr a0, vlenb |
| 520 | +; NOMUL-NEXT: li a1, 0 |
| 521 | +; NOMUL-NEXT: slli a0, a0, 3 |
| 522 | +; NOMUL-NEXT: add a1, a1, a0 |
| 523 | +; NOMUL-NEXT: slli a0, a0, 3 |
| 524 | +; NOMUL-NEXT: add a0, a0, a1 |
| 525 | +; NOMUL-NEXT: sub sp, sp, a0 |
| 526 | +; NOMUL-NEXT: andi sp, sp, -64 |
| 527 | +; NOMUL-NEXT: addi sp, s0, -80 |
| 528 | +; NOMUL-NEXT: ld ra, 72(sp) # 8-byte Folded Reload |
| 529 | +; NOMUL-NEXT: ld s0, 64(sp) # 8-byte Folded Reload |
| 530 | +; NOMUL-NEXT: addi sp, sp, 80 |
| 531 | +; NOMUL-NEXT: ret |
470 | 532 | %v1 = alloca <vscale x 8 x i64>
|
471 | 533 | %v2 = alloca <vscale x 8 x i64>
|
472 | 534 | %v3 = alloca <vscale x 8 x i64>
|
|
0 commit comments