add vlang binding (#67)
This commit is contained in:
parent
00eef8352f
commit
b42485d56e
38
README.md
38
README.md
@ -331,6 +331,44 @@ main = do
|
|||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
### ruapu with Vlang
|
||||||
|
|
||||||
|
<table>
|
||||||
|
|
||||||
|
|
||||||
|
<tr><td>
|
||||||
|
|
||||||
|
Compile ruapu library
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cd vlang
|
||||||
|
v .
|
||||||
|
```
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
Use ruapu in Vlang
|
||||||
|
|
||||||
|
```go
|
||||||
|
module main
|
||||||
|
|
||||||
|
import ruapu
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
ruapu.ruapu_init()
|
||||||
|
mut avx2_status := ruapu.ruapu_supports('avx2')
|
||||||
|
if avx2_status {
|
||||||
|
println('avx2: ' + avx2_status.str())
|
||||||
|
}
|
||||||
|
|
||||||
|
println(ruapu.ruapu_rua())
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Github-hosted runner result (Linux)</summary>
|
<summary>Github-hosted runner result (Linux)</summary>
|
||||||
|
|
||||||
|
13
vlang/ruapu.v
Normal file
13
vlang/ruapu.v
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
module main
|
||||||
|
|
||||||
|
import ruapu
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
ruapu.ruapu_init()
|
||||||
|
mut avx2_status := ruapu.ruapu_supports('avx2')
|
||||||
|
if avx2_status {
|
||||||
|
println('avx2: ' + avx2_status.str())
|
||||||
|
}
|
||||||
|
|
||||||
|
println(ruapu.ruapu_rua())
|
||||||
|
}
|
33
vlang/ruapu/wrapper.c.v
Normal file
33
vlang/ruapu/wrapper.c.v
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
module ruapu
|
||||||
|
|
||||||
|
#flag -I @VMODROOT/../
|
||||||
|
#flag -D RUAPU_IMPLEMENTATION
|
||||||
|
#include "ruapu.h"
|
||||||
|
|
||||||
|
fn C.ruapu_init()
|
||||||
|
|
||||||
|
fn C.ruapu_supports(&char) int
|
||||||
|
|
||||||
|
fn C.ruapu_rua() &&char
|
||||||
|
|
||||||
|
pub fn ruapu_init() {
|
||||||
|
C.ruapu_init()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn ruapu_supports(isa string) bool {
|
||||||
|
return C.ruapu_supports(unsafe { isa.str }) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn ruapu_rua() []string {
|
||||||
|
mut cstr_array := C.ruapu_rua()
|
||||||
|
mut v_strings := []string{}
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
for i := 0; cstr_array[i] != 0; i++ {
|
||||||
|
str := cstring_to_vstring(cstr_array[i])
|
||||||
|
v_strings << str
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return v_strings
|
||||||
|
}
|
5
vlang/v.mod
Normal file
5
vlang/v.mod
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Module {
|
||||||
|
name: 'ruapu',
|
||||||
|
description: 'Detect CPU ISA features with single-file.',
|
||||||
|
dependencies: []
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user