diff options
author | Min Kyu Jeong <minkyu.jeong@arm.com> | 2010-08-23 11:18:40 -0500 |
---|---|---|
committer | Min Kyu Jeong <minkyu.jeong@arm.com> | 2010-08-23 11:18:40 -0500 |
commit | 5f91ec3f4618dad8d36efbf8b5a5112a1ce0d1b7 (patch) | |
tree | 3984b0d3f3328901bf8c999b9d01162943fb328d /src/cpu/base_dyn_inst.hh | |
parent | 7acf67971cca761efec79a0a0ac453b1115387a9 (diff) | |
download | gem5-5f91ec3f4618dad8d36efbf8b5a5112a1ce0d1b7.tar.xz |
ARM/O3: store the result of the predicate evaluation in DynInst or Threadstate.
THis allows the CPU to handle predicated-false instructions accordingly.
This particular patch makes loads that are predicated-false to be sent
straight to the commit stage directly, not waiting for return of the data
that was never requested since it was predicated-false.
Diffstat (limited to 'src/cpu/base_dyn_inst.hh')
-rw-r--r-- | src/cpu/base_dyn_inst.hh | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh index 6ea00dd3d..a992664d0 100644 --- a/src/cpu/base_dyn_inst.hh +++ b/src/cpu/base_dyn_inst.hh @@ -246,6 +246,9 @@ class BaseDynInst : public FastAlloc, public RefCounted /** Micro PC of this instruction. */ Addr microPC; + /** Did this instruction execute, or is it predicated false */ + bool predicate; + protected: /** Next non-speculative PC. It is not filled in at fetch, but rather * once the target of the branch is truly known (either decode or @@ -794,6 +797,16 @@ class BaseDynInst : public FastAlloc, public RefCounted nextMicroPC = val; } + bool readPredicate() + { + return predicate; + } + + void setPredicate(bool val) + { + predicate = val; + } + /** Sets the ASID. */ void setASID(short addr_space_id) { asid = addr_space_id; } |