1*fb1b10abSAndroid Build Coastguard Worker; 2*fb1b10abSAndroid Build Coastguard Worker; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker; 4*fb1b10abSAndroid Build Coastguard Worker; Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker; that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker; tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker; in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker; be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker; 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker%include "third_party/x86inc/x86inc.asm" 12*fb1b10abSAndroid Build Coastguard Worker 13*fb1b10abSAndroid Build Coastguard WorkerSECTION_RODATA 14*fb1b10abSAndroid Build Coastguard Workerpb_1: times 16 db 1 15*fb1b10abSAndroid Build Coastguard Workerpw_4: times 8 dw 4 16*fb1b10abSAndroid Build Coastguard Workerpw_8: times 8 dw 8 17*fb1b10abSAndroid Build Coastguard Workerpw_16: times 8 dw 16 18*fb1b10abSAndroid Build Coastguard Workerpw_32: times 8 dw 32 19*fb1b10abSAndroid Build Coastguard Workerdc_128: times 16 db 128 20*fb1b10abSAndroid Build Coastguard Workerpw2_4: times 8 dw 2 21*fb1b10abSAndroid Build Coastguard Workerpw2_8: times 8 dw 4 22*fb1b10abSAndroid Build Coastguard Workerpw2_16: times 8 dw 8 23*fb1b10abSAndroid Build Coastguard Workerpw2_32: times 8 dw 16 24*fb1b10abSAndroid Build Coastguard Worker 25*fb1b10abSAndroid Build Coastguard WorkerSECTION .text 26*fb1b10abSAndroid Build Coastguard Worker 27*fb1b10abSAndroid Build Coastguard Worker; ------------------------------------------ 28*fb1b10abSAndroid Build Coastguard Worker; input: x, y, z, result 29*fb1b10abSAndroid Build Coastguard Worker; 30*fb1b10abSAndroid Build Coastguard Worker; trick from pascal 31*fb1b10abSAndroid Build Coastguard Worker; (x+2y+z+2)>>2 can be calculated as: 32*fb1b10abSAndroid Build Coastguard Worker; result = avg(x,z) 33*fb1b10abSAndroid Build Coastguard Worker; result -= xor(x,z) & 1 34*fb1b10abSAndroid Build Coastguard Worker; result = avg(result,y) 35*fb1b10abSAndroid Build Coastguard Worker; ------------------------------------------ 36*fb1b10abSAndroid Build Coastguard Worker%macro X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 4 37*fb1b10abSAndroid Build Coastguard Worker pavgb %4, %1, %3 38*fb1b10abSAndroid Build Coastguard Worker pxor %3, %1 39*fb1b10abSAndroid Build Coastguard Worker pand %3, [GLOBAL(pb_1)] 40*fb1b10abSAndroid Build Coastguard Worker psubb %4, %3 41*fb1b10abSAndroid Build Coastguard Worker pavgb %4, %2 42*fb1b10abSAndroid Build Coastguard Worker%endmacro 43*fb1b10abSAndroid Build Coastguard Worker 44*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 45*fb1b10abSAndroid Build Coastguard Workercglobal d45_predictor_4x4, 3, 4, 4, dst, stride, above, goffset 46*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 47*fb1b10abSAndroid Build Coastguard Worker 48*fb1b10abSAndroid Build Coastguard Worker movq m0, [aboveq] 49*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, temp 50*fb1b10abSAndroid Build Coastguard Worker psrldq m1, m0, 1 51*fb1b10abSAndroid Build Coastguard Worker psrldq m2, m0, 2 52*fb1b10abSAndroid Build Coastguard Worker X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 53*fb1b10abSAndroid Build Coastguard Worker 54*fb1b10abSAndroid Build Coastguard Worker ; store 4 lines 55*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m3 56*fb1b10abSAndroid Build Coastguard Worker psrlq m3, 8 57*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq ], m3 58*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 59*fb1b10abSAndroid Build Coastguard Worker psrlq m3, 8 60*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m3 61*fb1b10abSAndroid Build Coastguard Worker psrlq m3, 8 62*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq ], m3 63*fb1b10abSAndroid Build Coastguard Worker psrlq m0, 56 64*fb1b10abSAndroid Build Coastguard Worker movd tempd, m0 65*fb1b10abSAndroid Build Coastguard Worker mov [dstq+strideq+3], tempb 66*fb1b10abSAndroid Build Coastguard Worker 67*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 68*fb1b10abSAndroid Build Coastguard Worker RET 69*fb1b10abSAndroid Build Coastguard Worker 70*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 71*fb1b10abSAndroid Build Coastguard Workercglobal d45_predictor_8x8, 3, 4, 4, dst, stride, above, goffset 72*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 73*fb1b10abSAndroid Build Coastguard Worker 74*fb1b10abSAndroid Build Coastguard Worker movu m1, [aboveq] 75*fb1b10abSAndroid Build Coastguard Worker pslldq m0, m1, 1 76*fb1b10abSAndroid Build Coastguard Worker psrldq m2, m1, 1 77*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 78*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 79*fb1b10abSAndroid Build Coastguard Worker X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 80*fb1b10abSAndroid Build Coastguard Worker punpckhbw m0, m0 ; 7 7 81*fb1b10abSAndroid Build Coastguard Worker punpcklwd m0, m0 ; 7 7 7 7 82*fb1b10abSAndroid Build Coastguard Worker punpckldq m0, m0 ; 7 7 7 7 7 7 7 7 83*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m3, m0 ; -1 0 1 2 3 4 5 6 7 7 7 7 7 7 7 7 84*fb1b10abSAndroid Build Coastguard Worker 85*fb1b10abSAndroid Build Coastguard Worker ; store 4 lines 86*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 87*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m3 88*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 89*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m3 90*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 91*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m3 92*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 93*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m3 94*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 95*fb1b10abSAndroid Build Coastguard Worker 96*fb1b10abSAndroid Build Coastguard Worker ; store next 4 lines 97*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 98*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m3 99*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 100*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m3 101*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 102*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m3 103*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 1 104*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m3 105*fb1b10abSAndroid Build Coastguard Worker 106*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 107*fb1b10abSAndroid Build Coastguard Worker RET 108*fb1b10abSAndroid Build Coastguard Worker 109*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 110*fb1b10abSAndroid Build Coastguard Workercglobal d207_predictor_4x4, 4, 4, 5, dst, stride, unused, left, goffset 111*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 112*fb1b10abSAndroid Build Coastguard Worker 113*fb1b10abSAndroid Build Coastguard Worker movd m0, [leftq] ; abcd [byte] 114*fb1b10abSAndroid Build Coastguard Worker punpcklbw m4, m0, m0 ; aabb ccdd 115*fb1b10abSAndroid Build Coastguard Worker punpcklwd m4, m4 ; aaaa bbbb cccc dddd 116*fb1b10abSAndroid Build Coastguard Worker psrldq m4, 12 ; dddd 117*fb1b10abSAndroid Build Coastguard Worker punpckldq m0, m4 ; abcd dddd 118*fb1b10abSAndroid Build Coastguard Worker psrldq m1, m0, 1 ; bcdd 119*fb1b10abSAndroid Build Coastguard Worker psrldq m2, m0, 2 ; cddd 120*fb1b10abSAndroid Build Coastguard Worker 121*fb1b10abSAndroid Build Coastguard Worker X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 m0, m1, m2, m3 ; a2bc b2cd c3d d 122*fb1b10abSAndroid Build Coastguard Worker pavgb m1, m0 ; ab, bc, cd, d [byte] 123*fb1b10abSAndroid Build Coastguard Worker 124*fb1b10abSAndroid Build Coastguard Worker punpcklbw m1, m3 ; ab, a2bc, bc, b2cd, cd, c3d, d, d 125*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m1 126*fb1b10abSAndroid Build Coastguard Worker psrlq m1, 16 ; bc, b2cd, cd, c3d, d, d 127*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m1 128*fb1b10abSAndroid Build Coastguard Worker 129*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 130*fb1b10abSAndroid Build Coastguard Worker psrlq m1, 16 ; cd, c3d, d, d 131*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m1 132*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m4 ; d, d, d, d 133*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 134*fb1b10abSAndroid Build Coastguard Worker RET 135*fb1b10abSAndroid Build Coastguard Worker 136*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 137*fb1b10abSAndroid Build Coastguard Workercglobal dc_predictor_4x4, 4, 5, 3, dst, stride, above, left, goffset 138*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 139*fb1b10abSAndroid Build Coastguard Worker 140*fb1b10abSAndroid Build Coastguard Worker movd m2, [leftq] 141*fb1b10abSAndroid Build Coastguard Worker movd m0, [aboveq] 142*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 143*fb1b10abSAndroid Build Coastguard Worker punpckldq m0, m2 144*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 145*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw_4)] 146*fb1b10abSAndroid Build Coastguard Worker psraw m0, 3 147*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 148*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 149*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 150*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 151*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 152*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 153*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 154*fb1b10abSAndroid Build Coastguard Worker 155*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 156*fb1b10abSAndroid Build Coastguard Worker RET 157*fb1b10abSAndroid Build Coastguard Worker 158*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 159*fb1b10abSAndroid Build Coastguard Workercglobal dc_left_predictor_4x4, 2, 5, 2, dst, stride, above, left, goffset 160*fb1b10abSAndroid Build Coastguard Worker movifnidn leftq, leftmp 161*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 162*fb1b10abSAndroid Build Coastguard Worker 163*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 164*fb1b10abSAndroid Build Coastguard Worker movd m0, [leftq] 165*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 166*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_4)] 167*fb1b10abSAndroid Build Coastguard Worker psraw m0, 2 168*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 169*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 170*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 171*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 172*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 173*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 174*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 175*fb1b10abSAndroid Build Coastguard Worker 176*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 177*fb1b10abSAndroid Build Coastguard Worker RET 178*fb1b10abSAndroid Build Coastguard Worker 179*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 180*fb1b10abSAndroid Build Coastguard Workercglobal dc_top_predictor_4x4, 3, 5, 2, dst, stride, above, left, goffset 181*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 182*fb1b10abSAndroid Build Coastguard Worker 183*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 184*fb1b10abSAndroid Build Coastguard Worker movd m0, [aboveq] 185*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 186*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_4)] 187*fb1b10abSAndroid Build Coastguard Worker psraw m0, 2 188*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 189*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 190*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 191*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 192*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 193*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 194*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 195*fb1b10abSAndroid Build Coastguard Worker 196*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 197*fb1b10abSAndroid Build Coastguard Worker RET 198*fb1b10abSAndroid Build Coastguard Worker 199*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 200*fb1b10abSAndroid Build Coastguard Workercglobal dc_predictor_8x8, 4, 5, 3, dst, stride, above, left, goffset 201*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 202*fb1b10abSAndroid Build Coastguard Worker 203*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 204*fb1b10abSAndroid Build Coastguard Worker movq m0, [aboveq] 205*fb1b10abSAndroid Build Coastguard Worker movq m2, [leftq] 206*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 207*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 208*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 209*fb1b10abSAndroid Build Coastguard Worker psadbw m2, m1 210*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 211*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw_8)] 212*fb1b10abSAndroid Build Coastguard Worker psraw m0, 4 213*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 214*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 215*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 216*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 217*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 218*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 219*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 220*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 221*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 222*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 223*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 224*fb1b10abSAndroid Build Coastguard Worker 225*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 226*fb1b10abSAndroid Build Coastguard Worker RET 227*fb1b10abSAndroid Build Coastguard Worker 228*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 229*fb1b10abSAndroid Build Coastguard Workercglobal dc_top_predictor_8x8, 3, 5, 2, dst, stride, above, left, goffset 230*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 231*fb1b10abSAndroid Build Coastguard Worker 232*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 233*fb1b10abSAndroid Build Coastguard Worker movq m0, [aboveq] 234*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 235*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 236*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 237*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_8)] 238*fb1b10abSAndroid Build Coastguard Worker psraw m0, 3 239*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 240*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 241*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 242*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 243*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 244*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 245*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 246*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 247*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 248*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 249*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 250*fb1b10abSAndroid Build Coastguard Worker 251*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 252*fb1b10abSAndroid Build Coastguard Worker RET 253*fb1b10abSAndroid Build Coastguard Worker 254*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 255*fb1b10abSAndroid Build Coastguard Workercglobal dc_left_predictor_8x8, 2, 5, 2, dst, stride, above, left, goffset 256*fb1b10abSAndroid Build Coastguard Worker movifnidn leftq, leftmp 257*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 258*fb1b10abSAndroid Build Coastguard Worker 259*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 260*fb1b10abSAndroid Build Coastguard Worker movq m0, [leftq] 261*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 262*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 263*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 264*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_8)] 265*fb1b10abSAndroid Build Coastguard Worker psraw m0, 3 266*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 267*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 268*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 269*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 270*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 271*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 272*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 273*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 274*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 275*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 276*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 277*fb1b10abSAndroid Build Coastguard Worker 278*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 279*fb1b10abSAndroid Build Coastguard Worker RET 280*fb1b10abSAndroid Build Coastguard Worker 281*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 282*fb1b10abSAndroid Build Coastguard Workercglobal dc_128_predictor_4x4, 2, 5, 1, dst, stride, above, left, goffset 283*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 284*fb1b10abSAndroid Build Coastguard Worker 285*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 286*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 287*fb1b10abSAndroid Build Coastguard Worker movd m0, [GLOBAL(dc_128)] 288*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 289*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq ], m0 290*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq*2], m0 291*fb1b10abSAndroid Build Coastguard Worker movd [dstq+stride3q ], m0 292*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 293*fb1b10abSAndroid Build Coastguard Worker RET 294*fb1b10abSAndroid Build Coastguard Worker 295*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 296*fb1b10abSAndroid Build Coastguard Workercglobal dc_128_predictor_8x8, 2, 5, 1, dst, stride, above, left, goffset 297*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 298*fb1b10abSAndroid Build Coastguard Worker 299*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 300*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 301*fb1b10abSAndroid Build Coastguard Worker movq m0, [GLOBAL(dc_128)] 302*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 303*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 304*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 305*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 306*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 307*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 308*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 309*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 310*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 311*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 312*fb1b10abSAndroid Build Coastguard Worker RET 313*fb1b10abSAndroid Build Coastguard Worker 314*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 315*fb1b10abSAndroid Build Coastguard Workercglobal dc_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset 316*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 317*fb1b10abSAndroid Build Coastguard Worker 318*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 319*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 320*fb1b10abSAndroid Build Coastguard Worker mova m2, [leftq] 321*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 322*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 323*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 4 324*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 325*fb1b10abSAndroid Build Coastguard Worker psadbw m2, m1 326*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 327*fb1b10abSAndroid Build Coastguard Worker movhlps m2, m0 328*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 329*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw_16)] 330*fb1b10abSAndroid Build Coastguard Worker psraw m0, 5 331*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 332*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m0, m0 333*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 334*fb1b10abSAndroid Build Coastguard Worker.loop: 335*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 336*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 337*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2], m0 338*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 339*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 340*fb1b10abSAndroid Build Coastguard Worker dec lines4d 341*fb1b10abSAndroid Build Coastguard Worker jnz .loop 342*fb1b10abSAndroid Build Coastguard Worker 343*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 344*fb1b10abSAndroid Build Coastguard Worker REP_RET 345*fb1b10abSAndroid Build Coastguard Worker 346*fb1b10abSAndroid Build Coastguard Worker 347*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 348*fb1b10abSAndroid Build Coastguard Workercglobal dc_top_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset 349*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 350*fb1b10abSAndroid Build Coastguard Worker 351*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 352*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 353*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 354*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 355*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 4 356*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 357*fb1b10abSAndroid Build Coastguard Worker movhlps m2, m0 358*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 359*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_16)] 360*fb1b10abSAndroid Build Coastguard Worker psraw m0, 4 361*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 362*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m0, m0 363*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 364*fb1b10abSAndroid Build Coastguard Worker.loop: 365*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 366*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 367*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2], m0 368*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 369*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 370*fb1b10abSAndroid Build Coastguard Worker dec lines4d 371*fb1b10abSAndroid Build Coastguard Worker jnz .loop 372*fb1b10abSAndroid Build Coastguard Worker 373*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 374*fb1b10abSAndroid Build Coastguard Worker REP_RET 375*fb1b10abSAndroid Build Coastguard Worker 376*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 377*fb1b10abSAndroid Build Coastguard Workercglobal dc_left_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset 378*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 379*fb1b10abSAndroid Build Coastguard Worker 380*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 381*fb1b10abSAndroid Build Coastguard Worker mova m0, [leftq] 382*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 383*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 384*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 4 385*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 386*fb1b10abSAndroid Build Coastguard Worker movhlps m2, m0 387*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 388*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_16)] 389*fb1b10abSAndroid Build Coastguard Worker psraw m0, 4 390*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 391*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m0, m0 392*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 393*fb1b10abSAndroid Build Coastguard Worker.loop: 394*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 395*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 396*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2], m0 397*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 398*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 399*fb1b10abSAndroid Build Coastguard Worker dec lines4d 400*fb1b10abSAndroid Build Coastguard Worker jnz .loop 401*fb1b10abSAndroid Build Coastguard Worker 402*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 403*fb1b10abSAndroid Build Coastguard Worker REP_RET 404*fb1b10abSAndroid Build Coastguard Worker 405*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 406*fb1b10abSAndroid Build Coastguard Workercglobal dc_128_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset 407*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 408*fb1b10abSAndroid Build Coastguard Worker 409*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 410*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 411*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 4 412*fb1b10abSAndroid Build Coastguard Worker mova m0, [GLOBAL(dc_128)] 413*fb1b10abSAndroid Build Coastguard Worker.loop: 414*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 415*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 416*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2], m0 417*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 418*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 419*fb1b10abSAndroid Build Coastguard Worker dec lines4d 420*fb1b10abSAndroid Build Coastguard Worker jnz .loop 421*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 422*fb1b10abSAndroid Build Coastguard Worker RET 423*fb1b10abSAndroid Build Coastguard Worker 424*fb1b10abSAndroid Build Coastguard Worker 425*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 426*fb1b10abSAndroid Build Coastguard Workercglobal dc_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset 427*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 428*fb1b10abSAndroid Build Coastguard Worker 429*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 430*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 431*fb1b10abSAndroid Build Coastguard Worker mova m2, [aboveq+16] 432*fb1b10abSAndroid Build Coastguard Worker mova m3, [leftq] 433*fb1b10abSAndroid Build Coastguard Worker mova m4, [leftq+16] 434*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 435*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 436*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 8 437*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 438*fb1b10abSAndroid Build Coastguard Worker psadbw m2, m1 439*fb1b10abSAndroid Build Coastguard Worker psadbw m3, m1 440*fb1b10abSAndroid Build Coastguard Worker psadbw m4, m1 441*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 442*fb1b10abSAndroid Build Coastguard Worker paddw m0, m3 443*fb1b10abSAndroid Build Coastguard Worker paddw m0, m4 444*fb1b10abSAndroid Build Coastguard Worker movhlps m2, m0 445*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 446*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw_32)] 447*fb1b10abSAndroid Build Coastguard Worker psraw m0, 6 448*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 449*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m0, m0 450*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 451*fb1b10abSAndroid Build Coastguard Worker.loop: 452*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 453*fb1b10abSAndroid Build Coastguard Worker mova [dstq +16], m0 454*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 455*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq +16], m0 456*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2 ], m0 457*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2+16], m0 458*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 459*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q +16], m0 460*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 461*fb1b10abSAndroid Build Coastguard Worker dec lines4d 462*fb1b10abSAndroid Build Coastguard Worker jnz .loop 463*fb1b10abSAndroid Build Coastguard Worker 464*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 465*fb1b10abSAndroid Build Coastguard Worker REP_RET 466*fb1b10abSAndroid Build Coastguard Worker 467*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 468*fb1b10abSAndroid Build Coastguard Workercglobal dc_top_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset 469*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 470*fb1b10abSAndroid Build Coastguard Worker 471*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 472*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 473*fb1b10abSAndroid Build Coastguard Worker mova m2, [aboveq+16] 474*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 475*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 476*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 8 477*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 478*fb1b10abSAndroid Build Coastguard Worker psadbw m2, m1 479*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 480*fb1b10abSAndroid Build Coastguard Worker movhlps m2, m0 481*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 482*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_32)] 483*fb1b10abSAndroid Build Coastguard Worker psraw m0, 5 484*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 485*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m0, m0 486*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 487*fb1b10abSAndroid Build Coastguard Worker.loop: 488*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 489*fb1b10abSAndroid Build Coastguard Worker mova [dstq +16], m0 490*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 491*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq +16], m0 492*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2 ], m0 493*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2+16], m0 494*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 495*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q +16], m0 496*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 497*fb1b10abSAndroid Build Coastguard Worker dec lines4d 498*fb1b10abSAndroid Build Coastguard Worker jnz .loop 499*fb1b10abSAndroid Build Coastguard Worker 500*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 501*fb1b10abSAndroid Build Coastguard Worker REP_RET 502*fb1b10abSAndroid Build Coastguard Worker 503*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 504*fb1b10abSAndroid Build Coastguard Workercglobal dc_left_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset 505*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 506*fb1b10abSAndroid Build Coastguard Worker 507*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 508*fb1b10abSAndroid Build Coastguard Worker mova m0, [leftq] 509*fb1b10abSAndroid Build Coastguard Worker mova m2, [leftq+16] 510*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 511*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 512*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 8 513*fb1b10abSAndroid Build Coastguard Worker psadbw m0, m1 514*fb1b10abSAndroid Build Coastguard Worker psadbw m2, m1 515*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 516*fb1b10abSAndroid Build Coastguard Worker movhlps m2, m0 517*fb1b10abSAndroid Build Coastguard Worker paddw m0, m2 518*fb1b10abSAndroid Build Coastguard Worker paddw m0, [GLOBAL(pw2_32)] 519*fb1b10abSAndroid Build Coastguard Worker psraw m0, 5 520*fb1b10abSAndroid Build Coastguard Worker pshuflw m0, m0, 0x0 521*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m0, m0 522*fb1b10abSAndroid Build Coastguard Worker packuswb m0, m0 523*fb1b10abSAndroid Build Coastguard Worker.loop: 524*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 525*fb1b10abSAndroid Build Coastguard Worker mova [dstq +16], m0 526*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 527*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq +16], m0 528*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2 ], m0 529*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2+16], m0 530*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 531*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q +16], m0 532*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 533*fb1b10abSAndroid Build Coastguard Worker dec lines4d 534*fb1b10abSAndroid Build Coastguard Worker jnz .loop 535*fb1b10abSAndroid Build Coastguard Worker 536*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 537*fb1b10abSAndroid Build Coastguard Worker REP_RET 538*fb1b10abSAndroid Build Coastguard Worker 539*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 540*fb1b10abSAndroid Build Coastguard Workercglobal dc_128_predictor_32x32, 4, 5, 3, dst, stride, above, left, goffset 541*fb1b10abSAndroid Build Coastguard Worker GET_GOT goffsetq 542*fb1b10abSAndroid Build Coastguard Worker 543*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, lines4 544*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 545*fb1b10abSAndroid Build Coastguard Worker mov lines4d, 8 546*fb1b10abSAndroid Build Coastguard Worker mova m0, [GLOBAL(dc_128)] 547*fb1b10abSAndroid Build Coastguard Worker.loop: 548*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 549*fb1b10abSAndroid Build Coastguard Worker mova [dstq +16], m0 550*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 551*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq +16], m0 552*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2 ], m0 553*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2+16], m0 554*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 555*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q +16], m0 556*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 557*fb1b10abSAndroid Build Coastguard Worker dec lines4d 558*fb1b10abSAndroid Build Coastguard Worker jnz .loop 559*fb1b10abSAndroid Build Coastguard Worker RESTORE_GOT 560*fb1b10abSAndroid Build Coastguard Worker RET 561*fb1b10abSAndroid Build Coastguard Worker 562*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 563*fb1b10abSAndroid Build Coastguard Workercglobal v_predictor_4x4, 3, 3, 1, dst, stride, above 564*fb1b10abSAndroid Build Coastguard Worker movd m0, [aboveq] 565*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 566*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 567*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 568*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 569*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m0 570*fb1b10abSAndroid Build Coastguard Worker RET 571*fb1b10abSAndroid Build Coastguard Worker 572*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 573*fb1b10abSAndroid Build Coastguard Workercglobal v_predictor_8x8, 3, 3, 1, dst, stride, above 574*fb1b10abSAndroid Build Coastguard Worker movq m0, [aboveq] 575*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3 576*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 577*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 578*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 579*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 580*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 581*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 582*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m0 583*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq ], m0 584*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m0 585*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m0 586*fb1b10abSAndroid Build Coastguard Worker RET 587*fb1b10abSAndroid Build Coastguard Worker 588*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 589*fb1b10abSAndroid Build Coastguard Workercglobal v_predictor_16x16, 3, 4, 1, dst, stride, above 590*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 591*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, nlines4 592*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 593*fb1b10abSAndroid Build Coastguard Worker mov nlines4d, 4 594*fb1b10abSAndroid Build Coastguard Worker.loop: 595*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 596*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 597*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2], m0 598*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 599*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 600*fb1b10abSAndroid Build Coastguard Worker dec nlines4d 601*fb1b10abSAndroid Build Coastguard Worker jnz .loop 602*fb1b10abSAndroid Build Coastguard Worker REP_RET 603*fb1b10abSAndroid Build Coastguard Worker 604*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 605*fb1b10abSAndroid Build Coastguard Workercglobal v_predictor_32x32, 3, 4, 2, dst, stride, above 606*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 607*fb1b10abSAndroid Build Coastguard Worker mova m1, [aboveq+16] 608*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, stride3, nlines4 609*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 610*fb1b10abSAndroid Build Coastguard Worker mov nlines4d, 8 611*fb1b10abSAndroid Build Coastguard Worker.loop: 612*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m0 613*fb1b10abSAndroid Build Coastguard Worker mova [dstq +16], m1 614*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m0 615*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq +16], m1 616*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2 ], m0 617*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2+16], m1 618*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m0 619*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q +16], m1 620*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 621*fb1b10abSAndroid Build Coastguard Worker dec nlines4d 622*fb1b10abSAndroid Build Coastguard Worker jnz .loop 623*fb1b10abSAndroid Build Coastguard Worker REP_RET 624*fb1b10abSAndroid Build Coastguard Worker 625*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 626*fb1b10abSAndroid Build Coastguard Workercglobal h_predictor_4x4, 2, 4, 4, dst, stride, line, left 627*fb1b10abSAndroid Build Coastguard Worker movifnidn leftq, leftmp 628*fb1b10abSAndroid Build Coastguard Worker movd m0, [leftq] 629*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 630*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 631*fb1b10abSAndroid Build Coastguard Worker pshufd m1, m0, 0x1 632*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m0 633*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m1 634*fb1b10abSAndroid Build Coastguard Worker pshufd m2, m0, 0x2 635*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 636*fb1b10abSAndroid Build Coastguard Worker pshufd m3, m0, 0x3 637*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m2 638*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m3 639*fb1b10abSAndroid Build Coastguard Worker RET 640*fb1b10abSAndroid Build Coastguard Worker 641*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 642*fb1b10abSAndroid Build Coastguard Workercglobal h_predictor_8x8, 2, 5, 3, dst, stride, line, left 643*fb1b10abSAndroid Build Coastguard Worker movifnidn leftq, leftmp 644*fb1b10abSAndroid Build Coastguard Worker mov lineq, -2 645*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, line, left, stride3 646*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 647*fb1b10abSAndroid Build Coastguard Worker movq m0, [leftq ] 648*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 ; l1 l1 l2 l2 ... l8 l8 649*fb1b10abSAndroid Build Coastguard Worker.loop: 650*fb1b10abSAndroid Build Coastguard Worker pshuflw m1, m0, 0x0 ; l1 l1 l1 l1 l1 l1 l1 l1 651*fb1b10abSAndroid Build Coastguard Worker pshuflw m2, m0, 0x55 ; l2 l2 l2 l2 l2 l2 l2 l2 652*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m1 653*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq], m2 654*fb1b10abSAndroid Build Coastguard Worker pshuflw m1, m0, 0xaa 655*fb1b10abSAndroid Build Coastguard Worker pshuflw m2, m0, 0xff 656*fb1b10abSAndroid Build Coastguard Worker movq [dstq+strideq*2], m1 657*fb1b10abSAndroid Build Coastguard Worker movq [dstq+stride3q ], m2 658*fb1b10abSAndroid Build Coastguard Worker pshufd m0, m0, 0xe ; [63:0] l5 l5 l6 l6 l7 l7 l8 l8 659*fb1b10abSAndroid Build Coastguard Worker inc lineq 660*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 661*fb1b10abSAndroid Build Coastguard Worker jnz .loop 662*fb1b10abSAndroid Build Coastguard Worker REP_RET 663*fb1b10abSAndroid Build Coastguard Worker 664*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 665*fb1b10abSAndroid Build Coastguard Workercglobal h_predictor_16x16, 2, 5, 3, dst, stride, line, left 666*fb1b10abSAndroid Build Coastguard Worker movifnidn leftq, leftmp 667*fb1b10abSAndroid Build Coastguard Worker mov lineq, -4 668*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, line, left, stride3 669*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 670*fb1b10abSAndroid Build Coastguard Worker.loop: 671*fb1b10abSAndroid Build Coastguard Worker movd m0, [leftq] 672*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 673*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 ; l1 to l4 each repeated 4 times 674*fb1b10abSAndroid Build Coastguard Worker pshufd m1, m0, 0x0 ; l1 repeated 16 times 675*fb1b10abSAndroid Build Coastguard Worker pshufd m2, m0, 0x55 ; l2 repeated 16 times 676*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m1 677*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m2 678*fb1b10abSAndroid Build Coastguard Worker pshufd m1, m0, 0xaa 679*fb1b10abSAndroid Build Coastguard Worker pshufd m2, m0, 0xff 680*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2], m1 681*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m2 682*fb1b10abSAndroid Build Coastguard Worker inc lineq 683*fb1b10abSAndroid Build Coastguard Worker lea leftq, [leftq+4 ] 684*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 685*fb1b10abSAndroid Build Coastguard Worker jnz .loop 686*fb1b10abSAndroid Build Coastguard Worker REP_RET 687*fb1b10abSAndroid Build Coastguard Worker 688*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 689*fb1b10abSAndroid Build Coastguard Workercglobal h_predictor_32x32, 2, 5, 3, dst, stride, line, left 690*fb1b10abSAndroid Build Coastguard Worker movifnidn leftq, leftmp 691*fb1b10abSAndroid Build Coastguard Worker mov lineq, -8 692*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, line, left, stride3 693*fb1b10abSAndroid Build Coastguard Worker lea stride3q, [strideq*3] 694*fb1b10abSAndroid Build Coastguard Worker.loop: 695*fb1b10abSAndroid Build Coastguard Worker movd m0, [leftq] 696*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 697*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m0 ; l1 to l4 each repeated 4 times 698*fb1b10abSAndroid Build Coastguard Worker pshufd m1, m0, 0x0 ; l1 repeated 16 times 699*fb1b10abSAndroid Build Coastguard Worker pshufd m2, m0, 0x55 ; l2 repeated 16 times 700*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m1 701*fb1b10abSAndroid Build Coastguard Worker mova [dstq+16 ], m1 702*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m2 703*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq+16 ], m2 704*fb1b10abSAndroid Build Coastguard Worker pshufd m1, m0, 0xaa 705*fb1b10abSAndroid Build Coastguard Worker pshufd m2, m0, 0xff 706*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2 ], m1 707*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq*2+16], m1 708*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q ], m2 709*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride3q+16 ], m2 710*fb1b10abSAndroid Build Coastguard Worker inc lineq 711*fb1b10abSAndroid Build Coastguard Worker lea leftq, [leftq+4 ] 712*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*4] 713*fb1b10abSAndroid Build Coastguard Worker jnz .loop 714*fb1b10abSAndroid Build Coastguard Worker REP_RET 715*fb1b10abSAndroid Build Coastguard Worker 716*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 717*fb1b10abSAndroid Build Coastguard Workercglobal tm_predictor_4x4, 4, 4, 5, dst, stride, above, left 718*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 719*fb1b10abSAndroid Build Coastguard Worker movq m0, [aboveq-1]; [63:0] tl t1 t2 t3 t4 x x x 720*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m1 721*fb1b10abSAndroid Build Coastguard Worker pshuflw m2, m0, 0x0 ; [63:0] tl tl tl tl [word] 722*fb1b10abSAndroid Build Coastguard Worker psrldq m0, 2 723*fb1b10abSAndroid Build Coastguard Worker psubw m0, m2 ; [63:0] t1-tl t2-tl t3-tl t4-tl [word] 724*fb1b10abSAndroid Build Coastguard Worker movd m2, [leftq] 725*fb1b10abSAndroid Build Coastguard Worker punpcklbw m2, m1 726*fb1b10abSAndroid Build Coastguard Worker pshuflw m4, m2, 0x0 ; [63:0] l1 l1 l1 l1 [word] 727*fb1b10abSAndroid Build Coastguard Worker pshuflw m3, m2, 0x55 ; [63:0] l2 l2 l2 l2 [word] 728*fb1b10abSAndroid Build Coastguard Worker paddw m4, m0 729*fb1b10abSAndroid Build Coastguard Worker paddw m3, m0 730*fb1b10abSAndroid Build Coastguard Worker packuswb m4, m4 731*fb1b10abSAndroid Build Coastguard Worker packuswb m3, m3 732*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m4 733*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m3 734*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 735*fb1b10abSAndroid Build Coastguard Worker pshuflw m4, m2, 0xaa 736*fb1b10abSAndroid Build Coastguard Worker pshuflw m3, m2, 0xff 737*fb1b10abSAndroid Build Coastguard Worker paddw m4, m0 738*fb1b10abSAndroid Build Coastguard Worker paddw m3, m0 739*fb1b10abSAndroid Build Coastguard Worker packuswb m4, m4 740*fb1b10abSAndroid Build Coastguard Worker packuswb m3, m3 741*fb1b10abSAndroid Build Coastguard Worker movd [dstq ], m4 742*fb1b10abSAndroid Build Coastguard Worker movd [dstq+strideq], m3 743*fb1b10abSAndroid Build Coastguard Worker RET 744*fb1b10abSAndroid Build Coastguard Worker 745*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 746*fb1b10abSAndroid Build Coastguard Workercglobal tm_predictor_8x8, 4, 4, 5, dst, stride, above, left 747*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 748*fb1b10abSAndroid Build Coastguard Worker movd m2, [aboveq-1] 749*fb1b10abSAndroid Build Coastguard Worker movq m0, [aboveq] 750*fb1b10abSAndroid Build Coastguard Worker punpcklbw m2, m1 751*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m1 ; t1 t2 t3 t4 t5 t6 t7 t8 [word] 752*fb1b10abSAndroid Build Coastguard Worker pshuflw m2, m2, 0x0 ; [63:0] tl tl tl tl [word] 753*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, line, left 754*fb1b10abSAndroid Build Coastguard Worker mov lineq, -4 755*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m2, m2 ; tl tl tl tl tl tl tl tl [word] 756*fb1b10abSAndroid Build Coastguard Worker psubw m0, m2 ; t1-tl t2-tl ... t8-tl [word] 757*fb1b10abSAndroid Build Coastguard Worker movq m2, [leftq] 758*fb1b10abSAndroid Build Coastguard Worker punpcklbw m2, m1 ; l1 l2 l3 l4 l5 l6 l7 l8 [word] 759*fb1b10abSAndroid Build Coastguard Worker.loop: 760*fb1b10abSAndroid Build Coastguard Worker pshuflw m4, m2, 0x0 ; [63:0] l1 l1 l1 l1 [word] 761*fb1b10abSAndroid Build Coastguard Worker pshuflw m3, m2, 0x55 ; [63:0] l2 l2 l2 l2 [word] 762*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m4, m4 ; l1 l1 l1 l1 l1 l1 l1 l1 [word] 763*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m3, m3 ; l2 l2 l2 l2 l2 l2 l2 l2 [word] 764*fb1b10abSAndroid Build Coastguard Worker paddw m4, m0 765*fb1b10abSAndroid Build Coastguard Worker paddw m3, m0 766*fb1b10abSAndroid Build Coastguard Worker packuswb m4, m3 767*fb1b10abSAndroid Build Coastguard Worker movq [dstq ], m4 768*fb1b10abSAndroid Build Coastguard Worker movhps [dstq+strideq], m4 769*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 770*fb1b10abSAndroid Build Coastguard Worker psrldq m2, 4 771*fb1b10abSAndroid Build Coastguard Worker inc lineq 772*fb1b10abSAndroid Build Coastguard Worker jnz .loop 773*fb1b10abSAndroid Build Coastguard Worker REP_RET 774*fb1b10abSAndroid Build Coastguard Worker 775*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 776*fb1b10abSAndroid Build Coastguard Workercglobal tm_predictor_16x16, 4, 5, 8, dst, stride, above, left 777*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 778*fb1b10abSAndroid Build Coastguard Worker mova m2, [aboveq-16]; 779*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] ; t1 t2 ... t16 [byte] 780*fb1b10abSAndroid Build Coastguard Worker punpckhbw m2, m1 ; [127:112] tl [word] 781*fb1b10abSAndroid Build Coastguard Worker punpckhbw m4, m0, m1 782*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m1 ; m0:m4 t1 t2 ... t16 [word] 783*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, line, left, stride8 784*fb1b10abSAndroid Build Coastguard Worker mov lineq, -8 785*fb1b10abSAndroid Build Coastguard Worker pshufhw m2, m2, 0xff 786*fb1b10abSAndroid Build Coastguard Worker mova m3, [leftq] ; l1 l2 ... l16 [byte] 787*fb1b10abSAndroid Build Coastguard Worker punpckhqdq m2, m2 ; tl repeated 8 times [word] 788*fb1b10abSAndroid Build Coastguard Worker psubw m0, m2 789*fb1b10abSAndroid Build Coastguard Worker psubw m4, m2 ; m0:m4 t1-tl t2-tl ... t16-tl [word] 790*fb1b10abSAndroid Build Coastguard Worker punpckhbw m5, m3, m1 791*fb1b10abSAndroid Build Coastguard Worker punpcklbw m3, m1 ; m3:m5 l1 l2 ... l16 [word] 792*fb1b10abSAndroid Build Coastguard Worker lea stride8q, [strideq*8] 793*fb1b10abSAndroid Build Coastguard Worker.loop: 794*fb1b10abSAndroid Build Coastguard Worker pshuflw m6, m3, 0x0 795*fb1b10abSAndroid Build Coastguard Worker pshuflw m7, m5, 0x0 796*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m6, m6 ; l1 repeated 8 times [word] 797*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m7, m7 ; l8 repeated 8 times [word] 798*fb1b10abSAndroid Build Coastguard Worker paddw m1, m6, m0 799*fb1b10abSAndroid Build Coastguard Worker paddw m6, m4 ; m1:m6 ti-tl+l1 [i=1,15] [word] 800*fb1b10abSAndroid Build Coastguard Worker psrldq m5, 2 801*fb1b10abSAndroid Build Coastguard Worker packuswb m1, m6 802*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m1 803*fb1b10abSAndroid Build Coastguard Worker paddw m1, m7, m0 804*fb1b10abSAndroid Build Coastguard Worker paddw m7, m4 ; m1:m7 ti-tl+l8 [i=1,15] [word] 805*fb1b10abSAndroid Build Coastguard Worker psrldq m3, 2 806*fb1b10abSAndroid Build Coastguard Worker packuswb m1, m7 807*fb1b10abSAndroid Build Coastguard Worker mova [dstq+stride8q], m1 808*fb1b10abSAndroid Build Coastguard Worker inc lineq 809*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq] 810*fb1b10abSAndroid Build Coastguard Worker jnz .loop 811*fb1b10abSAndroid Build Coastguard Worker REP_RET 812*fb1b10abSAndroid Build Coastguard Worker 813*fb1b10abSAndroid Build Coastguard WorkerINIT_XMM sse2 814*fb1b10abSAndroid Build Coastguard Workercglobal tm_predictor_32x32, 4, 4, 8, dst, stride, above, left 815*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 816*fb1b10abSAndroid Build Coastguard Worker movd m2, [aboveq-1] 817*fb1b10abSAndroid Build Coastguard Worker mova m0, [aboveq] 818*fb1b10abSAndroid Build Coastguard Worker mova m4, [aboveq+16] 819*fb1b10abSAndroid Build Coastguard Worker punpcklbw m2, m1 820*fb1b10abSAndroid Build Coastguard Worker punpckhbw m3, m0, m1 821*fb1b10abSAndroid Build Coastguard Worker punpckhbw m5, m4, m1 822*fb1b10abSAndroid Build Coastguard Worker punpcklbw m0, m1 823*fb1b10abSAndroid Build Coastguard Worker punpcklbw m4, m1 824*fb1b10abSAndroid Build Coastguard Worker pshuflw m2, m2, 0x0 825*fb1b10abSAndroid Build Coastguard Worker DEFINE_ARGS dst, stride, line, left 826*fb1b10abSAndroid Build Coastguard Worker mov lineq, -16 827*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m2, m2 828*fb1b10abSAndroid Build Coastguard Worker add leftq, 32 829*fb1b10abSAndroid Build Coastguard Worker psubw m0, m2 830*fb1b10abSAndroid Build Coastguard Worker psubw m3, m2 831*fb1b10abSAndroid Build Coastguard Worker psubw m4, m2 832*fb1b10abSAndroid Build Coastguard Worker psubw m5, m2 833*fb1b10abSAndroid Build Coastguard Worker.loop: 834*fb1b10abSAndroid Build Coastguard Worker movd m2, [leftq+lineq*2] 835*fb1b10abSAndroid Build Coastguard Worker pxor m1, m1 836*fb1b10abSAndroid Build Coastguard Worker punpcklbw m2, m1 837*fb1b10abSAndroid Build Coastguard Worker pshuflw m7, m2, 0x55 838*fb1b10abSAndroid Build Coastguard Worker pshuflw m2, m2, 0x0 839*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m2, m2 840*fb1b10abSAndroid Build Coastguard Worker punpcklqdq m7, m7 841*fb1b10abSAndroid Build Coastguard Worker paddw m6, m2, m3 842*fb1b10abSAndroid Build Coastguard Worker paddw m1, m2, m0 843*fb1b10abSAndroid Build Coastguard Worker packuswb m1, m6 844*fb1b10abSAndroid Build Coastguard Worker mova [dstq ], m1 845*fb1b10abSAndroid Build Coastguard Worker paddw m6, m2, m5 846*fb1b10abSAndroid Build Coastguard Worker paddw m1, m2, m4 847*fb1b10abSAndroid Build Coastguard Worker packuswb m1, m6 848*fb1b10abSAndroid Build Coastguard Worker mova [dstq+16 ], m1 849*fb1b10abSAndroid Build Coastguard Worker paddw m6, m7, m3 850*fb1b10abSAndroid Build Coastguard Worker paddw m1, m7, m0 851*fb1b10abSAndroid Build Coastguard Worker packuswb m1, m6 852*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq ], m1 853*fb1b10abSAndroid Build Coastguard Worker paddw m6, m7, m5 854*fb1b10abSAndroid Build Coastguard Worker paddw m1, m7, m4 855*fb1b10abSAndroid Build Coastguard Worker packuswb m1, m6 856*fb1b10abSAndroid Build Coastguard Worker mova [dstq+strideq+16], m1 857*fb1b10abSAndroid Build Coastguard Worker lea dstq, [dstq+strideq*2] 858*fb1b10abSAndroid Build Coastguard Worker inc lineq 859*fb1b10abSAndroid Build Coastguard Worker jnz .loop 860*fb1b10abSAndroid Build Coastguard Worker REP_RET 861