llvm / llvm/llvm-project

[RISC-V] Possible performance improvement in matrix multiply function in Coremark

Open
#163,757 3 comments 1 reaction 0 assignees View on GitHub
backend:RISC-V loopoptim missed-optimization
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

In function in Coremark:

```
#define bit_extract(x,from,to) (((x)>>(from)) & (~(0xffffffff << (to))))

void matrix_mul_matrix_bitextract(ee_u32 N, MATRES *C, MATDAT *A, MATDAT *B) {
ee_u32 i,j,k;
for (i=0; i

Contributor guide

Open the contributing guide

Research direction

Start with the Coremark matrix_mul_matrix_bitextract function and reproduce its LLVM output with -O3 -march=rv32imbc -mabi=ilp32. Compare the generated inner loop with GCC's assembly, investigate the loop-termination and bit-extraction differences, and verify any improvement against Coremark correctness and performance.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
compilers, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.