1233d2500723e5594f3e7c70896ffeeef32b9c950ywan; 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan; 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan; Use of this source code is governed by a BSD-style license 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan; that can be found in the LICENSE file in the root of the source 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan; tree. An additional intellectual property rights grant can be found 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan; in the file PATENTS. All contributing project authors may 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan; be found in the AUTHORS file in the root of the source tree. 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan; 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan 11233d2500723e5594f3e7c70896ffeeef32b9c950ywan 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan .globl vp8_block_error_ppc 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan .align 2 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan;# r3 short *Coeff 16233d2500723e5594f3e7c70896ffeeef32b9c950ywan;# r4 short *dqcoeff 17233d2500723e5594f3e7c70896ffeeef32b9c950ywanvp8_block_error_ppc: 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan mfspr r11, 256 ;# get old VRSAVE 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan oris r12, r11, 0xf800 20233d2500723e5594f3e7c70896ffeeef32b9c950ywan mtspr 256, r12 ;# set VRSAVE 21233d2500723e5594f3e7c70896ffeeef32b9c950ywan 22233d2500723e5594f3e7c70896ffeeef32b9c950ywan stwu r1,-32(r1) ;# create space on the stack 23233d2500723e5594f3e7c70896ffeeef32b9c950ywan 24233d2500723e5594f3e7c70896ffeeef32b9c950ywan stw r5, 12(r1) ;# tranfer dc to vector register 25233d2500723e5594f3e7c70896ffeeef32b9c950ywan 26233d2500723e5594f3e7c70896ffeeef32b9c950ywan lvx v0, 0, r3 ;# Coeff 27233d2500723e5594f3e7c70896ffeeef32b9c950ywan lvx v1, 0, r4 ;# dqcoeff 28233d2500723e5594f3e7c70896ffeeef32b9c950ywan 29233d2500723e5594f3e7c70896ffeeef32b9c950ywan li r10, 16 30233d2500723e5594f3e7c70896ffeeef32b9c950ywan 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan vspltisw v3, 0 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan 33233d2500723e5594f3e7c70896ffeeef32b9c950ywan vsubshs v0, v0, v1 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan 35233d2500723e5594f3e7c70896ffeeef32b9c950ywan vmsumshm v2, v0, v0, v3 ;# multiply differences 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan lvx v0, r10, r3 ;# Coeff 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan lvx v1, r10, r4 ;# dqcoeff 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan 40233d2500723e5594f3e7c70896ffeeef32b9c950ywan vsubshs v0, v0, v1 41233d2500723e5594f3e7c70896ffeeef32b9c950ywan 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan vmsumshm v1, v0, v0, v2 ;# multiply differences 43233d2500723e5594f3e7c70896ffeeef32b9c950ywan vsumsws v1, v1, v3 ;# sum up 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan stvx v1, 0, r1 46233d2500723e5594f3e7c70896ffeeef32b9c950ywan lwz r3, 12(r1) ;# return value 47233d2500723e5594f3e7c70896ffeeef32b9c950ywan 48233d2500723e5594f3e7c70896ffeeef32b9c950ywan addi r1, r1, 32 ;# recover stack 49233d2500723e5594f3e7c70896ffeeef32b9c950ywan mtspr 256, r11 ;# reset old VRSAVE 50233d2500723e5594f3e7c70896ffeeef32b9c950ywan 51233d2500723e5594f3e7c70896ffeeef32b9c950ywan blr 52