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

Side by Side Diff: src/IceTargetLoweringX8664Traits.h

Issue 1599803002: Subzero: Remove unneeded ScratchRegs. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: More cleanup 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
« no previous file with comments | « src/IceTargetLoweringX8664.cpp ('k') | src/IceTargetLoweringX86Base.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceTargetLoweringX8664Traits.h - x86-64 traits -*- C++ -*-=// 1 //===- subzero/src/IceTargetLoweringX8664Traits.h - x86-64 traits -*- 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 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 static constexpr std::size_t value = 1; 485 static constexpr std::size_t value = 1;
486 }; 486 };
487 487
488 const std::size_t Size; 488 const std::size_t Size;
489 }; 489 };
490 490
491 public: 491 public:
492 static void initRegisterSet( 492 static void initRegisterSet(
493 const ::Ice::ClFlags &Flags, 493 const ::Ice::ClFlags &Flags,
494 std::array<llvm::SmallBitVector, RCX86_NUM> *TypeToRegisterSet, 494 std::array<llvm::SmallBitVector, RCX86_NUM> *TypeToRegisterSet,
495 std::array<llvm::SmallBitVector, RegisterSet::Reg_NUM> *RegisterAliases, 495 std::array<llvm::SmallBitVector, RegisterSet::Reg_NUM> *RegisterAliases) {
496 llvm::SmallBitVector *ScratchRegs) {
497 llvm::SmallBitVector IntegerRegistersI64(RegisterSet::Reg_NUM); 496 llvm::SmallBitVector IntegerRegistersI64(RegisterSet::Reg_NUM);
498 llvm::SmallBitVector IntegerRegistersI32(RegisterSet::Reg_NUM); 497 llvm::SmallBitVector IntegerRegistersI32(RegisterSet::Reg_NUM);
499 llvm::SmallBitVector IntegerRegistersI16(RegisterSet::Reg_NUM); 498 llvm::SmallBitVector IntegerRegistersI16(RegisterSet::Reg_NUM);
500 llvm::SmallBitVector IntegerRegistersI8(RegisterSet::Reg_NUM); 499 llvm::SmallBitVector IntegerRegistersI8(RegisterSet::Reg_NUM);
501 llvm::SmallBitVector FloatRegisters(RegisterSet::Reg_NUM); 500 llvm::SmallBitVector FloatRegisters(RegisterSet::Reg_NUM);
502 llvm::SmallBitVector VectorRegisters(RegisterSet::Reg_NUM); 501 llvm::SmallBitVector VectorRegisters(RegisterSet::Reg_NUM);
503 llvm::SmallBitVector Trunc64To8Registers(RegisterSet::Reg_NUM); 502 llvm::SmallBitVector Trunc64To8Registers(RegisterSet::Reg_NUM);
504 llvm::SmallBitVector Trunc32To8Registers(RegisterSet::Reg_NUM); 503 llvm::SmallBitVector Trunc32To8Registers(RegisterSet::Reg_NUM);
505 llvm::SmallBitVector Trunc16To8Registers(RegisterSet::Reg_NUM); 504 llvm::SmallBitVector Trunc16To8Registers(RegisterSet::Reg_NUM);
506 llvm::SmallBitVector Trunc8RcvrRegisters(RegisterSet::Reg_NUM); 505 llvm::SmallBitVector Trunc8RcvrRegisters(RegisterSet::Reg_NUM);
507 llvm::SmallBitVector AhRcvrRegisters(RegisterSet::Reg_NUM); 506 llvm::SmallBitVector AhRcvrRegisters(RegisterSet::Reg_NUM);
508 llvm::SmallBitVector InvalidRegisters(RegisterSet::Reg_NUM); 507 llvm::SmallBitVector InvalidRegisters(RegisterSet::Reg_NUM);
509 ScratchRegs->resize(RegisterSet::Reg_NUM);
510 508
511 static constexpr struct { 509 static constexpr struct {
512 uint16_t Val; 510 uint16_t Val;
513 unsigned IsReservedWhenSandboxing : 1; 511 unsigned IsReservedWhenSandboxing : 1;
514 unsigned Is64 : 1; 512 unsigned Is64 : 1;
515 unsigned Is32 : 1; 513 unsigned Is32 : 1;
516 unsigned Is16 : 1; 514 unsigned Is16 : 1;
517 unsigned Is8 : 1; 515 unsigned Is8 : 1;
518 unsigned IsXmm : 1; 516 unsigned IsXmm : 1;
519 unsigned Is64To8 : 1; 517 unsigned Is64To8 : 1;
520 unsigned Is32To8 : 1; 518 unsigned Is32To8 : 1;
521 unsigned Is16To8 : 1; 519 unsigned Is16To8 : 1;
522 unsigned IsTrunc8Rcvr : 1; 520 unsigned IsTrunc8Rcvr : 1;
523 unsigned IsAhRcvr : 1; 521 unsigned IsAhRcvr : 1;
524 unsigned Scratch : 1;
525 #define NUM_ALIASES_BITS 2 522 #define NUM_ALIASES_BITS 2
526 SizeT NumAliases : (NUM_ALIASES_BITS + 1); 523 SizeT NumAliases : (NUM_ALIASES_BITS + 1);
527 uint16_t Aliases[1 << NUM_ALIASES_BITS]; 524 uint16_t Aliases[1 << NUM_ALIASES_BITS];
528 #undef NUM_ALIASES_BITS 525 #undef NUM_ALIASES_BITS
529 } X8664RegTable[RegisterSet::Reg_NUM] = { 526 } X8664RegTable[RegisterSet::Reg_NUM] = {
530 #define X(val, encode, name, base, scratch, preserved, stackptr, frameptr, \ 527 #define X(val, encode, name, base, scratch, preserved, stackptr, frameptr, \
531 sboxres, isGPR, is64, is32, is16, is8, isXmm, is64To8, is32To8, \ 528 sboxres, isGPR, is64, is32, is16, is8, isXmm, is64To8, is32To8, \
532 is16To8, isTrunc8Rcvr, isAhRcvr, aliases) \ 529 is16To8, isTrunc8Rcvr, isAhRcvr, aliases) \
533 { \ 530 { \
534 RegisterSet::val, sboxres, is64, is32, is16, is8, isXmm, is64To8, is32To8, \ 531 RegisterSet::val, sboxres, is64, is32, is16, is8, isXmm, is64To8, is32To8, \
535 is16To8, isTrunc8Rcvr, isAhRcvr, scratch, (SizeOf aliases).size(), \ 532 is16To8, isTrunc8Rcvr, isAhRcvr, (SizeOf aliases).size(), aliases, \
536 aliases, \
537 } \ 533 } \
538 , 534 ,
539 REGX8664_TABLE 535 REGX8664_TABLE
540 #undef X 536 #undef X
541 }; 537 };
542 538
543 const bool NeedSandboxing = Flags.getUseSandboxing(); 539 const bool NeedSandboxing = Flags.getUseSandboxing();
544 for (SizeT ii = 0; ii < llvm::array_lengthof(X8664RegTable); ++ii) { 540 for (SizeT ii = 0; ii < llvm::array_lengthof(X8664RegTable); ++ii) {
545 const auto &Entry = X8664RegTable[ii]; 541 const auto &Entry = X8664RegTable[ii];
546 // Even though the register is disabled for register allocation, it might 542 // Even though the register is disabled for register allocation, it might
(...skipping 16 matching lines...) Expand all
563 (IntegerRegistersI32)[Entry.Val] = Entry.Is32; 559 (IntegerRegistersI32)[Entry.Val] = Entry.Is32;
564 (IntegerRegistersI16)[Entry.Val] = Entry.Is16; 560 (IntegerRegistersI16)[Entry.Val] = Entry.Is16;
565 (IntegerRegistersI8)[Entry.Val] = Entry.Is8; 561 (IntegerRegistersI8)[Entry.Val] = Entry.Is8;
566 (FloatRegisters)[Entry.Val] = Entry.IsXmm; 562 (FloatRegisters)[Entry.Val] = Entry.IsXmm;
567 (VectorRegisters)[Entry.Val] = Entry.IsXmm; 563 (VectorRegisters)[Entry.Val] = Entry.IsXmm;
568 (Trunc64To8Registers)[Entry.Val] = Entry.Is64To8; 564 (Trunc64To8Registers)[Entry.Val] = Entry.Is64To8;
569 (Trunc32To8Registers)[Entry.Val] = Entry.Is32To8; 565 (Trunc32To8Registers)[Entry.Val] = Entry.Is32To8;
570 (Trunc16To8Registers)[Entry.Val] = Entry.Is16To8; 566 (Trunc16To8Registers)[Entry.Val] = Entry.Is16To8;
571 (Trunc8RcvrRegisters)[Entry.Val] = Entry.IsTrunc8Rcvr; 567 (Trunc8RcvrRegisters)[Entry.Val] = Entry.IsTrunc8Rcvr;
572 (AhRcvrRegisters)[Entry.Val] = Entry.IsAhRcvr; 568 (AhRcvrRegisters)[Entry.Val] = Entry.IsAhRcvr;
573 (*ScratchRegs)[Entry.Val] = Entry.Scratch;
574 } 569 }
575 570
576 (*TypeToRegisterSet)[RC_void] = InvalidRegisters; 571 (*TypeToRegisterSet)[RC_void] = InvalidRegisters;
577 (*TypeToRegisterSet)[RC_i1] = IntegerRegistersI8; 572 (*TypeToRegisterSet)[RC_i1] = IntegerRegistersI8;
578 (*TypeToRegisterSet)[RC_i8] = IntegerRegistersI8; 573 (*TypeToRegisterSet)[RC_i8] = IntegerRegistersI8;
579 (*TypeToRegisterSet)[RC_i16] = IntegerRegistersI16; 574 (*TypeToRegisterSet)[RC_i16] = IntegerRegistersI16;
580 (*TypeToRegisterSet)[RC_i32] = IntegerRegistersI32; 575 (*TypeToRegisterSet)[RC_i32] = IntegerRegistersI32;
581 (*TypeToRegisterSet)[RC_i64] = IntegerRegistersI64; 576 (*TypeToRegisterSet)[RC_i64] = IntegerRegistersI64;
582 (*TypeToRegisterSet)[RC_f32] = FloatRegisters; 577 (*TypeToRegisterSet)[RC_f32] = FloatRegisters;
583 (*TypeToRegisterSet)[RC_f64] = FloatRegisters; 578 (*TypeToRegisterSet)[RC_f64] = FloatRegisters;
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 const char *FldString; // s, l, or <blank> 1005 const char *FldString; // s, l, or <blank>
1011 } TypeAttributes[]; 1006 } TypeAttributes[];
1012 }; 1007 };
1013 1008
1014 using Traits = ::Ice::X8664::TargetX8664Traits; 1009 using Traits = ::Ice::X8664::TargetX8664Traits;
1015 } // end of namespace X8664 1010 } // end of namespace X8664
1016 1011
1017 } // end of namespace Ice 1012 } // end of namespace Ice
1018 1013
1019 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8664TRAITS_H 1014 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8664TRAITS_H
OLDNEW
« no previous file with comments | « src/IceTargetLoweringX8664.cpp ('k') | src/IceTargetLoweringX86Base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698