Commit 39f8e0c7 authored by bbudge's avatar bbudge Committed by Commit bot

[ARM] Assembler should assemble vzip/vuzp.32 as vtrn.

LOG=N
BUG=v8:6020

Review-Url: https://codereview.chromium.org/2808233002
Cr-Commit-Position: refs/heads/master@{#44690}
parent 42b2eb0e
...@@ -4642,10 +4642,14 @@ static Instr EncodeNeonSizedOp(NeonSizedOp op, NeonRegType reg_type, ...@@ -4642,10 +4642,14 @@ static Instr EncodeNeonSizedOp(NeonSizedOp op, NeonRegType reg_type,
} }
void Assembler::vzip(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) { void Assembler::vzip(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) {
DCHECK(IsEnabled(NEON)); if (size == Neon32) { // vzip.32 Dd, Dm is a pseudo-op for vtrn.32 Dd, Dm.
// vzip.<size>(Dn, Dm) SIMD zip (interleave). vtrn(size, src1, src2);
// Instruction details available in ARM DDI 0406C.b, A8-1102. } else {
emit(EncodeNeonSizedOp(VZIP, NEON_D, size, src1.code(), src2.code())); DCHECK(IsEnabled(NEON));
// vzip.<size>(Dn, Dm) SIMD zip (interleave).
// Instruction details available in ARM DDI 0406C.b, A8-1102.
emit(EncodeNeonSizedOp(VZIP, NEON_D, size, src1.code(), src2.code()));
}
} }
void Assembler::vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { void Assembler::vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) {
...@@ -4656,10 +4660,14 @@ void Assembler::vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { ...@@ -4656,10 +4660,14 @@ void Assembler::vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) {
} }
void Assembler::vuzp(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) { void Assembler::vuzp(NeonSize size, DwVfpRegister src1, DwVfpRegister src2) {
DCHECK(IsEnabled(NEON)); if (size == Neon32) { // vuzp.32 Dd, Dm is a pseudo-op for vtrn.32 Dd, Dm.
// vuzp.<size>(Dn, Dm) SIMD un-zip (de-interleave). vtrn(size, src1, src2);
// Instruction details available in ARM DDI 0406C.b, A8-1100. } else {
emit(EncodeNeonSizedOp(VUZP, NEON_D, size, src1.code(), src2.code())); DCHECK(IsEnabled(NEON));
// vuzp.<size>(Dn, Dm) SIMD un-zip (de-interleave).
// Instruction details available in ARM DDI 0406C.b, A8-1100.
emit(EncodeNeonSizedOp(VUZP, NEON_D, size, src1.code(), src2.code()));
}
} }
void Assembler::vuzp(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) { void Assembler::vuzp(NeonSize size, QwNeonRegister src1, QwNeonRegister src2) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment