Inline Asm Question

Hi all,

I couldn't find any documentation on this, but was wondering if people here knew what this inline asm means:

         unsigned __ctz_x = val;
         unsigned __ctz_c;

         __asm__ ("{cntlz|cntlzw} %0,%1"
                 : "=r" (__ctz_c)
                 : "r" (__ctz_x & -__ctz_x));

I'm assuming that "{cntlz|cntlzw}" indicates that one or the other of these asm mnemonics are used. But how does this get decided?


The first is AT&T syntax, the second is intel syntax. The GCC documentation is the canonical place to find out stuff like this, we adhere to their syntax.