diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-04-10 21:29:41 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-04-10 21:29:41 +0000 |
| commit | 4a32ce39b79da1e8e3711807278524ee23933927 (patch) | |
| tree | 265202be43eb8639660da5157fbac253eceaa0d1 /llvm/lib/CodeGen/LiveInterval.cpp | |
| parent | 3cc634d0936ecc1b48e158f687f9f6527bcd8fca (diff) | |
| download | bcm5719-llvm-4a32ce39b79da1e8e3711807278524ee23933927.tar.gz bcm5719-llvm-4a32ce39b79da1e8e3711807278524ee23933927.zip | |
[X86] Make _Int instructions the preferred instructon for the assembly parser and disassembly parser to remove inconsistencies between VEX and EVEX.
Many of our instructions have both a _Int form used by intrinsics and a form
used by other IR constructs. In the EVEX space the _Int versions usually cover
all the capabilities include broadcasting and rounding. While the other version
only covers simple register/register or register/load forms. For this reason
in EVEX, the non intrinsic form is usually marked isCodeGenOnly=1.
In the VEX encoding space we were less consistent, but usually the _Int version
was the isCodeGenOnly version.
This commit makes the VEX instructions match the EVEX instructions. This was
done by manually studying the AsmMatcher table so its possible I missed some
cases, but we should be closer now.
I'm thinking about using the isCodeGenOnly bit to simplify the EVEX2VEX
tablegen code that disambiguates the _Int and non _Int versions. Currently it
checks register class sizes and Record the memory operands come from. I have
some other changes I was looking into for D59266 that may break the memory check.
I had to make a few scheduler hacks to keep the _Int versions from being treated
differently than the non _Int version.
Differential Revision: https://reviews.llvm.org/D60441
llvm-svn: 358138
Diffstat (limited to 'llvm/lib/CodeGen/LiveInterval.cpp')
0 files changed, 0 insertions, 0 deletions

