[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. llvm-svn: 372933
This commit is contained in:
parent
6720ed851b
commit
f8804047af
|
@ -292,8 +292,7 @@ bool VZeroUpperInserter::runOnMachineFunction(MachineFunction &MF) {
|
|||
// 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::runOnMachineFunction(MachineFunction &MF) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!YmmOrZmmUsed) {
|
||||
if (!YmmOrZmmUsed)
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(BlockStates.empty() && DirtySuccessors.empty() &&
|
||||
"X86VZeroUpper state should be clear");
|
||||
|
|
Loading…
Reference in New Issue