Removed all comments labelled \'simx64\'
This commit is contained in:
@@ -45,7 +45,6 @@
|
|||||||
`define L1_BLOCK_SIZE ((`L2_ENABLE || `L3_ENABLE) ? 16 : `MEM_BLOCK_SIZE)
|
`define L1_BLOCK_SIZE ((`L2_ENABLE || `L3_ENABLE) ? 16 : `MEM_BLOCK_SIZE)
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
// simx64
|
|
||||||
`ifndef STARTUP_ADDR
|
`ifndef STARTUP_ADDR
|
||||||
`define STARTUP_ADDR 32'h80000000
|
`define STARTUP_ADDR 32'h80000000
|
||||||
`endif
|
`endif
|
||||||
|
|||||||
@@ -111,11 +111,9 @@ static const char* op_string(const Instr &instr) {
|
|||||||
case 0: return "LBI";
|
case 0: return "LBI";
|
||||||
case 1: return "LHI";
|
case 1: return "LHI";
|
||||||
case 2: return "LW";
|
case 2: return "LW";
|
||||||
// simx64
|
|
||||||
case 3: return "LD";
|
case 3: return "LD";
|
||||||
case 4: return "LBU";
|
case 4: return "LBU";
|
||||||
case 5: return "LHU";
|
case 5: return "LHU";
|
||||||
// simx64
|
|
||||||
case 6: return "LWU";
|
case 6: return "LWU";
|
||||||
default:
|
default:
|
||||||
std::abort();
|
std::abort();
|
||||||
@@ -125,12 +123,10 @@ static const char* op_string(const Instr &instr) {
|
|||||||
case 0: return "SB";
|
case 0: return "SB";
|
||||||
case 1: return "SH";
|
case 1: return "SH";
|
||||||
case 2: return "SW";
|
case 2: return "SW";
|
||||||
// simx64
|
|
||||||
case 3: return "SD";
|
case 3: return "SD";
|
||||||
default:
|
default:
|
||||||
std::abort();
|
std::abort();
|
||||||
}
|
}
|
||||||
// simx64
|
|
||||||
case Opcode::R_INST_64:
|
case Opcode::R_INST_64:
|
||||||
if (func7 & 0x1){
|
if (func7 & 0x1){
|
||||||
switch (func3) {
|
switch (func3) {
|
||||||
@@ -151,7 +147,6 @@ static const char* op_string(const Instr &instr) {
|
|||||||
std::abort();
|
std::abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// simx64
|
|
||||||
case Opcode::I_INST_64:
|
case Opcode::I_INST_64:
|
||||||
switch (func3) {
|
switch (func3) {
|
||||||
case 0: return "ADDIW";
|
case 0: return "ADDIW";
|
||||||
@@ -182,7 +177,6 @@ static const char* op_string(const Instr &instr) {
|
|||||||
std::abort();
|
std::abort();
|
||||||
}
|
}
|
||||||
case Opcode::FENCE: return "FENCE";
|
case Opcode::FENCE: return "FENCE";
|
||||||
// simx64
|
|
||||||
case Opcode::FL:
|
case Opcode::FL:
|
||||||
switch (func3) {
|
switch (func3) {
|
||||||
case 0x1: return "VL";
|
case 0x1: return "VL";
|
||||||
@@ -259,7 +253,6 @@ static const char* op_string(const Instr &instr) {
|
|||||||
default:
|
default:
|
||||||
std::abort();
|
std::abort();
|
||||||
}
|
}
|
||||||
// simx64
|
|
||||||
case 0x60:
|
case 0x60:
|
||||||
switch (rs2) {
|
switch (rs2) {
|
||||||
case 0: return "FCVT.W.S";
|
case 0: return "FCVT.W.S";
|
||||||
@@ -376,7 +369,6 @@ std::ostream &operator<<(std::ostream &os, const Instr &instr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Decoder::Decoder(const ArchDef &arch) {
|
Decoder::Decoder(const ArchDef &arch) {
|
||||||
// simx64
|
|
||||||
inst_s_ = arch.wsize() * 4;
|
inst_s_ = arch.wsize() * 4;
|
||||||
opcode_s_ = 7;
|
opcode_s_ = 7;
|
||||||
reg_s_ = 5;
|
reg_s_ = 5;
|
||||||
@@ -435,7 +427,6 @@ std::shared_ptr<Instr> Decoder::decode(Word code) const {
|
|||||||
|
|
||||||
auto iType = op_it->second.iType;
|
auto iType = op_it->second.iType;
|
||||||
if (op == Opcode::FL || op == Opcode::FS) {
|
if (op == Opcode::FL || op == Opcode::FS) {
|
||||||
// simx64
|
|
||||||
if (func3 != 0x2 && func3 != 0x3) {
|
if (func3 != 0x2 && func3 != 0x3) {
|
||||||
iType = InstType::V_TYPE;
|
iType = InstType::V_TYPE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,7 +123,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
for (int t = 0; t < num_threads; ++t) {
|
for (int t = 0; t < num_threads; ++t) {
|
||||||
if (!tmask_.test(t))
|
if (!tmask_.test(t))
|
||||||
continue;
|
continue;
|
||||||
// simx64
|
|
||||||
rddata[t] = (immsrc << 12) & 0xfffffffffffff000;
|
rddata[t] = (immsrc << 12) & 0xfffffffffffff000;
|
||||||
}
|
}
|
||||||
rd_write = true;
|
rd_write = true;
|
||||||
@@ -155,7 +154,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
break;
|
break;
|
||||||
case 1: {
|
case 1: {
|
||||||
// RV32M: MULH
|
// RV32M: MULH
|
||||||
// simx64
|
|
||||||
__int128_t first = sext128((__int128_t)rsdata[t][0], 64);
|
__int128_t first = sext128((__int128_t)rsdata[t][0], 64);
|
||||||
__int128_t second = sext128((__int128_t)rsdata[t][1], 64);
|
__int128_t second = sext128((__int128_t)rsdata[t][1], 64);
|
||||||
rddata[t] = ((first * second) >> 64) & 0xFFFFFFFFFFFFFFFF;
|
rddata[t] = ((first * second) >> 64) & 0xFFFFFFFFFFFFFFFF;
|
||||||
@@ -163,7 +161,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
} break;
|
} break;
|
||||||
case 2: {
|
case 2: {
|
||||||
// RV32M: MULHSU
|
// RV32M: MULHSU
|
||||||
// simx64
|
|
||||||
__int128_t first = sext128((__int128_t)rsdata[t][0], 64);
|
__int128_t first = sext128((__int128_t)rsdata[t][0], 64);
|
||||||
__int128_t second = (__int128_t)rsdata[t][1];
|
__int128_t second = (__int128_t)rsdata[t][1];
|
||||||
rddata[t] = ((first * second) >> 64) & 0xFFFFFFFFFFFFFFFF;
|
rddata[t] = ((first * second) >> 64) & 0xFFFFFFFFFFFFFFFF;
|
||||||
@@ -171,7 +168,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
} break;
|
} break;
|
||||||
case 3: {
|
case 3: {
|
||||||
// RV32M: MULHU
|
// RV32M: MULHU
|
||||||
// simx64
|
|
||||||
__uint128_t first = (__int128_t)rsdata[t][0];
|
__uint128_t first = (__int128_t)rsdata[t][0];
|
||||||
__uint128_t second = (__int128_t)rsdata[t][1];
|
__uint128_t second = (__int128_t)rsdata[t][1];
|
||||||
rddata[t] = ((first * second) >> 64) & 0xFFFFFFFFFFFFFFFF;
|
rddata[t] = ((first * second) >> 64) & 0xFFFFFFFFFFFFFFFF;
|
||||||
@@ -179,7 +175,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
} break;
|
} break;
|
||||||
case 4: {
|
case 4: {
|
||||||
// RV32M: DIV
|
// RV32M: DIV
|
||||||
// simx64
|
|
||||||
DoubleWordI dividen = rsdata[t][0];
|
DoubleWordI dividen = rsdata[t][0];
|
||||||
DoubleWordI divisor = rsdata[t][1];
|
DoubleWordI divisor = rsdata[t][1];
|
||||||
if (divisor == 0) {
|
if (divisor == 0) {
|
||||||
@@ -193,7 +188,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
} break;
|
} break;
|
||||||
case 5: {
|
case 5: {
|
||||||
// RV32M: DIVU
|
// RV32M: DIVU
|
||||||
// simx64
|
|
||||||
DoubleWord dividen = rsdata[t][0];
|
DoubleWord dividen = rsdata[t][0];
|
||||||
DoubleWord divisor = rsdata[t][1];
|
DoubleWord divisor = rsdata[t][1];
|
||||||
if (divisor == 0) {
|
if (divisor == 0) {
|
||||||
@@ -205,7 +199,6 @@ void Warp::execute(const Instr &instr, pipeline_trace_t *trace) {
|
|||||||
} break;
|
} break;
|
||||||
case 6: {
|
case 6: {
|
||||||
// RV32M: REM
|
// RV32M: REM
|
||||||
// simx64
|
|
||||||
DoubleWordI dividen = rsdata[t][0];
|
DoubleWordI dividen = rsdata[t][0];
|
||||||
DoubleWordI divisor = rsdata[t][1];
|
DoubleWordI divisor = rsdata[t][1];
|
||||||
if (rsdata[t][1] == 0) {
|
if (rsdata[t][1] == 0) {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ namespace vortex {
|
|||||||
typedef uint8_t Byte;
|
typedef uint8_t Byte;
|
||||||
typedef uint32_t Word;
|
typedef uint32_t Word;
|
||||||
typedef int32_t WordI;
|
typedef int32_t WordI;
|
||||||
// simx64
|
|
||||||
typedef uint64_t DoubleWord;
|
typedef uint64_t DoubleWord;
|
||||||
typedef int64_t DoubleWordI;
|
typedef int64_t DoubleWordI;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user