#
bb2f3f51 |
| 12-Jul-2024 |
Tang Haojin <[email protected]> |
perf: use perfUtils in `Utility` (#3190)
Currently, log and perf utilities such as `XSPerfAccumulate` are
implemented in many repositories like XiangShan, CoupledL2 and HuanCun.
This PR unifies th
perf: use perfUtils in `Utility` (#3190)
Currently, log and perf utilities such as `XSPerfAccumulate` are
implemented in many repositories like XiangShan, CoupledL2 and HuanCun.
This PR unifies them and put them in Utility repository.
show more ...
|
#
545d7be0 |
| 06-May-2024 |
Yangyu Chen <[email protected]> |
riscv-zicond: Add Zicond Extension (#2941)
This PR added RISC-V Integer Conditional Operations Extension, which is
in the RVA23U64 Profile Mandatory Base. And the performance of
conditional move i
riscv-zicond: Add Zicond Extension (#2941)
This PR added RISC-V Integer Conditional Operations Extension, which is
in the RVA23U64 Profile Mandatory Base. And the performance of
conditional move instructions in micro-architecture is an interesting
point to explore.
Zicond instructions added: czero.eqz, czero.nez
Changes based on spec:
https://github.com/riscvarchive/riscv-zicond/releases/download/v1.0.1/riscv-zicond_1.0.1.pdf
Signed-off-by: Yangyu Chen <[email protected]>
show more ...
|
#
4b0d80d8 |
| 11-Oct-2023 |
Xuan Hu <[email protected]> |
Merge upstream/master into tmp-backend-merge-master
|
#
8891a219 |
| 08-Oct-2023 |
Yinan Xu <[email protected]> |
Bump rocket-chip (#2353)
|
#
935edac4 |
| 21-Sep-2023 |
Tang Haojin <[email protected]> |
chore: remove deprecated brackets, APIs, etc. (#2321)
|
#
54711376 |
| 28-Aug-2023 |
sinsanction <[email protected]> |
Backend, Fusion: support instruction fusion case 'lui + addiw'
|
#
fe528fd6 |
| 25-Aug-2023 |
sinsanction <[email protected]> |
Backend, Fusion: support instruction fusion case 'lui + addi'
|
#
3b739f49 |
| 06-Mar-2023 |
Xuan Hu <[email protected]> |
v2backend: huge tmp commit
|
#
edace9bf |
| 10-Feb-2023 |
xiwenx <[email protected]> |
refactor(Alu): split Vset from Alu (#1906)
|
#
925ac328 |
| 08-Feb-2023 |
xiwenx <[email protected]> |
vset: pass lsrc0NotZero by imm(15) & modify vl calculation logic in alu (#1903)
1. pass lsrc0NotZero by imm(15)
2. modify the logic for generating vl in Alu
|
#
3a6ab23a |
| 05-Feb-2023 |
czw <[email protected]> |
refactor(Alu): split Branch from Alu
|
#
4aa9ed34 |
| 12-Jan-2023 |
fdy <[email protected]> |
vset: add vset instr support
|
#
3c02ee8f |
| 25-Dec-2022 |
wakafa <[email protected]> |
Separate Utility submodule from XiangShan (#1861)
* misc: add utility submodule
* misc: adjust to new utility framework
* bump utility: revert resetgen
* bump huancun
|
#
25ac26c6 |
| 11-May-2022 |
William Wang <[email protected]> |
Fix vcs simulation support, support manually set ram_size (#1551)
* difftest: disable runahead to make vcs happy
* difftest: bump huancun to make vcs happy
* difftest: bump difftest and ready-
Fix vcs simulation support, support manually set ram_size (#1551)
* difftest: disable runahead to make vcs happy
* difftest: bump huancun to make vcs happy
* difftest: bump difftest and ready-to-run
* difftest support ramsize and paddr base config
* 8GB/16GB nemu so are provided by ready-to-run
* ci: update nightly ci, manually set ram_size
* difftest: bump huancun to make vcs happy
* difftest,nemu: support run-time assign mem size
* ci: polish nightly ci script
show more ...
|
#
73be64b3 |
| 13-Oct-2021 |
Jiawei Lin <[email protected]> |
Refactor top (#1093)
* Temporarily disable TLMonitor
* Bump huancun (L2/L3 MSHR bug fix)
* Refactor Top
* Bump huancun
* alu: fix bug of rev8 & orc.b instruction
Co-authored-by: Zhang
Refactor top (#1093)
* Temporarily disable TLMonitor
* Bump huancun (L2/L3 MSHR bug fix)
* Refactor Top
* Bump huancun
* alu: fix bug of rev8 & orc.b instruction
Co-authored-by: Zhangfw <[email protected]>
show more ...
|
#
20edb3f7 |
| 09-Oct-2021 |
William Wang <[email protected]> |
Add runahead debug signals (#1082)
* runahead: add runahead support (WIP)
* runahead: fix redirect event
* difftest: bump difftest
* runahead: bump version
Note: current runahead does no
Add runahead debug signals (#1082)
* runahead: add runahead support (WIP)
* runahead: fix redirect event
* difftest: bump difftest
* runahead: bump version
Note: current runahead does not support instruction fusion, disable that
in XiangShan if runahead is needed
* runahead: bump version
* difftest: bump version to support runahead
* chore: bump huancun to make ci happy
* chore: fix wrong submodule url
* difftest: bump version
BREAKING CHANGE: nemu update_config api has changed
show more ...
|
#
7b441e5e |
| 04-Oct-2021 |
Yinan Xu <[email protected]> |
alu: fix maxu/minu/rol/ror results (#1085)
* bump difftest
* alu: fix max and maxu result
* alu: fix src1 generated by opcode
Co-authored-by: Zhangfw <[email protected]>
|
#
9aca92b9 |
| 28-Sep-2021 |
Yinan Xu <[email protected]> |
misc: code clean up (#1073)
* rename Roq to Rob
* remove trailing whitespaces
* remove unused parameters
|
#
675acc68 |
| 25-Sep-2021 |
Yinan Xu <[email protected]> |
backend: optimize aluOpType to 7 bits (#1061)
This commit optimizes ALUOpType to 7 bits. Alu timing will be checked
later.
We also apply some misc changes including:
* Move REVB, PACK, PACKH,
backend: optimize aluOpType to 7 bits (#1061)
This commit optimizes ALUOpType to 7 bits. Alu timing will be checked
later.
We also apply some misc changes including:
* Move REVB, PACK, PACKH, PACKW to ALU
* Add fused logicZexth, addwZext, addwSexth
* Add instruction fusion test cases to CI
show more ...
|
#
07596dc6 |
| 25-Sep-2021 |
zfw <[email protected]> |
Bmu: support zbk* instruction (#1059)
* Bmu: support zbk* instructions
* ci: add zbk* instruction test
|
#
a792bcf1 |
| 12-Sep-2021 |
Yinan Xu <[email protected]> |
backend: add 3-bit shift fused instructions (#1022)
This commit adds 3-bit shift fused instructions. When the program
tries to add 8-byte index, these may be used.
List of fused instructions add
backend: add 3-bit shift fused instructions (#1022)
This commit adds 3-bit shift fused instructions. When the program
tries to add 8-byte index, these may be used.
List of fused instructions added in this commit:
* szewl3: `slli r1, r0, 32` + `srli r1, r0, 29`
* sr29add: `srli r1, r0, 29` + `add r1, r1, r2`
show more ...
|
#
88825c5c |
| 09-Sep-2021 |
Yinan Xu <[email protected]> |
backend: support instruction fusion cases (#1011)
This commit adds some simple instruction fusion cases in decode stage.
Currently we only implement instruction pairs that can be fused into
RV64GC
backend: support instruction fusion cases (#1011)
This commit adds some simple instruction fusion cases in decode stage.
Currently we only implement instruction pairs that can be fused into
RV64GCB instructions.
Instruction fusions are detected in the decode stage by FusionDecoder.
The decoder checks every two instructions and marks the first
instruction fused if they can be fused into one instruction. The second
instruction is removed by setting the valid field to false.
Simple fusion cases include sh1add, sh2add, sh3add, sexth, zexth, etc.
Currently, ftq in frontend needs every instruction to commit. However,
the second instruction is removed from the pipeline and will not commit.
To solve this issue, we temporarily add more bits to isFused to indicate
the offset diff of the two fused instruction. There are four
possibilities now. This feature may be removed later.
This commit also adds more instruction fusion cases that need changes
in both the decode stage and the funtion units. In this commit, we add
some opcode to the function units and fuse the new instruction pairs
into these new internal uops.
The list of opcodes we add in this commit is shown below:
- szewl1: `slli r1, r0, 32` + `srli r1, r0, 31`
- szewl2: `slli r1, r0, 32` + `srli r1, r0, 30`
- byte2: `srli r1, r0, 8` + `andi r1, r1, 255`
- sh4add: `slli r1, r0, 4` + `add r1, r1, r2`
- sr30add: `srli r1, r0, 30` + `add r1, r1, r2`
- sr31add: `srli r1, r0, 31` + `add r1, r1, r2`
- sr32add: `srli r1, r0, 32` + `add r1, r1, r2`
- oddadd: `andi r1, r0, 1`` + `add r1, r1, r2`
- oddaddw: `andi r1, r0, 1`` + `addw r1, r1, r2`
- orh48: mask off the first 16 bits and or with another operand
(`andi r1, r0, -256`` + `or r1, r1, r2`)
Furthermore, this commit adds some complex instruction fusion cases to
the decode stage and function units. The complex instruction fusion cases
are detected after the instructions are decoded into uop and their
CtrlSignals are used for instruction fusion detection.
We add the following complex instruction fusion cases:
- addwbyte: addw and mask it with 0xff (extract the first byte)
- addwbit: addw and mask it with 0x1 (extract the first bit)
- logiclsb: logic operation and mask it with 0x1 (extract the first bit)
- mulw7: andi 127 and mulw instructions.
Input to mul is AND with 0x7f if mulw7 bit is set to true.
show more ...
|
#
0a6fa50e |
| 08-Sep-2021 |
zfw <[email protected]> |
alu, decode: fix alu instruction and change instruction name (#1012)
* Alu: fix andn, orn, xnor
* Decode: change instruction name
|
#
28c18878 |
| 31-Aug-2021 |
zfw <[email protected]> |
Alu: optimize timing for bitmanip (#979)
* Alu: optimize timing
This pull request optimizes timing by adding a 32bit adder for addw and changing the encode.
|
#
184a1958 |
| 26-Aug-2021 |
zfw <[email protected]> |
Alu: optimize timing for bitmanip (#959)
* separate the Alu instructions by 64bit data instructions and w-suffix instructions
* optimize select logic of instructions result
|