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

Side by Side Diff: src/IceInstARM32.h

Issue 1624383004: Add VMOV(immediate) instructions to the ARM assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 4 years, 11 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/IceInstARM32.h - ARM32 machine instructions --*- C++ -*-===// 1 //===- subzero/src/IceInstARM32.h - ARM32 machine instructions --*- C++ -*-===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 /// 9 ///
10 /// \file 10 /// \file
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 void emit(const Cfg *Func) const override; 259 void emit(const Cfg *Func) const override;
260 using OperandARM32::dump; 260 using OperandARM32::dump;
261 void dump(const Cfg *Func, Ostream &Str) const override; 261 void dump(const Cfg *Func, Ostream &Str) const override;
262 262
263 static bool classof(const Operand *Operand) { 263 static bool classof(const Operand *Operand) {
264 return Operand->getKind() == static_cast<OperandKind>(kFlexFpImm); 264 return Operand->getKind() == static_cast<OperandKind>(kFlexFpImm);
265 } 265 }
266 266
267 static bool canHoldImm(Operand *C, uint32_t *ModifiedImm); 267 static bool canHoldImm(Operand *C, uint32_t *ModifiedImm);
268 268
269 uint32_t getModifiedImm() const { return ModifiedImm; }
270
269 private: 271 private:
270 OperandARM32FlexFpImm(Cfg *Func, Type Ty, uint32_t ModifiedImm); 272 OperandARM32FlexFpImm(Cfg *Func, Type Ty, uint32_t ModifiedImm);
271 273
272 uint32_t ModifiedImm; 274 uint32_t ModifiedImm;
Jim Stichnoth 2016/01/26 13:44:41 const
Karl 2016/01/26 16:42:05 Done.
273 }; 275 };
274 276
275 /// An operand for representing the 0.0 immediate in vcmp. 277 /// An operand for representing the 0.0 immediate in vcmp.
276 class OperandARM32FlexFpZero : public OperandARM32Flex { 278 class OperandARM32FlexFpZero : public OperandARM32Flex {
277 OperandARM32FlexFpZero() = delete; 279 OperandARM32FlexFpZero() = delete;
278 OperandARM32FlexFpZero(const OperandARM32FlexFpZero &) = delete; 280 OperandARM32FlexFpZero(const OperandARM32FlexFpZero &) = delete;
279 OperandARM32FlexFpZero &operator=(const OperandARM32FlexFpZero &) = delete; 281 OperandARM32FlexFpZero &operator=(const OperandARM32FlexFpZero &) = delete;
280 282
281 public: 283 public:
282 static OperandARM32FlexFpZero *create(Cfg *Func, Type Ty) { 284 static OperandARM32FlexFpZero *create(Cfg *Func, Type Ty) {
(...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 1335
1334 private: 1336 private:
1335 InstARM32Mov(Cfg *Func, Variable *Dest, Operand *Src, 1337 InstARM32Mov(Cfg *Func, Variable *Dest, Operand *Src,
1336 CondARM32::Cond Predicate); 1338 CondARM32::Cond Predicate);
1337 1339
1338 void emitMultiDestSingleSource(const Cfg *Func) const; 1340 void emitMultiDestSingleSource(const Cfg *Func) const;
1339 void emitSingleDestMultiSource(const Cfg *Func) const; 1341 void emitSingleDestMultiSource(const Cfg *Func) const;
1340 void emitSingleDestSingleSource(const Cfg *Func) const; 1342 void emitSingleDestSingleSource(const Cfg *Func) const;
1341 1343
1342 void emitIASSingleDestSingleSource(const Cfg *Func) const; 1344 void emitIASSingleDestSingleSource(const Cfg *Func) const;
1345 void emitIASScalarVFPMove(const Cfg *Func) const;
1343 void emitIASCoreVFPMove(const Cfg *Func) const; 1346 void emitIASCoreVFPMove(const Cfg *Func) const;
1344 1347
1345 Variable *DestHi = nullptr; 1348 Variable *DestHi = nullptr;
1346 }; 1349 };
1347 1350
1348 class InstARM32Vcmp final : public InstARM32Pred { 1351 class InstARM32Vcmp final : public InstARM32Pred {
1349 InstARM32Vcmp() = delete; 1352 InstARM32Vcmp() = delete;
1350 InstARM32Vcmp(const InstARM32Vcmp &) = delete; 1353 InstARM32Vcmp(const InstARM32Vcmp &) = delete;
1351 InstARM32Vcmp &operator=(const InstARM32Vcmp &) = delete; 1354 InstARM32Vcmp &operator=(const InstARM32Vcmp &) = delete;
1352 1355
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1434 // violations and link errors. 1437 // violations and link errors.
1435 1438
1436 template <> void InstARM32Ldr::emit(const Cfg *Func) const; 1439 template <> void InstARM32Ldr::emit(const Cfg *Func) const;
1437 template <> void InstARM32Movw::emit(const Cfg *Func) const; 1440 template <> void InstARM32Movw::emit(const Cfg *Func) const;
1438 template <> void InstARM32Movt::emit(const Cfg *Func) const; 1441 template <> void InstARM32Movt::emit(const Cfg *Func) const;
1439 1442
1440 } // end of namespace ARM32 1443 } // end of namespace ARM32
1441 } // end of namespace Ice 1444 } // end of namespace Ice
1442 1445
1443 #endif // SUBZERO_SRC_ICEINSTARM32_H 1446 #endif // SUBZERO_SRC_ICEINSTARM32_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698