Vector bitcast support (AArch64 & Interpreter) (#4820)
* Vector bitcast support (AArch64 & Interpreter) Implemented support for `bitcast` on vector values for AArch64 and the interpreter. Also corrected the verifier to ensure that the size, in bits, of the input and output types match for a `bitcast`, per the docs. Copyright (c) 2022 Arm Limited * `I128` same-type bitcast support Copyright (c) 2022 Arm Limited * Directly return input for 64-bit GPR<=>GPR bitcast Copyright (c) 2022 Arm Limited
This commit is contained in:
@@ -1096,15 +1096,26 @@ impl<'a> Verifier<'a> {
|
||||
let typ = self.func.dfg.ctrl_typevar(inst);
|
||||
let value_type = self.func.dfg.value_type(arg);
|
||||
|
||||
if typ.lane_bits() < value_type.lane_bits() {
|
||||
if typ.lane_bits() != value_type.lane_bits() {
|
||||
errors.fatal((
|
||||
inst,
|
||||
format!(
|
||||
"The bitcast argument {} doesn't fit in a type of {} bits",
|
||||
"The bitcast argument {} has a lane type of {} bits, which doesn't match an expected type of {} bits",
|
||||
arg,
|
||||
value_type.lane_bits(),
|
||||
typ.lane_bits()
|
||||
),
|
||||
))
|
||||
} else if typ.bits() != value_type.bits() {
|
||||
errors.fatal((
|
||||
inst,
|
||||
format!(
|
||||
"The bitcast argument {} has a type of {} bits, which doesn't match an expected type of {} bits",
|
||||
arg,
|
||||
value_type.bits(),
|
||||
typ.bits()
|
||||
),
|
||||
))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user