File tree Expand file tree Collapse file tree 2 files changed +61
-6
lines changed
filetests/filetests/egraph Expand file tree Collapse file tree 2 files changed +61
-6
lines changed Original file line number Diff line number Diff line change 201201
202202;; A splat of a constant can become a direct `vconst` with the appropriate bit
203203;; pattern.
204- (rule (simplify (splat dst (iconst $I8 n)))
204+ (rule (simplify (splat (ty_vec128 dst) (iconst $I8 n)))
205205 (vconst dst (splat8 (u64_uextend_imm64 $I8 n))))
206- (rule (simplify (splat dst (iconst $I16 n)))
206+ (rule (simplify (splat (ty_vec128 dst) (iconst $I16 n)))
207207 (vconst dst (splat16 (u64_uextend_imm64 $I16 n))))
208- (rule (simplify (splat dst (iconst $I32 n)))
208+ (rule (simplify (splat (ty_vec128 dst) (iconst $I32 n)))
209209 (vconst dst (splat32 (u64_uextend_imm64 $I32 n))))
210- (rule (simplify (splat dst (iconst $I64 n)))
210+ (rule (simplify (splat (ty_vec128 dst) (iconst $I64 n)))
211211 (vconst dst (splat64 (u64_uextend_imm64 $I64 n))))
212- (rule (simplify (splat dst (f32const _ (u32_from_ieee32 n))))
212+ (rule (simplify (splat (ty_vec128 dst) (f32const _ (u32_from_ieee32 n))))
213213 (vconst dst (splat32 n)))
214- (rule (simplify (splat dst (f64const _ (u64_from_ieee64 n))))
214+ (rule (simplify (splat (ty_vec128 dst) (f64const _ (u64_from_ieee64 n))))
215215 (vconst dst (splat64 n)))
216216
217217(decl splat8 (u64) Constant)
Original file line number Diff line number Diff line change @@ -167,3 +167,58 @@ block0:
167167; return v3 ; v3 = const0
168168; }
169169
170+ function %i8x8() -> i8x8 {
171+ block0:
172+ v1 = iconst.i8 0
173+ v2 = splat.i8x8 v1
174+ return v2
175+ }
176+
177+ ; function %i8x8() -> i8x8 fast {
178+ ; block0:
179+ ; v1 = iconst.i8 0
180+ ; v2 = splat.i8x8 v1 ; v1 = 0
181+ ; return v2
182+ ; }
183+
184+ function %i16x4() -> i16x4 {
185+ block0:
186+ v1 = iconst.i16 0
187+ v2 = splat.i16x4 v1
188+ return v2
189+ }
190+
191+ ; function %i16x4() -> i16x4 fast {
192+ ; block0:
193+ ; v1 = iconst.i16 0
194+ ; v2 = splat.i16x4 v1 ; v1 = 0
195+ ; return v2
196+ ; }
197+
198+ function %i32x2() -> i32x2 {
199+ block0:
200+ v1 = iconst.i32 0
201+ v2 = splat.i32x2 v1
202+ return v2
203+ }
204+
205+ ; function %i32x2() -> i32x2 fast {
206+ ; block0:
207+ ; v1 = iconst.i32 0
208+ ; v2 = splat.i32x2 v1 ; v1 = 0
209+ ; return v2
210+ ; }
211+
212+ function %f32x2() -> f32x2 {
213+ block0:
214+ v1 = f32const 0.0
215+ v2 = splat.f32x2 v1
216+ return v2
217+ }
218+
219+ ; function %f32x2() -> f32x2 fast {
220+ ; block0:
221+ ; v1 = f32const 0.0
222+ ; v2 = splat.f32x2 v1 ; v1 = 0.0
223+ ; return v2
224+ ; }
You can’t perform that action at this time.
0 commit comments