| Index: src/IceTargetLoweringX8632Traits.h
|
| diff --git a/src/IceTargetLoweringX8632Traits.h b/src/IceTargetLoweringX8632Traits.h
|
| index 3bfd404b76df098334726f24cea339126ded3c7c..fc324d411e54bc62e9a18b92e709ee6c806f3267 100644
|
| --- a/src/IceTargetLoweringX8632Traits.h
|
| +++ b/src/IceTargetLoweringX8632Traits.h
|
| @@ -25,6 +25,8 @@
|
| #include "IceTargetLoweringX8632.def"
|
| #include "IceTargetLowering.h"
|
|
|
| +#include <array>
|
| +
|
| namespace Ice {
|
|
|
| class TargetX8632;
|
| @@ -312,20 +314,43 @@ template <> struct MachineTraits<TargetX8632> {
|
| }
|
| }
|
|
|
| - static void initRegisterSet(llvm::SmallBitVector *IntegerRegisters,
|
| - llvm::SmallBitVector *IntegerRegistersI8,
|
| - llvm::SmallBitVector *FloatRegisters,
|
| - llvm::SmallBitVector *VectorRegisters,
|
| - llvm::SmallBitVector *ScratchRegs) {
|
| + static void initRegisterSet(
|
| + std::array<llvm::SmallBitVector, IceType_NUM> *TypeToRegisterSet,
|
| + std::array<llvm::SmallBitVector, RegisterSet::Reg_NUM> *RegisterAliases,
|
| + llvm::SmallBitVector *ScratchRegs) {
|
| + llvm::SmallBitVector IntegerRegisters(RegisterSet::Reg_NUM);
|
| + llvm::SmallBitVector IntegerRegistersI8(RegisterSet::Reg_NUM);
|
| + llvm::SmallBitVector FloatRegisters(RegisterSet::Reg_NUM);
|
| + llvm::SmallBitVector VectorRegisters(RegisterSet::Reg_NUM);
|
| + llvm::SmallBitVector InvalidRegisters(RegisterSet::Reg_NUM);
|
| + ScratchRegs->resize(RegisterSet::Reg_NUM);
|
| #define X(val, encode, name, name16, name8, scratch, preserved, stackptr, \
|
| frameptr, isI8, isInt, isFP) \
|
| - (*IntegerRegisters)[RegisterSet::val] = isInt; \
|
| - (*IntegerRegistersI8)[RegisterSet::val] = isI8; \
|
| - (*FloatRegisters)[RegisterSet::val] = isFP; \
|
| - (*VectorRegisters)[RegisterSet::val] = isFP; \
|
| + (IntegerRegisters)[RegisterSet::val] = isInt; \
|
| + (IntegerRegistersI8)[RegisterSet::val] = isI8; \
|
| + (FloatRegisters)[RegisterSet::val] = isFP; \
|
| + (VectorRegisters)[RegisterSet::val] = isFP; \
|
| + (*RegisterAliases)[RegisterSet::val].resize(RegisterSet::Reg_NUM); \
|
| + (*RegisterAliases)[RegisterSet::val].set(RegisterSet::val); \
|
| (*ScratchRegs)[RegisterSet::val] = scratch;
|
| REGX8632_TABLE;
|
| #undef X
|
| +
|
| + (*TypeToRegisterSet)[IceType_void] = InvalidRegisters;
|
| + (*TypeToRegisterSet)[IceType_i1] = IntegerRegistersI8;
|
| + (*TypeToRegisterSet)[IceType_i8] = IntegerRegistersI8;
|
| + (*TypeToRegisterSet)[IceType_i16] = IntegerRegisters;
|
| + (*TypeToRegisterSet)[IceType_i32] = IntegerRegisters;
|
| + (*TypeToRegisterSet)[IceType_i64] = IntegerRegisters;
|
| + (*TypeToRegisterSet)[IceType_f32] = FloatRegisters;
|
| + (*TypeToRegisterSet)[IceType_f64] = FloatRegisters;
|
| + (*TypeToRegisterSet)[IceType_v4i1] = VectorRegisters;
|
| + (*TypeToRegisterSet)[IceType_v8i1] = VectorRegisters;
|
| + (*TypeToRegisterSet)[IceType_v16i1] = VectorRegisters;
|
| + (*TypeToRegisterSet)[IceType_v16i8] = VectorRegisters;
|
| + (*TypeToRegisterSet)[IceType_v8i16] = VectorRegisters;
|
| + (*TypeToRegisterSet)[IceType_v4i32] = VectorRegisters;
|
| + (*TypeToRegisterSet)[IceType_v4f32] = VectorRegisters;
|
| }
|
|
|
| static llvm::SmallBitVector
|
|
|