test_fp_ps.s 1.95 KB
# test all added instructions for packed single FP data

.section .text
.global test_packed

test_packed:
		la          a0, packsingle_a
		flps        ft0, 0(a0)
		la          a0, packsingle_y
		fsps        ft0, 0(a0)

		fmv.x.ps     t0, ft0                       # move ft1->t0
		fmv.ps.x     ft0, t0

		fmv.ps       ft0, ft1
		fneg.ps      ft0, ft1
		fabs.ps      ft0, ft1
		fsgnj.ps     ft0, ft1, ft2
		fsgnjn.ps    ft0, ft1, ft2
		fsgnjx.ps    ft0, ft1, ft2
		fclass.ps    t0, ft1
		feq.ps       t0, ft0, ft1
		flt.ps       t0, ft0, ft1
		fle.ps       t0, ft0, ft1
		fgt.ps       t0, ft0, ft1
		fge.ps       t0, ft0, ft1

		fadd.ps      ft0, ft1, ft2
		fadd.ps      ft0, ft1, ft2,    rtz
		fsub.ps      ft0, ft1, ft2
		fsub.ps      ft0, ft1, ft2,    rtz
		fmul.ps      ft0, ft1, ft2
		fmul.ps      ft0, ft1, ft2,    rtz
		fdiv.ps      ft0, ft1, ft2
		fdiv.ps      ft0, ft1, ft2,    rtz
		fsqrt.ps     ft0, ft1
		fsqrt.ps     ft0, ft1,     rtz
		fmin.ps      ft0, ft1, ft2
		fmax.ps      ft0, ft1, ft2

		faddx.ps     ft0, ft1, ft2
		faddx.ps     ft0, ft1, ft2,    rtz
		fsubx.ps     ft0, ft1, ft2
		fsubx.ps     ft0, ft1, ft2,    rtz
		fmulx.ps     ft0, ft1, ft2
		fmulx.ps     ft0, ft1, ft2,    rtz
		fdivx.ps     ft0, ft1, ft2
		fdivx.ps     ft0, ft1, ft2,    rtz

		faddr.ps     ft0, ft1, ft2
		faddr.ps     ft0, ft1, ft2,    rtz
		fsubr.ps     ft0, ft1, ft2
		fsubr.ps     ft0, ft1, ft2,    rtz
		fmulr.ps     ft0, ft1, ft2
		fmulr.ps     ft0, ft1, ft2,    rtz
		fdivr.ps     ft0, ft1, ft2
		fdivr.ps     ft0, ft1, ft2,    rtz

		faddsubr.ps     ft0, ft1, ft2
		faddsubr.ps     ft0, ft1, ft2,    rtz
		fsubaddr.ps     ft0, ft1, ft2
		fsubaddr.ps     ft0, ft1, ft2,    rtz

		fmvuu.ps        ft0, ft1, ft2
		fmvll.ps        ft0, ft1, ft2
		fmvul.ps        ft0, ft1, ft2
		fmvlu.ps        ft0, ft1, ft2

		fmvzu.ps        ft0, ft1
		fmvzl.ps        ft0, ft1
		fswap.ps        ft0, ft1


.section .rodata
packsingle_a:
     .dword  0x123456789ABCDEF0

.section .data
packsingle_y:
    .dword   0