thakis added a comment.

Thanks for pointing out built-in headers, that's a great point. I started 
adding .att_syntax lines where needed, but the I realized that that doens't 
work: it's too late for things taking memory, since %0 replacement is done with 
asm writer setting before getting to reading the snippet. So %0 is replaced 
with (say) `[eax]` before things get to the asm parser, and then `.att_syntax` 
switches it to att syntax, and then it says "can't do `[eax]` in att syntax".

The official solution for this according to "Multiple assembler dialects in asm 
templates" in gcc docs->Extensions->Inline Assembly->Extended Asm is to write 
every inline asm snippet twice: `bt{l %[Offset],%[Base] | %[Base],%[Offset]}`. 
clang doesn't yet support {|}. So I think I have to update this patch to make 
clang support {|} and use that in the intrinsic headers where needed.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113707/new/

https://reviews.llvm.org/D113707

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to