1
0

track operand size for Gets

This commit is contained in:
Henry Cook 2015-05-13 23:28:18 -07:00
parent 172c372d3e
commit a7fa77c7fc
2 changed files with 19 additions and 1 deletions

View File

@ -16,6 +16,7 @@ trait MemoryOpConstants {
val MT_BU = Bits("b100")
val MT_HU = Bits("b101")
val MT_WU = Bits("b110")
val MT_Q = Bits("b111")
val NUM_XA_OPS = 9
val M_SZ = 5

View File

@ -283,6 +283,8 @@ object Acquire {
* @param client_xact_id client's transaction id
* @param addr_block address of the cache block
* @param addr_beat sub-block address (which beat)
* @param addr_byte sub-block address (which byte)
* @param operand_size {byte, half, word, double} from [[uncore.MemoryOpConstants]]
* @param alloc hint whether the block should be allocated in intervening caches
*/
object Get {
@ -297,7 +299,22 @@ object Get {
client_xact_id = client_xact_id,
addr_block = addr_block,
addr_beat = addr_beat,
union = Cat(M_XRD, alloc))
union = Cat(MT_Q, M_XRD, alloc))
}
def apply(
client_xact_id: UInt,
addr_block: UInt,
addr_beat: UInt,
addr_byte: UInt,
operand_size: UInt,
alloc: Bool): Acquire = {
Acquire(
is_builtin_type = Bool(true),
a_type = Acquire.getType,
client_xact_id = client_xact_id,
addr_block = addr_block,
addr_beat = addr_beat,
union = Cat(addr_byte, operand_size, M_XRD, alloc))
}
}