Port widening ops to ISLE (AArch64) (#4751)
Ported the existing implementations of the following opcodes for AArch64 to ISLE, and implemented support for 64-bit vectors (per the docs): - `SwidenLow` - `SwidenHigh` - `UwidenLow` - `UwidenHigh` Also ported `WideningPairwiseDotProductS` as-is. Copyright (c) 2022 Arm Limited
This commit is contained in:
@@ -98,3 +98,23 @@
|
||||
;;; Rules for `extract_vector` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(rule (lower (extract_vector x 0))
|
||||
(value_reg (fpu_move_128 (put_in_reg x))))
|
||||
|
||||
;;;; Rules for `swiden_low` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type ty (swiden_low x)))
|
||||
(value_reg (vec_extend (VecExtendOp.Sxtl) x $false (lane_size ty))))
|
||||
|
||||
;;;; Rules for `swiden_high` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type ty (swiden_high x)))
|
||||
(value_reg (vec_extend (VecExtendOp.Sxtl) x $true (lane_size ty))))
|
||||
|
||||
;;;; Rules for `uwiden_low` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type ty (uwiden_low x)))
|
||||
(value_reg (vec_extend (VecExtendOp.Uxtl) x $false (lane_size ty))))
|
||||
|
||||
;;;; Rules for `uwiden_high` ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(rule (lower (has_type ty (uwiden_high x)))
|
||||
(value_reg (vec_extend (VecExtendOp.Uxtl) x $true (lane_size ty))))
|
||||
|
||||
Reference in New Issue
Block a user