| Index: src/IceTargetLoweringARM32.h
|
| diff --git a/src/IceTargetLoweringARM32.h b/src/IceTargetLoweringARM32.h
|
| index 00f1483264d714d80b78d1c15eda0f1ad6a461af..b35649c6e83713e43522d7e63b7ea6ef0271497d 100644
|
| --- a/src/IceTargetLoweringARM32.h
|
| +++ b/src/IceTargetLoweringARM32.h
|
| @@ -85,13 +85,18 @@ public:
|
| const llvm::SmallBitVector &
|
| getRegistersForVariable(const Variable *Var) const override {
|
| RegClass RC = Var->getRegClass();
|
| - assert(RC < RC_Target);
|
| - return TypeToRegisterSet[RC];
|
| + switch (RC) {
|
| + default:
|
| + assert(RC < RC_Target);
|
| + return TypeToRegisterSet[RC];
|
| + case RegARM32::RCARM32_QtoS:
|
| + return TypeToRegisterSet[RC];
|
| + }
|
| }
|
| const llvm::SmallBitVector &
|
| getAllRegistersForVariable(const Variable *Var) const override {
|
| RegClass RC = Var->getRegClass();
|
| - assert(RC < RC_Target);
|
| + assert((RegARM32::RegClassARM32)RC < RegARM32::RCARM32_NUM);
|
| return TypeToRegisterSetUnfiltered[RC];
|
| }
|
| const llvm::SmallBitVector &getAliasesForRegister(SizeT Reg) const override {
|
| @@ -413,6 +418,20 @@ protected:
|
| }
|
| }
|
|
|
| + // Generates a vmov instruction to extract the given index from a vector
|
| + // register.
|
| + void _extractelement(Variable *Dest, Variable *Src0, uint32_t Index,
|
| + CondARM32::Cond Pred = CondARM32::AL) {
|
| + Context.insert<InstARM32Extract>(Dest, Src0, Index, Pred);
|
| + }
|
| +
|
| + // Generates a vmov instruction to insert a value into the given index of a
|
| + // vector register.
|
| + void _insertelement(Variable *Dest, Variable *Src0, uint32_t Index,
|
| + CondARM32::Cond Pred = CondARM32::AL) {
|
| + Context.insert<InstARM32Insert>(Dest, Src0, Index, Pred);
|
| + }
|
| +
|
| // --------------------------------------------------------------------------
|
| // Begin bool folding machinery.
|
| //
|
|
|