Revision 1d01299d target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
246 | 246 |
*((uint64_t *)&DT0) = tmp; |
247 | 247 |
} |
248 | 248 |
|
249 |
void helper_movl_FT0_0(void) |
|
250 |
{ |
|
251 |
*((uint32_t *)&FT0) = 0; |
|
252 |
} |
|
253 |
|
|
254 |
void helper_movl_DT0_0(void) |
|
255 |
{ |
|
256 |
*((uint64_t *)&DT0) = 0; |
|
257 |
} |
|
258 |
|
|
259 |
void helper_movl_FT0_1(void) |
|
260 |
{ |
|
261 |
*((uint32_t *)&FT0) = 0xffffffff; |
|
262 |
} |
|
263 |
|
|
264 |
void helper_movl_DT0_1(void) |
|
265 |
{ |
|
266 |
*((uint64_t *)&DT0) = 0xffffffffffffffffULL; |
|
267 |
} |
|
268 |
|
|
269 | 249 |
void helper_fnot(void) |
270 | 250 |
{ |
271 | 251 |
*(uint64_t *)&DT0 = ~*(uint64_t *)&DT1; |
272 | 252 |
} |
273 | 253 |
|
274 |
void helper_fnots(void) |
|
275 |
{ |
|
276 |
*(uint32_t *)&FT0 = ~*(uint32_t *)&FT1; |
|
277 |
} |
|
278 |
|
|
279 | 254 |
void helper_fnor(void) |
280 | 255 |
{ |
281 | 256 |
*(uint64_t *)&DT0 = ~(*(uint64_t *)&DT0 | *(uint64_t *)&DT1); |
282 | 257 |
} |
283 | 258 |
|
284 |
void helper_fnors(void) |
|
285 |
{ |
|
286 |
*(uint32_t *)&FT0 = ~(*(uint32_t *)&FT0 | *(uint32_t *)&FT1); |
|
287 |
} |
|
288 |
|
|
289 | 259 |
void helper_for(void) |
290 | 260 |
{ |
291 | 261 |
*(uint64_t *)&DT0 |= *(uint64_t *)&DT1; |
292 | 262 |
} |
293 | 263 |
|
294 |
void helper_fors(void) |
|
295 |
{ |
|
296 |
*(uint32_t *)&FT0 |= *(uint32_t *)&FT1; |
|
297 |
} |
|
298 |
|
|
299 | 264 |
void helper_fxor(void) |
300 | 265 |
{ |
301 | 266 |
*(uint64_t *)&DT0 ^= *(uint64_t *)&DT1; |
302 | 267 |
} |
303 | 268 |
|
304 |
void helper_fxors(void) |
|
305 |
{ |
|
306 |
*(uint32_t *)&FT0 ^= *(uint32_t *)&FT1; |
|
307 |
} |
|
308 |
|
|
309 | 269 |
void helper_fand(void) |
310 | 270 |
{ |
311 | 271 |
*(uint64_t *)&DT0 &= *(uint64_t *)&DT1; |
312 | 272 |
} |
313 | 273 |
|
314 |
void helper_fands(void) |
|
315 |
{ |
|
316 |
*(uint32_t *)&FT0 &= *(uint32_t *)&FT1; |
|
317 |
} |
|
318 |
|
|
319 | 274 |
void helper_fornot(void) |
320 | 275 |
{ |
321 | 276 |
*(uint64_t *)&DT0 = *(uint64_t *)&DT0 | ~*(uint64_t *)&DT1; |
322 | 277 |
} |
323 | 278 |
|
324 |
void helper_fornots(void) |
|
325 |
{ |
|
326 |
*(uint32_t *)&FT0 = *(uint32_t *)&FT0 | ~*(uint32_t *)&FT1; |
|
327 |
} |
|
328 |
|
|
329 | 279 |
void helper_fandnot(void) |
330 | 280 |
{ |
331 | 281 |
*(uint64_t *)&DT0 = *(uint64_t *)&DT0 & ~*(uint64_t *)&DT1; |
332 | 282 |
} |
333 | 283 |
|
334 |
void helper_fandnots(void) |
|
335 |
{ |
|
336 |
*(uint32_t *)&FT0 = *(uint32_t *)&FT0 & ~*(uint32_t *)&FT1; |
|
337 |
} |
|
338 |
|
|
339 | 284 |
void helper_fnand(void) |
340 | 285 |
{ |
341 | 286 |
*(uint64_t *)&DT0 = ~(*(uint64_t *)&DT0 & *(uint64_t *)&DT1); |
342 | 287 |
} |
343 | 288 |
|
344 |
void helper_fnands(void) |
|
345 |
{ |
|
346 |
*(uint32_t *)&FT0 = ~(*(uint32_t *)&FT0 & *(uint32_t *)&FT1); |
|
347 |
} |
|
348 |
|
|
349 | 289 |
void helper_fxnor(void) |
350 | 290 |
{ |
351 | 291 |
*(uint64_t *)&DT0 ^= ~*(uint64_t *)&DT1; |
352 | 292 |
} |
353 | 293 |
|
354 |
void helper_fxnors(void) |
|
355 |
{ |
|
356 |
*(uint32_t *)&FT0 ^= ~*(uint32_t *)&FT1; |
|
357 |
} |
|
358 |
|
|
359 | 294 |
#ifdef WORDS_BIGENDIAN |
360 | 295 |
#define VIS_B64(n) b[7 - (n)] |
361 | 296 |
#define VIS_W64(n) w[3 - (n)] |
... | ... | |
597 | 532 |
DT0 = d.d; \ |
598 | 533 |
} \ |
599 | 534 |
\ |
600 |
void name##16s(void) \
|
|
535 |
uint32_t name##16s(uint32_t src1, uint32_t src2) \
|
|
601 | 536 |
{ \ |
602 | 537 |
vis32 s, d; \ |
603 | 538 |
\ |
604 |
s.f = FT0; \
|
|
605 |
d.f = FT1; \
|
|
539 |
s.l = src1; \
|
|
540 |
d.l = src2; \
|
|
606 | 541 |
\ |
607 | 542 |
d.VIS_W32(0) = F(d.VIS_W32(0), s.VIS_W32(0)); \ |
608 | 543 |
d.VIS_W32(1) = F(d.VIS_W32(1), s.VIS_W32(1)); \ |
609 | 544 |
\ |
610 |
FT0 = d.f; \
|
|
545 |
return d.l; \
|
|
611 | 546 |
} \ |
612 | 547 |
\ |
613 | 548 |
void name##32(void) \ |
... | ... | |
623 | 558 |
DT0 = d.d; \ |
624 | 559 |
} \ |
625 | 560 |
\ |
626 |
void name##32s(void) \
|
|
561 |
uint32_t name##32s(uint32_t src1, uint32_t src2) \
|
|
627 | 562 |
{ \ |
628 | 563 |
vis32 s, d; \ |
629 | 564 |
\ |
630 |
s.f = FT0; \
|
|
631 |
d.f = FT1; \
|
|
565 |
s.l = src1; \
|
|
566 |
d.l = src2; \
|
|
632 | 567 |
\ |
633 | 568 |
d.l = F(d.l, s.l); \ |
634 | 569 |
\ |
635 |
FT0 = d.f; \
|
|
570 |
return d.l; \
|
|
636 | 571 |
} |
637 | 572 |
|
638 | 573 |
#define FADD(a, b) ((a) + (b)) |
Also available in: Unified diff