ops_sse.h (214a8da23651f2472b296b3293e619fd58d9e212) | ops_sse.h (314d3eff66f41f39191aaca2e5f6e3dc81480c1b) |
---|---|
1/* 2 * MMX/3DNow!/SSE/SSE2/SSE3/SSSE3/SSE4/PNI support 3 * 4 * Copyright (c) 2005 Fabrice Bellard 5 * Copyright (c) 2008 Intel Corporation <andrew.zaborowski@intel.com> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public --- 1670 unchanged lines hidden (view full) --- 1679 uint32_t mode) 1680{ 1681 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1682 signed char prev_rounding_mode; 1683 int i; 1684 1685 prev_rounding_mode = env->sse_status.float_rounding_mode; 1686 if (!(mode & (1 << 2))) { | 1/* 2 * MMX/3DNow!/SSE/SSE2/SSE3/SSSE3/SSE4/PNI support 3 * 4 * Copyright (c) 2005 Fabrice Bellard 5 * Copyright (c) 2008 Intel Corporation <andrew.zaborowski@intel.com> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public --- 1670 unchanged lines hidden (view full) --- 1679 uint32_t mode) 1680{ 1681 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1682 signed char prev_rounding_mode; 1683 int i; 1684 1685 prev_rounding_mode = env->sse_status.float_rounding_mode; 1686 if (!(mode & (1 << 2))) { |
1687 switch (mode & 3) { 1688 case 0: 1689 set_float_rounding_mode(float_round_nearest_even, &env->sse_status); 1690 break; 1691 case 1: 1692 set_float_rounding_mode(float_round_down, &env->sse_status); 1693 break; 1694 case 2: 1695 set_float_rounding_mode(float_round_up, &env->sse_status); 1696 break; 1697 case 3: 1698 set_float_rounding_mode(float_round_to_zero, &env->sse_status); 1699 break; 1700 } | 1687 set_x86_rounding_mode(mode & 3, &env->sse_status); |
1701 } 1702 1703 for (i = 0; i < 2 << SHIFT; i++) { 1704 d->ZMM_S(i) = float32_round_to_int(s->ZMM_S(i), &env->sse_status); 1705 } 1706 1707 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { 1708 set_float_exception_flags(get_float_exception_flags(&env->sse_status) & --- 7 unchanged lines hidden (view full) --- 1716 uint32_t mode) 1717{ 1718 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1719 signed char prev_rounding_mode; 1720 int i; 1721 1722 prev_rounding_mode = env->sse_status.float_rounding_mode; 1723 if (!(mode & (1 << 2))) { | 1688 } 1689 1690 for (i = 0; i < 2 << SHIFT; i++) { 1691 d->ZMM_S(i) = float32_round_to_int(s->ZMM_S(i), &env->sse_status); 1692 } 1693 1694 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { 1695 set_float_exception_flags(get_float_exception_flags(&env->sse_status) & --- 7 unchanged lines hidden (view full) --- 1703 uint32_t mode) 1704{ 1705 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1706 signed char prev_rounding_mode; 1707 int i; 1708 1709 prev_rounding_mode = env->sse_status.float_rounding_mode; 1710 if (!(mode & (1 << 2))) { |
1724 switch (mode & 3) { 1725 case 0: 1726 set_float_rounding_mode(float_round_nearest_even, &env->sse_status); 1727 break; 1728 case 1: 1729 set_float_rounding_mode(float_round_down, &env->sse_status); 1730 break; 1731 case 2: 1732 set_float_rounding_mode(float_round_up, &env->sse_status); 1733 break; 1734 case 3: 1735 set_float_rounding_mode(float_round_to_zero, &env->sse_status); 1736 break; 1737 } | 1711 set_x86_rounding_mode(mode & 3, &env->sse_status); |
1738 } 1739 1740 for (i = 0; i < 1 << SHIFT; i++) { 1741 d->ZMM_D(i) = float64_round_to_int(s->ZMM_D(i), &env->sse_status); 1742 } 1743 1744 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { 1745 set_float_exception_flags(get_float_exception_flags(&env->sse_status) & --- 8 unchanged lines hidden (view full) --- 1754 uint32_t mode) 1755{ 1756 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1757 signed char prev_rounding_mode; 1758 int i; 1759 1760 prev_rounding_mode = env->sse_status.float_rounding_mode; 1761 if (!(mode & (1 << 2))) { | 1712 } 1713 1714 for (i = 0; i < 1 << SHIFT; i++) { 1715 d->ZMM_D(i) = float64_round_to_int(s->ZMM_D(i), &env->sse_status); 1716 } 1717 1718 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { 1719 set_float_exception_flags(get_float_exception_flags(&env->sse_status) & --- 8 unchanged lines hidden (view full) --- 1728 uint32_t mode) 1729{ 1730 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1731 signed char prev_rounding_mode; 1732 int i; 1733 1734 prev_rounding_mode = env->sse_status.float_rounding_mode; 1735 if (!(mode & (1 << 2))) { |
1762 switch (mode & 3) { 1763 case 0: 1764 set_float_rounding_mode(float_round_nearest_even, &env->sse_status); 1765 break; 1766 case 1: 1767 set_float_rounding_mode(float_round_down, &env->sse_status); 1768 break; 1769 case 2: 1770 set_float_rounding_mode(float_round_up, &env->sse_status); 1771 break; 1772 case 3: 1773 set_float_rounding_mode(float_round_to_zero, &env->sse_status); 1774 break; 1775 } | 1736 set_x86_rounding_mode(mode & 3, &env->sse_status); |
1776 } 1777 1778 d->ZMM_S(0) = float32_round_to_int(s->ZMM_S(0), &env->sse_status); 1779 for (i = 1; i < 2 << SHIFT; i++) { 1780 d->ZMM_L(i) = v->ZMM_L(i); 1781 } 1782 1783 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { --- 8 unchanged lines hidden (view full) --- 1792 uint32_t mode) 1793{ 1794 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1795 signed char prev_rounding_mode; 1796 int i; 1797 1798 prev_rounding_mode = env->sse_status.float_rounding_mode; 1799 if (!(mode & (1 << 2))) { | 1737 } 1738 1739 d->ZMM_S(0) = float32_round_to_int(s->ZMM_S(0), &env->sse_status); 1740 for (i = 1; i < 2 << SHIFT; i++) { 1741 d->ZMM_L(i) = v->ZMM_L(i); 1742 } 1743 1744 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { --- 8 unchanged lines hidden (view full) --- 1753 uint32_t mode) 1754{ 1755 uint8_t old_flags = get_float_exception_flags(&env->sse_status); 1756 signed char prev_rounding_mode; 1757 int i; 1758 1759 prev_rounding_mode = env->sse_status.float_rounding_mode; 1760 if (!(mode & (1 << 2))) { |
1800 switch (mode & 3) { 1801 case 0: 1802 set_float_rounding_mode(float_round_nearest_even, &env->sse_status); 1803 break; 1804 case 1: 1805 set_float_rounding_mode(float_round_down, &env->sse_status); 1806 break; 1807 case 2: 1808 set_float_rounding_mode(float_round_up, &env->sse_status); 1809 break; 1810 case 3: 1811 set_float_rounding_mode(float_round_to_zero, &env->sse_status); 1812 break; 1813 } | 1761 set_x86_rounding_mode(mode & 3, &env->sse_status); |
1814 } 1815 1816 d->ZMM_D(0) = float64_round_to_int(s->ZMM_D(0), &env->sse_status); 1817 for (i = 1; i < 1 << SHIFT; i++) { 1818 d->ZMM_Q(i) = v->ZMM_Q(i); 1819 } 1820 1821 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { --- 737 unchanged lines hidden --- | 1762 } 1763 1764 d->ZMM_D(0) = float64_round_to_int(s->ZMM_D(0), &env->sse_status); 1765 for (i = 1; i < 1 << SHIFT; i++) { 1766 d->ZMM_Q(i) = v->ZMM_Q(i); 1767 } 1768 1769 if (mode & (1 << 3) && !(old_flags & float_flag_inexact)) { --- 737 unchanged lines hidden --- |