@@ -48,31 +48,32 @@ define <vscale x 1 x i1> @insertelement_nxv1i1_1() {
48
48
ret <vscale x 1 x i1 > %a
49
49
}
50
50
51
- define <vscale x 1 x i1 > @insertelement_nxv1i1_2 (i1 %x ) {
51
+ define <vscale x 1 x i1 > @insertelement_nxv1i1_2 (i1 %x , i32 %idx ) {
52
52
; RV32-LABEL: name: insertelement_nxv1i1_2
53
53
; RV32: bb.1 (%ir-block.0):
54
- ; RV32-NEXT: liveins: $x10
54
+ ; RV32-NEXT: liveins: $x10, $x11
55
55
; RV32-NEXT: {{ $}}
56
56
; RV32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
57
57
; RV32-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
58
+ ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
58
59
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
59
- ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
60
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 1 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
60
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 1 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[COPY1]](s32)
61
61
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 1 x s1>)
62
62
; RV32-NEXT: PseudoRET implicit $v0
63
63
;
64
64
; RV64-LABEL: name: insertelement_nxv1i1_2
65
65
; RV64: bb.1 (%ir-block.0):
66
- ; RV64-NEXT: liveins: $x10
66
+ ; RV64-NEXT: liveins: $x10, $x11
67
67
; RV64-NEXT: {{ $}}
68
68
; RV64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
69
69
; RV64-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s64)
70
+ ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
71
+ ; RV64-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
70
72
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF
71
- ; RV64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
72
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 1 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
73
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 1 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[TRUNC1]](s32)
73
74
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 1 x s1>)
74
75
; RV64-NEXT: PseudoRET implicit $v0
75
- %a = insertelement <vscale x 1 x i1 > poison, i1 %x , i32 0
76
+ %a = insertelement <vscale x 1 x i1 > poison, i1 %x , i32 %idx
76
77
ret <vscale x 1 x i1 > %a
77
78
}
78
79
@@ -81,7 +82,7 @@ define <vscale x 2 x i1> @insertelement_nxv2i1_0() {
81
82
; RV32: bb.1 (%ir-block.0):
82
83
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
83
84
; RV32-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
84
- ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
85
+ ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
85
86
; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s1), [[C1]](s32)
86
87
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 2 x s1>)
87
88
; RV32-NEXT: PseudoRET implicit $v0
@@ -90,11 +91,11 @@ define <vscale x 2 x i1> @insertelement_nxv2i1_0() {
90
91
; RV64: bb.1 (%ir-block.0):
91
92
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
92
93
; RV64-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
93
- ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
94
+ ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
94
95
; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s1), [[C1]](s32)
95
96
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 2 x s1>)
96
97
; RV64-NEXT: PseudoRET implicit $v0
97
- %a = insertelement <vscale x 2 x i1 > poison, i1 0 , i32 0
98
+ %a = insertelement <vscale x 2 x i1 > poison, i1 0 , i32 1
98
99
ret <vscale x 2 x i1 > %a
99
100
}
100
101
@@ -120,31 +121,32 @@ define <vscale x 2 x i1> @insertelement_nxv2i1_1() {
120
121
ret <vscale x 2 x i1 > %a
121
122
}
122
123
123
- define <vscale x 2 x i1 > @insertelement_nxv2i1_2 (i1 %x ) {
124
+ define <vscale x 2 x i1 > @insertelement_nxv2i1_2 (i1 %x , i32 %idx ) {
124
125
; RV32-LABEL: name: insertelement_nxv2i1_2
125
126
; RV32: bb.1 (%ir-block.0):
126
- ; RV32-NEXT: liveins: $x10
127
+ ; RV32-NEXT: liveins: $x10, $x11
127
128
; RV32-NEXT: {{ $}}
128
129
; RV32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
129
130
; RV32-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
131
+ ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
130
132
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
131
- ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
132
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
133
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[COPY1]](s32)
133
134
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 2 x s1>)
134
135
; RV32-NEXT: PseudoRET implicit $v0
135
136
;
136
137
; RV64-LABEL: name: insertelement_nxv2i1_2
137
138
; RV64: bb.1 (%ir-block.0):
138
- ; RV64-NEXT: liveins: $x10
139
+ ; RV64-NEXT: liveins: $x10, $x11
139
140
; RV64-NEXT: {{ $}}
140
141
; RV64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
141
142
; RV64-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s64)
143
+ ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
144
+ ; RV64-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
142
145
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF
143
- ; RV64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
144
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
146
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[TRUNC1]](s32)
145
147
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 2 x s1>)
146
148
; RV64-NEXT: PseudoRET implicit $v0
147
- %a = insertelement <vscale x 2 x i1 > poison, i1 %x , i32 0
149
+ %a = insertelement <vscale x 2 x i1 > poison, i1 %x , i32 %idx
148
150
ret <vscale x 2 x i1 > %a
149
151
}
150
152
@@ -153,7 +155,7 @@ define <vscale x 4 x i1> @insertelement_nxv4i1_0() {
153
155
; RV32: bb.1 (%ir-block.0):
154
156
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
155
157
; RV32-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
156
- ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
158
+ ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
157
159
; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 4 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s1), [[C1]](s32)
158
160
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 4 x s1>)
159
161
; RV32-NEXT: PseudoRET implicit $v0
@@ -162,11 +164,11 @@ define <vscale x 4 x i1> @insertelement_nxv4i1_0() {
162
164
; RV64: bb.1 (%ir-block.0):
163
165
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF
164
166
; RV64-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
165
- ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
167
+ ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
166
168
; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 4 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s1), [[C1]](s32)
167
169
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 4 x s1>)
168
170
; RV64-NEXT: PseudoRET implicit $v0
169
- %a = insertelement <vscale x 4 x i1 > poison, i1 0 , i32 0
171
+ %a = insertelement <vscale x 4 x i1 > poison, i1 0 , i32 2
170
172
ret <vscale x 4 x i1 > %a
171
173
}
172
174
@@ -264,31 +266,32 @@ define <vscale x 8 x i1> @insertelement_nxv8i1_1() {
264
266
ret <vscale x 8 x i1 > %a
265
267
}
266
268
267
- define <vscale x 8 x i1 > @insertelement_nxv8i1_2 (i1 %x ) {
269
+ define <vscale x 8 x i1 > @insertelement_nxv8i1_2 (i1 %x , i32 %idx ) {
268
270
; RV32-LABEL: name: insertelement_nxv8i1_2
269
271
; RV32: bb.1 (%ir-block.0):
270
- ; RV32-NEXT: liveins: $x10
272
+ ; RV32-NEXT: liveins: $x10, $x11
271
273
; RV32-NEXT: {{ $}}
272
274
; RV32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
273
275
; RV32-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
276
+ ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
274
277
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
275
- ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
276
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 8 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
278
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 8 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[COPY1]](s32)
277
279
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 8 x s1>)
278
280
; RV32-NEXT: PseudoRET implicit $v0
279
281
;
280
282
; RV64-LABEL: name: insertelement_nxv8i1_2
281
283
; RV64: bb.1 (%ir-block.0):
282
- ; RV64-NEXT: liveins: $x10
284
+ ; RV64-NEXT: liveins: $x10, $x11
283
285
; RV64-NEXT: {{ $}}
284
286
; RV64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
285
287
; RV64-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s64)
288
+ ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
289
+ ; RV64-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
286
290
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF
287
- ; RV64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
288
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 8 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
291
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 8 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[TRUNC1]](s32)
289
292
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 8 x s1>)
290
293
; RV64-NEXT: PseudoRET implicit $v0
291
- %a = insertelement <vscale x 8 x i1 > poison, i1 %x , i32 0
294
+ %a = insertelement <vscale x 8 x i1 > poison, i1 %x , i32 %idx
292
295
ret <vscale x 8 x i1 > %a
293
296
}
294
297
@@ -297,7 +300,7 @@ define <vscale x 16 x i1> @insertelement_nxv16i1_0() {
297
300
; RV32: bb.1 (%ir-block.0):
298
301
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
299
302
; RV32-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
300
- ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
303
+ ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
301
304
; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s1), [[C1]](s32)
302
305
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 16 x s1>)
303
306
; RV32-NEXT: PseudoRET implicit $v0
@@ -306,11 +309,11 @@ define <vscale x 16 x i1> @insertelement_nxv16i1_0() {
306
309
; RV64: bb.1 (%ir-block.0):
307
310
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
308
311
; RV64-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
309
- ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
312
+ ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
310
313
; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s1), [[C1]](s32)
311
314
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 16 x s1>)
312
315
; RV64-NEXT: PseudoRET implicit $v0
313
- %a = insertelement <vscale x 16 x i1 > poison, i1 0 , i32 0
316
+ %a = insertelement <vscale x 16 x i1 > poison, i1 0 , i32 15
314
317
ret <vscale x 16 x i1 > %a
315
318
}
316
319
@@ -336,31 +339,32 @@ define <vscale x 16 x i1> @insertelement_nxv16i1_1() {
336
339
ret <vscale x 16 x i1 > %a
337
340
}
338
341
339
- define <vscale x 16 x i1 > @insertelement_nxv16i1_2 (i1 %x ) {
342
+ define <vscale x 16 x i1 > @insertelement_nxv16i1_2 (i1 %x , i32 %idx ) {
340
343
; RV32-LABEL: name: insertelement_nxv16i1_2
341
344
; RV32: bb.1 (%ir-block.0):
342
- ; RV32-NEXT: liveins: $x10
345
+ ; RV32-NEXT: liveins: $x10, $x11
343
346
; RV32-NEXT: {{ $}}
344
347
; RV32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
345
348
; RV32-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)
349
+ ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
346
350
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
347
- ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
348
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
351
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[COPY1]](s32)
349
352
; RV32-NEXT: $v0 = COPY [[IVEC]](<vscale x 16 x s1>)
350
353
; RV32-NEXT: PseudoRET implicit $v0
351
354
;
352
355
; RV64-LABEL: name: insertelement_nxv16i1_2
353
356
; RV64: bb.1 (%ir-block.0):
354
- ; RV64-NEXT: liveins: $x10
357
+ ; RV64-NEXT: liveins: $x10, $x11
355
358
; RV64-NEXT: {{ $}}
356
359
; RV64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
357
360
; RV64-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s64)
361
+ ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
362
+ ; RV64-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)
358
363
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF
359
- ; RV64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
360
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[C]](s32)
364
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s1>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s1), [[TRUNC1]](s32)
361
365
; RV64-NEXT: $v0 = COPY [[IVEC]](<vscale x 16 x s1>)
362
366
; RV64-NEXT: PseudoRET implicit $v0
363
- %a = insertelement <vscale x 16 x i1 > poison, i1 %x , i32 0
367
+ %a = insertelement <vscale x 16 x i1 > poison, i1 %x , i32 %idx
364
368
ret <vscale x 16 x i1 > %a
365
369
}
366
370
@@ -685,20 +689,20 @@ define <vscale x 16 x i8> @insertelement_nxv16i8_0() {
685
689
; RV32: bb.1 (%ir-block.0):
686
690
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
687
691
; RV32-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
688
- ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32 ) = G_CONSTANT i32 0
689
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s8), [[C1]](s32 )
692
+ ; RV32-NEXT: [[C1:%[0-9]+]]:_(s64 ) = G_CONSTANT i64 0
693
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s8), [[C1]](s64 )
690
694
; RV32-NEXT: $v8m2 = COPY [[IVEC]](<vscale x 16 x s8>)
691
695
; RV32-NEXT: PseudoRET implicit $v8m2
692
696
;
693
697
; RV64-LABEL: name: insertelement_nxv16i8_0
694
698
; RV64: bb.1 (%ir-block.0):
695
699
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
696
700
; RV64-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
697
- ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32 ) = G_CONSTANT i32 0
698
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s8), [[C1]](s32 )
701
+ ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64 ) = G_CONSTANT i64 0
702
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s8), [[C1]](s64 )
699
703
; RV64-NEXT: $v8m2 = COPY [[IVEC]](<vscale x 16 x s8>)
700
704
; RV64-NEXT: PseudoRET implicit $v8m2
701
- %a = insertelement <vscale x 16 x i8 > poison, i8 0 , i32 0
705
+ %a = insertelement <vscale x 16 x i8 > poison, i8 0 , i64 0
702
706
ret <vscale x 16 x i8 > %a
703
707
}
704
708
@@ -724,31 +728,33 @@ define <vscale x 16 x i8> @insertelement_nxv16i8_1() {
724
728
ret <vscale x 16 x i8 > %a
725
729
}
726
730
727
- define <vscale x 16 x i8 > @insertelement_nxv16i8_2 (i8 %x ) {
731
+ define <vscale x 16 x i8 > @insertelement_nxv16i8_2 (i8 %x , i64 %idx ) {
728
732
; RV32-LABEL: name: insertelement_nxv16i8_2
729
733
; RV32: bb.1 (%ir-block.0):
730
- ; RV32-NEXT: liveins: $x10
734
+ ; RV32-NEXT: liveins: $x10, $x11, $x12
731
735
; RV32-NEXT: {{ $}}
732
736
; RV32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10
733
737
; RV32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
738
+ ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11
739
+ ; RV32-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12
740
+ ; RV32-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)
734
741
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
735
- ; RV32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
736
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s8), [[C]](s32)
742
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s8), [[MV]](s64)
737
743
; RV32-NEXT: $v8m2 = COPY [[IVEC]](<vscale x 16 x s8>)
738
744
; RV32-NEXT: PseudoRET implicit $v8m2
739
745
;
740
746
; RV64-LABEL: name: insertelement_nxv16i8_2
741
747
; RV64: bb.1 (%ir-block.0):
742
- ; RV64-NEXT: liveins: $x10
748
+ ; RV64-NEXT: liveins: $x10, $x11
743
749
; RV64-NEXT: {{ $}}
744
750
; RV64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10
745
751
; RV64-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s64)
752
+ ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11
746
753
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF
747
- ; RV64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
748
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s8), [[C]](s32)
754
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 16 x s8>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s8), [[COPY1]](s64)
749
755
; RV64-NEXT: $v8m2 = COPY [[IVEC]](<vscale x 16 x s8>)
750
756
; RV64-NEXT: PseudoRET implicit $v8m2
751
- %a = insertelement <vscale x 16 x i8 > poison, i8 %x , i32 0
757
+ %a = insertelement <vscale x 16 x i8 > poison, i8 %x , i64 %idx
752
758
ret <vscale x 16 x i8 > %a
753
759
}
754
760
@@ -857,20 +863,20 @@ define <vscale x 2 x i16> @insertelement_nxv2i16_0() {
857
863
; RV32: bb.1 (%ir-block.0):
858
864
; RV32-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
859
865
; RV32-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
860
- ; RV32-NEXT: [[C1:%[0-9]+]]:_(s32 ) = G_CONSTANT i32 0
861
- ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s16>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s16), [[C1]](s32 )
866
+ ; RV32-NEXT: [[C1:%[0-9]+]]:_(s64 ) = G_CONSTANT i64 1
867
+ ; RV32-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s16>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s16), [[C1]](s64 )
862
868
; RV32-NEXT: $v8 = COPY [[IVEC]](<vscale x 2 x s16>)
863
869
; RV32-NEXT: PseudoRET implicit $v8
864
870
;
865
871
; RV64-LABEL: name: insertelement_nxv2i16_0
866
872
; RV64: bb.1 (%ir-block.0):
867
873
; RV64-NEXT: [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF
868
874
; RV64-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
869
- ; RV64-NEXT: [[C1:%[0-9]+]]:_(s32 ) = G_CONSTANT i32 0
870
- ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s16>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s16), [[C1]](s32 )
875
+ ; RV64-NEXT: [[C1:%[0-9]+]]:_(s64 ) = G_CONSTANT i64 1
876
+ ; RV64-NEXT: [[IVEC:%[0-9]+]]:_(<vscale x 2 x s16>) = G_INSERT_VECTOR_ELT [[DEF]], [[C]](s16), [[C1]](s64 )
871
877
; RV64-NEXT: $v8 = COPY [[IVEC]](<vscale x 2 x s16>)
872
878
; RV64-NEXT: PseudoRET implicit $v8
873
- %a = insertelement <vscale x 2 x i16 > poison, i16 0 , i32 0
879
+ %a = insertelement <vscale x 2 x i16 > poison, i16 0 , i64 1
874
880
ret <vscale x 2 x i16 > %a
875
881
}
876
882
0 commit comments