Convert scalar_to_vector to ISLE (AArch64) (#4401)
* Convert `scalar_to_vector` to ISLE (AArch64) Converted the exisiting implementation of `scalar_to_vector` for AArch64 to ISLE. Copyright (c) 2022 Arm Limited * Add support for floats and fix FpuExtend - Added rules to cover `f32 -> f32x4` and `f64 -> f64x2` for `scalar_to_vector` - Added tests for `scalar_to_vector` on floats. - Corrected an invalid instruction emitted by `FpuExtend` on 64-bit values. Copyright (c) 2022 Arm Limited
This commit is contained in:
@@ -121,6 +121,20 @@
|
||||
(rule (lower (has_type $I128 (iconcat lo hi)))
|
||||
(output (value_regs lo hi)))
|
||||
|
||||
;;;; Rules for `scalar_to_vector` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type $F32X4 (scalar_to_vector x)))
|
||||
(fpu_extend x (ScalarSize.Size32)))
|
||||
|
||||
(rule (lower (has_type $F64X2 (scalar_to_vector x)))
|
||||
(fpu_extend x (ScalarSize.Size64)))
|
||||
|
||||
(rule (lower (scalar_to_vector x @ (value_type (ty_int_bool_64 _))))
|
||||
(mov_to_fpu x (ScalarSize.Size64)))
|
||||
|
||||
(rule (lower (scalar_to_vector x @ (value_type (int_bool_fits_in_32 _))))
|
||||
(mov_to_fpu (put_in_reg_zext32 x) (ScalarSize.Size32)))
|
||||
|
||||
;;;; Rules for `iadd_pairwise` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type $I16X8 (iadd_pairwise (swiden_low x) (swiden_high y))))
|
||||
|
||||
Reference in New Issue
Block a user