decode.hh (4329:52057dbec096) decode.hh (5529:9ae69b9cd7fd)
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 22 unchanged lines hidden (view full) ---

31#ifndef __CPU_O3_DECODE_HH__
32#define __CPU_O3_DECODE_HH__
33
34#include <queue>
35
36#include "base/statistics.hh"
37#include "base/timebuf.hh"
38
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 22 unchanged lines hidden (view full) ---

31#ifndef __CPU_O3_DECODE_HH__
32#define __CPU_O3_DECODE_HH__
33
34#include <queue>
35
36#include "base/statistics.hh"
37#include "base/timebuf.hh"
38
39class DerivO3CPUParams;
40
39/**
40 * DefaultDecode class handles both single threaded and SMT
41 * decode. Its width is specified by the parameters; each cycles it
42 * tries to decode that many instructions. Because instructions are
43 * actually decoded when the StaticInst is created, this stage does
44 * not do much other than check any PC-relative branches.
45 */
46template<class Impl>
47class DefaultDecode
48{
49 private:
50 // Typedefs from the Impl.
51 typedef typename Impl::O3CPU O3CPU;
52 typedef typename Impl::DynInstPtr DynInstPtr;
41/**
42 * DefaultDecode class handles both single threaded and SMT
43 * decode. Its width is specified by the parameters; each cycles it
44 * tries to decode that many instructions. Because instructions are
45 * actually decoded when the StaticInst is created, this stage does
46 * not do much other than check any PC-relative branches.
47 */
48template<class Impl>
49class DefaultDecode
50{
51 private:
52 // Typedefs from the Impl.
53 typedef typename Impl::O3CPU O3CPU;
54 typedef typename Impl::DynInstPtr DynInstPtr;
53 typedef typename Impl::Params Params;
54 typedef typename Impl::CPUPol CPUPol;
55
56 // Typedefs from the CPU policy.
57 typedef typename CPUPol::FetchStruct FetchStruct;
58 typedef typename CPUPol::DecodeStruct DecodeStruct;
59 typedef typename CPUPol::TimeStruct TimeStruct;
60
61 public:

--- 19 unchanged lines hidden (view full) ---

81 /** Decode status. */
82 DecodeStatus _status;
83
84 /** Per-thread status. */
85 ThreadStatus decodeStatus[Impl::MaxThreads];
86
87 public:
88 /** DefaultDecode constructor. */
55 typedef typename Impl::CPUPol CPUPol;
56
57 // Typedefs from the CPU policy.
58 typedef typename CPUPol::FetchStruct FetchStruct;
59 typedef typename CPUPol::DecodeStruct DecodeStruct;
60 typedef typename CPUPol::TimeStruct TimeStruct;
61
62 public:

--- 19 unchanged lines hidden (view full) ---

82 /** Decode status. */
83 DecodeStatus _status;
84
85 /** Per-thread status. */
86 ThreadStatus decodeStatus[Impl::MaxThreads];
87
88 public:
89 /** DefaultDecode constructor. */
89 DefaultDecode(O3CPU *_cpu, Params *params);
90 DefaultDecode(O3CPU *_cpu, DerivO3CPUParams *params);
90
91 /** Returns the name of decode. */
92 std::string name() const;
93
94 /** Registers statistics. */
95 void regStats();
96
97 /** Sets the main backwards communication time buffer pointer. */

--- 216 unchanged lines hidden ---
91
92 /** Returns the name of decode. */
93 std::string name() const;
94
95 /** Registers statistics. */
96 void regStats();
97
98 /** Sets the main backwards communication time buffer pointer. */

--- 216 unchanged lines hidden ---