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 ---