Added OpenCL source.
This commit is contained in:
parent
2a5110aa04
commit
27e862da62
30 changed files with 10922 additions and 1 deletions
642
src/backend/opencl/cl/rx/aes.cl
Normal file
642
src/backend/opencl/cl/rx/aes.cl
Normal file
|
@ -0,0 +1,642 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
__constant static const uint AES_TABLE[2048] =
|
||||
{
|
||||
0xa56363c6U, 0x847c7cf8U, 0x997777eeU, 0x8d7b7bf6U,
|
||||
0x0df2f2ffU, 0xbd6b6bd6U, 0xb16f6fdeU, 0x54c5c591U,
|
||||
0x50303060U, 0x03010102U, 0xa96767ceU, 0x7d2b2b56U,
|
||||
0x19fefee7U, 0x62d7d7b5U, 0xe6abab4dU, 0x9a7676ecU,
|
||||
0x45caca8fU, 0x9d82821fU, 0x40c9c989U, 0x877d7dfaU,
|
||||
0x15fafaefU, 0xeb5959b2U, 0xc947478eU, 0x0bf0f0fbU,
|
||||
0xecadad41U, 0x67d4d4b3U, 0xfda2a25fU, 0xeaafaf45U,
|
||||
0xbf9c9c23U, 0xf7a4a453U, 0x967272e4U, 0x5bc0c09bU,
|
||||
0xc2b7b775U, 0x1cfdfde1U, 0xae93933dU, 0x6a26264cU,
|
||||
0x5a36366cU, 0x413f3f7eU, 0x02f7f7f5U, 0x4fcccc83U,
|
||||
0x5c343468U, 0xf4a5a551U, 0x34e5e5d1U, 0x08f1f1f9U,
|
||||
0x937171e2U, 0x73d8d8abU, 0x53313162U, 0x3f15152aU,
|
||||
0x0c040408U, 0x52c7c795U, 0x65232346U, 0x5ec3c39dU,
|
||||
0x28181830U, 0xa1969637U, 0x0f05050aU, 0xb59a9a2fU,
|
||||
0x0907070eU, 0x36121224U, 0x9b80801bU, 0x3de2e2dfU,
|
||||
0x26ebebcdU, 0x6927274eU, 0xcdb2b27fU, 0x9f7575eaU,
|
||||
0x1b090912U, 0x9e83831dU, 0x742c2c58U, 0x2e1a1a34U,
|
||||
0x2d1b1b36U, 0xb26e6edcU, 0xee5a5ab4U, 0xfba0a05bU,
|
||||
0xf65252a4U, 0x4d3b3b76U, 0x61d6d6b7U, 0xceb3b37dU,
|
||||
0x7b292952U, 0x3ee3e3ddU, 0x712f2f5eU, 0x97848413U,
|
||||
0xf55353a6U, 0x68d1d1b9U, 0x00000000U, 0x2cededc1U,
|
||||
0x60202040U, 0x1ffcfce3U, 0xc8b1b179U, 0xed5b5bb6U,
|
||||
0xbe6a6ad4U, 0x46cbcb8dU, 0xd9bebe67U, 0x4b393972U,
|
||||
0xde4a4a94U, 0xd44c4c98U, 0xe85858b0U, 0x4acfcf85U,
|
||||
0x6bd0d0bbU, 0x2aefefc5U, 0xe5aaaa4fU, 0x16fbfbedU,
|
||||
0xc5434386U, 0xd74d4d9aU, 0x55333366U, 0x94858511U,
|
||||
0xcf45458aU, 0x10f9f9e9U, 0x06020204U, 0x817f7ffeU,
|
||||
0xf05050a0U, 0x443c3c78U, 0xba9f9f25U, 0xe3a8a84bU,
|
||||
0xf35151a2U, 0xfea3a35dU, 0xc0404080U, 0x8a8f8f05U,
|
||||
0xad92923fU, 0xbc9d9d21U, 0x48383870U, 0x04f5f5f1U,
|
||||
0xdfbcbc63U, 0xc1b6b677U, 0x75dadaafU, 0x63212142U,
|
||||
0x30101020U, 0x1affffe5U, 0x0ef3f3fdU, 0x6dd2d2bfU,
|
||||
0x4ccdcd81U, 0x140c0c18U, 0x35131326U, 0x2fececc3U,
|
||||
0xe15f5fbeU, 0xa2979735U, 0xcc444488U, 0x3917172eU,
|
||||
0x57c4c493U, 0xf2a7a755U, 0x827e7efcU, 0x473d3d7aU,
|
||||
0xac6464c8U, 0xe75d5dbaU, 0x2b191932U, 0x957373e6U,
|
||||
0xa06060c0U, 0x98818119U, 0xd14f4f9eU, 0x7fdcdca3U,
|
||||
0x66222244U, 0x7e2a2a54U, 0xab90903bU, 0x8388880bU,
|
||||
0xca46468cU, 0x29eeeec7U, 0xd3b8b86bU, 0x3c141428U,
|
||||
0x79dedea7U, 0xe25e5ebcU, 0x1d0b0b16U, 0x76dbdbadU,
|
||||
0x3be0e0dbU, 0x56323264U, 0x4e3a3a74U, 0x1e0a0a14U,
|
||||
0xdb494992U, 0x0a06060cU, 0x6c242448U, 0xe45c5cb8U,
|
||||
0x5dc2c29fU, 0x6ed3d3bdU, 0xefacac43U, 0xa66262c4U,
|
||||
0xa8919139U, 0xa4959531U, 0x37e4e4d3U, 0x8b7979f2U,
|
||||
0x32e7e7d5U, 0x43c8c88bU, 0x5937376eU, 0xb76d6ddaU,
|
||||
0x8c8d8d01U, 0x64d5d5b1U, 0xd24e4e9cU, 0xe0a9a949U,
|
||||
0xb46c6cd8U, 0xfa5656acU, 0x07f4f4f3U, 0x25eaeacfU,
|
||||
0xaf6565caU, 0x8e7a7af4U, 0xe9aeae47U, 0x18080810U,
|
||||
0xd5baba6fU, 0x887878f0U, 0x6f25254aU, 0x722e2e5cU,
|
||||
0x241c1c38U, 0xf1a6a657U, 0xc7b4b473U, 0x51c6c697U,
|
||||
0x23e8e8cbU, 0x7cdddda1U, 0x9c7474e8U, 0x211f1f3eU,
|
||||
0xdd4b4b96U, 0xdcbdbd61U, 0x868b8b0dU, 0x858a8a0fU,
|
||||
0x907070e0U, 0x423e3e7cU, 0xc4b5b571U, 0xaa6666ccU,
|
||||
0xd8484890U, 0x05030306U, 0x01f6f6f7U, 0x120e0e1cU,
|
||||
0xa36161c2U, 0x5f35356aU, 0xf95757aeU, 0xd0b9b969U,
|
||||
0x91868617U, 0x58c1c199U, 0x271d1d3aU, 0xb99e9e27U,
|
||||
0x38e1e1d9U, 0x13f8f8ebU, 0xb398982bU, 0x33111122U,
|
||||
0xbb6969d2U, 0x70d9d9a9U, 0x898e8e07U, 0xa7949433U,
|
||||
0xb69b9b2dU, 0x221e1e3cU, 0x92878715U, 0x20e9e9c9U,
|
||||
0x49cece87U, 0xff5555aaU, 0x78282850U, 0x7adfdfa5U,
|
||||
0x8f8c8c03U, 0xf8a1a159U, 0x80898909U, 0x170d0d1aU,
|
||||
0xdabfbf65U, 0x31e6e6d7U, 0xc6424284U, 0xb86868d0U,
|
||||
0xc3414182U, 0xb0999929U, 0x772d2d5aU, 0x110f0f1eU,
|
||||
0xcbb0b07bU, 0xfc5454a8U, 0xd6bbbb6dU, 0x3a16162cU,
|
||||
0x6363c6a5U, 0x7c7cf884U, 0x7777ee99U, 0x7b7bf68dU,
|
||||
0xf2f2ff0dU, 0x6b6bd6bdU, 0x6f6fdeb1U, 0xc5c59154U,
|
||||
0x30306050U, 0x01010203U, 0x6767cea9U, 0x2b2b567dU,
|
||||
0xfefee719U, 0xd7d7b562U, 0xabab4de6U, 0x7676ec9aU,
|
||||
0xcaca8f45U, 0x82821f9dU, 0xc9c98940U, 0x7d7dfa87U,
|
||||
0xfafaef15U, 0x5959b2ebU, 0x47478ec9U, 0xf0f0fb0bU,
|
||||
0xadad41ecU, 0xd4d4b367U, 0xa2a25ffdU, 0xafaf45eaU,
|
||||
0x9c9c23bfU, 0xa4a453f7U, 0x7272e496U, 0xc0c09b5bU,
|
||||
0xb7b775c2U, 0xfdfde11cU, 0x93933daeU, 0x26264c6aU,
|
||||
0x36366c5aU, 0x3f3f7e41U, 0xf7f7f502U, 0xcccc834fU,
|
||||
0x3434685cU, 0xa5a551f4U, 0xe5e5d134U, 0xf1f1f908U,
|
||||
0x7171e293U, 0xd8d8ab73U, 0x31316253U, 0x15152a3fU,
|
||||
0x0404080cU, 0xc7c79552U, 0x23234665U, 0xc3c39d5eU,
|
||||
0x18183028U, 0x969637a1U, 0x05050a0fU, 0x9a9a2fb5U,
|
||||
0x07070e09U, 0x12122436U, 0x80801b9bU, 0xe2e2df3dU,
|
||||
0xebebcd26U, 0x27274e69U, 0xb2b27fcdU, 0x7575ea9fU,
|
||||
0x0909121bU, 0x83831d9eU, 0x2c2c5874U, 0x1a1a342eU,
|
||||
0x1b1b362dU, 0x6e6edcb2U, 0x5a5ab4eeU, 0xa0a05bfbU,
|
||||
0x5252a4f6U, 0x3b3b764dU, 0xd6d6b761U, 0xb3b37dceU,
|
||||
0x2929527bU, 0xe3e3dd3eU, 0x2f2f5e71U, 0x84841397U,
|
||||
0x5353a6f5U, 0xd1d1b968U, 0x00000000U, 0xededc12cU,
|
||||
0x20204060U, 0xfcfce31fU, 0xb1b179c8U, 0x5b5bb6edU,
|
||||
0x6a6ad4beU, 0xcbcb8d46U, 0xbebe67d9U, 0x3939724bU,
|
||||
0x4a4a94deU, 0x4c4c98d4U, 0x5858b0e8U, 0xcfcf854aU,
|
||||
0xd0d0bb6bU, 0xefefc52aU, 0xaaaa4fe5U, 0xfbfbed16U,
|
||||
0x434386c5U, 0x4d4d9ad7U, 0x33336655U, 0x85851194U,
|
||||
0x45458acfU, 0xf9f9e910U, 0x02020406U, 0x7f7ffe81U,
|
||||
0x5050a0f0U, 0x3c3c7844U, 0x9f9f25baU, 0xa8a84be3U,
|
||||
0x5151a2f3U, 0xa3a35dfeU, 0x404080c0U, 0x8f8f058aU,
|
||||
0x92923fadU, 0x9d9d21bcU, 0x38387048U, 0xf5f5f104U,
|
||||
0xbcbc63dfU, 0xb6b677c1U, 0xdadaaf75U, 0x21214263U,
|
||||
0x10102030U, 0xffffe51aU, 0xf3f3fd0eU, 0xd2d2bf6dU,
|
||||
0xcdcd814cU, 0x0c0c1814U, 0x13132635U, 0xececc32fU,
|
||||
0x5f5fbee1U, 0x979735a2U, 0x444488ccU, 0x17172e39U,
|
||||
0xc4c49357U, 0xa7a755f2U, 0x7e7efc82U, 0x3d3d7a47U,
|
||||
0x6464c8acU, 0x5d5dbae7U, 0x1919322bU, 0x7373e695U,
|
||||
0x6060c0a0U, 0x81811998U, 0x4f4f9ed1U, 0xdcdca37fU,
|
||||
0x22224466U, 0x2a2a547eU, 0x90903babU, 0x88880b83U,
|
||||
0x46468ccaU, 0xeeeec729U, 0xb8b86bd3U, 0x1414283cU,
|
||||
0xdedea779U, 0x5e5ebce2U, 0x0b0b161dU, 0xdbdbad76U,
|
||||
0xe0e0db3bU, 0x32326456U, 0x3a3a744eU, 0x0a0a141eU,
|
||||
0x494992dbU, 0x06060c0aU, 0x2424486cU, 0x5c5cb8e4U,
|
||||
0xc2c29f5dU, 0xd3d3bd6eU, 0xacac43efU, 0x6262c4a6U,
|
||||
0x919139a8U, 0x959531a4U, 0xe4e4d337U, 0x7979f28bU,
|
||||
0xe7e7d532U, 0xc8c88b43U, 0x37376e59U, 0x6d6ddab7U,
|
||||
0x8d8d018cU, 0xd5d5b164U, 0x4e4e9cd2U, 0xa9a949e0U,
|
||||
0x6c6cd8b4U, 0x5656acfaU, 0xf4f4f307U, 0xeaeacf25U,
|
||||
0x6565caafU, 0x7a7af48eU, 0xaeae47e9U, 0x08081018U,
|
||||
0xbaba6fd5U, 0x7878f088U, 0x25254a6fU, 0x2e2e5c72U,
|
||||
0x1c1c3824U, 0xa6a657f1U, 0xb4b473c7U, 0xc6c69751U,
|
||||
0xe8e8cb23U, 0xdddda17cU, 0x7474e89cU, 0x1f1f3e21U,
|
||||
0x4b4b96ddU, 0xbdbd61dcU, 0x8b8b0d86U, 0x8a8a0f85U,
|
||||
0x7070e090U, 0x3e3e7c42U, 0xb5b571c4U, 0x6666ccaaU,
|
||||
0x484890d8U, 0x03030605U, 0xf6f6f701U, 0x0e0e1c12U,
|
||||
0x6161c2a3U, 0x35356a5fU, 0x5757aef9U, 0xb9b969d0U,
|
||||
0x86861791U, 0xc1c19958U, 0x1d1d3a27U, 0x9e9e27b9U,
|
||||
0xe1e1d938U, 0xf8f8eb13U, 0x98982bb3U, 0x11112233U,
|
||||
0x6969d2bbU, 0xd9d9a970U, 0x8e8e0789U, 0x949433a7U,
|
||||
0x9b9b2db6U, 0x1e1e3c22U, 0x87871592U, 0xe9e9c920U,
|
||||
0xcece8749U, 0x5555aaffU, 0x28285078U, 0xdfdfa57aU,
|
||||
0x8c8c038fU, 0xa1a159f8U, 0x89890980U, 0x0d0d1a17U,
|
||||
0xbfbf65daU, 0xe6e6d731U, 0x424284c6U, 0x6868d0b8U,
|
||||
0x414182c3U, 0x999929b0U, 0x2d2d5a77U, 0x0f0f1e11U,
|
||||
0xb0b07bcbU, 0x5454a8fcU, 0xbbbb6dd6U, 0x16162c3aU,
|
||||
0x63c6a563U, 0x7cf8847cU, 0x77ee9977U, 0x7bf68d7bU,
|
||||
0xf2ff0df2U, 0x6bd6bd6bU, 0x6fdeb16fU, 0xc59154c5U,
|
||||
0x30605030U, 0x01020301U, 0x67cea967U, 0x2b567d2bU,
|
||||
0xfee719feU, 0xd7b562d7U, 0xab4de6abU, 0x76ec9a76U,
|
||||
0xca8f45caU, 0x821f9d82U, 0xc98940c9U, 0x7dfa877dU,
|
||||
0xfaef15faU, 0x59b2eb59U, 0x478ec947U, 0xf0fb0bf0U,
|
||||
0xad41ecadU, 0xd4b367d4U, 0xa25ffda2U, 0xaf45eaafU,
|
||||
0x9c23bf9cU, 0xa453f7a4U, 0x72e49672U, 0xc09b5bc0U,
|
||||
0xb775c2b7U, 0xfde11cfdU, 0x933dae93U, 0x264c6a26U,
|
||||
0x366c5a36U, 0x3f7e413fU, 0xf7f502f7U, 0xcc834fccU,
|
||||
0x34685c34U, 0xa551f4a5U, 0xe5d134e5U, 0xf1f908f1U,
|
||||
0x71e29371U, 0xd8ab73d8U, 0x31625331U, 0x152a3f15U,
|
||||
0x04080c04U, 0xc79552c7U, 0x23466523U, 0xc39d5ec3U,
|
||||
0x18302818U, 0x9637a196U, 0x050a0f05U, 0x9a2fb59aU,
|
||||
0x070e0907U, 0x12243612U, 0x801b9b80U, 0xe2df3de2U,
|
||||
0xebcd26ebU, 0x274e6927U, 0xb27fcdb2U, 0x75ea9f75U,
|
||||
0x09121b09U, 0x831d9e83U, 0x2c58742cU, 0x1a342e1aU,
|
||||
0x1b362d1bU, 0x6edcb26eU, 0x5ab4ee5aU, 0xa05bfba0U,
|
||||
0x52a4f652U, 0x3b764d3bU, 0xd6b761d6U, 0xb37dceb3U,
|
||||
0x29527b29U, 0xe3dd3ee3U, 0x2f5e712fU, 0x84139784U,
|
||||
0x53a6f553U, 0xd1b968d1U, 0x00000000U, 0xedc12cedU,
|
||||
0x20406020U, 0xfce31ffcU, 0xb179c8b1U, 0x5bb6ed5bU,
|
||||
0x6ad4be6aU, 0xcb8d46cbU, 0xbe67d9beU, 0x39724b39U,
|
||||
0x4a94de4aU, 0x4c98d44cU, 0x58b0e858U, 0xcf854acfU,
|
||||
0xd0bb6bd0U, 0xefc52aefU, 0xaa4fe5aaU, 0xfbed16fbU,
|
||||
0x4386c543U, 0x4d9ad74dU, 0x33665533U, 0x85119485U,
|
||||
0x458acf45U, 0xf9e910f9U, 0x02040602U, 0x7ffe817fU,
|
||||
0x50a0f050U, 0x3c78443cU, 0x9f25ba9fU, 0xa84be3a8U,
|
||||
0x51a2f351U, 0xa35dfea3U, 0x4080c040U, 0x8f058a8fU,
|
||||
0x923fad92U, 0x9d21bc9dU, 0x38704838U, 0xf5f104f5U,
|
||||
0xbc63dfbcU, 0xb677c1b6U, 0xdaaf75daU, 0x21426321U,
|
||||
0x10203010U, 0xffe51affU, 0xf3fd0ef3U, 0xd2bf6dd2U,
|
||||
0xcd814ccdU, 0x0c18140cU, 0x13263513U, 0xecc32fecU,
|
||||
0x5fbee15fU, 0x9735a297U, 0x4488cc44U, 0x172e3917U,
|
||||
0xc49357c4U, 0xa755f2a7U, 0x7efc827eU, 0x3d7a473dU,
|
||||
0x64c8ac64U, 0x5dbae75dU, 0x19322b19U, 0x73e69573U,
|
||||
0x60c0a060U, 0x81199881U, 0x4f9ed14fU, 0xdca37fdcU,
|
||||
0x22446622U, 0x2a547e2aU, 0x903bab90U, 0x880b8388U,
|
||||
0x468cca46U, 0xeec729eeU, 0xb86bd3b8U, 0x14283c14U,
|
||||
0xdea779deU, 0x5ebce25eU, 0x0b161d0bU, 0xdbad76dbU,
|
||||
0xe0db3be0U, 0x32645632U, 0x3a744e3aU, 0x0a141e0aU,
|
||||
0x4992db49U, 0x060c0a06U, 0x24486c24U, 0x5cb8e45cU,
|
||||
0xc29f5dc2U, 0xd3bd6ed3U, 0xac43efacU, 0x62c4a662U,
|
||||
0x9139a891U, 0x9531a495U, 0xe4d337e4U, 0x79f28b79U,
|
||||
0xe7d532e7U, 0xc88b43c8U, 0x376e5937U, 0x6ddab76dU,
|
||||
0x8d018c8dU, 0xd5b164d5U, 0x4e9cd24eU, 0xa949e0a9U,
|
||||
0x6cd8b46cU, 0x56acfa56U, 0xf4f307f4U, 0xeacf25eaU,
|
||||
0x65caaf65U, 0x7af48e7aU, 0xae47e9aeU, 0x08101808U,
|
||||
0xba6fd5baU, 0x78f08878U, 0x254a6f25U, 0x2e5c722eU,
|
||||
0x1c38241cU, 0xa657f1a6U, 0xb473c7b4U, 0xc69751c6U,
|
||||
0xe8cb23e8U, 0xdda17cddU, 0x74e89c74U, 0x1f3e211fU,
|
||||
0x4b96dd4bU, 0xbd61dcbdU, 0x8b0d868bU, 0x8a0f858aU,
|
||||
0x70e09070U, 0x3e7c423eU, 0xb571c4b5U, 0x66ccaa66U,
|
||||
0x4890d848U, 0x03060503U, 0xf6f701f6U, 0x0e1c120eU,
|
||||
0x61c2a361U, 0x356a5f35U, 0x57aef957U, 0xb969d0b9U,
|
||||
0x86179186U, 0xc19958c1U, 0x1d3a271dU, 0x9e27b99eU,
|
||||
0xe1d938e1U, 0xf8eb13f8U, 0x982bb398U, 0x11223311U,
|
||||
0x69d2bb69U, 0xd9a970d9U, 0x8e07898eU, 0x9433a794U,
|
||||
0x9b2db69bU, 0x1e3c221eU, 0x87159287U, 0xe9c920e9U,
|
||||
0xce8749ceU, 0x55aaff55U, 0x28507828U, 0xdfa57adfU,
|
||||
0x8c038f8cU, 0xa159f8a1U, 0x89098089U, 0x0d1a170dU,
|
||||
0xbf65dabfU, 0xe6d731e6U, 0x4284c642U, 0x68d0b868U,
|
||||
0x4182c341U, 0x9929b099U, 0x2d5a772dU, 0x0f1e110fU,
|
||||
0xb07bcbb0U, 0x54a8fc54U, 0xbb6dd6bbU, 0x162c3a16U,
|
||||
0xc6a56363U, 0xf8847c7cU, 0xee997777U, 0xf68d7b7bU,
|
||||
0xff0df2f2U, 0xd6bd6b6bU, 0xdeb16f6fU, 0x9154c5c5U,
|
||||
0x60503030U, 0x02030101U, 0xcea96767U, 0x567d2b2bU,
|
||||
0xe719fefeU, 0xb562d7d7U, 0x4de6ababU, 0xec9a7676U,
|
||||
0x8f45cacaU, 0x1f9d8282U, 0x8940c9c9U, 0xfa877d7dU,
|
||||
0xef15fafaU, 0xb2eb5959U, 0x8ec94747U, 0xfb0bf0f0U,
|
||||
0x41ecadadU, 0xb367d4d4U, 0x5ffda2a2U, 0x45eaafafU,
|
||||
0x23bf9c9cU, 0x53f7a4a4U, 0xe4967272U, 0x9b5bc0c0U,
|
||||
0x75c2b7b7U, 0xe11cfdfdU, 0x3dae9393U, 0x4c6a2626U,
|
||||
0x6c5a3636U, 0x7e413f3fU, 0xf502f7f7U, 0x834fccccU,
|
||||
0x685c3434U, 0x51f4a5a5U, 0xd134e5e5U, 0xf908f1f1U,
|
||||
0xe2937171U, 0xab73d8d8U, 0x62533131U, 0x2a3f1515U,
|
||||
0x080c0404U, 0x9552c7c7U, 0x46652323U, 0x9d5ec3c3U,
|
||||
0x30281818U, 0x37a19696U, 0x0a0f0505U, 0x2fb59a9aU,
|
||||
0x0e090707U, 0x24361212U, 0x1b9b8080U, 0xdf3de2e2U,
|
||||
0xcd26ebebU, 0x4e692727U, 0x7fcdb2b2U, 0xea9f7575U,
|
||||
0x121b0909U, 0x1d9e8383U, 0x58742c2cU, 0x342e1a1aU,
|
||||
0x362d1b1bU, 0xdcb26e6eU, 0xb4ee5a5aU, 0x5bfba0a0U,
|
||||
0xa4f65252U, 0x764d3b3bU, 0xb761d6d6U, 0x7dceb3b3U,
|
||||
0x527b2929U, 0xdd3ee3e3U, 0x5e712f2fU, 0x13978484U,
|
||||
0xa6f55353U, 0xb968d1d1U, 0x00000000U, 0xc12cededU,
|
||||
0x40602020U, 0xe31ffcfcU, 0x79c8b1b1U, 0xb6ed5b5bU,
|
||||
0xd4be6a6aU, 0x8d46cbcbU, 0x67d9bebeU, 0x724b3939U,
|
||||
0x94de4a4aU, 0x98d44c4cU, 0xb0e85858U, 0x854acfcfU,
|
||||
0xbb6bd0d0U, 0xc52aefefU, 0x4fe5aaaaU, 0xed16fbfbU,
|
||||
0x86c54343U, 0x9ad74d4dU, 0x66553333U, 0x11948585U,
|
||||
0x8acf4545U, 0xe910f9f9U, 0x04060202U, 0xfe817f7fU,
|
||||
0xa0f05050U, 0x78443c3cU, 0x25ba9f9fU, 0x4be3a8a8U,
|
||||
0xa2f35151U, 0x5dfea3a3U, 0x80c04040U, 0x058a8f8fU,
|
||||
0x3fad9292U, 0x21bc9d9dU, 0x70483838U, 0xf104f5f5U,
|
||||
0x63dfbcbcU, 0x77c1b6b6U, 0xaf75dadaU, 0x42632121U,
|
||||
0x20301010U, 0xe51affffU, 0xfd0ef3f3U, 0xbf6dd2d2U,
|
||||
0x814ccdcdU, 0x18140c0cU, 0x26351313U, 0xc32fececU,
|
||||
0xbee15f5fU, 0x35a29797U, 0x88cc4444U, 0x2e391717U,
|
||||
0x9357c4c4U, 0x55f2a7a7U, 0xfc827e7eU, 0x7a473d3dU,
|
||||
0xc8ac6464U, 0xbae75d5dU, 0x322b1919U, 0xe6957373U,
|
||||
0xc0a06060U, 0x19988181U, 0x9ed14f4fU, 0xa37fdcdcU,
|
||||
0x44662222U, 0x547e2a2aU, 0x3bab9090U, 0x0b838888U,
|
||||
0x8cca4646U, 0xc729eeeeU, 0x6bd3b8b8U, 0x283c1414U,
|
||||
0xa779dedeU, 0xbce25e5eU, 0x161d0b0bU, 0xad76dbdbU,
|
||||
0xdb3be0e0U, 0x64563232U, 0x744e3a3aU, 0x141e0a0aU,
|
||||
0x92db4949U, 0x0c0a0606U, 0x486c2424U, 0xb8e45c5cU,
|
||||
0x9f5dc2c2U, 0xbd6ed3d3U, 0x43efacacU, 0xc4a66262U,
|
||||
0x39a89191U, 0x31a49595U, 0xd337e4e4U, 0xf28b7979U,
|
||||
0xd532e7e7U, 0x8b43c8c8U, 0x6e593737U, 0xdab76d6dU,
|
||||
0x018c8d8dU, 0xb164d5d5U, 0x9cd24e4eU, 0x49e0a9a9U,
|
||||
0xd8b46c6cU, 0xacfa5656U, 0xf307f4f4U, 0xcf25eaeaU,
|
||||
0xcaaf6565U, 0xf48e7a7aU, 0x47e9aeaeU, 0x10180808U,
|
||||
0x6fd5babaU, 0xf0887878U, 0x4a6f2525U, 0x5c722e2eU,
|
||||
0x38241c1cU, 0x57f1a6a6U, 0x73c7b4b4U, 0x9751c6c6U,
|
||||
0xcb23e8e8U, 0xa17cddddU, 0xe89c7474U, 0x3e211f1fU,
|
||||
0x96dd4b4bU, 0x61dcbdbdU, 0x0d868b8bU, 0x0f858a8aU,
|
||||
0xe0907070U, 0x7c423e3eU, 0x71c4b5b5U, 0xccaa6666U,
|
||||
0x90d84848U, 0x06050303U, 0xf701f6f6U, 0x1c120e0eU,
|
||||
0xc2a36161U, 0x6a5f3535U, 0xaef95757U, 0x69d0b9b9U,
|
||||
0x17918686U, 0x9958c1c1U, 0x3a271d1dU, 0x27b99e9eU,
|
||||
0xd938e1e1U, 0xeb13f8f8U, 0x2bb39898U, 0x22331111U,
|
||||
0xd2bb6969U, 0xa970d9d9U, 0x07898e8eU, 0x33a79494U,
|
||||
0x2db69b9bU, 0x3c221e1eU, 0x15928787U, 0xc920e9e9U,
|
||||
0x8749ceceU, 0xaaff5555U, 0x50782828U, 0xa57adfdfU,
|
||||
0x038f8c8cU, 0x59f8a1a1U, 0x09808989U, 0x1a170d0dU,
|
||||
0x65dabfbfU, 0xd731e6e6U, 0x84c64242U, 0xd0b86868U,
|
||||
0x82c34141U, 0x29b09999U, 0x5a772d2dU, 0x1e110f0fU,
|
||||
0x7bcbb0b0U, 0xa8fc5454U, 0x6dd6bbbbU, 0x2c3a1616U,
|
||||
0x50a7f451U, 0x5365417eU, 0xc3a4171aU, 0x965e273aU,
|
||||
0xcb6bab3bU, 0xf1459d1fU, 0xab58faacU, 0x9303e34bU,
|
||||
0x55fa3020U, 0xf66d76adU, 0x9176cc88U, 0x254c02f5U,
|
||||
0xfcd7e54fU, 0xd7cb2ac5U, 0x80443526U, 0x8fa362b5U,
|
||||
0x495ab1deU, 0x671bba25U, 0x980eea45U, 0xe1c0fe5dU,
|
||||
0x02752fc3U, 0x12f04c81U, 0xa397468dU, 0xc6f9d36bU,
|
||||
0xe75f8f03U, 0x959c9215U, 0xeb7a6dbfU, 0xda595295U,
|
||||
0x2d83bed4U, 0xd3217458U, 0x2969e049U, 0x44c8c98eU,
|
||||
0x6a89c275U, 0x78798ef4U, 0x6b3e5899U, 0xdd71b927U,
|
||||
0xb64fe1beU, 0x17ad88f0U, 0x66ac20c9U, 0xb43ace7dU,
|
||||
0x184adf63U, 0x82311ae5U, 0x60335197U, 0x457f5362U,
|
||||
0xe07764b1U, 0x84ae6bbbU, 0x1ca081feU, 0x942b08f9U,
|
||||
0x58684870U, 0x19fd458fU, 0x876cde94U, 0xb7f87b52U,
|
||||
0x23d373abU, 0xe2024b72U, 0x578f1fe3U, 0x2aab5566U,
|
||||
0x0728ebb2U, 0x03c2b52fU, 0x9a7bc586U, 0xa50837d3U,
|
||||
0xf2872830U, 0xb2a5bf23U, 0xba6a0302U, 0x5c8216edU,
|
||||
0x2b1ccf8aU, 0x92b479a7U, 0xf0f207f3U, 0xa1e2694eU,
|
||||
0xcdf4da65U, 0xd5be0506U, 0x1f6234d1U, 0x8afea6c4U,
|
||||
0x9d532e34U, 0xa055f3a2U, 0x32e18a05U, 0x75ebf6a4U,
|
||||
0x39ec830bU, 0xaaef6040U, 0x069f715eU, 0x51106ebdU,
|
||||
0xf98a213eU, 0x3d06dd96U, 0xae053eddU, 0x46bde64dU,
|
||||
)==="
|
||||
R"===(
|
||||
0xb58d5491U, 0x055dc471U, 0x6fd40604U, 0xff155060U,
|
||||
0x24fb9819U, 0x97e9bdd6U, 0xcc434089U, 0x779ed967U,
|
||||
0xbd42e8b0U, 0x888b8907U, 0x385b19e7U, 0xdbeec879U,
|
||||
0x470a7ca1U, 0xe90f427cU, 0xc91e84f8U, 0x00000000U,
|
||||
0x83868009U, 0x48ed2b32U, 0xac70111eU, 0x4e725a6cU,
|
||||
0xfbff0efdU, 0x5638850fU, 0x1ed5ae3dU, 0x27392d36U,
|
||||
0x64d90f0aU, 0x21a65c68U, 0xd1545b9bU, 0x3a2e3624U,
|
||||
0xb1670a0cU, 0x0fe75793U, 0xd296eeb4U, 0x9e919b1bU,
|
||||
0x4fc5c080U, 0xa220dc61U, 0x694b775aU, 0x161a121cU,
|
||||
0x0aba93e2U, 0xe52aa0c0U, 0x43e0223cU, 0x1d171b12U,
|
||||
0x0b0d090eU, 0xadc78bf2U, 0xb9a8b62dU, 0xc8a91e14U,
|
||||
0x8519f157U, 0x4c0775afU, 0xbbdd99eeU, 0xfd607fa3U,
|
||||
0x9f2601f7U, 0xbcf5725cU, 0xc53b6644U, 0x347efb5bU,
|
||||
0x7629438bU, 0xdcc623cbU, 0x68fcedb6U, 0x63f1e4b8U,
|
||||
0xcadc31d7U, 0x10856342U, 0x40229713U, 0x2011c684U,
|
||||
0x7d244a85U, 0xf83dbbd2U, 0x1132f9aeU, 0x6da129c7U,
|
||||
0x4b2f9e1dU, 0xf330b2dcU, 0xec52860dU, 0xd0e3c177U,
|
||||
0x6c16b32bU, 0x99b970a9U, 0xfa489411U, 0x2264e947U,
|
||||
0xc48cfca8U, 0x1a3ff0a0U, 0xd82c7d56U, 0xef903322U,
|
||||
0xc74e4987U, 0xc1d138d9U, 0xfea2ca8cU, 0x360bd498U,
|
||||
0xcf81f5a6U, 0x28de7aa5U, 0x268eb7daU, 0xa4bfad3fU,
|
||||
0xe49d3a2cU, 0x0d927850U, 0x9bcc5f6aU, 0x62467e54U,
|
||||
0xc2138df6U, 0xe8b8d890U, 0x5ef7392eU, 0xf5afc382U,
|
||||
0xbe805d9fU, 0x7c93d069U, 0xa92dd56fU, 0xb31225cfU,
|
||||
0x3b99acc8U, 0xa77d1810U, 0x6e639ce8U, 0x7bbb3bdbU,
|
||||
0x097826cdU, 0xf418596eU, 0x01b79aecU, 0xa89a4f83U,
|
||||
0x656e95e6U, 0x7ee6ffaaU, 0x08cfbc21U, 0xe6e815efU,
|
||||
0xd99be7baU, 0xce366f4aU, 0xd4099feaU, 0xd67cb029U,
|
||||
0xafb2a431U, 0x31233f2aU, 0x3094a5c6U, 0xc066a235U,
|
||||
0x37bc4e74U, 0xa6ca82fcU, 0xb0d090e0U, 0x15d8a733U,
|
||||
0x4a9804f1U, 0xf7daec41U, 0x0e50cd7fU, 0x2ff69117U,
|
||||
0x8dd64d76U, 0x4db0ef43U, 0x544daaccU, 0xdf0496e4U,
|
||||
0xe3b5d19eU, 0x1b886a4cU, 0xb81f2cc1U, 0x7f516546U,
|
||||
0x04ea5e9dU, 0x5d358c01U, 0x737487faU, 0x2e410bfbU,
|
||||
0x5a1d67b3U, 0x52d2db92U, 0x335610e9U, 0x1347d66dU,
|
||||
0x8c61d79aU, 0x7a0ca137U, 0x8e14f859U, 0x893c13ebU,
|
||||
0xee27a9ceU, 0x35c961b7U, 0xede51ce1U, 0x3cb1477aU,
|
||||
0x59dfd29cU, 0x3f73f255U, 0x79ce1418U, 0xbf37c773U,
|
||||
0xeacdf753U, 0x5baafd5fU, 0x146f3ddfU, 0x86db4478U,
|
||||
0x81f3afcaU, 0x3ec468b9U, 0x2c342438U, 0x5f40a3c2U,
|
||||
0x72c31d16U, 0x0c25e2bcU, 0x8b493c28U, 0x41950dffU,
|
||||
0x7101a839U, 0xdeb30c08U, 0x9ce4b4d8U, 0x90c15664U,
|
||||
0x6184cb7bU, 0x70b632d5U, 0x745c6c48U, 0x4257b8d0U,
|
||||
0xa7f45150U, 0x65417e53U, 0xa4171ac3U, 0x5e273a96U,
|
||||
0x6bab3bcbU, 0x459d1ff1U, 0x58faacabU, 0x03e34b93U,
|
||||
0xfa302055U, 0x6d76adf6U, 0x76cc8891U, 0x4c02f525U,
|
||||
0xd7e54ffcU, 0xcb2ac5d7U, 0x44352680U, 0xa362b58fU,
|
||||
0x5ab1de49U, 0x1bba2567U, 0x0eea4598U, 0xc0fe5de1U,
|
||||
0x752fc302U, 0xf04c8112U, 0x97468da3U, 0xf9d36bc6U,
|
||||
0x5f8f03e7U, 0x9c921595U, 0x7a6dbfebU, 0x595295daU,
|
||||
0x83bed42dU, 0x217458d3U, 0x69e04929U, 0xc8c98e44U,
|
||||
0x89c2756aU, 0x798ef478U, 0x3e58996bU, 0x71b927ddU,
|
||||
0x4fe1beb6U, 0xad88f017U, 0xac20c966U, 0x3ace7db4U,
|
||||
0x4adf6318U, 0x311ae582U, 0x33519760U, 0x7f536245U,
|
||||
0x7764b1e0U, 0xae6bbb84U, 0xa081fe1cU, 0x2b08f994U,
|
||||
0x68487058U, 0xfd458f19U, 0x6cde9487U, 0xf87b52b7U,
|
||||
0xd373ab23U, 0x024b72e2U, 0x8f1fe357U, 0xab55662aU,
|
||||
0x28ebb207U, 0xc2b52f03U, 0x7bc5869aU, 0x0837d3a5U,
|
||||
0x872830f2U, 0xa5bf23b2U, 0x6a0302baU, 0x8216ed5cU,
|
||||
0x1ccf8a2bU, 0xb479a792U, 0xf207f3f0U, 0xe2694ea1U,
|
||||
0xf4da65cdU, 0xbe0506d5U, 0x6234d11fU, 0xfea6c48aU,
|
||||
0x532e349dU, 0x55f3a2a0U, 0xe18a0532U, 0xebf6a475U,
|
||||
0xec830b39U, 0xef6040aaU, 0x9f715e06U, 0x106ebd51U,
|
||||
0x8a213ef9U, 0x06dd963dU, 0x053eddaeU, 0xbde64d46U,
|
||||
0x8d5491b5U, 0x5dc47105U, 0xd406046fU, 0x155060ffU,
|
||||
0xfb981924U, 0xe9bdd697U, 0x434089ccU, 0x9ed96777U,
|
||||
0x42e8b0bdU, 0x8b890788U, 0x5b19e738U, 0xeec879dbU,
|
||||
0x0a7ca147U, 0x0f427ce9U, 0x1e84f8c9U, 0x00000000U,
|
||||
0x86800983U, 0xed2b3248U, 0x70111eacU, 0x725a6c4eU,
|
||||
0xff0efdfbU, 0x38850f56U, 0xd5ae3d1eU, 0x392d3627U,
|
||||
0xd90f0a64U, 0xa65c6821U, 0x545b9bd1U, 0x2e36243aU,
|
||||
0x670a0cb1U, 0xe757930fU, 0x96eeb4d2U, 0x919b1b9eU,
|
||||
0xc5c0804fU, 0x20dc61a2U, 0x4b775a69U, 0x1a121c16U,
|
||||
0xba93e20aU, 0x2aa0c0e5U, 0xe0223c43U, 0x171b121dU,
|
||||
0x0d090e0bU, 0xc78bf2adU, 0xa8b62db9U, 0xa91e14c8U,
|
||||
0x19f15785U, 0x0775af4cU, 0xdd99eebbU, 0x607fa3fdU,
|
||||
0x2601f79fU, 0xf5725cbcU, 0x3b6644c5U, 0x7efb5b34U,
|
||||
0x29438b76U, 0xc623cbdcU, 0xfcedb668U, 0xf1e4b863U,
|
||||
0xdc31d7caU, 0x85634210U, 0x22971340U, 0x11c68420U,
|
||||
0x244a857dU, 0x3dbbd2f8U, 0x32f9ae11U, 0xa129c76dU,
|
||||
0x2f9e1d4bU, 0x30b2dcf3U, 0x52860decU, 0xe3c177d0U,
|
||||
0x16b32b6cU, 0xb970a999U, 0x489411faU, 0x64e94722U,
|
||||
0x8cfca8c4U, 0x3ff0a01aU, 0x2c7d56d8U, 0x903322efU,
|
||||
0x4e4987c7U, 0xd138d9c1U, 0xa2ca8cfeU, 0x0bd49836U,
|
||||
0x81f5a6cfU, 0xde7aa528U, 0x8eb7da26U, 0xbfad3fa4U,
|
||||
0x9d3a2ce4U, 0x9278500dU, 0xcc5f6a9bU, 0x467e5462U,
|
||||
0x138df6c2U, 0xb8d890e8U, 0xf7392e5eU, 0xafc382f5U,
|
||||
0x805d9fbeU, 0x93d0697cU, 0x2dd56fa9U, 0x1225cfb3U,
|
||||
0x99acc83bU, 0x7d1810a7U, 0x639ce86eU, 0xbb3bdb7bU,
|
||||
0x7826cd09U, 0x18596ef4U, 0xb79aec01U, 0x9a4f83a8U,
|
||||
0x6e95e665U, 0xe6ffaa7eU, 0xcfbc2108U, 0xe815efe6U,
|
||||
0x9be7bad9U, 0x366f4aceU, 0x099fead4U, 0x7cb029d6U,
|
||||
0xb2a431afU, 0x233f2a31U, 0x94a5c630U, 0x66a235c0U,
|
||||
0xbc4e7437U, 0xca82fca6U, 0xd090e0b0U, 0xd8a73315U,
|
||||
0x9804f14aU, 0xdaec41f7U, 0x50cd7f0eU, 0xf691172fU,
|
||||
0xd64d768dU, 0xb0ef434dU, 0x4daacc54U, 0x0496e4dfU,
|
||||
0xb5d19ee3U, 0x886a4c1bU, 0x1f2cc1b8U, 0x5165467fU,
|
||||
0xea5e9d04U, 0x358c015dU, 0x7487fa73U, 0x410bfb2eU,
|
||||
0x1d67b35aU, 0xd2db9252U, 0x5610e933U, 0x47d66d13U,
|
||||
0x61d79a8cU, 0x0ca1377aU, 0x14f8598eU, 0x3c13eb89U,
|
||||
0x27a9ceeeU, 0xc961b735U, 0xe51ce1edU, 0xb1477a3cU,
|
||||
0xdfd29c59U, 0x73f2553fU, 0xce141879U, 0x37c773bfU,
|
||||
0xcdf753eaU, 0xaafd5f5bU, 0x6f3ddf14U, 0xdb447886U,
|
||||
0xf3afca81U, 0xc468b93eU, 0x3424382cU, 0x40a3c25fU,
|
||||
0xc31d1672U, 0x25e2bc0cU, 0x493c288bU, 0x950dff41U,
|
||||
0x01a83971U, 0xb30c08deU, 0xe4b4d89cU, 0xc1566490U,
|
||||
0x84cb7b61U, 0xb632d570U, 0x5c6c4874U, 0x57b8d042U,
|
||||
0xf45150a7U, 0x417e5365U, 0x171ac3a4U, 0x273a965eU,
|
||||
0xab3bcb6bU, 0x9d1ff145U, 0xfaacab58U, 0xe34b9303U,
|
||||
0x302055faU, 0x76adf66dU, 0xcc889176U, 0x02f5254cU,
|
||||
0xe54ffcd7U, 0x2ac5d7cbU, 0x35268044U, 0x62b58fa3U,
|
||||
0xb1de495aU, 0xba25671bU, 0xea45980eU, 0xfe5de1c0U,
|
||||
0x2fc30275U, 0x4c8112f0U, 0x468da397U, 0xd36bc6f9U,
|
||||
0x8f03e75fU, 0x9215959cU, 0x6dbfeb7aU, 0x5295da59U,
|
||||
0xbed42d83U, 0x7458d321U, 0xe0492969U, 0xc98e44c8U,
|
||||
0xc2756a89U, 0x8ef47879U, 0x58996b3eU, 0xb927dd71U,
|
||||
0xe1beb64fU, 0x88f017adU, 0x20c966acU, 0xce7db43aU,
|
||||
0xdf63184aU, 0x1ae58231U, 0x51976033U, 0x5362457fU,
|
||||
0x64b1e077U, 0x6bbb84aeU, 0x81fe1ca0U, 0x08f9942bU,
|
||||
0x48705868U, 0x458f19fdU, 0xde94876cU, 0x7b52b7f8U,
|
||||
0x73ab23d3U, 0x4b72e202U, 0x1fe3578fU, 0x55662aabU,
|
||||
0xebb20728U, 0xb52f03c2U, 0xc5869a7bU, 0x37d3a508U,
|
||||
0x2830f287U, 0xbf23b2a5U, 0x0302ba6aU, 0x16ed5c82U,
|
||||
0xcf8a2b1cU, 0x79a792b4U, 0x07f3f0f2U, 0x694ea1e2U,
|
||||
0xda65cdf4U, 0x0506d5beU, 0x34d11f62U, 0xa6c48afeU,
|
||||
0x2e349d53U, 0xf3a2a055U, 0x8a0532e1U, 0xf6a475ebU,
|
||||
0x830b39ecU, 0x6040aaefU, 0x715e069fU, 0x6ebd5110U,
|
||||
0x213ef98aU, 0xdd963d06U, 0x3eddae05U, 0xe64d46bdU,
|
||||
0x5491b58dU, 0xc471055dU, 0x06046fd4U, 0x5060ff15U,
|
||||
0x981924fbU, 0xbdd697e9U, 0x4089cc43U, 0xd967779eU,
|
||||
0xe8b0bd42U, 0x8907888bU, 0x19e7385bU, 0xc879dbeeU,
|
||||
0x7ca1470aU, 0x427ce90fU, 0x84f8c91eU, 0x00000000U,
|
||||
0x80098386U, 0x2b3248edU, 0x111eac70U, 0x5a6c4e72U,
|
||||
0x0efdfbffU, 0x850f5638U, 0xae3d1ed5U, 0x2d362739U,
|
||||
0x0f0a64d9U, 0x5c6821a6U, 0x5b9bd154U, 0x36243a2eU,
|
||||
0x0a0cb167U, 0x57930fe7U, 0xeeb4d296U, 0x9b1b9e91U,
|
||||
0xc0804fc5U, 0xdc61a220U, 0x775a694bU, 0x121c161aU,
|
||||
0x93e20abaU, 0xa0c0e52aU, 0x223c43e0U, 0x1b121d17U,
|
||||
0x090e0b0dU, 0x8bf2adc7U, 0xb62db9a8U, 0x1e14c8a9U,
|
||||
0xf1578519U, 0x75af4c07U, 0x99eebbddU, 0x7fa3fd60U,
|
||||
0x01f79f26U, 0x725cbcf5U, 0x6644c53bU, 0xfb5b347eU,
|
||||
0x438b7629U, 0x23cbdcc6U, 0xedb668fcU, 0xe4b863f1U,
|
||||
0x31d7cadcU, 0x63421085U, 0x97134022U, 0xc6842011U,
|
||||
0x4a857d24U, 0xbbd2f83dU, 0xf9ae1132U, 0x29c76da1U,
|
||||
0x9e1d4b2fU, 0xb2dcf330U, 0x860dec52U, 0xc177d0e3U,
|
||||
0xb32b6c16U, 0x70a999b9U, 0x9411fa48U, 0xe9472264U,
|
||||
0xfca8c48cU, 0xf0a01a3fU, 0x7d56d82cU, 0x3322ef90U,
|
||||
0x4987c74eU, 0x38d9c1d1U, 0xca8cfea2U, 0xd498360bU,
|
||||
0xf5a6cf81U, 0x7aa528deU, 0xb7da268eU, 0xad3fa4bfU,
|
||||
0x3a2ce49dU, 0x78500d92U, 0x5f6a9bccU, 0x7e546246U,
|
||||
0x8df6c213U, 0xd890e8b8U, 0x392e5ef7U, 0xc382f5afU,
|
||||
0x5d9fbe80U, 0xd0697c93U, 0xd56fa92dU, 0x25cfb312U,
|
||||
0xacc83b99U, 0x1810a77dU, 0x9ce86e63U, 0x3bdb7bbbU,
|
||||
0x26cd0978U, 0x596ef418U, 0x9aec01b7U, 0x4f83a89aU,
|
||||
0x95e6656eU, 0xffaa7ee6U, 0xbc2108cfU, 0x15efe6e8U,
|
||||
0xe7bad99bU, 0x6f4ace36U, 0x9fead409U, 0xb029d67cU,
|
||||
0xa431afb2U, 0x3f2a3123U, 0xa5c63094U, 0xa235c066U,
|
||||
0x4e7437bcU, 0x82fca6caU, 0x90e0b0d0U, 0xa73315d8U,
|
||||
0x04f14a98U, 0xec41f7daU, 0xcd7f0e50U, 0x91172ff6U,
|
||||
0x4d768dd6U, 0xef434db0U, 0xaacc544dU, 0x96e4df04U,
|
||||
0xd19ee3b5U, 0x6a4c1b88U, 0x2cc1b81fU, 0x65467f51U,
|
||||
0x5e9d04eaU, 0x8c015d35U, 0x87fa7374U, 0x0bfb2e41U,
|
||||
0x67b35a1dU, 0xdb9252d2U, 0x10e93356U, 0xd66d1347U,
|
||||
0xd79a8c61U, 0xa1377a0cU, 0xf8598e14U, 0x13eb893cU,
|
||||
0xa9ceee27U, 0x61b735c9U, 0x1ce1ede5U, 0x477a3cb1U,
|
||||
0xd29c59dfU, 0xf2553f73U, 0x141879ceU, 0xc773bf37U,
|
||||
0xf753eacdU, 0xfd5f5baaU, 0x3ddf146fU, 0x447886dbU,
|
||||
0xafca81f3U, 0x68b93ec4U, 0x24382c34U, 0xa3c25f40U,
|
||||
0x1d1672c3U, 0xe2bc0c25U, 0x3c288b49U, 0x0dff4195U,
|
||||
0xa8397101U, 0x0c08deb3U, 0xb4d89ce4U, 0x566490c1U,
|
||||
0xcb7b6184U, 0x32d570b6U, 0x6c48745cU, 0xb8d04257U,
|
||||
0x5150a7f4U, 0x7e536541U, 0x1ac3a417U, 0x3a965e27U,
|
||||
0x3bcb6babU, 0x1ff1459dU, 0xacab58faU, 0x4b9303e3U,
|
||||
0x2055fa30U, 0xadf66d76U, 0x889176ccU, 0xf5254c02U,
|
||||
0x4ffcd7e5U, 0xc5d7cb2aU, 0x26804435U, 0xb58fa362U,
|
||||
0xde495ab1U, 0x25671bbaU, 0x45980eeaU, 0x5de1c0feU,
|
||||
0xc302752fU, 0x8112f04cU, 0x8da39746U, 0x6bc6f9d3U,
|
||||
0x03e75f8fU, 0x15959c92U, 0xbfeb7a6dU, 0x95da5952U,
|
||||
0xd42d83beU, 0x58d32174U, 0x492969e0U, 0x8e44c8c9U,
|
||||
0x756a89c2U, 0xf478798eU, 0x996b3e58U, 0x27dd71b9U,
|
||||
0xbeb64fe1U, 0xf017ad88U, 0xc966ac20U, 0x7db43aceU,
|
||||
0x63184adfU, 0xe582311aU, 0x97603351U, 0x62457f53U,
|
||||
0xb1e07764U, 0xbb84ae6bU, 0xfe1ca081U, 0xf9942b08U,
|
||||
0x70586848U, 0x8f19fd45U, 0x94876cdeU, 0x52b7f87bU,
|
||||
0xab23d373U, 0x72e2024bU, 0xe3578f1fU, 0x662aab55U,
|
||||
0xb20728ebU, 0x2f03c2b5U, 0x869a7bc5U, 0xd3a50837U,
|
||||
0x30f28728U, 0x23b2a5bfU, 0x02ba6a03U, 0xed5c8216U,
|
||||
0x8a2b1ccfU, 0xa792b479U, 0xf3f0f207U, 0x4ea1e269U,
|
||||
0x65cdf4daU, 0x06d5be05U, 0xd11f6234U, 0xc48afea6U,
|
||||
0x349d532eU, 0xa2a055f3U, 0x0532e18aU, 0xa475ebf6U,
|
||||
0x0b39ec83U, 0x40aaef60U, 0x5e069f71U, 0xbd51106eU,
|
||||
0x3ef98a21U, 0x963d06ddU, 0xddae053eU, 0x4d46bde6U,
|
||||
0x91b58d54U, 0x71055dc4U, 0x046fd406U, 0x60ff1550U,
|
||||
0x1924fb98U, 0xd697e9bdU, 0x89cc4340U, 0x67779ed9U,
|
||||
0xb0bd42e8U, 0x07888b89U, 0xe7385b19U, 0x79dbeec8U,
|
||||
0xa1470a7cU, 0x7ce90f42U, 0xf8c91e84U, 0x00000000U,
|
||||
0x09838680U, 0x3248ed2bU, 0x1eac7011U, 0x6c4e725aU,
|
||||
0xfdfbff0eU, 0x0f563885U, 0x3d1ed5aeU, 0x3627392dU,
|
||||
0x0a64d90fU, 0x6821a65cU, 0x9bd1545bU, 0x243a2e36U,
|
||||
0x0cb1670aU, 0x930fe757U, 0xb4d296eeU, 0x1b9e919bU,
|
||||
0x804fc5c0U, 0x61a220dcU, 0x5a694b77U, 0x1c161a12U,
|
||||
0xe20aba93U, 0xc0e52aa0U, 0x3c43e022U, 0x121d171bU,
|
||||
0x0e0b0d09U, 0xf2adc78bU, 0x2db9a8b6U, 0x14c8a91eU,
|
||||
0x578519f1U, 0xaf4c0775U, 0xeebbdd99U, 0xa3fd607fU,
|
||||
0xf79f2601U, 0x5cbcf572U, 0x44c53b66U, 0x5b347efbU,
|
||||
0x8b762943U, 0xcbdcc623U, 0xb668fcedU, 0xb863f1e4U,
|
||||
0xd7cadc31U, 0x42108563U, 0x13402297U, 0x842011c6U,
|
||||
0x857d244aU, 0xd2f83dbbU, 0xae1132f9U, 0xc76da129U,
|
||||
0x1d4b2f9eU, 0xdcf330b2U, 0x0dec5286U, 0x77d0e3c1U,
|
||||
0x2b6c16b3U, 0xa999b970U, 0x11fa4894U, 0x472264e9U,
|
||||
0xa8c48cfcU, 0xa01a3ff0U, 0x56d82c7dU, 0x22ef9033U,
|
||||
0x87c74e49U, 0xd9c1d138U, 0x8cfea2caU, 0x98360bd4U,
|
||||
0xa6cf81f5U, 0xa528de7aU, 0xda268eb7U, 0x3fa4bfadU,
|
||||
0x2ce49d3aU, 0x500d9278U, 0x6a9bcc5fU, 0x5462467eU,
|
||||
0xf6c2138dU, 0x90e8b8d8U, 0x2e5ef739U, 0x82f5afc3U,
|
||||
0x9fbe805dU, 0x697c93d0U, 0x6fa92dd5U, 0xcfb31225U,
|
||||
0xc83b99acU, 0x10a77d18U, 0xe86e639cU, 0xdb7bbb3bU,
|
||||
0xcd097826U, 0x6ef41859U, 0xec01b79aU, 0x83a89a4fU,
|
||||
0xe6656e95U, 0xaa7ee6ffU, 0x2108cfbcU, 0xefe6e815U,
|
||||
0xbad99be7U, 0x4ace366fU, 0xead4099fU, 0x29d67cb0U,
|
||||
0x31afb2a4U, 0x2a31233fU, 0xc63094a5U, 0x35c066a2U,
|
||||
0x7437bc4eU, 0xfca6ca82U, 0xe0b0d090U, 0x3315d8a7U,
|
||||
0xf14a9804U, 0x41f7daecU, 0x7f0e50cdU, 0x172ff691U,
|
||||
0x768dd64dU, 0x434db0efU, 0xcc544daaU, 0xe4df0496U,
|
||||
0x9ee3b5d1U, 0x4c1b886aU, 0xc1b81f2cU, 0x467f5165U,
|
||||
0x9d04ea5eU, 0x015d358cU, 0xfa737487U, 0xfb2e410bU,
|
||||
0xb35a1d67U, 0x9252d2dbU, 0xe9335610U, 0x6d1347d6U,
|
||||
0x9a8c61d7U, 0x377a0ca1U, 0x598e14f8U, 0xeb893c13U,
|
||||
0xceee27a9U, 0xb735c961U, 0xe1ede51cU, 0x7a3cb147U,
|
||||
0x9c59dfd2U, 0x553f73f2U, 0x1879ce14U, 0x73bf37c7U,
|
||||
0x53eacdf7U, 0x5f5baafdU, 0xdf146f3dU, 0x7886db44U,
|
||||
0xca81f3afU, 0xb93ec468U, 0x382c3424U, 0xc25f40a3U,
|
||||
0x1672c31dU, 0xbc0c25e2U, 0x288b493cU, 0xff41950dU,
|
||||
0x397101a8U, 0x08deb30cU, 0xd89ce4b4U, 0x6490c156U,
|
||||
0x7b6184cbU, 0xd570b632U, 0x48745c6cU, 0xd04257b8U,
|
||||
};
|
||||
|
||||
)==="
|
||||
R"===(
|
||||
|
||||
__constant static const uint AES_KEY_FILL[16] = {
|
||||
0x6daca553, 0x62716609, 0xdbb5552b, 0xb4f44917,
|
||||
0x6d7caf07, 0x846a710d, 0x1725d378, 0x0da1dc4e,
|
||||
0x3f1262f1, 0x9f947ec6, 0xf4c0794f, 0x3e20e345,
|
||||
0x6aef8135, 0xb1ba317c, 0x16314c88, 0x49169154,
|
||||
};
|
||||
|
||||
__constant static const uint AES_STATE_HASH[16] = {
|
||||
0x92b52c0d, 0x9fa856de, 0xcc82db47, 0xd7983aad,
|
||||
0x338d996e, 0x15c7b798, 0xf59e125a, 0xace78057,
|
||||
0x6a770017, 0xae62c7d0, 0x5079506b, 0xe8a07ce4,
|
||||
0x630a240c, 0x07ad828d, 0x79a10005, 0x7e994948,
|
||||
};
|
||||
|
||||
uint get_byte32(uint a, uint start_bit) { return (a >> start_bit) & 0xFF; }
|
||||
|
||||
#define fillAes_name fillAes1Rx4_scratchpad
|
||||
#define outputSize RANDOMX_SCRATCHPAD_L3
|
||||
#define outputSize0 (outputSize + 64)
|
||||
#define unroll_factor 8
|
||||
#define num_rounds 1
|
||||
#include "fillAes1Rx4.cl"
|
||||
#undef num_rounds
|
||||
#undef unroll_factor
|
||||
#undef outputSize
|
||||
#undef outputSize0
|
||||
#undef fillAes_name
|
||||
|
||||
#define fillAes_name fillAes4Rx4_entropy
|
||||
#define outputSize ENTROPY_SIZE
|
||||
#define outputSize0 outputSize
|
||||
#define unroll_factor 2
|
||||
#define num_rounds 4
|
||||
#include "fillAes1Rx4.cl"
|
||||
#undef num_rounds
|
||||
#undef unroll_factor
|
||||
#undef outputSize
|
||||
#undef outputSize0
|
||||
#undef fillAes_name
|
||||
|
||||
#define inputSize RANDOMX_SCRATCHPAD_L3
|
||||
|
||||
__attribute__((reqd_work_group_size(64, 1, 1)))
|
||||
__kernel void hashAes1Rx4(__global const void* input, __global void* hash, uint hashOffsetBytes, uint hashStrideBytes, uint batch_size)
|
||||
{
|
||||
__local uint T[2048];
|
||||
|
||||
const uint global_index = get_global_id(0);
|
||||
if (global_index >= batch_size * 4)
|
||||
return;
|
||||
|
||||
const uint idx = global_index / 4;
|
||||
const uint sub = global_index % 4;
|
||||
|
||||
for (uint i = get_local_id(0), step = get_local_size(0); i < 2048; i += step)
|
||||
T[i] = AES_TABLE[i];
|
||||
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
|
||||
uint x[4] = { AES_STATE_HASH[sub * 4], AES_STATE_HASH[sub * 4 + 1], AES_STATE_HASH[sub * 4 + 2], AES_STATE_HASH[sub * 4 + 3] };
|
||||
|
||||
const uint s1 = ((sub & 1) == 0) ? 8 : 24;
|
||||
const uint s3 = ((sub & 1) == 0) ? 24 : 8;
|
||||
|
||||
__global const uint4* p = ((__global uint4*) input) + idx * ((inputSize + 64) / sizeof(uint4)) + sub;
|
||||
|
||||
__local const uint* const t0 = ((sub & 1) == 0) ? T : (T + 1024);
|
||||
__local const uint* const t1 = ((sub & 1) == 0) ? (T + 256) : (T + 1792);
|
||||
__local const uint* const t2 = ((sub & 1) == 0) ? (T + 512) : (T + 1536);
|
||||
__local const uint* const t3 = ((sub & 1) == 0) ? (T + 768) : (T + 1280);
|
||||
|
||||
#pragma unroll(8)
|
||||
for (uint i = 0; i < inputSize / sizeof(uint4); i += 4, p += 4)
|
||||
{
|
||||
uint k[4], y[4];
|
||||
*(uint4*)(k) = *p;
|
||||
y[0] = t0[get_byte32(x[0], 0)] ^ t1[get_byte32(x[1], s1)] ^ t2[get_byte32(x[2], 16)] ^ t3[get_byte32(x[3], s3)] ^ k[0];
|
||||
y[1] = t0[get_byte32(x[1], 0)] ^ t1[get_byte32(x[2], s1)] ^ t2[get_byte32(x[3], 16)] ^ t3[get_byte32(x[0], s3)] ^ k[1];
|
||||
y[2] = t0[get_byte32(x[2], 0)] ^ t1[get_byte32(x[3], s1)] ^ t2[get_byte32(x[0], 16)] ^ t3[get_byte32(x[1], s3)] ^ k[2];
|
||||
y[3] = t0[get_byte32(x[3], 0)] ^ t1[get_byte32(x[0], s1)] ^ t2[get_byte32(x[1], 16)] ^ t3[get_byte32(x[2], s3)] ^ k[3];
|
||||
x[0] = y[0];
|
||||
x[1] = y[1];
|
||||
x[2] = y[2];
|
||||
x[3] = y[3];
|
||||
}
|
||||
|
||||
uint y[4];
|
||||
|
||||
y[0] = t0[get_byte32(x[0], 0)] ^ t1[get_byte32(x[1], s1)] ^ t2[get_byte32(x[2], 16)] ^ t3[get_byte32(x[3], s3)] ^ 0xf6fa8389;
|
||||
y[1] = t0[get_byte32(x[1], 0)] ^ t1[get_byte32(x[2], s1)] ^ t2[get_byte32(x[3], 16)] ^ t3[get_byte32(x[0], s3)] ^ 0x8b24949f;
|
||||
y[2] = t0[get_byte32(x[2], 0)] ^ t1[get_byte32(x[3], s1)] ^ t2[get_byte32(x[0], 16)] ^ t3[get_byte32(x[1], s3)] ^ 0x90dc56bf;
|
||||
y[3] = t0[get_byte32(x[3], 0)] ^ t1[get_byte32(x[0], s1)] ^ t2[get_byte32(x[1], 16)] ^ t3[get_byte32(x[2], s3)] ^ 0x06890201;
|
||||
|
||||
x[0] = t0[get_byte32(y[0], 0)] ^ t1[get_byte32(y[1], s1)] ^ t2[get_byte32(y[2], 16)] ^ t3[get_byte32(y[3], s3)] ^ 0x61b263d1;
|
||||
x[1] = t0[get_byte32(y[1], 0)] ^ t1[get_byte32(y[2], s1)] ^ t2[get_byte32(y[3], 16)] ^ t3[get_byte32(y[0], s3)] ^ 0x51f4e03c;
|
||||
x[2] = t0[get_byte32(y[2], 0)] ^ t1[get_byte32(y[3], s1)] ^ t2[get_byte32(y[0], 16)] ^ t3[get_byte32(y[1], s3)] ^ 0xee1043c6;
|
||||
x[3] = t0[get_byte32(y[3], 0)] ^ t1[get_byte32(y[0], s1)] ^ t2[get_byte32(y[1], 16)] ^ t3[get_byte32(y[2], s3)] ^ 0xed18f99b;
|
||||
|
||||
*((__global uint4*)(hash) + idx * (hashStrideBytes / sizeof(uint4)) + sub + (hashOffsetBytes / sizeof(uint4))) = *(uint4*)(x);
|
||||
}
|
||||
)==="
|
159
src/backend/opencl/cl/rx/blake2b.cl
Normal file
159
src/backend/opencl/cl/rx/blake2b.cl
Normal file
|
@ -0,0 +1,159 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
__constant static const uchar blake2b_sigma[12 * 16] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
|
||||
11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
|
||||
7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
|
||||
9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
|
||||
2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
|
||||
12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,
|
||||
13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,
|
||||
6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,
|
||||
10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
|
||||
};
|
||||
|
||||
enum Blake2b_IV
|
||||
{
|
||||
iv0 = 0x6a09e667f3bcc908ul,
|
||||
iv1 = 0xbb67ae8584caa73bul,
|
||||
iv2 = 0x3c6ef372fe94f82bul,
|
||||
iv3 = 0xa54ff53a5f1d36f1ul,
|
||||
iv4 = 0x510e527fade682d1ul,
|
||||
iv5 = 0x9b05688c2b3e6c1ful,
|
||||
iv6 = 0x1f83d9abfb41bd6bul,
|
||||
iv7 = 0x5be0cd19137e2179ul,
|
||||
};
|
||||
|
||||
ulong rotr64(ulong a, ulong shift) { return rotate(a, 64 - shift); }
|
||||
|
||||
#define G(r, i, a, b, c, d) \
|
||||
do { \
|
||||
a = a + b + m[blake2b_sigma[r * 16 + 2 * i + 0]]; \
|
||||
d = rotr64(d ^ a, 32); \
|
||||
c = c + d; \
|
||||
b = rotr64(b ^ c, 24); \
|
||||
a = a + b + m[blake2b_sigma[r * 16 + 2 * i + 1]]; \
|
||||
d = rotr64(d ^ a, 16); \
|
||||
c = c + d; \
|
||||
b = rotr64(b ^ c, 63); \
|
||||
} while (0)
|
||||
|
||||
#define ROUND(r) \
|
||||
do { \
|
||||
G(r, 0, v[0], v[4], v[8], v[12]); \
|
||||
G(r, 1, v[1], v[5], v[9], v[13]); \
|
||||
G(r, 2, v[2], v[6], v[10], v[14]); \
|
||||
G(r, 3, v[3], v[7], v[11], v[15]); \
|
||||
G(r, 4, v[0], v[5], v[10], v[15]); \
|
||||
G(r, 5, v[1], v[6], v[11], v[12]); \
|
||||
G(r, 6, v[2], v[7], v[8], v[13]); \
|
||||
G(r, 7, v[3], v[4], v[9], v[14]); \
|
||||
} while (0)
|
||||
|
||||
#define BLAKE2B_ROUNDS() ROUND(0);ROUND(1);ROUND(2);ROUND(3);ROUND(4);ROUND(5);ROUND(6);ROUND(7);ROUND(8);ROUND(9);ROUND(10);ROUND(11);
|
||||
|
||||
void blake2b_512_process_single_block(ulong *h, const ulong* m, uint blockTemplateSize)
|
||||
{
|
||||
ulong v[16] =
|
||||
{
|
||||
iv0 ^ 0x01010040, iv1, iv2, iv3, iv4 , iv5, iv6, iv7,
|
||||
iv0 , iv1, iv2, iv3, iv4 ^ blockTemplateSize, iv5, ~iv6, iv7,
|
||||
};
|
||||
|
||||
BLAKE2B_ROUNDS();
|
||||
|
||||
h[0] = v[0] ^ v[ 8] ^ iv0 ^ 0x01010040;
|
||||
h[1] = v[1] ^ v[ 9] ^ iv1;
|
||||
h[2] = v[2] ^ v[10] ^ iv2;
|
||||
h[3] = v[3] ^ v[11] ^ iv3;
|
||||
h[4] = v[4] ^ v[12] ^ iv4;
|
||||
h[5] = v[5] ^ v[13] ^ iv5;
|
||||
h[6] = v[6] ^ v[14] ^ iv6;
|
||||
h[7] = v[7] ^ v[15] ^ iv7;
|
||||
}
|
||||
|
||||
__attribute__((reqd_work_group_size(64, 1, 1)))
|
||||
__kernel void blake2b_initial_hash(__global void *out, __global const void* blockTemplate, uint blockTemplateSize, uint start_nonce)
|
||||
{
|
||||
const uint global_index = get_global_id(0);
|
||||
|
||||
__global const ulong* p = (__global const ulong*) blockTemplate;
|
||||
ulong m[16] = {
|
||||
(blockTemplateSize > 0) ? p[ 0] : 0,
|
||||
(blockTemplateSize > 8) ? p[ 1] : 0,
|
||||
(blockTemplateSize > 16) ? p[ 2] : 0,
|
||||
(blockTemplateSize > 24) ? p[ 3] : 0,
|
||||
(blockTemplateSize > 32) ? p[ 4] : 0,
|
||||
(blockTemplateSize > 40) ? p[ 5] : 0,
|
||||
(blockTemplateSize > 48) ? p[ 6] : 0,
|
||||
(blockTemplateSize > 56) ? p[ 7] : 0,
|
||||
(blockTemplateSize > 64) ? p[ 8] : 0,
|
||||
(blockTemplateSize > 72) ? p[ 9] : 0,
|
||||
(blockTemplateSize > 80) ? p[10] : 0,
|
||||
(blockTemplateSize > 88) ? p[11] : 0,
|
||||
(blockTemplateSize > 96) ? p[12] : 0,
|
||||
(blockTemplateSize > 104) ? p[13] : 0,
|
||||
(blockTemplateSize > 112) ? p[14] : 0,
|
||||
(blockTemplateSize > 120) ? p[15] : 0,
|
||||
};
|
||||
|
||||
if (blockTemplateSize % sizeof(ulong))
|
||||
m[blockTemplateSize / sizeof(ulong)] &= (ulong)(-1) >> (64 - (blockTemplateSize % sizeof(ulong)) * 8);
|
||||
|
||||
const ulong nonce = start_nonce + global_index;
|
||||
m[4] = (m[4] & ((ulong)(-1) >> 8)) | (nonce << 56);
|
||||
m[5] = (m[5] & ((ulong)(-1) << 24)) | (nonce >> 8);
|
||||
|
||||
ulong hash[8];
|
||||
blake2b_512_process_single_block(hash, m, blockTemplateSize);
|
||||
|
||||
__global ulong* t = ((__global ulong*) out) + global_index * 8;
|
||||
t[0] = hash[0];
|
||||
t[1] = hash[1];
|
||||
t[2] = hash[2];
|
||||
t[3] = hash[3];
|
||||
t[4] = hash[4];
|
||||
t[5] = hash[5];
|
||||
t[6] = hash[6];
|
||||
t[7] = hash[7];
|
||||
}
|
||||
|
||||
#define in_len 256
|
||||
|
||||
#define out_len 32
|
||||
#define blake2b_512_process_double_block_name blake2b_512_process_double_block_32
|
||||
#define blake2b_hash_registers_name blake2b_hash_registers_32
|
||||
#include "blake2b_double_block.cl"
|
||||
#undef blake2b_hash_registers_name
|
||||
#undef blake2b_512_process_double_block_name
|
||||
#undef out_len
|
||||
|
||||
#define out_len 64
|
||||
#define blake2b_512_process_double_block_name blake2b_512_process_double_block_64
|
||||
#define blake2b_hash_registers_name blake2b_hash_registers_64
|
||||
#include "blake2b_double_block.cl"
|
||||
#undef blake2b_hash_registers_name
|
||||
#undef blake2b_512_process_double_block_name
|
||||
#undef out_len
|
||||
)==="
|
102
src/backend/opencl/cl/rx/blake2b_double_block.cl
Normal file
102
src/backend/opencl/cl/rx/blake2b_double_block.cl
Normal file
|
@ -0,0 +1,102 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
void blake2b_512_process_double_block_name(ulong *out, ulong* m, __global const ulong* in)
|
||||
{
|
||||
ulong v[16] =
|
||||
{
|
||||
iv0 ^ (0x01010000u | out_len), iv1, iv2, iv3, iv4 , iv5, iv6, iv7,
|
||||
iv0 , iv1, iv2, iv3, iv4 ^ 128, iv5, iv6, iv7,
|
||||
};
|
||||
|
||||
BLAKE2B_ROUNDS();
|
||||
|
||||
ulong h[8];
|
||||
v[0] = h[0] = v[0] ^ v[8] ^ iv0 ^ (0x01010000u | out_len);
|
||||
v[1] = h[1] = v[1] ^ v[9] ^ iv1;
|
||||
v[2] = h[2] = v[2] ^ v[10] ^ iv2;
|
||||
v[3] = h[3] = v[3] ^ v[11] ^ iv3;
|
||||
v[4] = h[4] = v[4] ^ v[12] ^ iv4;
|
||||
v[5] = h[5] = v[5] ^ v[13] ^ iv5;
|
||||
v[6] = h[6] = v[6] ^ v[14] ^ iv6;
|
||||
v[7] = h[7] = v[7] ^ v[15] ^ iv7;
|
||||
v[8] = iv0;
|
||||
v[9] = iv1;
|
||||
v[10] = iv2;
|
||||
v[11] = iv3;
|
||||
v[12] = iv4 ^ in_len;
|
||||
v[13] = iv5;
|
||||
v[14] = ~iv6;
|
||||
v[15] = iv7;
|
||||
|
||||
m[ 0] = (in_len > 128) ? in[16] : 0;
|
||||
m[ 1] = (in_len > 136) ? in[17] : 0;
|
||||
m[ 2] = (in_len > 144) ? in[18] : 0;
|
||||
m[ 3] = (in_len > 152) ? in[19] : 0;
|
||||
m[ 4] = (in_len > 160) ? in[20] : 0;
|
||||
m[ 5] = (in_len > 168) ? in[21] : 0;
|
||||
m[ 6] = (in_len > 176) ? in[22] : 0;
|
||||
m[ 7] = (in_len > 184) ? in[23] : 0;
|
||||
m[ 8] = (in_len > 192) ? in[24] : 0;
|
||||
m[ 9] = (in_len > 200) ? in[25] : 0;
|
||||
m[10] = (in_len > 208) ? in[26] : 0;
|
||||
m[11] = (in_len > 216) ? in[27] : 0;
|
||||
m[12] = (in_len > 224) ? in[28] : 0;
|
||||
m[13] = (in_len > 232) ? in[29] : 0;
|
||||
m[14] = (in_len > 240) ? in[30] : 0;
|
||||
m[15] = (in_len > 248) ? in[31] : 0;
|
||||
|
||||
if (in_len % sizeof(ulong))
|
||||
m[(in_len - 128) / sizeof(ulong)] &= (ulong)(-1) >> (64 - (in_len % sizeof(ulong)) * 8);
|
||||
|
||||
BLAKE2B_ROUNDS();
|
||||
|
||||
if (out_len > 0) out[0] = h[0] ^ v[0] ^ v[8];
|
||||
if (out_len > 8) out[1] = h[1] ^ v[1] ^ v[9];
|
||||
if (out_len > 16) out[2] = h[2] ^ v[2] ^ v[10];
|
||||
if (out_len > 24) out[3] = h[3] ^ v[3] ^ v[11];
|
||||
if (out_len > 32) out[4] = h[4] ^ v[4] ^ v[12];
|
||||
if (out_len > 40) out[5] = h[5] ^ v[5] ^ v[13];
|
||||
if (out_len > 48) out[6] = h[6] ^ v[6] ^ v[14];
|
||||
if (out_len > 56) out[7] = h[7] ^ v[7] ^ v[15];
|
||||
}
|
||||
|
||||
__attribute__((reqd_work_group_size(64, 1, 1)))
|
||||
__kernel void blake2b_hash_registers_name(__global void *out, __global const void* in, uint inStrideBytes)
|
||||
{
|
||||
const uint global_index = get_global_id(0);
|
||||
__global const ulong* p = ((__global const ulong*) in) + global_index * (inStrideBytes / sizeof(ulong));
|
||||
__global ulong* h = ((__global ulong*) out) + global_index * (out_len / sizeof(ulong));
|
||||
|
||||
ulong m[16] = { p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15] };
|
||||
|
||||
ulong hash[8];
|
||||
blake2b_512_process_double_block_name(hash, m, p);
|
||||
|
||||
if (out_len > 0) h[0] = hash[0];
|
||||
if (out_len > 8) h[1] = hash[1];
|
||||
if (out_len > 16) h[2] = hash[2];
|
||||
if (out_len > 24) h[3] = hash[3];
|
||||
if (out_len > 32) h[4] = hash[4];
|
||||
if (out_len > 40) h[5] = hash[5];
|
||||
if (out_len > 48) h[6] = hash[6];
|
||||
if (out_len > 56) h[7] = hash[7];
|
||||
}
|
||||
)==="
|
120
src/backend/opencl/cl/rx/fillAes1Rx4.cl
Normal file
120
src/backend/opencl/cl/rx/fillAes1Rx4.cl
Normal file
|
@ -0,0 +1,120 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
__attribute__((reqd_work_group_size(64, 1, 1)))
|
||||
__kernel void fillAes_name(__global void* state, __global void* out, uint batch_size, uint rx_version)
|
||||
{
|
||||
__local uint T[2048];
|
||||
|
||||
const uint global_index = get_global_id(0);
|
||||
if (global_index >= batch_size * 4)
|
||||
return;
|
||||
|
||||
const uint idx = global_index / 4;
|
||||
const uint sub = global_index % 4;
|
||||
|
||||
for (uint i = get_local_id(0), step = get_local_size(0); i < 2048; i += step)
|
||||
T[i] = AES_TABLE[i];
|
||||
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
|
||||
#if num_rounds != 4
|
||||
const uint k[4] = { AES_KEY_FILL[sub * 4], AES_KEY_FILL[sub * 4 + 1], AES_KEY_FILL[sub * 4 + 2], AES_KEY_FILL[sub * 4 + 3] };
|
||||
#else
|
||||
const bool b1 = (rx_version < 104);
|
||||
const bool b2 = (sub < 2);
|
||||
|
||||
uint k[16];
|
||||
k[ 0] = b1 ? 0xf890465du : (b2 ? 0x6421aaddu : 0xb5826f73u);
|
||||
k[ 1] = b1 ? 0x7ffbe4a6u : (b2 ? 0xd1833ddbu : 0xe3d6a7a6u);
|
||||
k[ 2] = b1 ? 0x141f82b7u : (b2 ? 0x2f546d2bu : 0x3d518b6du);
|
||||
k[ 3] = b1 ? 0xcf359e95u : (b2 ? 0x99e5d23fu : 0x229effb4u);
|
||||
k[ 4] = b1 ? 0x6a55c450u : (b2 ? 0xb20e3450u : 0xc7566bf3u);
|
||||
k[ 5] = b1 ? 0xfee8278au : (b2 ? 0xb6913f55u : 0x9c10b3d9u);
|
||||
k[ 6] = b1 ? 0xbd5c5ac3u : (b2 ? 0x06f79d53u : 0xe9024d4eu);
|
||||
k[ 7] = b1 ? 0x6741ffdcu : (b2 ? 0xa5dfcde5u : 0xb272b7d2u);
|
||||
k[ 8] = b1 ? 0x114c47a4u : (b2 ? 0x5c3ed904u : 0xf273c9e7u);
|
||||
k[ 9] = b1 ? 0xd524fde4u : (b2 ? 0x515e7bafu : 0xf765a38bu);
|
||||
k[10] = b1 ? 0xa7279ad2u : (b2 ? 0x0aa4679fu : 0x2ba9660au);
|
||||
k[11] = b1 ? 0x3d324aacu : (b2 ? 0x171c02bfu : 0xf63befa7u);
|
||||
k[12] = b1 ? 0x810c3a2au : (b2 ? 0x85623763u : 0x7a7cd609u);
|
||||
k[13] = b1 ? 0x99a9aeffu : (b2 ? 0xe78f5d08u : 0x915839deu);
|
||||
k[14] = b1 ? 0x42d3dbd9u : (b2 ? 0xcd673785u : 0x0c06d1fdu);
|
||||
k[15] = b1 ? 0x76f6db08u : (b2 ? 0xd8ded291u : 0xc0b0762du);
|
||||
#endif
|
||||
|
||||
__global uint* s = ((__global uint*) state) + idx * (64 / sizeof(uint)) + sub * (16 / sizeof(uint));
|
||||
uint x[4] = { s[0], s[1], s[2], s[3] };
|
||||
|
||||
const uint s1 = (sub & 1) ? 8 : 24;
|
||||
const uint s3 = (sub & 1) ? 24 : 8;
|
||||
|
||||
__global uint4* p = ((__global uint4*) out) + idx * (outputSize0 / sizeof(uint4)) + sub;
|
||||
|
||||
const __local uint* const t0 = (sub & 1) ? T : (T + 1024);
|
||||
const __local uint* const t1 = (sub & 1) ? (T + 256) : (T + 1792);
|
||||
const __local uint* const t2 = (sub & 1) ? (T + 512) : (T + 1536);
|
||||
const __local uint* const t3 = (sub & 1) ? (T + 768) : (T + 1280);
|
||||
|
||||
#pragma unroll(unroll_factor)
|
||||
for (uint i = 0; i < outputSize / sizeof(uint4); i += 4, p += 4)
|
||||
{
|
||||
uint y[4];
|
||||
|
||||
#if num_rounds != 4
|
||||
y[0] = t0[get_byte32(x[0], 0)] ^ t1[get_byte32(x[1], s1)] ^ t2[get_byte32(x[2], 16)] ^ t3[get_byte32(x[3], s3)] ^ k[0];
|
||||
y[1] = t0[get_byte32(x[1], 0)] ^ t1[get_byte32(x[2], s1)] ^ t2[get_byte32(x[3], 16)] ^ t3[get_byte32(x[0], s3)] ^ k[1];
|
||||
y[2] = t0[get_byte32(x[2], 0)] ^ t1[get_byte32(x[3], s1)] ^ t2[get_byte32(x[0], 16)] ^ t3[get_byte32(x[1], s3)] ^ k[2];
|
||||
y[3] = t0[get_byte32(x[3], 0)] ^ t1[get_byte32(x[0], s1)] ^ t2[get_byte32(x[1], 16)] ^ t3[get_byte32(x[2], s3)] ^ k[3];
|
||||
|
||||
*p = *(uint4*)(y);
|
||||
|
||||
x[0] = y[0];
|
||||
x[1] = y[1];
|
||||
x[2] = y[2];
|
||||
x[3] = y[3];
|
||||
#else
|
||||
y[0] = t0[get_byte32(x[0], 0)] ^ t1[get_byte32(x[1], s1)] ^ t2[get_byte32(x[2], 16)] ^ t3[get_byte32(x[3], s3)] ^ k[ 0];
|
||||
y[1] = t0[get_byte32(x[1], 0)] ^ t1[get_byte32(x[2], s1)] ^ t2[get_byte32(x[3], 16)] ^ t3[get_byte32(x[0], s3)] ^ k[ 1];
|
||||
y[2] = t0[get_byte32(x[2], 0)] ^ t1[get_byte32(x[3], s1)] ^ t2[get_byte32(x[0], 16)] ^ t3[get_byte32(x[1], s3)] ^ k[ 2];
|
||||
y[3] = t0[get_byte32(x[3], 0)] ^ t1[get_byte32(x[0], s1)] ^ t2[get_byte32(x[1], 16)] ^ t3[get_byte32(x[2], s3)] ^ k[ 3];
|
||||
|
||||
x[0] = t0[get_byte32(y[0], 0)] ^ t1[get_byte32(y[1], s1)] ^ t2[get_byte32(y[2], 16)] ^ t3[get_byte32(y[3], s3)] ^ k[ 4];
|
||||
x[1] = t0[get_byte32(y[1], 0)] ^ t1[get_byte32(y[2], s1)] ^ t2[get_byte32(y[3], 16)] ^ t3[get_byte32(y[0], s3)] ^ k[ 5];
|
||||
x[2] = t0[get_byte32(y[2], 0)] ^ t1[get_byte32(y[3], s1)] ^ t2[get_byte32(y[0], 16)] ^ t3[get_byte32(y[1], s3)] ^ k[ 6];
|
||||
x[3] = t0[get_byte32(y[3], 0)] ^ t1[get_byte32(y[0], s1)] ^ t2[get_byte32(y[1], 16)] ^ t3[get_byte32(y[2], s3)] ^ k[ 7];
|
||||
|
||||
y[0] = t0[get_byte32(x[0], 0)] ^ t1[get_byte32(x[1], s1)] ^ t2[get_byte32(x[2], 16)] ^ t3[get_byte32(x[3], s3)] ^ k[ 8];
|
||||
y[1] = t0[get_byte32(x[1], 0)] ^ t1[get_byte32(x[2], s1)] ^ t2[get_byte32(x[3], 16)] ^ t3[get_byte32(x[0], s3)] ^ k[ 9];
|
||||
y[2] = t0[get_byte32(x[2], 0)] ^ t1[get_byte32(x[3], s1)] ^ t2[get_byte32(x[0], 16)] ^ t3[get_byte32(x[1], s3)] ^ k[10];
|
||||
y[3] = t0[get_byte32(x[3], 0)] ^ t1[get_byte32(x[0], s1)] ^ t2[get_byte32(x[1], 16)] ^ t3[get_byte32(x[2], s3)] ^ k[11];
|
||||
|
||||
x[0] = t0[get_byte32(y[0], 0)] ^ t1[get_byte32(y[1], s1)] ^ t2[get_byte32(y[2], 16)] ^ t3[get_byte32(y[3], s3)] ^ k[12];
|
||||
x[1] = t0[get_byte32(y[1], 0)] ^ t1[get_byte32(y[2], s1)] ^ t2[get_byte32(y[3], 16)] ^ t3[get_byte32(y[0], s3)] ^ k[13];
|
||||
x[2] = t0[get_byte32(y[2], 0)] ^ t1[get_byte32(y[3], s1)] ^ t2[get_byte32(y[0], 16)] ^ t3[get_byte32(y[1], s3)] ^ k[14];
|
||||
x[3] = t0[get_byte32(y[3], 0)] ^ t1[get_byte32(y[0], s1)] ^ t2[get_byte32(y[1], 16)] ^ t3[get_byte32(y[2], s3)] ^ k[15];
|
||||
|
||||
*p = *(uint4*)(x);
|
||||
#endif
|
||||
}
|
||||
|
||||
*(__global uint4*)(s) = *(uint4*)(x);
|
||||
}
|
||||
)==="
|
98
src/backend/opencl/cl/rx/randomx_constants_loki.h
Normal file
98
src/backend/opencl/cl/rx/randomx_constants_loki.h
Normal file
|
@ -0,0 +1,98 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//Dataset base size in bytes. Must be a power of 2.
|
||||
#define RANDOMX_DATASET_BASE_SIZE 2147483648
|
||||
|
||||
//Dataset extra size. Must be divisible by 64.
|
||||
#define RANDOMX_DATASET_EXTRA_SIZE 33554368
|
||||
|
||||
//Scratchpad L3 size in bytes. Must be a power of 2.
|
||||
#define RANDOMX_SCRATCHPAD_L3 2097152
|
||||
|
||||
//Scratchpad L2 size in bytes. Must be a power of two and less than or equal to RANDOMX_SCRATCHPAD_L3.
|
||||
#define RANDOMX_SCRATCHPAD_L2 262144
|
||||
|
||||
//Scratchpad L1 size in bytes. Must be a power of two (minimum 64) and less than or equal to RANDOMX_SCRATCHPAD_L2.
|
||||
#define RANDOMX_SCRATCHPAD_L1 16384
|
||||
|
||||
//Jump condition mask size in bits.
|
||||
#define RANDOMX_JUMP_BITS 8
|
||||
|
||||
//Jump condition mask offset in bits. The sum of RANDOMX_JUMP_BITS and RANDOMX_JUMP_OFFSET must not exceed 16.
|
||||
#define RANDOMX_JUMP_OFFSET 8
|
||||
|
||||
//Integer instructions
|
||||
#define RANDOMX_FREQ_IADD_RS 25
|
||||
#define RANDOMX_FREQ_IADD_M 7
|
||||
#define RANDOMX_FREQ_ISUB_R 16
|
||||
#define RANDOMX_FREQ_ISUB_M 7
|
||||
#define RANDOMX_FREQ_IMUL_R 16
|
||||
#define RANDOMX_FREQ_IMUL_M 4
|
||||
#define RANDOMX_FREQ_IMULH_R 4
|
||||
#define RANDOMX_FREQ_IMULH_M 1
|
||||
#define RANDOMX_FREQ_ISMULH_R 4
|
||||
#define RANDOMX_FREQ_ISMULH_M 1
|
||||
#define RANDOMX_FREQ_IMUL_RCP 8
|
||||
#define RANDOMX_FREQ_INEG_R 2
|
||||
#define RANDOMX_FREQ_IXOR_R 15
|
||||
#define RANDOMX_FREQ_IXOR_M 5
|
||||
#define RANDOMX_FREQ_IROR_R 8
|
||||
#define RANDOMX_FREQ_IROL_R 2
|
||||
#define RANDOMX_FREQ_ISWAP_R 4
|
||||
|
||||
//Floating point instructions
|
||||
#define RANDOMX_FREQ_FSWAP_R 4
|
||||
#define RANDOMX_FREQ_FADD_R 16
|
||||
#define RANDOMX_FREQ_FADD_M 5
|
||||
#define RANDOMX_FREQ_FSUB_R 16
|
||||
#define RANDOMX_FREQ_FSUB_M 5
|
||||
#define RANDOMX_FREQ_FSCAL_R 6
|
||||
#define RANDOMX_FREQ_FMUL_R 32
|
||||
#define RANDOMX_FREQ_FDIV_M 4
|
||||
#define RANDOMX_FREQ_FSQRT_R 6
|
||||
|
||||
//Control instructions
|
||||
#define RANDOMX_FREQ_CBRANCH 16
|
||||
#define RANDOMX_FREQ_CFROUND 1
|
||||
|
||||
//Store instruction
|
||||
#define RANDOMX_FREQ_ISTORE 16
|
||||
|
||||
//No-op instruction
|
||||
#define RANDOMX_FREQ_NOP 0
|
||||
|
||||
#define RANDOMX_DATASET_ITEM_SIZE 64
|
||||
|
||||
#define RANDOMX_PROGRAM_SIZE 320
|
||||
|
||||
#define HASH_SIZE 64
|
||||
#define ENTROPY_SIZE (128 + RANDOMX_PROGRAM_SIZE * 8)
|
||||
#define REGISTERS_SIZE 256
|
||||
#define IMM_BUF_SIZE (RANDOMX_PROGRAM_SIZE * 4 - REGISTERS_SIZE)
|
||||
#define IMM_INDEX_COUNT ((IMM_BUF_SIZE / 4) - 2)
|
||||
#define VM_STATE_SIZE (REGISTERS_SIZE + IMM_BUF_SIZE + RANDOMX_PROGRAM_SIZE * 4)
|
||||
#define ROUNDING_MODE (RANDOMX_FREQ_CFROUND ? -1 : 0)
|
||||
|
||||
// Scratchpad L1/L2/L3 bits
|
||||
#define LOC_L1 (32 - 14)
|
||||
#define LOC_L2 (32 - 18)
|
||||
#define LOC_L3 (32 - 21)
|
||||
)==="
|
98
src/backend/opencl/cl/rx/randomx_constants_monero.h
Normal file
98
src/backend/opencl/cl/rx/randomx_constants_monero.h
Normal file
|
@ -0,0 +1,98 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//Dataset base size in bytes. Must be a power of 2.
|
||||
#define RANDOMX_DATASET_BASE_SIZE 2147483648
|
||||
|
||||
//Dataset extra size. Must be divisible by 64.
|
||||
#define RANDOMX_DATASET_EXTRA_SIZE 33554368
|
||||
|
||||
//Scratchpad L3 size in bytes. Must be a power of 2.
|
||||
#define RANDOMX_SCRATCHPAD_L3 2097152
|
||||
|
||||
//Scratchpad L2 size in bytes. Must be a power of two and less than or equal to RANDOMX_SCRATCHPAD_L3.
|
||||
#define RANDOMX_SCRATCHPAD_L2 262144
|
||||
|
||||
//Scratchpad L1 size in bytes. Must be a power of two (minimum 64) and less than or equal to RANDOMX_SCRATCHPAD_L2.
|
||||
#define RANDOMX_SCRATCHPAD_L1 16384
|
||||
|
||||
//Jump condition mask size in bits.
|
||||
#define RANDOMX_JUMP_BITS 8
|
||||
|
||||
//Jump condition mask offset in bits. The sum of RANDOMX_JUMP_BITS and RANDOMX_JUMP_OFFSET must not exceed 16.
|
||||
#define RANDOMX_JUMP_OFFSET 8
|
||||
|
||||
//Integer instructions
|
||||
#define RANDOMX_FREQ_IADD_RS 25
|
||||
#define RANDOMX_FREQ_IADD_M 7
|
||||
#define RANDOMX_FREQ_ISUB_R 16
|
||||
#define RANDOMX_FREQ_ISUB_M 7
|
||||
#define RANDOMX_FREQ_IMUL_R 16
|
||||
#define RANDOMX_FREQ_IMUL_M 4
|
||||
#define RANDOMX_FREQ_IMULH_R 4
|
||||
#define RANDOMX_FREQ_IMULH_M 1
|
||||
#define RANDOMX_FREQ_ISMULH_R 4
|
||||
#define RANDOMX_FREQ_ISMULH_M 1
|
||||
#define RANDOMX_FREQ_IMUL_RCP 8
|
||||
#define RANDOMX_FREQ_INEG_R 2
|
||||
#define RANDOMX_FREQ_IXOR_R 15
|
||||
#define RANDOMX_FREQ_IXOR_M 5
|
||||
#define RANDOMX_FREQ_IROR_R 8
|
||||
#define RANDOMX_FREQ_IROL_R 2
|
||||
#define RANDOMX_FREQ_ISWAP_R 4
|
||||
|
||||
//Floating point instructions
|
||||
#define RANDOMX_FREQ_FSWAP_R 4
|
||||
#define RANDOMX_FREQ_FADD_R 16
|
||||
#define RANDOMX_FREQ_FADD_M 5
|
||||
#define RANDOMX_FREQ_FSUB_R 16
|
||||
#define RANDOMX_FREQ_FSUB_M 5
|
||||
#define RANDOMX_FREQ_FSCAL_R 6
|
||||
#define RANDOMX_FREQ_FMUL_R 32
|
||||
#define RANDOMX_FREQ_FDIV_M 4
|
||||
#define RANDOMX_FREQ_FSQRT_R 6
|
||||
|
||||
//Control instructions
|
||||
#define RANDOMX_FREQ_CBRANCH 16
|
||||
#define RANDOMX_FREQ_CFROUND 1
|
||||
|
||||
//Store instruction
|
||||
#define RANDOMX_FREQ_ISTORE 16
|
||||
|
||||
//No-op instruction
|
||||
#define RANDOMX_FREQ_NOP 0
|
||||
|
||||
#define RANDOMX_DATASET_ITEM_SIZE 64
|
||||
|
||||
#define RANDOMX_PROGRAM_SIZE 256
|
||||
|
||||
#define HASH_SIZE 64
|
||||
#define ENTROPY_SIZE (128 + RANDOMX_PROGRAM_SIZE * 8)
|
||||
#define REGISTERS_SIZE 256
|
||||
#define IMM_BUF_SIZE (RANDOMX_PROGRAM_SIZE * 4 - REGISTERS_SIZE)
|
||||
#define IMM_INDEX_COUNT ((IMM_BUF_SIZE / 4) - 2)
|
||||
#define VM_STATE_SIZE (REGISTERS_SIZE + IMM_BUF_SIZE + RANDOMX_PROGRAM_SIZE * 4)
|
||||
#define ROUNDING_MODE (RANDOMX_FREQ_CFROUND ? -1 : 0)
|
||||
|
||||
// Scratchpad L1/L2/L3 bits
|
||||
#define LOC_L1 (32 - 14)
|
||||
#define LOC_L2 (32 - 18)
|
||||
#define LOC_L3 (32 - 21)
|
||||
)==="
|
98
src/backend/opencl/cl/rx/randomx_constants_wow.h
Normal file
98
src/backend/opencl/cl/rx/randomx_constants_wow.h
Normal file
|
@ -0,0 +1,98 @@
|
|||
R"===(
|
||||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
//Dataset base size in bytes. Must be a power of 2.
|
||||
#define RANDOMX_DATASET_BASE_SIZE 2147483648
|
||||
|
||||
//Dataset extra size. Must be divisible by 64.
|
||||
#define RANDOMX_DATASET_EXTRA_SIZE 33554368
|
||||
|
||||
//Scratchpad L3 size in bytes. Must be a power of 2.
|
||||
#define RANDOMX_SCRATCHPAD_L3 1048576
|
||||
|
||||
//Scratchpad L2 size in bytes. Must be a power of two and less than or equal to RANDOMX_SCRATCHPAD_L3.
|
||||
#define RANDOMX_SCRATCHPAD_L2 131072
|
||||
|
||||
//Scratchpad L1 size in bytes. Must be a power of two (minimum 64) and less than or equal to RANDOMX_SCRATCHPAD_L2.
|
||||
#define RANDOMX_SCRATCHPAD_L1 16384
|
||||
|
||||
//Jump condition mask size in bits.
|
||||
#define RANDOMX_JUMP_BITS 8
|
||||
|
||||
//Jump condition mask offset in bits. The sum of RANDOMX_JUMP_BITS and RANDOMX_JUMP_OFFSET must not exceed 16.
|
||||
#define RANDOMX_JUMP_OFFSET 8
|
||||
|
||||
//Integer instructions
|
||||
#define RANDOMX_FREQ_IADD_RS 25
|
||||
#define RANDOMX_FREQ_IADD_M 7
|
||||
#define RANDOMX_FREQ_ISUB_R 16
|
||||
#define RANDOMX_FREQ_ISUB_M 7
|
||||
#define RANDOMX_FREQ_IMUL_R 16
|
||||
#define RANDOMX_FREQ_IMUL_M 4
|
||||
#define RANDOMX_FREQ_IMULH_R 4
|
||||
#define RANDOMX_FREQ_IMULH_M 1
|
||||
#define RANDOMX_FREQ_ISMULH_R 4
|
||||
#define RANDOMX_FREQ_ISMULH_M 1
|
||||
#define RANDOMX_FREQ_IMUL_RCP 8
|
||||
#define RANDOMX_FREQ_INEG_R 2
|
||||
#define RANDOMX_FREQ_IXOR_R 15
|
||||
#define RANDOMX_FREQ_IXOR_M 5
|
||||
#define RANDOMX_FREQ_IROR_R 10
|
||||
#define RANDOMX_FREQ_IROL_R 0
|
||||
#define RANDOMX_FREQ_ISWAP_R 4
|
||||
|
||||
//Floating point instructions
|
||||
#define RANDOMX_FREQ_FSWAP_R 8
|
||||
#define RANDOMX_FREQ_FADD_R 20
|
||||
#define RANDOMX_FREQ_FADD_M 5
|
||||
#define RANDOMX_FREQ_FSUB_R 20
|
||||
#define RANDOMX_FREQ_FSUB_M 5
|
||||
#define RANDOMX_FREQ_FSCAL_R 6
|
||||
#define RANDOMX_FREQ_FMUL_R 20
|
||||
#define RANDOMX_FREQ_FDIV_M 4
|
||||
#define RANDOMX_FREQ_FSQRT_R 6
|
||||
|
||||
//Control instructions
|
||||
#define RANDOMX_FREQ_CBRANCH 16
|
||||
#define RANDOMX_FREQ_CFROUND 1
|
||||
|
||||
//Store instruction
|
||||
#define RANDOMX_FREQ_ISTORE 16
|
||||
|
||||
//No-op instruction
|
||||
#define RANDOMX_FREQ_NOP 0
|
||||
|
||||
#define RANDOMX_DATASET_ITEM_SIZE 64
|
||||
|
||||
#define RANDOMX_PROGRAM_SIZE 256
|
||||
|
||||
#define HASH_SIZE 64
|
||||
#define ENTROPY_SIZE (128 + RANDOMX_PROGRAM_SIZE * 8)
|
||||
#define REGISTERS_SIZE 256
|
||||
#define IMM_BUF_SIZE (RANDOMX_PROGRAM_SIZE * 4 - REGISTERS_SIZE)
|
||||
#define IMM_INDEX_COUNT ((IMM_BUF_SIZE / 4) - 2)
|
||||
#define VM_STATE_SIZE (REGISTERS_SIZE + IMM_BUF_SIZE + RANDOMX_PROGRAM_SIZE * 4)
|
||||
#define ROUNDING_MODE (RANDOMX_FREQ_CFROUND ? -1 : 0)
|
||||
|
||||
// Scratchpad L1/L2/L3 bits
|
||||
#define LOC_L1 (32 - 14)
|
||||
#define LOC_L2 (32 - 17)
|
||||
#define LOC_L3 (32 - 20)
|
||||
)==="
|
1510
src/backend/opencl/cl/rx/randomx_jit.cl
Normal file
1510
src/backend/opencl/cl/rx/randomx_jit.cl
Normal file
File diff suppressed because it is too large
Load diff
712
src/backend/opencl/cl/rx/randomx_run_gfx803.asm
Normal file
712
src/backend/opencl/cl/rx/randomx_run_gfx803.asm
Normal file
|
@ -0,0 +1,712 @@
|
|||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
.amdcl2
|
||||
.gpu GFX803
|
||||
.64bit
|
||||
.arch_minor 0
|
||||
.arch_stepping 0
|
||||
.driver_version 203603
|
||||
.kernel randomx_run
|
||||
.config
|
||||
.dims x
|
||||
.cws 64, 1, 1
|
||||
.sgprsnum 96
|
||||
# 6 waves per SIMD: 37-40 VGPRs
|
||||
# 5 waves per SIMD: 41-48 VGPRs
|
||||
# 4 waves per SIMD: 49-64 VGPRs
|
||||
# 3 waves per SIMD: 65-84 VGPRs
|
||||
# 2 waves per SIMD: 85-128 VGPRs
|
||||
# 1 wave per SIMD: 129-256 VGPRs
|
||||
.vgprsnum 128
|
||||
.localsize 256
|
||||
.floatmode 0xc0
|
||||
.pgmrsrc1 0x00ac035f
|
||||
.pgmrsrc2 0x0000008c
|
||||
.dx10clamp
|
||||
.ieeemode
|
||||
.useargs
|
||||
.priority 0
|
||||
.arg _.global_offset_0, "size_t", long
|
||||
.arg _.global_offset_1, "size_t", long
|
||||
.arg _.global_offset_2, "size_t", long
|
||||
.arg _.printf_buffer, "size_t", void*, global, , rdonly
|
||||
.arg _.vqueue_pointer, "size_t", long
|
||||
.arg _.aqlwrap_pointer, "size_t", long
|
||||
.arg dataset, "uchar*", uchar*, global, const, rdonly
|
||||
.arg scratchpad, "uchar*", uchar*, global,
|
||||
.arg registers, "ulong*", ulong*, global,
|
||||
.arg rounding_modes, "uint*", uint*, global,
|
||||
.arg programs, "uint*", uint*, global,
|
||||
.arg batch_size, "uint", uint
|
||||
.arg rx_parameters, "uint", uint
|
||||
.text
|
||||
s_mov_b32 m0, 0x10000
|
||||
s_dcache_wb
|
||||
s_waitcnt vmcnt(0) & lgkmcnt(0)
|
||||
s_icache_inv
|
||||
s_branch begin
|
||||
|
||||
# pgmrsrc2 = 0x00000090, bits 1:5 = 8, so first 8 SGPRs (s0-s7) contain user data
|
||||
# s8 contains group id
|
||||
# v0 contains local id
|
||||
begin:
|
||||
s_mov_b32 s8, s6
|
||||
v_lshlrev_b32 v1, 6, s8
|
||||
v_add_u32 v1, vcc, v1, v0
|
||||
s_load_dwordx2 s[0:1], s[4:5], 0x0
|
||||
s_load_dwordx2 s[2:3], s[4:5], 0x40
|
||||
s_load_dwordx2 s[64:65], s[4:5], 0x48
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# load rounding mode
|
||||
s_lshl_b32 s16, s8, 2
|
||||
s_add_u32 s64, s64, s16
|
||||
s_addc_u32 s65, s65, 0
|
||||
v_mov_b32 v8, s64
|
||||
v_mov_b32 v9, s65
|
||||
flat_load_dword v8, v[8:9]
|
||||
s_waitcnt vmcnt(0)
|
||||
v_readlane_b32 s66, v8, 0
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
s_mov_b32 s67, 0
|
||||
|
||||
# used in FSQRT_R to check for "positive normal value" (v_cmpx_class_f64)
|
||||
s_mov_b32 s68, 256
|
||||
s_mov_b32 s69, 0
|
||||
|
||||
v_add_u32 v1, vcc, s0, v1
|
||||
v_lshrrev_b32 v2, 6, v1
|
||||
v_lshlrev_b32 v3, 5, v2
|
||||
v_and_b32 v1, 63, v1
|
||||
v_mov_b32 v4, 0
|
||||
v_lshlrev_b64 v[3:4], 3, v[3:4]
|
||||
v_lshlrev_b32 v5, 4, v1
|
||||
v_add_u32 v3, vcc, s2, v3
|
||||
v_mov_b32 v6, s3
|
||||
v_addc_u32 v4, vcc, v6, v4, vcc
|
||||
v_lshlrev_b32 v41, 2, v1
|
||||
v_add_u32 v6, vcc, v3, v41
|
||||
v_addc_u32 v7, vcc, v4, 0, vcc
|
||||
flat_load_dword v6, v[6:7]
|
||||
v_mov_b32 v0, 0
|
||||
s_waitcnt vmcnt(0)
|
||||
ds_write_b32 v41, v6
|
||||
s_waitcnt lgkmcnt(0)
|
||||
s_mov_b64 s[0:1], exec
|
||||
v_cmpx_le_u32 s[2:3], v1, 7
|
||||
s_cbranch_execz program_end
|
||||
|
||||
# rx_parameters
|
||||
s_load_dword s20, s[4:5], 0x5c
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# Scratchpad L1 size
|
||||
s_bfe_u32 s21, s20, 0x050000
|
||||
s_lshl_b32 s21, 1, s21
|
||||
|
||||
# Scratchpad L2 size
|
||||
s_bfe_u32 s22, s20, 0x050005
|
||||
s_lshl_b32 s22, 1, s22
|
||||
|
||||
# Scratchpad L3 size
|
||||
s_bfe_u32 s23, s20, 0x05000A
|
||||
s_lshl_b32 s23, 1, s23
|
||||
|
||||
# program iterations
|
||||
s_bfe_u32 s24, s20, 0x04000F
|
||||
s_lshl_b32 s24, 1, s24
|
||||
|
||||
# Base address for scratchpads
|
||||
s_add_u32 s2, s23, 64
|
||||
v_mul_hi_u32 v20, v2, s2
|
||||
v_mul_lo_u32 v2, v2, s2
|
||||
|
||||
# v41, v44 = 0
|
||||
v_mov_b32 v41, 0
|
||||
v_mov_b32 v44, 0
|
||||
|
||||
ds_read_b32 v6, v0 offset:152
|
||||
v_cmp_lt_u32 s[2:3], v1, 4
|
||||
ds_read2_b64 v[34:37], v0 offset0:18 offset1:16
|
||||
ds_read_b64 v[11:12], v0 offset:136
|
||||
s_movk_i32 s9, 0x0
|
||||
s_mov_b64 s[6:7], exec
|
||||
s_andn2_b64 exec, s[6:7], s[2:3]
|
||||
ds_read_b64 v[13:14], v0 offset:160
|
||||
s_andn2_b64 exec, s[6:7], exec
|
||||
v_mov_b32 v13, 0
|
||||
v_mov_b32 v14, 0
|
||||
s_mov_b64 exec, s[6:7]
|
||||
|
||||
# compiled program size
|
||||
s_mov_b64 s[6:7], s[8:9]
|
||||
s_mulk_i32 s6, 10048
|
||||
|
||||
v_add_u32 v5, vcc, v0, v5
|
||||
v_add_u32 v5, vcc, v5, 64
|
||||
s_mov_b64 s[8:9], exec
|
||||
s_andn2_b64 exec, s[8:9], s[2:3]
|
||||
ds_read_b64 v[15:16], v0 offset:168
|
||||
s_andn2_b64 exec, s[8:9], exec
|
||||
v_mov_b32 v15, 0
|
||||
v_mov_b32 v16, 0
|
||||
s_mov_b64 exec, s[8:9]
|
||||
s_load_dwordx4 s[8:11], s[4:5], 0x30
|
||||
|
||||
# batch_size
|
||||
s_load_dword s16, s[4:5], 0x58
|
||||
|
||||
s_load_dwordx2 s[4:5], s[4:5], 0x50
|
||||
v_lshlrev_b32 v1, 3, v1
|
||||
v_add_u32 v17, vcc, v0, v1
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_add_u32 v2, vcc, s10, v2
|
||||
v_mov_b32 v18, s11
|
||||
v_addc_u32 v18, vcc, v18, v20, vcc
|
||||
v_mov_b32 v19, 0xffffff
|
||||
v_add_u32 v6, vcc, s8, v6
|
||||
v_mov_b32 v20, s9
|
||||
v_addc_u32 v20, vcc, v20, 0, vcc
|
||||
ds_read_b64 v[21:22], v17
|
||||
s_add_u32 s4, s4, s6
|
||||
s_addc_u32 s5, s5, s7
|
||||
v_cndmask_b32 v19, v19, -1, s[2:3]
|
||||
v_lshlrev_b32 v8, 3, v35
|
||||
v_lshlrev_b32 v7, 3, v34
|
||||
v_lshlrev_b32 v12, 3, v12
|
||||
v_lshlrev_b32 v10, 3, v11
|
||||
v_add_u32 v8, vcc, v8, v0
|
||||
v_add_u32 v7, vcc, v7, v0
|
||||
v_add_u32 v12, vcc, v12, v0
|
||||
v_add_u32 v0, vcc, v10, v0
|
||||
v_mov_b32 v10, v36
|
||||
v_mov_b32 v23, v37
|
||||
|
||||
# loop counter
|
||||
s_sub_u32 s2, s24, 1
|
||||
|
||||
# batch_size
|
||||
s_mov_b32 s3, s16
|
||||
|
||||
# Scratchpad masks for scratchpads
|
||||
v_sub_u32 v38, vcc, s21, 8
|
||||
v_sub_u32 v39, vcc, s22, 8
|
||||
v_sub_u32 v50, vcc, s23, 8
|
||||
|
||||
# mask for FSCAL_R
|
||||
v_mov_b32 v51, 0x80F00000
|
||||
|
||||
# swap v3 and v18
|
||||
v_mov_b32 v52, v3
|
||||
v_mov_b32 v3, v18
|
||||
v_mov_b32 v18, v52
|
||||
|
||||
# load scratchpad base address
|
||||
v_readlane_b32 s0, v2, 0
|
||||
v_readlane_b32 s1, v3, 0
|
||||
|
||||
# save current executiom mask
|
||||
s_mov_b64 s[36:37], exec
|
||||
|
||||
# v41 = 0 on lane 0, set it to 8 on lane 1
|
||||
# v44 = 0 on lane 0, set it to 4 on lane 1
|
||||
s_mov_b64 exec, 2
|
||||
v_mov_b32 v41, 8
|
||||
v_mov_b32 v44, 4
|
||||
|
||||
# load group A registers
|
||||
# Read low 8 bytes into lane 0 and high 8 bytes into lane 1
|
||||
s_mov_b64 exec, 3
|
||||
ds_read2_b64 v[52:55], v41 offset0:24 offset1:26
|
||||
ds_read2_b64 v[56:59], v41 offset0:28 offset1:30
|
||||
|
||||
# xmantissaMask
|
||||
v_mov_b32 v77, (1 << 24) - 1
|
||||
|
||||
# xexponentMask
|
||||
ds_read_b64 v[78:79], v41 offset:160
|
||||
|
||||
# Restore execution mask
|
||||
s_mov_b64 exec, s[36:37]
|
||||
|
||||
# sign mask (used in FSQRT_R)
|
||||
v_mov_b32 v82, 0x80000000
|
||||
|
||||
# High 32 bits of "1.0" constant (used in FDIV_M)
|
||||
v_mov_b32 v83, (1023 << 20)
|
||||
|
||||
# Used to multiply FP64 values by 0.5
|
||||
v_mov_b32 v84, (1 << 20)
|
||||
|
||||
s_getpc_b64 s[14:15]
|
||||
cur_addr:
|
||||
|
||||
# get addresses of FSQRT_R subroutines
|
||||
s_add_u32 s40, s14, fsqrt_r_sub0 - cur_addr
|
||||
s_addc_u32 s41, s15, 0
|
||||
s_add_u32 s42, s14, fsqrt_r_sub1 - cur_addr
|
||||
s_addc_u32 s43, s15, 0
|
||||
s_add_u32 s44, s14, fsqrt_r_sub2 - cur_addr
|
||||
s_addc_u32 s45, s15, 0
|
||||
s_add_u32 s46, s14, fsqrt_r_sub3 - cur_addr
|
||||
s_addc_u32 s47, s15, 0
|
||||
|
||||
# get addresses of FDIV_M subroutines
|
||||
s_add_u32 s48, s14, fdiv_m_sub0 - cur_addr
|
||||
s_addc_u32 s49, s15, 0
|
||||
s_add_u32 s50, s14, fdiv_m_sub1 - cur_addr
|
||||
s_addc_u32 s51, s15, 0
|
||||
s_add_u32 s52, s14, fdiv_m_sub2 - cur_addr
|
||||
s_addc_u32 s53, s15, 0
|
||||
s_add_u32 s54, s14, fdiv_m_sub3 - cur_addr
|
||||
s_addc_u32 s55, s15, 0
|
||||
|
||||
# get address for ISMULH_R subroutine
|
||||
s_add_u32 s56, s14, ismulh_r_sub - cur_addr
|
||||
s_addc_u32 s57, s15, 0
|
||||
|
||||
# get address for IMULH_R subroutine
|
||||
s_add_u32 s58, s14, imulh_r_sub - cur_addr
|
||||
s_addc_u32 s59, s15, 0
|
||||
|
||||
# used in IXOR_R instruction
|
||||
s_mov_b32 s63, -1
|
||||
|
||||
# used in CBRANCH instruction
|
||||
s_mov_b32 s70, (0xFF << 8)
|
||||
s_mov_b32 s71, (0xFF << 9)
|
||||
s_mov_b32 s72, (0xFF << 10)
|
||||
s_mov_b32 s73, (0xFF << 11)
|
||||
s_mov_b32 s74, (0xFF << 12)
|
||||
s_mov_b32 s75, (0xFF << 13)
|
||||
s_mov_b32 s76, (0xFF << 14)
|
||||
s_mov_b32 s77, (0xFF << 15)
|
||||
s_mov_b32 s78, (0xFF << 16)
|
||||
s_mov_b32 s79, (0xFF << 17)
|
||||
s_mov_b32 s80, (0xFF << 18)
|
||||
s_mov_b32 s81, (0xFF << 19)
|
||||
s_mov_b32 s82, (0xFF << 20)
|
||||
s_mov_b32 s83, (0xFF << 21)
|
||||
s_mov_b32 s84, (0xFF << 22)
|
||||
s_mov_b32 s85, (0xFF << 23)
|
||||
|
||||
# ScratchpadL3Mask64
|
||||
s_sub_u32 s86, s23, 64
|
||||
|
||||
main_loop:
|
||||
# const uint2 spMix = as_uint2(R[readReg0] ^ R[readReg1]);
|
||||
ds_read_b64 v[24:25], v0
|
||||
ds_read_b64 v[26:27], v12
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_xor_b32 v25, v27, v25
|
||||
v_xor_b32 v24, v26, v24
|
||||
|
||||
# spAddr1 ^= spMix.y;
|
||||
# spAddr0 ^= spMix.x;
|
||||
v_xor_b32 v10, v25, v10
|
||||
v_xor_b32 v23, v24, v23
|
||||
|
||||
# spAddr1 &= ScratchpadL3Mask64;
|
||||
# spAddr0 &= ScratchpadL3Mask64;
|
||||
v_and_b32 v10, s86, v10
|
||||
v_and_b32 v23, s86, v23
|
||||
|
||||
# Offset for scratchpads
|
||||
# offset1 = spAddr1 + sub * 8
|
||||
# offset0 = spAddr0 + sub * 8
|
||||
v_add_u32 v10, vcc, v10, v1
|
||||
v_add_u32 v23, vcc, v23, v1
|
||||
|
||||
# __global ulong* p1 = (__global ulong*)(scratchpad + offset1);
|
||||
# __global ulong* p0 = (__global ulong*)(scratchpad + offset0);
|
||||
v_add_u32 v26, vcc, v2, v10
|
||||
v_addc_u32 v27, vcc, v3, 0, vcc
|
||||
v_add_u32 v23, vcc, v2, v23
|
||||
v_addc_u32 v24, vcc, v3, 0, vcc
|
||||
|
||||
# load from spAddr1
|
||||
flat_load_dwordx2 v[28:29], v[26:27]
|
||||
|
||||
# load from spAddr0
|
||||
flat_load_dwordx2 v[30:31], v[23:24]
|
||||
s_waitcnt vmcnt(1)
|
||||
|
||||
v_cvt_f64_i32 v[32:33], v28
|
||||
v_cvt_f64_i32 v[28:29], v29
|
||||
s_waitcnt vmcnt(0)
|
||||
|
||||
# R[sub] ^= *p0;
|
||||
v_xor_b32 v34, v21, v30
|
||||
v_xor_b32 v35, v22, v31
|
||||
|
||||
v_add_u32 v22, vcc, v6, v36
|
||||
v_addc_u32 v25, vcc, v20, 0, vcc
|
||||
v_add_u32 v21, vcc, v22, v1
|
||||
v_addc_u32 v22, vcc, v25, 0, vcc
|
||||
flat_load_dwordx2 v[21:22], v[21:22]
|
||||
v_or_b32 v30, v32, v13
|
||||
v_and_b32 v31, v33, v19
|
||||
v_or_b32 v31, v31, v14
|
||||
v_or_b32 v28, v28, v15
|
||||
v_and_b32 v29, v29, v19
|
||||
v_or_b32 v29, v29, v16
|
||||
ds_write2_b64 v5, v[30:31], v[28:29] offset1:1
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# Program 0
|
||||
|
||||
# load group F,E registers
|
||||
# Read low 8 bytes into lane 0 and high 8 bytes into lane 1
|
||||
s_mov_b64 exec, 3
|
||||
ds_read2_b64 v[60:63], v41 offset0:8 offset1:10
|
||||
ds_read2_b64 v[64:67], v41 offset0:12 offset1:14
|
||||
ds_read2_b64 v[68:71], v41 offset0:16 offset1:18
|
||||
ds_read2_b64 v[72:75], v41 offset0:20 offset1:22
|
||||
|
||||
# load VM integer registers
|
||||
v_readlane_b32 s16, v34, 0
|
||||
v_readlane_b32 s17, v35, 0
|
||||
v_readlane_b32 s18, v34, 1
|
||||
v_readlane_b32 s19, v35, 1
|
||||
v_readlane_b32 s20, v34, 2
|
||||
v_readlane_b32 s21, v35, 2
|
||||
v_readlane_b32 s22, v34, 3
|
||||
v_readlane_b32 s23, v35, 3
|
||||
v_readlane_b32 s24, v34, 4
|
||||
v_readlane_b32 s25, v35, 4
|
||||
v_readlane_b32 s26, v34, 5
|
||||
v_readlane_b32 s27, v35, 5
|
||||
v_readlane_b32 s28, v34, 6
|
||||
v_readlane_b32 s29, v35, 6
|
||||
v_readlane_b32 s30, v34, 7
|
||||
v_readlane_b32 s31, v35, 7
|
||||
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# call JIT code
|
||||
s_swappc_b64 s[12:13], s[4:5]
|
||||
|
||||
# Write out group F,E registers
|
||||
# Write low 8 bytes from lane 0 and high 8 bytes from lane 1
|
||||
ds_write2_b64 v41, v[60:61], v[62:63] offset0:8 offset1:10
|
||||
ds_write2_b64 v41, v[64:65], v[66:67] offset0:12 offset1:14
|
||||
ds_write2_b64 v41, v[68:69], v[70:71] offset0:16 offset1:18
|
||||
ds_write2_b64 v41, v[72:73], v[74:75] offset0:20 offset1:22
|
||||
|
||||
# store VM integer registers
|
||||
v_writelane_b32 v28, s16, 0
|
||||
v_writelane_b32 v29, s17, 0
|
||||
v_writelane_b32 v28, s18, 1
|
||||
v_writelane_b32 v29, s19, 1
|
||||
v_writelane_b32 v28, s20, 2
|
||||
v_writelane_b32 v29, s21, 2
|
||||
v_writelane_b32 v28, s22, 3
|
||||
v_writelane_b32 v29, s23, 3
|
||||
v_writelane_b32 v28, s24, 4
|
||||
v_writelane_b32 v29, s25, 4
|
||||
v_writelane_b32 v28, s26, 5
|
||||
v_writelane_b32 v29, s27, 5
|
||||
v_writelane_b32 v28, s28, 6
|
||||
v_writelane_b32 v29, s29, 6
|
||||
v_writelane_b32 v28, s30, 7
|
||||
v_writelane_b32 v29, s31, 7
|
||||
|
||||
# Restore execution mask
|
||||
s_mov_b64 exec, s[36:37]
|
||||
|
||||
# Write out VM integer registers
|
||||
ds_write_b64 v17, v[28:29]
|
||||
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_xor_b32 v21, v28, v21
|
||||
v_xor_b32 v22, v29, v22
|
||||
ds_read_b32 v28, v7
|
||||
ds_read_b32 v29, v8
|
||||
ds_write_b64 v17, v[21:22]
|
||||
s_waitcnt lgkmcnt(1)
|
||||
ds_read2_b64 v[30:33], v17 offset0:8 offset1:16
|
||||
v_xor_b32 v10, v28, v37
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_xor_b32 v30, v32, v30
|
||||
v_xor_b32 v31, v33, v31
|
||||
v_xor_b32 v10, v10, v29
|
||||
flat_store_dwordx2 v[26:27], v[21:22]
|
||||
v_and_b32 v10, 0x7fffffc0, v10
|
||||
flat_store_dwordx2 v[23:24], v[30:31]
|
||||
s_cmp_eq_u32 s2, 0
|
||||
s_cbranch_scc1 main_loop_end
|
||||
s_sub_i32 s2, s2, 1
|
||||
v_mov_b32 v37, v36
|
||||
v_mov_b32 v23, 0
|
||||
v_mov_b32 v36, v10
|
||||
v_mov_b32 v10, 0
|
||||
s_branch main_loop
|
||||
main_loop_end:
|
||||
|
||||
v_add_u32 v0, vcc, v18, v1
|
||||
v_addc_u32 v1, vcc, v4, 0, vcc
|
||||
flat_store_dwordx2 v[0:1], v[21:22]
|
||||
v_add_u32 v0, vcc, v0, 64
|
||||
v_addc_u32 v1, vcc, v1, 0, vcc
|
||||
flat_store_dwordx2 v[0:1], v[30:31]
|
||||
v_add_u32 v0, vcc, v0, 64
|
||||
v_addc_u32 v1, vcc, v1, 0, vcc
|
||||
flat_store_dwordx2 v[0:1], v[32:33]
|
||||
|
||||
# store rounding mode
|
||||
v_mov_b32 v0, s64
|
||||
v_mov_b32 v1, s65
|
||||
v_mov_b32 v2, s66
|
||||
flat_store_dword v[0:1], v2
|
||||
|
||||
program_end:
|
||||
s_endpgm
|
||||
|
||||
fsqrt_r_sub0:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[68:69]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[68:69]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[68:69]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, vcc, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[68:69]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[68:69], s[68:69]
|
||||
v_mov_b32 v68, v42
|
||||
v_mov_b32 v69, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fsqrt_r_sub1:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[70:71]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[70:71]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[70:71]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, vcc, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[70:71]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[70:71], s[68:69]
|
||||
v_mov_b32 v70, v42
|
||||
v_mov_b32 v71, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fsqrt_r_sub2:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[72:73]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[72:73]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[72:73]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, vcc, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[72:73]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[72:73], s[68:69]
|
||||
v_mov_b32 v72, v42
|
||||
v_mov_b32 v73, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fsqrt_r_sub3:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[74:75]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[74:75]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[74:75]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, vcc, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[74:75]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[74:75], s[68:69]
|
||||
v_mov_b32 v74, v42
|
||||
v_mov_b32 v75, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub0:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_b32 v29, v29, v77
|
||||
v_or_b32 v29, v29, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[68:69], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[68:69]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[68:69]
|
||||
v_cmpx_eq_f64 s[14:15], v[68:69], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v68, v80
|
||||
v_mov_b32 v69, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub1:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_b32 v29, v29, v77
|
||||
v_or_b32 v29, v29, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[70:71], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[70:71]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[70:71]
|
||||
v_cmpx_eq_f64 s[14:15], v[70:71], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v70, v80
|
||||
v_mov_b32 v71, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub2:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_b32 v29, v29, v77
|
||||
v_or_b32 v29, v29, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[72:73], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[72:73]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[72:73]
|
||||
v_cmpx_eq_f64 s[14:15], v[72:73], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v72, v80
|
||||
v_mov_b32 v73, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub3:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_b32 v29, v29, v77
|
||||
v_or_b32 v29, v29, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[74:75], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[74:75]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[74:75]
|
||||
v_cmpx_eq_f64 s[14:15], v[74:75], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v74, v80
|
||||
v_mov_b32 v75, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
ismulh_r_sub:
|
||||
s_mov_b64 exec, 1
|
||||
v_mov_b32 v45, s14
|
||||
v_mul_hi_u32 v40, s38, v45
|
||||
v_mov_b32 v47, s15
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s38, v47, v[40:41]
|
||||
v_mov_b32 v40, v42
|
||||
v_mad_u64_u32 v[45:46], s[32:33], s39, v45, v[40:41]
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s39, v47, v[43:44]
|
||||
v_add_u32 v42, vcc, v42, v46
|
||||
v_addc_u32 v43, vcc, 0, v43, vcc
|
||||
v_readlane_b32 s32, v42, 0
|
||||
v_readlane_b32 s33, v43, 0
|
||||
s_cmp_lt_i32 s15, 0
|
||||
s_cselect_b64 s[34:35], s[38:39], 0
|
||||
s_sub_u32 s32, s32, s34
|
||||
s_subb_u32 s33, s33, s35
|
||||
s_cmp_lt_i32 s39, 0
|
||||
s_cselect_b64 s[34:35], s[14:15], 0
|
||||
s_sub_u32 s14, s32, s34
|
||||
s_subb_u32 s15, s33, s35
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
imulh_r_sub:
|
||||
s_mov_b64 exec, 1
|
||||
v_mov_b32 v45, s38
|
||||
v_mul_hi_u32 v40, s14, v45
|
||||
v_mov_b32 v47, s39
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s14, v47, v[40:41]
|
||||
v_mov_b32 v40, v42
|
||||
v_mad_u64_u32 v[45:46], s[32:33], s15, v45, v[40:41]
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s15, v47, v[43:44]
|
||||
v_add_u32 v42, vcc, v42, v46
|
||||
v_addc_u32 v43, vcc, 0, v43, vcc
|
||||
v_readlane_b32 s14, v42, 0
|
||||
v_readlane_b32 s15, v43, 0
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
218
src/backend/opencl/cl/rx/randomx_run_gfx803.h
Normal file
218
src/backend/opencl/cl/rx/randomx_run_gfx803.h
Normal file
|
@ -0,0 +1,218 @@
|
|||
/*
|
||||
This file was auto-generated from randomx_run_gfx803.asm:
|
||||
|
||||
clrxasm randomx_run_gfx803.asm -o randomx_run_gfx803.bin
|
||||
bin2h -c randomx_run_gfx803_bin < randomx_run_gfx803.bin > randomx_run_gfx803.h
|
||||
|
||||
clrxasm can be downloaded here: https://github.com/CLRX/CLRX-mirror/releases
|
||||
bin2h can be downloaded here: http://www.deadnode.org/sw/bin2h/
|
||||
*/
|
||||
|
||||
static unsigned char randomx_run_gfx803_bin[]={
|
||||
0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x5b,0xaf,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x07,0x00,0x01,0x00,0x00
|
||||
,0x2e,0x73,0x68,0x73,0x74,0x72,0x74,0x61,0x62,0x00,0x2e,0x73,0x74,0x72,0x74,0x61,0x62,0x00,0x2e,0x73,0x79,0x6d,0x74,0x61,0x62,0x00,0x2e,0x63,0x6f,0x6d,0x6d,0x65
|
||||
,0x6e,0x74,0x00,0x2e,0x72,0x6f,0x64,0x61,0x74,0x61,0x00,0x2e,0x74,0x65,0x78,0x74,0x00,0x00,0x5f,0x5f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x5f,0x26,0x5f,0x5f,0x4f,0x70
|
||||
,0x65,0x6e,0x43,0x4c,0x5f,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x78,0x5f,0x72,0x75,0x6e,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x6d,0x65,0x74,0x61,0x64,0x61,0x74,0x61
|
||||
,0x00,0x61,0x63,0x6c,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b
|
||||
,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41
|
||||
,0x4d,0x44,0x2d,0x43,0x4f,0x4d,0x50,0x2d,0x4c,0x49,0x42,0x2d,0x76,0x30,0x2e,0x38,0x20,0x28,0x30,0x2e,0x30,0x2e,0x53,0x43,0x5f,0x42,0x55,0x49,0x4c,0x44,0x5f,0x4e
|
||||
,0x55,0x4d,0x42,0x45,0x52,0x29,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00
|
||||
,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x5f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x5f,0x64
|
||||
,0x75,0x6d,0x6d,0x79,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x00,0x67,0x65,0x6e,0x65,0x72,0x69,0x63,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x00
|
||||
,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x50,0x00,0x00
|
||||
,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00
|
||||
,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00
|
||||
,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x90,0x00,0x00
|
||||
,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00
|
||||
,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x5f,0x2e,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x30,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e
|
||||
,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x31,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f
|
||||
,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x32,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x70,0x72,0x69,0x6e,0x74,0x66,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x00
|
||||
,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x76,0x71,0x75,0x65,0x75,0x65,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f
|
||||
,0x2e,0x61,0x71,0x6c,0x77,0x72,0x61,0x70,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x64,0x61,0x74,0x61,0x73,0x65,0x74,0x00
|
||||
,0x75,0x63,0x68,0x61,0x72,0x2a,0x00,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x00,0x75,0x63,0x68,0x61,0x72,0x2a,0x00,0x72,0x65,0x67,0x69,0x73,0x74,0x65
|
||||
,0x72,0x73,0x00,0x75,0x6c,0x6f,0x6e,0x67,0x2a,0x00,0x72,0x6f,0x75,0x6e,0x64,0x69,0x6e,0x67,0x5f,0x6d,0x6f,0x64,0x65,0x73,0x00,0x75,0x69,0x6e,0x74,0x2a,0x00,0x70
|
||||
,0x72,0x6f,0x67,0x72,0x61,0x6d,0x73,0x00,0x75,0x69,0x6e,0x74,0x2a,0x00,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x00,0x75,0x69,0x6e,0x74,0x00,0x72,0x78
|
||||
,0x5f,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x73,0x00,0x75,0x69,0x6e,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xe0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x38,0x00,0x01,0x00,0x40,0x00,0x06,0x00,0x01
|
||||
,0x00,0x03,0x00,0x00,0x60,0x05,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0xb4,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0xb4,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x73,0x68,0x73,0x74,0x72
|
||||
,0x74,0x61,0x62,0x00,0x2e,0x73,0x74,0x72,0x74,0x61,0x62,0x00,0x2e,0x6e,0x6f,0x74,0x65,0x00,0x2e,0x68,0x73,0x61,0x74,0x65,0x78,0x74,0x00,0x2e,0x73,0x79,0x6d,0x74
|
||||
,0x61,0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x5f,0x5f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x5f,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x78,0x5f,0x72,0x75,0x6e,0x5f
|
||||
,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x00,0x5f,0x5f,0x68,0x73,0x61,0x5f,0x73,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x68,0x73,0x61,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x00
|
||||
,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00
|
||||
,0x00,0x02,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x03,0x00,0x00
|
||||
,0x00,0x41,0x4d,0x44,0x00,0x04,0x00,0x07,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x41,0x4d,0x44,0x47,0x50,0x55,0x00
|
||||
,0x00,0x04,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x4d,0x44
|
||||
,0x20,0x48,0x53,0x41,0x20,0x52,0x75,0x6e,0x74,0x69,0x6d,0x65,0x20,0x46,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00
|
||||
,0x00,0x1a,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x16,0x00,0x2d,0x68,0x73,0x61,0x5f,0x63,0x61,0x6c,0x6c,0x5f,0x63,0x6f,0x6e,0x76,0x65,0x6e,0x74
|
||||
,0x69,0x6f,0x6e,0x3d,0x30,0x00,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x03,0xac,0x00,0x8c,0x00,0x00,0x00,0x09,0x00,0x0a,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x60,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0xff,0x00,0xfc,0xbe,0x00,0x00,0x01,0x00,0x00,0x00,0x84,0xc0,0x00,0x00,0x00,0x00,0x70,0x00,0x8c,0xbf,0x00,0x00,0x93,0xbf,0x00,0x00,0x82,0xbf,0x06,0x00,0x88
|
||||
,0xbe,0x01,0x00,0x12,0xd1,0x86,0x10,0x00,0x00,0x01,0x01,0x02,0x32,0x02,0x00,0x06,0xc0,0x00,0x00,0x00,0x00,0x82,0x00,0x06,0xc0,0x40,0x00,0x00,0x00,0x02,0x10,0x06
|
||||
,0xc0,0x48,0x00,0x00,0x00,0x7f,0x00,0x8c,0xbf,0x08,0x82,0x10,0x8e,0x40,0x10,0x40,0x80,0x41,0x80,0x41,0x82,0x40,0x02,0x10,0x7e,0x41,0x02,0x12,0x7e,0x00,0x00,0x50
|
||||
,0xdc,0x08,0x00,0x00,0x08,0x70,0x0f,0x8c,0xbf,0x42,0x00,0x89,0xd2,0x08,0x01,0x01,0x00,0x81,0x08,0x42,0xb9,0x80,0x00,0xc3,0xbe,0xff,0x00,0xc4,0xbe,0x00,0x01,0x00
|
||||
,0x00,0x80,0x00,0xc5,0xbe,0x00,0x02,0x02,0x32,0x86,0x02,0x04,0x20,0x85,0x04,0x06,0x24,0xbf,0x02,0x02,0x26,0x80,0x02,0x08,0x7e,0x03,0x00,0x8f,0xd2,0x83,0x06,0x02
|
||||
,0x00,0x84,0x02,0x0a,0x24,0x02,0x06,0x06,0x32,0x03,0x02,0x0c,0x7e,0x06,0x09,0x08,0x38,0x82,0x02,0x52,0x24,0x03,0x53,0x0c,0x32,0x07,0x6a,0x1c,0xd1,0x04,0x01,0xa9
|
||||
,0x01,0x00,0x00,0x50,0xdc,0x06,0x00,0x00,0x06,0x80,0x02,0x00,0x7e,0x70,0x0f,0x8c,0xbf,0x00,0x00,0x1a,0xd8,0x29,0x06,0x00,0x00,0x7f,0x00,0x8c,0xbf,0x7e,0x01,0x80
|
||||
,0xbe,0x02,0x00,0xdb,0xd0,0x01,0x0f,0x01,0x00,0x75,0x01,0x88,0xbf,0x02,0x05,0x02,0xc0,0x5c,0x00,0x00,0x00,0x7f,0x00,0x8c,0xbf,0x14,0xff,0x95,0x92,0x00,0x00,0x05
|
||||
,0x00,0x81,0x15,0x15,0x8e,0x14,0xff,0x96,0x92,0x05,0x00,0x05,0x00,0x81,0x16,0x16,0x8e,0x14,0xff,0x97,0x92,0x0a,0x00,0x05,0x00,0x81,0x17,0x17,0x8e,0x14,0xff,0x98
|
||||
,0x92,0x0f,0x00,0x04,0x00,0x81,0x18,0x18,0x8e,0x17,0xc0,0x02,0x80,0x14,0x00,0x86,0xd2,0x02,0x05,0x00,0x00,0x02,0x00,0x85,0xd2,0x02,0x05,0x00,0x00,0x80,0x02,0x52
|
||||
,0x7e,0x80,0x02,0x58,0x7e,0x98,0x00,0x6c,0xd8,0x00,0x00,0x00,0x06,0x02,0x00,0xc9,0xd0,0x01,0x09,0x01,0x00,0x12,0x10,0xee,0xd8,0x00,0x00,0x00,0x22,0x88,0x00,0xec
|
||||
,0xd8,0x00,0x00,0x00,0x0b,0x00,0x00,0x09,0xb0,0x7e,0x01,0x86,0xbe,0x06,0x02,0xfe,0x89,0xa0,0x00,0xec,0xd8,0x00,0x00,0x00,0x0d,0x06,0x7e,0xfe,0x89,0x80,0x02,0x1a
|
||||
,0x7e,0x80,0x02,0x1c,0x7e,0x06,0x01,0xfe,0xbe,0x08,0x01,0x86,0xbe,0x40,0x27,0x86,0xb7,0x00,0x0b,0x0a,0x32,0x05,0x6a,0x19,0xd1,0x05,0x81,0x01,0x00,0x7e,0x01,0x88
|
||||
,0xbe,0x08,0x02,0xfe,0x89,0xa8,0x00,0xec,0xd8,0x00,0x00,0x00,0x0f,0x08,0x7e,0xfe,0x89,0x80,0x02,0x1e,0x7e,0x80,0x02,0x20,0x7e,0x08,0x01,0xfe,0xbe,0x02,0x02,0x0a
|
||||
,0xc0,0x30,0x00,0x00,0x00,0x02,0x04,0x02,0xc0,0x58,0x00,0x00,0x00,0x02,0x01,0x06,0xc0,0x50,0x00,0x00,0x00,0x83,0x02,0x02,0x24,0x00,0x03,0x22,0x32,0x7f,0x00,0x8c
|
||||
,0xbf,0x0a,0x04,0x04,0x32,0x0b,0x02,0x24,0x7e,0x12,0x29,0x24,0x38,0xff,0x02,0x26,0x7e,0xff,0xff,0xff,0x00,0x08,0x0c,0x0c,0x32,0x09,0x02,0x28,0x7e,0x14,0x6a,0x1c
|
||||
,0xd1,0x14,0x01,0xa9,0x01,0x00,0x00,0xec,0xd8,0x11,0x00,0x00,0x15,0x04,0x06,0x04,0x80,0x05,0x07,0x05,0x82,0x13,0x00,0x00,0xd1,0x13,0x83,0x09,0x00,0x83,0x46,0x10
|
||||
,0x24,0x83,0x44,0x0e,0x24,0x83,0x18,0x18,0x24,0x83,0x16,0x14,0x24,0x08,0x01,0x10,0x32,0x07,0x01,0x0e,0x32,0x0c,0x01,0x18,0x32,0x0a,0x01,0x00,0x32,0x24,0x03,0x14
|
||||
,0x7e,0x25,0x03,0x2e,0x7e,0x18,0x81,0x82,0x80,0x10,0x00,0x83,0xbe,0x26,0x6a,0x1a,0xd1,0x15,0x10,0x01,0x00,0x27,0x6a,0x1a,0xd1,0x16,0x10,0x01,0x00,0x32,0x6a,0x1a
|
||||
,0xd1,0x17,0x10,0x01,0x00,0xff,0x02,0x66,0x7e,0x00,0x00,0xf0,0x80,0x03,0x03,0x68,0x7e,0x12,0x03,0x06,0x7e,0x34,0x03,0x24,0x7e,0x00,0x00,0x89,0xd2,0x02,0x01,0x01
|
||||
,0x00,0x01,0x00,0x89,0xd2,0x03,0x01,0x01,0x00,0x7e,0x01,0xa4,0xbe,0x82,0x01,0xfe,0xbe,0x88,0x02,0x52,0x7e,0x84,0x02,0x58,0x7e,0x83,0x01,0xfe,0xbe,0x18,0x1a,0xee
|
||||
,0xd8,0x29,0x00,0x00,0x34,0x1c,0x1e,0xee,0xd8,0x29,0x00,0x00,0x38,0xff,0x02,0x9a,0x7e,0xff,0xff,0xff,0x00,0xa0,0x00,0xec,0xd8,0x29,0x00,0x00,0x4e,0x24,0x01,0xfe
|
||||
,0xbe,0xff,0x02,0xa4,0x7e,0x00,0x00,0x00,0x80,0xff,0x02,0xa6,0x7e,0x00,0x00,0xf0,0x3f,0xff,0x02,0xa8,0x7e,0x00,0x00,0x10,0x00,0x00,0x1c,0x8e,0xbe,0x0e,0xff,0x28
|
||||
,0x80,0xe8,0x03,0x00,0x00,0x0f,0x80,0x29,0x82,0x0e,0xff,0x2a,0x80,0x4c,0x04,0x00,0x00,0x0f,0x80,0x2b,0x82,0x0e,0xff,0x2c,0x80,0xb0,0x04,0x00,0x00,0x0f,0x80,0x2d
|
||||
,0x82,0x0e,0xff,0x2e,0x80,0x14,0x05,0x00,0x00,0x0f,0x80,0x2f,0x82,0x0e,0xff,0x30,0x80,0x78,0x05,0x00,0x00,0x0f,0x80,0x31,0x82,0x0e,0xff,0x32,0x80,0xe0,0x05,0x00
|
||||
,0x00,0x0f,0x80,0x33,0x82,0x0e,0xff,0x34,0x80,0x48,0x06,0x00,0x00,0x0f,0x80,0x35,0x82,0x0e,0xff,0x36,0x80,0xb0,0x06,0x00,0x00,0x0f,0x80,0x37,0x82,0x0e,0xff,0x38
|
||||
,0x80,0x18,0x07,0x00,0x00,0x0f,0x80,0x39,0x82,0x0e,0xff,0x3a,0x80,0x88,0x07,0x00,0x00,0x0f,0x80,0x3b,0x82,0xc1,0x00,0xbf,0xbe,0xff,0x00,0xc6,0xbe,0x00,0xff,0x00
|
||||
,0x00,0xff,0x00,0xc7,0xbe,0x00,0xfe,0x01,0x00,0xff,0x00,0xc8,0xbe,0x00,0xfc,0x03,0x00,0xff,0x00,0xc9,0xbe,0x00,0xf8,0x07,0x00,0xff,0x00,0xca,0xbe,0x00,0xf0,0x0f
|
||||
,0x00,0xff,0x00,0xcb,0xbe,0x00,0xe0,0x1f,0x00,0xff,0x00,0xcc,0xbe,0x00,0xc0,0x3f,0x00,0xff,0x00,0xcd,0xbe,0x00,0x80,0x7f,0x00,0xff,0x00,0xce,0xbe,0x00,0x00,0xff
|
||||
,0x00,0xff,0x00,0xcf,0xbe,0x00,0x00,0xfe,0x01,0xff,0x00,0xd0,0xbe,0x00,0x00,0xfc,0x03,0xff,0x00,0xd1,0xbe,0x00,0x00,0xf8,0x07,0xff,0x00,0xd2,0xbe,0x00,0x00,0xf0
|
||||
,0x0f,0xff,0x00,0xd3,0xbe,0x00,0x00,0xe0,0x1f,0xff,0x00,0xd4,0xbe,0x00,0x00,0xc0,0x3f,0xff,0x00,0xd5,0xbe,0x00,0x00,0x80,0x7f,0x17,0xc0,0xd6,0x80,0x00,0x00,0xec
|
||||
,0xd8,0x00,0x00,0x00,0x18,0x00,0x00,0xec,0xd8,0x0c,0x00,0x00,0x1a,0x7f,0x00,0x8c,0xbf,0x1b,0x33,0x32,0x2a,0x1a,0x31,0x30,0x2a,0x19,0x15,0x14,0x2a,0x18,0x2f,0x2e
|
||||
,0x2a,0x56,0x14,0x14,0x26,0x56,0x2e,0x2e,0x26,0x0a,0x03,0x14,0x32,0x17,0x03,0x2e,0x32,0x02,0x15,0x34,0x32,0x1b,0x6a,0x1c,0xd1,0x03,0x01,0xa9,0x01,0x02,0x2f,0x2e
|
||||
,0x32,0x18,0x6a,0x1c,0xd1,0x03,0x01,0xa9,0x01,0x00,0x00,0x54,0xdc,0x1a,0x00,0x00,0x1c,0x00,0x00,0x54,0xdc,0x17,0x00,0x00,0x1e,0x71,0x0f,0x8c,0xbf,0x1c,0x09,0x40
|
||||
,0x7e,0x1d,0x09,0x38,0x7e,0x70,0x0f,0x8c,0xbf,0x15,0x3d,0x44,0x2a,0x16,0x3f,0x46,0x2a,0x06,0x49,0x2c,0x32,0x19,0x6a,0x1c,0xd1,0x14,0x01,0xa9,0x01,0x16,0x03,0x2a
|
||||
,0x32,0x16,0x6a,0x1c,0xd1,0x19,0x01,0xa9,0x01,0x00,0x00,0x54,0xdc,0x15,0x00,0x00,0x15,0x20,0x1b,0x3c,0x28,0x21,0x27,0x3e,0x26,0x1f,0x1d,0x3e,0x28,0x1c,0x1f,0x38
|
||||
,0x28,0x1d,0x27,0x3a,0x26,0x1d,0x21,0x3a,0x28,0x00,0x01,0x9c,0xd8,0x05,0x1e,0x1c,0x00,0x7f,0x00,0x8c,0xbf,0x83,0x01,0xfe,0xbe,0x08,0x0a,0xee,0xd8,0x29,0x00,0x00
|
||||
,0x3c,0x0c,0x0e,0xee,0xd8,0x29,0x00,0x00,0x40,0x10,0x12,0xee,0xd8,0x29,0x00,0x00,0x44,0x14,0x16,0xee,0xd8,0x29,0x00,0x00,0x48,0x10,0x00,0x89,0xd2,0x22,0x01,0x01
|
||||
,0x00,0x11,0x00,0x89,0xd2,0x23,0x01,0x01,0x00,0x12,0x00,0x89,0xd2,0x22,0x03,0x01,0x00,0x13,0x00,0x89,0xd2,0x23,0x03,0x01,0x00,0x14,0x00,0x89,0xd2,0x22,0x05,0x01
|
||||
,0x00,0x15,0x00,0x89,0xd2,0x23,0x05,0x01,0x00,0x16,0x00,0x89,0xd2,0x22,0x07,0x01,0x00,0x17,0x00,0x89,0xd2,0x23,0x07,0x01,0x00,0x18,0x00,0x89,0xd2,0x22,0x09,0x01
|
||||
,0x00,0x19,0x00,0x89,0xd2,0x23,0x09,0x01,0x00,0x1a,0x00,0x89,0xd2,0x22,0x0b,0x01,0x00,0x1b,0x00,0x89,0xd2,0x23,0x0b,0x01,0x00,0x1c,0x00,0x89,0xd2,0x22,0x0d,0x01
|
||||
,0x00,0x1d,0x00,0x89,0xd2,0x23,0x0d,0x01,0x00,0x1e,0x00,0x89,0xd2,0x22,0x0f,0x01,0x00,0x1f,0x00,0x89,0xd2,0x23,0x0f,0x01,0x00,0x7f,0x00,0x8c,0xbf,0x04,0x1e,0x8c
|
||||
,0xbe,0x08,0x0a,0x9c,0xd8,0x29,0x3c,0x3e,0x00,0x0c,0x0e,0x9c,0xd8,0x29,0x40,0x42,0x00,0x10,0x12,0x9c,0xd8,0x29,0x44,0x46,0x00,0x14,0x16,0x9c,0xd8,0x29,0x48,0x4a
|
||||
,0x00,0x1c,0x00,0x8a,0xd2,0x10,0x00,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x11,0x00,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x12,0x02,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x13,0x02,0x01
|
||||
,0x00,0x1c,0x00,0x8a,0xd2,0x14,0x04,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x15,0x04,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x16,0x06,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x17,0x06,0x01
|
||||
,0x00,0x1c,0x00,0x8a,0xd2,0x18,0x08,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x19,0x08,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x1a,0x0a,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x1b,0x0a,0x01
|
||||
,0x00,0x1c,0x00,0x8a,0xd2,0x1c,0x0c,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x1d,0x0c,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x1e,0x0e,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x1f,0x0e,0x01
|
||||
,0x00,0x24,0x01,0xfe,0xbe,0x00,0x00,0x9a,0xd8,0x11,0x1c,0x00,0x00,0x7f,0x00,0x8c,0xbf,0x1c,0x2b,0x2a,0x2a,0x1d,0x2d,0x2c,0x2a,0x00,0x00,0x6c,0xd8,0x07,0x00,0x00
|
||||
,0x1c,0x00,0x00,0x6c,0xd8,0x08,0x00,0x00,0x1d,0x00,0x00,0x9a,0xd8,0x11,0x15,0x00,0x00,0x7f,0x01,0x8c,0xbf,0x08,0x10,0xee,0xd8,0x11,0x00,0x00,0x1e,0x1c,0x4b,0x14
|
||||
,0x2a,0x7f,0x00,0x8c,0xbf,0x20,0x3d,0x3c,0x2a,0x21,0x3f,0x3e,0x2a,0x0a,0x3b,0x14,0x2a,0x00,0x00,0x74,0xdc,0x1a,0x15,0x00,0x00,0xff,0x14,0x14,0x26,0xc0,0xff,0xff
|
||||
,0x7f,0x00,0x00,0x74,0xdc,0x17,0x1e,0x00,0x00,0x02,0x80,0x06,0xbf,0x06,0x00,0x85,0xbf,0x02,0x81,0x82,0x81,0x24,0x03,0x4a,0x7e,0x80,0x02,0x2e,0x7e,0x0a,0x03,0x48
|
||||
,0x7e,0x80,0x02,0x14,0x7e,0x5d,0xff,0x82,0xbf,0x12,0x03,0x00,0x32,0x01,0x6a,0x1c,0xd1,0x04,0x01,0xa9,0x01,0x00,0x00,0x74,0xdc,0x00,0x15,0x00,0x00,0x00,0x6a,0x19
|
||||
,0xd1,0x00,0x81,0x01,0x00,0x01,0x6a,0x1c,0xd1,0x01,0x01,0xa9,0x01,0x00,0x00,0x74,0xdc,0x00,0x1e,0x00,0x00,0x00,0x6a,0x19,0xd1,0x00,0x81,0x01,0x00,0x01,0x6a,0x1c
|
||||
,0xd1,0x01,0x01,0xa9,0x01,0x00,0x00,0x74,0xdc,0x00,0x20,0x00,0x00,0x40,0x02,0x00,0x7e,0x41,0x02,0x02,0x7e,0x42,0x02,0x04,0x7e,0x00,0x00,0x70,0xdc,0x00,0x02,0x00
|
||||
,0x00,0x00,0x00,0x81,0xbf,0x81,0x08,0x43,0xb9,0x44,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x89,0x02,0x00,0x1c,0x03,0x60,0x7e,0x1d,0xa9,0x62,0x34,0x1c,0x03,0x5c
|
||||
,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00,0xcc,0xd1,0x30,0x5d,0xc2,0x04,0x2e,0x00,0xcc
|
||||
,0xd1,0x2a,0x55,0x12,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x44,0x89,0x00,0x00,0x2a,0x03,0x88,0x7e,0x2b,0x03,0x8a
|
||||
,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x08,0x43,0xb9,0x46,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x8d,0x02,0x00,0x1c,0x03,0x60,0x7e,0x1d,0xa9,0x62
|
||||
,0x34,0x1c,0x03,0x5c,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00,0xcc,0xd1,0x30,0x5d,0xc2
|
||||
,0x04,0x2e,0x00,0xcc,0xd1,0x2a,0x55,0x1a,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x46,0x89,0x00,0x00,0x2a,0x03,0x8c
|
||||
,0x7e,0x2b,0x03,0x8e,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x08,0x43,0xb9,0x48,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x91,0x02,0x00,0x1c,0x03,0x60
|
||||
,0x7e,0x1d,0xa9,0x62,0x34,0x1c,0x03,0x5c,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00,0xcc
|
||||
,0xd1,0x30,0x5d,0xc2,0x04,0x2e,0x00,0xcc,0xd1,0x2a,0x55,0x22,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x48,0x89,0x00
|
||||
,0x00,0x2a,0x03,0x90,0x7e,0x2b,0x03,0x92,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x08,0x43,0xb9,0x4a,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x95,0x02
|
||||
,0x00,0x1c,0x03,0x60,0x7e,0x1d,0xa9,0x62,0x34,0x1c,0x03,0x5c,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa
|
||||
,0x04,0x30,0x00,0xcc,0xd1,0x30,0x5d,0xc2,0x04,0x2e,0x00,0xcc,0xd1,0x2a,0x55,0x2a,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13
|
||||
,0xd0,0x4a,0x89,0x00,0x00,0x2a,0x03,0x94,0x7e,0x2b,0x03,0x96,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x9b,0x3a,0x26,0x1d,0x9f,0x3a
|
||||
,0x28,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00,0x81,0xd2,0x44,0x61,0x02
|
||||
,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x12,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39,0x12,0x05,0x0e,0x00,0x72
|
||||
,0xd0,0x44,0x39,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03,0x88,0x7e,0x51,0x03,0x8a,0x7e,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38
|
||||
,0x28,0x1d,0x9b,0x3a,0x26,0x1d,0x9f,0x3a,0x28,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2
|
||||
,0x04,0x50,0x00,0x81,0xd2,0x46,0x61,0x02,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x1a,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf
|
||||
,0xd1,0x2a,0x39,0x1a,0x05,0x0e,0x00,0x72,0xd0,0x46,0x39,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03,0x8c,0x7e,0x51,0x03,0x8e
|
||||
,0x7e,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x9b,0x3a,0x26,0x1d,0x9f,0x3a,0x28,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca
|
||||
,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00,0x81,0xd2,0x48,0x61,0x02,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x22,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc
|
||||
,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39,0x22,0x05,0x0e,0x00,0x72,0xd0,0x48,0x39,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe
|
||||
,0xbe,0x50,0x03,0x90,0x7e,0x51,0x03,0x92,0x7e,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x9b,0x3a,0x26,0x1d,0x9f,0x3a,0x28,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60
|
||||
,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00,0x81,0xd2,0x4a,0x61,0x02,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x2a
|
||||
,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39,0x2a,0x05,0x0e,0x00,0x72,0xd0,0x4a,0x39,0x02,0x00,0x80,0x02,0xa0
|
||||
,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03,0x94,0x7e,0x51,0x03,0x96,0x7e,0x3c,0x1d,0x80,0xbe,0x81,0x01,0xfe,0xbe,0x0e,0x02,0x5a,0x7e,0x28,0x00,0x86
|
||||
,0xd2,0x26,0x5a,0x02,0x00,0x0f,0x02,0x5e,0x7e,0x2a,0x20,0xe8,0xd1,0x26,0x5e,0xa2,0x04,0x2a,0x03,0x50,0x7e,0x2d,0x20,0xe8,0xd1,0x27,0x5a,0xa2,0x04,0x2a,0x20,0xe8
|
||||
,0xd1,0x27,0x5e,0xae,0x04,0x2a,0x5d,0x54,0x32,0x80,0x56,0x56,0x38,0x20,0x00,0x89,0xd2,0x2a,0x01,0x01,0x00,0x21,0x00,0x89,0xd2,0x2b,0x01,0x01,0x00,0x0f,0x80,0x04
|
||||
,0xbf,0x26,0x80,0xa2,0x85,0x20,0x22,0xa0,0x80,0x21,0x23,0xa1,0x82,0x27,0x80,0x04,0xbf,0x0e,0x80,0xa2,0x85,0x20,0x22,0x8e,0x80,0x21,0x23,0x8f,0x82,0x83,0x01,0xfe
|
||||
,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x01,0xfe,0xbe,0x26,0x02,0x5a,0x7e,0x28,0x00,0x86,0xd2,0x0e,0x5a,0x02,0x00,0x27,0x02,0x5e,0x7e,0x2a,0x20,0xe8,0xd1,0x0e,0x5e,0xa2
|
||||
,0x04,0x2a,0x03,0x50,0x7e,0x2d,0x20,0xe8,0xd1,0x0f,0x5a,0xa2,0x04,0x2a,0x20,0xe8,0xd1,0x0f,0x5e,0xae,0x04,0x2a,0x5d,0x54,0x32,0x80,0x56,0x56,0x38,0x0e,0x00,0x89
|
||||
,0xd2,0x2a,0x01,0x01,0x00,0x0f,0x00,0x89,0xd2,0x2b,0x01,0x01,0x00,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1a,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0xb4,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x13,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0xb4,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x22,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb8,0x0d,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x72
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb8
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27
|
||||
,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x62
|
||||
,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
const int randomx_run_gfx803_bin_size=6568;
|
688
src/backend/opencl/cl/rx/randomx_run_gfx900.asm
Normal file
688
src/backend/opencl/cl/rx/randomx_run_gfx900.asm
Normal file
|
@ -0,0 +1,688 @@
|
|||
/*
|
||||
Copyright (c) 2019 SChernykh
|
||||
|
||||
This file is part of RandomX OpenCL.
|
||||
|
||||
RandomX OpenCL is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RandomX OpenCL is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RandomX OpenCL. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
.amdcl2
|
||||
.gpu GFX900
|
||||
.64bit
|
||||
.arch_minor 0
|
||||
.arch_stepping 0
|
||||
.driver_version 223600
|
||||
.kernel randomx_run
|
||||
.config
|
||||
.dims x
|
||||
.cws 64, 1, 1
|
||||
.sgprsnum 96
|
||||
# 6 waves per SIMD: 37-40 VGPRs
|
||||
# 5 waves per SIMD: 41-48 VGPRs
|
||||
# 4 waves per SIMD: 49-64 VGPRs
|
||||
# 3 waves per SIMD: 65-84 VGPRs
|
||||
# 2 waves per SIMD: 85-128 VGPRs
|
||||
# 1 wave per SIMD: 129-256 VGPRs
|
||||
.vgprsnum 128
|
||||
.localsize 256
|
||||
.floatmode 0xc0
|
||||
.pgmrsrc1 0x00ac035f
|
||||
.pgmrsrc2 0x00000090
|
||||
.dx10clamp
|
||||
.ieeemode
|
||||
.useargs
|
||||
.priority 0
|
||||
.arg _.global_offset_0, "size_t", long
|
||||
.arg _.global_offset_1, "size_t", long
|
||||
.arg _.global_offset_2, "size_t", long
|
||||
.arg _.printf_buffer, "size_t", void*, global, , rdonly
|
||||
.arg _.vqueue_pointer, "size_t", long
|
||||
.arg _.aqlwrap_pointer, "size_t", long
|
||||
.arg dataset, "uchar*", uchar*, global, const, rdonly
|
||||
.arg scratchpad, "uchar*", uchar*, global,
|
||||
.arg registers, "ulong*", ulong*, global,
|
||||
.arg rounding_modes, "uint*", uint*, global,
|
||||
.arg programs, "uint*", uint*, global,
|
||||
.arg batch_size, "uint", uint
|
||||
.arg rx_parameters, "uint", uint
|
||||
.text
|
||||
s_mov_b32 m0, 0x10000
|
||||
s_dcache_wb
|
||||
s_waitcnt vmcnt(0) & lgkmcnt(0)
|
||||
s_icache_inv
|
||||
s_branch begin
|
||||
|
||||
# pgmrsrc2 = 0x00000090, bits 1:5 = 8, so first 8 SGPRs (s0-s7) contain user data
|
||||
# s8 contains group id
|
||||
# v0 contains local id
|
||||
begin:
|
||||
v_lshl_add_u32 v1, s8, 6, v0
|
||||
s_load_dwordx2 s[0:1], s[4:5], 0x0
|
||||
s_load_dwordx2 s[2:3], s[4:5], 0x40
|
||||
s_load_dwordx2 s[64:65], s[4:5], 0x48
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# load rounding mode
|
||||
s_lshl_b32 s16, s8, 2
|
||||
s_add_u32 s64, s64, s16
|
||||
s_addc_u32 s65, s65, 0
|
||||
v_mov_b32 v8, 0
|
||||
global_load_dword v8, v8, s[64:65]
|
||||
s_waitcnt vmcnt(0)
|
||||
v_readlane_b32 s66, v8, 0
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
s_mov_b32 s67, 0
|
||||
|
||||
# used in FSQRT_R to check for "positive normal value" (v_cmpx_class_f64)
|
||||
s_mov_b32 s68, 256
|
||||
s_mov_b32 s69, 0
|
||||
|
||||
v_add_u32 v1, s0, v1
|
||||
v_lshrrev_b32 v2, 6, v1
|
||||
v_lshlrev_b32 v3, 5, v2
|
||||
v_and_b32 v1, 63, v1
|
||||
v_mov_b32 v4, 0
|
||||
v_lshlrev_b64 v[3:4], 3, v[3:4]
|
||||
v_lshlrev_b32 v5, 4, v1
|
||||
v_add_co_u32 v3, vcc, s2, v3
|
||||
v_mov_b32 v6, s3
|
||||
v_addc_co_u32 v4, vcc, v6, v4, vcc
|
||||
v_lshlrev_b32 v41, 2, v1
|
||||
v_add_co_u32 v6, vcc, v3, v41
|
||||
v_addc_co_u32 v7, vcc, v4, 0, vcc
|
||||
global_load_dword v6, v[6:7], off
|
||||
v_mov_b32 v0, 0
|
||||
s_waitcnt vmcnt(0)
|
||||
ds_write_b32 v41, v6
|
||||
s_waitcnt lgkmcnt(0)
|
||||
s_mov_b64 s[0:1], exec
|
||||
v_cmpx_le_u32 s[2:3], v1, 7
|
||||
s_cbranch_execz program_end
|
||||
|
||||
# rx_parameters
|
||||
s_load_dword s20, s[4:5], 0x5c
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# Scratchpad L1 size
|
||||
s_bfe_u32 s21, s20, 0x050000
|
||||
s_lshl_b32 s21, 1, s21
|
||||
|
||||
# Scratchpad L2 size
|
||||
s_bfe_u32 s22, s20, 0x050005
|
||||
s_lshl_b32 s22, 1, s22
|
||||
|
||||
# Scratchpad L3 size
|
||||
s_bfe_u32 s23, s20, 0x05000A
|
||||
s_lshl_b32 s23, 1, s23
|
||||
|
||||
# program iterations
|
||||
s_bfe_u32 s24, s20, 0x04000F
|
||||
s_lshl_b32 s24, 1, s24
|
||||
|
||||
# Base address for scratchpads
|
||||
s_add_u32 s2, s23, 64
|
||||
v_mul_hi_u32 v20, v2, s2
|
||||
v_mul_lo_u32 v2, v2, s2
|
||||
|
||||
# v41, v44 = 0
|
||||
v_mov_b32 v41, 0
|
||||
v_mov_b32 v44, 0
|
||||
|
||||
ds_read_b32 v6, v0 offset:152
|
||||
v_cmp_lt_u32 s[2:3], v1, 4
|
||||
ds_read2_b64 v[34:37], v0 offset0:18 offset1:16
|
||||
ds_read_b64 v[11:12], v0 offset:136
|
||||
s_movk_i32 s9, 0x0
|
||||
s_mov_b64 s[6:7], exec
|
||||
s_andn2_b64 exec, s[6:7], s[2:3]
|
||||
ds_read_b64 v[13:14], v0 offset:160
|
||||
s_andn2_b64 exec, s[6:7], exec
|
||||
v_mov_b32 v13, 0
|
||||
v_mov_b32 v14, 0
|
||||
s_mov_b64 exec, s[6:7]
|
||||
|
||||
# compiled program size
|
||||
s_mov_b64 s[6:7], s[8:9]
|
||||
s_mulk_i32 s6, 10048
|
||||
|
||||
v_add3_u32 v5, v0, v5, 64
|
||||
s_mov_b64 s[8:9], exec
|
||||
s_andn2_b64 exec, s[8:9], s[2:3]
|
||||
ds_read_b64 v[15:16], v0 offset:168
|
||||
s_andn2_b64 exec, s[8:9], exec
|
||||
v_mov_b32 v15, 0
|
||||
v_mov_b32 v16, 0
|
||||
s_mov_b64 exec, s[8:9]
|
||||
s_load_dwordx4 s[8:11], s[4:5], 0x30
|
||||
|
||||
# batch_size
|
||||
s_load_dword s16, s[4:5], 0x58
|
||||
|
||||
s_load_dwordx2 s[4:5], s[4:5], 0x50
|
||||
v_lshlrev_b32 v1, 3, v1
|
||||
v_add_u32 v17, v0, v1
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_add_co_u32 v2, vcc, s10, v2
|
||||
v_mov_b32 v18, s11
|
||||
v_addc_co_u32 v18, vcc, v18, v20, vcc
|
||||
v_mov_b32 v19, 0xffffff
|
||||
v_add_co_u32 v6, vcc, s8, v6
|
||||
v_mov_b32 v20, s9
|
||||
v_addc_co_u32 v20, vcc, v20, 0, vcc
|
||||
ds_read_b64 v[21:22], v17
|
||||
s_add_u32 s4, s4, s6
|
||||
s_addc_u32 s5, s5, s7
|
||||
v_cndmask_b32 v19, v19, -1, s[2:3]
|
||||
v_lshl_add_u32 v8, v35, 3, v0
|
||||
v_lshl_add_u32 v7, v34, 3, v0
|
||||
v_lshl_add_u32 v12, v12, 3, v0
|
||||
v_lshl_add_u32 v0, v11, 3, v0
|
||||
v_mov_b32 v10, v36
|
||||
v_mov_b32 v23, v37
|
||||
|
||||
# loop counter
|
||||
s_sub_u32 s2, s24, 1
|
||||
|
||||
# batch_size
|
||||
s_mov_b32 s3, s16
|
||||
|
||||
# Scratchpad masks for scratchpads
|
||||
v_sub_u32 v38, s21, 8
|
||||
v_sub_u32 v39, s22, 8
|
||||
v_sub_u32 v50, s23, 8
|
||||
|
||||
# mask for FSCAL_R
|
||||
v_mov_b32 v51, 0x80F00000
|
||||
|
||||
# load scratchpad base address
|
||||
v_readlane_b32 s0, v2, 0
|
||||
v_readlane_b32 s1, v18, 0
|
||||
|
||||
# save current executiom mask
|
||||
s_mov_b64 s[36:37], exec
|
||||
|
||||
# v41 = 0 on lane 0, set it to 8 on lane 1
|
||||
# v44 = 0 on lane 0, set it to 4 on lane 1
|
||||
s_mov_b64 exec, 2
|
||||
v_mov_b32 v41, 8
|
||||
v_mov_b32 v44, 4
|
||||
|
||||
# load group A registers
|
||||
# Read low 8 bytes into lane 0 and high 8 bytes into lane 1
|
||||
s_mov_b64 exec, 3
|
||||
ds_read2_b64 v[52:55], v41 offset0:24 offset1:26
|
||||
ds_read2_b64 v[56:59], v41 offset0:28 offset1:30
|
||||
|
||||
# xmantissaMask
|
||||
v_mov_b32 v77, (1 << 24) - 1
|
||||
|
||||
# xexponentMask
|
||||
ds_read_b64 v[78:79], v41 offset:160
|
||||
|
||||
# Restore execution mask
|
||||
s_mov_b64 exec, s[36:37]
|
||||
|
||||
# sign mask (used in FSQRT_R)
|
||||
v_mov_b32 v82, 0x80000000
|
||||
|
||||
# High 32 bits of "1.0" constant (used in FDIV_M)
|
||||
v_mov_b32 v83, (1023 << 20)
|
||||
|
||||
# Used to multiply FP64 values by 0.5
|
||||
v_mov_b32 v84, (1 << 20)
|
||||
|
||||
s_getpc_b64 s[14:15]
|
||||
cur_addr:
|
||||
|
||||
# get addresses of FSQRT_R subroutines
|
||||
s_add_u32 s40, s14, fsqrt_r_sub0 - cur_addr
|
||||
s_addc_u32 s41, s15, 0
|
||||
s_add_u32 s42, s14, fsqrt_r_sub1 - cur_addr
|
||||
s_addc_u32 s43, s15, 0
|
||||
s_add_u32 s44, s14, fsqrt_r_sub2 - cur_addr
|
||||
s_addc_u32 s45, s15, 0
|
||||
s_add_u32 s46, s14, fsqrt_r_sub3 - cur_addr
|
||||
s_addc_u32 s47, s15, 0
|
||||
|
||||
# get addresses of FDIV_M subroutines
|
||||
s_add_u32 s48, s14, fdiv_m_sub0 - cur_addr
|
||||
s_addc_u32 s49, s15, 0
|
||||
s_add_u32 s50, s14, fdiv_m_sub1 - cur_addr
|
||||
s_addc_u32 s51, s15, 0
|
||||
s_add_u32 s52, s14, fdiv_m_sub2 - cur_addr
|
||||
s_addc_u32 s53, s15, 0
|
||||
s_add_u32 s54, s14, fdiv_m_sub3 - cur_addr
|
||||
s_addc_u32 s55, s15, 0
|
||||
|
||||
# get address for ISMULH_R subroutine
|
||||
s_add_u32 s56, s14, ismulh_r_sub - cur_addr
|
||||
s_addc_u32 s57, s15, 0
|
||||
|
||||
# get address for IMULH_R subroutine
|
||||
s_add_u32 s58, s14, imulh_r_sub - cur_addr
|
||||
s_addc_u32 s59, s15, 0
|
||||
|
||||
# used in IXOR_R instruction
|
||||
s_mov_b32 s63, -1
|
||||
|
||||
# used in CBRANCH instruction
|
||||
s_mov_b32 s70, (0xFF << 8)
|
||||
s_mov_b32 s71, (0xFF << 9)
|
||||
s_mov_b32 s72, (0xFF << 10)
|
||||
s_mov_b32 s73, (0xFF << 11)
|
||||
s_mov_b32 s74, (0xFF << 12)
|
||||
s_mov_b32 s75, (0xFF << 13)
|
||||
s_mov_b32 s76, (0xFF << 14)
|
||||
s_mov_b32 s77, (0xFF << 15)
|
||||
s_mov_b32 s78, (0xFF << 16)
|
||||
s_mov_b32 s79, (0xFF << 17)
|
||||
s_mov_b32 s80, (0xFF << 18)
|
||||
s_mov_b32 s81, (0xFF << 19)
|
||||
s_mov_b32 s82, (0xFF << 20)
|
||||
s_mov_b32 s83, (0xFF << 21)
|
||||
s_mov_b32 s84, (0xFF << 22)
|
||||
s_mov_b32 s85, (0xFF << 23)
|
||||
|
||||
# ScratchpadL3Mask64
|
||||
s_sub_u32 s86, s23, 64
|
||||
|
||||
main_loop:
|
||||
# const uint2 spMix = as_uint2(R[readReg0] ^ R[readReg1]);
|
||||
ds_read_b64 v[24:25], v0
|
||||
ds_read_b64 v[26:27], v12
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_xor_b32 v25, v27, v25
|
||||
v_xor_b32 v24, v26, v24
|
||||
|
||||
# spAddr1 ^= spMix.y;
|
||||
# spAddr0 ^= spMix.x;
|
||||
v_xor_b32 v10, v25, v10
|
||||
v_xor_b32 v23, v24, v23
|
||||
|
||||
# spAddr1 &= ScratchpadL3Mask64;
|
||||
# spAddr0 &= ScratchpadL3Mask64;
|
||||
v_and_b32 v10, s86, v10
|
||||
v_and_b32 v23, s86, v23
|
||||
|
||||
# Offset for scratchpads
|
||||
# offset1 = spAddr1 + sub * 8
|
||||
# offset0 = spAddr0 + sub * 8
|
||||
v_add_u32 v10, v10, v1
|
||||
v_add_u32 v23, v23, v1
|
||||
|
||||
# __global ulong* p1 = (__global ulong*)(scratchpad + offset1);
|
||||
# __global ulong* p0 = (__global ulong*)(scratchpad + offset0);
|
||||
v_add_co_u32 v26, vcc, v2, v10
|
||||
v_addc_co_u32 v27, vcc, v18, 0, vcc
|
||||
v_add_co_u32 v23, vcc, v2, v23
|
||||
v_addc_co_u32 v24, vcc, v18, 0, vcc
|
||||
|
||||
# load from spAddr1
|
||||
global_load_dwordx2 v[28:29], v[26:27], off
|
||||
|
||||
# load from spAddr0
|
||||
global_load_dwordx2 v[30:31], v[23:24], off
|
||||
s_waitcnt vmcnt(1)
|
||||
|
||||
v_cvt_f64_i32 v[32:33], v28
|
||||
v_cvt_f64_i32 v[28:29], v29
|
||||
s_waitcnt vmcnt(0)
|
||||
|
||||
# R[sub] ^= *p0;
|
||||
v_xor_b32 v34, v21, v30
|
||||
v_xor_b32 v35, v22, v31
|
||||
|
||||
v_add_co_u32 v22, vcc, v6, v36
|
||||
v_addc_co_u32 v25, vcc, v20, 0, vcc
|
||||
v_add_co_u32 v21, vcc, v22, v1
|
||||
v_addc_co_u32 v22, vcc, v25, 0, vcc
|
||||
global_load_dwordx2 v[21:22], v[21:22], off
|
||||
v_or_b32 v30, v32, v13
|
||||
v_and_or_b32 v31, v33, v19, v14
|
||||
v_or_b32 v28, v28, v15
|
||||
v_and_or_b32 v29, v29, v19, v16
|
||||
ds_write2_b64 v5, v[30:31], v[28:29] offset1:1
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# Program 0
|
||||
|
||||
# load group F,E registers
|
||||
# Read low 8 bytes into lane 0 and high 8 bytes into lane 1
|
||||
s_mov_b64 exec, 3
|
||||
ds_read2_b64 v[60:63], v41 offset0:8 offset1:10
|
||||
ds_read2_b64 v[64:67], v41 offset0:12 offset1:14
|
||||
ds_read2_b64 v[68:71], v41 offset0:16 offset1:18
|
||||
ds_read2_b64 v[72:75], v41 offset0:20 offset1:22
|
||||
|
||||
# load VM integer registers
|
||||
v_readlane_b32 s16, v34, 0
|
||||
v_readlane_b32 s17, v35, 0
|
||||
v_readlane_b32 s18, v34, 1
|
||||
v_readlane_b32 s19, v35, 1
|
||||
v_readlane_b32 s20, v34, 2
|
||||
v_readlane_b32 s21, v35, 2
|
||||
v_readlane_b32 s22, v34, 3
|
||||
v_readlane_b32 s23, v35, 3
|
||||
v_readlane_b32 s24, v34, 4
|
||||
v_readlane_b32 s25, v35, 4
|
||||
v_readlane_b32 s26, v34, 5
|
||||
v_readlane_b32 s27, v35, 5
|
||||
v_readlane_b32 s28, v34, 6
|
||||
v_readlane_b32 s29, v35, 6
|
||||
v_readlane_b32 s30, v34, 7
|
||||
v_readlane_b32 s31, v35, 7
|
||||
|
||||
s_waitcnt lgkmcnt(0)
|
||||
|
||||
# call JIT code
|
||||
s_swappc_b64 s[12:13], s[4:5]
|
||||
|
||||
# Write out group F,E registers
|
||||
# Write low 8 bytes from lane 0 and high 8 bytes from lane 1
|
||||
ds_write2_b64 v41, v[60:61], v[62:63] offset0:8 offset1:10
|
||||
ds_write2_b64 v41, v[64:65], v[66:67] offset0:12 offset1:14
|
||||
ds_write2_b64 v41, v[68:69], v[70:71] offset0:16 offset1:18
|
||||
ds_write2_b64 v41, v[72:73], v[74:75] offset0:20 offset1:22
|
||||
|
||||
# store VM integer registers
|
||||
v_writelane_b32 v28, s16, 0
|
||||
v_writelane_b32 v29, s17, 0
|
||||
v_writelane_b32 v28, s18, 1
|
||||
v_writelane_b32 v29, s19, 1
|
||||
v_writelane_b32 v28, s20, 2
|
||||
v_writelane_b32 v29, s21, 2
|
||||
v_writelane_b32 v28, s22, 3
|
||||
v_writelane_b32 v29, s23, 3
|
||||
v_writelane_b32 v28, s24, 4
|
||||
v_writelane_b32 v29, s25, 4
|
||||
v_writelane_b32 v28, s26, 5
|
||||
v_writelane_b32 v29, s27, 5
|
||||
v_writelane_b32 v28, s28, 6
|
||||
v_writelane_b32 v29, s29, 6
|
||||
v_writelane_b32 v28, s30, 7
|
||||
v_writelane_b32 v29, s31, 7
|
||||
|
||||
# Restore execution mask
|
||||
s_mov_b64 exec, s[36:37]
|
||||
|
||||
# Write out VM integer registers
|
||||
ds_write_b64 v17, v[28:29]
|
||||
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_xor_b32 v21, v28, v21
|
||||
v_xor_b32 v22, v29, v22
|
||||
ds_read_b32 v28, v7
|
||||
ds_read_b32 v29, v8
|
||||
ds_write_b64 v17, v[21:22]
|
||||
s_waitcnt lgkmcnt(1)
|
||||
ds_read2_b64 v[30:33], v17 offset0:8 offset1:16
|
||||
v_xor_b32 v10, v28, v37
|
||||
s_waitcnt lgkmcnt(0)
|
||||
v_xor_b32 v30, v32, v30
|
||||
v_xor_b32 v31, v33, v31
|
||||
v_xor_b32 v10, v10, v29
|
||||
global_store_dwordx2 v[26:27], v[21:22], off
|
||||
v_and_b32 v10, 0x7fffffc0, v10
|
||||
global_store_dwordx2 v[23:24], v[30:31], off
|
||||
s_cmp_eq_u32 s2, 0
|
||||
s_cbranch_scc1 main_loop_end
|
||||
s_sub_i32 s2, s2, 1
|
||||
v_mov_b32 v37, v36
|
||||
v_mov_b32 v23, 0
|
||||
v_mov_b32 v36, v10
|
||||
v_mov_b32 v10, 0
|
||||
s_branch main_loop
|
||||
main_loop_end:
|
||||
|
||||
v_add_co_u32 v0, vcc, v3, v1
|
||||
v_addc_co_u32 v1, vcc, v4, 0, vcc
|
||||
global_store_dwordx2 v[0:1], v[21:22], off
|
||||
global_store_dwordx2 v[0:1], v[30:31], off inst_offset:64
|
||||
global_store_dwordx2 v[0:1], v[32:33], off inst_offset:128
|
||||
|
||||
# store rounding mode
|
||||
v_mov_b32 v0, 0
|
||||
v_mov_b32 v1, s66
|
||||
global_store_dword v0, v1, s[64:65]
|
||||
|
||||
program_end:
|
||||
s_endpgm
|
||||
|
||||
fsqrt_r_sub0:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[68:69]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[68:69]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[68:69]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[68:69]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[68:69], s[68:69]
|
||||
v_mov_b32 v68, v42
|
||||
v_mov_b32 v69, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fsqrt_r_sub1:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[70:71]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[70:71]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[70:71]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[70:71]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[70:71], s[68:69]
|
||||
v_mov_b32 v70, v42
|
||||
v_mov_b32 v71, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fsqrt_r_sub2:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[72:73]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[72:73]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[72:73]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[72:73]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[72:73], s[68:69]
|
||||
v_mov_b32 v72, v42
|
||||
v_mov_b32 v73, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fsqrt_r_sub3:
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rsq_f64 v[28:29], v[74:75]
|
||||
|
||||
# Improve initial approximation (can be skipped)
|
||||
#v_mul_f64 v[42:43], v[28:29], v[74:75]
|
||||
#v_mul_f64 v[48:49], v[28:29], -0.5
|
||||
#v_fma_f64 v[48:49], v[48:49], v[42:43], 0.5
|
||||
#v_fma_f64 v[28:29], v[28:29], v[48:49], v[28:29]
|
||||
|
||||
v_mul_f64 v[42:43], v[28:29], v[74:75]
|
||||
v_mov_b32 v48, v28
|
||||
v_sub_u32 v49, v29, v84
|
||||
v_mov_b32 v46, v28
|
||||
v_xor_b32 v47, v49, v82
|
||||
v_fma_f64 v[46:47], v[46:47], v[42:43], 0.5
|
||||
v_fma_f64 v[42:43], v[42:43], v[46:47], v[42:43]
|
||||
v_fma_f64 v[48:49], v[48:49], v[46:47], v[48:49]
|
||||
v_fma_f64 v[46:47], -v[42:43], v[42:43], v[74:75]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[46:47], v[48:49], v[42:43]
|
||||
v_cmpx_class_f64 s[14:15], v[74:75], s[68:69]
|
||||
v_mov_b32 v74, v42
|
||||
v_mov_b32 v75, v43
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub0:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_or_b32 v29, v29, v77, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[68:69], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[68:69]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[68:69]
|
||||
v_cmpx_eq_f64 s[14:15], v[68:69], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v68, v80
|
||||
v_mov_b32 v69, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub1:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_or_b32 v29, v29, v77, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[70:71], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[70:71]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[70:71]
|
||||
v_cmpx_eq_f64 s[14:15], v[70:71], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v70, v80
|
||||
v_mov_b32 v71, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub2:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_or_b32 v29, v29, v77, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[72:73], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[72:73]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[72:73]
|
||||
v_cmpx_eq_f64 s[14:15], v[72:73], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v72, v80
|
||||
v_mov_b32 v73, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
fdiv_m_sub3:
|
||||
v_or_b32 v28, v28, v78
|
||||
v_and_or_b32 v29, v29, v77, v79
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s67
|
||||
v_rcp_f64 v[48:49], v[28:29]
|
||||
v_fma_f64 v[80:81], -v[28:29], v[48:49], 1.0
|
||||
v_fma_f64 v[48:49], v[48:49], v[80:81], v[48:49]
|
||||
v_mul_f64 v[80:81], v[74:75], v[48:49]
|
||||
v_fma_f64 v[42:43], -v[28:29], v[80:81], v[74:75]
|
||||
s_setreg_b32 hwreg(mode, 2, 2), s66
|
||||
v_fma_f64 v[42:43], v[42:43], v[48:49], v[80:81]
|
||||
v_div_fixup_f64 v[80:81], v[42:43], v[28:29], v[74:75]
|
||||
v_cmpx_eq_f64 s[14:15], v[74:75], v[28:29]
|
||||
v_mov_b32 v80, 0
|
||||
v_mov_b32 v81, v83
|
||||
s_mov_b64 exec, 3
|
||||
v_mov_b32 v74, v80
|
||||
v_mov_b32 v75, v81
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
ismulh_r_sub:
|
||||
s_mov_b64 exec, 1
|
||||
v_mov_b32 v45, s14
|
||||
v_mul_hi_u32 v40, s38, v45
|
||||
v_mov_b32 v47, s15
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s38, v47, v[40:41]
|
||||
v_mov_b32 v40, v42
|
||||
v_mad_u64_u32 v[45:46], s[32:33], s39, v45, v[40:41]
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s39, v47, v[43:44]
|
||||
v_add_co_u32 v42, vcc, v42, v46
|
||||
v_addc_co_u32 v43, vcc, 0, v43, vcc
|
||||
v_readlane_b32 s32, v42, 0
|
||||
v_readlane_b32 s33, v43, 0
|
||||
s_cmp_lt_i32 s15, 0
|
||||
s_cselect_b64 s[34:35], s[38:39], 0
|
||||
s_sub_u32 s32, s32, s34
|
||||
s_subb_u32 s33, s33, s35
|
||||
s_cmp_lt_i32 s39, 0
|
||||
s_cselect_b64 s[34:35], s[14:15], 0
|
||||
s_sub_u32 s14, s32, s34
|
||||
s_subb_u32 s15, s33, s35
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
||||
|
||||
imulh_r_sub:
|
||||
s_mov_b64 exec, 1
|
||||
v_mov_b32 v45, s38
|
||||
v_mul_hi_u32 v40, s14, v45
|
||||
v_mov_b32 v47, s39
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s14, v47, v[40:41]
|
||||
v_mov_b32 v40, v42
|
||||
v_mad_u64_u32 v[45:46], s[32:33], s15, v45, v[40:41]
|
||||
v_mad_u64_u32 v[42:43], s[32:33], s15, v47, v[43:44]
|
||||
v_add_co_u32 v42, vcc, v42, v46
|
||||
v_addc_co_u32 v43, vcc, 0, v43, vcc
|
||||
v_readlane_b32 s14, v42, 0
|
||||
v_readlane_b32 s15, v43, 0
|
||||
s_mov_b64 exec, 3
|
||||
s_setpc_b64 s[60:61]
|
215
src/backend/opencl/cl/rx/randomx_run_gfx900.h
Normal file
215
src/backend/opencl/cl/rx/randomx_run_gfx900.h
Normal file
|
@ -0,0 +1,215 @@
|
|||
/*
|
||||
This file was auto-generated from randomx_run_gfx900.asm:
|
||||
|
||||
clrxasm randomx_run_gfx900.asm -o randomx_run_gfx900.bin
|
||||
bin2h -c randomx_run_gfx900_bin < randomx_run_gfx900.bin > randomx_run_gfx900.h
|
||||
|
||||
clrxasm can be downloaded here: https://github.com/CLRX/CLRX-mirror/releases
|
||||
bin2h can be downloaded here: http://www.deadnode.org/sw/bin2h/
|
||||
*/
|
||||
|
||||
static unsigned char randomx_run_gfx900_bin[]={
|
||||
0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x5b,0xaf,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x07,0x00,0x01,0x00,0x00
|
||||
,0x2e,0x73,0x68,0x73,0x74,0x72,0x74,0x61,0x62,0x00,0x2e,0x73,0x74,0x72,0x74,0x61,0x62,0x00,0x2e,0x73,0x79,0x6d,0x74,0x61,0x62,0x00,0x2e,0x63,0x6f,0x6d,0x6d,0x65
|
||||
,0x6e,0x74,0x00,0x2e,0x72,0x6f,0x64,0x61,0x74,0x61,0x00,0x2e,0x74,0x65,0x78,0x74,0x00,0x00,0x5f,0x5f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x5f,0x26,0x5f,0x5f,0x4f,0x70
|
||||
,0x65,0x6e,0x43,0x4c,0x5f,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x78,0x5f,0x72,0x75,0x6e,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x6d,0x65,0x74,0x61,0x64,0x61,0x74,0x61
|
||||
,0x00,0x61,0x63,0x6c,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x5f,0x73,0x74,0x72,0x69,0x6e,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38
|
||||
,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41
|
||||
,0x4d,0x44,0x2d,0x43,0x4f,0x4d,0x50,0x2d,0x4c,0x49,0x42,0x2d,0x76,0x30,0x2e,0x38,0x20,0x28,0x30,0x2e,0x30,0x2e,0x53,0x43,0x5f,0x42,0x55,0x49,0x4c,0x44,0x5f,0x4e
|
||||
,0x55,0x4d,0x42,0x45,0x52,0x29,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x68,0x00
|
||||
,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x5f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x5f,0x64
|
||||
,0x75,0x6d,0x6d,0x79,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x00,0x47,0x46,0x58,0x39,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x05,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0x40,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x05,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00
|
||||
,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x07,0x00
|
||||
,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00
|
||||
,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xb0,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0xc0,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x5f,0x2e,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x30,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x67,0x6c,0x6f
|
||||
,0x62,0x61,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x31,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x6f,0x66,0x66
|
||||
,0x73,0x65,0x74,0x5f,0x32,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x70,0x72,0x69,0x6e,0x74,0x66,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x00,0x73,0x69,0x7a
|
||||
,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x76,0x71,0x75,0x65,0x75,0x65,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x5f,0x2e,0x61,0x71
|
||||
,0x6c,0x77,0x72,0x61,0x70,0x5f,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x00,0x73,0x69,0x7a,0x65,0x5f,0x74,0x00,0x64,0x61,0x74,0x61,0x73,0x65,0x74,0x00,0x75,0x63,0x68
|
||||
,0x61,0x72,0x2a,0x00,0x73,0x63,0x72,0x61,0x74,0x63,0x68,0x70,0x61,0x64,0x00,0x75,0x63,0x68,0x61,0x72,0x2a,0x00,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,0x00
|
||||
,0x75,0x6c,0x6f,0x6e,0x67,0x2a,0x00,0x72,0x6f,0x75,0x6e,0x64,0x69,0x6e,0x67,0x5f,0x6d,0x6f,0x64,0x65,0x73,0x00,0x75,0x69,0x6e,0x74,0x2a,0x00,0x70,0x72,0x6f,0x67
|
||||
,0x72,0x61,0x6d,0x73,0x00,0x75,0x69,0x6e,0x74,0x2a,0x00,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x00,0x75,0x69,0x6e,0x74,0x00,0x72,0x78,0x5f,0x70,0x61
|
||||
,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x73,0x00,0x75,0x69,0x6e,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x45
|
||||
,0x4c,0x46,0x02,0x01,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xe0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x38,0x00,0x01,0x00,0x40,0x00,0x06,0x00,0x01,0x00,0x03,0x00
|
||||
,0x00,0x60,0x05,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x0b
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x73,0x68,0x73,0x74,0x72,0x74,0x61,0x62
|
||||
,0x00,0x2e,0x73,0x74,0x72,0x74,0x61,0x62,0x00,0x2e,0x6e,0x6f,0x74,0x65,0x00,0x2e,0x68,0x73,0x61,0x74,0x65,0x78,0x74,0x00,0x2e,0x73,0x79,0x6d,0x74,0x61,0x62,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x5f,0x5f,0x4f,0x70,0x65,0x6e,0x43,0x4c,0x5f,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x78,0x5f,0x72,0x75,0x6e,0x5f,0x6b,0x65,0x72
|
||||
,0x6e,0x65,0x6c,0x00,0x5f,0x5f,0x68,0x73,0x61,0x5f,0x73,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x68,0x73,0x61,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x00,0x00,0x04,0x00
|
||||
,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x02,0x00
|
||||
,0x00,0x00,0x41,0x4d,0x44,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x04,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x41,0x4d
|
||||
,0x44,0x00,0x04,0x00,0x07,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x41,0x4d,0x44,0x47,0x50,0x55,0x00,0x00,0x04,0x00
|
||||
,0x00,0x00,0x29,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x19,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x4d,0x44,0x20,0x48,0x53
|
||||
,0x41,0x20,0x52,0x75,0x6e,0x74,0x69,0x6d,0x65,0x20,0x46,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x1a,0x00
|
||||
,0x00,0x00,0x05,0x00,0x00,0x00,0x41,0x4d,0x44,0x00,0x16,0x00,0x2d,0x68,0x73,0x61,0x5f,0x63,0x61,0x6c,0x6c,0x5f,0x63,0x6f,0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f,0x6e
|
||||
,0x3d,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x03,0xac,0x00,0x90,0x00,0x00,0x00,0x29,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x01
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x04,0x04,0x04,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00
|
||||
,0xfc,0xbe,0x00,0x00,0x01,0x00,0x00,0x00,0x84,0xc0,0x00,0x00,0x00,0x00,0x70,0x00,0x8c,0xbf,0x00,0x00,0x93,0xbf,0x00,0x00,0x82,0xbf,0x01,0x00,0xfd,0xd1,0x08,0x0c
|
||||
,0x01,0x04,0x02,0x00,0x06,0xc0,0x00,0x00,0x00,0x00,0x82,0x00,0x06,0xc0,0x40,0x00,0x00,0x00,0x02,0x10,0x06,0xc0,0x48,0x00,0x00,0x00,0x7f,0xc0,0x8c,0xbf,0x08,0x82
|
||||
,0x10,0x8e,0x40,0x10,0x40,0x80,0x41,0x80,0x41,0x82,0x80,0x02,0x10,0x7e,0x00,0x80,0x50,0xdc,0x08,0x00,0x40,0x08,0x70,0x0f,0x8c,0xbf,0x42,0x00,0x89,0xd2,0x08,0x01
|
||||
,0x01,0x00,0x81,0x08,0x42,0xb9,0x80,0x00,0xc3,0xbe,0xff,0x00,0xc4,0xbe,0x00,0x01,0x00,0x00,0x80,0x00,0xc5,0xbe,0x00,0x02,0x02,0x68,0x86,0x02,0x04,0x20,0x85,0x04
|
||||
,0x06,0x24,0xbf,0x02,0x02,0x26,0x80,0x02,0x08,0x7e,0x03,0x00,0x8f,0xd2,0x83,0x06,0x02,0x00,0x84,0x02,0x0a,0x24,0x02,0x06,0x06,0x32,0x03,0x02,0x0c,0x7e,0x06,0x09
|
||||
,0x08,0x38,0x82,0x02,0x52,0x24,0x03,0x53,0x0c,0x32,0x07,0x6a,0x1c,0xd1,0x04,0x01,0xa9,0x01,0x00,0x80,0x50,0xdc,0x06,0x00,0x7f,0x06,0x80,0x02,0x00,0x7e,0x70,0x0f
|
||||
,0x8c,0xbf,0x00,0x00,0x1a,0xd8,0x29,0x06,0x00,0x00,0x7f,0xc0,0x8c,0xbf,0x7e,0x01,0x80,0xbe,0x02,0x00,0xdb,0xd0,0x01,0x0f,0x01,0x00,0x68,0x01,0x88,0xbf,0x02,0x05
|
||||
,0x02,0xc0,0x5c,0x00,0x00,0x00,0x7f,0xc0,0x8c,0xbf,0x14,0xff,0x95,0x92,0x00,0x00,0x05,0x00,0x81,0x15,0x15,0x8e,0x14,0xff,0x96,0x92,0x05,0x00,0x05,0x00,0x81,0x16
|
||||
,0x16,0x8e,0x14,0xff,0x97,0x92,0x0a,0x00,0x05,0x00,0x81,0x17,0x17,0x8e,0x14,0xff,0x98,0x92,0x0f,0x00,0x04,0x00,0x81,0x18,0x18,0x8e,0x17,0xc0,0x02,0x80,0x14,0x00
|
||||
,0x86,0xd2,0x02,0x05,0x00,0x00,0x02,0x00,0x85,0xd2,0x02,0x05,0x00,0x00,0x80,0x02,0x52,0x7e,0x80,0x02,0x58,0x7e,0x98,0x00,0x6c,0xd8,0x00,0x00,0x00,0x06,0x02,0x00
|
||||
,0xc9,0xd0,0x01,0x09,0x01,0x00,0x12,0x10,0xee,0xd8,0x00,0x00,0x00,0x22,0x88,0x00,0xec,0xd8,0x00,0x00,0x00,0x0b,0x00,0x00,0x09,0xb0,0x7e,0x01,0x86,0xbe,0x06,0x02
|
||||
,0xfe,0x89,0xa0,0x00,0xec,0xd8,0x00,0x00,0x00,0x0d,0x06,0x7e,0xfe,0x89,0x80,0x02,0x1a,0x7e,0x80,0x02,0x1c,0x7e,0x06,0x01,0xfe,0xbe,0x08,0x01,0x86,0xbe,0x40,0x27
|
||||
,0x86,0xb7,0x05,0x00,0xff,0xd1,0x00,0x0b,0x02,0x03,0x7e,0x01,0x88,0xbe,0x08,0x02,0xfe,0x89,0xa8,0x00,0xec,0xd8,0x00,0x00,0x00,0x0f,0x08,0x7e,0xfe,0x89,0x80,0x02
|
||||
,0x1e,0x7e,0x80,0x02,0x20,0x7e,0x08,0x01,0xfe,0xbe,0x02,0x02,0x0a,0xc0,0x30,0x00,0x00,0x00,0x02,0x04,0x02,0xc0,0x58,0x00,0x00,0x00,0x02,0x01,0x06,0xc0,0x50,0x00
|
||||
,0x00,0x00,0x83,0x02,0x02,0x24,0x00,0x03,0x22,0x68,0x7f,0xc0,0x8c,0xbf,0x0a,0x04,0x04,0x32,0x0b,0x02,0x24,0x7e,0x12,0x29,0x24,0x38,0xff,0x02,0x26,0x7e,0xff,0xff
|
||||
,0xff,0x00,0x08,0x0c,0x0c,0x32,0x09,0x02,0x28,0x7e,0x14,0x6a,0x1c,0xd1,0x14,0x01,0xa9,0x01,0x00,0x00,0xec,0xd8,0x11,0x00,0x00,0x15,0x04,0x06,0x04,0x80,0x05,0x07
|
||||
,0x05,0x82,0x13,0x00,0x00,0xd1,0x13,0x83,0x09,0x00,0x08,0x00,0xfd,0xd1,0x23,0x07,0x01,0x04,0x07,0x00,0xfd,0xd1,0x22,0x07,0x01,0x04,0x0c,0x00,0xfd,0xd1,0x0c,0x07
|
||||
,0x01,0x04,0x00,0x00,0xfd,0xd1,0x0b,0x07,0x01,0x04,0x24,0x03,0x14,0x7e,0x25,0x03,0x2e,0x7e,0x18,0x81,0x82,0x80,0x10,0x00,0x83,0xbe,0x26,0x00,0x35,0xd1,0x15,0x10
|
||||
,0x01,0x00,0x27,0x00,0x35,0xd1,0x16,0x10,0x01,0x00,0x32,0x00,0x35,0xd1,0x17,0x10,0x01,0x00,0xff,0x02,0x66,0x7e,0x00,0x00,0xf0,0x80,0x00,0x00,0x89,0xd2,0x02,0x01
|
||||
,0x01,0x00,0x01,0x00,0x89,0xd2,0x12,0x01,0x01,0x00,0x7e,0x01,0xa4,0xbe,0x82,0x01,0xfe,0xbe,0x88,0x02,0x52,0x7e,0x84,0x02,0x58,0x7e,0x83,0x01,0xfe,0xbe,0x18,0x1a
|
||||
,0xee,0xd8,0x29,0x00,0x00,0x34,0x1c,0x1e,0xee,0xd8,0x29,0x00,0x00,0x38,0xff,0x02,0x9a,0x7e,0xff,0xff,0xff,0x00,0xa0,0x00,0xec,0xd8,0x29,0x00,0x00,0x4e,0x24,0x01
|
||||
,0xfe,0xbe,0xff,0x02,0xa4,0x7e,0x00,0x00,0x00,0x80,0xff,0x02,0xa6,0x7e,0x00,0x00,0xf0,0x3f,0xff,0x02,0xa8,0x7e,0x00,0x00,0x10,0x00,0x00,0x1c,0x8e,0xbe,0x0e,0xff
|
||||
,0x28,0x80,0xc4,0x03,0x00,0x00,0x0f,0x80,0x29,0x82,0x0e,0xff,0x2a,0x80,0x28,0x04,0x00,0x00,0x0f,0x80,0x2b,0x82,0x0e,0xff,0x2c,0x80,0x8c,0x04,0x00,0x00,0x0f,0x80
|
||||
,0x2d,0x82,0x0e,0xff,0x2e,0x80,0xf0,0x04,0x00,0x00,0x0f,0x80,0x2f,0x82,0x0e,0xff,0x30,0x80,0x54,0x05,0x00,0x00,0x0f,0x80,0x31,0x82,0x0e,0xff,0x32,0x80,0xbc,0x05
|
||||
,0x00,0x00,0x0f,0x80,0x33,0x82,0x0e,0xff,0x34,0x80,0x24,0x06,0x00,0x00,0x0f,0x80,0x35,0x82,0x0e,0xff,0x36,0x80,0x8c,0x06,0x00,0x00,0x0f,0x80,0x37,0x82,0x0e,0xff
|
||||
,0x38,0x80,0xf4,0x06,0x00,0x00,0x0f,0x80,0x39,0x82,0x0e,0xff,0x3a,0x80,0x64,0x07,0x00,0x00,0x0f,0x80,0x3b,0x82,0xc1,0x00,0xbf,0xbe,0xff,0x00,0xc6,0xbe,0x00,0xff
|
||||
,0x00,0x00,0xff,0x00,0xc7,0xbe,0x00,0xfe,0x01,0x00,0xff,0x00,0xc8,0xbe,0x00,0xfc,0x03,0x00,0xff,0x00,0xc9,0xbe,0x00,0xf8,0x07,0x00,0xff,0x00,0xca,0xbe,0x00,0xf0
|
||||
,0x0f,0x00,0xff,0x00,0xcb,0xbe,0x00,0xe0,0x1f,0x00,0xff,0x00,0xcc,0xbe,0x00,0xc0,0x3f,0x00,0xff,0x00,0xcd,0xbe,0x00,0x80,0x7f,0x00,0xff,0x00,0xce,0xbe,0x00,0x00
|
||||
,0xff,0x00,0xff,0x00,0xcf,0xbe,0x00,0x00,0xfe,0x01,0xff,0x00,0xd0,0xbe,0x00,0x00,0xfc,0x03,0xff,0x00,0xd1,0xbe,0x00,0x00,0xf8,0x07,0xff,0x00,0xd2,0xbe,0x00,0x00
|
||||
,0xf0,0x0f,0xff,0x00,0xd3,0xbe,0x00,0x00,0xe0,0x1f,0xff,0x00,0xd4,0xbe,0x00,0x00,0xc0,0x3f,0xff,0x00,0xd5,0xbe,0x00,0x00,0x80,0x7f,0x17,0xc0,0xd6,0x80,0x00,0x00
|
||||
,0xec,0xd8,0x00,0x00,0x00,0x18,0x00,0x00,0xec,0xd8,0x0c,0x00,0x00,0x1a,0x7f,0xc0,0x8c,0xbf,0x1b,0x33,0x32,0x2a,0x1a,0x31,0x30,0x2a,0x19,0x15,0x14,0x2a,0x18,0x2f
|
||||
,0x2e,0x2a,0x56,0x14,0x14,0x26,0x56,0x2e,0x2e,0x26,0x0a,0x03,0x14,0x68,0x17,0x03,0x2e,0x68,0x02,0x15,0x34,0x32,0x1b,0x6a,0x1c,0xd1,0x12,0x01,0xa9,0x01,0x02,0x2f
|
||||
,0x2e,0x32,0x18,0x6a,0x1c,0xd1,0x12,0x01,0xa9,0x01,0x00,0x80,0x54,0xdc,0x1a,0x00,0x7f,0x1c,0x00,0x80,0x54,0xdc,0x17,0x00,0x7f,0x1e,0x71,0x0f,0x8c,0xbf,0x1c,0x09
|
||||
,0x40,0x7e,0x1d,0x09,0x38,0x7e,0x70,0x0f,0x8c,0xbf,0x15,0x3d,0x44,0x2a,0x16,0x3f,0x46,0x2a,0x06,0x49,0x2c,0x32,0x19,0x6a,0x1c,0xd1,0x14,0x01,0xa9,0x01,0x16,0x03
|
||||
,0x2a,0x32,0x16,0x6a,0x1c,0xd1,0x19,0x01,0xa9,0x01,0x00,0x80,0x54,0xdc,0x15,0x00,0x7f,0x15,0x20,0x1b,0x3c,0x28,0x1f,0x00,0x01,0xd2,0x21,0x27,0x3a,0x04,0x1c,0x1f
|
||||
,0x38,0x28,0x1d,0x00,0x01,0xd2,0x1d,0x27,0x42,0x04,0x00,0x01,0x9c,0xd8,0x05,0x1e,0x1c,0x00,0x7f,0xc0,0x8c,0xbf,0x83,0x01,0xfe,0xbe,0x08,0x0a,0xee,0xd8,0x29,0x00
|
||||
,0x00,0x3c,0x0c,0x0e,0xee,0xd8,0x29,0x00,0x00,0x40,0x10,0x12,0xee,0xd8,0x29,0x00,0x00,0x44,0x14,0x16,0xee,0xd8,0x29,0x00,0x00,0x48,0x10,0x00,0x89,0xd2,0x22,0x01
|
||||
,0x01,0x00,0x11,0x00,0x89,0xd2,0x23,0x01,0x01,0x00,0x12,0x00,0x89,0xd2,0x22,0x03,0x01,0x00,0x13,0x00,0x89,0xd2,0x23,0x03,0x01,0x00,0x14,0x00,0x89,0xd2,0x22,0x05
|
||||
,0x01,0x00,0x15,0x00,0x89,0xd2,0x23,0x05,0x01,0x00,0x16,0x00,0x89,0xd2,0x22,0x07,0x01,0x00,0x17,0x00,0x89,0xd2,0x23,0x07,0x01,0x00,0x18,0x00,0x89,0xd2,0x22,0x09
|
||||
,0x01,0x00,0x19,0x00,0x89,0xd2,0x23,0x09,0x01,0x00,0x1a,0x00,0x89,0xd2,0x22,0x0b,0x01,0x00,0x1b,0x00,0x89,0xd2,0x23,0x0b,0x01,0x00,0x1c,0x00,0x89,0xd2,0x22,0x0d
|
||||
,0x01,0x00,0x1d,0x00,0x89,0xd2,0x23,0x0d,0x01,0x00,0x1e,0x00,0x89,0xd2,0x22,0x0f,0x01,0x00,0x1f,0x00,0x89,0xd2,0x23,0x0f,0x01,0x00,0x7f,0xc0,0x8c,0xbf,0x04,0x1e
|
||||
,0x8c,0xbe,0x08,0x0a,0x9c,0xd8,0x29,0x3c,0x3e,0x00,0x0c,0x0e,0x9c,0xd8,0x29,0x40,0x42,0x00,0x10,0x12,0x9c,0xd8,0x29,0x44,0x46,0x00,0x14,0x16,0x9c,0xd8,0x29,0x48
|
||||
,0x4a,0x00,0x1c,0x00,0x8a,0xd2,0x10,0x00,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x11,0x00,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x12,0x02,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x13,0x02
|
||||
,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x14,0x04,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x15,0x04,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x16,0x06,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x17,0x06
|
||||
,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x18,0x08,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x19,0x08,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x1a,0x0a,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x1b,0x0a
|
||||
,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x1c,0x0c,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x1d,0x0c,0x01,0x00,0x1c,0x00,0x8a,0xd2,0x1e,0x0e,0x01,0x00,0x1d,0x00,0x8a,0xd2,0x1f,0x0e
|
||||
,0x01,0x00,0x24,0x01,0xfe,0xbe,0x00,0x00,0x9a,0xd8,0x11,0x1c,0x00,0x00,0x7f,0xc0,0x8c,0xbf,0x1c,0x2b,0x2a,0x2a,0x1d,0x2d,0x2c,0x2a,0x00,0x00,0x6c,0xd8,0x07,0x00
|
||||
,0x00,0x1c,0x00,0x00,0x6c,0xd8,0x08,0x00,0x00,0x1d,0x00,0x00,0x9a,0xd8,0x11,0x15,0x00,0x00,0x7f,0xc1,0x8c,0xbf,0x08,0x10,0xee,0xd8,0x11,0x00,0x00,0x1e,0x1c,0x4b
|
||||
,0x14,0x2a,0x7f,0xc0,0x8c,0xbf,0x20,0x3d,0x3c,0x2a,0x21,0x3f,0x3e,0x2a,0x0a,0x3b,0x14,0x2a,0x00,0x80,0x74,0xdc,0x1a,0x15,0x7f,0x00,0xff,0x14,0x14,0x26,0xc0,0xff
|
||||
,0xff,0x7f,0x00,0x80,0x74,0xdc,0x17,0x1e,0x7f,0x00,0x02,0x80,0x06,0xbf,0x06,0x00,0x85,0xbf,0x02,0x81,0x82,0x81,0x24,0x03,0x4a,0x7e,0x80,0x02,0x2e,0x7e,0x0a,0x03
|
||||
,0x48,0x7e,0x80,0x02,0x14,0x7e,0x5d,0xff,0x82,0xbf,0x03,0x03,0x00,0x32,0x01,0x6a,0x1c,0xd1,0x04,0x01,0xa9,0x01,0x00,0x80,0x74,0xdc,0x00,0x15,0x7f,0x00,0x40,0x80
|
||||
,0x74,0xdc,0x00,0x1e,0x7f,0x00,0x80,0x80,0x74,0xdc,0x00,0x20,0x7f,0x00,0x80,0x02,0x00,0x7e,0x42,0x02,0x02,0x7e,0x00,0x80,0x70,0xdc,0x00,0x01,0x40,0x00,0x00,0x00
|
||||
,0x81,0xbf,0x81,0x08,0x43,0xb9,0x44,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x89,0x02,0x00,0x1c,0x03,0x60,0x7e,0x1d,0xa9,0x62,0x6a,0x1c,0x03,0x5c,0x7e,0x31,0xa5
|
||||
,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00,0xcc,0xd1,0x30,0x5d,0xc2,0x04,0x2e,0x00,0xcc,0xd1,0x2a,0x55
|
||||
,0x12,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x44,0x89,0x00,0x00,0x2a,0x03,0x88,0x7e,0x2b,0x03,0x8a,0x7e,0x83,0x01
|
||||
,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x08,0x43,0xb9,0x46,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x8d,0x02,0x00,0x1c,0x03,0x60,0x7e,0x1d,0xa9,0x62,0x6a,0x1c,0x03
|
||||
,0x5c,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00,0xcc,0xd1,0x30,0x5d,0xc2,0x04,0x2e,0x00
|
||||
,0xcc,0xd1,0x2a,0x55,0x1a,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x46,0x89,0x00,0x00,0x2a,0x03,0x8c,0x7e,0x2b,0x03
|
||||
,0x8e,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x08,0x43,0xb9,0x48,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x91,0x02,0x00,0x1c,0x03,0x60,0x7e,0x1d,0xa9
|
||||
,0x62,0x6a,0x1c,0x03,0x5c,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00,0xcc,0xd1,0x30,0x5d
|
||||
,0xc2,0x04,0x2e,0x00,0xcc,0xd1,0x2a,0x55,0x22,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x48,0x89,0x00,0x00,0x2a,0x03
|
||||
,0x90,0x7e,0x2b,0x03,0x92,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x81,0x08,0x43,0xb9,0x4a,0x4d,0x38,0x7e,0x2a,0x00,0x81,0xd2,0x1c,0x95,0x02,0x00,0x1c,0x03
|
||||
,0x60,0x7e,0x1d,0xa9,0x62,0x6a,0x1c,0x03,0x5c,0x7e,0x31,0xa5,0x5e,0x2a,0x2e,0x00,0xcc,0xd1,0x2e,0x55,0xc2,0x03,0x2a,0x00,0xcc,0xd1,0x2a,0x5d,0xaa,0x04,0x30,0x00
|
||||
,0xcc,0xd1,0x30,0x5d,0xc2,0x04,0x2e,0x00,0xcc,0xd1,0x2a,0x55,0x2a,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2e,0x61,0xaa,0x04,0x0e,0x00,0x13,0xd0,0x4a,0x89
|
||||
,0x00,0x00,0x2a,0x03,0x94,0x7e,0x2b,0x03,0x96,0x7e,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x00,0x01,0xd2,0x1d,0x9b,0x3e,0x05,0x81,0x08
|
||||
,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00,0x81,0xd2,0x44,0x61,0x02,0x00,0x2a,0x00
|
||||
,0xcc,0xd1,0x1c,0xa1,0x12,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39,0x12,0x05,0x0e,0x00,0x72,0xd0,0x44,0x39
|
||||
,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03,0x88,0x7e,0x51,0x03,0x8a,0x7e,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x00
|
||||
,0x01,0xd2,0x1d,0x9b,0x3e,0x05,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00
|
||||
,0x81,0xd2,0x46,0x61,0x02,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x1a,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39
|
||||
,0x1a,0x05,0x0e,0x00,0x72,0xd0,0x46,0x39,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03,0x8c,0x7e,0x51,0x03,0x8e,0x7e,0x3c,0x1d
|
||||
,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x00,0x01,0xd2,0x1d,0x9b,0x3e,0x05,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00
|
||||
,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00,0x81,0xd2,0x48,0x61,0x02,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x22,0x25,0x81,0x08,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61
|
||||
,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39,0x22,0x05,0x0e,0x00,0x72,0xd0,0x48,0x39,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03
|
||||
,0x90,0x7e,0x51,0x03,0x92,0x7e,0x3c,0x1d,0x80,0xbe,0x1c,0x9d,0x38,0x28,0x1d,0x00,0x01,0xd2,0x1d,0x9b,0x3e,0x05,0x81,0x08,0x43,0xb9,0x1c,0x4b,0x60,0x7e,0x50,0x00
|
||||
,0xcc,0xd1,0x1c,0x61,0xca,0x23,0x30,0x00,0xcc,0xd1,0x30,0xa1,0xc2,0x04,0x50,0x00,0x81,0xd2,0x4a,0x61,0x02,0x00,0x2a,0x00,0xcc,0xd1,0x1c,0xa1,0x2a,0x25,0x81,0x08
|
||||
,0x42,0xb9,0x2a,0x00,0xcc,0xd1,0x2a,0x61,0x42,0x05,0x50,0x00,0xdf,0xd1,0x2a,0x39,0x2a,0x05,0x0e,0x00,0x72,0xd0,0x4a,0x39,0x02,0x00,0x80,0x02,0xa0,0x7e,0x53,0x03
|
||||
,0xa2,0x7e,0x83,0x01,0xfe,0xbe,0x50,0x03,0x94,0x7e,0x51,0x03,0x96,0x7e,0x3c,0x1d,0x80,0xbe,0x81,0x01,0xfe,0xbe,0x0e,0x02,0x5a,0x7e,0x28,0x00,0x86,0xd2,0x26,0x5a
|
||||
,0x02,0x00,0x0f,0x02,0x5e,0x7e,0x2a,0x20,0xe8,0xd1,0x26,0x5e,0xa2,0x04,0x2a,0x03,0x50,0x7e,0x2d,0x20,0xe8,0xd1,0x27,0x5a,0xa2,0x04,0x2a,0x20,0xe8,0xd1,0x27,0x5e
|
||||
,0xae,0x04,0x2a,0x5d,0x54,0x32,0x80,0x56,0x56,0x38,0x20,0x00,0x89,0xd2,0x2a,0x01,0x01,0x00,0x21,0x00,0x89,0xd2,0x2b,0x01,0x01,0x00,0x0f,0x80,0x04,0xbf,0x26,0x80
|
||||
,0xa2,0x85,0x20,0x22,0xa0,0x80,0x21,0x23,0xa1,0x82,0x27,0x80,0x04,0xbf,0x0e,0x80,0xa2,0x85,0x20,0x22,0x8e,0x80,0x21,0x23,0x8f,0x82,0x83,0x01,0xfe,0xbe,0x3c,0x1d
|
||||
,0x80,0xbe,0x81,0x01,0xfe,0xbe,0x26,0x02,0x5a,0x7e,0x28,0x00,0x86,0xd2,0x0e,0x5a,0x02,0x00,0x27,0x02,0x5e,0x7e,0x2a,0x20,0xe8,0xd1,0x0e,0x5e,0xa2,0x04,0x2a,0x03
|
||||
,0x50,0x7e,0x2d,0x20,0xe8,0xd1,0x0f,0x5a,0xa2,0x04,0x2a,0x20,0xe8,0xd1,0x0f,0x5e,0xae,0x04,0x2a,0x5d,0x54,0x32,0x80,0x56,0x56,0x38,0x0e,0x00,0x89,0xd2,0x2a,0x01
|
||||
,0x01,0x00,0x0f,0x00,0x89,0xd2,0x2b,0x01,0x01,0x00,0x83,0x01,0xfe,0xbe,0x3c,0x1d,0x80,0xbe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1a,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x0b
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00
|
||||
,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00
|
||||
,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x00
|
||||
,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00
|
||||
,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x0b
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00
|
||||
,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01
|
||||
,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b
|
||||
,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13
|
||||
,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b
|
||||
,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x27
|
||||
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24
|
||||
,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x38
|
||||
,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c
|
||||
,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x40
|
||||
,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
const int randomx_run_gfx900_bin_size=6496;
|
2070
src/backend/opencl/cl/rx/randomx_vm.cl
Normal file
2070
src/backend/opencl/cl/rx/randomx_vm.cl
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue