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
87