| # RUN: llc -mtriple riscv64 -mattr=+m,+v -run-pass=stack-coloring \ |
| # RUN: -riscv-v-vector-bits-min=512 -o - %s | FileCheck %s |
| |
| # Test that a scalable slot (%stack.1) is not merged into a non-scalable one |
| # (%stack.0) |
| |
| # CHECK: {{^}}stack: |
| # CHECK-NEXT: - { id: 0, |
| # CHECK: - { id: 1, |
| |
| --- | |
| define dso_local void @dont_merge() { |
| entry: |
| %buf1 = alloca <4 x i32> |
| %buf2 = alloca <vscale x 4 x i32> |
| ret void |
| } |
| |
| ... |
| --- |
| name: dont_merge |
| tracksRegLiveness: true |
| stack: |
| - { id: 0, name: buf1, size: 16, alignment: 16 } |
| - { id: 1, name: buf2, size: 16, alignment: 16, stack-id: scalable-vector } |
| body: | |
| bb.0.entry: |
| liveins: $v8, $v10, $x10, $x11 |
| |
| LIFETIME_START %stack.0 |
| PseudoVSPILL_M1 killed renamable $v8, %stack.0 :: (store 16 into %stack.0, align 16) |
| renamable $v8 = PseudoVRELOAD_M1 killed $x10 :: (load 16 from %stack.0, align 16) |
| LIFETIME_END %stack.0 |
| LIFETIME_START %stack.1 |
| PseudoVSPILL_M2 killed renamable $v10m2, %stack.1 :: (store unknown-size into %stack.1, align 16) |
| renamable $v10m2 = PseudoVRELOAD_M2 killed $x11 :: (load unknown-size from %stack.1, align 16) |
| LIFETIME_END %stack.1 |
| PseudoRET |
| ... |