191037db265ecdd914a26e056cf69207b4f50924ehkuang; 291037db265ecdd914a26e056cf69207b4f50924ehkuang; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 391037db265ecdd914a26e056cf69207b4f50924ehkuang; 491037db265ecdd914a26e056cf69207b4f50924ehkuang; Use of this source code is governed by a BSD-style license 591037db265ecdd914a26e056cf69207b4f50924ehkuang; that can be found in the LICENSE file in the root of the source 691037db265ecdd914a26e056cf69207b4f50924ehkuang; tree. An additional intellectual property rights grant can be found 791037db265ecdd914a26e056cf69207b4f50924ehkuang; in the file PATENTS. All contributing project authors may 891037db265ecdd914a26e056cf69207b4f50924ehkuang; be found in the AUTHORS file in the root of the source tree. 991037db265ecdd914a26e056cf69207b4f50924ehkuang; 1091037db265ecdd914a26e056cf69207b4f50924ehkuang 1191037db265ecdd914a26e056cf69207b4f50924ehkuang%include "third_party/x86inc/x86inc.asm" 1291037db265ecdd914a26e056cf69207b4f50924ehkuang 13f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangSECTION_RODATA 14f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 15f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangpb_1: times 16 db 1 165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b01234577: db 0, 1, 2, 3, 4, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0 175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b12345677: db 1, 2, 3, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0 18f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangsh_b23456777: db 2, 3, 4, 5, 6, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0 19f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangsh_b0123456777777777: db 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7 20f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangsh_b1234567777777777: db 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 21f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangsh_b2345677777777777: db 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 22f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangsh_b123456789abcdeff: db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15 23f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangsh_b23456789abcdefff: db 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15 245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b32104567: db 3, 2, 1, 0, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0 255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b8091a2b345: db 8, 0, 9, 1, 10, 2, 11, 3, 4, 5, 0, 0, 0, 0, 0, 0 265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b76543210: db 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b65432108: db 6, 5, 4, 3, 2, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0 285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b54321089: db 5, 4, 3, 2, 1, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0 295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b89abcdef: db 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0 305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_bfedcba9876543210: db 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b1233: db 1, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangsh_b2333: db 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 33f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 3491037db265ecdd914a26e056cf69207b4f50924ehkuangSECTION .text 3591037db265ecdd914a26e056cf69207b4f50924ehkuang 3691037db265ecdd914a26e056cf69207b4f50924ehkuangINIT_MMX ssse3 3791037db265ecdd914a26e056cf69207b4f50924ehkuangcglobal h_predictor_4x4, 2, 4, 3, dst, stride, line, left 3891037db265ecdd914a26e056cf69207b4f50924ehkuang movifnidn leftq, leftmp 3991037db265ecdd914a26e056cf69207b4f50924ehkuang add leftq, 4 4091037db265ecdd914a26e056cf69207b4f50924ehkuang mov lineq, -2 4191037db265ecdd914a26e056cf69207b4f50924ehkuang pxor m0, m0 4291037db265ecdd914a26e056cf69207b4f50924ehkuang.loop: 4391037db265ecdd914a26e056cf69207b4f50924ehkuang movd m1, [leftq+lineq*2 ] 4491037db265ecdd914a26e056cf69207b4f50924ehkuang movd m2, [leftq+lineq*2+1] 4591037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m1, m0 4691037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m2, m0 4791037db265ecdd914a26e056cf69207b4f50924ehkuang movd [dstq ], m1 4891037db265ecdd914a26e056cf69207b4f50924ehkuang movd [dstq+strideq], m2 4991037db265ecdd914a26e056cf69207b4f50924ehkuang lea dstq, [dstq+strideq*2] 5091037db265ecdd914a26e056cf69207b4f50924ehkuang inc lineq 5191037db265ecdd914a26e056cf69207b4f50924ehkuang jnz .loop 5291037db265ecdd914a26e056cf69207b4f50924ehkuang REP_RET 5391037db265ecdd914a26e056cf69207b4f50924ehkuang 5491037db265ecdd914a26e056cf69207b4f50924ehkuangINIT_MMX ssse3 5591037db265ecdd914a26e056cf69207b4f50924ehkuangcglobal h_predictor_8x8, 2, 4, 3, dst, stride, line, left 5691037db265ecdd914a26e056cf69207b4f50924ehkuang movifnidn leftq, leftmp 5791037db265ecdd914a26e056cf69207b4f50924ehkuang add leftq, 8 5891037db265ecdd914a26e056cf69207b4f50924ehkuang mov lineq, -4 5991037db265ecdd914a26e056cf69207b4f50924ehkuang pxor m0, m0 6091037db265ecdd914a26e056cf69207b4f50924ehkuang.loop: 6191037db265ecdd914a26e056cf69207b4f50924ehkuang movd m1, [leftq+lineq*2 ] 6291037db265ecdd914a26e056cf69207b4f50924ehkuang movd m2, [leftq+lineq*2+1] 6391037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m1, m0 6491037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m2, m0 6591037db265ecdd914a26e056cf69207b4f50924ehkuang movq [dstq ], m1 6691037db265ecdd914a26e056cf69207b4f50924ehkuang movq [dstq+strideq], m2 6791037db265ecdd914a26e056cf69207b4f50924ehkuang lea dstq, [dstq+strideq*2] 6891037db265ecdd914a26e056cf69207b4f50924ehkuang inc lineq 6991037db265ecdd914a26e056cf69207b4f50924ehkuang jnz .loop 7091037db265ecdd914a26e056cf69207b4f50924ehkuang REP_RET 7191037db265ecdd914a26e056cf69207b4f50924ehkuang 7291037db265ecdd914a26e056cf69207b4f50924ehkuangINIT_XMM ssse3 7391037db265ecdd914a26e056cf69207b4f50924ehkuangcglobal h_predictor_16x16, 2, 4, 3, dst, stride, line, left 7491037db265ecdd914a26e056cf69207b4f50924ehkuang movifnidn leftq, leftmp 7591037db265ecdd914a26e056cf69207b4f50924ehkuang add leftq, 16 7691037db265ecdd914a26e056cf69207b4f50924ehkuang mov lineq, -8 7791037db265ecdd914a26e056cf69207b4f50924ehkuang pxor m0, m0 7891037db265ecdd914a26e056cf69207b4f50924ehkuang.loop: 7991037db265ecdd914a26e056cf69207b4f50924ehkuang movd m1, [leftq+lineq*2 ] 8091037db265ecdd914a26e056cf69207b4f50924ehkuang movd m2, [leftq+lineq*2+1] 8191037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m1, m0 8291037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m2, m0 8391037db265ecdd914a26e056cf69207b4f50924ehkuang mova [dstq ], m1 8491037db265ecdd914a26e056cf69207b4f50924ehkuang mova [dstq+strideq], m2 8591037db265ecdd914a26e056cf69207b4f50924ehkuang lea dstq, [dstq+strideq*2] 8691037db265ecdd914a26e056cf69207b4f50924ehkuang inc lineq 8791037db265ecdd914a26e056cf69207b4f50924ehkuang jnz .loop 8891037db265ecdd914a26e056cf69207b4f50924ehkuang REP_RET 8991037db265ecdd914a26e056cf69207b4f50924ehkuang 9091037db265ecdd914a26e056cf69207b4f50924ehkuangINIT_XMM ssse3 9191037db265ecdd914a26e056cf69207b4f50924ehkuangcglobal h_predictor_32x32, 2, 4, 3, dst, stride, line, left 9291037db265ecdd914a26e056cf69207b4f50924ehkuang movifnidn leftq, leftmp 9391037db265ecdd914a26e056cf69207b4f50924ehkuang add leftq, 32 9491037db265ecdd914a26e056cf69207b4f50924ehkuang mov lineq, -16 9591037db265ecdd914a26e056cf69207b4f50924ehkuang pxor m0, m0 9691037db265ecdd914a26e056cf69207b4f50924ehkuang.loop: 9791037db265ecdd914a26e056cf69207b4f50924ehkuang movd m1, [leftq+lineq*2 ] 9891037db265ecdd914a26e056cf69207b4f50924ehkuang movd m2, [leftq+lineq*2+1] 9991037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m1, m0 10091037db265ecdd914a26e056cf69207b4f50924ehkuang pshufb m2, m0 10191037db265ecdd914a26e056cf69207b4f50924ehkuang mova [dstq ], m1 10291037db265ecdd914a26e056cf69207b4f50924ehkuang mova [dstq +16], m1 10391037db265ecdd914a26e056cf69207b4f50924ehkuang mova [dstq+strideq ], m2 10491037db265ecdd914a26e056cf69207b4f50924ehkuang mova [dstq+strideq+16], m2 10591037db265ecdd914a26e056cf69207b4f50924ehkuang lea dstq, [dstq+strideq*2] 10691037db265ecdd914a26e056cf69207b4f50924ehkuang inc lineq 10791037db265ecdd914a26e056cf69207b4f50924ehkuang jnz .loop 10891037db265ecdd914a26e056cf69207b4f50924ehkuang REP_RET 109f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 110f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangINIT_MMX ssse3 1115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d45_predictor_4x4, 3, 4, 4, dst, stride, above, goffset 1125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 1135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 114f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq m0, [aboveq] 1155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m0, [GLOBAL(sh_b23456777)] 1165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m0, [GLOBAL(sh_b01234577)] 1175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, [GLOBAL(sh_b12345677)] 118f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m3, m2, m1 119f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pxor m2, m1 1205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pand m2, [GLOBAL(pb_1)] 121f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psubb m3, m2 122f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m0, m3 123f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 124f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; store 4 lines 125f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movd [dstq ], m0 126f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psrlq m0, 8 127f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movd [dstq+strideq], m0 128f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq+strideq*2] 129f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psrlq m0, 8 130f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movd [dstq ], m0 131f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psrlq m0, 8 132f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movd [dstq+strideq], m0 1335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 1345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 135f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang RET 136f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 137f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangINIT_MMX ssse3 1385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d45_predictor_8x8, 3, 4, 4, dst, stride, above, goffset 1395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 1405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 141f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq m0, [aboveq] 1425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m1, [GLOBAL(sh_b12345677)] 1435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3 144f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea stride3q, [strideq*3] 1455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m0, [GLOBAL(sh_b23456777)] 146f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m3, m2, m0 147f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pxor m2, m0 148f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 1495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pand m2, [GLOBAL(pb_1)] 150f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psubb m3, m2 151f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m0, m3 152f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 153f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; store 4 lines 154f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq ], m0 155f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 156f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq+strideq ], m0 157f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 158f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq+strideq*2], m0 159f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 160f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq+stride3q ], m0 161f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 162f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq+strideq*4] 163f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 164f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; store next 4 lines 165f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq ], m0 166f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 167f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq+strideq ], m0 168f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 169f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq+strideq*2], m0 170f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 171f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movq [dstq+stride3q ], m0 1725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 1735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 174f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang RET 175f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 176f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangINIT_XMM ssse3 1775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d45_predictor_16x16, 3, 6, 4, dst, stride, above, dst8, line, goffset 1785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 1795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 180f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova m0, [aboveq] 181f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang DEFINE_ARGS dst, stride, stride3, dst8, line 182f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea stride3q, [strideq*3] 183f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dst8q, [dstq+strideq*8] 1845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m1, [GLOBAL(sh_b123456789abcdeff)] 1855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m0, [GLOBAL(sh_b23456789abcdefff)] 186f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m3, m2, m0 187f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pxor m2, m0 188f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 1895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pand m2, [GLOBAL(pb_1)] 190f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psubb m3, m2 191f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m0, m3 192f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 193f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; first 4 lines and first half of 3rd 4 lines 194f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mov lined, 2 195f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang.loop: 196f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq ], m0 197f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dst8q ], m0 198f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 199f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq ], m0 200f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dst8q+strideq ], m0 201f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 202f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2 ], m0 203f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dst8q+strideq*2 ], m0 204f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 205f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q ], m0 206f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dst8q+stride3q ], m0 207f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m0, m1 208f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq +strideq*4] 209f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dst8q, [dst8q+strideq*4] 210f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang dec lined 211f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang jnz .loop 212f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 213f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; bottom-right 8x8 block 214f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq +8], m0 215f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq+strideq +8], m0 216f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq+strideq*2+8], m0 217f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq+stride3q +8], m0 218f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq+strideq*4] 219f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq +8], m0 220f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq+strideq +8], m0 221f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq+strideq*2+8], m0 222f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang movhps [dstq+stride3q +8], m0 2235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 2245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 225f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang RET 226f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 227f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuangINIT_XMM ssse3 2285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d45_predictor_32x32, 3, 6, 7, dst, stride, above, dst16, line, goffset 2295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 2305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 231f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova m0, [aboveq] 232f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova m4, [aboveq+16] 233f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang DEFINE_ARGS dst, stride, stride3, dst16, line 234f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea stride3q, [strideq*3] 235f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dst16q, [dstq +strideq*8] 236f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dst16q, [dst16q+strideq*8] 2375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m1, [GLOBAL(sh_b123456789abcdeff)] 2385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m4, [GLOBAL(sh_b23456789abcdefff)] 239f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m3, m2, m4 240f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pxor m2, m4 241f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang palignr m5, m4, m0, 1 242f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang palignr m6, m4, m0, 2 243f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m4, m1 2445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pand m2, [GLOBAL(pb_1)] 245f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psubb m3, m2 246f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m4, m3 247f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m3, m0, m6 248f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pxor m0, m6 2495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pand m0, [GLOBAL(pb_1)] 250f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang psubb m3, m0 251f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pavgb m5, m3 252f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 253f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; write 4x4 lines (and the first half of the second 4x4 lines) 254f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mov lined, 4 255f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang.loop: 256f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq ], m5 257f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +16], m4 258f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dst16q ], m4 259f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang palignr m3, m4, m5, 1 260f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m4, m1 261f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq ], m3 262f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq +16], m4 263f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dst16q+strideq ], m4 264f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang palignr m5, m4, m3, 1 265f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m4, m1 266f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2 ], m5 267f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2+16], m4 268f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dst16q+strideq*2 ], m4 269f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang palignr m3, m4, m5, 1 270f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m4, m1 271f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q ], m3 272f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q +16], m4 273f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dst16q+stride3q ], m4 274f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang palignr m5, m4, m3, 1 275f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang pshufb m4, m1 276f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq +strideq*4] 277f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dst16q, [dst16q+strideq*4] 278f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang dec lined 279f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang jnz .loop 280f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 281f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang ; write second half of second 4x4 lines 282f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +16], m4 283f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq +16], m4 284f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2+16], m4 285f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q +16], m4 286f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq +strideq*4] 287f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +16], m4 288f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq +16], m4 289f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2+16], m4 290f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q +16], m4 291f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq +strideq*4] 292f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +16], m4 293f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq +16], m4 294f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2+16], m4 295f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q +16], m4 296f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang lea dstq, [dstq +strideq*4] 297f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +16], m4 298f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq +16], m4 299f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +strideq*2+16], m4 300f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang mova [dstq +stride3q +16], m4 3015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 3035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 3045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; ------------------------------------------ 3065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; input: x, y, z, result 3075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; 3085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; trick from pascal 3095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; (x+2y+z+2)>>2 can be calculated as: 3105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; result = avg(x,z) 3115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; result -= xor(x,z) & 1 3125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; result = avg(result,y) 3135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang; ------------------------------------------ 3145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang%macro X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 4 3155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb %4, %1, %3 3165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pxor %3, %1 3175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pand %3, [GLOBAL(pb_1)] 3185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psubb %4, %3 3195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb %4, %2 3205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang%endmacro 3215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 3235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d63_predictor_4x4, 3, 4, 5, dst, stride, above, goffset 3245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 3255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq m3, [aboveq] 3275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m3, [GLOBAL(sh_b23456777)] 3285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m3, [GLOBAL(sh_b12345677)] 3295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m3, m2, m1, m4 3315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m3, m2 3325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; store 4 lines 3345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq ], m3 3355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+strideq], m4 3365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*2] 3375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 1 3385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m4, 1 3395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq ], m3 3405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+strideq], m4 3415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 3425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 3435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 3455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d63_predictor_8x8, 3, 4, 5, dst, stride, above, goffset 3465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 3475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq m3, [aboveq] 3495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3 3505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 3515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m3, [GLOBAL(sh_b2345677777777777)] 3525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, m3, [GLOBAL(sh_b0123456777777777)] 3535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m3, [GLOBAL(sh_b1234567777777777)] 3545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, [GLOBAL(sh_b0123456777777777)] 3555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m2, m1, m4 3575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m3, m2 3585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; store 4 lines 3605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq ], m3 3615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq], m4 3625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 1 3635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m4, 1 3645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq*2], m3 3655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+stride3q ], m4 3665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 3675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 1 3685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m4, 1 3695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; store 4 lines 3715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq ], m3 3725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq], m4 3735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 1 3745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m4, 1 3755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq*2], m3 3765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+stride3q ], m4 3775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 3785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 3795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 3815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d63_predictor_16x16, 3, 5, 5, dst, stride, above, line, goffset 3825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 3835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [aboveq] 3855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3, line 3865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 3875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m1, [GLOBAL(sh_b123456789abcdeff)] 3885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m0, [GLOBAL(sh_b23456789abcdefff)] 3895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, m0, m1 3905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m3, m2, m4 3925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m0, m3 3935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 3945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mov lined, 4 3955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang.loop: 3965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 3975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m4 3985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, m1 3995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m1 4005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m0 4015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m4 4025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, m1 4035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m1 4045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 4055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang dec lined 4065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang jnz .loop 4075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 4085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang REP_RET 4095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 4115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d63_predictor_32x32, 3, 5, 8, dst, stride, above, line, goffset 4125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 4135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [aboveq] 4155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m7, [aboveq+16] 4165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3, line 4175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m1, [GLOBAL(sh_b123456789abcdeff)] 4185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 4195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m7, [GLOBAL(sh_b23456789abcdefff)] 4205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, m7, m1 4215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m7, m3, m2, m4 4235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m6, m7, m0, 1 4245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m7, m0, 2 4255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m7, m3 4265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m6, m5, m2 4285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m0, m6 4295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mov lined, 8 4315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang.loop: 4325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 4335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m7 4345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m2 4355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq +16], m4 4365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m7, m0, 1 4375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m4, m2, 1 4385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m1 4395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m1 4405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m3 4425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m7 4435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m5 4445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q +16], m4 4455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m7, m3, 1 4465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m4, m5, 1 4475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m1 4485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m1 4495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 4505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang dec lined 4515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang jnz .loop 4525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 4535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang REP_RET 4545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 4565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d153_predictor_4x4, 4, 5, 4, dst, stride, above, left, goffset 4575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 4585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd m0, [leftq] ; l1, l2, l3, l4 4595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd m1, [aboveq-1] ; tl, t1, t2, t3 4605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckldq m0, m1 ; l1, l2, l3, l4, tl, t1, t2, t3 4615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, [GLOBAL(sh_b32104567)]; l4, l3, l2, l1, tl, t1, t2, t3 4625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m1, m0, 1 ; l3, l2, l1, tl, t1, t2, t3 4635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m2, m0, 2 ; l2, l1, tl, t1, t2, t3 4645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; comments below are for a predictor like this 4655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A1 B1 C1 D1 4665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A2 B2 A1 B1 4675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A3 B3 A2 B2 4685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A4 B4 A3 B3 4695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 ; 3-tap avg B4 B3 B2 B1 C1 D1 4705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m1, m0 ; 2-tap avg A4 A3 A2 A1 4715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklqdq m3, m1 ; B4 B3 B2 B1 C1 D1 x x A4 A3 A2 A1 .. 4735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3 4755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 4765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, [GLOBAL(sh_b8091a2b345)] ; A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 .. 4775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+stride3q ], m3 4785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 2 ; A3 B3 A2 B2 A1 B1 C1 D1 .. 4795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+strideq*2], m3 4805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 2 ; A2 B2 A1 B1 C1 D1 .. 4815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+strideq ], m3 4825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m3, 2 ; A1 B1 C1 D1 .. 4835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq ], m3 4845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 4855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 4865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 4875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 4885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d153_predictor_8x8, 4, 5, 8, dst, stride, above, left, goffset 4895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 4905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq m0, [leftq] ; [0- 7] l1-8 [byte] 4915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movhps m0, [aboveq-1] ; [8-15] tl, t1-7 [byte] 4925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m0, [GLOBAL(sh_b76543210)] ; l8-1 [word] 4935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m0, [GLOBAL(sh_b65432108)] ; l7-1,tl [word] 4945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, m0, [GLOBAL(sh_b54321089)] ; l6-1,tl,t1 [word] 4955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, [GLOBAL(sh_b89abcdef)] ; tl,t1-7 [word] 4965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m4, m0, 1 ; t1-7 [word] 4975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m5, m0, 2 ; t2-7 [word] 4985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; comments below are for a predictor like this 4995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A1 B1 C1 D1 E1 F1 G1 H1 5005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A2 B2 A1 B1 C1 D1 E1 F1 5015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A3 B3 A2 B2 A1 B1 C1 D1 5025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A4 B4 A3 B3 A2 B2 A1 B1 5035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A5 B5 A4 B4 A3 B3 A2 B2 5045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A6 B6 A5 B5 A4 B4 A3 B3 5055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A7 B7 A6 B6 A5 B5 A4 B4 5065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A8 B8 A7 B7 A6 B6 A5 B5 5075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m6, m1, m2 ; 2-tap avg A8-A1 5085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m4, m5, m7 ; 3-tap avg C-H1 5105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m1, m2, m3, m0 ; 3-tap avg B8-1 5125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m6, m0 ; A-B8, A-B7 ... A-B2, A-B1 5145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3 5165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 5175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movhps [dstq+stride3q], m6 ; A-B4, A-B3, A-B2, A-B1 5195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m7, m6, 10 ; A-B3, A-B2, A-B1, C-H1 5205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq*2], m0 5215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 ; A-B2, A-B1, C-H1 5225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq ], m0 5235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 ; A-H1 5245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq ], m0 5255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 5265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+stride3q ], m6 ; A-B8, A-B7, A-B6, A-B5 5275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m6, 2 ; A-B7, A-B6, A-B5, A-B4 5285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq*2], m6 5295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m6, 2 ; A-B6, A-B5, A-B4, A-B3 5305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq ], m6 5315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m6, 2 ; A-B5, A-B4, A-B3, A-B2 5325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq ], m6 5335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 5345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 5355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 5375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d153_predictor_16x16, 4, 5, 8, dst, stride, above, left, goffset 5385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 5395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [leftq] 5405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movu m7, [aboveq-1] 5415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; comments below are for a predictor like this 5425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 5435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 5445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 5455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 5465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 G1 H1 5475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 E1 F1 5485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 C1 D1 5495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 A1 B1 5505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 A2 B2 5515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 A3 B3 5525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 A4 B4 5535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 A5 B5 5545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 A6 B6 5555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Ae Be Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 A7 B7 5565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Af Bf Ae Be Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 A8 B8 5575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; Ag Bg Af Bf Ae Be Ad Bd Ac Bc Ab Bb Aa Ba A9 B9 5585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m6, m7, [GLOBAL(sh_bfedcba9876543210)] 5595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m0, m6, 15 5605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m0, m6, 14 5615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m5, m3, m4 ; 3-tap avg B3-Bg 5635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m0, [GLOBAL(sh_b123456789abcdeff)] 5645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m5, m0 ; A1 - Ag 5655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m0, m4, m5 ; A-B8 ... A-B1 5675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckhbw m4, m5 ; A-B9 ... A-Bg 5685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, m7, [GLOBAL(sh_b123456789abcdeff)] 5705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m5, m7, [GLOBAL(sh_b23456789abcdefff)] 5715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m7, m3, m5, m1 ; 3-tap avg C1-P1 5735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m6, m0, [GLOBAL(sh_bfedcba9876543210)] 5755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3 5765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 5775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 14 5785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m2 5795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 12 5805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m2 5815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 10 5825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m2 5835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 8 5845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m2 5855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 5865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 6 5875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m2 5885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 4 5895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m2 5905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m1, m6, 2 5915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m2 5925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, [GLOBAL(sh_bfedcba9876543210)] 5935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m6 5945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 5955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 5965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 14 5975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m2 5985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 12 5995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m2 6005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 10 6015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m2 6025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 8 6035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m2 6045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 6055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 6 6065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m2 6075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 4 6085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m2 6095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m2, m6, m4, 2 6105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m2 6115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m4 6125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 6135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 6145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 6165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d153_predictor_32x32, 4, 5, 8, dst, stride, above, left, goffset 6175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 6185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [leftq] 6195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movu m7, [aboveq-1] 6205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movu m1, [aboveq+15] 6215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m1, [GLOBAL(sh_b123456789abcdeff)] 6235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m6, m1, [GLOBAL(sh_b23456789abcdefff)] 6245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m1, m4, m6, m2 ; 3-tap avg above [high] 6265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m1, m7, 1 6285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m7, 2 6295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m7, m3, m5, m1 ; 3-tap avg above [low] 6315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, [GLOBAL(sh_bfedcba9876543210)] 6335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m0, m7, 15 6345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m0, m7, 14 6355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m5, m3, m4 ; 3-tap avg B3-Bg 6375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m5, m0 ; A1 - Ag 6385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m6, m4, m5 ; A-B8 ... A-B1 6395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckhbw m4, m5 ; A-B9 ... A-Bg 6405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m6, [GLOBAL(sh_bfedcba9876543210)] 6415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, [GLOBAL(sh_bfedcba9876543210)] 6425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3, left, line 6445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 6455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 14 6475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 14 6485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m7 6495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m5 6505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 12 6515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 12 6525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m7 6535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m5 6545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 10 6555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 10 6565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m7 6575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m5 6585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 8 6595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 8 6605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m7 6615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m5 6625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 6635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 6 6645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 6 6655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m7 6665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m5 6675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 4 6685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 4 6695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m7 6705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m5 6715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 2 6725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m1, m6, 2 6735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m7 6745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m5 6755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m6 6765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m1 6775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 6785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 6795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 14 6805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 14 6815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m3 6825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m5 6835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 12 6845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 12 6855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m3 6865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m5 6875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 10 6885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 10 6895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m3 6905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m5 6915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 8 6925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 8 6935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m3 6945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m5 6955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 6965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 6 6975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 6 6985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m3 6995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m5 7005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 4 7015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 4 7025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m3 7035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m5 7045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m1, m6, 2 7055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m6, m4, 2 7065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m3 7075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m5 7085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m4 7095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m6 7105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 7115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m7, [leftq] 7135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m3, [leftq+16] 7145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m3, m7, 15 7155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m7, 14 7165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m3, m5, m0, m2 ; 3-tap avg Bh - 7185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m5, m3 ; Ah - 7195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m3, m2, m5 ; A-B8 ... A-B1 7205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckhbw m2, m5 ; A-B9 ... A-Bg 7215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, [GLOBAL(sh_bfedcba9876543210)] 7225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, [GLOBAL(sh_bfedcba9876543210)] 7235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 14 7255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 14 7265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 7275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m7 7285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 12 7295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 12 7305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m0 7315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m7 7325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 10 7335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 10 7345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m0 7355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m7 7365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 8 7375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 8 7385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m0 7395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m7 7405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 7415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 6 7425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 6 7435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 7445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m7 7455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 4 7465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 4 7475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m0 7485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m7 7495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m6, m4, 2 7505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m4, m3, 2 7515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m0 7525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m7 7535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m3 7545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m4 7555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 7565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 14 7585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 14 7595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 7605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m7 7615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 12 7625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 12 7635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m0 7645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m7 7655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 10 7665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 10 7675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m0 7685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m7 7695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 8 7705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 8 7715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m0 7725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m7 7735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 7745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 6 7755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 6 7765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 7775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+16 ], m7 7785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 4 7795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 4 7805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m0 7815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq+16 ], m7 7825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m7, m4, m3, 2 7835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m3, m2, 2 7845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2 ], m0 7855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2+16], m7 7865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m2 7875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q+16 ], m3 7885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 7905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 7915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_MMX ssse3 7935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d207_predictor_4x4, 4, 5, 4, dst, stride, unused, left, goffset 7945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 7955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd m0, [leftq] ; abcd [byte] 7965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m0, [GLOBAL(sh_b1233)] ; bcdd [byte] 7975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m3, m0, [GLOBAL(sh_b2333)] ; cddd 7985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 7995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m3, m2 8005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m1, m0 ; ab, bc, cd, d [byte] 8015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m1, m2 ; ab, a2bc, bc, b2cd, cd, c3d, d, d 8035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq ], m1 8045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrlq m1, 16 ; bc, b2cd, cd, c3d, d, d 8055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+strideq], m1 8065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*2] 8075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrlq m1, 16 ; cd, c3d, d, d 8085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq ], m1 8095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufw m1, m1, q1111 ; d, d, d, d 8105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movd [dstq+strideq], m1 8115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 8125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 8135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 8155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d207_predictor_8x8, 4, 5, 4, dst, stride, stride3, left, goffset 8165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 8175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq m3, [leftq] ; abcdefgh [byte] 8185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 8195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m3, [GLOBAL(sh_b2345677777777777)] 8215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, m3, [GLOBAL(sh_b0123456777777777)] 8225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m3, [GLOBAL(sh_b1234567777777777)] 8235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m2, m1, m3 8255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m0, m2 8265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m0, m3 ; interleaved output 8275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq ], m0 8295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq ], m0 8315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq*2], m0 8335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+stride3q ], m0 8355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 8365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufhw m0, m0, q0000 ; de, d2ef, ef, e2fg, fg, f2gh, gh, g3h, 8xh 8375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq ], m0 8395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq ], m0 8415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+strideq*2], m0 8435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang psrldq m0, 2 8445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang movq [dstq+stride3q ], m0 8455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 8465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RET 8475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 8495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d207_predictor_16x16, 4, 5, 5, dst, stride, stride3, left, goffset 8505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 8515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 8525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [leftq] ; abcdefghijklmnop [byte] 8535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m1, m0, [GLOBAL(sh_b123456789abcdeff)] ; bcdefghijklmnopp 8545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m2, m0, [GLOBAL(sh_b23456789abcdefff)] 8555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 8575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m1, m0 ; ab, bc, cd .. no, op, pp [byte] 8585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckhbw m4, m1, m3 ; interleaved input 8605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m1, m3 ; interleaved output 8615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m1 8625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 2 8635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m3 8645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 4 8655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m3 8665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 6 8675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m3 8685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 8695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 8 8705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m3 8715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 10 8725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m3 8735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 12 8745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m3 8755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m3, m4, m1, 14 8765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m3 8775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3, line 8785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mov lined, 2 8795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [GLOBAL(sh_b23456789abcdefff)] 8805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang.loop: 8815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 8825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m4 8835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m0 8845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq ], m4 8855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m0 8865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+strideq*2], m4 8875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m0 8885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq+stride3q ], m4 8895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m0 8905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang dec lined 8915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang jnz .loop 8925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 8935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang REP_RET 8945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 8955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangINIT_XMM ssse3 8965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuangcglobal d207_predictor_32x32, 4, 5, 8, dst, stride, stride3, left, goffset 8975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang GET_GOT goffsetq 8985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea stride3q, [strideq*3] 8995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m1, [leftq] ; 0-15 [byte] 9005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m2, [leftq+16] ; 16-31 [byte] 9015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m0, m2, [GLOBAL(sh_b23456789abcdefff)] 9025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m4, m2, [GLOBAL(sh_b123456789abcdeff)] 9035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m2, m4, m0, m3 9055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m6, m2, m1, 1 9065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m5, m2, m1, 2 9075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m2, m4 ; high 16px even lines 9085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m1, m6, m5, m0 9105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pavgb m1, m6 ; low 16px even lines 9115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckhbw m6, m1, m0 ; interleaved output 2 9135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m1, m0 ; interleaved output 1 9145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpckhbw m7, m2, m3 ; interleaved output 4 9165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang punpcklbw m2, m3 ; interleaved output 3 9175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; output 1st 8 lines (and half of 2nd 8 lines) 9195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang DEFINE_ARGS dst, stride, stride3, dst8 9205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dst8q, [dstq+strideq*8] 9215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m1 9225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m6 9235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q ], m6 9245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 2 9255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 2 9265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq ], m0 9275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m4 9285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq ], m4 9295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 4 9305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 4 9315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2 ], m0 9325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m4 9335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq*2 ], m4 9345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 6 9355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 6 9365ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q ], m0 9375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m4 9385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+stride3q ], m4 9395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq +strideq*4] 9405ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dst8q, [dst8q+strideq*4] 9415ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 8 9425ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 8 9435ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq ], m0 9445ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m4 9455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q ], m4 9465ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 10 9475ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 10 9485ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq ], m0 9495ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m4 9505ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq ], m4 9515ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 12 9525ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 12 9535ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2 ], m0 9545ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m4 9555ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq*2 ], m4 9565ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m0, m6, m1, 14 9575ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m2, m6, 14 9585ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q ], m0 9595ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m4 9605ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+stride3q ], m4 9615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 9625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dst8q, [dst8q+strideq*4] 9635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; output 2nd half of 2nd 8 lines and half of 3rd 8 lines 9655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m2 9665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q ], m2 9675ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 2 9685ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m4 9695ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq ], m4 9705ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 4 9715ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m4 9725ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq*2 ], m4 9735ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 6 9745ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m4 9755ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+stride3q ], m4 9765ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 9775ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dst8q, [dst8q+strideq*4] 9785ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 8 9795ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m4 9805ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q ], m4 9815ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 10 9825ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m4 9835ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq ], m4 9845ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 12 9855ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m4 9865ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq*2 ], m4 9875ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang palignr m4, m7, m2, 14 9885ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m4 9895ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+stride3q ], m4 9905ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 9915ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dst8q, [dst8q+strideq*4] 9925ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 9935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; output 2nd half of 3rd 8 lines and half of 4th 8 lines 9945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova m0, [GLOBAL(sh_b23456789abcdefff)] 9955ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m7 9965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q ], m7 9975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 9985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m7 9995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq ], m7 10005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m7 10025ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq*2 ], m7 10035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10045ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m7 10055ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+stride3q ], m7 10065ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10075ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 10085ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dst8q, [dst8q+strideq*4] 10095ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m7 10105ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q ], m7 10115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m7 10135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq ], m7 10145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m7 10165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+strideq*2 ], m7 10175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10185ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m7 10195ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dst8q+stride3q ], m7 10205ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang pshufb m7, m0 10215ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 10225ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 10235ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; output last half of 4th 8 lines 10245ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m7 10255ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m7 10265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m7 10275ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m7 10285ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang lea dstq, [dstq+strideq*4] 10295ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +16], m7 10305ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq +16], m7 10315ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +strideq*2+16], m7 10325ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang mova [dstq +stride3q +16], m7 10335ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang 10345ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ; done! 10355ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang RESTORE_GOT 1036f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang RET 1037