-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SIMD Implementation #845
Comments
There is the V vector extension and the P packed extension, both of which can load multiple items into a register, and both of which are still in development, but some experimental hardware and software support is available. You can find info on the V extension programming model here I think that there are more companies working on vector support than packed support. |
Hi Jim, Regarding Spike I have doubt whether spike supports rv32emc or not. If it does, then do I have to build it in a same way as I did for rv32imc. Because I tried the configure command of the spike with arch = rv32imc, abi=ilp32e but that says invalid. Please suggest is there any work around to make spike support rv32emc. |
You need to use a toolchain source tree that includes the V support, but you don't need to configure for V support. You can specify V at compile time using e.g. -march=rv32imcv. However, it you want standard library support for V, then you need to configure for V, or build with multilibs and configure in at least one multilib with V support. However, I think there is no V support yet in standard libraries. The P support should work the same. If you can generate P instructions without specifying the P extension, then that is a toolchain bug that will have to be fixed before the patch can be upstreamed. Current V toolchain development work is in LLVM, and I don't follow LLVM, so I can't comment on that. There is a GNU toolchain with V support on the rvv-intrinsic branch of riscv-gnu-toolchain, but it is out of date, and we don't know when it will be updated. I don't know where the P toolchain support is as I haven't been following the P extension. I'm not a spike expert, and spike is not part of the toolchain. I know that there is a branch somewhere with V support on it. I don't know about P, but I would expect the same. I'm not a spike expert. I don't know if spike has E support. qemu and gdb sim (non upstream) have E support. |
arch=rv32imc abi=ilp32e is not supported. if you want to use the ilp32e abi, then you have to use rv32e* for arch. |
Hi,
In tool-chain in riscv-opc.c I implemented the instruction as: |
You don't need INSN_CONDBRANCH. That is only for branches, and is used by some tools to help with decompiling. it looks like the simulator and assembler are using different encodings for the instruction. So you need to double check that. |
The |
Hi,
Is there any intrinsic or builtin function which can load multiple data from memory into one big register in single load instruction maybe with some sort of custom stride. Please suggest with any resources or references that can help me with the intrinsic or may be some way to implement a custom instruction with the required functionality.
An example of the functionality that I want, would be like below:
Dest_reg <- Load A[1:0]
The text was updated successfully, but these errors were encountered: