[LLVMdev] problem with X86's AVX assembler?

Adam Nemet anemet at apple.com
Thu Jun 26 14:17:07 PDT 2014


On Jun 25, 2014, at 10:40 PM, Jun Koi <junkoi2004 at gmail.com> wrote:

> 
> 
> 
> On Thu, Jun 26, 2014 at 10:23 AM, Adam Nemet <anemet at apple.com> wrote:
> 
> 
> On Jun 25, 2014, at 7:05 PM, Jun Koi <junkoi2004 at gmail.com> wrote:
> 
>> 
>> 
>> 
>> On Thu, Jun 26, 2014 at 5:47 AM, Adam Nemet <anemet at apple.com> wrote:
>> Hi Jun,
>> 
>> On Jun 25, 2014, at 8:14 AM, Jun Koi <junkoi2004 at gmail.com> wrote:
>> 
>> > Hi,
>> >
>> > I am trying to assemble below instruction with latest LLVM code, but fail. Am I doing something wrong, or is this a bug?
>> >
>> >
>> > $ echo "vaddps zmm7 {k6}, zmm2, zmm4, {rd-sae}"|./Release+Asserts/bin/llvm-mc -assemble -triple=x86_64 -mcpu=knl -show-encoding -x86-asm-syntax=intel
>> >     .text
>> > <stdin>:1:31: error: unknown token in expression
>> > vaddps zmm7 {k6}, zmm2, zmm4, {rd-sae}
>> >                               ^
>> > <stdin>:1:31: error: unknown token in expression
>> > vaddps zmm7 {k6}, zmm2, zmm4, {rd-sae}
>> 
>> Unfortunately, I don’t think sae is supported yet.  (I think the ^ is misplaced; it should point to the {rd-sae}.)
>> 
>> (I may be wrong here but looks like even the X86AsmParser is lacking support for sae even though some instruction in the .td file contain {sae} in their asm syntax.)
>> 
>> Oh it seems also the disasm support for sae is lacking:
>> 
>> $ echo "62 f1 6c 1e 58 fc"|./Release+Asserts/bin/llvm-mc -disassemble -triple=x86_64
>>     .text
>> <stdin>:1:4: error: invalid input token
>> 62 f1 6c 1e 58 fc
> 
> That's not too surprising; assembler and disassembler support go hand in hand. 
> 
>> I hope there is a plan to o support this SAE stuff soon?
> 
> Assembler support is in pretty good shape otherwise. I expect that this will be added as soon as someone really needs it. Help is always welcome ;)
> 
> 
> Yes, I would love to, but do not know where to fix.
> 
> Seems like I need to work on the lib/Target/X86/X86InstrAVX512.td file to add the missing SAE support?

I think it will be a bit more involved than that.  As I said, I don’t think even the parser supports RC or SAE.  See lib/Target/X86/AsmParser/X86AsmParser.cpp.

Looks like that some instructions have RC operands (see avx512_vcvt_fp_with_rc) and also a bit of support in the InstPrinter (X86ATTInstPrinter::printRoundingControl).  I am actually not sure that that is properly hooked up in the disassembler.

Also there are no tests for SAE/RC in avx512-encodings.s or avx-512.txt.  That also suggests that the work is incomplete.

Adam

> 
> Thanks,
> Jun
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140626/488f3db5/attachment.html>


More information about the llvm-dev mailing list