#include "macros.inc" #include "fpu.h" test_suite lsc #if XCHAL_HAVE_FP test lsi movi a2, 1 wsr a2, cpenable movi a2, 1f lsi f1, a2, 4 #if DFPU lsi f2, a2, 8 lsip f0, a2, 8 #else lsi f0, a2, 0 lsiu f2, a2, 8 #endif movi a3, 1f + 8 assert eq, a2, a3 rfr a2, f0 movi a3, 0x3f800000 assert eq, a2, a3 rfr a2, f1 movi a3, 0x40000000 assert eq, a2, a3 rfr a2, f2 movi a3, 0x40400000 assert eq, a2, a3 .data .align 4 1: .float 1, 2, 3 .text test_end test ssi movi a2, 1f movi a3, 0x40800000 wfr f3, a3 movi a3, 0x40a00000 wfr f4, a3 movi a3, 0x40c00000 wfr f5, a3 ssi f4, a2, 4 #if DFPU ssi f5, a2, 8 ssip f3, a2, 8 #else ssi f3, a2, 0 ssiu f5, a2, 8 #endif movi a3, 1f + 8 assert eq, a2, a3 l32i a4, a2, -8 movi a3, 0x40800000 assert eq, a4, a3 l32i a4, a2, -4 movi a3, 0x40a00000 assert eq, a4, a3 l32i a4, a2, 0 movi a3, 0x40c00000 assert eq, a4, a3 .data .align 4 1: .float 0, 0, 0 .text test_end test lsx movi a2, 1f movi a3, 0 movi a4, 4 movi a5, 8 lsx f7, a2, a4 #if DFPU lsx f8, a2, a5 lsxp f6, a2, a5 #else lsx f6, a2, a3 lsxu f8, a2, a5 #endif movi a3, 1f + 8 assert eq, a2, a3 rfr a2, f6 movi a3, 0x40e00000 assert eq, a2, a3 rfr a2, f7 movi a3, 0x41000000 assert eq, a2, a3 rfr a2, f8 movi a3, 0x41100000 assert eq, a2, a3 .data .align 4 1: .float 7, 8, 9 .text test_end test ssx movi a2, 1f movi a4, 0x41200000 wfr f9, a4 movi a4, 0x41300000 wfr f10, a4 movi a4, 0x41400000 wfr f11, a4 movi a3, 0 movi a4, 4 movi a5, 8 ssx f10, a2, a4 #if DFPU ssx f11, a2, a5 ssxp f9, a2, a5 #else ssx f9, a2, a3 ssxu f11, a2, a5 #endif movi a3, 1f + 8 assert eq, a2, a3 l32i a4, a2, -8 movi a3, 0x41200000 assert eq, a4, a3 l32i a4, a2, -4 movi a3, 0x41300000 assert eq, a4, a3 l32i a4, a2, 0 movi a3, 0x41400000 assert eq, a4, a3 .data .align 4 1: .float 0, 0, 0 .text test_end #endif #if XCHAL_HAVE_DFP #if XCHAL_HAVE_BE #define F64_HIGH_OFF 0 #else #define F64_HIGH_OFF 4 #endif .macro movdf fr, hi, lo movi a2, \hi movi a3, \lo wfrd \fr, a2, a3 .endm test ldi movi a2, 1 wsr a2, cpenable movi a2, 1f ldi f1, a2, 8 ldi f2, a2, 16 ldip f0, a2, 16 movi a3, 1f + 16 assert eq, a2, a3 rfrd a2, f0 movi a3, 0x3ff00000 assert eq, a2, a3 rfrd a2, f1 movi a3, 0x40000000 assert eq, a2, a3 rfrd a2, f2 movi a3, 0x40080000 assert eq, a2, a3 .data .align 8 1: .double 1, 2, 3 .text test_end test sdi movdf f3, 0x40800000, 0 movdf f4, 0x40a00000, 0 movdf f5, 0x40c00000, 0 movi a2, 1f sdi f4, a2, 8 sdi f5, a2, 16 sdip f3, a2, 16 movi a3, 1f + 16 assert eq, a2, a3 l32i a4, a2, -16 + F64_HIGH_OFF movi a3, 0x40800000 assert eq, a4, a3 l32i a4, a2, -8 + F64_HIGH_OFF movi a3, 0x40a00000 assert eq, a4, a3 l32i a4, a2, F64_HIGH_OFF movi a3, 0x40c00000 assert eq, a4, a3 .data .align 8 1: .double 0, 0, 0 .text test_end test ldx movi a2, 1f movi a3, 0 movi a4, 8 movi a5, 16 ldx f7, a2, a4 ldx f8, a2, a5 ldxp f6, a2, a5 movi a3, 1f + 16 assert eq, a2, a3 rfrd a2, f6 movi a3, 0x401c0000 assert eq, a2, a3 rfrd a2, f7 movi a3, 0x40200000 assert eq, a2, a3 rfrd a2, f8 movi a3, 0x40220000 assert eq, a2, a3 .data .align 8 1: .double 7, 8, 9 .text test_end test sdx movdf f9, 0x41200000, 0 movdf f10, 0x41300000, 0 movdf f11, 0x41400000, 0 movi a2, 1f movi a3, 0 movi a4, 8 movi a5, 16 sdx f10, a2, a4 sdx f11, a2, a5 sdxp f9, a2, a5 movi a3, 1f + 16 assert eq, a2, a3 l32i a4, a2, -16 + F64_HIGH_OFF movi a3, 0x41200000 assert eq, a4, a3 l32i a4, a2, -8 + F64_HIGH_OFF movi a3, 0x41300000 assert eq, a4, a3 l32i a4, a2, F64_HIGH_OFF movi a3, 0x41400000 assert eq, a4, a3 .data .align 8 1: .double 0, 0, 0 .text test_end #endif test_suite_end