Support wasm select instruction with V128-typed operands on AArch64.
* this requires upgrading to wasmparser 0.67.0. * There are no CLIF side changes because the CLIF `select` instruction is polymorphic enough. * on aarch64, there is unfortunately no conditional-move (csel) instruction on vectors. This patch adds a synthetic instruction `VecCSel` which *does* behave like that. At emit time, this is emitted as an if-then-else diamond (4 insns). * aarch64 implementation is otherwise straightforwards.
This commit is contained in:
committed by
julian-seward1
parent
9ced345aed
commit
41e87a2f99
@@ -3879,6 +3879,17 @@ fn test_aarch64_binemit() {
|
||||
"ld1r { v0.8b }, [x25]",
|
||||
));
|
||||
|
||||
insns.push((
|
||||
Inst::VecCSel {
|
||||
rd: writable_vreg(5),
|
||||
rn: vreg(10),
|
||||
rm: vreg(19),
|
||||
cond: Cond::Gt,
|
||||
},
|
||||
"6C000054651EB34E02000014451DAA4E",
|
||||
"vcsel v5.16b, v10.16b, v19.16b, gt (if-then-else diamond)",
|
||||
));
|
||||
|
||||
insns.push((
|
||||
Inst::Extend {
|
||||
rd: writable_xreg(1),
|
||||
|
||||
Reference in New Issue
Block a user