<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Jeremy,<br>
<br>
Could you send/attach a small test case that demonstrates the problem?<br>
<br>
It doesn't need to go past the stage that creates a .o.<br>
<br>
Also, what version of gnu as are you using?<br>
<br>
Unless it conflicts with a fundamental llvm/clang philosophy, we are trying to keep Mips assembly compatible with AS.<br>
<br>
Also, keep in mind that the Mips llvm assembler is current development and is not considered "prime time" for production. Thus, a test case is always welcome.<br>
<br>
Thanks,<br>
<br>
Jack<br>
<br>
On 02/08/2013 10:53 AM, Jeremy Fitzhardinge wrote:> Hi all,<br>
> <br>
> I'm experimenting with compiling some Mips code which is normally built<br>
> with a gcc cross toolchain with clang instead.  This code targets the<br>
> Cavium Octeon, and uses some of that CPU's crypto engine features which<br>
> are implemented in coprocessor 2.<br>
> <br>
> The inline asm for the crypto code uses instructions of the form "dmtc2<br>
> %0, 0xNNNN" - that is the coprocessor register is represented as a<br>
> constant, which is the only syntax that gas seems to accept<br>
> (specifically, an expression which evaluates to a constant).  Clang's<br>
> integrated-as, however, only accepts "dmtc2 %0, $0xNNNN", that is, a<br>
> coprocessor register number.<br>
> <br>
> I think clang is correct here, but for cross-tool compatibility it would<br>
> be useful if it could also accept the same syntax as gas.  I could hack<br>
> up the Octeon SDK headers to switch syntax depending on the compiler,<br>
> but I'd really prefer to avoid that (esp since it really depends on the<br>
> assembler in use, and I'm not sure if there's preprocessor symbols to<br>
> detect whether integrated-as is enabled).<br>
> <br>
> I've had a look at Mips(64)InstrInfo.td which seems to be where the<br>
> syntax is defined, but since this is my first encounter with<br>
> clang/llvm's internals, I'm not sure how to go about making the change.<br>
> Could someone give me some pointers?  Is this something that InstAlias<br>
> can handle?<br>
> <br>
> An alternative workaround would be to just use gas as-is, but it gets<br>
> upset by the .cfi_section directives that clang emits.  Is there some<br>
> way to suppress those (while keeping the rest of the cfi directives that<br>
> this version of gas does understand)?<br>
> <br>
> Thanks,<br>
>      J<br>
> <br>
<br>
</div>
</body>
</html>