@@ -15,9 +15,7 @@ define fastcc <256 x i64> @insert_rr_v256i64(i32 signext %idx, i64 %s) {
15
15
define fastcc <256 x i64 > @insert_ri7_v256i64 (i64 %s ) {
16
16
; CHECK-LABEL: insert_ri7_v256i64:
17
17
; CHECK: # %bb.0:
18
- ; CHECK-NEXT: lea %s0, 256
19
- ; CHECK-NEXT: lvl %s0
20
- ; CHECK-NEXT: vbrd %v0, %s0
18
+ ; CHECK-NEXT: lsv %v0(127), %s0
21
19
; CHECK-NEXT: b.l.t (, %s10)
22
20
%ret = insertelement <256 x i64 > undef , i64 %s , i32 127
23
21
ret <256 x i64 > %ret
@@ -26,9 +24,8 @@ define fastcc <256 x i64> @insert_ri7_v256i64(i64 %s) {
26
24
define fastcc <256 x i64 > @insert_ri8_v256i64 (i64 %s ) {
27
25
; CHECK-LABEL: insert_ri8_v256i64:
28
26
; CHECK: # %bb.0:
29
- ; CHECK-NEXT: lea %s0, 256
30
- ; CHECK-NEXT: lvl %s0
31
- ; CHECK-NEXT: vbrd %v0, %s0
27
+ ; CHECK-NEXT: lea %s1, 128
28
+ ; CHECK-NEXT: lsv %v0(%s1), %s0
32
29
; CHECK-NEXT: b.l.t (, %s10)
33
30
%ret = insertelement <256 x i64 > undef , i64 %s , i32 128
34
31
ret <256 x i64 > %ret
@@ -37,9 +34,7 @@ define fastcc <256 x i64> @insert_ri8_v256i64(i64 %s) {
37
34
define fastcc <512 x i64 > @insert_ri_v512i64 (i64 %s ) {
38
35
; CHECK-LABEL: insert_ri_v512i64:
39
36
; CHECK: # %bb.0:
40
- ; CHECK-NEXT: lea %s0, 256
41
- ; CHECK-NEXT: lvl %s0
42
- ; CHECK-NEXT: vbrd %v1, %s0
37
+ ; CHECK-NEXT: lsv %v1(116), %s0
43
38
; CHECK-NEXT: b.l.t (, %s10)
44
39
%ret = insertelement <512 x i64 > undef , i64 %s , i32 372
45
40
ret <512 x i64 > %ret
@@ -60,9 +55,8 @@ define fastcc <256 x i32> @insert_rr_v256i32(i32 signext %idx, i32 signext %s) {
60
55
define fastcc <256 x i32 > @insert_ri7_v256i32 (i32 signext %s ) {
61
56
; CHECK-LABEL: insert_ri7_v256i32:
62
57
; CHECK: # %bb.0:
63
- ; CHECK-NEXT: lea %s0, 256
64
- ; CHECK-NEXT: lvl %s0
65
- ; CHECK-NEXT: vbrd %v0, %s0
58
+ ; CHECK-NEXT: and %s0, %s0, (32)0
59
+ ; CHECK-NEXT: lsv %v0(127), %s0
66
60
; CHECK-NEXT: b.l.t (, %s10)
67
61
%ret = insertelement <256 x i32 > undef , i32 %s , i32 127
68
62
ret <256 x i32 > %ret
@@ -71,9 +65,9 @@ define fastcc <256 x i32> @insert_ri7_v256i32(i32 signext %s) {
71
65
define fastcc <256 x i32 > @insert_ri8_v256i32 (i32 signext %s ) {
72
66
; CHECK-LABEL: insert_ri8_v256i32:
73
67
; CHECK: # %bb.0:
74
- ; CHECK-NEXT: lea %s0, 256
75
- ; CHECK-NEXT: lvl %s0
76
- ; CHECK-NEXT: vbrd %v0, %s0
68
+ ; CHECK-NEXT: and %s0, %s0, (32)0
69
+ ; CHECK-NEXT: lea %s1, 128
70
+ ; CHECK-NEXT: lsv %v0(%s1) , %s0
77
71
; CHECK-NEXT: b.l.t (, %s10)
78
72
%ret = insertelement <256 x i32 > undef , i32 %s , i32 128
79
73
ret <256 x i32 > %ret
@@ -82,9 +76,12 @@ define fastcc <256 x i32> @insert_ri8_v256i32(i32 signext %s) {
82
76
define fastcc <512 x i32 > @insert_ri_v512i32 (i32 signext %s ) {
83
77
; CHECK-LABEL: insert_ri_v512i32:
84
78
; CHECK: # %bb.0:
85
- ; CHECK-NEXT: lea %s0, 512
86
- ; CHECK-NEXT: lvl %s0
87
- ; CHECK-NEXT: vbrd %v0, %s0
79
+ ; CHECK-NEXT: lea %s1, 186
80
+ ; CHECK-NEXT: lvs %s2, %v0(%s1)
81
+ ; CHECK-NEXT: and %s2, %s2, (32)0
82
+ ; CHECK-NEXT: sll %s0, %s0, 32
83
+ ; CHECK-NEXT: or %s0, %s2, %s0
84
+ ; CHECK-NEXT: lsv %v0(%s1), %s0
88
85
; CHECK-NEXT: b.l.t (, %s10)
89
86
%ret = insertelement <512 x i32 > undef , i32 %s , i32 372
90
87
ret <512 x i32 > %ret
@@ -122,9 +119,7 @@ define fastcc <256 x double> @insert_rr_v256f64(i32 signext %idx, double %s) {
122
119
define fastcc <256 x double > @insert_ri7_v256f64 (double %s ) {
123
120
; CHECK-LABEL: insert_ri7_v256f64:
124
121
; CHECK: # %bb.0:
125
- ; CHECK-NEXT: lea %s0, 256
126
- ; CHECK-NEXT: lvl %s0
127
- ; CHECK-NEXT: vbrd %v0, %s0
122
+ ; CHECK-NEXT: lsv %v0(127), %s0
128
123
; CHECK-NEXT: b.l.t (, %s10)
129
124
%ret = insertelement <256 x double > undef , double %s , i32 127
130
125
ret <256 x double > %ret
@@ -133,9 +128,8 @@ define fastcc <256 x double> @insert_ri7_v256f64(double %s) {
133
128
define fastcc <256 x double > @insert_ri8_v256f64 (double %s ) {
134
129
; CHECK-LABEL: insert_ri8_v256f64:
135
130
; CHECK: # %bb.0:
136
- ; CHECK-NEXT: lea %s0, 256
137
- ; CHECK-NEXT: lvl %s0
138
- ; CHECK-NEXT: vbrd %v0, %s0
131
+ ; CHECK-NEXT: lea %s1, 128
132
+ ; CHECK-NEXT: lsv %v0(%s1), %s0
139
133
; CHECK-NEXT: b.l.t (, %s10)
140
134
%ret = insertelement <256 x double > undef , double %s , i32 128
141
135
ret <256 x double > %ret
@@ -144,9 +138,7 @@ define fastcc <256 x double> @insert_ri8_v256f64(double %s) {
144
138
define fastcc <512 x double > @insert_ri_v512f64 (double %s ) {
145
139
; CHECK-LABEL: insert_ri_v512f64:
146
140
; CHECK: # %bb.0:
147
- ; CHECK-NEXT: lea %s0, 256
148
- ; CHECK-NEXT: lvl %s0
149
- ; CHECK-NEXT: vbrd %v1, %s0
141
+ ; CHECK-NEXT: lsv %v1(116), %s0
150
142
; CHECK-NEXT: b.l.t (, %s10)
151
143
%ret = insertelement <512 x double > undef , double %s , i32 372
152
144
ret <512 x double > %ret
@@ -166,9 +158,7 @@ define fastcc <256 x float> @insert_rr_v256f32(i32 signext %idx, float %s) {
166
158
define fastcc <256 x float > @insert_ri7_v256f32 (float %s ) {
167
159
; CHECK-LABEL: insert_ri7_v256f32:
168
160
; CHECK: # %bb.0:
169
- ; CHECK-NEXT: lea %s0, 256
170
- ; CHECK-NEXT: lvl %s0
171
- ; CHECK-NEXT: vbrd %v0, %s0
161
+ ; CHECK-NEXT: lsv %v0(127), %s0
172
162
; CHECK-NEXT: b.l.t (, %s10)
173
163
%ret = insertelement <256 x float > undef , float %s , i32 127
174
164
ret <256 x float > %ret
@@ -177,9 +167,8 @@ define fastcc <256 x float> @insert_ri7_v256f32(float %s) {
177
167
define fastcc <256 x float > @insert_ri8_v256f32 (float %s ) {
178
168
; CHECK-LABEL: insert_ri8_v256f32:
179
169
; CHECK: # %bb.0:
180
- ; CHECK-NEXT: lea %s0, 256
181
- ; CHECK-NEXT: lvl %s0
182
- ; CHECK-NEXT: vbrd %v0, %s0
170
+ ; CHECK-NEXT: lea %s1, 128
171
+ ; CHECK-NEXT: lsv %v0(%s1), %s0
183
172
; CHECK-NEXT: b.l.t (, %s10)
184
173
%ret = insertelement <256 x float > undef , float %s , i32 128
185
174
ret <256 x float > %ret
@@ -188,9 +177,13 @@ define fastcc <256 x float> @insert_ri8_v256f32(float %s) {
188
177
define fastcc <512 x float > @insert_ri_v512f32 (float %s ) {
189
178
; CHECK-LABEL: insert_ri_v512f32:
190
179
; CHECK: # %bb.0:
191
- ; CHECK-NEXT: lea %s0, 512
192
- ; CHECK-NEXT: lvl %s0
193
- ; CHECK-NEXT: vbrd %v0, %s0
180
+ ; CHECK-NEXT: sra.l %s0, %s0, 32
181
+ ; CHECK-NEXT: lea %s1, 186
182
+ ; CHECK-NEXT: lvs %s2, %v0(%s1)
183
+ ; CHECK-NEXT: and %s2, %s2, (32)0
184
+ ; CHECK-NEXT: sll %s0, %s0, 32
185
+ ; CHECK-NEXT: or %s0, %s2, %s0
186
+ ; CHECK-NEXT: lsv %v0(%s1), %s0
194
187
; CHECK-NEXT: b.l.t (, %s10)
195
188
%ret = insertelement <512 x float > undef , float %s , i32 372
196
189
ret <512 x float > %ret
0 commit comments