@@ -60,27 +60,150 @@ define void @formal_argument_mix_sve_int_double(
60
60
;; 1024-bit cases which fit into Z0-Z7
61
61
;; TODO: Add tests for arguments that do not fit into Z0-Z7, when we support them. (They should be passed as memory addresses)
62
62
63
+ ;; nxv2___ 1024-bit
64
+ define void @formal_argument_nxv2i64_8 (
65
+ ; CHECK-LABEL: name: formal_argument_nxv2i64_8
66
+ ; CHECK: bb.1 (%ir-block.8):
67
+ ; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
68
+ ; CHECK-NEXT: {{ $}}
69
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z0
70
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z1
71
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z2
72
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z3
73
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z4
74
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z5
75
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z6
76
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z7
77
+ ; CHECK-NEXT: RET_ReallyLR
78
+ <vscale x 2 x i64 > %0 , <vscale x 2 x i64 > %1 , <vscale x 2 x i64 > %2 , <vscale x 2 x i64 > %3 ,
79
+ <vscale x 2 x i64 > %4 , <vscale x 2 x i64 > %5 , <vscale x 2 x i64 > %6 , <vscale x 2 x i64 > %7
80
+ ) {
81
+ ret void
82
+ }
83
+
84
+ define void @formal_argument_nxv2f64_8 (
85
+ ; CHECK-LABEL: name: formal_argument_nxv2f64_8
86
+ ; CHECK: bb.1 (%ir-block.8):
87
+ ; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
88
+ ; CHECK-NEXT: {{ $}}
89
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z0
90
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z1
91
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z2
92
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z3
93
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z4
94
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z5
95
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z6
96
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z7
97
+ ; CHECK-NEXT: RET_ReallyLR
98
+ <vscale x 2 x double > %0 , <vscale x 2 x double > %1 , <vscale x 2 x double > %2 , <vscale x 2 x double > %3 ,
99
+ <vscale x 2 x double > %4 , <vscale x 2 x double > %5 , <vscale x 2 x double > %6 , <vscale x 2 x double > %7
100
+ ) {
101
+ ret void
102
+ }
103
+
104
+ define void @formal_argument_nxv2p0_8 (
105
+ ; CHECK-LABEL: name: formal_argument_nxv2p0_8
106
+ ; CHECK: bb.1 (%ir-block.8):
107
+ ; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
108
+ ; CHECK-NEXT: {{ $}}
109
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z0
110
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z1
111
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z2
112
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z3
113
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z4
114
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z5
115
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z6
116
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $z7
117
+ ; CHECK-NEXT: RET_ReallyLR
118
+ <vscale x 2 x ptr > %0 , <vscale x 2 x ptr > %1 , <vscale x 2 x ptr > %2 , <vscale x 2 x ptr > %3 ,
119
+ <vscale x 2 x ptr > %4 , <vscale x 2 x ptr > %5 , <vscale x 2 x ptr > %6 , <vscale x 2 x ptr > %7
120
+ ) {
121
+ ret void
122
+ }
123
+
63
124
;; nxv4___ 1024-bit
64
- define void @formal_argument_nxv4i64_4 (
65
- ; CHECK-LABEL: name: formal_argument_nxv4i64_4
125
+ define void @formal_argument_nxv4i32_8 (
126
+ ; CHECK-LABEL: name: formal_argument_nxv4i32_8
66
127
; CHECK: bb.1 (%ir-block.8):
67
128
; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
68
129
; CHECK-NEXT: {{ $}}
69
- ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z0
70
- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z1
71
- ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z2
72
- ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z3
73
- ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z4
74
- ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z5
75
- ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z6
76
- ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 8 x s16 >) = COPY $z7
130
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z0
131
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z1
132
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z2
133
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z3
134
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z4
135
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z5
136
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z6
137
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 4 x s32 >) = COPY $z7
77
138
; CHECK-NEXT: RET_ReallyLR
78
- <vscale x 8 x i16 > %0 , <vscale x 8 x i16 > %1 , <vscale x 8 x i16 > %2 , <vscale x 8 x i16 > %3 ,
79
- <vscale x 8 x i16 > %4 , <vscale x 8 x i16 > %5 , <vscale x 8 x i16 > %6 , <vscale x 8 x i16 > %7
139
+ <vscale x 4 x i32 > %0 , <vscale x 4 x i32 > %1 , <vscale x 4 x i32 > %2 , <vscale x 4 x i32 > %3 ,
140
+ <vscale x 4 x i32 > %4 , <vscale x 4 x i32 > %5 , <vscale x 4 x i32 > %6 , <vscale x 4 x i32 > %7
80
141
) {
81
142
ret void
82
143
}
83
144
145
+ define void @formal_argument_nxv4f32_8 (
146
+ ; CHECK-LABEL: name: formal_argument_nxv4f32_8
147
+ ; CHECK: bb.1 (%ir-block.8):
148
+ ; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
149
+ ; CHECK-NEXT: {{ $}}
150
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z0
151
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z1
152
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z2
153
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z3
154
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z4
155
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z5
156
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z6
157
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $z7
158
+ ; CHECK-NEXT: RET_ReallyLR
159
+ <vscale x 4 x float > %0 , <vscale x 4 x float > %1 , <vscale x 4 x float > %2 , <vscale x 4 x float > %3 ,
160
+ <vscale x 4 x float > %4 , <vscale x 4 x float > %5 , <vscale x 4 x float > %6 , <vscale x 4 x float > %7
161
+ ) {
162
+ ret void
163
+ }
164
+
165
+ define void @formal_argument_nxv4i64_4 (<vscale x 4 x i64 > %0 , <vscale x 4 x i64 > %1 , <vscale x 4 x i64 > %2 , <vscale x 4 x i64 > %3 ) {
166
+ ; CHECK-LABEL: name: formal_argument_nxv4i64_4
167
+ ; CHECK: bb.1 (%ir-block.4):
168
+ ; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
169
+ ; CHECK-NEXT: {{ $}}
170
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z0
171
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z1
172
+ ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<vscale x 4 x s64>) = G_CONCAT_VECTORS [[COPY]](<vscale x 2 x s64>), [[COPY1]](<vscale x 2 x s64>)
173
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z2
174
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z3
175
+ ; CHECK-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<vscale x 4 x s64>) = G_CONCAT_VECTORS [[COPY2]](<vscale x 2 x s64>), [[COPY3]](<vscale x 2 x s64>)
176
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z4
177
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z5
178
+ ; CHECK-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<vscale x 4 x s64>) = G_CONCAT_VECTORS [[COPY4]](<vscale x 2 x s64>), [[COPY5]](<vscale x 2 x s64>)
179
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z6
180
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z7
181
+ ; CHECK-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<vscale x 4 x s64>) = G_CONCAT_VECTORS [[COPY6]](<vscale x 2 x s64>), [[COPY7]](<vscale x 2 x s64>)
182
+ ; CHECK-NEXT: RET_ReallyLR
183
+ ret void
184
+ }
185
+
186
+ define void @formal_argument_nxv4p0_4 (<vscale x 4 x ptr > %0 , <vscale x 4 x ptr > %1 , <vscale x 4 x ptr > %2 , <vscale x 4 x ptr > %3 ) {
187
+ ; CHECK-LABEL: name: formal_argument_nxv4p0_4
188
+ ; CHECK: bb.1 (%ir-block.4):
189
+ ; CHECK-NEXT: liveins: $z0, $z1, $z2, $z3, $z4, $z5, $z6, $z7
190
+ ; CHECK-NEXT: {{ $}}
191
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z0
192
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z1
193
+ ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<vscale x 4 x p0>) = G_CONCAT_VECTORS [[COPY]](<vscale x 2 x s64>), [[COPY1]](<vscale x 2 x s64>)
194
+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z2
195
+ ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z3
196
+ ; CHECK-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<vscale x 4 x p0>) = G_CONCAT_VECTORS [[COPY2]](<vscale x 2 x s64>), [[COPY3]](<vscale x 2 x s64>)
197
+ ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z4
198
+ ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z5
199
+ ; CHECK-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<vscale x 4 x p0>) = G_CONCAT_VECTORS [[COPY4]](<vscale x 2 x s64>), [[COPY5]](<vscale x 2 x s64>)
200
+ ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z6
201
+ ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $z7
202
+ ; CHECK-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<vscale x 4 x p0>) = G_CONCAT_VECTORS [[COPY6]](<vscale x 2 x s64>), [[COPY7]](<vscale x 2 x s64>)
203
+ ; CHECK-NEXT: RET_ReallyLR
204
+ ret void
205
+ }
206
+
84
207
;; nxv8___ 1024-bit
85
208
define void @formal_argument_nxv8i16_8 (
86
209
; CHECK-LABEL: name: formal_argument_nxv8i16_8
0 commit comments