33; RUN: | FileCheck -check-prefix=OMIT-FP %s
44; RUN: llc -mtriple=riscv64 -mattr=+v,+m -verify-machineinstrs -frame-pointer=all < %s \
55; RUN: | FileCheck -check-prefix=NO-OMIT-FP %s
6+ ; RUN: llc -mtriple=riscv64 -mattr=+v,+m,+zcmp -verify-machineinstrs < %s \
7+ ; RUN: | FileCheck -check-prefix=OMIT-FP-ZCMP %s
8+ ; RUN: llc -mtriple=riscv64 -mattr=+v,+m,+zcmp -verify-machineinstrs -frame-pointer=all < %s \
9+ ; RUN: | FileCheck -check-prefix=NO-OMIT-FP-ZCMP %s
610
711define riscv_vector_cc <vscale x 1 x i32 > @test_vector_callee_cfi (<vscale x 1 x i32 > %va ) {
812; OMIT-FP-LABEL: test_vector_callee_cfi:
913; OMIT-FP: # %bb.0: # %entry
10- ; OMIT-FP-NEXT: addi sp, sp, -16
11- ; OMIT-FP-NEXT: .cfi_def_cfa_offset 16
14+ ; OMIT-FP-NEXT: addi sp, sp, -48
15+ ; OMIT-FP-NEXT: .cfi_def_cfa_offset 48
16+ ; OMIT-FP-NEXT: sd s1, 40(sp) # 8-byte Folded Spill
17+ ; OMIT-FP-NEXT: .cfi_offset s1, -8
1218; OMIT-FP-NEXT: csrr a0, vlenb
1319; OMIT-FP-NEXT: slli a1, a0, 3
1420; OMIT-FP-NEXT: sub a0, a1, a0
1521; OMIT-FP-NEXT: sub sp, sp, a0
16- ; OMIT-FP-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10 , 0x22, 0x11, 0x07, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 7 * vlenb
22+ ; OMIT-FP-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30 , 0x22, 0x11, 0x07, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 7 * vlenb
1723; OMIT-FP-NEXT: csrr a0, vlenb
1824; OMIT-FP-NEXT: li a1, 6
1925; OMIT-FP-NEXT: mul a0, a0, a1
2026; OMIT-FP-NEXT: add a0, sp, a0
21- ; OMIT-FP-NEXT: addi a0, a0, 16
27+ ; OMIT-FP-NEXT: addi a0, a0, 32
2228; OMIT-FP-NEXT: vs1r.v v1, (a0) # Unknown-size Folded Spill
2329; OMIT-FP-NEXT: csrr a0, vlenb
2430; OMIT-FP-NEXT: slli a0, a0, 2
2531; OMIT-FP-NEXT: add a0, sp, a0
26- ; OMIT-FP-NEXT: addi a0, a0, 16
32+ ; OMIT-FP-NEXT: addi a0, a0, 32
2733; OMIT-FP-NEXT: vs2r.v v2, (a0) # Unknown-size Folded Spill
28- ; OMIT-FP-NEXT: addi a0, sp, 16
34+ ; OMIT-FP-NEXT: addi a0, sp, 32
2935; OMIT-FP-NEXT: vs4r.v v4, (a0) # Unknown-size Folded Spill
30- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x61, 0x08 , 0x11, 0x7f, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v1 @ cfa - 1 * vlenb
31- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x62, 0x08 , 0x11, 0x7d, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v2 @ cfa - 3 * vlenb
32- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x63, 0x08 , 0x11, 0x7e, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v3 @ cfa - 2 * vlenb
33- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x64, 0x08 , 0x11, 0x79, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v4 @ cfa - 7 * vlenb
34- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x65, 0x08 , 0x11, 0x7a, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v5 @ cfa - 6 * vlenb
35- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x66, 0x08 , 0x11, 0x7b, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v6 @ cfa - 5 * vlenb
36- ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x67, 0x08 , 0x11, 0x7c, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v7 @ cfa - 4 * vlenb
36+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x61, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x7f, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v1 @ cfa - 16 - 1 * vlenb
37+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x62, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x7d, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v2 @ cfa - 16 - 3 * vlenb
38+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x63, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x7e, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v3 @ cfa - 16 - 2 * vlenb
39+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x64, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x79, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v4 @ cfa - 16 - 7 * vlenb
40+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x65, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x7a, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v5 @ cfa - 16 - 6 * vlenb
41+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x66, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x7b, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v6 @ cfa - 16 - 5 * vlenb
42+ ; OMIT-FP-NEXT: .cfi_escape 0x10, 0x67, 0x0b , 0x11, 0x70, 0x22, 0x11, 0x7c, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v7 @ cfa - 16 - 4 * vlenb
3743; OMIT-FP-NEXT: #APP
3844; OMIT-FP-NEXT: #NO_APP
3945; OMIT-FP-NEXT: csrr a0, vlenb
4046; OMIT-FP-NEXT: li a1, 6
4147; OMIT-FP-NEXT: mul a0, a0, a1
4248; OMIT-FP-NEXT: add a0, sp, a0
43- ; OMIT-FP-NEXT: addi a0, a0, 16
49+ ; OMIT-FP-NEXT: addi a0, a0, 32
4450; OMIT-FP-NEXT: vl1r.v v1, (a0) # Unknown-size Folded Reload
4551; OMIT-FP-NEXT: csrr a0, vlenb
4652; OMIT-FP-NEXT: slli a0, a0, 2
4753; OMIT-FP-NEXT: add a0, sp, a0
48- ; OMIT-FP-NEXT: addi a0, a0, 16
54+ ; OMIT-FP-NEXT: addi a0, a0, 32
4955; OMIT-FP-NEXT: vl2r.v v2, (a0) # Unknown-size Folded Reload
50- ; OMIT-FP-NEXT: addi a0, sp, 16
56+ ; OMIT-FP-NEXT: addi a0, sp, 32
5157; OMIT-FP-NEXT: vl4r.v v4, (a0) # Unknown-size Folded Reload
5258; OMIT-FP-NEXT: csrr a0, vlenb
5359; OMIT-FP-NEXT: slli a1, a0, 3
5460; OMIT-FP-NEXT: sub a0, a1, a0
5561; OMIT-FP-NEXT: add sp, sp, a0
56- ; OMIT-FP-NEXT: .cfi_def_cfa sp, 16
62+ ; OMIT-FP-NEXT: .cfi_def_cfa sp, 48
5763; OMIT-FP-NEXT: .cfi_restore v1
5864; OMIT-FP-NEXT: .cfi_restore v2
5965; OMIT-FP-NEXT: .cfi_restore v3
6066; OMIT-FP-NEXT: .cfi_restore v4
6167; OMIT-FP-NEXT: .cfi_restore v5
6268; OMIT-FP-NEXT: .cfi_restore v6
6369; OMIT-FP-NEXT: .cfi_restore v7
64- ; OMIT-FP-NEXT: addi sp, sp, 16
70+ ; OMIT-FP-NEXT: ld s1, 40(sp) # 8-byte Folded Reload
71+ ; OMIT-FP-NEXT: .cfi_restore s1
72+ ; OMIT-FP-NEXT: addi sp, sp, 48
6573; OMIT-FP-NEXT: .cfi_def_cfa_offset 0
6674; OMIT-FP-NEXT: ret
6775;
6876; NO-OMIT-FP-LABEL: test_vector_callee_cfi:
6977; NO-OMIT-FP: # %bb.0: # %entry
70- ; NO-OMIT-FP-NEXT: addi sp, sp, -32
71- ; NO-OMIT-FP-NEXT: .cfi_def_cfa_offset 32
72- ; NO-OMIT-FP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
73- ; NO-OMIT-FP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
78+ ; NO-OMIT-FP-NEXT: addi sp, sp, -48
79+ ; NO-OMIT-FP-NEXT: .cfi_def_cfa_offset 48
80+ ; NO-OMIT-FP-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
81+ ; NO-OMIT-FP-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
82+ ; NO-OMIT-FP-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
7483; NO-OMIT-FP-NEXT: .cfi_offset ra, -8
7584; NO-OMIT-FP-NEXT: .cfi_offset s0, -16
76- ; NO-OMIT-FP-NEXT: addi s0, sp, 32
85+ ; NO-OMIT-FP-NEXT: .cfi_offset s1, -24
86+ ; NO-OMIT-FP-NEXT: addi s0, sp, 48
7787; NO-OMIT-FP-NEXT: .cfi_def_cfa s0, 0
7888; NO-OMIT-FP-NEXT: csrr a0, vlenb
7989; NO-OMIT-FP-NEXT: slli a1, a0, 3
8090; NO-OMIT-FP-NEXT: sub a0, a1, a0
8191; NO-OMIT-FP-NEXT: sub sp, sp, a0
8292; NO-OMIT-FP-NEXT: csrr a0, vlenb
8393; NO-OMIT-FP-NEXT: sub a0, s0, a0
84- ; NO-OMIT-FP-NEXT: addi a0, a0, -32
94+ ; NO-OMIT-FP-NEXT: addi a0, a0, -48
8595; NO-OMIT-FP-NEXT: vs1r.v v1, (a0) # Unknown-size Folded Spill
8696; NO-OMIT-FP-NEXT: csrr a0, vlenb
8797; NO-OMIT-FP-NEXT: slli a1, a0, 1
8898; NO-OMIT-FP-NEXT: add a0, a1, a0
8999; NO-OMIT-FP-NEXT: sub a0, s0, a0
90- ; NO-OMIT-FP-NEXT: addi a0, a0, -32
100+ ; NO-OMIT-FP-NEXT: addi a0, a0, -48
91101; NO-OMIT-FP-NEXT: vs2r.v v2, (a0) # Unknown-size Folded Spill
92102; NO-OMIT-FP-NEXT: csrr a0, vlenb
93103; NO-OMIT-FP-NEXT: slli a1, a0, 3
94104; NO-OMIT-FP-NEXT: sub a0, a1, a0
95105; NO-OMIT-FP-NEXT: sub a0, s0, a0
96- ; NO-OMIT-FP-NEXT: addi a0, a0, -32
106+ ; NO-OMIT-FP-NEXT: addi a0, a0, -48
97107; NO-OMIT-FP-NEXT: vs4r.v v4, (a0) # Unknown-size Folded Spill
98- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x61, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x7f, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v1 @ cfa - 32 - 1 * vlenb
99- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x62, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x7d, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v2 @ cfa - 32 - 3 * vlenb
100- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x63, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x7e, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v3 @ cfa - 32 - 2 * vlenb
101- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x64, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x79, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v4 @ cfa - 32 - 7 * vlenb
102- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x65, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x7a, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v5 @ cfa - 32 - 6 * vlenb
103- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x66, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x7b, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v6 @ cfa - 32 - 5 * vlenb
104- ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x67, 0x0b, 0x11, 0x60 , 0x22, 0x11, 0x7c, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v7 @ cfa - 32 - 4 * vlenb
108+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x61, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x7f, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v1 @ cfa - 48 - 1 * vlenb
109+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x62, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x7d, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v2 @ cfa - 48 - 3 * vlenb
110+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x63, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x7e, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v3 @ cfa - 48 - 2 * vlenb
111+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x64, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x79, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v4 @ cfa - 48 - 7 * vlenb
112+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x65, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x7a, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v5 @ cfa - 48 - 6 * vlenb
113+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x66, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x7b, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v6 @ cfa - 48 - 5 * vlenb
114+ ; NO-OMIT-FP-NEXT: .cfi_escape 0x10, 0x67, 0x0b, 0x11, 0x50 , 0x22, 0x11, 0x7c, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v7 @ cfa - 48 - 4 * vlenb
105115; NO-OMIT-FP-NEXT: #APP
106116; NO-OMIT-FP-NEXT: #NO_APP
107117; NO-OMIT-FP-NEXT: csrr a0, vlenb
108118; NO-OMIT-FP-NEXT: sub a0, s0, a0
109- ; NO-OMIT-FP-NEXT: addi a0, a0, -32
119+ ; NO-OMIT-FP-NEXT: addi a0, a0, -48
110120; NO-OMIT-FP-NEXT: vl1r.v v1, (a0) # Unknown-size Folded Reload
111121; NO-OMIT-FP-NEXT: csrr a0, vlenb
112122; NO-OMIT-FP-NEXT: slli a1, a0, 1
113123; NO-OMIT-FP-NEXT: add a0, a1, a0
114124; NO-OMIT-FP-NEXT: sub a0, s0, a0
115- ; NO-OMIT-FP-NEXT: addi a0, a0, -32
125+ ; NO-OMIT-FP-NEXT: addi a0, a0, -48
116126; NO-OMIT-FP-NEXT: vl2r.v v2, (a0) # Unknown-size Folded Reload
117127; NO-OMIT-FP-NEXT: csrr a0, vlenb
118128; NO-OMIT-FP-NEXT: slli a1, a0, 3
119129; NO-OMIT-FP-NEXT: sub a0, a1, a0
120130; NO-OMIT-FP-NEXT: sub a0, s0, a0
121- ; NO-OMIT-FP-NEXT: addi a0, a0, -32
131+ ; NO-OMIT-FP-NEXT: addi a0, a0, -48
122132; NO-OMIT-FP-NEXT: vl4r.v v4, (a0) # Unknown-size Folded Reload
123133; NO-OMIT-FP-NEXT: .cfi_restore v1
124134; NO-OMIT-FP-NEXT: .cfi_restore v2
@@ -127,18 +137,155 @@ define riscv_vector_cc <vscale x 1 x i32> @test_vector_callee_cfi(<vscale x 1 x
127137; NO-OMIT-FP-NEXT: .cfi_restore v5
128138; NO-OMIT-FP-NEXT: .cfi_restore v6
129139; NO-OMIT-FP-NEXT: .cfi_restore v7
130- ; NO-OMIT-FP-NEXT: addi sp, s0, -32
131- ; NO-OMIT-FP-NEXT: .cfi_def_cfa sp, 32
132- ; NO-OMIT-FP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
133- ; NO-OMIT-FP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
140+ ; NO-OMIT-FP-NEXT: addi sp, s0, -48
141+ ; NO-OMIT-FP-NEXT: .cfi_def_cfa sp, 48
142+ ; NO-OMIT-FP-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
143+ ; NO-OMIT-FP-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
144+ ; NO-OMIT-FP-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
134145; NO-OMIT-FP-NEXT: .cfi_restore ra
135146; NO-OMIT-FP-NEXT: .cfi_restore s0
136- ; NO-OMIT-FP-NEXT: addi sp, sp, 32
147+ ; NO-OMIT-FP-NEXT: .cfi_restore s1
148+ ; NO-OMIT-FP-NEXT: addi sp, sp, 48
137149; NO-OMIT-FP-NEXT: .cfi_def_cfa_offset 0
138150; NO-OMIT-FP-NEXT: ret
151+ ;
152+ ; OMIT-FP-ZCMP-LABEL: test_vector_callee_cfi:
153+ ; OMIT-FP-ZCMP: # %bb.0: # %entry
154+ ; OMIT-FP-ZCMP-NEXT: cm.push {ra, s0-s1}, -48
155+ ; OMIT-FP-ZCMP-NEXT: .cfi_def_cfa_offset 48
156+ ; OMIT-FP-ZCMP-NEXT: .cfi_offset s1, -8
157+ ; OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
158+ ; OMIT-FP-ZCMP-NEXT: slli a1, a0, 3
159+ ; OMIT-FP-ZCMP-NEXT: sub a0, a1, a0
160+ ; OMIT-FP-ZCMP-NEXT: sub sp, sp, a0
161+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x07, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 7 * vlenb
162+ ; OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
163+ ; OMIT-FP-ZCMP-NEXT: li a1, 6
164+ ; OMIT-FP-ZCMP-NEXT: mul a0, a0, a1
165+ ; OMIT-FP-ZCMP-NEXT: add a0, a0, sp
166+ ; OMIT-FP-ZCMP-NEXT: addi a0, a0, 16
167+ ; OMIT-FP-ZCMP-NEXT: vs1r.v v1, (a0) # Unknown-size Folded Spill
168+ ; OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
169+ ; OMIT-FP-ZCMP-NEXT: slli a0, a0, 2
170+ ; OMIT-FP-ZCMP-NEXT: add a0, a0, sp
171+ ; OMIT-FP-ZCMP-NEXT: addi a0, a0, 16
172+ ; OMIT-FP-ZCMP-NEXT: vs2r.v v2, (a0) # Unknown-size Folded Spill
173+ ; OMIT-FP-ZCMP-NEXT: addi a0, sp, 16
174+ ; OMIT-FP-ZCMP-NEXT: vs4r.v v4, (a0) # Unknown-size Folded Spill
175+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x61, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x7f, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v1 @ cfa - 64 - 1 * vlenb
176+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x62, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x7d, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v2 @ cfa - 64 - 3 * vlenb
177+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x63, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x7e, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v3 @ cfa - 64 - 2 * vlenb
178+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x64, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x79, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v4 @ cfa - 64 - 7 * vlenb
179+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x65, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x7a, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v5 @ cfa - 64 - 6 * vlenb
180+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x66, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x7b, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v6 @ cfa - 64 - 5 * vlenb
181+ ; OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x67, 0x0b, 0x11, 0x40, 0x22, 0x11, 0x7c, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v7 @ cfa - 64 - 4 * vlenb
182+ ; OMIT-FP-ZCMP-NEXT: #APP
183+ ; OMIT-FP-ZCMP-NEXT: #NO_APP
184+ ; OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
185+ ; OMIT-FP-ZCMP-NEXT: li a1, 6
186+ ; OMIT-FP-ZCMP-NEXT: mul a0, a0, a1
187+ ; OMIT-FP-ZCMP-NEXT: add a0, a0, sp
188+ ; OMIT-FP-ZCMP-NEXT: addi a0, a0, 16
189+ ; OMIT-FP-ZCMP-NEXT: vl1r.v v1, (a0) # Unknown-size Folded Reload
190+ ; OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
191+ ; OMIT-FP-ZCMP-NEXT: slli a0, a0, 2
192+ ; OMIT-FP-ZCMP-NEXT: add a0, a0, sp
193+ ; OMIT-FP-ZCMP-NEXT: addi a0, a0, 16
194+ ; OMIT-FP-ZCMP-NEXT: vl2r.v v2, (a0) # Unknown-size Folded Reload
195+ ; OMIT-FP-ZCMP-NEXT: addi a0, sp, 16
196+ ; OMIT-FP-ZCMP-NEXT: vl4r.v v4, (a0) # Unknown-size Folded Reload
197+ ; OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
198+ ; OMIT-FP-ZCMP-NEXT: slli a1, a0, 3
199+ ; OMIT-FP-ZCMP-NEXT: sub a0, a1, a0
200+ ; OMIT-FP-ZCMP-NEXT: add sp, sp, a0
201+ ; OMIT-FP-ZCMP-NEXT: .cfi_def_cfa sp, 48
202+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v1
203+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v2
204+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v3
205+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v4
206+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v5
207+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v6
208+ ; OMIT-FP-ZCMP-NEXT: .cfi_restore v7
209+ ; OMIT-FP-ZCMP-NEXT: cm.popret {ra, s0-s1}, 48
210+ ;
211+ ; NO-OMIT-FP-ZCMP-LABEL: test_vector_callee_cfi:
212+ ; NO-OMIT-FP-ZCMP: # %bb.0: # %entry
213+ ; NO-OMIT-FP-ZCMP-NEXT: addi sp, sp, -48
214+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_def_cfa_offset 48
215+ ; NO-OMIT-FP-ZCMP-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
216+ ; NO-OMIT-FP-ZCMP-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
217+ ; NO-OMIT-FP-ZCMP-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
218+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_offset ra, -8
219+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_offset s0, -16
220+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_offset s1, -24
221+ ; NO-OMIT-FP-ZCMP-NEXT: addi s0, sp, 48
222+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_def_cfa s0, 0
223+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
224+ ; NO-OMIT-FP-ZCMP-NEXT: slli a1, a0, 3
225+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, a1, a0
226+ ; NO-OMIT-FP-ZCMP-NEXT: sub sp, sp, a0
227+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
228+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, s0, a0
229+ ; NO-OMIT-FP-ZCMP-NEXT: addi a0, a0, -48
230+ ; NO-OMIT-FP-ZCMP-NEXT: vs1r.v v1, (a0) # Unknown-size Folded Spill
231+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
232+ ; NO-OMIT-FP-ZCMP-NEXT: slli a1, a0, 1
233+ ; NO-OMIT-FP-ZCMP-NEXT: add a0, a0, a1
234+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, s0, a0
235+ ; NO-OMIT-FP-ZCMP-NEXT: addi a0, a0, -48
236+ ; NO-OMIT-FP-ZCMP-NEXT: vs2r.v v2, (a0) # Unknown-size Folded Spill
237+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
238+ ; NO-OMIT-FP-ZCMP-NEXT: slli a1, a0, 3
239+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, a1, a0
240+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, s0, a0
241+ ; NO-OMIT-FP-ZCMP-NEXT: addi a0, a0, -48
242+ ; NO-OMIT-FP-ZCMP-NEXT: vs4r.v v4, (a0) # Unknown-size Folded Spill
243+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x61, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x7f, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v1 @ cfa - 48 - 1 * vlenb
244+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x62, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x7d, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v2 @ cfa - 48 - 3 * vlenb
245+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x63, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x7e, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v3 @ cfa - 48 - 2 * vlenb
246+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x64, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x79, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v4 @ cfa - 48 - 7 * vlenb
247+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x65, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x7a, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v5 @ cfa - 48 - 6 * vlenb
248+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x66, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x7b, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v6 @ cfa - 48 - 5 * vlenb
249+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_escape 0x10, 0x67, 0x0b, 0x11, 0x50, 0x22, 0x11, 0x7c, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # $v7 @ cfa - 48 - 4 * vlenb
250+ ; NO-OMIT-FP-ZCMP-NEXT: #APP
251+ ; NO-OMIT-FP-ZCMP-NEXT: #NO_APP
252+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
253+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, s0, a0
254+ ; NO-OMIT-FP-ZCMP-NEXT: addi a0, a0, -48
255+ ; NO-OMIT-FP-ZCMP-NEXT: vl1r.v v1, (a0) # Unknown-size Folded Reload
256+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
257+ ; NO-OMIT-FP-ZCMP-NEXT: slli a1, a0, 1
258+ ; NO-OMIT-FP-ZCMP-NEXT: add a0, a0, a1
259+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, s0, a0
260+ ; NO-OMIT-FP-ZCMP-NEXT: addi a0, a0, -48
261+ ; NO-OMIT-FP-ZCMP-NEXT: vl2r.v v2, (a0) # Unknown-size Folded Reload
262+ ; NO-OMIT-FP-ZCMP-NEXT: csrr a0, vlenb
263+ ; NO-OMIT-FP-ZCMP-NEXT: slli a1, a0, 3
264+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, a1, a0
265+ ; NO-OMIT-FP-ZCMP-NEXT: sub a0, s0, a0
266+ ; NO-OMIT-FP-ZCMP-NEXT: addi a0, a0, -48
267+ ; NO-OMIT-FP-ZCMP-NEXT: vl4r.v v4, (a0) # Unknown-size Folded Reload
268+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v1
269+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v2
270+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v3
271+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v4
272+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v5
273+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v6
274+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore v7
275+ ; NO-OMIT-FP-ZCMP-NEXT: addi sp, s0, -48
276+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_def_cfa sp, 48
277+ ; NO-OMIT-FP-ZCMP-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
278+ ; NO-OMIT-FP-ZCMP-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
279+ ; NO-OMIT-FP-ZCMP-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
280+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore ra
281+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore s0
282+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_restore s1
283+ ; NO-OMIT-FP-ZCMP-NEXT: addi sp, sp, 48
284+ ; NO-OMIT-FP-ZCMP-NEXT: .cfi_def_cfa_offset 0
285+ ; NO-OMIT-FP-ZCMP-NEXT: ret
139286entry:
140287 call void asm sideeffect "" ,
141- "~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7}" ()
288+ "~{v1},~{v2},~{v3},~{v4},~{v5},~{v6},~{v7},~{s1} " ()
142289
143290 ret <vscale x 1 x i32 > %va
144291}
0 commit comments