diff options
| author | 2014-07-25 12:32:18 -0700 | |
|---|---|---|
| committer | 2014-08-26 11:38:04 -0700 | |
| commit | b5bce7cc9f1130ab4932ba8e6917c362bf871f24 (patch) | |
| tree | 45d3b064227213da49d047c3c718e23f33b47cad /compiler/dex/compiler_enums.h | |
| parent | 3b6711faf7b0b10eaa6c48ba854160bcecd00166 (diff) | |
ART: Add non-temporal store support
Added non-temporal store support as a hint from the ME.
Added the implementation of the memory barrier
extended instruction that supports non-temporal stores
by explicitly serializing all previous store-to-memory instructions.
Change-Id: I8205a92083f9725253d8ce893671a133a0b6849d
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
Diffstat (limited to 'compiler/dex/compiler_enums.h')
| -rw-r--r-- | compiler/dex/compiler_enums.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/dex/compiler_enums.h b/compiler/dex/compiler_enums.h index 47cb4245d7..5263b8de7e 100644 --- a/compiler/dex/compiler_enums.h +++ b/compiler/dex/compiler_enums.h @@ -234,6 +234,10 @@ enum ExtendedMIROpcode { // @note: All currently reserved vector registers are returned to the temporary pool. kMirOpReturnVectorRegisters, + // @brief Create a memory barrier. + // vA: a constant defined by enum MemBarrierKind. + kMirOpMemBarrier, + kMirOpLast, }; @@ -249,6 +253,7 @@ enum MIROptimizationFlagPositions { kMIRIgnoreSuspendCheck, kMIRDup, kMIRMark, // Temporary node mark. + kMIRStoreNonTemporal, kMIRLastMIRFlag, }; @@ -453,12 +458,15 @@ std::ostream& operator<<(std::ostream& os, const DividePattern& pattern); * -# Use LoadAny barrier ~= (LoadLoad | LoadStore) ~= acquire barrierafter each volatile load. * -# Use StoreStore barrier after all stores but before return from any constructor whose * class has final fields. + * -# Use NTStoreStore to order non-temporal stores with respect to all later + * store-to-memory instructions. Only generated together with non-temporal stores. */ enum MemBarrierKind { kAnyStore, kLoadAny, kStoreStore, - kAnyAny + kAnyAny, + kNTStoreStore, }; std::ostream& operator<<(std::ostream& os, const MemBarrierKind& kind); |