[llvm] r372933 - [X86] Use VR512_0_15RegClass intead of VR512RegClass in X86VZeroUpper.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 25 16:25:15 PDT 2019
Author: ctopper
Date: Wed Sep 25 16:25:15 2019
New Revision: 372933
URL: http://llvm.org/viewvc/llvm-project?rev=372933&view=rev
Log:
[X86] Use VR512_0_15RegClass intead of VR512RegClass in X86VZeroUpper.
This pass is only concerned with ZMM0-15 and YMM0-15. For YMM
we use VR256 which only contains YMM0-15, but for ZMM we were
using VR512 which contains ZMM0-31. Using VR512_0_15 is more
correct.
Given that the ABI and register allocator will use registers in
order, its unlikely that register from 16-31 would be used
without also using 0-15. So this probably doesn't functionally
matter.
Modified:
llvm/trunk/lib/Target/X86/X86VZeroUpper.cpp
Modified: llvm/trunk/lib/Target/X86/X86VZeroUpper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86VZeroUpper.cpp?rev=372933&r1=372932&r2=372933&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86VZeroUpper.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86VZeroUpper.cpp Wed Sep 25 16:25:15 2019
@@ -292,8 +292,7 @@ bool VZeroUpperInserter::runOnMachineFun
// need to insert any VZEROUPPER instructions. This is constant-time, so it
// is cheap in the common case of no ymm/zmm use.
bool YmmOrZmmUsed = FnHasLiveInYmmOrZmm;
- const TargetRegisterClass *RCs[2] = {&X86::VR256RegClass, &X86::VR512RegClass};
- for (auto *RC : RCs) {
+ for (auto *RC : {&X86::VR256RegClass, &X86::VR512_0_15RegClass}) {
if (!YmmOrZmmUsed) {
for (TargetRegisterClass::iterator i = RC->begin(), e = RC->end(); i != e;
i++) {
@@ -304,9 +303,8 @@ bool VZeroUpperInserter::runOnMachineFun
}
}
}
- if (!YmmOrZmmUsed) {
+ if (!YmmOrZmmUsed)
return false;
- }
assert(BlockStates.empty() && DirtySuccessors.empty() &&
"X86VZeroUpper state should be clear");
More information about the llvm-commits
mailing list