[PATCH][x86 inline-asm] Fix printing of register operands with q modifier
Akira Hatanaka
ahatanak at gmail.com
Fri Mar 28 11:58:09 PDT 2014
The attached patch changes the behavior of function printAsmMRegister to
emit 32-bit register names instead of 64-bit register names if the target
does not have 64-bit general purpose registers.
This is what gcc apparently does and some of the open source libraries seem
to rely on this behavior.
ToT clang complains when it tries to compile the following code:
$ cat inline-asm-modifier-q.c
void q_modifier(int *p) {
asm ("movq (%q0, %%ebx, 4), %%mm0" : : "r" (p));
}
$ clang -m32 -c inline-asm-modifier-q.c
inline-asm-modifier-q.c:2:8: error: register %rax is only available in
64-bit
mode
asm ("movq (%q0, %%ebx, 4), %%mm0" : : "r" (p));
^
<inline asm>:1:8: note: instantiated into assembly here
movq (%rax, %ebx, 4), %mm0
^~~~~
Please review.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140328/f9853f62/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qmod1.patch
Type: text/x-patch
Size: 1404 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140328/f9853f62/attachment.bin>
More information about the llvm-commits
mailing list