1da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/* 2da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * Copyright (c) 2015 The WebM project authors. All Rights Reserved. 3da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * 4da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * Use of this source code is governed by a BSD-style license 5da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * that can be found in the LICENSE file in the root of the source 6da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * tree. An additional intellectual property rights grant can be found 7da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * in the file PATENTS. All contributing project authors may 8da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * be found in the AUTHORS file in the root of the source tree. 9da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 10da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 11da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include <assert.h> 12da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 13da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include "vp9/common/vp9_enums.h" 14da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#include "vp9/encoder/mips/msa/vp9_fdct_msa.h" 15da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 16da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianvoid vp9_fht8x8_msa(const int16_t *input, int16_t *output, int32_t stride, 17da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian int32_t tx_type) { 18da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian v8i16 in0, in1, in2, in3, in4, in5, in6, in7; 19da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 20da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD_SH8(input, stride, in0, in1, in2, in3, in4, in5, in6, in7); 21da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian SLLI_4V(in0, in1, in2, in3, 2); 22da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian SLLI_4V(in4, in5, in6, in7, 2); 23da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 24da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian switch (tx_type) { 25da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case DCT_DCT: 267bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_FDCT8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 277bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 287bc9febe8749e98a3812a0dc4380ceae75c29450Johann TRANSPOSE8x8_SH_SH(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, 297bc9febe8749e98a3812a0dc4380ceae75c29450Johann in3, in4, in5, in6, in7); 307bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_FDCT8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 317bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 32da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian break; 33da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ADST_DCT: 347bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_ADST8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 357bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 367bc9febe8749e98a3812a0dc4380ceae75c29450Johann TRANSPOSE8x8_SH_SH(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, 377bc9febe8749e98a3812a0dc4380ceae75c29450Johann in3, in4, in5, in6, in7); 387bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_FDCT8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 397bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 40da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian break; 41da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case DCT_ADST: 427bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_FDCT8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 437bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 447bc9febe8749e98a3812a0dc4380ceae75c29450Johann TRANSPOSE8x8_SH_SH(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, 457bc9febe8749e98a3812a0dc4380ceae75c29450Johann in3, in4, in5, in6, in7); 467bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_ADST8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 477bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 48da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian break; 49da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ADST_ADST: 507bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_ADST8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 517bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 527bc9febe8749e98a3812a0dc4380ceae75c29450Johann TRANSPOSE8x8_SH_SH(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, 537bc9febe8749e98a3812a0dc4380ceae75c29450Johann in3, in4, in5, in6, in7); 547bc9febe8749e98a3812a0dc4380ceae75c29450Johann VP9_ADST8(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, in4, 557bc9febe8749e98a3812a0dc4380ceae75c29450Johann in5, in6, in7); 56da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian break; 577bc9febe8749e98a3812a0dc4380ceae75c29450Johann default: assert(0); break; 58da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian } 59da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 607bc9febe8749e98a3812a0dc4380ceae75c29450Johann TRANSPOSE8x8_SH_SH(in0, in1, in2, in3, in4, in5, in6, in7, in0, in1, in2, in3, 617bc9febe8749e98a3812a0dc4380ceae75c29450Johann in4, in5, in6, in7); 62da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian SRLI_AVE_S_4V_H(in0, in1, in2, in3, in4, in5, in6, in7); 63da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ST_SH8(in0, in1, in2, in3, in4, in5, in6, in7, output, 8); 64da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian} 65