Skip to content

Commit 3b40b41

Browse files
committed
[PyTorchSim] Add sin,cos instruction
1 parent 211cda6 commit 3b40b41

5 files changed

Lines changed: 47 additions & 12 deletions

File tree

src/arch/riscv/isa/decoder.isa

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4859,12 +4859,12 @@ decode QUADRANT default Unknown::unknown() {
48594859
0xb: decode VM {
48604860
0x0: VectorNonSplitFormat::vexp_v({{
48614861
Vd_vu[0] = Vs2_vu[0];
4862-
}}, OPFVV, CustomMatMulvexpOp);
4862+
}}, OPFVV, CustomVexpOp);
48634863
}
48644864
0x8: decode VM {
48654865
0x0: VectorNonSplitFormat::verf_v({{
48664866
Vd_vu[0] = Vs2_vu[0];
4867-
}}, OPFVV, CustomMatMulverfOp);
4867+
}}, OPFVV, CustomVerfOp);
48684868
0x1: VectorNonSplitFormat::iVpush_v({{
48694869
auto v_temp = Vs2_vu;
48704870
v_temp[0] = 0;
@@ -4873,12 +4873,17 @@ decode QUADRANT default Unknown::unknown() {
48734873
0x9: decode VM {
48744874
0x0: VectorNonSplitFormat::vtanh_v({{
48754875
Vd_vu[0] = Vs2_vu[0];
4876-
}}, OPFVV, CustomMatMulvtanhOp);
4876+
}}, OPFVV, CustomVtanhOp);
48774877
0x1: VectorNonSplitFormat::wVpush_v({{
48784878
auto v_temp = Vs2_vu;
48794879
v_temp[0] = 0;
48804880
}}, OPFVV, CustomMatMulwVpushOp);
48814881
}
4882+
0x10: decode VM {
4883+
0x0: VectorNonSplitFormat::vsin_v({{
4884+
Vd_vu[0] = Vs2_vu[0];
4885+
}}, OPFVV, CustomVsinOp);
4886+
}
48824887
}
48834888
}
48844889

src/arch/riscv/isa/formats/vector_arith.isa

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,32 @@ def format VectorNonSplitFormat(code, category, *flags) {{
11951195
decoder_output = VectorNonSplitConstructor.subst(iop)
11961196
exec_output = VectorIntNonSplitExecute.subst(iop)
11971197
decode_block = VectorIntNonSplitDecodeBlock.subst(iop)
1198+
elif inst_name == "vsin" :
1199+
iop = InstObjParams(name,
1200+
Name,
1201+
'VectorNonSplitInst',
1202+
{'code': code,
1203+
'vm_decl_rd': vm_decl_rd,
1204+
'set_vm_idx': set_vm_idx,
1205+
'declare_varith_template': declareVArithTemplate(Name)},
1206+
flags)
1207+
header_output = VectorNonSplitDeclare.subst(iop)
1208+
decoder_output = VectorNonSplitConstructor.subst(iop)
1209+
exec_output = VectorIntNonSplitExecute.subst(iop)
1210+
decode_block = VectorIntNonSplitDecodeBlock.subst(iop)
1211+
elif inst_name == "vcos" :
1212+
iop = InstObjParams(name,
1213+
Name,
1214+
'VectorNonSplitInst',
1215+
{'code': code,
1216+
'vm_decl_rd': vm_decl_rd,
1217+
'set_vm_idx': set_vm_idx,
1218+
'declare_varith_template': declareVArithTemplate(Name)},
1219+
flags)
1220+
header_output = VectorNonSplitDeclare.subst(iop)
1221+
decoder_output = VectorNonSplitConstructor.subst(iop)
1222+
exec_output = VectorIntNonSplitExecute.subst(iop)
1223+
decode_block = VectorIntNonSplitDecodeBlock.subst(iop)
11981224
elif inst_name == "iVpush" :
11991225
iop = InstObjParams(name,
12001226
Name,

src/cpu/FuncUnit.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,11 @@ class OpClass(Enum):
120120
"CustomMatMuliVpush",
121121
"CustomMatMulwVpush",
122122
"CustomMatMulvpop",
123-
"CustomMatMulvexp",
124-
"CustomMatMulverf",
125-
"CustomMatMulvtanh",
123+
"CustomVexp",
124+
"CustomVerf",
125+
"CustomVtanh",
126+
"CustomVsin",
127+
"CustomVcos",
126128
"CustomVlaneIdx",
127129
]
128130

src/cpu/minor/execute.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -832,11 +832,11 @@ Execute::issue(ThreadID thread_id)
832832
*inst);
833833
thread.inFUMemInsts->push(fu_inst);
834834
}
835-
if (inst->staticInst->opClass() >= gem5::enums::CustomMatMulvexp)
835+
if (inst->staticInst->opClass() >= gem5::enums::CustomVexp)
836836
DPRINTF(PyTorchSim, "%s Issue at %d\n", *inst, cpu.curCycle());
837-
if (inst->staticInst->opClass() >= gem5::enums::CustomMatMulverf)
837+
if (inst->staticInst->opClass() >= gem5::enums::CustomVerf)
838838
DPRINTF(PyTorchSim, "%s Issue at %d\n", *inst, cpu.curCycle());
839-
if (inst->staticInst->opClass() >= gem5::enums::CustomMatMulvtanh)
839+
if (inst->staticInst->opClass() >= gem5::enums::CustomVtanh)
840840
DPRINTF(PyTorchSim, "%s Issue at %d\n", *inst, cpu.curCycle());
841841

842842
if (is_systolicArray) {

src/cpu/op_class.hh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,11 @@ static const OpClass CustomMatMulOp = enums::CustomMatMul;
137137
static const OpClass CustomMatMuliVpushOp = enums::CustomMatMuliVpush;
138138
static const OpClass CustomMatMulwVpushOp = enums::CustomMatMulwVpush;
139139
static const OpClass CustomMatMulvpopOp = enums::CustomMatMulvpop;
140-
static const OpClass CustomMatMulvexpOp = enums::CustomMatMulvexp;
141-
static const OpClass CustomMatMulverfOp = enums::CustomMatMulverf;
142-
static const OpClass CustomMatMulvtanhOp = enums::CustomMatMulvtanh;
140+
static const OpClass CustomVexpOp = enums::CustomVexp;
141+
static const OpClass CustomVerfOp = enums::CustomVerf;
142+
static const OpClass CustomVtanhOp = enums::CustomVtanh;
143+
static const OpClass CustomVsinOp = enums::CustomVsin;
144+
static const OpClass CustomVcosOp = enums::CustomVcos;
143145
static const OpClass CustomVlaneIdxOp = enums::CustomVlaneIdx;
144146

145147
static const OpClass Num_OpClasses = enums::Num_OpClass;

0 commit comments

Comments
 (0)