Compare commits
	
		
			No commits in common. "00de7ebc6ad82f74dbb2f1c394845580f394de4d" and "10b02b3755c5eabf0cf45458c34b0ceef35310db" have entirely different histories.
		
	
	
		
			00de7ebc6a
			...
			10b02b3755
		
	
		
							
								
								
									
										9
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -191,3 +191,12 @@ jobs: | ||||
|       run: | | ||||
|         docker run -u root --rm -v $(pwd):/${{ github.workspace }} -w ${{ github.workspace }} --platform linux/${{ matrix.arch }} debian:unstable-slim \ | ||||
|           /bin/bash -c "apt update && apt install -y gcc libc6-dev && gcc main.c -o ruapu && ./ruapu" | ||||
| 
 | ||||
|   macos-flyci: | ||||
|     runs-on: flyci-macos-14-xlarge-m2 | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|     - name: build-test | ||||
|       run: | | ||||
|         clang main.c -o ruapu | ||||
|         ./ruapu | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/pypi.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/pypi.yml
									
									
									
									
										vendored
									
									
								
							| @ -23,7 +23,7 @@ jobs: | ||||
|           platforms: all | ||||
| 
 | ||||
|       - name: cibuildwheel | ||||
|         uses: pypa/cibuildwheel@v2.20.0 | ||||
|         uses: pypa/cibuildwheel@v2.18.0 | ||||
|         env: | ||||
|           CIBW_ARCHS_LINUX: "x86_64 i686 aarch64 ppc64le s390x" | ||||
|           CIBW_ARCHS_MACOS: "x86_64 arm64 universal2" | ||||
|  | ||||
							
								
								
									
										50
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								README.md
									
									
									
									
									
								
							| @ -62,14 +62,14 @@ _`fma4` on zen1, ISA in hypervisor, etc._ | ||||
| 
 | ||||
| |CPU|ISA| | ||||
| |:---:|---| | ||||
| |x86|`mmx` `sse` `sse2` `sse3` `ssse3` `sse41` `sse42` `sse4a` `xop` `avx` `f16c` `fma` `fma4` `avx2` `avx512f` `avx512bw` `avx512cd` `avx512dq` `avx512vl` `avx512vnni` `avx512bf16` `avx512ifma` `avx512vbmi` `avx512vbmi2` `avx512fp16` `avx512er` `avx5124fmaps` `avx5124vnniw` `avxvnni` `avxvnniint8` `avxvnniint16` `avxifma` `amxfp16` `amxbf16` `amxint8` `amxtile` `bmi1` `bmi2` `gfni` `aesni` `vaes` `sha` `rdrand` `rdseed` `tsx`| | ||||
| |x86|`mmx` `sse` `sse2` `sse3` `ssse3` `sse41` `sse42` `sse4a` `xop` `avx` `f16c` `fma` `fma4` `avx2` `avx512f` `avx512bw` `avx512cd` `avx512dq` `avx512vl` `avx512vnni` `avx512bf16` `avx512ifma` `avx512vbmi` `avx512vbmi2` `avx512fp16` `avx512er` `avx5124fmaps` `avx5124vnniw` `avxvnni` `avxvnniint8` `avxvnniint16` `avxifma` `amxfp16` `amxbf16` `amxint8` `amxtile`| | ||||
| |arm|`half` `edsp` `neon` `vfpv4` `idiv`| | ||||
| |aarch64|`neon` `vfpv4` `lse` `cpuid` `asimdrdm` `asimdhp` `asimddp` `asimdfhm` `bf16` `i8mm` `frint` `jscvt` `fcma` `mte` `mte2` `sve` `sve2` `svebf16` `svei8mm` `svef32mm` `svef64mm` `sme` `smef16f16` `smef64f64` `smei64i64` `pmull` `crc32` `aes` `sha1` `sha2` `sha3` `sha512` `sm3` `sm4` `svepmull` `svebitperm` `sveaes` `svesha3` `svesm4` `amx`| | ||||
| |mips|`msa` `mmi` `sx` `asx` `msa2` `crypto`| | ||||
| |powerpc|`vsx`| | ||||
| |s390x|`zvector`| | ||||
| |loongarch|`lsx` `lasx`| | ||||
| |risc-v|`i` `m` `a` `f` `d` `c` `v` `zba` `zbb` `zbc` `zbs` `zbkb` `zbkc` `zbkx` `zcb` `zfa` `zfbfmin` `zfh` `zfhmin` `zicond` `zicsr` `zifencei` `zmmul` `zvbb` `zvbc` `zvfh` `zvfhmin` `zvfbfmin` `zvfbfwma` `zvkb` `zvl32b` `zvl64b` `zvl128b` `zvl256b` `zvl512b` `zvl1024b` `xtheadba` `xtheadbb` `xtheadbs` `xtheadcondmov` `xtheadfmemidx` `xtheadfmv` `xtheadmac` `xtheadmemidx` `xtheadmempair` `xtheadsync` `xtheadvdot` `spacemitvmadot` `spacemitvmadotn` `spacemitvfmadot`| | ||||
| |risc-v|`i` `m` `a` `f` `d` `c` `v` `zba` `zbb` `zbc` `zbs` `zbkb` `zbkc` `zbkx` `zfa` `zfbfmin` `zfh` `zfhmin` `zicond` `zicsr` `zifencei` `zmmul` `zvbb` `zvbc` `zvfh` `zvfhmin` `zvfbfmin` `zvfbfwma` `zvkb` `zvl32b` `zvl64b` `zvl128b` `zvl256b` `zvl512b` `zvl1024b` `xtheadba` `xtheadbb` `xtheadbs` `xtheadcondmov` `xtheadfmemidx` `xtheadfmv` `xtheadmac` `xtheadmemidx` `xtheadmempair` `xtheadsync` `xtheadvdot`| | ||||
| |openrisc| `orbis32` `orbis64` `orfpx32` `orfpx64` `orvdx64` | | ||||
| 
 | ||||
| ## Let's ruapu | ||||
| @ -495,52 +495,6 @@ class Example { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| </td></tr> | ||||
| </table> | ||||
| 
 | ||||
| ### ruapu with cangjie | ||||
| 
 | ||||
| <table> | ||||
| 
 | ||||
| <tr><td> | ||||
| 
 | ||||
| Compile ruapu library | ||||
| 
 | ||||
| ```bash | ||||
| cd cangjie | ||||
| cd c-src | ||||
| cmake . | ||||
| make | ||||
| ``` | ||||
| run example | ||||
| ```bash | ||||
| cd cangjie | ||||
| cjpm run | ||||
| ``` | ||||
| or compile example | ||||
| ```bash | ||||
| cd cangjie | ||||
| cjpm build | ||||
| ./target/release/bin/main | ||||
| ``` | ||||
| 
 | ||||
| </td> | ||||
| <td> | ||||
| Use ruapu in cangjie | ||||
| 
 | ||||
| ```swift | ||||
| import ruapu.* | ||||
| main(): Int64 { | ||||
|     ruapu_init() | ||||
|     let neon_supported = ruapu_supports("neon") | ||||
|     println("supports neon: ${neon_supported}")  | ||||
|     let d = ruapu_rua() | ||||
|     for (i in d) { | ||||
|         println(i) | ||||
|     } | ||||
|     return 0 | ||||
| } | ||||
| ``` | ||||
| </td></tr> | ||||
| </table> | ||||
| 
 | ||||
|  | ||||
| @ -1,14 +0,0 @@ | ||||
| ## ruapu cangjie | ||||
| 
 | ||||
| 当前代码仓颉版本: `0.51.4` | ||||
| 
 | ||||
| > 仓颉目前处于内测阶段,不保证该代码在更新的仓颉编译器版本中可用 | ||||
| 
 | ||||
| ```bash | ||||
| cd cangjie | ||||
| cd c-src | ||||
| cmake . | ||||
| make | ||||
| cd .. | ||||
| cjpm run | ||||
| ``` | ||||
| @ -1,10 +0,0 @@ | ||||
| cmake_minimum_required(VERSION 3.5) | ||||
| 
 | ||||
| project(ruapu) | ||||
| 
 | ||||
| include_directories(../../) | ||||
| 
 | ||||
| 
 | ||||
| add_library(ruapu  | ||||
|     ruapu-binding.c | ||||
| ) | ||||
| @ -1,14 +0,0 @@ | ||||
| #define RUAPU_IMPLEMENTATION | ||||
| #include "ruapu.h" | ||||
| 
 | ||||
| void ruapu_init_c() { | ||||
|     ruapu_init(); | ||||
| } | ||||
| 
 | ||||
| int ruapu_supports_c(const char* isa) { | ||||
|     return ruapu_supports(isa); | ||||
| } | ||||
| 
 | ||||
| const char* const* ruapu_rua_c() { | ||||
|     return ruapu_rua(); | ||||
| } | ||||
| @ -1,16 +0,0 @@ | ||||
| [dependencies] | ||||
| 
 | ||||
| [package] | ||||
|   cjc-version = "0.51.4" | ||||
|   compile-option = "" | ||||
|   description = "ruapu" | ||||
|   link-option = "" | ||||
|   name = "ruapu_cangjie" | ||||
|   output-type = "executable" | ||||
|   src-dir = "" | ||||
|   target-dir = "" | ||||
|   version = "1.0.0" | ||||
|   package-configuration = {} | ||||
| 
 | ||||
| [ffi.c] | ||||
|   ruapu = { path = "./c-src/" } | ||||
| @ -1,11 +0,0 @@ | ||||
| import ruapu.* | ||||
| main(): Int64 { | ||||
|     ruapu_init() | ||||
|     let neon_supported = ruapu_supports("neon") | ||||
|     println("supports neon: ${neon_supported}")  | ||||
|     let d = ruapu_rua() | ||||
|     for (i in d) { | ||||
|         println(i) | ||||
|     } | ||||
|     return 0 | ||||
| } | ||||
| @ -1,30 +0,0 @@ | ||||
| package ruapu | ||||
| 
 | ||||
| from std import collection.ArrayList | ||||
| 
 | ||||
| foreign func ruapu_init_c(): Unit | ||||
| 
 | ||||
| foreign func ruapu_supports_c(s: CString): Int32 | ||||
| 
 | ||||
| foreign func ruapu_rua_c(): CPointer<CString> | ||||
| 
 | ||||
| public func ruapu_init(): Unit { | ||||
|     unsafe{ ruapu_init_c() } | ||||
| } | ||||
| 
 | ||||
| public func ruapu_supports(isa: String): Bool { | ||||
|     var isa_c = unsafe { LibC.mallocCString(isa) } | ||||
|     let result_c = unsafe { ruapu_supports_c(isa_c) } | ||||
|     return result_c == 1 | ||||
| } | ||||
| 
 | ||||
| public func ruapu_rua(): Array<String> { | ||||
|     var ruaList = ArrayList<String>() | ||||
|     var sp = unsafe { ruapu_rua_c() } | ||||
|     while(!unsafe { sp.read().isNull() }) { | ||||
|         let temp = unsafe { sp.read() } | ||||
|         ruaList.append(temp.toString()) | ||||
|         sp = unsafe { sp + 1 } | ||||
|     } | ||||
|     return Array<String>(ruaList) | ||||
| } | ||||
| @ -1,321 +0,0 @@ | ||||
| { | ||||
|   "configVersion": 2, | ||||
|   "packages": [ | ||||
|     { | ||||
|       "name": "_fe_analyzer_shared", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-73.0.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "_macros", | ||||
|       "rootUri": "file:///opt/homebrew/Cellar/dart/3.5.3/libexec/pkg/_macros", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "analyzer", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/analyzer-6.8.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "args", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/args-2.5.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "async", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/async-2.11.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.18" | ||||
|     }, | ||||
|     { | ||||
|       "name": "boolean_selector", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.17" | ||||
|     }, | ||||
|     { | ||||
|       "name": "collection", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/collection-1.19.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "convert", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/convert-3.1.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.18" | ||||
|     }, | ||||
|     { | ||||
|       "name": "coverage", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/coverage-1.9.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "crypto", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/crypto-3.0.5", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "ffi", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/ffi-1.2.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "file", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/file-7.0.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "frontend_server_client", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/frontend_server_client-4.0.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "glob", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/glob-2.1.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.19" | ||||
|     }, | ||||
|     { | ||||
|       "name": "http_multi_server", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/http_multi_server-3.2.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "http_parser", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/http_parser-4.1.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "io", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/io-1.0.4", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "js", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/js-0.7.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.1" | ||||
|     }, | ||||
|     { | ||||
|       "name": "lints", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/lints-4.0.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.1" | ||||
|     }, | ||||
|     { | ||||
|       "name": "logging", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/logging-1.2.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.19" | ||||
|     }, | ||||
|     { | ||||
|       "name": "macros", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/macros-0.1.2-main.4", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "matcher", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/matcher-0.12.16+1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "meta", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/meta-1.16.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "mime", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/mime-2.0.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.2" | ||||
|     }, | ||||
|     { | ||||
|       "name": "node_preamble", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/node_preamble-2.0.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "package_config", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/package_config-2.1.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "path", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/path-1.9.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "pool", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/pool-1.5.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "pub_semver", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/pub_semver-2.1.4", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.17" | ||||
|     }, | ||||
|     { | ||||
|       "name": "shelf", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf-1.4.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "shelf_packages_handler", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf_packages_handler-3.0.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.17" | ||||
|     }, | ||||
|     { | ||||
|       "name": "shelf_static", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf_static-1.1.3", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "shelf_web_socket", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/shelf_web_socket-2.0.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "source_map_stack_trace", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "source_maps", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/source_maps-0.10.12", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.18" | ||||
|     }, | ||||
|     { | ||||
|       "name": "source_span", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/source_span-1.10.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.18" | ||||
|     }, | ||||
|     { | ||||
|       "name": "stack_trace", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/stack_trace-1.12.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "stream_channel", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/stream_channel-2.1.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.19" | ||||
|     }, | ||||
|     { | ||||
|       "name": "string_scanner", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/string_scanner-1.3.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.1" | ||||
|     }, | ||||
|     { | ||||
|       "name": "term_glyph", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/term_glyph-1.2.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.12" | ||||
|     }, | ||||
|     { | ||||
|       "name": "test", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/test-1.25.8", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "test_api", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/test_api-0.7.3", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "test_core", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/test_core-0.6.5", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "typed_data", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/typed_data-1.3.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.17" | ||||
|     }, | ||||
|     { | ||||
|       "name": "vm_service", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/vm_service-14.3.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "watcher", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/watcher-1.1.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "web", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/web-1.1.0", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     }, | ||||
|     { | ||||
|       "name": "web_socket", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/web_socket-0.1.6", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "web_socket_channel", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/web_socket_channel-3.0.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.3" | ||||
|     }, | ||||
|     { | ||||
|       "name": "webkit_inspection_protocol", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/webkit_inspection_protocol-1.2.1", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.0" | ||||
|     }, | ||||
|     { | ||||
|       "name": "yaml", | ||||
|       "rootUri": "file:///Users/darren/.pub-cache/hosted/pub.dev/yaml-3.1.2", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "2.19" | ||||
|     }, | ||||
|     { | ||||
|       "name": "dartHello", | ||||
|       "rootUri": "../", | ||||
|       "packageUri": "lib/", | ||||
|       "languageVersion": "3.4" | ||||
|     } | ||||
|   ], | ||||
|   "generated": "2024-10-14T02:37:48.199003Z", | ||||
|   "generator": "pub", | ||||
|   "generatorVersion": "3.5.3", | ||||
|   "pubCache": "file:///Users/darren/.pub-cache" | ||||
| } | ||||
| @ -1,22 +0,0 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| PROJECT_DIR=$(pwd) | ||||
| RUAPU_API_DIR="$PROJECT_DIR/ruapu-api" | ||||
| BUILD_DIR="$PROJECT_DIR/build" | ||||
| 
 | ||||
| mkdir -p "$BUILD_DIR" | ||||
| cd "$BUILD_DIR" || exit | ||||
| 
 | ||||
| cmake "$RUAPU_API_DIR" | ||||
| make | ||||
| 
 | ||||
| if [ $? -ne 0 ]; then | ||||
|   echo "编译失败,请检查错误信息。" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| cd "$PROJECT_DIR" || exit | ||||
| 
 | ||||
| dart pub get | ||||
| 
 | ||||
| dart run main.dart | ||||
| @ -1,33 +0,0 @@ | ||||
| import 'dart:io'; | ||||
| import 'ruapu_api.dart'; | ||||
| import 'package:path/path.dart' as path; | ||||
| 
 | ||||
| void main() { | ||||
|   var libraryPath = | ||||
|   path.join(Directory.current.path, 'build', 'libruapu.so'); | ||||
| 
 | ||||
|   if (Platform.isMacOS) { | ||||
|     libraryPath = | ||||
|         path.join(Directory.current.path, 'build', 'libruapu.dylib'); | ||||
|   } | ||||
| 
 | ||||
|   if (Platform.isWindows) { | ||||
|     libraryPath = path.join( | ||||
|         Directory.current.path, 'build', 'Debug', 'hello.dll'); | ||||
|   } | ||||
| 
 | ||||
|   Ruapu api = Ruapu(libraryPath); | ||||
| 
 | ||||
|   api.init(); | ||||
| 
 | ||||
|   List<String> isas = api.getRuapuISA(); | ||||
|   print("This CPU Support:"); | ||||
|   for (String isa in isas) { | ||||
|     print(isa); | ||||
|   } | ||||
|   print("================="); | ||||
| 
 | ||||
|   String isaToCheck = 'aes'; | ||||
|   bool isSupported = api.supportsISA(isaToCheck); | ||||
|   print('Does the system support $isaToCheck? $isSupported'); | ||||
| } | ||||
| @ -1,410 +0,0 @@ | ||||
| # Generated by pub | ||||
| # See https://dart.dev/tools/pub/glossary#lockfile | ||||
| packages: | ||||
|   _fe_analyzer_shared: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: _fe_analyzer_shared | ||||
|       sha256: "45cfa8471b89fb6643fe9bf51bd7931a76b8f5ec2d65de4fb176dba8d4f22c77" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "73.0.0" | ||||
|   _macros: | ||||
|     dependency: transitive | ||||
|     description: dart | ||||
|     source: sdk | ||||
|     version: "0.3.2" | ||||
|   analyzer: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: analyzer | ||||
|       sha256: "4959fec185fe70cce007c57e9ab6983101dbe593d2bf8bbfb4453aaec0cf470a" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "6.8.0" | ||||
|   args: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: args | ||||
|       sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.5.0" | ||||
|   async: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: async | ||||
|       sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.11.0" | ||||
|   boolean_selector: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: boolean_selector | ||||
|       sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.1" | ||||
|   collection: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: collection | ||||
|       sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.19.0" | ||||
|   convert: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: convert | ||||
|       sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.1.1" | ||||
|   coverage: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: coverage | ||||
|       sha256: c1fb2dce3c0085f39dc72668e85f8e0210ec7de05345821ff58530567df345a5 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.9.2" | ||||
|   crypto: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: crypto | ||||
|       sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.5" | ||||
|   ffi: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: ffi | ||||
|       sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.1" | ||||
|   file: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: file | ||||
|       sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "7.0.1" | ||||
|   frontend_server_client: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: frontend_server_client | ||||
|       sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.0.0" | ||||
|   glob: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: glob | ||||
|       sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.2" | ||||
|   http_multi_server: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: http_multi_server | ||||
|       sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.2.1" | ||||
|   http_parser: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: http_parser | ||||
|       sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.1.0" | ||||
|   io: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: io | ||||
|       sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.0.4" | ||||
|   js: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: js | ||||
|       sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.7.1" | ||||
|   lints: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
|       name: lints | ||||
|       sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "4.0.0" | ||||
|   logging: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: logging | ||||
|       sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.0" | ||||
|   macros: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: macros | ||||
|       sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.2-main.4" | ||||
|   matcher: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: matcher | ||||
|       sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.12.16+1" | ||||
|   meta: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: meta | ||||
|       sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.16.0" | ||||
|   mime: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: mime | ||||
|       sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.0" | ||||
|   node_preamble: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: node_preamble | ||||
|       sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.2" | ||||
|   package_config: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: package_config | ||||
|       sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.0" | ||||
|   path: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: path | ||||
|       sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.9.0" | ||||
|   pool: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: pool | ||||
|       sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.5.1" | ||||
|   pub_semver: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: pub_semver | ||||
|       sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.4" | ||||
|   shelf: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shelf | ||||
|       sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.4.2" | ||||
|   shelf_packages_handler: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shelf_packages_handler | ||||
|       sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.2" | ||||
|   shelf_static: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shelf_static | ||||
|       sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.3" | ||||
|   shelf_web_socket: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: shelf_web_socket | ||||
|       sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.0.0" | ||||
|   source_map_stack_trace: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: source_map_stack_trace | ||||
|       sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.2" | ||||
|   source_maps: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: source_maps | ||||
|       sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.10.12" | ||||
|   source_span: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: source_span | ||||
|       sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.10.0" | ||||
|   stack_trace: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: stack_trace | ||||
|       sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.12.0" | ||||
|   stream_channel: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: stream_channel | ||||
|       sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "2.1.2" | ||||
|   string_scanner: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: string_scanner | ||||
|       sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.3.0" | ||||
|   term_glyph: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: term_glyph | ||||
|       sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.1" | ||||
|   test: | ||||
|     dependency: "direct dev" | ||||
|     description: | ||||
|       name: test | ||||
|       sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.25.8" | ||||
|   test_api: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: test_api | ||||
|       sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.7.3" | ||||
|   test_core: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: test_core | ||||
|       sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.6.5" | ||||
|   typed_data: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: typed_data | ||||
|       sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.3.2" | ||||
|   vm_service: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: vm_service | ||||
|       sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "14.3.0" | ||||
|   watcher: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: watcher | ||||
|       sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.0" | ||||
|   web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: web | ||||
|       sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.1.0" | ||||
|   web_socket: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: web_socket | ||||
|       sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "0.1.6" | ||||
|   web_socket_channel: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: web_socket_channel | ||||
|       sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.0.1" | ||||
|   webkit_inspection_protocol: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: webkit_inspection_protocol | ||||
|       sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "1.2.1" | ||||
|   yaml: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: yaml | ||||
|       sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" | ||||
|       url: "https://pub.dev" | ||||
|     source: hosted | ||||
|     version: "3.1.2" | ||||
| sdks: | ||||
|   dart: ">=3.4.0 <4.0.0" | ||||
| @ -1,18 +0,0 @@ | ||||
| name: dartHello | ||||
| version: 0.0.1 | ||||
| description: >- | ||||
|   A super simple example of calling C code from Dart with FFI | ||||
| 
 | ||||
| # This example isn't intended for publishing on pub.dev. | ||||
| publish_to: none | ||||
| 
 | ||||
| environment: | ||||
|   sdk: ^3.4.0 | ||||
| 
 | ||||
| dependencies: | ||||
|   path: ^1.9.0 | ||||
|   ffi: ^1.0.0 | ||||
| 
 | ||||
| dev_dependencies: | ||||
|   lints: ^4.0.0 | ||||
|   test: ^1.25.0 | ||||
| @ -1,12 +0,0 @@ | ||||
| cmake_minimum_required(VERSION 3.7 FATAL_ERROR) | ||||
| project(ruapu_library VERSION 1.0.0 LANGUAGES C) | ||||
| add_library(ruapu_library SHARED ruapu.c ruapu.def) | ||||
| include_directories(../../) | ||||
| 
 | ||||
| set_target_properties(ruapu_library PROPERTIES | ||||
|     PUBLIC_HEADER ../../ruapu.h | ||||
|     VERSION ${PROJECT_VERSION} | ||||
|     SOVERSION 1 | ||||
|     OUTPUT_NAME "ruapu" | ||||
|     XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Hex_Identity_ID_Goes_Here" | ||||
| ) | ||||
| @ -1,3 +0,0 @@ | ||||
| #define RUAPU_IMPLEMENTATION | ||||
| #include "ruapu.h" | ||||
| 
 | ||||
| @ -1,5 +0,0 @@ | ||||
| LIBRARY     ruapu | ||||
| EXPORTS | ||||
|    ruapu_rua | ||||
|    ruapu_supports | ||||
|    ruapu_init | ||||
| @ -1,63 +0,0 @@ | ||||
| import 'dart:ffi'; // 导入 dart:ffi 库 | ||||
| import 'package:ffi/ffi.dart'; | ||||
| 
 | ||||
| 
 | ||||
| typedef RuapuRUA_C = Pointer<Pointer<Utf8>> Function(); | ||||
| typedef RuapuRUA_Dart = Pointer<Pointer<Utf8>> Function(); | ||||
| 
 | ||||
| typedef RuapuInit_C = Void Function(); | ||||
| typedef RuapuInit_Dart = void Function(); | ||||
| 
 | ||||
| typedef RuapuSupports_C = Int32 Function(Pointer<Utf8>); | ||||
| typedef RuapuSupports_Dart = int Function(Pointer<Utf8>); | ||||
| 
 | ||||
| class Ruapu { | ||||
|   final DynamicLibrary _nativeLib; | ||||
| 
 | ||||
|   Ruapu(String libraryPath) : _nativeLib = DynamicLibrary.open(libraryPath); | ||||
| 
 | ||||
|   /// 初始化 | ||||
|   void init() { | ||||
|     final RuapuInit_Dart ruapu_init = _nativeLib | ||||
|         .lookup<NativeFunction<RuapuInit_C>>('ruapu_init') | ||||
|         .asFunction(); | ||||
|     ruapu_init(); | ||||
|   } | ||||
| 
 | ||||
|   /// 获取支持的ISA列表 | ||||
|   List<String> getRuapuISA() { | ||||
|     final RuapuRUA_Dart ruapu_rua = _nativeLib | ||||
|         .lookup<NativeFunction<RuapuRUA_C>>('ruapu_rua') | ||||
|         .asFunction(); | ||||
| 
 | ||||
|     Pointer<Pointer<Utf8>> result = ruapu_rua(); | ||||
| 
 | ||||
|     List<String> isas = []; | ||||
|     int index = 0; | ||||
|     while (true) { | ||||
|       Pointer<Utf8> strPtr = result.elementAt(index).value; | ||||
|       if (strPtr.address == 0) break; // 结束标志 | ||||
|       String str = strPtr.toDartString(); | ||||
|       isas.add(str); | ||||
|       index++; | ||||
|     } | ||||
| 
 | ||||
|     return isas; | ||||
|   } | ||||
| 
 | ||||
|   /// 检查是否支持某个ISA | ||||
|   bool supportsISA(String isa) { | ||||
|     final Pointer<Utf8> cIsa = isa.toNativeUtf8(); | ||||
| 
 | ||||
|     final RuapuSupports_Dart ruapu_supports = _nativeLib | ||||
|         .lookup<NativeFunction<RuapuSupports_C>>('ruapu_supports') | ||||
|         .asFunction(); | ||||
| 
 | ||||
|     int result = ruapu_supports(cIsa); | ||||
| 
 | ||||
|     malloc.free(cIsa); | ||||
| 
 | ||||
|     return result != 0; | ||||
|   } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										14
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								main.c
									
									
									
									
									
								
							| @ -52,15 +52,6 @@ int main() | ||||
|     PRINT_ISA_SUPPORT(amxbf16) | ||||
|     PRINT_ISA_SUPPORT(amxint8) | ||||
|     PRINT_ISA_SUPPORT(amxtile) | ||||
|     PRINT_ISA_SUPPORT(bmi1) | ||||
|     PRINT_ISA_SUPPORT(bmi2) | ||||
|     PRINT_ISA_SUPPORT(gfni) | ||||
|     PRINT_ISA_SUPPORT(aesni) | ||||
|     PRINT_ISA_SUPPORT(vaes) | ||||
|     PRINT_ISA_SUPPORT(sha) | ||||
|     PRINT_ISA_SUPPORT(rdrand) | ||||
|     PRINT_ISA_SUPPORT(rdseed) | ||||
|     PRINT_ISA_SUPPORT(tsx) | ||||
| 
 | ||||
| #elif __aarch64__ || defined(_M_ARM64) | ||||
|     PRINT_ISA_SUPPORT(neon) | ||||
| @ -144,7 +135,6 @@ int main() | ||||
|     PRINT_ISA_SUPPORT(zbkb) | ||||
|     PRINT_ISA_SUPPORT(zbkc) | ||||
|     PRINT_ISA_SUPPORT(zbkx) | ||||
|     PRINT_ISA_SUPPORT(zcb) | ||||
|     PRINT_ISA_SUPPORT(zfa) | ||||
|     PRINT_ISA_SUPPORT(zfbfmin) | ||||
|     PRINT_ISA_SUPPORT(zfh) | ||||
| @ -179,10 +169,6 @@ int main() | ||||
|     PRINT_ISA_SUPPORT(xtheadsync) | ||||
|     PRINT_ISA_SUPPORT(xtheadvdot) | ||||
| 
 | ||||
|     PRINT_ISA_SUPPORT(spacemitvmadot) | ||||
|     PRINT_ISA_SUPPORT(spacemitvmadotn) | ||||
|     PRINT_ISA_SUPPORT(spacemitvfmadot) | ||||
| 
 | ||||
| #elif __openrisc__ | ||||
|     PRINT_ISA_SUPPORT(orbis32) | ||||
|     PRINT_ISA_SUPPORT(orbis64) | ||||
|  | ||||
							
								
								
									
										42
									
								
								ruapu.h
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								ruapu.h
									
									
									
									
									
								
							| @ -82,29 +82,28 @@ static int ruapu_detect_isa(ruapu_some_inst some_inst) | ||||
| #include <signal.h> | ||||
| #include <setjmp.h> | ||||
| 
 | ||||
| static int g_ruapu_sig_caught = 0; | ||||
| static int g_ruapu_sigill_caught = 0; | ||||
| static sigjmp_buf g_ruapu_jmpbuf; | ||||
| 
 | ||||
| static void ruapu_catch_sig(int signo, siginfo_t* si, void* data) | ||||
| static void ruapu_catch_sigill(int signo, siginfo_t* si, void* data) | ||||
| { | ||||
|     (void)signo; | ||||
|     (void)si; | ||||
|     (void)data; | ||||
| 
 | ||||
|     g_ruapu_sig_caught = 1; | ||||
|     g_ruapu_sigill_caught = 1; | ||||
|     siglongjmp(g_ruapu_jmpbuf, -1); | ||||
| } | ||||
| 
 | ||||
| static int ruapu_detect_isa(ruapu_some_inst some_inst) | ||||
| { | ||||
|     g_ruapu_sig_caught = 0; | ||||
|     g_ruapu_sigill_caught = 0; | ||||
| 
 | ||||
|     struct sigaction sa = { 0 }; | ||||
|     struct sigaction old_sa; | ||||
|     sa.sa_flags = SA_ONSTACK | SA_RESTART | SA_SIGINFO; | ||||
|     sa.sa_sigaction = ruapu_catch_sig; | ||||
|     sa.sa_sigaction = ruapu_catch_sigill; | ||||
|     sigaction(SIGILL, &sa, &old_sa); | ||||
|     sigaction(SIGSEGV, &sa, &old_sa); | ||||
| 
 | ||||
|     if (sigsetjmp(g_ruapu_jmpbuf, 1) == 0) | ||||
|     { | ||||
| @ -112,9 +111,8 @@ static int ruapu_detect_isa(ruapu_some_inst some_inst) | ||||
|     } | ||||
| 
 | ||||
|     sigaction(SIGILL, &old_sa, NULL); | ||||
|     sigaction(SIGSEGV, &old_sa, NULL); | ||||
| 
 | ||||
|     return g_ruapu_sig_caught ? 0 : 1; | ||||
|     return g_ruapu_sigill_caught ? 0 : 1; | ||||
| } | ||||
| 
 | ||||
| #elif defined __SYTERKIT__ | ||||
| @ -225,15 +223,6 @@ RUAPU_INSTCODE(amxfp16, 0xc4, 0xe2, 0x7b, 0x5c, 0xd1) // tdpfp16ps %tmm0, %tmm1, | ||||
| RUAPU_INSTCODE(amxbf16, 0xc4, 0xe2, 0x7a, 0x5c, 0xd1) // tdpbf16ps %tmm0, %tmm1, %tmm2
 | ||||
| RUAPU_INSTCODE(amxint8, 0xc4, 0xe2, 0x7b, 0x5e, 0xd1) // tdpbssd %tmm0, %tmm1, %tmm2
 | ||||
| RUAPU_INSTCODE(amxtile, 0xc4, 0xe2, 0x7a, 0x49, 0xc0) // tilezero %tmm0
 | ||||
| RUAPU_INSTCODE(bmi1, 0xc4, 0xe2, 0x78, 0xf2, 0xc0) // andn eax,eax,eax
 | ||||
| RUAPU_INSTCODE(bmi2, 0xc4, 0xe2, 0x7b, 0xf6, 0xc0) // mulx eax,eax,eax
 | ||||
| RUAPU_INSTCODE(gfni, 0x66, 0x0f, 0x38, 0xcf, 0xc0) // gf2p8mulb xmm0,xmm0
 | ||||
| RUAPU_INSTCODE(aesni, 0x66, 0x0f, 0x38, 0xdc, 0xc0) // aesenc xmm0,xmm0
 | ||||
| RUAPU_INSTCODE(vaes, 0xc4, 0xe2, 0x7d, 0xdc, 0xc0) // vaesenc ymm0,ymm0,ymm0
 | ||||
| RUAPU_INSTCODE(sha, 0x0f, 0x38, 0xc9, 0xc0) // sha1msg1 xmm0,xmm0
 | ||||
| RUAPU_INSTCODE(rdrand, 0x0f, 0xc7, 0xf0) // rdrand eax
 | ||||
| RUAPU_INSTCODE(rdseed, 0x0f, 0xc7, 0xf8) // rdseed eax
 | ||||
| RUAPU_INSTCODE(tsx, 0x0f, 0x01, 0xd6) // xtest
 | ||||
| 
 | ||||
| #elif __aarch64__ || defined(_M_ARM64) | ||||
| RUAPU_INSTCODE(neon, 0x4e20d400) // fadd v0.4s,v0.4s,v0.4s
 | ||||
| @ -325,7 +314,6 @@ RUAPU_INSTCODE(zbs, 0x48a51533) // bclr a0,a0,a0 | ||||
| RUAPU_INSTCODE(zbkb, 0x08a54533) // pack a0,a0,a0
 | ||||
| RUAPU_INSTCODE(zbkc, 0x0aa53533) // clmulh a0,a0,a0
 | ||||
| RUAPU_INSTCODE(zbkx, 0x28a52533) // xperm.n a0,a0,a0
 | ||||
| RUAPU_INSTCODE(zcb, 0x9d759d75) // c.not a0 c.not a0
 | ||||
| RUAPU_INSTCODE(zfa, 0xf0108053) // fli.s ft0, min
 | ||||
| RUAPU_INSTCODE(zfbfmin, 0x44807053) // fcvt.bf16.s ft0,ft0
 | ||||
| RUAPU_INSTCODE(zfh, 0x04007053); // fadd.hs ft0, ft0, ft0
 | ||||
| @ -347,10 +335,6 @@ RUAPU_INSTCODE(xtheadmempair, 0xe0a1450b) // th.lwd a0,a0,(sp),#0,3 | ||||
| RUAPU_INSTCODE(xtheadsync, 0x0180000b) // th.sync
 | ||||
| RUAPU_INSTCODE(xtheadvdot, 0x8000600b) // th.vmaqa.vv v0,v0,v0
 | ||||
| 
 | ||||
| RUAPU_INSTCODE(spacemitvmadot, 0xe200312b) // vmadot v2,v0,v0
 | ||||
| RUAPU_INSTCODE(spacemitvmadotn, 0xe600b12b) // vmadot3 v2,v0,v1 //vmadot2 vmadot1
 | ||||
| RUAPU_INSTCODE(spacemitvfmadot, 0xea00012b) // vfmadot v2,v0,v0
 | ||||
| 
 | ||||
| // RVV 1.0 support
 | ||||
| // unimp (csrrw x0, cycle, x0)
 | ||||
| #define RUAPU_RV_TRAP() asm volatile(".align 2\n.word 0xc0001073") | ||||
| @ -445,15 +429,6 @@ RUAPU_ISAENTRY(amxfp16) | ||||
| RUAPU_ISAENTRY(amxbf16) | ||||
| RUAPU_ISAENTRY(amxint8) | ||||
| RUAPU_ISAENTRY(amxtile) | ||||
| RUAPU_ISAENTRY(bmi1) | ||||
| RUAPU_ISAENTRY(bmi2) | ||||
| RUAPU_ISAENTRY(gfni) | ||||
| RUAPU_ISAENTRY(aesni) | ||||
| RUAPU_ISAENTRY(vaes) | ||||
| RUAPU_ISAENTRY(sha) | ||||
| RUAPU_ISAENTRY(rdrand) | ||||
| RUAPU_ISAENTRY(rdseed) | ||||
| RUAPU_ISAENTRY(tsx) | ||||
| 
 | ||||
| #elif __aarch64__ || defined(_M_ARM64) | ||||
| RUAPU_ISAENTRY(neon) | ||||
| @ -537,7 +512,6 @@ RUAPU_ISAENTRY(zbs) | ||||
| RUAPU_ISAENTRY(zbkb) | ||||
| RUAPU_ISAENTRY(zbkc) | ||||
| RUAPU_ISAENTRY(zbkx) | ||||
| RUAPU_ISAENTRY(zcb) | ||||
| RUAPU_ISAENTRY(zfa) | ||||
| RUAPU_ISAENTRY(zfbfmin) | ||||
| RUAPU_ISAENTRY(zfh) | ||||
| @ -572,10 +546,6 @@ RUAPU_ISAENTRY(xtheadmempair) | ||||
| RUAPU_ISAENTRY(xtheadsync) | ||||
| RUAPU_ISAENTRY(xtheadvdot) | ||||
| 
 | ||||
| RUAPU_ISAENTRY(spacemitvmadot) | ||||
| RUAPU_ISAENTRY(spacemitvmadotn) | ||||
| RUAPU_ISAENTRY(spacemitvfmadot) | ||||
| 
 | ||||
| #elif __openrisc__ | ||||
| RUAPU_ISAENTRY(orbis32) | ||||
| RUAPU_ISAENTRY(orbis64) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user