Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: src/IceAssemblerARM32.cpp

Issue 1676123002: Subzero: Use a proper RegNumT type instead of int32_t/SizeT. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix int32_t ==> int for the result of BitVector find_first() and find_next() Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceAssemblerARM32.cpp - Assembler for ARM32 --*- C++ -*-===// 1 //===- subzero/src/IceAssemblerARM32.cpp - Assembler for ARM32 --*- C++ -*-===//
2 // 2 //
3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
4 // for details. All rights reserved. Use of this source code is governed by a 4 // for details. All rights reserved. Use of this source code is governed by a
5 // BSD-style license that can be found in the LICENSE file. 5 // BSD-style license that can be found in the LICENSE file.
6 // 6 //
7 // Modified by the Subzero authors. 7 // Modified by the Subzero authors.
8 // 8 //
9 //===----------------------------------------------------------------------===// 9 //===----------------------------------------------------------------------===//
10 // 10 //
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 // Extract out a Bit in Value. 188 // Extract out a Bit in Value.
189 bool isBitSet(IValueT Bit, IValueT Value) { return (Value & Bit) == Bit; } 189 bool isBitSet(IValueT Bit, IValueT Value) { return (Value & Bit) == Bit; }
190 190
191 // Returns the GPR register at given Shift in Value. 191 // Returns the GPR register at given Shift in Value.
192 RegARM32::GPRRegister getGPRReg(IValueT Shift, IValueT Value) { 192 RegARM32::GPRRegister getGPRReg(IValueT Shift, IValueT Value) {
193 return decodeGPRRegister((Value >> Shift) & 0xF); 193 return decodeGPRRegister((Value >> Shift) & 0xF);
194 } 194 }
195 195
196 IValueT getEncodedGPRegNum(const Variable *Var) { 196 IValueT getEncodedGPRegNum(const Variable *Var) {
197 assert(Var->hasReg()); 197 assert(Var->hasReg());
198 int32_t Reg = Var->getRegNum(); 198 RegNumT Reg = Var->getRegNum();
199 return llvm::isa<Variable64On32>(Var) ? RegARM32::getI64PairFirstGPRNum(Reg) 199 return llvm::isa<Variable64On32>(Var) ? RegARM32::getI64PairFirstGPRNum(Reg)
200 : RegARM32::getEncodedGPR(Reg); 200 : RegARM32::getEncodedGPR(Reg);
201 } 201 }
Eric Holk 2016/02/08 19:37:09 Optional, but would it make sense to turn getI64Pa
Jim Stichnoth 2016/02/09 19:33:39 Those functions are supposed to be GPRRegister whi
Karl 2016/02/09 21:52:14 Be careful when removing IValueT. It was explicitl
Eric Holk 2016/02/10 01:11:30 Sounds good.
202 202
203 IValueT getEncodedSRegNum(const Variable *Var) { 203 IValueT getEncodedSRegNum(const Variable *Var) {
204 assert(Var->hasReg()); 204 assert(Var->hasReg());
205 return RegARM32::getEncodedSReg(Var->getRegNum()); 205 return RegARM32::getEncodedSReg(Var->getRegNum());
206 } 206 }
207 207
208 IValueT getEncodedDRegNum(const Variable *Var) { 208 IValueT getEncodedDRegNum(const Variable *Var) {
209 return RegARM32::getEncodedDReg(Var->getRegNum()); 209 return RegARM32::getEncodedDReg(Var->getRegNum());
210 } 210 }
211 211
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 const AssemblerARM32::TargetInfo &TInfo, 463 const AssemblerARM32::TargetInfo &TInfo,
464 EncodedImmAddress ImmEncoding) { 464 EncodedImmAddress ImmEncoding) {
465 Value = 0; // Make sure initialized. 465 Value = 0; // Make sure initialized.
466 if (const auto *Var = llvm::dyn_cast<Variable>(Opnd)) { 466 if (const auto *Var = llvm::dyn_cast<Variable>(Opnd)) {
467 // Should be a stack variable, with an offset. 467 // Should be a stack variable, with an offset.
468 if (Var->hasReg()) 468 if (Var->hasReg())
469 return CantEncode; 469 return CantEncode;
470 IOffsetT Offset = Var->getStackOffset(); 470 IOffsetT Offset = Var->getStackOffset();
471 if (!Utils::IsAbsoluteUint(12, Offset)) 471 if (!Utils::IsAbsoluteUint(12, Offset))
472 return CantEncode; 472 return CantEncode;
473 int32_t BaseRegNum = Var->getBaseRegNum(); 473 RegNumT BaseRegNum = Var->getBaseRegNum();
474 if (BaseRegNum == Variable::NoRegister) 474 if (BaseRegNum == RegNumT::NoRegister)
475 BaseRegNum = TInfo.FrameOrStackReg; 475 BaseRegNum = TInfo.FrameOrStackReg;
476 Value = encodeImmRegOffset(ImmEncoding, BaseRegNum, Offset, 476 Value = encodeImmRegOffset(ImmEncoding, BaseRegNum, Offset,
477 OperandARM32Mem::Offset); 477 OperandARM32Mem::Offset);
478 return EncodedAsImmRegOffset; 478 return EncodedAsImmRegOffset;
479 } 479 }
480 if (const auto *Mem = llvm::dyn_cast<OperandARM32Mem>(Opnd)) { 480 if (const auto *Mem = llvm::dyn_cast<OperandARM32Mem>(Opnd)) {
481 Variable *Var = Mem->getBase(); 481 Variable *Var = Mem->getBase();
482 if (!Var->hasReg()) 482 if (!Var->hasReg())
483 return CantEncode; 483 return CantEncode;
484 IValueT Rn = getEncodedGPRegNum(Var); 484 IValueT Rn = getEncodedGPRegNum(Var);
(...skipping 2566 matching lines...) Expand 10 before | Expand all | Expand 10 after
3051 constexpr const char *Vsqrts = "vsqrts"; 3051 constexpr const char *Vsqrts = "vsqrts";
3052 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts); 3052 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts);
3053 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts); 3053 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts);
3054 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6; 3054 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6;
3055 constexpr IValueT S0 = 0; 3055 constexpr IValueT S0 = 0;
3056 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm); 3056 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm);
3057 } 3057 }
3058 3058
3059 } // end of namespace ARM32 3059 } // end of namespace ARM32
3060 } // end of namespace Ice 3060 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceAssemblerARM32.h ('k') | src/IceCfgNode.cpp » ('j') | src/IceDefs.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698