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