test_fp1.S (4296B)
1 #include "macros.inc" 2 #include "fpu.h" 3 4 test_suite fp1 5 6 #if XCHAL_HAVE_FP 7 8 .macro movfp fr, v 9 movi a2, \v 10 wfr \fr, a2 11 .endm 12 13 .macro test_ord_ex op, br, fr0, fr1, v0, v1, r, sr 14 movi a2, 0 15 wur a2, fsr 16 movfp \fr0, \v0 17 movfp \fr1, \v1 18 \op \br, \fr0, \fr1 19 movi a2, 0 20 movi a3, 1 21 movt a2, a3, \br 22 assert eqi, a2, \r 23 rur a2, fsr 24 #if DFPU 25 movi a3, \sr 26 assert eq, a2, a3 27 #else 28 assert eqi, a2, 0 29 #endif 30 .endm 31 32 .macro test_ord op, br, fr0, fr1, v0, v1, r, sr 33 movi a2, 0 34 wur a2, fcr 35 test_ord_ex \op, \br, \fr0, \fr1, \v0, \v1, \r, \sr 36 movi a2, 0x7c 37 wur a2, fcr 38 test_ord_ex \op, \br, \fr0, \fr1, \v0, \v1, \r, \sr 39 .endm 40 41 .macro test_ord_all op, aa, ab, ba, aPI, PIa, aN, Na, II, IN, NI, qnan_sr 42 test_ord \op b0, f0, f1, 0x3f800000, 0x3f800000, \aa, FSR__ /* ord == ord */ 43 test_ord \op b1, f2, f3, 0x3f800000, 0x3fc00000, \ab, FSR__ /* ord < ord */ 44 test_ord \op b2, f4, f5, 0x3fc00000, 0x3f800000, \ba, FSR__ /* ord > ord */ 45 test_ord \op b3, f6, f7, 0x3f800000, 0x7f800000, \aPI, FSR__ /* ord +INF */ 46 test_ord \op b4, f8, f9, 0x7f800000, 0x3f800000, \PIa, FSR__ /* +INF ord */ 47 test_ord \op b5, f10, f11, 0x3f800000, 0xffc00001, \aN, \qnan_sr /* ord -QNaN */ 48 test_ord \op b6, f12, f13, 0x3f800000, 0xff800001, \aN, FSR_V /* ord -SNaN */ 49 test_ord \op b7, f14, f15, 0x3f800000, 0x7f800001, \aN, FSR_V /* ord +SNaN */ 50 test_ord \op b8, f0, f1, 0x3f800000, 0x7fc00000, \aN, \qnan_sr /* ord +QNaN */ 51 test_ord \op b9, f2, f3, 0xffc00001, 0x3f800000, \Na, \qnan_sr /* -QNaN ord */ 52 test_ord \op b10, f4, f5, 0xff800001, 0x3f800000, \Na, FSR_V /* -SNaN ord */ 53 test_ord \op b11, f6, f7, 0x7f800001, 0x3f800000, \Na, FSR_V /* +SNaN ord */ 54 test_ord \op b12, f8, f9, 0x7fc00000, 0x3f800000, \Na, \qnan_sr /* +QNaN ord */ 55 test_ord \op b13, f10, f11, 0x7f800000, 0x7f800000, \II, FSR__ /* +INF +INF */ 56 test_ord \op b14, f12, f13, 0x7f800000, 0x7fc00000, \IN, \qnan_sr /* +INF +QNaN */ 57 test_ord \op b15, f14, f15, 0x7fc00000, 0x7f800000, \NI, \qnan_sr /* +QNaN +INF */ 58 .endm 59 60 test un_s 61 movi a2, 1 62 wsr a2, cpenable 63 test_ord_all un.s, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, FSR__ 64 test_end 65 66 test oeq_s 67 test_ord_all oeq.s, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, FSR__ 68 test_end 69 70 test ueq_s 71 test_ord_all ueq.s, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, FSR__ 72 test_end 73 74 test olt_s 75 test_ord_all olt.s, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, FSR_V 76 test_end 77 78 test ult_s 79 test_ord_all ult.s, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, FSR__ 80 test_end 81 82 test ole_s 83 test_ord_all ole.s, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, FSR_V 84 test_end 85 86 test ule_s 87 test_ord_all ule.s, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, FSR__ 88 test_end 89 90 .macro test_cond op, fr0, fr1, cr, v0, v1, r 91 movfp \fr0, \v0 92 movfp \fr1, \v1 93 \op \fr0, \fr1, \cr 94 rfr a2, \fr0 95 movi a3, \r 96 assert eq, a2, a3 97 .endm 98 99 test moveqz_s 100 movi a3, 0 101 test_cond moveqz.s, f0, f1, a3, 0, 0x3f800000, 0x3f800000 102 movi a3, 1 103 test_cond moveqz.s, f0, f1, a3, 0, 0x3f800000, 0 104 test_end 105 106 test movnez_s 107 movi a3, 0 108 test_cond movnez.s, f0, f1, a3, 0, 0x3f800000, 0 109 movi a3, 1 110 test_cond movnez.s, f0, f1, a3, 0, 0x3f800000, 0x3f800000 111 test_end 112 113 test movltz_s 114 movi a3, -1 115 test_cond movltz.s, f0, f1, a3, 0, 0x3f800000, 0x3f800000 116 movi a3, 0 117 test_cond movltz.s, f0, f1, a3, 0, 0x3f800000, 0 118 movi a3, 1 119 test_cond movltz.s, f0, f1, a3, 0, 0x3f800000, 0 120 test_end 121 122 test movgez_s 123 movi a3, -1 124 test_cond movgez.s, f0, f1, a3, 0, 0x3f800000, 0 125 movi a3, 0 126 test_cond movgez.s, f0, f1, a3, 0, 0x3f800000, 0x3f800000 127 movi a3, 1 128 test_cond movgez.s, f0, f1, a3, 0, 0x3f800000, 0x3f800000 129 test_end 130 131 test movf_s 132 olt.s b0, f0, f0 133 test_cond movf.s, f0, f1, b0, 0, 0x3f800000, 0x3f800000 134 ueq.s b0, f0, f0 135 test_cond movf.s, f0, f1, b0, 0, 0x3f800000, 0 136 test_end 137 138 test movt_s 139 ueq.s b0, f0, f0 140 test_cond movt.s, f0, f1, b0, 0, 0x3f800000, 0x3f800000 141 olt.s b0, f0, f0 142 test_cond movt.s, f0, f1, b0, 0, 0x3f800000, 0 143 test_end 144 145 #endif 146 147 test_suite_end