Questions regarding the RISCV native codegen & performance

Daniel Trujillo Viedma danihacker.viedma at gmail.com
Tue Apr 15 16:40:03 UTC 2025


Hello, ghc-devs! My name is Daniel Trujillo, I'm a Haskell enthusiast 
from Spain and I'm trying to make my Master's thesis about accelerating 
Haskell programs with a custom ISA extension.


Right now, my focus is in executing software written in Haskell within 
QEMU in order to get traces that tells me, basically, how many times 
each block (not exactly basic blocks, but sort of) of assembly code has 
been executed, with the hope of finding some patterns of RISCV 
instructions that I could implement together into 1 instruction.


As you can see, my method is a bit crude, and I was wondering if the 
people involved with any of the different internal representations (STG, 
Cmm...) and/or native code generators (particularly RISCV) could provide 
me hints about assembly instructions that would have made the work 
easier, by removing the need of "massaging" the Cmm code to make CodeGen 
easier, or the need of particular optimizations, or in general, dirty 
tricks because of lacking of proper support of the standard RISCV ISA.


And of course, I would also appreciate very much other hints from people 
involved in general performance (as oppossed to, for example, libraries 
for SIMD and parallel execution, or Haskell wrappers to lower-level code 
for performance reasons).


P.D. I'm sorry if I broke any netiquette rule, but I'm very new to the 
email list, and haven't received yet any email from it.


Looking forward to hear from you!

Cheers,

Dani.



More information about the ghc-devs mailing list