Add intrinsic code generator for LoongArch

Co-authored-by: WANG Rui <wangrui@loongson.cn>
This commit is contained in:
ZHAI Xiang 2024-02-21 21:36:30 +08:00 committed by Amanieu d'Antras
parent 6ecbc8ebfb
commit a66ae3ec9e
5 changed files with 1572 additions and 1 deletions

View File

@ -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/*

View File

@ -5,6 +5,7 @@ members = [
"crates/core_arch",
"crates/std_detect",
"crates/stdarch-gen-arm",
"crates/stdarch-gen-loongarch",
"crates/intrinsic-test",
"examples/"
]

View File

@ -0,0 +1,10 @@
[package]
name = "stdarch-gen-loongarch"
version = "0.1.0"
authors = ["ZHAI Xiang <zhaixiang@loongson.cn>", "WANG Rui <wangrui@loongson.cn>"]
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "0.8.5"

View File

@ -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
```

File diff suppressed because it is too large Load Diff