Implement vsplit in cranelift interpreter (#5462)

* Add vsplit testfile

* Add vsplit implementation
This commit is contained in:
Ayomide Bamidele
2022-12-16 23:14:56 +00:00
committed by GitHub
parent 22439f7b39
commit 93ae9078c5
2 changed files with 40 additions and 1 deletions

View File

@@ -985,7 +985,15 @@ where
}
assign(Value::int(result, ctrl_ty)?)
}
Opcode::Vsplit => unimplemented!("Vsplit"),
Opcode::Vsplit => {
let new_type = ctrl_ty.half_vector().unwrap();
let vector = extractlanes(&arg(0)?, ctrl_ty)?;
let (high, low) = vector.split_at((ctrl_ty.lane_count() / 2) as usize);
assign_multiple(&[
vectorizelanes(high, new_type)?,
vectorizelanes(low, new_type)?,
])
}
Opcode::Vconcat => unimplemented!("Vconcat"),
Opcode::Vselect => assign(vselect(&arg(0)?, &arg(1)?, &arg(2)?, ctrl_ty)?),
Opcode::VanyTrue => {