test_fp_half.s 1.71 KB
# test all added instructions for half precision FP data

.section .text
.global test_half

test_half:
		la          a0, half_a
		flh         ft0, 0(a0)
		la          a0, half_y
		fsh         ft0, 0(a0)

		fmv.x.h     t0, ft0                       # move ft1->t0
		fmv.h.x     ft0, t0
		fmv.h       ft0, ft1
		fneg.h      ft0, ft1
		fabs.h      ft0, ft1
		fsgnj.h     ft0, ft1, ft2
		fsgnjn.h    ft0, ft1, ft2
		fsgnjx.h    ft0, ft1, ft2
		fadd.h      ft0, ft1, ft2
		fadd.h      ft0, ft1, ft2,    rtz
		fsub.h      ft0, ft1, ft2
		fsub.h      ft0, ft1, ft2,    rtz
		fmul.h      ft0, ft1, ft2
		fmul.h      ft0, ft1, ft2,    rtz
		fdiv.h      ft0, ft1, ft2
		fdiv.h      ft0, ft1, ft2,    rtz
		fsqrt.h     ft0, ft1
		fsqrt.h     ft0, ft1,     rtz
		fmin.h      ft0, ft1, ft2
		fmax.h      ft0, ft1, ft2
		fmadd.h     ft0, ft1, ft2, ft3
		fmadd.h     ft0, ft1, ft2, ft3,   rtz
		fnmadd.h    ft0, ft1, ft2, ft3
		fnmadd.h    ft0, ft1, ft2, ft3,   rtz
		fmsub.h     ft0, ft1, ft2, ft3
		fmsub.h     ft0, ft1, ft2, ft3,   rtz
		fnmsub.h    ft0, ft1, ft2, ft3
		fnmsub.h    ft0, ft1, ft2, ft3,   rtz

		fcvt.w.h    t0, ft1
		fcvt.w.h    t0, ft1,    rtz
		fcvt.wu.h   t0, ft1
		fcvt.wu.h   t0, ft1,    rtz
		fcvt.h.w    ft0, t1
		fcvt.h.w    ft0, t1,    rtz
		fcvt.h.wu   ft0, t1
		fcvt.h.wu   ft0, t1,    rtz

		fcvt.l.h    t0, ft1
		fcvt.l.h    t0, ft1,    rtz
		fcvt.lu.h   t0, ft1
		fcvt.lu.h   t0, ft1,    rtz
		fcvt.h.l    ft0, t1
		fcvt.h.l    ft0, t1,    rtz
		fcvt.h.lu   ft0, t1
		fcvt.h.lu   ft0, t1,    rtz

		fclass.h    t1, ft0
		feq.h       t0, ft0, ft1
		flt.h       t0, ft0, ft1
		fle.h       t0, ft0, ft1
		fgt.h       t0, ft0, ft1
		fge.h       t0, ft0, ft1

.section .rodata
half_a:
     .half  0x1234

.section .data
half_y:
    .half   0