Commit | Line | Data |
---|---|---|
9db2f6b4 RL |
1 | .macro f16_sss_arithmetic reg0, reg1, reg2 |
2 | .irp op, vdiv.f16, vfma.f16, vfms.f16, vfnma.f16, vfnms.f16, vmaxnm.f16, vminnm.f16, vmla.f16, vmls.f16, vmul.f16, vnmla.f16, vnmls.f16, vnmul.f16, vsub.f16 | |
3 | \op s\reg0, s\reg1, s\reg2 | |
4 | .endr | |
5 | .endm | |
6 | ||
7 | .macro f16_ss_arithmetic reg0, reg1 | |
8 | .irp op, vabs.f16, vadd.f16, vsqrt.f16, vneg.f16 | |
9 | \op s\reg0, s\reg1 | |
10 | .endr | |
11 | .endm | |
12 | ||
13 | .macro f16_si_cmp reg0, imm | |
14 | .irp op, vcmp.f16, vcmpe.f16 | |
15 | \op s\reg0, \imm | |
16 | .endr | |
17 | .endm | |
18 | ||
19 | .macro f16_ss_cmp reg0, reg1 | |
20 | .irp op, vcmp.f16, vcmpe.f16 | |
21 | \op s\reg0, s\reg1 | |
22 | .endr | |
23 | .endm | |
24 | ||
25 | .macro f16_sss_vsel reg0, reg1, reg2 | |
26 | .irp op, vseleq.f16 vselge.f16, vselvs.f16 | |
27 | \op s\reg0, s\reg1, s\reg2 | |
28 | .endr | |
29 | .endm | |
30 | ||
31 | .macro f16_ss_cvt reg0, reg1 | |
32 | .irp op, vcvt.s32.f16, vcvt.u32.f16, vcvt.f16.s32, vcvt.f16.u32 | |
33 | \op s\reg0, s\reg1 | |
34 | .endr | |
35 | .endm | |
36 | ||
37 | .macro f16_ssi_cvt_imm32 reg0, reg1, imm | |
38 | .irp op, vcvt.f16.s32, vcvt.f16.u32, vcvt.s32.f16, vcvt.u32.f16 | |
39 | \op s\reg0, s\reg1, \imm | |
40 | .endr | |
41 | .endm | |
42 | ||
43 | .macro f16_ss_cvt_amnpr reg0, reg1 | |
44 | .irp op, vcvta.s32.f16, vcvta.u32.f16, vcvtm.s32.f16, vcvtm.u32.f16, vcvtn.s32.f16, vcvtn.u32.f16, vcvtp.s32.f16, vcvtp.u32.f16, vcvtr.u32.f16, vcvtr.s32.f16 | |
45 | \op s\reg0, s\reg1 | |
46 | .endr | |
47 | .endm | |
48 | ||
49 | .macro f16_ss_vrint reg0, reg1 | |
50 | .irp op, vrinta.f16, vrintm.f16, vrintn.f16, vrintp.f16, vrintr.f16, vrintx.f16, vrintz.f16 | |
51 | \op s\reg0, s\reg1 | |
52 | .endr | |
53 | .endm | |
54 | ||
55 | .macro f16_ss_mov reg0, reg1 | |
56 | .irp op, vins.f16, vmovx.f16 | |
57 | \op s\reg0, s\reg1 | |
58 | .endr | |
59 | .endm | |
60 | ||
61 | .text | |
62 | ||
63 | vmov.f16 s0, r1 | |
64 | vmov.f16 r0, s1 | |
65 | vmov.f16 s0, #2.0 | |
66 | label: | |
67 | .word 0xffe | |
68 | vldr.16 s3, label | |
69 | ||
70 | vldr.16 s6, [pc, #-4] | |
71 | vldr.16 s3, [pc, #4] | |
72 | vldr.16 s1, [r0, #4] | |
73 | vldr.16 s2, [r0, #-4] | |
74 | vstr.16 s6 , [r0, #4] | |
75 | vstr.16 s11 , [r0, #-4] | |
76 | ||
77 | f16_sss_arithmetic 5, 13, 24 | |
78 | f16_ss_arithmetic 5, 12 | |
79 | f16_si_cmp 2, #0.0 | |
80 | f16_ss_cmp 5, 13 | |
81 | f16_sss_vsel 5, 13, 23 | |
82 | f16_ss_cvt 3, 8 | |
83 | f16_ssi_cvt_imm32 7, 7, #29 | |
84 | f16_ss_cvt_amnpr 5, 10 | |
85 | f16_ss_vrint 3, 11 | |
86 | f16_ss_mov 5, 9 |