1233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan * Copyright (c) 2013 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#ifndef VP9_COMMON_MIPS_DSPR2_VP9_LOOPFILTER_MACROS_DSPR2_H_ 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define VP9_COMMON_MIPS_DSPR2_VP9_LOOPFILTER_MACROS_DSPR2_H_ 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include <stdlib.h> 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan 16233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "./vp9_rtcd.h" 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vp9/common/vp9_common.h" 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vp9/common/vp9_onyxc_int.h" 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan 20233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifdef __cplusplus 21233d2500723e5594f3e7c70896ffeeef32b9c950ywanextern "C" { 22233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif 23233d2500723e5594f3e7c70896ffeeef32b9c950ywan 24233d2500723e5594f3e7c70896ffeeef32b9c950ywan#if HAVE_DSPR2 25233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define STORE_F0() { \ 26233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 27233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_f0], 1(%[s4]) \n\t" \ 28233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_f0], 0(%[s4]) \n\t" \ 29233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_f0], -1(%[s4]) \n\t" \ 30233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_f0], -2(%[s4]) \n\t" \ 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 33233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "r" (q1_f0), [q0_f0] "r" (q0_f0), \ 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_f0] "r" (p0_f0), [p1_f0] "r" (p1_f0), \ 35233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s4] "r" (s4) \ 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_f0], %[q1_f0], 8 \n\t" \ 40233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_f0], %[q0_f0], 8 \n\t" \ 41233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_f0], %[p0_f0], 8 \n\t" \ 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_f0], %[p1_f0], 8 \n\t" \ 43233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "+r" (q1_f0), [q0_f0] "+r" (q0_f0), \ 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_f0] "+r" (p0_f0), [p1_f0] "+r" (p1_f0) \ 46233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 47233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 48233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 49233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 50233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_f0], 1(%[s3]) \n\t" \ 51233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_f0], 0(%[s3]) \n\t" \ 52233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_f0], -1(%[s3]) \n\t" \ 53233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_f0], -2(%[s3]) \n\t" \ 54233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 55233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p1_f0] "+r" (p1_f0) \ 56233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "r" (q1_f0), [q0_f0] "r" (q0_f0), \ 57233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s3] "r" (s3), [p0_f0] "r" (p0_f0) \ 58233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 59233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 60233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 61233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_f0], %[q1_f0], 8 \n\t" \ 62233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_f0], %[q0_f0], 8 \n\t" \ 63233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_f0], %[p0_f0], 8 \n\t" \ 64233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_f0], %[p1_f0], 8 \n\t" \ 65233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 66233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "+r" (q1_f0), [q0_f0] "+r" (q0_f0), \ 67233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_f0] "+r" (p0_f0), [p1_f0] "+r" (p1_f0) \ 68233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 69233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 70233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 71233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 72233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_f0], 1(%[s2]) \n\t" \ 73233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_f0], 0(%[s2]) \n\t" \ 74233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_f0], -1(%[s2]) \n\t" \ 75233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_f0], -2(%[s2]) \n\t" \ 76233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 77233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 78233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "r" (q1_f0), [q0_f0] "r" (q0_f0), \ 79233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_f0] "r" (p0_f0), [p1_f0] "r" (p1_f0), \ 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s2] "r" (s2) \ 81233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 82233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 83233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 84233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_f0], %[q1_f0], 8 \n\t" \ 85233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_f0], %[q0_f0], 8 \n\t" \ 86233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_f0], %[p0_f0], 8 \n\t" \ 87233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_f0], %[p1_f0], 8 \n\t" \ 88233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 89233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "+r" (q1_f0), [q0_f0] "+r" (q0_f0), \ 90233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_f0] "+r" (p0_f0), [p1_f0] "+r" (p1_f0) \ 91233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 92233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 93233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 94233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 95233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_f0], 1(%[s1]) \n\t" \ 96233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_f0], 0(%[s1]) \n\t" \ 97233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_f0], -1(%[s1]) \n\t" \ 98233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_f0], -2(%[s1]) \n\t" \ 99233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 100233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 101233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q1_f0] "r" (q1_f0), [q0_f0] "r" (q0_f0), \ 102233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_f0] "r" (p0_f0), [p1_f0] "r" (p1_f0), \ 103233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s1] "r" (s1) \ 104233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 105233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 106233d2500723e5594f3e7c70896ffeeef32b9c950ywan 107233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define STORE_F1() { \ 108233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 109233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_r], 2(%[s4]) \n\t" \ 110233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_r], 1(%[s4]) \n\t" \ 111233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_r], 0(%[s4]) \n\t" \ 112233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_r], -1(%[s4]) \n\t" \ 113233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_r], -2(%[s4]) \n\t" \ 114233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_r], -3(%[s4]) \n\t" \ 115233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 116233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 117233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q2_r] "r" (q2_r), [q1_r] "r" (q1_r), [q0_r] "r" (q0_r), \ 118233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_r] "r" (p0_r), [p1_r] "r" (p1_r), [p2_r] "r" (p2_r), \ 119233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s4] "r" (s4) \ 120233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 121233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 122233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 123233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q2_r], %[q2_r], 16 \n\t" \ 124233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_r], %[q1_r], 16 \n\t" \ 125233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_r], %[q0_r], 16 \n\t" \ 126233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_r], %[p0_r], 16 \n\t" \ 127233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_r], %[p1_r], 16 \n\t" \ 128233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p2_r], %[p2_r], 16 \n\t" \ 129233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 130233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q2_r] "+r" (q2_r), [q1_r] "+r" (q1_r), [q0_r] "+r" (q0_r), \ 131233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_r] "+r" (p0_r), [p1_r] "+r" (p1_r), [p2_r] "+r" (p2_r) \ 132233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 133233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 134233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 135233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 136233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_r], 2(%[s3]) \n\t" \ 137233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_r], 1(%[s3]) \n\t" \ 138233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_r], 0(%[s3]) \n\t" \ 139233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_r], -1(%[s3]) \n\t" \ 140233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_r], -2(%[s3]) \n\t" \ 141233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_r], -3(%[s3]) \n\t" \ 142233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 143233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 144233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q2_r] "r" (q2_r), [q1_r] "r" (q1_r), [q0_r] "r" (q0_r), \ 145233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_r] "r" (p0_r), [p1_r] "r" (p1_r), [p2_r] "r" (p2_r), \ 146233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s3] "r" (s3) \ 147233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 148233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 149233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 150233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_l], 2(%[s2]) \n\t" \ 151233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_l], 1(%[s2]) \n\t" \ 152233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_l], 0(%[s2]) \n\t" \ 153233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_l], -1(%[s2]) \n\t" \ 154233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_l], -2(%[s2]) \n\t" \ 155233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_l], -3(%[s2]) \n\t" \ 156233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 157233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 158233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q2_l] "r" (q2_l), [q1_l] "r" (q1_l), [q0_l] "r" (q0_l), \ 159233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "r" (p0_l), [p1_l] "r" (p1_l), [p2_l] "r" (p2_l), \ 160233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s2] "r" (s2) \ 161233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 162233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 163233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 164233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q2_l], %[q2_l], 16 \n\t" \ 165233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_l], %[q1_l], 16 \n\t" \ 166233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_l], %[q0_l], 16 \n\t" \ 167233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_l], %[p0_l], 16 \n\t" \ 168233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_l], %[p1_l], 16 \n\t" \ 169233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p2_l], %[p2_l], 16 \n\t" \ 170233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 171233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q2_l] "+r" (q2_l), [q1_l] "+r" (q1_l), [q0_l] "+r" (q0_l), \ 172233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "+r" (p0_l), [p1_l] "+r" (p1_l), [p2_l] "+r" (p2_l) \ 173233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 174233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 175233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 176233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 177233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_l], 2(%[s1]) \n\t" \ 178233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_l], 1(%[s1]) \n\t" \ 179233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_l], 0(%[s1]) \n\t" \ 180233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_l], -1(%[s1]) \n\t" \ 181233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_l], -2(%[s1]) \n\t" \ 182233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_l], -3(%[s1]) \n\t" \ 183233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 184233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 185233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q2_l] "r" (q2_l), [q1_l] "r" (q1_l), [q0_l] "r" (q0_l), \ 186233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "r" (p0_l), [p1_l] "r" (p1_l), [p2_l] "r" (p2_l), \ 187233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s1] "r" (s1) \ 188233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 189233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 190233d2500723e5594f3e7c70896ffeeef32b9c950ywan 191233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define STORE_F2() { \ 192233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 193233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q6_r], 6(%[s4]) \n\t" \ 194233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q5_r], 5(%[s4]) \n\t" \ 195233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q4_r], 4(%[s4]) \n\t" \ 196233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q3_r], 3(%[s4]) \n\t" \ 197233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_r], 2(%[s4]) \n\t" \ 198233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_r], 1(%[s4]) \n\t" \ 199233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_r], 0(%[s4]) \n\t" \ 200233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_r], -1(%[s4]) \n\t" \ 201233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_r], -2(%[s4]) \n\t" \ 202233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_r], -3(%[s4]) \n\t" \ 203233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p3_r], -4(%[s4]) \n\t" \ 204233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p4_r], -5(%[s4]) \n\t" \ 205233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p5_r], -6(%[s4]) \n\t" \ 206233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p6_r], -7(%[s4]) \n\t" \ 207233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 208233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 209233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q6_r] "r" (q6_r), [q5_r] "r" (q5_r), [q4_r] "r" (q4_r), \ 210233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_r] "r" (q3_r), [q2_r] "r" (q2_r), [q1_r] "r" (q1_r), \ 211233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_r] "r" (q0_r), \ 212233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_r] "r" (p0_r), [p1_r] "r" (p1_r), [p2_r] "r" (p2_r), \ 213233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p3_r] "r" (p3_r), [p4_r] "r" (p4_r), [p5_r] "r" (p5_r), \ 214233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_r] "r" (p6_r), \ 215233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s4] "r" (s4) \ 216233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 217233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 218233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 219233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q6_r], %[q6_r], 16 \n\t" \ 220233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q5_r], %[q5_r], 16 \n\t" \ 221233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q4_r], %[q4_r], 16 \n\t" \ 222233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q3_r], %[q3_r], 16 \n\t" \ 223233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q2_r], %[q2_r], 16 \n\t" \ 224233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_r], %[q1_r], 16 \n\t" \ 225233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_r], %[q0_r], 16 \n\t" \ 226233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_r], %[p0_r], 16 \n\t" \ 227233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_r], %[p1_r], 16 \n\t" \ 228233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p2_r], %[p2_r], 16 \n\t" \ 229233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p3_r], %[p3_r], 16 \n\t" \ 230233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p4_r], %[p4_r], 16 \n\t" \ 231233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p5_r], %[p5_r], 16 \n\t" \ 232233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p6_r], %[p6_r], 16 \n\t" \ 233233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 234233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q6_r] "+r" (q6_r), [q5_r] "+r" (q5_r), [q4_r] "+r" (q4_r), \ 235233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_r] "+r" (q3_r), [q2_r] "+r" (q2_r), [q1_r] "+r" (q1_r), \ 236233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_r] "+r" (q0_r), \ 237233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_r] "+r" (p0_r), [p1_r] "+r" (p1_r), [p2_r] "+r" (p2_r), \ 238233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p3_r] "+r" (p3_r), [p4_r] "+r" (p4_r), [p5_r] "+r" (p5_r), \ 239233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_r] "+r" (p6_r) \ 240233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 241233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 242233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 243233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 244233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q6_r], 6(%[s3]) \n\t" \ 245233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q5_r], 5(%[s3]) \n\t" \ 246233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q4_r], 4(%[s3]) \n\t" \ 247233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q3_r], 3(%[s3]) \n\t" \ 248233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_r], 2(%[s3]) \n\t" \ 249233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_r], 1(%[s3]) \n\t" \ 250233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_r], 0(%[s3]) \n\t" \ 251233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_r], -1(%[s3]) \n\t" \ 252233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_r], -2(%[s3]) \n\t" \ 253233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_r], -3(%[s3]) \n\t" \ 254233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p3_r], -4(%[s3]) \n\t" \ 255233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p4_r], -5(%[s3]) \n\t" \ 256233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p5_r], -6(%[s3]) \n\t" \ 257233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p6_r], -7(%[s3]) \n\t" \ 258233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 259233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 260233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q6_r] "r" (q6_r), [q5_r] "r" (q5_r), [q4_r] "r" (q4_r), \ 261233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_r] "r" (q3_r), [q2_r] "r" (q2_r), [q1_r] "r" (q1_r), \ 262233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_r] "r" (q0_r), \ 263233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_r] "r" (p0_r), [p1_r] "r" (p1_r), [p2_r] "r" (p2_r), \ 264233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p3_r] "r" (p3_r), [p4_r] "r" (p4_r), [p5_r] "r" (p5_r), \ 265233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_r] "r" (p6_r), \ 266233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s3] "r" (s3) \ 267233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 268233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 269233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 270233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q6_l], 6(%[s2]) \n\t" \ 271233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q5_l], 5(%[s2]) \n\t" \ 272233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q4_l], 4(%[s2]) \n\t" \ 273233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q3_l], 3(%[s2]) \n\t" \ 274233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_l], 2(%[s2]) \n\t" \ 275233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_l], 1(%[s2]) \n\t" \ 276233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_l], 0(%[s2]) \n\t" \ 277233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_l], -1(%[s2]) \n\t" \ 278233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_l], -2(%[s2]) \n\t" \ 279233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_l], -3(%[s2]) \n\t" \ 280233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p3_l], -4(%[s2]) \n\t" \ 281233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p4_l], -5(%[s2]) \n\t" \ 282233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p5_l], -6(%[s2]) \n\t" \ 283233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p6_l], -7(%[s2]) \n\t" \ 284233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 285233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 286233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q6_l] "r" (q6_l), [q5_l] "r" (q5_l), [q4_l] "r" (q4_l), \ 287233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_l] "r" (q3_l), [q2_l] "r" (q2_l), [q1_l] "r" (q1_l), \ 288233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_l] "r" (q0_l), \ 289233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "r" (p0_l), [p1_l] "r" (p1_l), [p2_l] "r" (p2_l), \ 290233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p3_l] "r" (p3_l), [p4_l] "r" (p4_l), [p5_l] "r" (p5_l), \ 291233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_l] "r" (p6_l), \ 292233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s2] "r" (s2) \ 293233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 294233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 295233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 296233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q6_l], %[q6_l], 16 \n\t" \ 297233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q5_l], %[q5_l], 16 \n\t" \ 298233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q4_l], %[q4_l], 16 \n\t" \ 299233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q3_l], %[q3_l], 16 \n\t" \ 300233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q2_l], %[q2_l], 16 \n\t" \ 301233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q1_l], %[q1_l], 16 \n\t" \ 302233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[q0_l], %[q0_l], 16 \n\t" \ 303233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p0_l], %[p0_l], 16 \n\t" \ 304233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p1_l], %[p1_l], 16 \n\t" \ 305233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p2_l], %[p2_l], 16 \n\t" \ 306233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p3_l], %[p3_l], 16 \n\t" \ 307233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p4_l], %[p4_l], 16 \n\t" \ 308233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p5_l], %[p5_l], 16 \n\t" \ 309233d2500723e5594f3e7c70896ffeeef32b9c950ywan "srl %[p6_l], %[p6_l], 16 \n\t" \ 310233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 311233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q6_l] "+r" (q6_l), [q5_l] "+r" (q5_l), [q4_l] "+r" (q4_l), \ 312233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_l] "+r" (q3_l), [q2_l] "+r" (q2_l), [q1_l] "+r" (q1_l), \ 313233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_l] "+r" (q0_l), \ 314233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "+r" (p0_l), [p1_l] "+r" (p1_l), [p2_l] "+r" (p2_l), \ 315233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p3_l] "+r" (p3_l), [p4_l] "+r" (p4_l), [p5_l] "+r" (p5_l), \ 316233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_l] "+r" (p6_l) \ 317233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 318233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 319233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 320233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 321233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q6_l], 6(%[s1]) \n\t" \ 322233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q5_l], 5(%[s1]) \n\t" \ 323233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q4_l], 4(%[s1]) \n\t" \ 324233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q3_l], 3(%[s1]) \n\t" \ 325233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q2_l], 2(%[s1]) \n\t" \ 326233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q1_l], 1(%[s1]) \n\t" \ 327233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[q0_l], 0(%[s1]) \n\t" \ 328233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p0_l], -1(%[s1]) \n\t" \ 329233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p1_l], -2(%[s1]) \n\t" \ 330233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p2_l], -3(%[s1]) \n\t" \ 331233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p3_l], -4(%[s1]) \n\t" \ 332233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p4_l], -5(%[s1]) \n\t" \ 333233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p5_l], -6(%[s1]) \n\t" \ 334233d2500723e5594f3e7c70896ffeeef32b9c950ywan "sb %[p6_l], -7(%[s1]) \n\t" \ 335233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 336233d2500723e5594f3e7c70896ffeeef32b9c950ywan : \ 337233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [q6_l] "r" (q6_l), [q5_l] "r" (q5_l), [q4_l] "r" (q4_l), \ 338233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_l] "r" (q3_l), [q2_l] "r" (q2_l), [q1_l] "r" (q1_l), \ 339233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_l] "r" (q0_l), \ 340233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "r" (p0_l), [p1_l] "r" (p1_l), [p2_l] "r" (p2_l), \ 341233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p3_l] "r" (p3_l), [p4_l] "r" (p4_l), [p5_l] "r" (p5_l), \ 342233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_l] "r" (p6_l), \ 343233d2500723e5594f3e7c70896ffeeef32b9c950ywan [s1] "r" (s1) \ 344233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 345233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 346233d2500723e5594f3e7c70896ffeeef32b9c950ywan 347233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define PACK_LEFT_0TO3() { \ 348233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 349233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p3_l], %[p3] \n\t" \ 350233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p2_l], %[p2] \n\t" \ 351233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p1_l], %[p1] \n\t" \ 352233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p0_l], %[p0] \n\t" \ 353233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q0_l], %[q0] \n\t" \ 354233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q1_l], %[q1] \n\t" \ 355233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q2_l], %[q2] \n\t" \ 356233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q3_l], %[q3] \n\t" \ 357233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 358233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p3_l] "=&r" (p3_l), [p2_l] "=&r" (p2_l), \ 359233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p1_l] "=&r" (p1_l), [p0_l] "=&r" (p0_l), \ 360233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_l] "=&r" (q0_l), [q1_l] "=&r" (q1_l), \ 361233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q2_l] "=&r" (q2_l), [q3_l] "=&r" (q3_l) \ 362233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p3] "r" (p3), [p2] "r" (p2), [p1] "r" (p1), [p0] "r" (p0), \ 363233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0] "r" (q0), [q1] "r" (q1), [q2] "r" (q2), [q3] "r" (q3) \ 364233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 365233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 366233d2500723e5594f3e7c70896ffeeef32b9c950ywan 367233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define PACK_LEFT_4TO7() { \ 368233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 369233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p7_l], %[p7] \n\t" \ 370233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p6_l], %[p6] \n\t" \ 371233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p5_l], %[p5] \n\t" \ 372233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[p4_l], %[p4] \n\t" \ 373233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q4_l], %[q4] \n\t" \ 374233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q5_l], %[q5] \n\t" \ 375233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q6_l], %[q6] \n\t" \ 376233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbl %[q7_l], %[q7] \n\t" \ 377233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 378233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p7_l] "=&r" (p7_l), [p6_l] "=&r" (p6_l), \ 379233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p5_l] "=&r" (p5_l), [p4_l] "=&r" (p4_l), \ 380233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q4_l] "=&r" (q4_l), [q5_l] "=&r" (q5_l), \ 381233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q6_l] "=&r" (q6_l), [q7_l] "=&r" (q7_l) \ 382233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p7] "r" (p7), [p6] "r" (p6), [p5] "r" (p5), [p4] "r" (p4), \ 383233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q4] "r" (q4), [q5] "r" (q5), [q6] "r" (q6), [q7] "r" (q7) \ 384233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 385233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 386233d2500723e5594f3e7c70896ffeeef32b9c950ywan 387233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define PACK_RIGHT_0TO3() { \ 388233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 389233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p3_r], %[p3] \n\t" \ 390233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p2_r], %[p2] \n\t" \ 391233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p1_r], %[p1] \n\t" \ 392233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p0_r], %[p0] \n\t" \ 393233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q0_r], %[q0] \n\t" \ 394233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q1_r], %[q1] \n\t" \ 395233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q2_r], %[q2] \n\t" \ 396233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q3_r], %[q3] \n\t" \ 397233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 398233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p3_r] "=&r" (p3_r), [p2_r] "=&r" (p2_r), \ 399233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p1_r] "=&r" (p1_r), [p0_r] "=&r" (p0_r), \ 400233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_r] "=&r" (q0_r), [q1_r] "=&r" (q1_r), \ 401233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q2_r] "=&r" (q2_r), [q3_r] "=&r" (q3_r) \ 402233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p3] "r" (p3), [p2] "r" (p2), [p1] "r" (p1), [p0] "r" (p0), \ 403233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0] "r" (q0), [q1] "r" (q1), [q2] "r" (q2), [q3] "r" (q3) \ 404233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 405233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 406233d2500723e5594f3e7c70896ffeeef32b9c950ywan 407233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define PACK_RIGHT_4TO7() { \ 408233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 409233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p7_r], %[p7] \n\t" \ 410233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p6_r], %[p6] \n\t" \ 411233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p5_r], %[p5] \n\t" \ 412233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[p4_r], %[p4] \n\t" \ 413233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q4_r], %[q4] \n\t" \ 414233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q5_r], %[q5] \n\t" \ 415233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q6_r], %[q6] \n\t" \ 416233d2500723e5594f3e7c70896ffeeef32b9c950ywan "preceu.ph.qbr %[q7_r], %[q7] \n\t" \ 417233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 418233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p7_r] "=&r" (p7_r), [p6_r] "=&r" (p6_r), \ 419233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p5_r] "=&r" (p5_r), [p4_r] "=&r" (p4_r), \ 420233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q4_r] "=&r" (q4_r), [q5_r] "=&r" (q5_r), \ 421233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q6_r] "=&r" (q6_r), [q7_r] "=&r" (q7_r) \ 422233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p7] "r" (p7), [p6] "r" (p6), [p5] "r" (p5), [p4] "r" (p4), \ 423233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q4] "r" (q4), [q5] "r" (q5), [q6] "r" (q6), [q7] "r" (q7) \ 424233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 425233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 426233d2500723e5594f3e7c70896ffeeef32b9c950ywan 427233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define COMBINE_LEFT_RIGHT_0TO2() { \ 428233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 429233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p2], %[p2_l], %[p2_r] \n\t" \ 430233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p1], %[p1_l], %[p1_r] \n\t" \ 431233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p0], %[p0_l], %[p0_r] \n\t" \ 432233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q0], %[q0_l], %[q0_r] \n\t" \ 433233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q1], %[q1_l], %[q1_r] \n\t" \ 434233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q2], %[q2_l], %[q2_r] \n\t" \ 435233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 436233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p2] "=&r" (p2), [p1] "=&r" (p1), [p0] "=&r" (p0), \ 437233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0] "=&r" (q0), [q1] "=&r" (q1), [q2] "=&r" (q2) \ 438233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p2_l] "r" (p2_l), [p2_r] "r" (p2_r), \ 439233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p1_l] "r" (p1_l), [p1_r] "r" (p1_r), \ 440233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p0_l] "r" (p0_l), [p0_r] "r" (p0_r), \ 441233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q0_l] "r" (q0_l), [q0_r] "r" (q0_r), \ 442233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q1_l] "r" (q1_l), [q1_r] "r" (q1_r), \ 443233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q2_l] "r" (q2_l), [q2_r] "r" (q2_r) \ 444233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 445233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 446233d2500723e5594f3e7c70896ffeeef32b9c950ywan 447233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define COMBINE_LEFT_RIGHT_3TO6() { \ 448233d2500723e5594f3e7c70896ffeeef32b9c950ywan __asm__ __volatile__ ( \ 449233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p6], %[p6_l], %[p6_r] \n\t" \ 450233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p5], %[p5_l], %[p5_r] \n\t" \ 451233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p4], %[p4_l], %[p4_r] \n\t" \ 452233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[p3], %[p3_l], %[p3_r] \n\t" \ 453233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q3], %[q3_l], %[q3_r] \n\t" \ 454233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q4], %[q4_l], %[q4_r] \n\t" \ 455233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q5], %[q5_l], %[q5_r] \n\t" \ 456233d2500723e5594f3e7c70896ffeeef32b9c950ywan "precr.qb.ph %[q6], %[q6_l], %[q6_r] \n\t" \ 457233d2500723e5594f3e7c70896ffeeef32b9c950ywan \ 458233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p6] "=&r" (p6),[p5] "=&r" (p5), \ 459233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p4] "=&r" (p4),[p3] "=&r" (p3), \ 460233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3] "=&r" (q3),[q4] "=&r" (q4), \ 461233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q5] "=&r" (q5),[q6] "=&r" (q6) \ 462233d2500723e5594f3e7c70896ffeeef32b9c950ywan : [p6_l] "r" (p6_l), [p5_l] "r" (p5_l), \ 463233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p4_l] "r" (p4_l), [p3_l] "r" (p3_l), \ 464233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p6_r] "r" (p6_r), [p5_r] "r" (p5_r), \ 465233d2500723e5594f3e7c70896ffeeef32b9c950ywan [p4_r] "r" (p4_r), [p3_r] "r" (p3_r), \ 466233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_l] "r" (q3_l), [q4_l] "r" (q4_l), \ 467233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q5_l] "r" (q5_l), [q6_l] "r" (q6_l), \ 468233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q3_r] "r" (q3_r), [q4_r] "r" (q4_r), \ 469233d2500723e5594f3e7c70896ffeeef32b9c950ywan [q5_r] "r" (q5_r), [q6_r] "r" (q6_r) \ 470233d2500723e5594f3e7c70896ffeeef32b9c950ywan ); \ 471233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 472233d2500723e5594f3e7c70896ffeeef32b9c950ywan 473233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif // #if HAVE_DSPR2 474233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifdef __cplusplus 475233d2500723e5594f3e7c70896ffeeef32b9c950ywan} // extern "C" 476233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif 477233d2500723e5594f3e7c70896ffeeef32b9c950ywan 478233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif // VP9_COMMON_MIPS_DSPR2_VP9_LOOPFILTER_MACROS_DSPR2_H_ 479