qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

tests/tcg/xtensa: add FP1 group tests

Test comparisons and conditional move operations.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>

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