aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Lex/ModuleMap.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2020-04-28 15:10:51 -0700
committerCraig Topper <craig.topper@intel.com>2020-04-28 15:11:32 -0700
commit446a3be8f131d53fdbeb24438d6ddf3f8db88556 (patch)
treed63bd3df2e2ce01c70305e5ba68941860e2ade87 /clang/lib/Lex/ModuleMap.cpp
parent46a75436f811d0e6a2c76c669140a7e9471cd2a3 (diff)
downloadllvm-446a3be8f131d53fdbeb24438d6ddf3f8db88556.zip
llvm-446a3be8f131d53fdbeb24438d6ddf3f8db88556.tar.gz
llvm-446a3be8f131d53fdbeb24438d6ddf3f8db88556.tar.bz2
[X86] Add PACK instructions to hasUndefRegUpdate so the BreakFalseDeps pass will reassign an undef second source to match the first source
We generate PACK instructions with an undef second source when we are truncating from a 128-bit vector to something narrower and we don't care about the upper bits of the vector register. The register allocation process will always assign untied undef uses to xmm0. This creates a false dependency on xmm0. By adding these instructions to hasUndefRegUpdate, we can get the BreakFalseDeps pass to reassign the source to match the other input. Normally this interface is used for instructions that might need an xor inserted to break the dependency. But the pass also has a heuristic that tries to use the same register as other sources. That should always be possible for these instructions so we'll never trigger the xor dependency break. Differential Revision: https://reviews.llvm.org/D79032
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
0 files changed, 0 insertions, 0 deletions