Changeset 58775d30 in mainline for uspace/lib/softfloat/sub.c
- Timestamp:
- 2015-03-16T16:07:21Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2003739
- Parents:
- 6069061 (diff), 795e2bf (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/softfloat/sub.c
r6069061 r58775d30 34 34 */ 35 35 36 #include "sftypes.h"37 36 #include "sub.h" 38 37 #include "comparison.h" 39 38 #include "common.h" 39 #include "add.h" 40 40 41 41 /** Subtract two single-precision floats with the same sign. … … 438 438 } 439 439 440 #ifdef float32_t 441 442 float32_t __subsf3(float32_t a, float32_t b) 443 { 444 float32_u ua; 445 ua.val = a; 446 447 float32_u ub; 448 ub.val = b; 449 450 float32_u res; 451 452 if (ua.data.parts.sign != ub.data.parts.sign) { 453 ub.data.parts.sign = !ub.data.parts.sign; 454 res.data = add_float32(ua.data, ub.data); 455 } else 456 res.data = sub_float32(ua.data, ub.data); 457 458 return res.val; 459 } 460 461 float32_t __aeabi_fsub(float32_t a, float32_t b) 462 { 463 float32_u ua; 464 ua.val = a; 465 466 float32_u ub; 467 ub.val = b; 468 469 float32_u res; 470 471 if (ua.data.parts.sign != ub.data.parts.sign) { 472 ub.data.parts.sign = !ub.data.parts.sign; 473 res.data = add_float32(ua.data, ub.data); 474 } else 475 res.data = sub_float32(ua.data, ub.data); 476 477 return res.val; 478 } 479 480 #endif 481 482 #ifdef float64_t 483 484 float64_t __subdf3(float64_t a, float64_t b) 485 { 486 float64_u ua; 487 ua.val = a; 488 489 float64_u ub; 490 ub.val = b; 491 492 float64_u res; 493 494 if (ua.data.parts.sign != ub.data.parts.sign) { 495 ub.data.parts.sign = !ub.data.parts.sign; 496 res.data = add_float64(ua.data, ub.data); 497 } else 498 res.data = sub_float64(ua.data, ub.data); 499 500 return res.val; 501 } 502 503 float64_t __aeabi_dsub(float64_t a, float64_t b) 504 { 505 float64_u ua; 506 ua.val = a; 507 508 float64_u ub; 509 ub.val = b; 510 511 float64_u res; 512 513 if (ua.data.parts.sign != ub.data.parts.sign) { 514 ub.data.parts.sign = !ub.data.parts.sign; 515 res.data = add_float64(ua.data, ub.data); 516 } else 517 res.data = sub_float64(ua.data, ub.data); 518 519 return res.val; 520 } 521 522 #endif 523 524 #ifdef float128_t 525 526 float128_t __subtf3(float128_t a, float128_t b) 527 { 528 float128_u ua; 529 ua.val = a; 530 531 float128_u ub; 532 ub.val = b; 533 534 float128_u res; 535 536 if (ua.data.parts.sign != ub.data.parts.sign) { 537 ub.data.parts.sign = !ub.data.parts.sign; 538 res.data = add_float128(ua.data, ub.data); 539 } else 540 res.data = sub_float128(ua.data, ub.data); 541 542 return res.val; 543 } 544 545 void _Qp_sub(float128_t *c, float128_t *a, float128_t *b) 546 { 547 *c = __subtf3(*a, *b); 548 } 549 550 #endif 551 440 552 /** @} 441 553 */
Note:
See TracChangeset
for help on using the changeset viewer.