The bug was first spotted in the optimized gl_Color4ub() from spec2k's mesa. The lowering sequences for fptosi and fptoui with i8 or i16 include "mov T_2, T_1" where T_1 and T_2 may have different integer types, and the statement:
T_2->setPreferredRegister(T_1, true);
If T_2's type is i8 and T_1 is assigned a register that has no 8-bit version, then T_2 gets an unsuitable register.
The fix is to honor RegisterOverlap only when RegMask allows.
It's hard to construct a good test for this, since it depends heavily on register allocation decisions, which will change over time.
BUG= none
R=jvoung@chromium.org
Review URL: https://codereview.chromium.org/544713002
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| IceCfg.cpp | Loading commit data... | |
| IceCfg.h | Loading commit data... | |
| IceCfgNode.cpp | Loading commit data... | |
| IceCfgNode.h | Loading commit data... | |
| IceClFlags.h | Loading commit data... | |
| IceConverter.cpp | Loading commit data... | |
| IceConverter.h | Loading commit data... | |
| IceDefs.h | Loading commit data... | |
| IceGlobalContext.cpp | Loading commit data... | |
| IceGlobalContext.h | Loading commit data... | |
| IceInst.cpp | Loading commit data... | |
| IceInst.def | Loading commit data... | |
| IceInst.h | Loading commit data... | |
| IceInstX8632.cpp | Loading commit data... | |
| IceInstX8632.def | Loading commit data... | |
| IceInstX8632.h | Loading commit data... | |
| IceIntrinsics.cpp | Loading commit data... | |
| IceIntrinsics.h | Loading commit data... | |
| IceLiveness.cpp | Loading commit data... | |
| IceLiveness.h | Loading commit data... | |
| IceOperand.cpp | Loading commit data... | |
| IceOperand.h | Loading commit data... | |
| IceRNG.cpp | Loading commit data... | |
| IceRNG.h | Loading commit data... | |
| IceRegAlloc.cpp | Loading commit data... | |
| IceRegAlloc.h | Loading commit data... | |
| IceTargetLowering.cpp | Loading commit data... | |
| IceTargetLowering.h | Loading commit data... | |
| IceTargetLoweringX8632.cpp | Loading commit data... | |
| IceTargetLoweringX8632.def | Loading commit data... | |
| IceTargetLoweringX8632.h | Loading commit data... | |
| IceTranslator.cpp | Loading commit data... | |
| IceTranslator.h | Loading commit data... | |
| IceTypeConverter.cpp | Loading commit data... | |
| IceTypeConverter.h | Loading commit data... | |
| IceTypes.cpp | Loading commit data... | |
| IceTypes.def | Loading commit data... | |
| IceTypes.h | Loading commit data... | |
| Makefile | Loading commit data... | |
| PNaClTranslator.cpp | Loading commit data... | |
| PNaClTranslator.h | Loading commit data... | |
| README.SIMD.rst | Loading commit data... | |
| llvm2ice.cpp | Loading commit data... |