I am trying to translate the clause xp[xi]/=Ap[Ai] to assembly code.
At the first several statements, I want to assign Ap[Ai] to the low 64 bit of xmm1 as follows.
asm volatile ("mov %[Ai], %%edx":: [Ai] "m" (Ai));
asm volatile ("shll $2, %edx");
asm volatile ("add %%ecx,%%edx":: "c" (Ap));
asm volatile ("movlpd (%edx),%xmm1");
But when the fourth statement is executed, segment fault occors. I trace the process of execution and suspect that the address of Ap is wrong. I am not sure that whether the third statement is right.
|