Home | History | Annotate | Download | only in arm
      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