xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/stack-coloring-scalablevec.mir (revision f1fd5c9b365b1280923fa83444af024fa5204a29)
1# RUN: llc -mtriple riscv64 -mattr=+m,+v -run-pass=stack-coloring \
2# RUN:     -riscv-v-vector-bits-min=512 -o - %s | FileCheck %s
3
4# Test that a scalable slot (%stack.1) is not merged into a non-scalable one
5# (%stack.0)
6
7# CHECK:    {{^}}stack:
8# CHECK-NEXT: - { id: 0,
9# CHECK:      - { id: 1,
10
11--- |
12  define dso_local void @dont_merge() {
13  entry:
14    %buf1 = alloca <4 x i32>
15    %buf2 = alloca <vscale x 4 x i32>
16    ret void
17  }
18
19...
20---
21name:            dont_merge
22tracksRegLiveness: true
23stack:
24  - { id: 0, name: buf1, size: 16, alignment: 16 }
25  - { id: 1, name: buf2, size: 16, alignment: 16, stack-id: scalable-vector }
26body:             |
27  bb.0.entry:
28    liveins: $v8, $v10, $x10, $x11
29
30    LIFETIME_START %stack.0
31    VS1R_V killed renamable $v8, %stack.0 :: (store 16 into %stack.0, align 16)
32    renamable $v8 = VL1RE8_V killed $x10 :: (load 16 from %stack.0, align 16)
33    LIFETIME_END %stack.0
34    LIFETIME_START %stack.1
35    VS2R_V killed renamable $v10m2, %stack.1 :: (store unknown-size into %stack.1, align 16)
36    renamable $v10m2 = VL2RE8_V killed $x11 :: (load unknown-size from %stack.1, align 16)
37    LIFETIME_END %stack.1
38    PseudoRET
39...
40