Skip to content

Commit bd0d006

Browse files
committedApr 12, 2017
[x86] fix AVX FP cmp intrinsic documentation (PR28110)
This copies the text used in the #define statements to the code comments. The conflicting text comes from AMD manuals, but those are wrong. Sadly, that FP cmp text has not been updated even after some docs were updated for Zen: http://support.amd.com/en-us/search/tech-docs ( AMD64 Architecture Programmer's Manual Volume 4 ) See PR28110 for more discussion: https://bugs.llvm.org/show_bug.cgi?id=28110 Differential Revision: https://reviews.llvm.org/D31428 llvm-svn: 300068
1 parent 33439f9 commit bd0d006

File tree

1 file changed

+196
-70
lines changed

1 file changed

+196
-70
lines changed
 

‎clang/lib/Headers/avxintrin.h

+196-70
Original file line numberDiff line numberDiff line change
@@ -1613,9 +1613,9 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
16131613
#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */
16141614
#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */
16151615
#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */
1616-
#define _CMP_ORD_Q 0x07 /* Ordered (nonsignaling) */
1616+
#define _CMP_ORD_Q 0x07 /* Ordered (non-signaling) */
16171617
#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */
1618-
#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unord, signaling) */
1618+
#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unordered, signaling) */
16191619
#define _CMP_NGT_US 0x0a /* Not-greater-than (unordered, signaling) */
16201620
#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling) */
16211621
#define _CMP_NEQ_OQ 0x0c /* Not-equal (ordered, non-signaling) */
@@ -1628,10 +1628,10 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
16281628
#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */
16291629
#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */
16301630
#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, non-signaling) */
1631-
#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unord, non-signaling) */
1631+
#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unordered, non-signaling) */
16321632
#define _CMP_ORD_S 0x17 /* Ordered (signaling) */
16331633
#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */
1634-
#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unord, non-sign) */
1634+
#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unordered, non-signaling) */
16351635
#define _CMP_NGT_UQ 0x1a /* Not-greater-than (unordered, non-signaling) */
16361636
#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling) */
16371637
#define _CMP_NEQ_OS 0x1c /* Not-equal (ordered, signaling) */
@@ -1660,17 +1660,38 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
16601660
/// \param c
16611661
/// An immediate integer operand, with bits [4:0] specifying which comparison
16621662
/// operation to use: \n
1663-
/// 00h, 08h, 10h, 18h: Equal \n
1664-
/// 01h, 09h, 11h, 19h: Less than \n
1665-
/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal
1666-
/// (swapped operands) \n
1667-
/// 03h, 0Bh, 13h, 1Bh: Unordered \n
1668-
/// 04h, 0Ch, 14h, 1Ch: Not equal \n
1669-
/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than
1670-
/// (swapped operands) \n
1671-
/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal
1672-
/// (swapped operands) \n
1673-
/// 07h, 0Fh, 17h, 1Fh: Ordered
1663+
/// 0x00 : Equal (ordered, non-signaling)
1664+
/// 0x01 : Less-than (ordered, signaling)
1665+
/// 0x02 : Less-than-or-equal (ordered, signaling)
1666+
/// 0x03 : Unordered (non-signaling)
1667+
/// 0x04 : Not-equal (unordered, non-signaling)
1668+
/// 0x05 : Not-less-than (unordered, signaling)
1669+
/// 0x06 : Not-less-than-or-equal (unordered, signaling)
1670+
/// 0x07 : Ordered (non-signaling)
1671+
/// 0x08 : Equal (unordered, non-signaling)
1672+
/// 0x09 : Not-greater-than-or-equal (unordered, signaling)
1673+
/// 0x0a : Not-greater-than (unordered, signaling)
1674+
/// 0x0b : False (ordered, non-signaling)
1675+
/// 0x0c : Not-equal (ordered, non-signaling)
1676+
/// 0x0d : Greater-than-or-equal (ordered, signaling)
1677+
/// 0x0e : Greater-than (ordered, signaling)
1678+
/// 0x0f : True (unordered, non-signaling)
1679+
/// 0x10 : Equal (ordered, signaling)
1680+
/// 0x11 : Less-than (ordered, non-signaling)
1681+
/// 0x12 : Less-than-or-equal (ordered, non-signaling)
1682+
/// 0x13 : Unordered (signaling)
1683+
/// 0x14 : Not-equal (unordered, signaling)
1684+
/// 0x15 : Not-less-than (unordered, non-signaling)
1685+
/// 0x16 : Not-less-than-or-equal (unordered, non-signaling)
1686+
/// 0x17 : Ordered (signaling)
1687+
/// 0x18 : Equal (unordered, signaling)
1688+
/// 0x19 : Not-greater-than-or-equal (unordered, non-signaling)
1689+
/// 0x1a : Not-greater-than (unordered, non-signaling)
1690+
/// 0x1b : False (ordered, signaling)
1691+
/// 0x1c : Not-equal (ordered, signaling)
1692+
/// 0x1d : Greater-than-or-equal (ordered, non-signaling)
1693+
/// 0x1e : Greater-than (ordered, non-signaling)
1694+
/// 0x1f : True (unordered, signaling)
16741695
/// \returns A 128-bit vector of [2 x double] containing the comparison results.
16751696
#define _mm_cmp_pd(a, b, c) __extension__ ({ \
16761697
(__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
@@ -1697,17 +1718,38 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
16971718
/// \param c
16981719
/// An immediate integer operand, with bits [4:0] specifying which comparison
16991720
/// operation to use: \n
1700-
/// 00h, 08h, 10h, 18h: Equal \n
1701-
/// 01h, 09h, 11h, 19h: Less than \n
1702-
/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal
1703-
/// (swapped operands) \n
1704-
/// 03h, 0Bh, 13h, 1Bh: Unordered \n
1705-
/// 04h, 0Ch, 14h, 1Ch: Not equal \n
1706-
/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than
1707-
/// (swapped operands) \n
1708-
/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal
1709-
/// (swapped operands) \n
1710-
/// 07h, 0Fh, 17h, 1Fh: Ordered
1721+
/// 0x00 : Equal (ordered, non-signaling)
1722+
/// 0x01 : Less-than (ordered, signaling)
1723+
/// 0x02 : Less-than-or-equal (ordered, signaling)
1724+
/// 0x03 : Unordered (non-signaling)
1725+
/// 0x04 : Not-equal (unordered, non-signaling)
1726+
/// 0x05 : Not-less-than (unordered, signaling)
1727+
/// 0x06 : Not-less-than-or-equal (unordered, signaling)
1728+
/// 0x07 : Ordered (non-signaling)
1729+
/// 0x08 : Equal (unordered, non-signaling)
1730+
/// 0x09 : Not-greater-than-or-equal (unordered, signaling)
1731+
/// 0x0a : Not-greater-than (unordered, signaling)
1732+
/// 0x0b : False (ordered, non-signaling)
1733+
/// 0x0c : Not-equal (ordered, non-signaling)
1734+
/// 0x0d : Greater-than-or-equal (ordered, signaling)
1735+
/// 0x0e : Greater-than (ordered, signaling)
1736+
/// 0x0f : True (unordered, non-signaling)
1737+
/// 0x10 : Equal (ordered, signaling)
1738+
/// 0x11 : Less-than (ordered, non-signaling)
1739+
/// 0x12 : Less-than-or-equal (ordered, non-signaling)
1740+
/// 0x13 : Unordered (signaling)
1741+
/// 0x14 : Not-equal (unordered, signaling)
1742+
/// 0x15 : Not-less-than (unordered, non-signaling)
1743+
/// 0x16 : Not-less-than-or-equal (unordered, non-signaling)
1744+
/// 0x17 : Ordered (signaling)
1745+
/// 0x18 : Equal (unordered, signaling)
1746+
/// 0x19 : Not-greater-than-or-equal (unordered, non-signaling)
1747+
/// 0x1a : Not-greater-than (unordered, non-signaling)
1748+
/// 0x1b : False (ordered, signaling)
1749+
/// 0x1c : Not-equal (ordered, signaling)
1750+
/// 0x1d : Greater-than-or-equal (ordered, non-signaling)
1751+
/// 0x1e : Greater-than (ordered, non-signaling)
1752+
/// 0x1f : True (unordered, signaling)
17111753
/// \returns A 128-bit vector of [4 x float] containing the comparison results.
17121754
#define _mm_cmp_ps(a, b, c) __extension__ ({ \
17131755
(__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
@@ -1734,17 +1776,38 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
17341776
/// \param c
17351777
/// An immediate integer operand, with bits [4:0] specifying which comparison
17361778
/// operation to use: \n
1737-
/// 00h, 08h, 10h, 18h: Equal \n
1738-
/// 01h, 09h, 11h, 19h: Less than \n
1739-
/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal
1740-
/// (swapped operands) \n
1741-
/// 03h, 0Bh, 13h, 1Bh: Unordered \n
1742-
/// 04h, 0Ch, 14h, 1Ch: Not equal \n
1743-
/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than
1744-
/// (swapped operands) \n
1745-
/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal
1746-
/// (swapped operands) \n
1747-
/// 07h, 0Fh, 17h, 1Fh: Ordered
1779+
/// 0x00 : Equal (ordered, non-signaling)
1780+
/// 0x01 : Less-than (ordered, signaling)
1781+
/// 0x02 : Less-than-or-equal (ordered, signaling)
1782+
/// 0x03 : Unordered (non-signaling)
1783+
/// 0x04 : Not-equal (unordered, non-signaling)
1784+
/// 0x05 : Not-less-than (unordered, signaling)
1785+
/// 0x06 : Not-less-than-or-equal (unordered, signaling)
1786+
/// 0x07 : Ordered (non-signaling)
1787+
/// 0x08 : Equal (unordered, non-signaling)
1788+
/// 0x09 : Not-greater-than-or-equal (unordered, signaling)
1789+
/// 0x0a : Not-greater-than (unordered, signaling)
1790+
/// 0x0b : False (ordered, non-signaling)
1791+
/// 0x0c : Not-equal (ordered, non-signaling)
1792+
/// 0x0d : Greater-than-or-equal (ordered, signaling)
1793+
/// 0x0e : Greater-than (ordered, signaling)
1794+
/// 0x0f : True (unordered, non-signaling)
1795+
/// 0x10 : Equal (ordered, signaling)
1796+
/// 0x11 : Less-than (ordered, non-signaling)
1797+
/// 0x12 : Less-than-or-equal (ordered, non-signaling)
1798+
/// 0x13 : Unordered (signaling)
1799+
/// 0x14 : Not-equal (unordered, signaling)
1800+
/// 0x15 : Not-less-than (unordered, non-signaling)
1801+
/// 0x16 : Not-less-than-or-equal (unordered, non-signaling)
1802+
/// 0x17 : Ordered (signaling)
1803+
/// 0x18 : Equal (unordered, signaling)
1804+
/// 0x19 : Not-greater-than-or-equal (unordered, non-signaling)
1805+
/// 0x1a : Not-greater-than (unordered, non-signaling)
1806+
/// 0x1b : False (ordered, signaling)
1807+
/// 0x1c : Not-equal (ordered, signaling)
1808+
/// 0x1d : Greater-than-or-equal (ordered, non-signaling)
1809+
/// 0x1e : Greater-than (ordered, non-signaling)
1810+
/// 0x1f : True (unordered, signaling)
17481811
/// \returns A 256-bit vector of [4 x double] containing the comparison results.
17491812
#define _mm256_cmp_pd(a, b, c) __extension__ ({ \
17501813
(__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
@@ -1771,17 +1834,38 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
17711834
/// \param c
17721835
/// An immediate integer operand, with bits [4:0] specifying which comparison
17731836
/// operation to use: \n
1774-
/// 00h, 08h, 10h, 18h: Equal \n
1775-
/// 01h, 09h, 11h, 19h: Less than \n
1776-
/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal
1777-
/// (swapped operands) \n
1778-
/// 03h, 0Bh, 13h, 1Bh: Unordered \n
1779-
/// 04h, 0Ch, 14h, 1Ch: Not equal \n
1780-
/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than
1781-
/// (swapped operands) \n
1782-
/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal
1783-
/// (swapped operands) \n
1784-
/// 07h, 0Fh, 17h, 1Fh: Ordered
1837+
/// 0x00 : Equal (ordered, non-signaling)
1838+
/// 0x01 : Less-than (ordered, signaling)
1839+
/// 0x02 : Less-than-or-equal (ordered, signaling)
1840+
/// 0x03 : Unordered (non-signaling)
1841+
/// 0x04 : Not-equal (unordered, non-signaling)
1842+
/// 0x05 : Not-less-than (unordered, signaling)
1843+
/// 0x06 : Not-less-than-or-equal (unordered, signaling)
1844+
/// 0x07 : Ordered (non-signaling)
1845+
/// 0x08 : Equal (unordered, non-signaling)
1846+
/// 0x09 : Not-greater-than-or-equal (unordered, signaling)
1847+
/// 0x0a : Not-greater-than (unordered, signaling)
1848+
/// 0x0b : False (ordered, non-signaling)
1849+
/// 0x0c : Not-equal (ordered, non-signaling)
1850+
/// 0x0d : Greater-than-or-equal (ordered, signaling)
1851+
/// 0x0e : Greater-than (ordered, signaling)
1852+
/// 0x0f : True (unordered, non-signaling)
1853+
/// 0x10 : Equal (ordered, signaling)
1854+
/// 0x11 : Less-than (ordered, non-signaling)
1855+
/// 0x12 : Less-than-or-equal (ordered, non-signaling)
1856+
/// 0x13 : Unordered (signaling)
1857+
/// 0x14 : Not-equal (unordered, signaling)
1858+
/// 0x15 : Not-less-than (unordered, non-signaling)
1859+
/// 0x16 : Not-less-than-or-equal (unordered, non-signaling)
1860+
/// 0x17 : Ordered (signaling)
1861+
/// 0x18 : Equal (unordered, signaling)
1862+
/// 0x19 : Not-greater-than-or-equal (unordered, non-signaling)
1863+
/// 0x1a : Not-greater-than (unordered, non-signaling)
1864+
/// 0x1b : False (ordered, signaling)
1865+
/// 0x1c : Not-equal (ordered, signaling)
1866+
/// 0x1d : Greater-than-or-equal (ordered, non-signaling)
1867+
/// 0x1e : Greater-than (ordered, non-signaling)
1868+
/// 0x1f : True (unordered, signaling)
17851869
/// \returns A 256-bit vector of [8 x float] containing the comparison results.
17861870
#define _mm256_cmp_ps(a, b, c) __extension__ ({ \
17871871
(__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
@@ -1807,17 +1891,38 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
18071891
/// \param c
18081892
/// An immediate integer operand, with bits [4:0] specifying which comparison
18091893
/// operation to use: \n
1810-
/// 00h, 08h, 10h, 18h: Equal \n
1811-
/// 01h, 09h, 11h, 19h: Less than \n
1812-
/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal
1813-
/// (swapped operands) \n
1814-
/// 03h, 0Bh, 13h, 1Bh: Unordered \n
1815-
/// 04h, 0Ch, 14h, 1Ch: Not equal \n
1816-
/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than
1817-
/// (swapped operands) \n
1818-
/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal
1819-
/// (swapped operands) \n
1820-
/// 07h, 0Fh, 17h, 1Fh: Ordered
1894+
/// 0x00 : Equal (ordered, non-signaling)
1895+
/// 0x01 : Less-than (ordered, signaling)
1896+
/// 0x02 : Less-than-or-equal (ordered, signaling)
1897+
/// 0x03 : Unordered (non-signaling)
1898+
/// 0x04 : Not-equal (unordered, non-signaling)
1899+
/// 0x05 : Not-less-than (unordered, signaling)
1900+
/// 0x06 : Not-less-than-or-equal (unordered, signaling)
1901+
/// 0x07 : Ordered (non-signaling)
1902+
/// 0x08 : Equal (unordered, non-signaling)
1903+
/// 0x09 : Not-greater-than-or-equal (unordered, signaling)
1904+
/// 0x0a : Not-greater-than (unordered, signaling)
1905+
/// 0x0b : False (ordered, non-signaling)
1906+
/// 0x0c : Not-equal (ordered, non-signaling)
1907+
/// 0x0d : Greater-than-or-equal (ordered, signaling)
1908+
/// 0x0e : Greater-than (ordered, signaling)
1909+
/// 0x0f : True (unordered, non-signaling)
1910+
/// 0x10 : Equal (ordered, signaling)
1911+
/// 0x11 : Less-than (ordered, non-signaling)
1912+
/// 0x12 : Less-than-or-equal (ordered, non-signaling)
1913+
/// 0x13 : Unordered (signaling)
1914+
/// 0x14 : Not-equal (unordered, signaling)
1915+
/// 0x15 : Not-less-than (unordered, non-signaling)
1916+
/// 0x16 : Not-less-than-or-equal (unordered, non-signaling)
1917+
/// 0x17 : Ordered (signaling)
1918+
/// 0x18 : Equal (unordered, signaling)
1919+
/// 0x19 : Not-greater-than-or-equal (unordered, non-signaling)
1920+
/// 0x1a : Not-greater-than (unordered, non-signaling)
1921+
/// 0x1b : False (ordered, signaling)
1922+
/// 0x1c : Not-equal (ordered, signaling)
1923+
/// 0x1d : Greater-than-or-equal (ordered, non-signaling)
1924+
/// 0x1e : Greater-than (ordered, non-signaling)
1925+
/// 0x1f : True (unordered, signaling)
18211926
/// \returns A 128-bit vector of [2 x double] containing the comparison results.
18221927
#define _mm_cmp_sd(a, b, c) __extension__ ({ \
18231928
(__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
@@ -1843,17 +1948,38 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
18431948
/// \param c
18441949
/// An immediate integer operand, with bits [4:0] specifying which comparison
18451950
/// operation to use: \n
1846-
/// 00h, 08h, 10h, 18h: Equal \n
1847-
/// 01h, 09h, 11h, 19h: Less than \n
1848-
/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal
1849-
/// (swapped operands) \n
1850-
/// 03h, 0Bh, 13h, 1Bh: Unordered \n
1851-
/// 04h, 0Ch, 14h, 1Ch: Not equal \n
1852-
/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than
1853-
/// (swapped operands) \n
1854-
/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal
1855-
/// (swapped operands) \n
1856-
/// 07h, 0Fh, 17h, 1Fh: Ordered
1951+
/// 0x00 : Equal (ordered, non-signaling)
1952+
/// 0x01 : Less-than (ordered, signaling)
1953+
/// 0x02 : Less-than-or-equal (ordered, signaling)
1954+
/// 0x03 : Unordered (non-signaling)
1955+
/// 0x04 : Not-equal (unordered, non-signaling)
1956+
/// 0x05 : Not-less-than (unordered, signaling)
1957+
/// 0x06 : Not-less-than-or-equal (unordered, signaling)
1958+
/// 0x07 : Ordered (non-signaling)
1959+
/// 0x08 : Equal (unordered, non-signaling)
1960+
/// 0x09 : Not-greater-than-or-equal (unordered, signaling)
1961+
/// 0x0a : Not-greater-than (unordered, signaling)
1962+
/// 0x0b : False (ordered, non-signaling)
1963+
/// 0x0c : Not-equal (ordered, non-signaling)
1964+
/// 0x0d : Greater-than-or-equal (ordered, signaling)
1965+
/// 0x0e : Greater-than (ordered, signaling)
1966+
/// 0x0f : True (unordered, non-signaling)
1967+
/// 0x10 : Equal (ordered, signaling)
1968+
/// 0x11 : Less-than (ordered, non-signaling)
1969+
/// 0x12 : Less-than-or-equal (ordered, non-signaling)
1970+
/// 0x13 : Unordered (signaling)
1971+
/// 0x14 : Not-equal (unordered, signaling)
1972+
/// 0x15 : Not-less-than (unordered, non-signaling)
1973+
/// 0x16 : Not-less-than-or-equal (unordered, non-signaling)
1974+
/// 0x17 : Ordered (signaling)
1975+
/// 0x18 : Equal (unordered, signaling)
1976+
/// 0x19 : Not-greater-than-or-equal (unordered, non-signaling)
1977+
/// 0x1a : Not-greater-than (unordered, non-signaling)
1978+
/// 0x1b : False (ordered, signaling)
1979+
/// 0x1c : Not-equal (ordered, signaling)
1980+
/// 0x1d : Greater-than-or-equal (ordered, non-signaling)
1981+
/// 0x1e : Greater-than (ordered, non-signaling)
1982+
/// 0x1f : True (unordered, signaling)
18571983
/// \returns A 128-bit vector of [4 x float] containing the comparison results.
18581984
#define _mm_cmp_ss(a, b, c) __extension__ ({ \
18591985
(__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \

0 commit comments

Comments
 (0)
Please sign in to comment.