[PATCH] D90009: [X86] VEX/EVEX prefix doesn't work for inline assembly.
LiuChen via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 22 23:12:46 PDT 2020
LiuChen3 added inline comments.
================
Comment at: clang/test/CodeGen/X86/att-inline-asm-prefix.c:14
+ "{vex2} vcvtps2pd %xmm0, %xmm1\n\t"
+ "{vex3} vcvtps2pd %xmm0, %xmm1\n\t"
+ "{evex} vcvtps2pd %xmm0, %xmm1\n\t"
----------------
> Does this bug only effect the printing of inline assembly to a .s file?
Yes. Using "-c" to out .o file directly will get right encoding.
But if we firstly output the .s file and then compile it, the end encoding is wrong. For this example, it will all be two-byte vex prefix.
================
Comment at: llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp:3896
+ // encoder.
Prefixes |= X86::IP_USE_VEX3;
+ Prefixes |= X86::Force_VEX3Encoding;
----------------
craig.topper wrote:
> Why do we need Force_VEX3Encoding and IP_USE_VEX3?
I think this will make all of IP_USE_VEX3 the 3-byte vex prefix instruction output with {vex3}. The IP_USE_VEX3 is for encoder.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90009/new/
https://reviews.llvm.org/D90009
More information about the cfe-commits
mailing list