Skip to content

Commit 51c8750

Browse files
chore: accomodate for immwidth field for constraints
extras: 1. call update_simd_len() after inferring bit_len for arguments of certain intrinsics 2. handle the effective bit_len for _mm_mpsadbw_epu8 intrinsic's `imm8` argument which has only 3 bits that are used
1 parent 39425f3 commit 51c8750

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

crates/intrinsic-test/src/x86/xml_parser.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ fn xml_to_intrinsic(
8484
if ty.is_err() {
8585
None
8686
} else {
87-
let constraint = map_constraints(&param.imm_type);
87+
let constraint = map_constraints(&param.imm_type, param.imm_width);
8888
let arg = Argument::<X86IntrinsicType>::new(
8989
i,
9090
param.var_name.clone(),
@@ -117,11 +117,20 @@ fn xml_to_intrinsic(
117117
args[index].ty.bit_len = args[0].ty.bit_len;
118118
}
119119

120+
args.iter_mut().for_each(|arg| arg.ty.update_simd_len());
121+
122+
if name == "_mm_mpsadbw_epu8" {
123+
args.iter_mut()
124+
.filter(|arg| arg.name.contains("imm8"))
125+
.for_each(|arg| arg.ty.bit_len = Some(3));
126+
}
127+
120128
let arguments = ArgumentList::<X86IntrinsicType> { args };
121129

122130
if let Err(message) = result {
123131
return Err(Box::from(message));
124132
}
133+
125134
Ok(Intrinsic {
126135
name,
127136
arguments,

0 commit comments

Comments
 (0)