1#include "macros.inc" 2#include "fpu.h" 3 4test_suite lsc 5 6#if XCHAL_HAVE_FP 7 8test lsi 9 movi a2, 1 10 wsr a2, cpenable 11 12 movi a2, 1f 13 lsi f1, a2, 4 14#if DFPU 15 lsi f2, a2, 8 16 lsip f0, a2, 8 17#else 18 lsi f0, a2, 0 19 lsiu f2, a2, 8 20#endif 21 movi a3, 1f + 8 22 assert eq, a2, a3 23 rfr a2, f0 24 movi a3, 0x3f800000 25 assert eq, a2, a3 26 rfr a2, f1 27 movi a3, 0x40000000 28 assert eq, a2, a3 29 rfr a2, f2 30 movi a3, 0x40400000 31 assert eq, a2, a3 32.data 33 .align 4 341: 35.float 1, 2, 3 36.text 37test_end 38 39test ssi 40 movi a2, 1f 41 movi a3, 0x40800000 42 wfr f3, a3 43 movi a3, 0x40a00000 44 wfr f4, a3 45 movi a3, 0x40c00000 46 wfr f5, a3 47 ssi f4, a2, 4 48#if DFPU 49 ssi f5, a2, 8 50 ssip f3, a2, 8 51#else 52 ssi f3, a2, 0 53 ssiu f5, a2, 8 54#endif 55 movi a3, 1f + 8 56 assert eq, a2, a3 57 l32i a4, a2, -8 58 movi a3, 0x40800000 59 assert eq, a4, a3 60 l32i a4, a2, -4 61 movi a3, 0x40a00000 62 assert eq, a4, a3 63 l32i a4, a2, 0 64 movi a3, 0x40c00000 65 assert eq, a4, a3 66.data 67 .align 4 681: 69.float 0, 0, 0 70.text 71test_end 72 73test lsx 74 movi a2, 1f 75 movi a3, 0 76 movi a4, 4 77 movi a5, 8 78 lsx f7, a2, a4 79#if DFPU 80 lsx f8, a2, a5 81 lsxp f6, a2, a5 82#else 83 lsx f6, a2, a3 84 lsxu f8, a2, a5 85#endif 86 movi a3, 1f + 8 87 assert eq, a2, a3 88 rfr a2, f6 89 movi a3, 0x40e00000 90 assert eq, a2, a3 91 rfr a2, f7 92 movi a3, 0x41000000 93 assert eq, a2, a3 94 rfr a2, f8 95 movi a3, 0x41100000 96 assert eq, a2, a3 97.data 98 .align 4 991: 100.float 7, 8, 9 101.text 102test_end 103 104test ssx 105 movi a2, 1f 106 movi a4, 0x41200000 107 wfr f9, a4 108 movi a4, 0x41300000 109 wfr f10, a4 110 movi a4, 0x41400000 111 wfr f11, a4 112 movi a3, 0 113 movi a4, 4 114 movi a5, 8 115 ssx f10, a2, a4 116#if DFPU 117 ssx f11, a2, a5 118 ssxp f9, a2, a5 119#else 120 ssx f9, a2, a3 121 ssxu f11, a2, a5 122#endif 123 movi a3, 1f + 8 124 assert eq, a2, a3 125 l32i a4, a2, -8 126 movi a3, 0x41200000 127 assert eq, a4, a3 128 l32i a4, a2, -4 129 movi a3, 0x41300000 130 assert eq, a4, a3 131 l32i a4, a2, 0 132 movi a3, 0x41400000 133 assert eq, a4, a3 134.data 135 .align 4 1361: 137.float 0, 0, 0 138.text 139test_end 140 141#endif 142 143#if XCHAL_HAVE_DFP 144 145#if XCHAL_HAVE_BE 146#define F64_HIGH_OFF 0 147#else 148#define F64_HIGH_OFF 4 149#endif 150 151.macro movdf fr, hi, lo 152 movi a2, \hi 153 movi a3, \lo 154 wfrd \fr, a2, a3 155.endm 156 157test ldi 158 movi a2, 1 159 wsr a2, cpenable 160 161 movi a2, 1f 162 ldi f1, a2, 8 163 ldi f2, a2, 16 164 ldip f0, a2, 16 165 movi a3, 1f + 16 166 assert eq, a2, a3 167 rfrd a2, f0 168 movi a3, 0x3ff00000 169 assert eq, a2, a3 170 rfrd a2, f1 171 movi a3, 0x40000000 172 assert eq, a2, a3 173 rfrd a2, f2 174 movi a3, 0x40080000 175 assert eq, a2, a3 176.data 177 .align 8 1781: 179.double 1, 2, 3 180.text 181test_end 182 183test sdi 184 movdf f3, 0x40800000, 0 185 movdf f4, 0x40a00000, 0 186 movdf f5, 0x40c00000, 0 187 movi a2, 1f 188 sdi f4, a2, 8 189 sdi f5, a2, 16 190 sdip f3, a2, 16 191 movi a3, 1f + 16 192 assert eq, a2, a3 193 l32i a4, a2, -16 + F64_HIGH_OFF 194 movi a3, 0x40800000 195 assert eq, a4, a3 196 l32i a4, a2, -8 + F64_HIGH_OFF 197 movi a3, 0x40a00000 198 assert eq, a4, a3 199 l32i a4, a2, F64_HIGH_OFF 200 movi a3, 0x40c00000 201 assert eq, a4, a3 202.data 203 .align 8 2041: 205.double 0, 0, 0 206.text 207test_end 208 209test ldx 210 movi a2, 1f 211 movi a3, 0 212 movi a4, 8 213 movi a5, 16 214 ldx f7, a2, a4 215 ldx f8, a2, a5 216 ldxp f6, a2, a5 217 movi a3, 1f + 16 218 assert eq, a2, a3 219 rfrd a2, f6 220 movi a3, 0x401c0000 221 assert eq, a2, a3 222 rfrd a2, f7 223 movi a3, 0x40200000 224 assert eq, a2, a3 225 rfrd a2, f8 226 movi a3, 0x40220000 227 assert eq, a2, a3 228.data 229 .align 8 2301: 231.double 7, 8, 9 232.text 233test_end 234 235test sdx 236 movdf f9, 0x41200000, 0 237 movdf f10, 0x41300000, 0 238 movdf f11, 0x41400000, 0 239 movi a2, 1f 240 movi a3, 0 241 movi a4, 8 242 movi a5, 16 243 sdx f10, a2, a4 244 sdx f11, a2, a5 245 sdxp f9, a2, a5 246 movi a3, 1f + 16 247 assert eq, a2, a3 248 l32i a4, a2, -16 + F64_HIGH_OFF 249 movi a3, 0x41200000 250 assert eq, a4, a3 251 l32i a4, a2, -8 + F64_HIGH_OFF 252 movi a3, 0x41300000 253 assert eq, a4, a3 254 l32i a4, a2, F64_HIGH_OFF 255 movi a3, 0x41400000 256 assert eq, a4, a3 257.data 258 .align 8 2591: 260.double 0, 0, 0 261.text 262test_end 263 264#endif 265 266test_suite_end 267