v2 / vlib / v / slow_tests / assembly / asm_test.loongarch64.v
48 lines · 43 sloc · 558 bytes · 6a806bc7ed4e469fc93c01c1ff723832dd9acf0c
Raw
1// vtest build: gcc
2
3asm loongarch64 {
4 move r20, r21
5}
6
7fn test_inline_asm() {
8 a, mut b := 10, 0
9 asm loongarch64 {
10 move r20, a
11 move b, r20
12 ; +r (b)
13 ; r (a)
14 ; r20
15 }
16 assert a == b
17
18 mut c := 0
19 asm loongarch64 {
20 li.w c, 5
21 ; +r (c)
22 }
23 assert c == 5
24
25 d, e, mut f := 10, 2, 0
26 asm loongarch64 {
27 move f, d
28 add.w f, f, e
29 addi.w f, f, 5
30 ; +r (f)
31 ; r (d)
32 r (e)
33 }
34 assert d == 10
35 assert e == 2
36 assert f == 17
37
38 l := 5
39 m := &l
40 asm loongarch64 {
41 li.w r20, 7
42 st.w r20, [m], 0
43 ; ; r (m)
44 ; r20
45 memory
46 }
47 assert l == 7
48}
49