x64: Migrate iadd_pairwise to ISLE (#4718)
* Add a test for iadd_pairwise with swiden input
* Implement iadd_pairwise for swiden_{low,high} input
* Add a test case for iadd_pairwise with uwiden input
* Implement iadd_pairwise with uwiden
This commit is contained in:
@@ -781,6 +781,30 @@ impl Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> {
|
||||
self.lower_ctx
|
||||
.use_constant(VCodeConstantData::WellKnown(&UINT_MASK_HIGH))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn iadd_pairwise_mul_const_16(&mut self) -> VCodeConstant {
|
||||
self.lower_ctx
|
||||
.use_constant(VCodeConstantData::WellKnown(&IADD_PAIRWISE_MUL_CONST_16))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn iadd_pairwise_mul_const_32(&mut self) -> VCodeConstant {
|
||||
self.lower_ctx
|
||||
.use_constant(VCodeConstantData::WellKnown(&IADD_PAIRWISE_MUL_CONST_32))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn iadd_pairwise_xor_const_32(&mut self) -> VCodeConstant {
|
||||
self.lower_ctx
|
||||
.use_constant(VCodeConstantData::WellKnown(&IADD_PAIRWISE_XOR_CONST_32))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn iadd_pairwise_addd_const_32(&mut self) -> VCodeConstant {
|
||||
self.lower_ctx
|
||||
.use_constant(VCodeConstantData::WellKnown(&IADD_PAIRWISE_ADDD_CONST_32))
|
||||
}
|
||||
}
|
||||
|
||||
impl IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> {
|
||||
@@ -907,3 +931,17 @@ const UINT_MASK: [u8; 16] = [
|
||||
const UINT_MASK_HIGH: [u8; 16] = [
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x43,
|
||||
];
|
||||
|
||||
const IADD_PAIRWISE_MUL_CONST_16: [u8; 16] = [0x01; 16];
|
||||
|
||||
const IADD_PAIRWISE_MUL_CONST_32: [u8; 16] = [
|
||||
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||
];
|
||||
|
||||
const IADD_PAIRWISE_XOR_CONST_32: [u8; 16] = [
|
||||
0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
|
||||
];
|
||||
|
||||
const IADD_PAIRWISE_ADDD_CONST_32: [u8; 16] = [
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user