|
From: Florian K. <fl...@ei...> - 2013-10-03 12:15:53
|
Hello,
I'm attempting to get clang 3.3 to build valgrind without errors and
warnings on x86_64. There are a few assembler constructs that clang
chokes about.
As I don't know much about Intel/AMD insns I wanted to ask the
experts here whether they see a problem with the particular constructs
clang is complaining about. Perhaps there is a constraint violation that
clang is picky to point out whereas GCC lets it slide by. In which case
we should update the testcase.
In none/tests/amd64/pcmpxstrx64.c and none/tests/amd64/pcmpxstrx64w.c
complains about all occurrences of:
"movupd 48(%0), %%xmm0"
"movupd %%xmm0, 48(%0)"
For instance:
pcmpxstrx64.c:79:46: error: invalid operand for instruction
"movupd 48(%0), %%xmm0" "\n\t"
^
<inline asm>:6:22: note: instantiated into assembly here
movw 64(%rdi), %rcx
^~~~
In none/tests/amd64/insn_sse.c
complains about the pextrw insn like so:
insn_sse.c:4602:11: error: invalid operand for instruction
"pextrw $0, %%mm6, %%r9\n"
^
<inline asm>:7:1: note: instantiated into assembly here
pextrw $0, %mm6, %r9
^
In exp-bbv/tests/amd64-linux/fldcw_check.S:
movw %rax, cw
error: invalid operand for instruction
movw %rax, cw # store back to memory
^~~~
Thanks
Florian
|