Skip to content

Commit 59df818

Browse files
authored
Implement avx512 masked load and store intrinsics (#1254)
1 parent 27c2aed commit 59df818

File tree

3 files changed

+7251
-4388
lines changed

3 files changed

+7251
-4388
lines changed

crates/core_arch/avx512f.md

+73-73
Original file line numberDiff line numberDiff line change
@@ -1784,113 +1784,113 @@
17841784
* [x] [`_mm512_setzero_si512`]
17851785
* [x] [`_mm512_setzero`]
17861786
* [x] [`_mm512_load_epi32`]
1787-
* [ ] [`_mm512_mask_load_epi32`] //need i1
1788-
* [ ] [`_mm512_maskz_load_epi32`] //need i1
1787+
* [x] [`_mm512_mask_load_epi32`] //need i1
1788+
* [x] [`_mm512_maskz_load_epi32`] //need i1
17891789
* [x] [`_mm_load_epi32`]
1790-
* [_] [`_mm_mask_load_epi32`] //need i1
1791-
* [_] [`_mm_maskz_load_epi32`] //need i1
1790+
* [x] [`_mm_mask_load_epi32`] //need i1
1791+
* [x] [`_mm_maskz_load_epi32`] //need i1
17921792
* [x] [`_mm256_load_epi32`]
1793-
* [_] [`_mm256_mask_load_epi32`] //need i1
1794-
* [_] [`_mm256_maskz_load_epi32`] //need i1
1793+
* [x] [`_mm256_mask_load_epi32`] //need i1
1794+
* [x] [`_mm256_maskz_load_epi32`] //need i1
17951795
* [x] [`_mm512_load_epi64`]
1796-
* [ ] [`_mm512_mask_load_epi64`] //need i1
1797-
* [ ] [`_mm512_maskz_load_epi64`] //need i1
1796+
* [x] [`_mm512_mask_load_epi64`] //need i1
1797+
* [x] [`_mm512_maskz_load_epi64`] //need i1
17981798
* [x] [`_mm_load_epi64`] //need i1
1799-
* [_] [`_mm_mask_load_epi64`] //need i1
1800-
* [_] [`_mm_maskz_load_epi64`] //need i1
1799+
* [x] [`_mm_mask_load_epi64`] //need i1
1800+
* [x] [`_mm_maskz_load_epi64`] //need i1
18011801
* [x] [`_mm256_load_epi64`] //need i1
1802-
* [_] [`_mm256_mask_load_epi64`] //need i1
1803-
* [_] [`_mm256_maskz_load_epi64`] //need i1
1802+
* [x] [`_mm256_mask_load_epi64`] //need i1
1803+
* [x] [`_mm256_maskz_load_epi64`] //need i1
18041804
* [x] [`_mm512_load_ps`]
1805-
* [ ] [`_mm512_mask_load_ps`] //need i1
1806-
* [ ] [`_mm512_maskz_load_ps`] //need i1
1807-
* [_] [`_mm_maskz_load_ps`] //need i
1808-
* [_] [`_mm_mask_load_ps`] //need i1
1809-
* [_] [`_mm_maskz_load_ps`] //need i1
1810-
* [_] [`_mm256_mask_load_ps`] //need i1
1811-
* [_] [`_mm256_maskz_load_ps`] //need i1
1805+
* [x] [`_mm512_mask_load_ps`] //need i1
1806+
* [x] [`_mm512_maskz_load_ps`] //need i1
1807+
* [x] [`_mm_maskz_load_ps`] //need i
1808+
* [x] [`_mm_mask_load_ps`] //need i1
1809+
* [x] [`_mm_maskz_load_ps`] //need i1
1810+
* [x] [`_mm256_mask_load_ps`] //need i1
1811+
* [x] [`_mm256_maskz_load_ps`] //need i1
18121812
* [x] [`_mm512_load_pd`]
1813-
* [ ] [`_mm512_mask_load_pd`] //need i1
1814-
* [ ] [`_mm512_maskz_load_pd`] //need i1
1815-
* [_] [`_mm_mask_load_pd`] //need i1
1816-
* [_] [`_mm_maskz_load_pd`] //need i1
1817-
* [_] [`_mm256_mask_load_pd`] //need i1
1818-
* [_] [`_mm256_maskz_load_pd`] //need i1
1813+
* [x] [`_mm512_mask_load_pd`] //need i1
1814+
* [x] [`_mm512_maskz_load_pd`] //need i1
1815+
* [x] [`_mm_mask_load_pd`] //need i1
1816+
* [x] [`_mm_maskz_load_pd`] //need i1
1817+
* [x] [`_mm256_mask_load_pd`] //need i1
1818+
* [x] [`_mm256_maskz_load_pd`] //need i1
18191819
* [x] [`_mm512_load_si512`]
18201820
* [x] [`_mm512_loadu_epi32`]
1821-
* [ ] [`_mm512_mask_loadu_epi32`] //need i1
1821+
* [x] [`_mm512_mask_loadu_epi32`] //need i1
18221822
* [x] [`_mm_loadu_epi32`]
1823-
* [_] [`_mm_mask_loadu_epi32`] //need i1
1824-
* [_] [`_mm_maskz_loadu_epi32`] //need i1
1825-
* [ ] [`_mm512_maskz_loadu_epi32`] //need i1
1823+
* [x] [`_mm_mask_loadu_epi32`] //need i1
1824+
* [x] [`_mm_maskz_loadu_epi32`] //need i1
1825+
* [x] [`_mm512_maskz_loadu_epi32`] //need i1
18261826
* [x] [`_mm256_loadu_epi32`]
1827-
* [_] [`_mm256_mask_loadu_epi32`] //need i1
1828-
* [_] [`_mm256_maskz_loadu_epi32`] //need i1
1827+
* [x] [`_mm256_mask_loadu_epi32`] //need i1
1828+
* [x] [`_mm256_maskz_loadu_epi32`] //need i1
18291829
* [x] [`_mm512_loadu_epi64`]
1830-
* [ ] [`_mm512_mask_loadu_epi64`] //need i1
1831-
* [ ] [`_mm512_maskz_loadu_epi64`] //need i1
1830+
* [x] [`_mm512_mask_loadu_epi64`] //need i1
1831+
* [x] [`_mm512_maskz_loadu_epi64`] //need i1
18321832
* [x] [`_mm_loadu_epi64`]
1833-
* [_] [`_mm_mask_loadu_epi64`] //need i1
1834-
* [_] [`_mm_maskz_loadu_epi64`] //need i1
1833+
* [x] [`_mm_mask_loadu_epi64`] //need i1
1834+
* [x] [`_mm_maskz_loadu_epi64`] //need i1
18351835
* [x] [`_mm256_loadu_epi64`]
1836-
* [_] [`_mm256_mask_loadu_epi64`] //need i1
1837-
* [_] [`_mm256_maskz_loadu_epi64`] //need i1
1836+
* [x] [`_mm256_mask_loadu_epi64`] //need i1
1837+
* [x] [`_mm256_maskz_loadu_epi64`] //need i1
18381838
* [x] [`_mm512_loadu_ps`]
1839-
* [ ] [`_mm512_mask_loadu_ps`] //need i1
1840-
* [ ] [`_mm512_maskz_loadu_ps`] //need i1
1841-
* [_] [`_mm_mask_loadu_ps`] //need i1
1842-
* [_] [`_mm_maskz_loadu_ps`] //need i1
1843-
* [_] [`_mm256_mask_loadu_ps`] //need i1
1844-
* [_] [`_mm256_maskz_loadu_ps`] //need i1
1839+
* [x] [`_mm512_mask_loadu_ps`] //need i1
1840+
* [x] [`_mm512_maskz_loadu_ps`] //need i1
1841+
* [x] [`_mm_mask_loadu_ps`] //need i1
1842+
* [x] [`_mm_maskz_loadu_ps`] //need i1
1843+
* [x] [`_mm256_mask_loadu_ps`] //need i1
1844+
* [x] [`_mm256_maskz_loadu_ps`] //need i1
18451845
* [x] [`_mm512_loadu_pd`]
1846-
* [ ] [`_mm512_mask_loadu_pd`] //need i1
1847-
* [ ] [`_mm512_maskz_loadu_pd`] //need i1
1848-
* [_] [`_mm_mask_loadu_pd`] //need i1
1849-
* [_] [`_mm_maskz_loadu_pd`] //need i1
1850-
* [_] [`_mm256_mask_loadu_pd`] //need i1
1851-
* [_] [`_mm256_maskz_loadu_pd`] //need i1
1846+
* [x] [`_mm512_mask_loadu_pd`] //need i1
1847+
* [x] [`_mm512_maskz_loadu_pd`] //need i1
1848+
* [x] [`_mm_mask_loadu_pd`] //need i1
1849+
* [x] [`_mm_maskz_loadu_pd`] //need i1
1850+
* [x] [`_mm256_mask_loadu_pd`] //need i1
1851+
* [x] [`_mm256_maskz_loadu_pd`] //need i1
18521852
* [x] [`_mm512_loadu_si512`]
18531853
* [x] [`_mm512_store_epi32`]
1854-
* [ ] [`_mm512_mask_store_epi32`] //need i1
1855-
* [_] [`_mm_mask_store_epi32`] //need i1
1854+
* [x] [`_mm512_mask_store_epi32`] //need i1
1855+
* [x] [`_mm_mask_store_epi32`] //need i1
18561856
* [x] [`_mm_store_epi32`]
1857-
* [_] [`_mm256_mask_store_epi32`] //need i1
1857+
* [x] [`_mm256_mask_store_epi32`] //need i1
18581858
* [x] [`_mm256_store_epi32`]
18591859
* [x] [`_mm512_store_epi64`]
1860-
* [ ] [`_mm512_mask_store_epi64`] //need i1
1861-
* [_] [`_mm_mask_store_epi64`] //need i1
1860+
* [x] [`_mm512_mask_store_epi64`] //need i1
1861+
* [x] [`_mm_mask_store_epi64`] //need i1
18621862
* [x] [`_mm_store_epi64`]
1863-
* [_] [`_mm256_mask_store_epi64`] //need i1
1863+
* [x] [`_mm256_mask_store_epi64`] //need i1
18641864
* [x] [`_mm256_store_epi64`]
18651865
* [x] [`_mm512_store_ps`]
1866-
* [ ] [`_mm512_mask_store_ps`] //need i1
1867-
* [_] [`_mm_mask_store_ps`] //need i1
1868-
* [_] [`_mm256_mask_store_ps`] //need i1
1866+
* [x] [`_mm512_mask_store_ps`] //need i1
1867+
* [x] [`_mm_mask_store_ps`] //need i1
1868+
* [x] [`_mm256_mask_store_ps`] //need i1
18691869
* [x] [`_mm512_store_pd`]
1870-
* [ ] [`_mm512_mask_store_pd`] //need i1
1871-
* [_] [`_mm_mask_store_pd`] //need i1
1872-
* [_] [`_mm256_mask_store_pd`] //need i1
1870+
* [x] [`_mm512_mask_store_pd`] //need i1
1871+
* [x] [`_mm_mask_store_pd`] //need i1
1872+
* [x] [`_mm256_mask_store_pd`] //need i1
18731873
* [x] [`_mm512_store_si512`]
18741874
* [x] [`_mm512_storeu_epi32`]
1875-
* [ ] [`_mm512_mask_storeu_epi32`] //need i1
1876-
* [_] [`_mm_mask_storeu_epi32`] //need i1
1875+
* [x] [`_mm512_mask_storeu_epi32`] //need i1
1876+
* [x] [`_mm_mask_storeu_epi32`] //need i1
18771877
* [x] [`_mm_storeu_epi32`]
1878-
* [_] [`_mm256_mask_storeu_epi32`] //need i1
1878+
* [x] [`_mm256_mask_storeu_epi32`] //need i1
18791879
* [x] [`_mm256_storeu_epi32`]
18801880
* [x] [`_mm512_storeu_epi64`]
1881-
* [ ] [`_mm512_mask_storeu_epi64`] //need i1
1882-
* [_] [`_mm_mask_storeu_epi64`] //need i1
1881+
* [x] [`_mm512_mask_storeu_epi64`] //need i1
1882+
* [x] [`_mm_mask_storeu_epi64`] //need i1
18831883
* [x] [`_mm_storeu_epi64`]
1884-
* [_] [`_mm256_mask_storeu_epi64`] //need i1
1884+
* [x] [`_mm256_mask_storeu_epi64`] //need i1
18851885
* [x] [`_mm256_storeu_epi64`]
18861886
* [x] [`_mm512_storeu_ps`]
1887-
* [ ] [`_mm512_mask_storeu_ps`] //need i1
1888-
* [_] [`_mm_mask_storeu_ps`] //need i1
1889-
* [_] [`_mm256_mask_storeu_ps`] //need i1
1887+
* [x] [`_mm512_mask_storeu_ps`] //need i1
1888+
* [x] [`_mm_mask_storeu_ps`] //need i1
1889+
* [x] [`_mm256_mask_storeu_ps`] //need i1
18901890
* [x] [`_mm512_storeu_pd`]
1891-
* [ ] [`_mm512_mask_storeu_pd`] //need i1
1892-
* [_] [`_mm_mask_storeu_pd`] //need i1
1893-
* [_] [`_mm256_mask_storeu_pd`] //need i1
1891+
* [x] [`_mm512_mask_storeu_pd`] //need i1
1892+
* [x] [`_mm_mask_storeu_pd`] //need i1
1893+
* [x] [`_mm256_mask_storeu_pd`] //need i1
18941894
* [x] [`_mm512_storeu_si512`]
18951895
* [ ] [`_mm512_stream_load_si512`] //stream_load_si256, ... not implment yet
18961896
* [x] [`_mm512_stream_pd`]

0 commit comments

Comments
 (0)