Hello,
It seems that we can't use q1 ~ q14 quad word registers in the arm(v7)
architecture.
The quad word registers are only used in CreateMemCopyUint16Uint8Function
in codegen-arm.cc.
The source code like this :
OS::MemCopyUint16Uint8Function
CreateMemCopyUint16Uint8Function(OS::MemCopyUint16Uint8Function stub) {
...
__ bind(&loop);
__ vld1(Neon8, NeonListOperand(d0), NeonMemOperand(src, PostIndex));
__ vmovl(NeonU8, q0, d0);
__ vst1(Neon16, NeonListOperand(d0, 2), NeonMemOperand(dest, PostIndex));
__ cmp(dest, temp);
__ b(&loop, ne);
...
}
I just changed q0 -> q1 / d0 -> d2 in the vst1 instruction. And test on the
D8, then crash with 'Illegal instruction' message.
I checked the arm reference manual, the emitting 'vmovl' instruction
working properly.
( 0xFU*B28 | B25 | (dt & NeonDataTypeUMask) | B23 | d*B22 | (dt &
NeonDataTypeSizeMask)*B19 | vd*B12 | 0xA*B8 | m*B5 | B4 | vm )
I test on some devices that is supports armv7 architecture. All test
results are same (crash).
I think if (changing d0 -> d2 in the vst1) is correct, the problem is in
vmovl instruction or using q1 register.
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.