Skip to content

Commit

Permalink
Add intrinsic code generator for LoongArch
Browse files Browse the repository at this point in the history
Co-authored-by: WANG Rui <[email protected]>
  • Loading branch information
2 people authored and Amanieu committed Feb 28, 2024
1 parent 3961d3b commit 8668256
Show file tree
Hide file tree
Showing 5 changed files with 1,572 additions and 1 deletion.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ target
tags
crates/stdarch-gen-arm/aarch64.rs
crates/stdarch-gen-arm/arm.rs
crates/stdarch-gen-loongarch/lasx.c
crates/stdarch-gen-loongarch/lsx.c
c_programs/*
rust_programs/*
rust_programs/*
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ members = [
"crates/core_arch",
"crates/std_detect",
"crates/stdarch-gen-arm",
"crates/stdarch-gen-loongarch",
"crates/intrinsic-test",
"examples/"
]
Expand Down
10 changes: 10 additions & 0 deletions crates/stdarch-gen-loongarch/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[package]
name = "stdarch-gen-loongarch"
version = "0.1.0"
authors = ["ZHAI Xiang <[email protected]>", "WANG Rui <[email protected]>"]
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rand = "0.8.5"
33 changes: 33 additions & 0 deletions crates/stdarch-gen-loongarch/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# LoongArch LSX/LASX intrinsic code generator

A small tool that allows to quickly generate intrinsics for the LoongArch LSX/LASX architectures.

The specification for the intrinsics can be found in `lsx.spec` or `lasx.spec`.

To run and re-generate the code run the following from the root of the `stdarch` crate.

LSX:
```
# Generate bindings
OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsxintrin.h
OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec
# Generate tests
OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec test
loongarch64-unknown-linux-gnu-gcc -static -o lsx crates/stdarch-gen-loongarch/lsx.c -mlasx
qemu-loongarch64 ./lsx > crates/core_arch/src/loongarch64/lsx/tests.rs
rustfmt crates/core_arch/src/loongarch64/lsx/tests.rs
```

LASX:
```
# Generate bindings
OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasxintrin.h
OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec
# Generate tests
OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec test
loongarch64-unknown-linux-gnu-gcc -static -o lasx crates/stdarch-gen-loongarch/lasx.c -mlasx
qemu-loongarch64 ./lasx > crates/core_arch/src/loongarch64/lasx/tests.rs
rustfmt crates/core_arch/src/loongarch64/lasx/tests.rs
```
Loading

0 comments on commit 8668256

Please sign in to comment.