forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit3dc2d62
committed
Use Intel SSE 4.2 CRC instructions where available.
Modern x86 and x86-64 processors with SSE 4.2 support have specialinstructions, crc32b and crc32q, for calculating CRC-32C. They greatlyspeed up CRC calculation.Whether the instructions can be used or not depends on the compiler and thetarget architecture. If generation of SSE 4.2 instructions is allowed forthe target (-msse4.2 flag on gcc and clang), use them. If they are notallowed by default, but the compiler supports the -msse4.2 flag to enablethem, compile just the CRC-32C function with -msse4.2 flag, and check atruntime whether the processor we're running on supports it. If it doesn't,fall back to the slicing-by-8 algorithm. (With the common defaults oncurrent operating systems, the runtime-check variant is what you get inpractice.)Abhijit Menon-Sen, heavily modified by me, reviewed by Andres Freund.1 parent4f700bc commit3dc2d62
File tree
11 files changed
+534
-5
lines changed- config
- src
- include
- port
- port
- tools/msvc
11 files changed
+534
-5
lines changedLines changed: 27 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
473 | 473 |
| |
474 | 474 |
| |
475 | 475 |
| |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + |
Lines changed: 212 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
650 | 650 |
| |
651 | 651 |
| |
652 | 652 |
| |
| 653 | + | |
| 654 | + | |
653 | 655 |
| |
654 | 656 |
| |
655 | 657 |
| |
| |||
14095 | 14097 |
| |
14096 | 14098 |
| |
14097 | 14099 |
| |
| 14100 | + | |
| 14101 | + | |
| 14102 | + | |
| 14103 | + | |
| 14104 | + | |
| 14105 | + | |
| 14106 | + | |
| 14107 | + | |
| 14108 | + | |
| 14109 | + | |
| 14110 | + | |
| 14111 | + | |
| 14112 | + | |
| 14113 | + | |
| 14114 | + | |
| 14115 | + | |
| 14116 | + | |
| 14117 | + | |
| 14118 | + | |
| 14119 | + | |
| 14120 | + | |
| 14121 | + | |
| 14122 | + | |
| 14123 | + | |
| 14124 | + | |
| 14125 | + | |
| 14126 | + | |
| 14127 | + | |
| 14128 | + | |
| 14129 | + | |
| 14130 | + | |
| 14131 | + | |
| 14132 | + | |
| 14133 | + | |
| 14134 | + | |
| 14135 | + | |
| 14136 | + | |
| 14137 | + | |
| 14138 | + | |
| 14139 | + | |
| 14140 | + | |
| 14141 | + | |
| 14142 | + | |
| 14143 | + | |
| 14144 | + | |
| 14145 | + | |
| 14146 | + | |
| 14147 | + | |
| 14148 | + | |
| 14149 | + | |
| 14150 | + | |
| 14151 | + | |
| 14152 | + | |
| 14153 | + | |
| 14154 | + | |
| 14155 | + | |
| 14156 | + | |
| 14157 | + | |
| 14158 | + | |
| 14159 | + | |
| 14160 | + | |
| 14161 | + | |
| 14162 | + | |
| 14163 | + | |
| 14164 | + | |
| 14165 | + | |
| 14166 | + | |
| 14167 | + | |
| 14168 | + | |
| 14169 | + | |
| 14170 | + | |
| 14171 | + | |
| 14172 | + | |
| 14173 | + | |
| 14174 | + | |
| 14175 | + | |
| 14176 | + | |
| 14177 | + | |
| 14178 | + | |
| 14179 | + | |
| 14180 | + | |
| 14181 | + | |
| 14182 | + | |
| 14183 | + | |
| 14184 | + | |
| 14185 | + | |
| 14186 | + | |
| 14187 | + | |
| 14188 | + | |
| 14189 | + | |
| 14190 | + | |
| 14191 | + | |
| 14192 | + | |
| 14193 | + | |
| 14194 | + | |
| 14195 | + | |
| 14196 | + | |
| 14197 | + | |
| 14198 | + | |
| 14199 | + | |
| 14200 | + | |
| 14201 | + | |
| 14202 | + | |
| 14203 | + | |
| 14204 | + | |
| 14205 | + | |
| 14206 | + | |
| 14207 | + | |
| 14208 | + | |
| 14209 | + | |
| 14210 | + | |
| 14211 | + | |
| 14212 | + | |
| 14213 | + | |
| 14214 | + | |
| 14215 | + | |
| 14216 | + | |
| 14217 | + | |
| 14218 | + | |
| 14219 | + | |
| 14220 | + | |
| 14221 | + | |
| 14222 | + | |
| 14223 | + | |
| 14224 | + | |
| 14225 | + | |
| 14226 | + | |
| 14227 | + | |
| 14228 | + | |
| 14229 | + | |
| 14230 | + | |
| 14231 | + | |
| 14232 | + | |
| 14233 | + | |
| 14234 | + | |
| 14235 | + | |
| 14236 | + | |
| 14237 | + | |
| 14238 | + | |
| 14239 | + | |
| 14240 | + | |
| 14241 | + | |
| 14242 | + | |
| 14243 | + | |
| 14244 | + | |
| 14245 | + | |
| 14246 | + | |
| 14247 | + | |
| 14248 | + | |
| 14249 | + | |
| 14250 | + | |
| 14251 | + | |
| 14252 | + | |
| 14253 | + | |
| 14254 | + | |
| 14255 | + | |
| 14256 | + | |
| 14257 | + | |
| 14258 | + | |
| 14259 | + | |
| 14260 | + | |
| 14261 | + | |
| 14262 | + | |
| 14263 | + | |
| 14264 | + | |
| 14265 | + | |
| 14266 | + | |
| 14267 | + | |
| 14268 | + | |
| 14269 | + | |
| 14270 | + | |
| 14271 | + | |
| 14272 | + | |
| 14273 | + | |
| 14274 | + | |
| 14275 | + | |
| 14276 | + | |
| 14277 | + | |
| 14278 | + | |
| 14279 | + | |
| 14280 | + | |
| 14281 | + | |
| 14282 | + | |
| 14283 | + | |
| 14284 | + | |
| 14285 | + | |
| 14286 | + | |
| 14287 | + | |
| 14288 | + | |
| 14289 | + | |
| 14290 | + | |
| 14291 | + | |
| 14292 | + | |
| 14293 | + | |
| 14294 | + | |
| 14295 | + | |
| 14296 | + | |
| 14297 | + | |
| 14298 | + | |
| 14299 | + | |
| 14300 | + | |
| 14301 | + | |
| 14302 | + | |
| 14303 | + | |
| 14304 | + | |
| 14305 | + | |
| 14306 | + | |
| 14307 | + | |
| 14308 | + | |
| 14309 | + | |
14098 | 14310 |
| |
14099 | 14311 |
| |
14100 | 14312 |
| |
|
Lines changed: 78 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1790 | 1790 |
| |
1791 | 1791 |
| |
1792 | 1792 |
| |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
1793 | 1871 |
| |
1794 | 1872 |
| |
1795 | 1873 |
| |
|
Lines changed: 4 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
225 | 225 |
| |
226 | 226 |
| |
227 | 227 |
| |
| 228 | + | |
228 | 229 |
| |
229 | 230 |
| |
230 | 231 |
| |
| |||
548 | 549 |
| |
549 | 550 |
| |
550 | 551 |
| |
| 552 | + | |
| 553 | + | |
| 554 | + | |
551 | 555 |
| |
552 | 556 |
| |
553 | 557 |
| |
|
Lines changed: 15 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
675 | 675 |
| |
676 | 676 |
| |
677 | 677 |
| |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
678 | 684 |
| |
679 | 685 |
| |
680 | 686 |
| |
| |||
818 | 824 |
| |
819 | 825 |
| |
820 | 826 |
| |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
821 | 836 |
| |
822 | 837 |
| |
823 | 838 |
| |
|
0 commit comments
Comments
(0)