<div dir="ltr"><div>I think it's complaining about the % in %rcx. Intel assembly syntax doesn't use the % prefix on registers.</div><div><br></div>I don't think our backend knows how to expand operands using anything other than AT&T syntax. If this is the case, using .intel_syntax directives in inline assembly won't work very well until something changes.<div><br></div><div>If you need intel syntax, what you could try doing is passing -fasm-blocks and writing MSVC / Intel style inline assembly, which looks like:</div><div><br></div><div>int SomeFunction(int* ptr, int val1, int val2) {</div><div>  __asm {</div><div>    neg val1</div><div>  };</div><div>}</div><div><br></div><div>I would only recommend doing this if you already have ifdefs to support inline asm in MSVC.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 22, 2015 at 11:42 PM, Jeffrey Walton <span dir="ltr"><<a href="mailto:noloader@gmail.com" target="_blank">noloader@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm part of an existing project, and I'm working on support for<br>
Clang's Integrated Assembler. The project has copious amounts of<br>
inline assembly (both stand alone one-liners for shift and rotates;<br>
and blocks for things like AES and GCM mode). Even better (maybe<br>
worse?), it mixes AT&T and Intel because it supports Microsoft and GNU<br>
platforms.<br>
<br>
I'm having trouble understanding an error message from the assembler.<br>
The message is on the use of 'neg' under the Intel dialect:<br>
<br>
<inline asm>:3:7: note: instantiated into assembly here<br>
         neg %rcx;<br>
             ^<br>
<br>
The code looks like:<br>
<br>
int SomeFunction(int* ptr, int val1, int val2)<br>
{<br>
    int ret;<br>
    __asm__ __volatile (<br>
        ".intel_syntax" "\n"<br>
        neg %1;<br>
        ...<br>
    )<br>
<br>
   return ret;<br>
}<br>
<br>
I'm testing on x86_64, so I tried changing to 'negq %1;' with no joy.<br>
(Taking a hint from<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__clang.llvm.org_compatibility.html-23inline-2Dasm&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=CnzuN65ENJ1H9py9XLiRvC_UQz6u3oG6GUNn7_wosSM&m=iviteUf0h4DXGmyCwacxxX94il3QGLPa732kzx619gU&s=7BAGKVNNStBkRhrcBaSaTLG9SF7mLw5KbxsHwnGklhg&e=" rel="noreferrer" target="_blank">http://clang.llvm.org/compatibility.html#inline-asm</a>):<br>
<br>
<inline asm>:3:8: note: instantiated into assembly here<br>
         negq %rcx;<br>
             ^<br>
<br>
I'm experiencing it with both Apple's Clang 3.2, and LLVM's Clang<br>
3.6.0 built from sources (<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_releases_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=CnzuN65ENJ1H9py9XLiRvC_UQz6u3oG6GUNn7_wosSM&m=iviteUf0h4DXGmyCwacxxX94il3QGLPa732kzx619gU&s=5uzZEVAD8a1EU7oyzFOsKq35kSa0cZrHJsrsYm5vc0U&e=" rel="noreferrer" target="_blank">http://llvm.org/releases/</a>).<br>
<br>
Naively (and I stress naively), “unknown token in expression” appears<br>
to be a bogus message since the assembly instruction its complaining<br>
about does not seem to have a problem. So I suspect there is something<br>
else the integrated assembler finds offensive.<br>
<br>
Could anyone help me understand what the issue is?<br>
<br>
Thanks in advance. Jeff.<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>