1d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org/*
2d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  Copyright (c) 2013 The WebM project authors. All Rights Reserved.
3d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *
4d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  Use of this source code is governed by a BSD-style license
5d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  that can be found in the LICENSE file in the root of the source
6d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  tree. An additional intellectual property rights grant can be found
7d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  in the file PATENTS.  All contributing project authors may
8d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  be found in the AUTHORS file in the root of the source tree.
9d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org */
10d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
11d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include <stdlib.h>
12d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
13d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "./vp9_rtcd.h"
14d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/vp9_common.h"
15d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/vp9_loopfilter.h"
16d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/vp9_onyxc_int.h"
17d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/mips/dspr2/vp9_common_dspr2.h"
18d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/mips/dspr2/vp9_loopfilter_macros_dspr2.h"
19d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/mips/dspr2/vp9_loopfilter_masks_dspr2.h"
20d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vp9/common/mips/dspr2/vp9_loopfilter_filters_dspr2.h"
21d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
22d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#if HAVE_DSPR2
238b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.orgvoid vp9_lpf_vertical_16_dspr2(uint8_t *s,
248b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org                               int pitch,
258b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org                               const uint8_t *blimit,
268b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org                               const uint8_t *limit,
278b26fe55f3e4daa2311dbd2d95e8ac2b4e080685johannkoenig@chromium.org                               const uint8_t *thresh) {
28d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint8_t   i;
29d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  mask, hev, flat, flat2;
30d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint8_t   *s1, *s2, *s3, *s4;
31d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  prim1, prim2, sec3, sec4, prim3, prim4;
32d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  thresh_vec, flimit_vec, limit_vec;
33d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  uflimit, ulimit, uthresh;
34d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  p7, p6, p5, p4, p3, p2, p1, p0, q0, q1, q2, q3, q4, q5, q6, q7;
35d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  p1_f0, p0_f0, q0_f0, q1_f0;
36d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  p7_l, p6_l, p5_l, p4_l, p3_l, p2_l, p1_l, p0_l;
37d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  q0_l, q1_l, q2_l, q3_l, q4_l, q5_l, q6_l, q7_l;
38d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  p7_r, p6_r, p5_r, p4_r, p3_r, p2_r, p1_r, p0_r;
39d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  q0_r, q1_r, q2_r, q3_r, q4_r, q5_r, q6_r, q7_r;
40d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  p2_l_f1, p1_l_f1, p0_l_f1, p2_r_f1, p1_r_f1, p0_r_f1;
41d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uint32_t  q0_l_f1, q1_l_f1, q2_l_f1, q0_r_f1, q1_r_f1, q2_r_f1;
42d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
43d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uflimit = *blimit;
44d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  ulimit = *limit;
45d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  uthresh = *thresh;
46d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
47d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  /* create quad-byte */
48d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  __asm__ __volatile__ (
49d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      "replv.qb     %[thresh_vec],     %[uthresh]    \n\t"
50d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      "replv.qb     %[flimit_vec],     %[uflimit]    \n\t"
51d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      "replv.qb     %[limit_vec],      %[ulimit]     \n\t"
52d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
53d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      : [thresh_vec] "=&r" (thresh_vec), [flimit_vec] "=&r" (flimit_vec),
54d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        [limit_vec] "=r" (limit_vec)
55d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      : [uthresh] "r" (uthresh), [uflimit] "r" (uflimit), [ulimit] "r" (ulimit)
56d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  );
57d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
58d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  vp9_prefetch_store(s + pitch);
59d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
60d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  for (i = 0; i < 2; i++) {
61d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    s1 = s;
62d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    s2 = s + pitch;
63d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    s3 = s2 + pitch;
64d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    s4 = s3 + pitch;
65d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    s  = s4 + pitch;
66d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
67d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    __asm__ __volatile__ (
68d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p0],  -4(%[s1])    \n\t"
69d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p1],  -4(%[s2])    \n\t"
70d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p2],  -4(%[s3])    \n\t"
71d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p3],  -4(%[s4])    \n\t"
72d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p4],  -8(%[s1])    \n\t"
73d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p5],  -8(%[s2])    \n\t"
74d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p6],  -8(%[s3])    \n\t"
75d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[p7],  -8(%[s4])    \n\t"
76d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
77d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [p3] "=&r" (p3), [p2] "=&r" (p2), [p1] "=&r" (p1),
78d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [p0] "=&r" (p0), [p7] "=&r" (p7), [p6] "=&r" (p6),
79d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [p5] "=&r" (p5), [p4] "=&r" (p4)
80d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [s1] "r" (s1), [s2] "r" (s2), [s3] "r" (s3), [s4] "r" (s4)
81d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    );
82d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
83d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    __asm__ __volatile__ (
84d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q3],  (%[s1])     \n\t"
85d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q2],  (%[s2])     \n\t"
86d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q1],  (%[s3])     \n\t"
87d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q0],  (%[s4])     \n\t"
88d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q7],  +4(%[s1])   \n\t"
89d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q6],  +4(%[s2])   \n\t"
90d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q5],  +4(%[s3])   \n\t"
91d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "lw     %[q4],  +4(%[s4])   \n\t"
92d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
93d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [q3] "=&r" (q3), [q2] "=&r" (q2), [q1] "=&r" (q1),
94d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [q0] "=&r" (q0), [q7] "=&r" (q7), [q6] "=&r" (q6),
95d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [q5] "=&r" (q5), [q4] "=&r" (q4)
96d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [s1] "r" (s1), [s2] "r" (s2), [s3] "r" (s3), [s4] "r" (s4)
97d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    );
98d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
99d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    /* transpose p3, p2, p1, p0
100d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       original (when loaded from memory)
101d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register       -4    -3   -2     -1
102d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p0         p0_0  p0_1  p0_2  p0_3
103d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p1         p1_0  p1_1  p1_2  p1_3
104d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p2         p2_0  p2_1  p2_2  p2_3
105d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p3         p3_0  p3_1  p3_2  p3_3
106d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
107d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       after transpose
108d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register
109d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p0         p3_3  p2_3  p1_3  p0_3
110d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p1         p3_2  p2_2  p1_2  p0_2
111d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p2         p3_1  p2_1  p1_1  p0_1
112d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p3         p3_0  p2_0  p1_0  p0_0
113d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    */
114d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    __asm__ __volatile__ (
115d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim1],   %[p0],      %[p1]       \n\t"
116d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim2],   %[p0],      %[p1]       \n\t"
117d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim3],   %[p2],      %[p3]       \n\t"
118d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim4],   %[p2],      %[p3]       \n\t"
119d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
120d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[p1],      %[prim1],   %[prim2]    \n\t"
121d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[p3],      %[prim1],   %[prim2]    \n\t"
122d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[sec3],    %[prim3],   %[prim4]    \n\t"
123d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[sec4],    %[prim3],   %[prim4]    \n\t"
124d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
125d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[p0],      %[p1],      %[sec3]     \n\t"
126d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[p2],      %[p3],      %[sec4]     \n\t"
127d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[p1],      %[sec3],    16          \n\t"
128d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[p3],      %[sec4],    16          \n\t"
129d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
130d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [prim1] "=&r" (prim1), [prim2] "=&r" (prim2),
131d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [prim3] "=&r" (prim3), [prim4] "=&r" (prim4),
132d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [p0] "+r" (p0), [p1] "+r" (p1), [p2] "+r" (p2), [p3] "+r" (p3),
133d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [sec3] "=&r" (sec3), [sec4] "=&r" (sec4)
134d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        :
135d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    );
136d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
137d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    /* transpose q0, q1, q2, q3
138d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       original (when loaded from memory)
139d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register       +1    +2    +3    +4
140d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q3         q3_0  q3_1  q3_2  q3_3
141d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q2         q2_0  q2_1  q2_2  q2_3
142d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q1         q1_0  q1_1  q1_2  q1_3
143d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q0         q0_0  q0_1  q0_2  q0_3
144d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
145d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       after transpose
146d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register
147d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q3         q0_3  q1_3  q2_3  q3_3
148d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q2         q0_2  q1_2  q2_2  q3_2
149d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q1         q0_1  q1_1  q2_1  q3_1
150d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q0         q0_0  q1_0  q2_0  q3_0
151d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    */
152d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    __asm__ __volatile__ (
153d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim1],   %[q3],      %[q2]       \n\t"
154d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim2],   %[q3],      %[q2]       \n\t"
155d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim3],   %[q1],      %[q0]       \n\t"
156d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim4],   %[q1],      %[q0]       \n\t"
157d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
158d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[q2],      %[prim1],   %[prim2]    \n\t"
159d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[q0],      %[prim1],   %[prim2]    \n\t"
160d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[sec3],    %[prim3],   %[prim4]    \n\t"
161d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[sec4],    %[prim3],   %[prim4]    \n\t"
162d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
163d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[q3],      %[q2],      %[sec3]     \n\t"
164d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[q1],      %[q0],      %[sec4]     \n\t"
165d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[q2],      %[sec3],    16          \n\t"
166d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[q0],      %[sec4],    16          \n\t"
167d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
168d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [prim1] "=&r" (prim1), [prim2] "=&r" (prim2),
169d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [prim3] "=&r" (prim3), [prim4] "=&r" (prim4),
170d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [q3] "+r" (q3), [q2] "+r" (q2), [q1] "+r" (q1), [q0] "+r" (q0),
171d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [sec3] "=&r" (sec3), [sec4] "=&r" (sec4)
172d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        :
173d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    );
174d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
175d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    /* transpose p7, p6, p5, p4
176d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       original (when loaded from memory)
177d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register      -8    -7   -6     -5
178d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p4         p4_0  p4_1  p4_2  p4_3
179d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p5         p5_0  p5_1  p5_2  p5_3
180d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p6         p6_0  p6_1  p6_2  p6_3
181d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p7         p7_0  p7_1  p7_2  p7_3
182d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
183d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       after transpose
184d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register
185d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p4         p7_3  p6_3  p5_3  p4_3
186d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p5         p7_2  p6_2  p5_2  p4_2
187d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p6         p7_1  p6_1  p5_1  p4_1
188d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         p7         p7_0  p6_0  p5_0  p4_0
189d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    */
190d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    __asm__ __volatile__ (
191d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim1],   %[p4],      %[p5]       \n\t"
192d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim2],   %[p4],      %[p5]       \n\t"
193d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim3],   %[p6],      %[p7]       \n\t"
194d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim4],   %[p6],      %[p7]       \n\t"
195d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
196d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[p5],      %[prim1],   %[prim2]    \n\t"
197d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[p7],      %[prim1],   %[prim2]    \n\t"
198d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[sec3],    %[prim3],   %[prim4]    \n\t"
199d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[sec4],    %[prim3],   %[prim4]    \n\t"
200d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
201d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[p4],      %[p5],      %[sec3]     \n\t"
202d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[p6],      %[p7],      %[sec4]     \n\t"
203d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[p5],      %[sec3],    16          \n\t"
204d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[p7],      %[sec4],    16          \n\t"
205d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
206d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [prim1] "=&r" (prim1), [prim2] "=&r" (prim2),
207d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [prim3] "=&r" (prim3), [prim4] "=&r" (prim4),
208d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [p4] "+r" (p4), [p5] "+r" (p5), [p6] "+r" (p6), [p7] "+r" (p7),
209d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [sec3] "=&r" (sec3), [sec4] "=&r" (sec4)
210d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        :
211d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    );
212d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
213d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    /* transpose q4, q5, q6, q7
214d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       original (when loaded from memory)
215d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register      +5    +6    +7    +8
216d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q7         q7_0  q7_1  q7_2  q7_3
217d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q6         q6_0  q6_1  q6_2  q6_3
218d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q5         q5_0  q5_1  q5_2  q5_3
219d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q4         q4_0  q4_1  q4_2  q4_3
220d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
221d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       after transpose
222d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org       register
223d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q7         q4_3  q5_3  q26_3  q7_3
224d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q6         q4_2  q5_2  q26_2  q7_2
225d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q5         q4_1  q5_1  q26_1  q7_1
226d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org         q4         q4_0  q5_0  q26_0  q7_0
227d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    */
228d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    __asm__ __volatile__ (
229d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim1],   %[q7],      %[q6]       \n\t"
230d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim2],   %[q7],      %[q6]       \n\t"
231d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[prim3],   %[q5],      %[q4]       \n\t"
232d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[prim4],   %[q5],      %[q4]       \n\t"
233d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
234d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[q6],      %[prim1],   %[prim2]    \n\t"
235d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[q4],      %[prim1],   %[prim2]    \n\t"
236d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.qb.ph   %[sec3],    %[prim3],   %[prim4]    \n\t"
237d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precr.qb.ph    %[sec4],    %[prim3],   %[prim4]    \n\t"
238d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
239d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[q7],      %[q6],      %[sec3]     \n\t"
240d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "precrq.ph.w    %[q5],      %[q4],      %[sec4]     \n\t"
241d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[q6],      %[sec3],    16          \n\t"
242d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        "append         %[q4],      %[sec4],    16          \n\t"
243d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
244d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        : [prim1] "=&r" (prim1), [prim2] "=&r" (prim2),
245d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [prim3] "=&r" (prim3), [prim4] "=&r" (prim4),
246d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [q7] "+r" (q7), [q6] "+r" (q6), [q5] "+r" (q5), [q4] "+r" (q4),
247d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          [sec3] "=&r" (sec3), [sec4] "=&r" (sec4)
248d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        :
249d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    );
250d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
251d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    vp9_filter_hev_mask_flatmask4_dspr2(limit_vec, flimit_vec, thresh_vec,
252d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                                        p1, p0, p3, p2, q0, q1, q2, q3,
253d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                                        &hev, &mask, &flat);
254d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
255d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    vp9_flatmask5(p7, p6, p5, p4, p0, q0, q4, q5, q6, q7, &flat2);
256d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
257d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    /* f0 */
258d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    if (((flat2 == 0) && (flat == 0) && (mask != 0)) ||
259d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        ((flat2 != 0) && (flat == 0) && (mask != 0))) {
260d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_filter1_dspr2(mask, hev, p1, p0, q0, q1,
261d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                        &p1_f0, &p0_f0, &q0_f0, &q1_f0);
262d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      STORE_F0()
263d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    } else if ((flat2 == 0XFFFFFFFF) && (flat == 0xFFFFFFFF) &&
264d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org               (mask == 0xFFFFFFFF)) {
265d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      /* f2 */
266d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_LEFT_0TO3()
267d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_LEFT_4TO7()
268d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_wide_mbfilter_dspr2(&p7_l, &p6_l, &p5_l, &p4_l,
269d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &p3_l, &p2_l, &p1_l, &p0_l,
270d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q0_l, &q1_l, &q2_l, &q3_l,
271d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q4_l, &q5_l, &q6_l, &q7_l);
272d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
273d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_RIGHT_0TO3()
274d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_RIGHT_4TO7()
275d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_wide_mbfilter_dspr2(&p7_r, &p6_r, &p5_r, &p4_r,
276d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &p3_r, &p2_r, &p1_r, &p0_r,
277d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q0_r, &q1_r, &q2_r, &q3_r,
278d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q4_r, &q5_r, &q6_r, &q7_r);
279d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
280d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      STORE_F2()
281d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    } else if ((flat2 == 0) && (flat == 0xFFFFFFFF) && (mask == 0xFFFFFFFF)) {
282d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      /* f1 */
283d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_LEFT_0TO3()
284d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_mbfilter_dspr2(&p3_l, &p2_l, &p1_l, &p0_l,
285d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         &q0_l, &q1_l, &q2_l, &q3_l);
286d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
287d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_RIGHT_0TO3()
288d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_mbfilter_dspr2(&p3_r, &p2_r, &p1_r, &p0_r,
289d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         &q0_r, &q1_r, &q2_r, &q3_r);
290d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
291d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      STORE_F1()
292d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    } else if ((flat2 == 0) && (flat != 0) && (mask != 0)) {
293d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      /* f0 + f1 */
294d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_filter1_dspr2(mask, hev, p1, p0, q0, q1,
295d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                        &p1_f0, &p0_f0, &q0_f0, &q1_f0);
296d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
297d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      /* left 2 element operation */
298d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_LEFT_0TO3()
299d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_mbfilter_dspr2(&p3_l, &p2_l, &p1_l, &p0_l,
300d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         &q0_l, &q1_l, &q2_l, &q3_l);
301d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
302d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      /* right 2 element operation */
303d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_RIGHT_0TO3()
304d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_mbfilter_dspr2(&p3_r, &p2_r, &p1_r, &p0_r,
305d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         &q0_r, &q1_r, &q2_r, &q3_r);
306d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
307d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & 0x000000FF) {
308d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
309d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_r],    -3(%[s4])    \n\t"
310d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_r],    -2(%[s4])    \n\t"
311d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_r],    -1(%[s4])    \n\t"
312d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_r],      (%[s4])    \n\t"
313d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_r],    +1(%[s4])    \n\t"
314d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_r],    +2(%[s4])    \n\t"
315d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
316d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
317d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_r] "r" (p2_r), [p1_r] "r" (p1_r), [p0_r] "r" (p0_r),
318d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_r] "r" (q0_r), [q1_r] "r" (q1_r), [q2_r] "r" (q2_r),
319d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s4] "r" (s4)
320d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
321d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0x000000FF) {
322d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
323d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb         %[p1_f0],  -2(%[s4])    \n\t"
324d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb         %[p0_f0],  -1(%[s4])    \n\t"
325d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb         %[q0_f0],    (%[s4])    \n\t"
326d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb         %[q1_f0],  +1(%[s4])    \n\t"
327d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
328d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
329d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
330d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
331d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s4] "r" (s4)
332d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
333d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
334d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
335d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
336d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p2_r],    %[p2_r],    16      \n\t"
337d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_r],    %[p1_r],    16      \n\t"
338d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_r],    %[p0_r],    16      \n\t"
339d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_r],    %[q0_r],    16      \n\t"
340d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_r],    %[q1_r],    16      \n\t"
341d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q2_r],    %[q2_r],    16      \n\t"
342d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_f0],   %[p1_f0],   8       \n\t"
343d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_f0],   %[p0_f0],   8       \n\t"
344d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_f0],   %[q0_f0],   8       \n\t"
345d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_f0],   %[q1_f0],   8       \n\t"
346d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
347d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p2_r] "+r" (p2_r), [p1_r] "+r" (p1_r), [p0_r] "+r" (p0_r),
348d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_r] "+r" (q0_r), [q1_r] "+r" (q1_r), [q2_r] "+r" (q2_r),
349d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p1_f0] "+r" (p1_f0), [p0_f0] "+r" (p0_f0),
350d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_f0] "+r" (q0_f0), [q1_f0] "+r" (q1_f0)
351d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
352d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
353d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
354d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & 0x0000FF00) {
355d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
356d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_r],    -3(%[s3])    \n\t"
357d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_r],    -2(%[s3])    \n\t"
358d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_r],    -1(%[s3])    \n\t"
359d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_r],      (%[s3])    \n\t"
360d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_r],    +1(%[s3])    \n\t"
361d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_r],    +2(%[s3])    \n\t"
362d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
363d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
364d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_r] "r" (p2_r), [p1_r] "r" (p1_r), [p0_r] "r" (p0_r),
365d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_r] "r" (q0_r), [q1_r] "r" (q1_r), [q2_r] "r" (q2_r),
366d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s3] "r" (s3)
367d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
368d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0x0000FF00) {
369d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
370d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s3])    \n\t"
371d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s3])    \n\t"
372d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s3])    \n\t"
373d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s3])    \n\t"
374d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
375d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
376d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
377d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
378d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s3] "r" (s3)
379d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
380d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
381d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
382d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
383d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_f0],   %[p1_f0],   8     \n\t"
384d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_f0],   %[p0_f0],   8     \n\t"
385d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_f0],   %[q0_f0],   8     \n\t"
386d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_f0],   %[q1_f0],   8     \n\t"
387d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
388d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p1_f0] "+r" (p1_f0), [p0_f0] "+r" (p0_f0),
389d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_f0] "+r" (q0_f0), [q1_f0] "+r" (q1_f0)
390d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
391d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
392d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
393d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & 0x00FF0000) {
394d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
395d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "sb       %[p2_l],    -3(%[s2])    \n\t"
396d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "sb       %[p1_l],    -2(%[s2])    \n\t"
397d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "sb       %[p0_l],    -1(%[s2])    \n\t"
398d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "sb       %[q0_l],      (%[s2])    \n\t"
399d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "sb       %[q1_l],    +1(%[s2])    \n\t"
400d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "sb       %[q2_l],    +2(%[s2])    \n\t"
401d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
402d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
403d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p2_l] "r" (p2_l), [p1_l] "r" (p1_l), [p0_l] "r" (p0_l),
404d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_l] "r" (q0_l), [q1_l] "r" (q1_l), [q2_l] "r" (q2_l),
405d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [s2] "r" (s2)
406d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
407d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0x00FF0000) {
408d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
409d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s2])    \n\t"
410d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s2])    \n\t"
411d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s2])    \n\t"
412d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s2])    \n\t"
413d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
414d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
415d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
416d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
417d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s2] "r" (s2)
418d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
419d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
420d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
421d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
422d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p2_l],    %[p2_l],    16      \n\t"
423d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_l],    %[p1_l],    16      \n\t"
424d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_l],    %[p0_l],    16      \n\t"
425d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_l],    %[q0_l],    16      \n\t"
426d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_l],    %[q1_l],    16      \n\t"
427d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q2_l],    %[q2_l],    16      \n\t"
428d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_f0],   %[p1_f0],   8       \n\t"
429d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_f0],   %[p0_f0],   8       \n\t"
430d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_f0],   %[q0_f0],   8       \n\t"
431d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_f0],   %[q1_f0],   8       \n\t"
432d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
433d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p2_l] "+r" (p2_l), [p1_l] "+r" (p1_l), [p0_l] "+r" (p0_l),
434d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_l] "+r" (q0_l), [q1_l] "+r" (q1_l), [q2_l] "+r" (q2_l),
435d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p1_f0] "+r" (p1_f0), [p0_f0] "+r" (p0_f0),
436d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_f0] "+r" (q0_f0), [q1_f0] "+r" (q1_f0)
437d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
438d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
439d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
440d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & 0xFF000000) {
441d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
442d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_l],    -3(%[s1])    \n\t"
443d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_l],    -2(%[s1])    \n\t"
444d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_l],    -1(%[s1])    \n\t"
445d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_l],      (%[s1])    \n\t"
446d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_l],    +1(%[s1])    \n\t"
447d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_l],    +2(%[s1])    \n\t"
448d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
449d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
450d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_l] "r" (p2_l), [p1_l] "r" (p1_l), [p0_l] "r" (p0_l),
451d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_l] "r" (q0_l), [q1_l] "r" (q1_l), [q2_l] "r" (q2_l),
452d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s1] "r" (s1)
453d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
454d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0xFF000000) {
455d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
456d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s1])    \n\t"
457d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s1])    \n\t"
458d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s1])    \n\t"
459d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s1])    \n\t"
460d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
461d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
462d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
463d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
464d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s1] "r" (s1)
465d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
466d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
467d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    } else if ((flat2 != 0) && (flat != 0) && (mask != 0)) {
468d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      /* f0+f1+f2 */
469d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_filter1_dspr2(mask, hev, p1, p0, q0, q1,
470d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                        &p1_f0, &p0_f0, &q0_f0, &q1_f0);
471d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
472d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_LEFT_0TO3()
473d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_mbfilter1_dspr2(p3_l, p2_l, p1_l, p0_l,
474d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                          q0_l, q1_l, q2_l, q3_l,
475d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                          &p2_l_f1, &p1_l_f1, &p0_l_f1,
476d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                          &q0_l_f1, &q1_l_f1, &q2_l_f1);
477d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
478d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_RIGHT_0TO3()
479d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_mbfilter1_dspr2(p3_r, p2_r, p1_r, p0_r,
480d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                          q0_r, q1_r, q2_r, q3_r,
481d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                          &p2_r_f1, &p1_r_f1, &p0_r_f1,
482d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                          &q0_r_f1, &q1_r_f1, &q2_r_f1);
483d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
484d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_LEFT_4TO7()
485d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_wide_mbfilter_dspr2(&p7_l, &p6_l, &p5_l, &p4_l,
486d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &p3_l, &p2_l, &p1_l, &p0_l,
487d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q0_l, &q1_l, &q2_l, &q3_l,
488d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q4_l, &q5_l, &q6_l, &q7_l);
489d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
490d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      PACK_RIGHT_4TO7()
491d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      vp9_wide_mbfilter_dspr2(&p7_r, &p6_r, &p5_r, &p4_r,
492d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &p3_r, &p2_r, &p1_r, &p0_r,
493d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q0_r, &q1_r, &q2_r, &q3_r,
494d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                              &q4_r, &q5_r, &q6_r, &q7_r);
495d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
496d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & flat2 & 0x000000FF) {
497d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
498d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p6_r],    -7(%[s4])    \n\t"
499d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p5_r],    -6(%[s4])    \n\t"
500d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p4_r],    -5(%[s4])    \n\t"
501d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p3_r],    -4(%[s4])    \n\t"
502d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_r],    -3(%[s4])    \n\t"
503d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_r],    -2(%[s4])    \n\t"
504d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_r],    -1(%[s4])    \n\t"
505d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
506d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
507d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p6_r] "r" (p6_r), [p5_r] "r" (p5_r),
508d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p4_r] "r" (p4_r), [p3_r] "r" (p3_r),
509d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p2_r] "r" (p2_r), [p1_r] "r" (p1_r),
510d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_r] "r" (p0_r), [s4] "r" (s4)
511d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
512d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
513d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
514d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_r],      (%[s4])    \n\t"
515d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_r],    +1(%[s4])    \n\t"
516d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_r],    +2(%[s4])    \n\t"
517d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q3_r],    +3(%[s4])    \n\t"
518d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q4_r],    +4(%[s4])    \n\t"
519d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q5_r],    +5(%[s4])    \n\t"
520d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q6_r],    +6(%[s4])    \n\t"
521d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
522d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
523d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [q0_r] "r" (q0_r), [q1_r] "r" (q1_r),
524d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q2_r] "r" (q2_r), [q3_r] "r" (q3_r),
525d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q4_r] "r" (q4_r), [q5_r] "r" (q5_r),
526d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q6_r] "r" (q6_r), [s4] "r" (s4)
527d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
528d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & flat & 0x000000FF) {
529d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
530d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_r_f1],     -3(%[s4])    \n\t"
531d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_r_f1],     -2(%[s4])    \n\t"
532d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_r_f1],     -1(%[s4])    \n\t"
533d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_r_f1],       (%[s4])    \n\t"
534d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_r_f1],     +1(%[s4])    \n\t"
535d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_r_f1],     +2(%[s4])    \n\t"
536d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
537d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
538d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_r_f1] "r" (p2_r_f1), [p1_r_f1] "r" (p1_r_f1),
539d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_r_f1] "r" (p0_r_f1), [q0_r_f1] "r" (q0_r_f1),
540d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q1_r_f1] "r" (q1_r_f1), [q2_r_f1] "r" (q2_r_f1),
541d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s4] "r" (s4)
542d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
543d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0x000000FF) {
544d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
545d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s4])    \n\t"
546d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s4])    \n\t"
547d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s4])    \n\t"
548d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s4])    \n\t"
549d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
550d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
551d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
552d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
553d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s4] "r" (s4)
554d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
555d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
556d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
557d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
558d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p6_r],        %[p6_r],        16     \n\t"
559d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p5_r],        %[p5_r],        16     \n\t"
560d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p4_r],        %[p4_r],        16     \n\t"
561d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p3_r],        %[p3_r],        16     \n\t"
562d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p2_r],        %[p2_r],        16     \n\t"
563d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_r],        %[p1_r],        16     \n\t"
564d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_r],        %[p0_r],        16     \n\t"
565d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_r],        %[q0_r],        16     \n\t"
566d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_r],        %[q1_r],        16     \n\t"
567d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q2_r],        %[q2_r],        16     \n\t"
568d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q3_r],        %[q3_r],        16     \n\t"
569d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q4_r],        %[q4_r],        16     \n\t"
570d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q5_r],        %[q5_r],        16     \n\t"
571d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q6_r],        %[q6_r],        16     \n\t"
572d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
573d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [q0_r] "+r" (q0_r), [q1_r] "+r" (q1_r),
574d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q2_r] "+r" (q2_r), [q3_r] "+r" (q3_r),
575d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q4_r] "+r" (q4_r), [q5_r] "+r" (q5_r),
576d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q6_r] "+r" (q6_r), [p6_r] "+r" (p6_r),
577d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p5_r] "+r" (p5_r), [p4_r] "+r" (p4_r),
578d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p3_r] "+r" (p3_r), [p2_r] "+r" (p2_r),
579d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p1_r] "+r" (p1_r), [p0_r] "+r" (p0_r)
580d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
581d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
582d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
583d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
584d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p2_r_f1],     %[p2_r_f1],     16      \n\t"
585d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_r_f1],     %[p1_r_f1],     16      \n\t"
586d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_r_f1],     %[p0_r_f1],     16      \n\t"
587d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_r_f1],     %[q0_r_f1],     16      \n\t"
588d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_r_f1],     %[q1_r_f1],     16      \n\t"
589d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q2_r_f1],     %[q2_r_f1],     16      \n\t"
590d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_f0],       %[p1_f0],       8       \n\t"
591d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_f0],       %[p0_f0],       8       \n\t"
592d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_f0],       %[q0_f0],       8       \n\t"
593d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_f0],       %[q1_f0],       8       \n\t"
594d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
595d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p2_r_f1] "+r" (p2_r_f1), [p1_r_f1] "+r" (p1_r_f1),
596d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p0_r_f1] "+r" (p0_r_f1), [q0_r_f1] "+r" (q0_r_f1),
597d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q1_r_f1] "+r" (q1_r_f1), [q2_r_f1] "+r" (q2_r_f1),
598d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p1_f0] "+r" (p1_f0), [p0_f0] "+r" (p0_f0),
599d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_f0] "+r" (q0_f0), [q1_f0] "+r" (q1_f0)
600d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
601d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
602d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
603d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & flat2 & 0x0000FF00) {
604d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
605d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p6_r],    -7(%[s3])    \n\t"
606d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p5_r],    -6(%[s3])    \n\t"
607d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p4_r],    -5(%[s3])    \n\t"
608d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p3_r],    -4(%[s3])    \n\t"
609d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_r],    -3(%[s3])    \n\t"
610d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_r],    -2(%[s3])    \n\t"
611d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_r],    -1(%[s3])    \n\t"
612d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
613d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
614d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p6_r] "r" (p6_r), [p5_r] "r" (p5_r), [p4_r] "r" (p4_r),
615d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p3_r] "r" (p3_r), [p2_r] "r" (p2_r), [p1_r] "r" (p1_r),
616d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_r] "r" (p0_r), [s3] "r" (s3)
617d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
618d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
619d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
620d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_r],      (%[s3])    \n\t"
621d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_r],    +1(%[s3])    \n\t"
622d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_r],    +2(%[s3])    \n\t"
623d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q3_r],    +3(%[s3])    \n\t"
624d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q4_r],    +4(%[s3])    \n\t"
625d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q5_r],    +5(%[s3])    \n\t"
626d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q6_r],    +6(%[s3])    \n\t"
627d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
628d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
629d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [q0_r] "r" (q0_r), [q1_r] "r" (q1_r),
630d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q2_r] "r" (q2_r), [q3_r] "r" (q3_r),
631d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q4_r] "r" (q4_r), [q5_r] "r" (q5_r),
632d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q6_r] "r" (q6_r), [s3] "r" (s3)
633d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
634d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & flat & 0x0000FF00) {
635d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
636d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_r_f1],     -3(%[s3])    \n\t"
637d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_r_f1],     -2(%[s3])    \n\t"
638d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_r_f1],     -1(%[s3])    \n\t"
639d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_r_f1],       (%[s3])    \n\t"
640d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_r_f1],     +1(%[s3])    \n\t"
641d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_r_f1],     +2(%[s3])    \n\t"
642d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
643d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
644d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_r_f1] "r" (p2_r_f1), [p1_r_f1] "r" (p1_r_f1),
645d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_r_f1] "r" (p0_r_f1), [q0_r_f1] "r" (q0_r_f1),
646d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q1_r_f1] "r" (q1_r_f1), [q2_r_f1] "r" (q2_r_f1),
647d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s3] "r" (s3)
648d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
649d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0x0000FF00) {
650d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
651d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s3])    \n\t"
652d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s3])    \n\t"
653d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s3])    \n\t"
654d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s3])    \n\t"
655d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
656d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
657d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
658d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
659d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s3] "r" (s3)
660d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
661d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
662d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
663d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
664d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_f0],   %[p1_f0],   8     \n\t"
665d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_f0],   %[p0_f0],   8     \n\t"
666d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_f0],   %[q0_f0],   8     \n\t"
667d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_f0],   %[q1_f0],   8     \n\t"
668d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
669d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p1_f0] "+r" (p1_f0), [p0_f0] "+r" (p0_f0),
670d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_f0] "+r" (q0_f0), [q1_f0] "+r" (q1_f0)
671d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
672d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
673d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
674d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & flat2 & 0x00FF0000) {
675d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
676d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p6_l],    -7(%[s2])    \n\t"
677d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p5_l],    -6(%[s2])    \n\t"
678d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p4_l],    -5(%[s2])    \n\t"
679d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p3_l],    -4(%[s2])    \n\t"
680d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_l],    -3(%[s2])    \n\t"
681d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_l],    -2(%[s2])    \n\t"
682d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_l],    -1(%[s2])    \n\t"
683d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
684d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
685d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p6_l] "r" (p6_l), [p5_l] "r" (p5_l), [p4_l] "r" (p4_l),
686d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p3_l] "r" (p3_l), [p2_l] "r" (p2_l), [p1_l] "r" (p1_l),
687d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_l] "r" (p0_l), [s2] "r" (s2)
688d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
689d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
690d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
691d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_l],      (%[s2])    \n\t"
692d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_l],    +1(%[s2])    \n\t"
693d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_l],    +2(%[s2])    \n\t"
694d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q3_l],    +3(%[s2])    \n\t"
695d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q4_l],    +4(%[s2])    \n\t"
696d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q5_l],    +5(%[s2])    \n\t"
697d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q6_l],    +6(%[s2])    \n\t"
698d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
699d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
700d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [q0_l] "r" (q0_l), [q1_l] "r" (q1_l), [q2_l] "r" (q2_l),
701d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q3_l] "r" (q3_l), [q4_l] "r" (q4_l), [q5_l] "r" (q5_l),
702d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q6_l] "r" (q6_l), [s2] "r" (s2)
703d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
704d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & flat & 0x00FF0000) {
705d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
706d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_l_f1],     -3(%[s2])    \n\t"
707d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_l_f1],     -2(%[s2])    \n\t"
708d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_l_f1],     -1(%[s2])    \n\t"
709d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_l_f1],       (%[s2])    \n\t"
710d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_l_f1],     +1(%[s2])    \n\t"
711d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_l_f1],     +2(%[s2])    \n\t"
712d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
713d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
714d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_l_f1] "r" (p2_l_f1), [p1_l_f1] "r" (p1_l_f1),
715d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_l_f1] "r" (p0_l_f1), [q0_l_f1] "r" (q0_l_f1),
716d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q1_l_f1] "r" (q1_l_f1), [q2_l_f1] "r" (q2_l_f1),
717d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s2] "r" (s2)
718d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
719d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0x00FF0000) {
720d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
721d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s2])    \n\t"
722d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s2])    \n\t"
723d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s2])    \n\t"
724d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s2])    \n\t"
725d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
726d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
727d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
728d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
729d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s2] "r" (s2)
730d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
731d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
732d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
733d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
734d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p6_l],        %[p6_l],        16     \n\t"
735d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p5_l],        %[p5_l],        16     \n\t"
736d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p4_l],        %[p4_l],        16     \n\t"
737d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p3_l],        %[p3_l],        16     \n\t"
738d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p2_l],        %[p2_l],        16     \n\t"
739d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_l],        %[p1_l],        16     \n\t"
740d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_l],        %[p0_l],        16     \n\t"
741d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_l],        %[q0_l],        16     \n\t"
742d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_l],        %[q1_l],        16     \n\t"
743d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q2_l],        %[q2_l],        16     \n\t"
744d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q3_l],        %[q3_l],        16     \n\t"
745d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q4_l],        %[q4_l],        16     \n\t"
746d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q5_l],        %[q5_l],        16     \n\t"
747d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q6_l],        %[q6_l],        16     \n\t"
748d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
749d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [q0_l] "+r" (q0_l), [q1_l] "+r" (q1_l), [q2_l] "+r" (q2_l),
750d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q3_l] "+r" (q3_l), [q4_l] "+r" (q4_l), [q5_l] "+r" (q5_l),
751d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q6_l] "+r" (q6_l), [p6_l] "+r" (p6_l), [p5_l] "+r" (p5_l),
752d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p4_l] "+r" (p4_l), [p3_l] "+r" (p3_l), [p2_l] "+r" (p2_l),
753d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p1_l] "+r" (p1_l), [p0_l] "+r" (p0_l)
754d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
755d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
756d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
757d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      __asm__ __volatile__ (
758d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p2_l_f1],     %[p2_l_f1],     16      \n\t"
759d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_l_f1],     %[p1_l_f1],     16      \n\t"
760d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_l_f1],     %[p0_l_f1],     16      \n\t"
761d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_l_f1],     %[q0_l_f1],     16      \n\t"
762d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_l_f1],     %[q1_l_f1],     16      \n\t"
763d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q2_l_f1],     %[q2_l_f1],     16      \n\t"
764d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p1_f0],       %[p1_f0],       8       \n\t"
765d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[p0_f0],       %[p0_f0],       8       \n\t"
766d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q0_f0],       %[q0_f0],       8       \n\t"
767d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          "srl      %[q1_f0],       %[q1_f0],       8       \n\t"
768d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
769d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          : [p2_l_f1] "+r" (p2_l_f1), [p1_l_f1] "+r" (p1_l_f1),
770d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p0_l_f1] "+r" (p0_l_f1), [q0_l_f1] "+r" (q0_l_f1),
771d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q1_l_f1] "+r" (q1_l_f1), [q2_l_f1] "+r" (q2_l_f1),
772d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [p1_f0] "+r" (p1_f0), [p0_f0] "+r" (p0_f0),
773d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            [q0_f0] "+r" (q0_f0), [q1_f0] "+r" (q1_f0)
774d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org          :
775d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      );
776d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
777d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      if (mask & flat & flat2 & 0xFF000000) {
778d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
779d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p6_l],    -7(%[s1])    \n\t"
780d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p5_l],    -6(%[s1])    \n\t"
781d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p4_l],    -5(%[s1])    \n\t"
782d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p3_l],    -4(%[s1])    \n\t"
783d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_l],    -3(%[s1])    \n\t"
784d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_l],    -2(%[s1])    \n\t"
785d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_l],    -1(%[s1])    \n\t"
786d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
787d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
788d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p6_l] "r" (p6_l), [p5_l] "r" (p5_l), [p4_l] "r" (p4_l),
789d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p3_l] "r" (p3_l), [p2_l] "r" (p2_l), [p1_l] "r" (p1_l),
790d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_l] "r" (p0_l),
791d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s1] "r" (s1)
792d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
793d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
794d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
795d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_l],     (%[s1])    \n\t"
796d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_l],    1(%[s1])    \n\t"
797d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_l],    2(%[s1])    \n\t"
798d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q3_l],    3(%[s1])    \n\t"
799d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q4_l],    4(%[s1])    \n\t"
800d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q5_l],    5(%[s1])    \n\t"
801d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q6_l],    6(%[s1])    \n\t"
802d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
803d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
804d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [q0_l] "r" (q0_l), [q1_l] "r" (q1_l), [q2_l] "r" (q2_l),
805d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q3_l] "r" (q3_l), [q4_l] "r" (q4_l), [q5_l] "r" (q5_l),
806d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q6_l] "r" (q6_l),
807d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s1] "r" (s1)
808d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
809d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & flat & 0xFF000000) {
810d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
811d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p2_l_f1],     -3(%[s1])    \n\t"
812d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_l_f1],     -2(%[s1])    \n\t"
813d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_l_f1],     -1(%[s1])    \n\t"
814d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_l_f1],       (%[s1])    \n\t"
815d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_l_f1],     +1(%[s1])    \n\t"
816d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q2_l_f1],     +2(%[s1])    \n\t"
817d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
818d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
819d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p2_l_f1] "r" (p2_l_f1), [p1_l_f1] "r" (p1_l_f1),
820d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [p0_l_f1] "r" (p0_l_f1), [q0_l_f1] "r" (q0_l_f1),
821d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q1_l_f1] "r" (q1_l_f1), [q2_l_f1] "r" (q2_l_f1),
822d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s1] "r" (s1)
823d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
824d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      } else if (mask & 0xFF000000) {
825d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        __asm__ __volatile__ (
826d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p1_f0],   -2(%[s1])    \n\t"
827d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[p0_f0],   -1(%[s1])    \n\t"
828d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q0_f0],     (%[s1])    \n\t"
829d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            "sb     %[q1_f0],   +1(%[s1])    \n\t"
830d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
831d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            :
832d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            : [p1_f0] "r" (p1_f0), [p0_f0] "r" (p0_f0),
833d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [q0_f0] "r" (q0_f0), [q1_f0] "r" (q1_f0),
834d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org              [s1] "r" (s1)
835d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org        );
836d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org      }
837d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org    }
838d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  }
839d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org}
840d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#endif  // #if HAVE_DSPR2
841