gem5
v24.0.0.0
Loading...
Searching...
No Matches
arch
amdgpu
vega
gpu_isa.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2016-2021 Advanced Micro Devices, Inc.
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 met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
*
11
* 2. Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
*
15
* 3. Neither the name of the copyright holder nor the names of its
16
* contributors may be used to endorse or promote products derived from this
17
* software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
* POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef __ARCH_VEGA_GPU_ISA_HH__
33
#define __ARCH_VEGA_GPU_ISA_HH__
34
35
#include <array>
36
#include <type_traits>
37
38
#include "
arch/amdgpu/vega/gpu_registers.hh
"
39
#include "
arch/amdgpu/vega/tlb.hh
"
40
#include "
gpu-compute/dispatcher.hh
"
41
#include "
gpu-compute/hsa_queue_entry.hh
"
42
#include "
gpu-compute/misc.hh
"
43
44
namespace
gem5
45
{
46
47
class
Wavefront;
48
49
namespace
VegaISA
50
{
51
class
GPUISA
52
{
53
public
:
54
GPUISA
(
Wavefront
&wf);
55
56
template
<
typename
T> T
57
readConstVal
(
int
opIdx)
const
58
{
59
panic_if
(!std::is_integral_v<T>,
60
"Constant values must be an integer."
);
61
T
val
(0);
62
63
if
(
isPosConstVal
(opIdx)) {
64
val
= (T)
readPosConstReg
(opIdx);
65
}
66
67
if
(
isNegConstVal
(opIdx)) {
68
val
= (T)
readNegConstReg
(opIdx);
69
}
70
71
return
val
;
72
}
73
74
ScalarRegU32
readMiscReg
(
int
opIdx)
const
;
75
void
writeMiscReg
(
int
opIdx,
ScalarRegU32
operandVal);
76
bool
hasScalarUnit
()
const
{
return
true
; }
77
void
advancePC
(
GPUDynInstPtr
gpuDynInst);
78
79
private
:
80
ScalarRegU32
readPosConstReg
(
int
opIdx)
const
81
{
82
return
posConstRegs
[opIdx -
REG_INT_CONST_POS_MIN
];
83
}
84
85
ScalarRegI32
readNegConstReg
(
int
opIdx)
const
86
{
87
return
negConstRegs
[opIdx -
REG_INT_CONST_NEG_MIN
];
88
}
89
90
static
const
std::array<const ScalarRegU32, NumPosConstRegs>
91
posConstRegs
;
92
static
const
std::array<const ScalarRegI32, NumNegConstRegs>
93
negConstRegs
;
94
95
// parent wavefront
96
Wavefront
&
wavefront
;
97
98
// shader status bits
99
StatusReg
statusReg
;
100
// memory descriptor reg
101
ScalarRegU32
m0
;
102
};
103
}
// namespace VegaISA
104
}
// namespace gem5
105
106
#endif
// __ARCH_VEGA_GPU_ISA_HH__
tlb.hh
gem5::VegaISA::GPUISA
Definition
gpu_isa.hh:52
gem5::VegaISA::GPUISA::posConstRegs
static const std::array< const ScalarRegU32, NumPosConstRegs > posConstRegs
Definition
gpu_isa.hh:91
gem5::VegaISA::GPUISA::readMiscReg
ScalarRegU32 readMiscReg(int opIdx) const
Definition
gpu_isa.cc:49
gem5::VegaISA::GPUISA::hasScalarUnit
bool hasScalarUnit() const
Definition
gpu_isa.hh:76
gem5::VegaISA::GPUISA::readPosConstReg
ScalarRegU32 readPosConstReg(int opIdx) const
Definition
gpu_isa.hh:80
gem5::VegaISA::GPUISA::advancePC
void advancePC(GPUDynInstPtr gpuDynInst)
Definition
gpu_isa.cc:83
gem5::VegaISA::GPUISA::wavefront
Wavefront & wavefront
Definition
gpu_isa.hh:96
gem5::VegaISA::GPUISA::m0
ScalarRegU32 m0
Definition
gpu_isa.hh:101
gem5::VegaISA::GPUISA::writeMiscReg
void writeMiscReg(int opIdx, ScalarRegU32 operandVal)
Definition
gpu_isa.cc:66
gem5::VegaISA::GPUISA::GPUISA
GPUISA(Wavefront &wf)
Definition
gpu_isa.cc:44
gem5::VegaISA::GPUISA::readConstVal
T readConstVal(int opIdx) const
Definition
gpu_isa.hh:57
gem5::VegaISA::GPUISA::statusReg
StatusReg statusReg
Definition
gpu_isa.hh:99
gem5::VegaISA::GPUISA::readNegConstReg
ScalarRegI32 readNegConstReg(int opIdx) const
Definition
gpu_isa.hh:85
gem5::VegaISA::GPUISA::negConstRegs
static const std::array< const ScalarRegI32, NumNegConstRegs > negConstRegs
Definition
gpu_isa.hh:93
gem5::Wavefront
Definition
wavefront.hh:61
dispatcher.hh
The GPUDispatcher is the component of the shader that is responsible for creating and dispatching WGs...
misc.hh
gpu_registers.hh
panic_if
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
Definition
logging.hh:214
hsa_queue_entry.hh
HSAQueuEntry is the simulator's internal representation of an AQL queue entry (task).
gem5::VegaISA::isNegConstVal
bool isNegConstVal(int opIdx)
Definition
gpu_registers.cc:200
gem5::VegaISA::ScalarRegI32
int32_t ScalarRegI32
Definition
gpu_registers.hh:154
gem5::VegaISA::REG_INT_CONST_NEG_MIN
@ REG_INT_CONST_NEG_MIN
Definition
gpu_registers.hh:81
gem5::VegaISA::REG_INT_CONST_POS_MIN
@ REG_INT_CONST_POS_MIN
Definition
gpu_registers.hh:79
gem5::VegaISA::isPosConstVal
bool isPosConstVal(int opIdx)
Definition
gpu_registers.cc:191
gem5::VegaISA::ScalarRegU32
uint32_t ScalarRegU32
Definition
gpu_registers.hh:153
gem5::X86ISA::val
Bitfield< 63 > val
Definition
misc.hh:804
gem5
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition
binary32.hh:36
gem5::GPUDynInstPtr
std::shared_ptr< GPUDynInst > GPUDynInstPtr
Definition
misc.hh:49
gem5::VegaISA::StatusReg
Definition
gpu_registers.hh:184
Generated on Tue Jun 18 2024 16:23:39 for gem5 by
doxygen
1.11.0