summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86RegisterInfo.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index 4401d1769ba..87175c32ddc 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -146,19 +146,18 @@ X86RegisterInfo::getLargestLegalSuperClass(const TargetRegisterClass *RC,
if (!Subtarget.hasVLX() && Super->getSize() == RC->getSize())
return Super;
break;
- case X86::FR32XRegClassID:
- case X86::FR64XRegClassID:
- // If VLX isn't support we shouldn't inflate to these classes.
- if (!Subtarget.hasVLX())
- break;
- // The VLX check above passed, AVX512 check below will pass.
- LLVM_FALLTHROUGH;
case X86::VR128XRegClassID:
case X86::VR256XRegClassID:
+ // If VLX isn't support we shouldn't inflate to these classes.
+ if (Subtarget.hasVLX() && Super->getSize() == RC->getSize())
+ return Super;
+ break;
+ case X86::FR32XRegClassID:
+ case X86::FR64XRegClassID:
// If AVX-512 isn't support we shouldn't inflate to these classes.
- if (!Subtarget.hasAVX512())
- break;
- LLVM_FALLTHROUGH;
+ if (Subtarget.hasAVX512() && Super->getSize() == RC->getSize())
+ return Super;
+ break;
case X86::GR8RegClassID:
case X86::GR16RegClassID:
case X86::GR32RegClassID:
OpenPOWER on IntegriCloud