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.

Reply via email to