xref: /aosp_15_r20/external/libaom/av1/common/scan.c (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
1 /*
2  * Copyright (c) 2016, Alliance for Open Media. All rights reserved.
3  *
4  * This source code is subject to the terms of the BSD 2 Clause License and
5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6  * was not distributed with this source code in the LICENSE file, you can
7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8  * Media Patent License 1.0 was not distributed with this source code in the
9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10  */
11 
12 #include <assert.h>
13 
14 #include "av1/common/common_data.h"
15 #include "av1/common/scan.h"
16 
17 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x4[16]) = {
18   0, 4, 1, 2, 5, 8, 12, 9, 6, 3, 7, 10, 13, 14, 11, 15,
19 };
20 
21 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x4[16]) = {
22   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
23 };
24 
25 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x4[16]) = {
26   0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15,
27 };
28 
29 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x8[32]) = {
30   0,  8, 1,  16, 9,  2, 24, 17, 10, 3, 25, 18, 11, 4,  26, 19,
31   12, 5, 27, 20, 13, 6, 28, 21, 14, 7, 29, 22, 15, 30, 23, 31,
32 };
33 
34 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x8[32]) = {
35   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
36   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
37 };
38 
39 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x8[32]) = {
40   0, 8,  16, 24, 1, 9,  17, 25, 2, 10, 18, 26, 3, 11, 19, 27,
41   4, 12, 20, 28, 5, 13, 21, 29, 6, 14, 22, 30, 7, 15, 23, 31,
42 };
43 
44 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x4[32]) = {
45   0,  1,  4,  2,  5,  8,  3,  6,  9,  12, 7,  10, 13, 16, 11, 14,
46   17, 20, 15, 18, 21, 24, 19, 22, 25, 28, 23, 26, 29, 27, 30, 31,
47 };
48 
49 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x4[32]) = {
50   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
51   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
52 };
53 
54 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x4[32]) = {
55   0, 4, 8,  12, 16, 20, 24, 28, 1, 5, 9,  13, 17, 21, 25, 29,
56   2, 6, 10, 14, 18, 22, 26, 30, 3, 7, 11, 15, 19, 23, 27, 31,
57 };
58 
59 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x16[64]) = {
60   0,  16, 1,  32, 17, 2,  48, 33, 18, 3,  49, 34, 19, 4,  50, 35,
61   20, 5,  51, 36, 21, 6,  52, 37, 22, 7,  53, 38, 23, 8,  54, 39,
62   24, 9,  55, 40, 25, 10, 56, 41, 26, 11, 57, 42, 27, 12, 58, 43,
63   28, 13, 59, 44, 29, 14, 60, 45, 30, 15, 61, 46, 31, 62, 47, 63,
64 };
65 
66 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x4[64]) = {
67   0,  1,  4,  2,  5,  8,  3,  6,  9,  12, 7,  10, 13, 16, 11, 14,
68   17, 20, 15, 18, 21, 24, 19, 22, 25, 28, 23, 26, 29, 32, 27, 30,
69   33, 36, 31, 34, 37, 40, 35, 38, 41, 44, 39, 42, 45, 48, 43, 46,
70   49, 52, 47, 50, 53, 56, 51, 54, 57, 60, 55, 58, 61, 59, 62, 63,
71 };
72 
73 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x16[64]) = {
74   0,  16, 32, 48, 1,  17, 33, 49, 2,  18, 34, 50, 3,  19, 35, 51,
75   4,  20, 36, 52, 5,  21, 37, 53, 6,  22, 38, 54, 7,  23, 39, 55,
76   8,  24, 40, 56, 9,  25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
77   12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63,
78 };
79 
80 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x4[64]) = {
81   0, 4, 8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
82   1, 5, 9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61,
83   2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
84   3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
85 };
86 
87 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x16[64]) = {
88   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
89   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
90   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
91   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
92 };
93 
94 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x4[64]) = {
95   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
96   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
97   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
98   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
99 };
100 
101 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x32[256]) = {
102   0,   32,  1,   64,  33,  2,   96,  65,  34,  3,   128, 97,  66,  35,  4,
103   160, 129, 98,  67,  36,  5,   192, 161, 130, 99,  68,  37,  6,   224, 193,
104   162, 131, 100, 69,  38,  7,   225, 194, 163, 132, 101, 70,  39,  8,   226,
105   195, 164, 133, 102, 71,  40,  9,   227, 196, 165, 134, 103, 72,  41,  10,
106   228, 197, 166, 135, 104, 73,  42,  11,  229, 198, 167, 136, 105, 74,  43,
107   12,  230, 199, 168, 137, 106, 75,  44,  13,  231, 200, 169, 138, 107, 76,
108   45,  14,  232, 201, 170, 139, 108, 77,  46,  15,  233, 202, 171, 140, 109,
109   78,  47,  16,  234, 203, 172, 141, 110, 79,  48,  17,  235, 204, 173, 142,
110   111, 80,  49,  18,  236, 205, 174, 143, 112, 81,  50,  19,  237, 206, 175,
111   144, 113, 82,  51,  20,  238, 207, 176, 145, 114, 83,  52,  21,  239, 208,
112   177, 146, 115, 84,  53,  22,  240, 209, 178, 147, 116, 85,  54,  23,  241,
113   210, 179, 148, 117, 86,  55,  24,  242, 211, 180, 149, 118, 87,  56,  25,
114   243, 212, 181, 150, 119, 88,  57,  26,  244, 213, 182, 151, 120, 89,  58,
115   27,  245, 214, 183, 152, 121, 90,  59,  28,  246, 215, 184, 153, 122, 91,
116   60,  29,  247, 216, 185, 154, 123, 92,  61,  30,  248, 217, 186, 155, 124,
117   93,  62,  31,  249, 218, 187, 156, 125, 94,  63,  250, 219, 188, 157, 126,
118   95,  251, 220, 189, 158, 127, 252, 221, 190, 159, 253, 222, 191, 254, 223,
119   255,
120 };
121 
122 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x8[256]) = {
123   0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
124   5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
125   21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
126   30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
127   39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
128   96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
129   105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
130   114, 121, 128, 87,  94,  101, 108, 115, 122, 129, 136, 95,  102, 109, 116,
131   123, 130, 137, 144, 103, 110, 117, 124, 131, 138, 145, 152, 111, 118, 125,
132   132, 139, 146, 153, 160, 119, 126, 133, 140, 147, 154, 161, 168, 127, 134,
133   141, 148, 155, 162, 169, 176, 135, 142, 149, 156, 163, 170, 177, 184, 143,
134   150, 157, 164, 171, 178, 185, 192, 151, 158, 165, 172, 179, 186, 193, 200,
135   159, 166, 173, 180, 187, 194, 201, 208, 167, 174, 181, 188, 195, 202, 209,
136   216, 175, 182, 189, 196, 203, 210, 217, 224, 183, 190, 197, 204, 211, 218,
137   225, 232, 191, 198, 205, 212, 219, 226, 233, 240, 199, 206, 213, 220, 227,
138   234, 241, 248, 207, 214, 221, 228, 235, 242, 249, 215, 222, 229, 236, 243,
139   250, 223, 230, 237, 244, 251, 231, 238, 245, 252, 239, 246, 253, 247, 254,
140   255,
141 };
142 
143 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x32[256]) = {
144   0,  32, 64, 96,  128, 160, 192, 224, 1,  33, 65, 97,  129, 161, 193, 225,
145   2,  34, 66, 98,  130, 162, 194, 226, 3,  35, 67, 99,  131, 163, 195, 227,
146   4,  36, 68, 100, 132, 164, 196, 228, 5,  37, 69, 101, 133, 165, 197, 229,
147   6,  38, 70, 102, 134, 166, 198, 230, 7,  39, 71, 103, 135, 167, 199, 231,
148   8,  40, 72, 104, 136, 168, 200, 232, 9,  41, 73, 105, 137, 169, 201, 233,
149   10, 42, 74, 106, 138, 170, 202, 234, 11, 43, 75, 107, 139, 171, 203, 235,
150   12, 44, 76, 108, 140, 172, 204, 236, 13, 45, 77, 109, 141, 173, 205, 237,
151   14, 46, 78, 110, 142, 174, 206, 238, 15, 47, 79, 111, 143, 175, 207, 239,
152   16, 48, 80, 112, 144, 176, 208, 240, 17, 49, 81, 113, 145, 177, 209, 241,
153   18, 50, 82, 114, 146, 178, 210, 242, 19, 51, 83, 115, 147, 179, 211, 243,
154   20, 52, 84, 116, 148, 180, 212, 244, 21, 53, 85, 117, 149, 181, 213, 245,
155   22, 54, 86, 118, 150, 182, 214, 246, 23, 55, 87, 119, 151, 183, 215, 247,
156   24, 56, 88, 120, 152, 184, 216, 248, 25, 57, 89, 121, 153, 185, 217, 249,
157   26, 58, 90, 122, 154, 186, 218, 250, 27, 59, 91, 123, 155, 187, 219, 251,
158   28, 60, 92, 124, 156, 188, 220, 252, 29, 61, 93, 125, 157, 189, 221, 253,
159   30, 62, 94, 126, 158, 190, 222, 254, 31, 63, 95, 127, 159, 191, 223, 255,
160 };
161 
162 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x8[256]) = {
163   0,   8,   16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96,  104, 112,
164   120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232,
165   240, 248, 1,   9,   17,  25,  33,  41,  49,  57,  65,  73,  81,  89,  97,
166   105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193, 201, 209, 217,
167   225, 233, 241, 249, 2,   10,  18,  26,  34,  42,  50,  58,  66,  74,  82,
168   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
169   210, 218, 226, 234, 242, 250, 3,   11,  19,  27,  35,  43,  51,  59,  67,
170   75,  83,  91,  99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187,
171   195, 203, 211, 219, 227, 235, 243, 251, 4,   12,  20,  28,  36,  44,  52,
172   60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148, 156, 164, 172,
173   180, 188, 196, 204, 212, 220, 228, 236, 244, 252, 5,   13,  21,  29,  37,
174   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
175   165, 173, 181, 189, 197, 205, 213, 221, 229, 237, 245, 253, 6,   14,  22,
176   30,  38,  46,  54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142,
177   150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230, 238, 246, 254, 7,
178   15,  23,  31,  39,  47,  55,  63,  71,  79,  87,  95,  103, 111, 119, 127,
179   135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231, 239, 247,
180   255,
181 };
182 
183 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x32[256]) = {
184   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
185   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
186   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
187   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
188   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
189   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
190   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
191   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
192   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
193   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
194   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
195   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
196   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
197   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
198   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
199   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
200   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
201   255,
202 };
203 
204 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x8[256]) = {
205   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
206   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
207   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
208   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
209   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
210   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
211   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
212   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
213   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
214   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
215   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
216   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
217   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
218   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
219   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
220   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
221   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
222   255,
223 };
224 
225 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x8[64]) = {
226   0,  8,  1,  2,  9,  16, 24, 17, 10, 3,  4,  11, 18, 25, 32, 40,
227   33, 26, 19, 12, 5,  6,  13, 20, 27, 34, 41, 48, 56, 49, 42, 35,
228   28, 21, 14, 7,  15, 22, 29, 36, 43, 50, 57, 58, 51, 44, 37, 30,
229   23, 31, 38, 45, 52, 59, 60, 53, 46, 39, 47, 54, 61, 62, 55, 63,
230 };
231 
232 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x8[64]) = {
233   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
234   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
235   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
236   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
237 };
238 
239 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x8[64]) = {
240   0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
241   2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
242   4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
243   6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63,
244 };
245 
246 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x16[128]) = {
247   0,  16,  1,   32, 17,  2,   48,  33,  18, 3,  64,  49,  34,  19,  4,   80,
248   65, 50,  35,  20, 5,   96,  81,  66,  51, 36, 21,  6,   112, 97,  82,  67,
249   52, 37,  22,  7,  113, 98,  83,  68,  53, 38, 23,  8,   114, 99,  84,  69,
250   54, 39,  24,  9,  115, 100, 85,  70,  55, 40, 25,  10,  116, 101, 86,  71,
251   56, 41,  26,  11, 117, 102, 87,  72,  57, 42, 27,  12,  118, 103, 88,  73,
252   58, 43,  28,  13, 119, 104, 89,  74,  59, 44, 29,  14,  120, 105, 90,  75,
253   60, 45,  30,  15, 121, 106, 91,  76,  61, 46, 31,  122, 107, 92,  77,  62,
254   47, 123, 108, 93, 78,  63,  124, 109, 94, 79, 125, 110, 95,  126, 111, 127,
255 };
256 
257 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x8[128]) = {
258   0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
259   5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
260   21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
261   30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
262   39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
263   96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
264   105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
265   114, 121, 87,  94,  101, 108, 115, 122, 95,  102, 109, 116, 123, 103, 110,
266   117, 124, 111, 118, 125, 119, 126, 127,
267 };
268 
269 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x16[128]) = {
270   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
271   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
272   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
273   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
274   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
275   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
276   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
277   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
278   120, 121, 122, 123, 124, 125, 126, 127,
279 };
280 
281 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x8[128]) = {
282   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
283   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
284   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
285   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
286   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
287   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
288   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
289   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
290   120, 121, 122, 123, 124, 125, 126, 127,
291 };
292 
293 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x16[128]) = {
294   0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
295   2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
296   4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
297   6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
298   8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
299   10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
300   12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
301   14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
302 };
303 
304 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x8[128]) = {
305   0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
306   1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
307   2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
308   3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
309   4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
310   5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
311   6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
312   7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
313 };
314 
315 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x32[512]) = {
316   0,   32,  1,   64,  33,  2,   96,  65,  34,  3,   128, 97,  66,  35,  4,
317   160, 129, 98,  67,  36,  5,   192, 161, 130, 99,  68,  37,  6,   224, 193,
318   162, 131, 100, 69,  38,  7,   256, 225, 194, 163, 132, 101, 70,  39,  8,
319   288, 257, 226, 195, 164, 133, 102, 71,  40,  9,   320, 289, 258, 227, 196,
320   165, 134, 103, 72,  41,  10,  352, 321, 290, 259, 228, 197, 166, 135, 104,
321   73,  42,  11,  384, 353, 322, 291, 260, 229, 198, 167, 136, 105, 74,  43,
322   12,  416, 385, 354, 323, 292, 261, 230, 199, 168, 137, 106, 75,  44,  13,
323   448, 417, 386, 355, 324, 293, 262, 231, 200, 169, 138, 107, 76,  45,  14,
324   480, 449, 418, 387, 356, 325, 294, 263, 232, 201, 170, 139, 108, 77,  46,
325   15,  481, 450, 419, 388, 357, 326, 295, 264, 233, 202, 171, 140, 109, 78,
326   47,  16,  482, 451, 420, 389, 358, 327, 296, 265, 234, 203, 172, 141, 110,
327   79,  48,  17,  483, 452, 421, 390, 359, 328, 297, 266, 235, 204, 173, 142,
328   111, 80,  49,  18,  484, 453, 422, 391, 360, 329, 298, 267, 236, 205, 174,
329   143, 112, 81,  50,  19,  485, 454, 423, 392, 361, 330, 299, 268, 237, 206,
330   175, 144, 113, 82,  51,  20,  486, 455, 424, 393, 362, 331, 300, 269, 238,
331   207, 176, 145, 114, 83,  52,  21,  487, 456, 425, 394, 363, 332, 301, 270,
332   239, 208, 177, 146, 115, 84,  53,  22,  488, 457, 426, 395, 364, 333, 302,
333   271, 240, 209, 178, 147, 116, 85,  54,  23,  489, 458, 427, 396, 365, 334,
334   303, 272, 241, 210, 179, 148, 117, 86,  55,  24,  490, 459, 428, 397, 366,
335   335, 304, 273, 242, 211, 180, 149, 118, 87,  56,  25,  491, 460, 429, 398,
336   367, 336, 305, 274, 243, 212, 181, 150, 119, 88,  57,  26,  492, 461, 430,
337   399, 368, 337, 306, 275, 244, 213, 182, 151, 120, 89,  58,  27,  493, 462,
338   431, 400, 369, 338, 307, 276, 245, 214, 183, 152, 121, 90,  59,  28,  494,
339   463, 432, 401, 370, 339, 308, 277, 246, 215, 184, 153, 122, 91,  60,  29,
340   495, 464, 433, 402, 371, 340, 309, 278, 247, 216, 185, 154, 123, 92,  61,
341   30,  496, 465, 434, 403, 372, 341, 310, 279, 248, 217, 186, 155, 124, 93,
342   62,  31,  497, 466, 435, 404, 373, 342, 311, 280, 249, 218, 187, 156, 125,
343   94,  63,  498, 467, 436, 405, 374, 343, 312, 281, 250, 219, 188, 157, 126,
344   95,  499, 468, 437, 406, 375, 344, 313, 282, 251, 220, 189, 158, 127, 500,
345   469, 438, 407, 376, 345, 314, 283, 252, 221, 190, 159, 501, 470, 439, 408,
346   377, 346, 315, 284, 253, 222, 191, 502, 471, 440, 409, 378, 347, 316, 285,
347   254, 223, 503, 472, 441, 410, 379, 348, 317, 286, 255, 504, 473, 442, 411,
348   380, 349, 318, 287, 505, 474, 443, 412, 381, 350, 319, 506, 475, 444, 413,
349   382, 351, 507, 476, 445, 414, 383, 508, 477, 446, 415, 509, 478, 447, 510,
350   479, 511,
351 };
352 
353 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x16[512]) = {
354   0,   1,   16,  2,   17,  32,  3,   18,  33,  48,  4,   19,  34,  49,  64,
355   5,   20,  35,  50,  65,  80,  6,   21,  36,  51,  66,  81,  96,  7,   22,
356   37,  52,  67,  82,  97,  112, 8,   23,  38,  53,  68,  83,  98,  113, 128,
357   9,   24,  39,  54,  69,  84,  99,  114, 129, 144, 10,  25,  40,  55,  70,
358   85,  100, 115, 130, 145, 160, 11,  26,  41,  56,  71,  86,  101, 116, 131,
359   146, 161, 176, 12,  27,  42,  57,  72,  87,  102, 117, 132, 147, 162, 177,
360   192, 13,  28,  43,  58,  73,  88,  103, 118, 133, 148, 163, 178, 193, 208,
361   14,  29,  44,  59,  74,  89,  104, 119, 134, 149, 164, 179, 194, 209, 224,
362   15,  30,  45,  60,  75,  90,  105, 120, 135, 150, 165, 180, 195, 210, 225,
363   240, 31,  46,  61,  76,  91,  106, 121, 136, 151, 166, 181, 196, 211, 226,
364   241, 256, 47,  62,  77,  92,  107, 122, 137, 152, 167, 182, 197, 212, 227,
365   242, 257, 272, 63,  78,  93,  108, 123, 138, 153, 168, 183, 198, 213, 228,
366   243, 258, 273, 288, 79,  94,  109, 124, 139, 154, 169, 184, 199, 214, 229,
367   244, 259, 274, 289, 304, 95,  110, 125, 140, 155, 170, 185, 200, 215, 230,
368   245, 260, 275, 290, 305, 320, 111, 126, 141, 156, 171, 186, 201, 216, 231,
369   246, 261, 276, 291, 306, 321, 336, 127, 142, 157, 172, 187, 202, 217, 232,
370   247, 262, 277, 292, 307, 322, 337, 352, 143, 158, 173, 188, 203, 218, 233,
371   248, 263, 278, 293, 308, 323, 338, 353, 368, 159, 174, 189, 204, 219, 234,
372   249, 264, 279, 294, 309, 324, 339, 354, 369, 384, 175, 190, 205, 220, 235,
373   250, 265, 280, 295, 310, 325, 340, 355, 370, 385, 400, 191, 206, 221, 236,
374   251, 266, 281, 296, 311, 326, 341, 356, 371, 386, 401, 416, 207, 222, 237,
375   252, 267, 282, 297, 312, 327, 342, 357, 372, 387, 402, 417, 432, 223, 238,
376   253, 268, 283, 298, 313, 328, 343, 358, 373, 388, 403, 418, 433, 448, 239,
377   254, 269, 284, 299, 314, 329, 344, 359, 374, 389, 404, 419, 434, 449, 464,
378   255, 270, 285, 300, 315, 330, 345, 360, 375, 390, 405, 420, 435, 450, 465,
379   480, 271, 286, 301, 316, 331, 346, 361, 376, 391, 406, 421, 436, 451, 466,
380   481, 496, 287, 302, 317, 332, 347, 362, 377, 392, 407, 422, 437, 452, 467,
381   482, 497, 303, 318, 333, 348, 363, 378, 393, 408, 423, 438, 453, 468, 483,
382   498, 319, 334, 349, 364, 379, 394, 409, 424, 439, 454, 469, 484, 499, 335,
383   350, 365, 380, 395, 410, 425, 440, 455, 470, 485, 500, 351, 366, 381, 396,
384   411, 426, 441, 456, 471, 486, 501, 367, 382, 397, 412, 427, 442, 457, 472,
385   487, 502, 383, 398, 413, 428, 443, 458, 473, 488, 503, 399, 414, 429, 444,
386   459, 474, 489, 504, 415, 430, 445, 460, 475, 490, 505, 431, 446, 461, 476,
387   491, 506, 447, 462, 477, 492, 507, 463, 478, 493, 508, 479, 494, 509, 495,
388   510, 511,
389 };
390 
391 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x32[512]) = {
392   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
393   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
394   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
395   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
396   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
397   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
398   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
399   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
400   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
401   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
402   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
403   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
404   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
405   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
406   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
407   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
408   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
409   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
410   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
411   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
412   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
413   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
414   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
415   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
416   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
417   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
418   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
419   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
420   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
421   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
422   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
423   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
424   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
425   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
426   510, 511,
427 };
428 
429 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x16[512]) = {
430   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
431   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
432   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
433   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
434   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
435   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
436   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
437   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
438   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
439   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
440   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
441   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
442   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
443   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
444   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
445   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
446   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
447   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
448   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
449   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
450   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
451   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
452   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
453   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
454   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
455   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
456   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
457   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
458   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
459   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
460   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
461   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
462   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
463   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
464   510, 511,
465 };
466 
467 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x32[512]) = {
468   0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
469   1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
470   2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
471   3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
472   4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
473   5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
474   6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
475   7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
476   8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
477   9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
478   10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
479   11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
480   12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
481   13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
482   14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
483   15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
484   16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
485   17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
486   18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
487   19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
488   20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
489   21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
490   22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
491   23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
492   24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
493   25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
494   26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
495   27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
496   28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
497   29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
498   30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
499   31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
500 };
501 
502 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x16[512]) = {
503   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
504   240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
505   480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
506   209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
507   449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
508   178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
509   418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
510   147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
511   387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
512   116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
513   356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
514   85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
515   325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
516   54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
517   294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
518   23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
519   263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
520   503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
521   232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
522   472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
523   201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
524   441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
525   170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
526   410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
527   139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
528   379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
529   108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
530   348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
531   77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
532   317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
533   46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
534   286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
535   15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
536   255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
537   495, 511,
538 };
539 
540 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x16[256]) = {
541   0,   16,  1,   2,   17,  32,  48,  33,  18,  3,   4,   19,  34,  49,  64,
542   80,  65,  50,  35,  20,  5,   6,   21,  36,  51,  66,  81,  96,  112, 97,
543   82,  67,  52,  37,  22,  7,   8,   23,  38,  53,  68,  83,  98,  113, 128,
544   144, 129, 114, 99,  84,  69,  54,  39,  24,  9,   10,  25,  40,  55,  70,
545   85,  100, 115, 130, 145, 160, 176, 161, 146, 131, 116, 101, 86,  71,  56,
546   41,  26,  11,  12,  27,  42,  57,  72,  87,  102, 117, 132, 147, 162, 177,
547   192, 208, 193, 178, 163, 148, 133, 118, 103, 88,  73,  58,  43,  28,  13,
548   14,  29,  44,  59,  74,  89,  104, 119, 134, 149, 164, 179, 194, 209, 224,
549   240, 225, 210, 195, 180, 165, 150, 135, 120, 105, 90,  75,  60,  45,  30,
550   15,  31,  46,  61,  76,  91,  106, 121, 136, 151, 166, 181, 196, 211, 226,
551   241, 242, 227, 212, 197, 182, 167, 152, 137, 122, 107, 92,  77,  62,  47,
552   63,  78,  93,  108, 123, 138, 153, 168, 183, 198, 213, 228, 243, 244, 229,
553   214, 199, 184, 169, 154, 139, 124, 109, 94,  79,  95,  110, 125, 140, 155,
554   170, 185, 200, 215, 230, 245, 246, 231, 216, 201, 186, 171, 156, 141, 126,
555   111, 127, 142, 157, 172, 187, 202, 217, 232, 247, 248, 233, 218, 203, 188,
556   173, 158, 143, 159, 174, 189, 204, 219, 234, 249, 250, 235, 220, 205, 190,
557   175, 191, 206, 221, 236, 251, 252, 237, 222, 207, 223, 238, 253, 254, 239,
558   255,
559 };
560 
561 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x16[256]) = {
562   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
563   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
564   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
565   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
566   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
567   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
568   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
569   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
570   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
571   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
572   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
573   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
574   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
575   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
576   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
577   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
578   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
579   255,
580 };
581 
582 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x16[256]) = {
583   0,  16, 32, 48, 64, 80, 96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
584   1,  17, 33, 49, 65, 81, 97,  113, 129, 145, 161, 177, 193, 209, 225, 241,
585   2,  18, 34, 50, 66, 82, 98,  114, 130, 146, 162, 178, 194, 210, 226, 242,
586   3,  19, 35, 51, 67, 83, 99,  115, 131, 147, 163, 179, 195, 211, 227, 243,
587   4,  20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
588   5,  21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245,
589   6,  22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246,
590   7,  23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
591   8,  24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248,
592   9,  25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249,
593   10, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
594   11, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251,
595   12, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252,
596   13, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
597   14, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254,
598   15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255,
599 };
600 
601 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x32[1024]) = {
602   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,
603   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
604   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
605   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
606   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
607   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
608   78,   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
609   91,   92,   93,   94,   95,   96,   97,   98,   99,   100,  101,  102,  103,
610   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
611   117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
612   130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
613   143,  144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
614   156,  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
615   169,  170,  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
616   182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,  194,
617   195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
618   208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
619   221,  222,  223,  224,  225,  226,  227,  228,  229,  230,  231,  232,  233,
620   234,  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
621   247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
622   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
623   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
624   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
625   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,  309,  310,  311,
626   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
627   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
628   338,  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
629   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
630   364,  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
631   377,  378,  379,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389,
632   390,  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
633   403,  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,  414,  415,
634   416,  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,  427,  428,
635   429,  430,  431,  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
636   442,  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,  453,  454,
637   455,  456,  457,  458,  459,  460,  461,  462,  463,  464,  465,  466,  467,
638   468,  469,  470,  471,  472,  473,  474,  475,  476,  477,  478,  479,  480,
639   481,  482,  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,
640   494,  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  506,
641   507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  517,  518,  519,
642   520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
643   533,  534,  535,  536,  537,  538,  539,  540,  541,  542,  543,  544,  545,
644   546,  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
645   559,  560,  561,  562,  563,  564,  565,  566,  567,  568,  569,  570,  571,
646   572,  573,  574,  575,  576,  577,  578,  579,  580,  581,  582,  583,  584,
647   585,  586,  587,  588,  589,  590,  591,  592,  593,  594,  595,  596,  597,
648   598,  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  609,  610,
649   611,  612,  613,  614,  615,  616,  617,  618,  619,  620,  621,  622,  623,
650   624,  625,  626,  627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
651   637,  638,  639,  640,  641,  642,  643,  644,  645,  646,  647,  648,  649,
652   650,  651,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
653   663,  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
654   676,  677,  678,  679,  680,  681,  682,  683,  684,  685,  686,  687,  688,
655   689,  690,  691,  692,  693,  694,  695,  696,  697,  698,  699,  700,  701,
656   702,  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,  714,
657   715,  716,  717,  718,  719,  720,  721,  722,  723,  724,  725,  726,  727,
658   728,  729,  730,  731,  732,  733,  734,  735,  736,  737,  738,  739,  740,
659   741,  742,  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,
660   754,  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  765,  766,
661   767,  768,  769,  770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
662   780,  781,  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
663   793,  794,  795,  796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
664   806,  807,  808,  809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
665   819,  820,  821,  822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
666   832,  833,  834,  835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
667   845,  846,  847,  848,  849,  850,  851,  852,  853,  854,  855,  856,  857,
668   858,  859,  860,  861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
669   871,  872,  873,  874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
670   884,  885,  886,  887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
671   897,  898,  899,  900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
672   910,  911,  912,  913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
673   923,  924,  925,  926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
674   936,  937,  938,  939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
675   949,  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
676   962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
677   975,  976,  977,  978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
678   988,  989,  990,  991,  992,  993,  994,  995,  996,  997,  998,  999,  1000,
679   1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
680   1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
681 };
682 
683 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x32[1024]) = {
684   0,   32,   64,  96,   128, 160,  192, 224,  256, 288,  320, 352,  384, 416,
685   448, 480,  512, 544,  576, 608,  640, 672,  704, 736,  768, 800,  832, 864,
686   896, 928,  960, 992,  1,   33,   65,  97,   129, 161,  193, 225,  257, 289,
687   321, 353,  385, 417,  449, 481,  513, 545,  577, 609,  641, 673,  705, 737,
688   769, 801,  833, 865,  897, 929,  961, 993,  2,   34,   66,  98,   130, 162,
689   194, 226,  258, 290,  322, 354,  386, 418,  450, 482,  514, 546,  578, 610,
690   642, 674,  706, 738,  770, 802,  834, 866,  898, 930,  962, 994,  3,   35,
691   67,  99,   131, 163,  195, 227,  259, 291,  323, 355,  387, 419,  451, 483,
692   515, 547,  579, 611,  643, 675,  707, 739,  771, 803,  835, 867,  899, 931,
693   963, 995,  4,   36,   68,  100,  132, 164,  196, 228,  260, 292,  324, 356,
694   388, 420,  452, 484,  516, 548,  580, 612,  644, 676,  708, 740,  772, 804,
695   836, 868,  900, 932,  964, 996,  5,   37,   69,  101,  133, 165,  197, 229,
696   261, 293,  325, 357,  389, 421,  453, 485,  517, 549,  581, 613,  645, 677,
697   709, 741,  773, 805,  837, 869,  901, 933,  965, 997,  6,   38,   70,  102,
698   134, 166,  198, 230,  262, 294,  326, 358,  390, 422,  454, 486,  518, 550,
699   582, 614,  646, 678,  710, 742,  774, 806,  838, 870,  902, 934,  966, 998,
700   7,   39,   71,  103,  135, 167,  199, 231,  263, 295,  327, 359,  391, 423,
701   455, 487,  519, 551,  583, 615,  647, 679,  711, 743,  775, 807,  839, 871,
702   903, 935,  967, 999,  8,   40,   72,  104,  136, 168,  200, 232,  264, 296,
703   328, 360,  392, 424,  456, 488,  520, 552,  584, 616,  648, 680,  712, 744,
704   776, 808,  840, 872,  904, 936,  968, 1000, 9,   41,   73,  105,  137, 169,
705   201, 233,  265, 297,  329, 361,  393, 425,  457, 489,  521, 553,  585, 617,
706   649, 681,  713, 745,  777, 809,  841, 873,  905, 937,  969, 1001, 10,  42,
707   74,  106,  138, 170,  202, 234,  266, 298,  330, 362,  394, 426,  458, 490,
708   522, 554,  586, 618,  650, 682,  714, 746,  778, 810,  842, 874,  906, 938,
709   970, 1002, 11,  43,   75,  107,  139, 171,  203, 235,  267, 299,  331, 363,
710   395, 427,  459, 491,  523, 555,  587, 619,  651, 683,  715, 747,  779, 811,
711   843, 875,  907, 939,  971, 1003, 12,  44,   76,  108,  140, 172,  204, 236,
712   268, 300,  332, 364,  396, 428,  460, 492,  524, 556,  588, 620,  652, 684,
713   716, 748,  780, 812,  844, 876,  908, 940,  972, 1004, 13,  45,   77,  109,
714   141, 173,  205, 237,  269, 301,  333, 365,  397, 429,  461, 493,  525, 557,
715   589, 621,  653, 685,  717, 749,  781, 813,  845, 877,  909, 941,  973, 1005,
716   14,  46,   78,  110,  142, 174,  206, 238,  270, 302,  334, 366,  398, 430,
717   462, 494,  526, 558,  590, 622,  654, 686,  718, 750,  782, 814,  846, 878,
718   910, 942,  974, 1006, 15,  47,   79,  111,  143, 175,  207, 239,  271, 303,
719   335, 367,  399, 431,  463, 495,  527, 559,  591, 623,  655, 687,  719, 751,
720   783, 815,  847, 879,  911, 943,  975, 1007, 16,  48,   80,  112,  144, 176,
721   208, 240,  272, 304,  336, 368,  400, 432,  464, 496,  528, 560,  592, 624,
722   656, 688,  720, 752,  784, 816,  848, 880,  912, 944,  976, 1008, 17,  49,
723   81,  113,  145, 177,  209, 241,  273, 305,  337, 369,  401, 433,  465, 497,
724   529, 561,  593, 625,  657, 689,  721, 753,  785, 817,  849, 881,  913, 945,
725   977, 1009, 18,  50,   82,  114,  146, 178,  210, 242,  274, 306,  338, 370,
726   402, 434,  466, 498,  530, 562,  594, 626,  658, 690,  722, 754,  786, 818,
727   850, 882,  914, 946,  978, 1010, 19,  51,   83,  115,  147, 179,  211, 243,
728   275, 307,  339, 371,  403, 435,  467, 499,  531, 563,  595, 627,  659, 691,
729   723, 755,  787, 819,  851, 883,  915, 947,  979, 1011, 20,  52,   84,  116,
730   148, 180,  212, 244,  276, 308,  340, 372,  404, 436,  468, 500,  532, 564,
731   596, 628,  660, 692,  724, 756,  788, 820,  852, 884,  916, 948,  980, 1012,
732   21,  53,   85,  117,  149, 181,  213, 245,  277, 309,  341, 373,  405, 437,
733   469, 501,  533, 565,  597, 629,  661, 693,  725, 757,  789, 821,  853, 885,
734   917, 949,  981, 1013, 22,  54,   86,  118,  150, 182,  214, 246,  278, 310,
735   342, 374,  406, 438,  470, 502,  534, 566,  598, 630,  662, 694,  726, 758,
736   790, 822,  854, 886,  918, 950,  982, 1014, 23,  55,   87,  119,  151, 183,
737   215, 247,  279, 311,  343, 375,  407, 439,  471, 503,  535, 567,  599, 631,
738   663, 695,  727, 759,  791, 823,  855, 887,  919, 951,  983, 1015, 24,  56,
739   88,  120,  152, 184,  216, 248,  280, 312,  344, 376,  408, 440,  472, 504,
740   536, 568,  600, 632,  664, 696,  728, 760,  792, 824,  856, 888,  920, 952,
741   984, 1016, 25,  57,   89,  121,  153, 185,  217, 249,  281, 313,  345, 377,
742   409, 441,  473, 505,  537, 569,  601, 633,  665, 697,  729, 761,  793, 825,
743   857, 889,  921, 953,  985, 1017, 26,  58,   90,  122,  154, 186,  218, 250,
744   282, 314,  346, 378,  410, 442,  474, 506,  538, 570,  602, 634,  666, 698,
745   730, 762,  794, 826,  858, 890,  922, 954,  986, 1018, 27,  59,   91,  123,
746   155, 187,  219, 251,  283, 315,  347, 379,  411, 443,  475, 507,  539, 571,
747   603, 635,  667, 699,  731, 763,  795, 827,  859, 891,  923, 955,  987, 1019,
748   28,  60,   92,  124,  156, 188,  220, 252,  284, 316,  348, 380,  412, 444,
749   476, 508,  540, 572,  604, 636,  668, 700,  732, 764,  796, 828,  860, 892,
750   924, 956,  988, 1020, 29,  61,   93,  125,  157, 189,  221, 253,  285, 317,
751   349, 381,  413, 445,  477, 509,  541, 573,  605, 637,  669, 701,  733, 765,
752   797, 829,  861, 893,  925, 957,  989, 1021, 30,  62,   94,  126,  158, 190,
753   222, 254,  286, 318,  350, 382,  414, 446,  478, 510,  542, 574,  606, 638,
754   670, 702,  734, 766,  798, 830,  862, 894,  926, 958,  990, 1022, 31,  63,
755   95,  127,  159, 191,  223, 255,  287, 319,  351, 383,  415, 447,  479, 511,
756   543, 575,  607, 639,  671, 703,  735, 767,  799, 831,  863, 895,  927, 959,
757   991, 1023,
758 };
759 
760 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x32[1024]) = {
761   0,    32,   1,    2,    33,   64,  96,   65,   34,   3,    4,    35,  66,
762   97,   128,  160,  129,  98,   67,  36,   5,    6,    37,   68,   99,  130,
763   161,  192,  224,  193,  162,  131, 100,  69,   38,   7,    8,    39,  70,
764   101,  132,  163,  194,  225,  256, 288,  257,  226,  195,  164,  133, 102,
765   71,   40,   9,    10,   41,   72,  103,  134,  165,  196,  227,  258, 289,
766   320,  352,  321,  290,  259,  228, 197,  166,  135,  104,  73,   42,  11,
767   12,   43,   74,   105,  136,  167, 198,  229,  260,  291,  322,  353, 384,
768   416,  385,  354,  323,  292,  261, 230,  199,  168,  137,  106,  75,  44,
769   13,   14,   45,   76,   107,  138, 169,  200,  231,  262,  293,  324, 355,
770   386,  417,  448,  480,  449,  418, 387,  356,  325,  294,  263,  232, 201,
771   170,  139,  108,  77,   46,   15,  16,   47,   78,   109,  140,  171, 202,
772   233,  264,  295,  326,  357,  388, 419,  450,  481,  512,  544,  513, 482,
773   451,  420,  389,  358,  327,  296, 265,  234,  203,  172,  141,  110, 79,
774   48,   17,   18,   49,   80,   111, 142,  173,  204,  235,  266,  297, 328,
775   359,  390,  421,  452,  483,  514, 545,  576,  608,  577,  546,  515, 484,
776   453,  422,  391,  360,  329,  298, 267,  236,  205,  174,  143,  112, 81,
777   50,   19,   20,   51,   82,   113, 144,  175,  206,  237,  268,  299, 330,
778   361,  392,  423,  454,  485,  516, 547,  578,  609,  640,  672,  641, 610,
779   579,  548,  517,  486,  455,  424, 393,  362,  331,  300,  269,  238, 207,
780   176,  145,  114,  83,   52,   21,  22,   53,   84,   115,  146,  177, 208,
781   239,  270,  301,  332,  363,  394, 425,  456,  487,  518,  549,  580, 611,
782   642,  673,  704,  736,  705,  674, 643,  612,  581,  550,  519,  488, 457,
783   426,  395,  364,  333,  302,  271, 240,  209,  178,  147,  116,  85,  54,
784   23,   24,   55,   86,   117,  148, 179,  210,  241,  272,  303,  334, 365,
785   396,  427,  458,  489,  520,  551, 582,  613,  644,  675,  706,  737, 768,
786   800,  769,  738,  707,  676,  645, 614,  583,  552,  521,  490,  459, 428,
787   397,  366,  335,  304,  273,  242, 211,  180,  149,  118,  87,   56,  25,
788   26,   57,   88,   119,  150,  181, 212,  243,  274,  305,  336,  367, 398,
789   429,  460,  491,  522,  553,  584, 615,  646,  677,  708,  739,  770, 801,
790   832,  864,  833,  802,  771,  740, 709,  678,  647,  616,  585,  554, 523,
791   492,  461,  430,  399,  368,  337, 306,  275,  244,  213,  182,  151, 120,
792   89,   58,   27,   28,   59,   90,  121,  152,  183,  214,  245,  276, 307,
793   338,  369,  400,  431,  462,  493, 524,  555,  586,  617,  648,  679, 710,
794   741,  772,  803,  834,  865,  896, 928,  897,  866,  835,  804,  773, 742,
795   711,  680,  649,  618,  587,  556, 525,  494,  463,  432,  401,  370, 339,
796   308,  277,  246,  215,  184,  153, 122,  91,   60,   29,   30,   61,  92,
797   123,  154,  185,  216,  247,  278, 309,  340,  371,  402,  433,  464, 495,
798   526,  557,  588,  619,  650,  681, 712,  743,  774,  805,  836,  867, 898,
799   929,  960,  992,  961,  930,  899, 868,  837,  806,  775,  744,  713, 682,
800   651,  620,  589,  558,  527,  496, 465,  434,  403,  372,  341,  310, 279,
801   248,  217,  186,  155,  124,  93,  62,   31,   63,   94,   125,  156, 187,
802   218,  249,  280,  311,  342,  373, 404,  435,  466,  497,  528,  559, 590,
803   621,  652,  683,  714,  745,  776, 807,  838,  869,  900,  931,  962, 993,
804   994,  963,  932,  901,  870,  839, 808,  777,  746,  715,  684,  653, 622,
805   591,  560,  529,  498,  467,  436, 405,  374,  343,  312,  281,  250, 219,
806   188,  157,  126,  95,   127,  158, 189,  220,  251,  282,  313,  344, 375,
807   406,  437,  468,  499,  530,  561, 592,  623,  654,  685,  716,  747, 778,
808   809,  840,  871,  902,  933,  964, 995,  996,  965,  934,  903,  872, 841,
809   810,  779,  748,  717,  686,  655, 624,  593,  562,  531,  500,  469, 438,
810   407,  376,  345,  314,  283,  252, 221,  190,  159,  191,  222,  253, 284,
811   315,  346,  377,  408,  439,  470, 501,  532,  563,  594,  625,  656, 687,
812   718,  749,  780,  811,  842,  873, 904,  935,  966,  997,  998,  967, 936,
813   905,  874,  843,  812,  781,  750, 719,  688,  657,  626,  595,  564, 533,
814   502,  471,  440,  409,  378,  347, 316,  285,  254,  223,  255,  286, 317,
815   348,  379,  410,  441,  472,  503, 534,  565,  596,  627,  658,  689, 720,
816   751,  782,  813,  844,  875,  906, 937,  968,  999,  1000, 969,  938, 907,
817   876,  845,  814,  783,  752,  721, 690,  659,  628,  597,  566,  535, 504,
818   473,  442,  411,  380,  349,  318, 287,  319,  350,  381,  412,  443, 474,
819   505,  536,  567,  598,  629,  660, 691,  722,  753,  784,  815,  846, 877,
820   908,  939,  970,  1001, 1002, 971, 940,  909,  878,  847,  816,  785, 754,
821   723,  692,  661,  630,  599,  568, 537,  506,  475,  444,  413,  382, 351,
822   383,  414,  445,  476,  507,  538, 569,  600,  631,  662,  693,  724, 755,
823   786,  817,  848,  879,  910,  941, 972,  1003, 1004, 973,  942,  911, 880,
824   849,  818,  787,  756,  725,  694, 663,  632,  601,  570,  539,  508, 477,
825   446,  415,  447,  478,  509,  540, 571,  602,  633,  664,  695,  726, 757,
826   788,  819,  850,  881,  912,  943, 974,  1005, 1006, 975,  944,  913, 882,
827   851,  820,  789,  758,  727,  696, 665,  634,  603,  572,  541,  510, 479,
828   511,  542,  573,  604,  635,  666, 697,  728,  759,  790,  821,  852, 883,
829   914,  945,  976,  1007, 1008, 977, 946,  915,  884,  853,  822,  791, 760,
830   729,  698,  667,  636,  605,  574, 543,  575,  606,  637,  668,  699, 730,
831   761,  792,  823,  854,  885,  916, 947,  978,  1009, 1010, 979,  948, 917,
832   886,  855,  824,  793,  762,  731, 700,  669,  638,  607,  639,  670, 701,
833   732,  763,  794,  825,  856,  887, 918,  949,  980,  1011, 1012, 981, 950,
834   919,  888,  857,  826,  795,  764, 733,  702,  671,  703,  734,  765, 796,
835   827,  858,  889,  920,  951,  982, 1013, 1014, 983,  952,  921,  890, 859,
836   828,  797,  766,  735,  767,  798, 829,  860,  891,  922,  953,  984, 1015,
837   1016, 985,  954,  923,  892,  861, 830,  799,  831,  862,  893,  924, 955,
838   986,  1017, 1018, 987,  956,  925, 894,  863,  895,  926,  957,  988, 1019,
839   1020, 989,  958,  927,  959,  990, 1021, 1022, 991,  1023,
840 };
841 
842 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x4[16]) = {
843   0, 2, 3, 9, 1, 4, 8, 10, 5, 7, 11, 14, 6, 12, 13, 15,
844 };
845 
846 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x4[16]) = {
847   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
848 };
849 
850 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x4[16]) = {
851   0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15,
852 };
853 
854 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x8[32]) = {
855   0, 2, 5,  9,  13, 17, 21, 25, 1, 4,  8,  12, 16, 20, 24, 28,
856   3, 7, 11, 15, 19, 23, 27, 30, 6, 10, 14, 18, 22, 26, 29, 31,
857 };
858 
859 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x8[32]) = {
860   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
861   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
862 };
863 
864 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x8[32]) = {
865   0, 4, 8,  12, 16, 20, 24, 28, 1, 5, 9,  13, 17, 21, 25, 29,
866   2, 6, 10, 14, 18, 22, 26, 30, 3, 7, 11, 15, 19, 23, 27, 31,
867 };
868 
869 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x4[32]) = {
870   0,  1,  3,  6,  2,  4,  7,  10, 5,  8,  11, 14, 9,  12, 15, 18,
871   13, 16, 19, 22, 17, 20, 23, 26, 21, 24, 27, 29, 25, 28, 30, 31,
872 };
873 
874 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x4[32]) = {
875   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
876   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
877 };
878 
879 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x4[32]) = {
880   0, 8,  16, 24, 1, 9,  17, 25, 2, 10, 18, 26, 3, 11, 19, 27,
881   4, 12, 20, 28, 5, 13, 21, 29, 6, 14, 22, 30, 7, 15, 23, 31,
882 };
883 
884 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x16[64]) = {
885   0, 2,  5,  9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57,
886   1, 4,  8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
887   3, 7,  11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 62,
888   6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 61, 63,
889 };
890 
891 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x4[64]) = {
892   0,  1,  3,  6,  2,  4,  7,  10, 5,  8,  11, 14, 9,  12, 15, 18,
893   13, 16, 19, 22, 17, 20, 23, 26, 21, 24, 27, 30, 25, 28, 31, 34,
894   29, 32, 35, 38, 33, 36, 39, 42, 37, 40, 43, 46, 41, 44, 47, 50,
895   45, 48, 51, 54, 49, 52, 55, 58, 53, 56, 59, 61, 57, 60, 62, 63,
896 };
897 
898 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x16[64]) = {
899   0, 4, 8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
900   1, 5, 9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61,
901   2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
902   3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
903 };
904 
905 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x4[64]) = {
906   0,  16, 32, 48, 1,  17, 33, 49, 2,  18, 34, 50, 3,  19, 35, 51,
907   4,  20, 36, 52, 5,  21, 37, 53, 6,  22, 38, 54, 7,  23, 39, 55,
908   8,  24, 40, 56, 9,  25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
909   12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63,
910 };
911 
912 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x16[64]) = {
913   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
914   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
915   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
916   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
917 };
918 
919 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x4[64]) = {
920   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
921   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
922   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
923   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
924 };
925 
926 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x32[256]) = {
927   0,   2,   5,   9,   14,  20,  27,  35,  43,  51,  59,  67,  75,  83,  91,
928   99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187, 195, 203, 211,
929   219, 227, 1,   4,   8,   13,  19,  26,  34,  42,  50,  58,  66,  74,  82,
930   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
931   210, 218, 226, 234, 3,   7,   12,  18,  25,  33,  41,  49,  57,  65,  73,
932   81,  89,  97,  105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193,
933   201, 209, 217, 225, 233, 240, 6,   11,  17,  24,  32,  40,  48,  56,  64,
934   72,  80,  88,  96,  104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184,
935   192, 200, 208, 216, 224, 232, 239, 245, 10,  16,  23,  31,  39,  47,  55,
936   63,  71,  79,  87,  95,  103, 111, 119, 127, 135, 143, 151, 159, 167, 175,
937   183, 191, 199, 207, 215, 223, 231, 238, 244, 249, 15,  22,  30,  38,  46,
938   54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142, 150, 158, 166,
939   174, 182, 190, 198, 206, 214, 222, 230, 237, 243, 248, 252, 21,  29,  37,
940   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
941   165, 173, 181, 189, 197, 205, 213, 221, 229, 236, 242, 247, 251, 254, 28,
942   36,  44,  52,  60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148,
943   156, 164, 172, 180, 188, 196, 204, 212, 220, 228, 235, 241, 246, 250, 253,
944   255,
945 };
946 
947 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x8[256]) = {
948   0,   1,   3,   6,   10,  15,  21,  28,  2,   4,   7,   11,  16,  22,  29,
949   36,  5,   8,   12,  17,  23,  30,  37,  44,  9,   13,  18,  24,  31,  38,
950   45,  52,  14,  19,  25,  32,  39,  46,  53,  60,  20,  26,  33,  40,  47,
951   54,  61,  68,  27,  34,  41,  48,  55,  62,  69,  76,  35,  42,  49,  56,
952   63,  70,  77,  84,  43,  50,  57,  64,  71,  78,  85,  92,  51,  58,  65,
953   72,  79,  86,  93,  100, 59,  66,  73,  80,  87,  94,  101, 108, 67,  74,
954   81,  88,  95,  102, 109, 116, 75,  82,  89,  96,  103, 110, 117, 124, 83,
955   90,  97,  104, 111, 118, 125, 132, 91,  98,  105, 112, 119, 126, 133, 140,
956   99,  106, 113, 120, 127, 134, 141, 148, 107, 114, 121, 128, 135, 142, 149,
957   156, 115, 122, 129, 136, 143, 150, 157, 164, 123, 130, 137, 144, 151, 158,
958   165, 172, 131, 138, 145, 152, 159, 166, 173, 180, 139, 146, 153, 160, 167,
959   174, 181, 188, 147, 154, 161, 168, 175, 182, 189, 196, 155, 162, 169, 176,
960   183, 190, 197, 204, 163, 170, 177, 184, 191, 198, 205, 212, 171, 178, 185,
961   192, 199, 206, 213, 220, 179, 186, 193, 200, 207, 214, 221, 228, 187, 194,
962   201, 208, 215, 222, 229, 235, 195, 202, 209, 216, 223, 230, 236, 241, 203,
963   210, 217, 224, 231, 237, 242, 246, 211, 218, 225, 232, 238, 243, 247, 250,
964   219, 226, 233, 239, 244, 248, 251, 253, 227, 234, 240, 245, 249, 252, 254,
965   255,
966 };
967 
968 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x32[256]) = {
969   0,   8,   16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96,  104, 112,
970   120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232,
971   240, 248, 1,   9,   17,  25,  33,  41,  49,  57,  65,  73,  81,  89,  97,
972   105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193, 201, 209, 217,
973   225, 233, 241, 249, 2,   10,  18,  26,  34,  42,  50,  58,  66,  74,  82,
974   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
975   210, 218, 226, 234, 242, 250, 3,   11,  19,  27,  35,  43,  51,  59,  67,
976   75,  83,  91,  99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187,
977   195, 203, 211, 219, 227, 235, 243, 251, 4,   12,  20,  28,  36,  44,  52,
978   60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148, 156, 164, 172,
979   180, 188, 196, 204, 212, 220, 228, 236, 244, 252, 5,   13,  21,  29,  37,
980   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
981   165, 173, 181, 189, 197, 205, 213, 221, 229, 237, 245, 253, 6,   14,  22,
982   30,  38,  46,  54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142,
983   150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230, 238, 246, 254, 7,
984   15,  23,  31,  39,  47,  55,  63,  71,  79,  87,  95,  103, 111, 119, 127,
985   135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231, 239, 247,
986   255,
987 };
988 
989 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x8[256]) = {
990   0,  32, 64, 96,  128, 160, 192, 224, 1,  33, 65, 97,  129, 161, 193, 225,
991   2,  34, 66, 98,  130, 162, 194, 226, 3,  35, 67, 99,  131, 163, 195, 227,
992   4,  36, 68, 100, 132, 164, 196, 228, 5,  37, 69, 101, 133, 165, 197, 229,
993   6,  38, 70, 102, 134, 166, 198, 230, 7,  39, 71, 103, 135, 167, 199, 231,
994   8,  40, 72, 104, 136, 168, 200, 232, 9,  41, 73, 105, 137, 169, 201, 233,
995   10, 42, 74, 106, 138, 170, 202, 234, 11, 43, 75, 107, 139, 171, 203, 235,
996   12, 44, 76, 108, 140, 172, 204, 236, 13, 45, 77, 109, 141, 173, 205, 237,
997   14, 46, 78, 110, 142, 174, 206, 238, 15, 47, 79, 111, 143, 175, 207, 239,
998   16, 48, 80, 112, 144, 176, 208, 240, 17, 49, 81, 113, 145, 177, 209, 241,
999   18, 50, 82, 114, 146, 178, 210, 242, 19, 51, 83, 115, 147, 179, 211, 243,
1000   20, 52, 84, 116, 148, 180, 212, 244, 21, 53, 85, 117, 149, 181, 213, 245,
1001   22, 54, 86, 118, 150, 182, 214, 246, 23, 55, 87, 119, 151, 183, 215, 247,
1002   24, 56, 88, 120, 152, 184, 216, 248, 25, 57, 89, 121, 153, 185, 217, 249,
1003   26, 58, 90, 122, 154, 186, 218, 250, 27, 59, 91, 123, 155, 187, 219, 251,
1004   28, 60, 92, 124, 156, 188, 220, 252, 29, 61, 93, 125, 157, 189, 221, 253,
1005   30, 62, 94, 126, 158, 190, 222, 254, 31, 63, 95, 127, 159, 191, 223, 255,
1006 };
1007 
1008 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x32[256]) = {
1009   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1010   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1011   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1012   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1013   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1014   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1015   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1016   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1017   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1018   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1019   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1020   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1021   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1022   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1023   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1024   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1025   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1026   255,
1027 };
1028 
1029 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x8[256]) = {
1030   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1031   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1032   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1033   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1034   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1035   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1036   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1037   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1038   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1039   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1040   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1041   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1042   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1043   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1044   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1045   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1046   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1047   255,
1048 };
1049 
1050 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x8[64]) = {
1051   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
1052   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1053   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1054   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1055 };
1056 
1057 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x8[64]) = {
1058   0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
1059   2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
1060   4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
1061   6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63,
1062 };
1063 
1064 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x8[64]) = {
1065   0,  2,  3,  9,  10, 20, 21, 35, 1,  4,  8,  11, 19, 22, 34, 36,
1066   5,  7,  12, 18, 23, 33, 37, 48, 6,  13, 17, 24, 32, 38, 47, 49,
1067   14, 16, 25, 31, 39, 46, 50, 57, 15, 26, 30, 40, 45, 51, 56, 58,
1068   27, 29, 41, 44, 52, 55, 59, 62, 28, 42, 43, 53, 54, 60, 61, 63,
1069 };
1070 
1071 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x16[128]) = {
1072   0,  2,  5,  9,  14, 20, 27, 35, 43, 51,  59,  67,  75,  83,  91,  99,
1073   1,  4,  8,  13, 19, 26, 34, 42, 50, 58,  66,  74,  82,  90,  98,  106,
1074   3,  7,  12, 18, 25, 33, 41, 49, 57, 65,  73,  81,  89,  97,  105, 112,
1075   6,  11, 17, 24, 32, 40, 48, 56, 64, 72,  80,  88,  96,  104, 111, 117,
1076   10, 16, 23, 31, 39, 47, 55, 63, 71, 79,  87,  95,  103, 110, 116, 121,
1077   15, 22, 30, 38, 46, 54, 62, 70, 78, 86,  94,  102, 109, 115, 120, 124,
1078   21, 29, 37, 45, 53, 61, 69, 77, 85, 93,  101, 108, 114, 119, 123, 126,
1079   28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 107, 113, 118, 122, 125, 127,
1080 };
1081 
1082 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x8[128]) = {
1083   0,  1,  3,   6,   10,  15,  21,  28,  2,  4,   7,   11,  16,  22,  29,  36,
1084   5,  8,  12,  17,  23,  30,  37,  44,  9,  13,  18,  24,  31,  38,  45,  52,
1085   14, 19, 25,  32,  39,  46,  53,  60,  20, 26,  33,  40,  47,  54,  61,  68,
1086   27, 34, 41,  48,  55,  62,  69,  76,  35, 42,  49,  56,  63,  70,  77,  84,
1087   43, 50, 57,  64,  71,  78,  85,  92,  51, 58,  65,  72,  79,  86,  93,  100,
1088   59, 66, 73,  80,  87,  94,  101, 107, 67, 74,  81,  88,  95,  102, 108, 113,
1089   75, 82, 89,  96,  103, 109, 114, 118, 83, 90,  97,  104, 110, 115, 119, 122,
1090   91, 98, 105, 111, 116, 120, 123, 125, 99, 106, 112, 117, 121, 124, 126, 127,
1091 };
1092 
1093 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x16[128]) = {
1094   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1095   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1096   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1097   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1098   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1099   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1100   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1101   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1102   120, 121, 122, 123, 124, 125, 126, 127,
1103 };
1104 
1105 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x8[128]) = {
1106   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1107   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1108   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1109   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1110   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1111   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1112   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1113   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1114   120, 121, 122, 123, 124, 125, 126, 127,
1115 };
1116 
1117 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x16[128]) = {
1118   0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
1119   1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
1120   2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
1121   3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
1122   4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
1123   5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
1124   6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
1125   7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
1126 };
1127 
1128 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x8[128]) = {
1129   0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
1130   2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
1131   4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
1132   6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
1133   8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
1134   10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
1135   12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
1136   14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
1137 };
1138 
1139 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x32[512]) = {
1140   0,   2,   5,   9,   14,  20,  27,  35,  44,  54,  65,  77,  90,  104, 119,
1141   135, 151, 167, 183, 199, 215, 231, 247, 263, 279, 295, 311, 327, 343, 359,
1142   375, 391, 1,   4,   8,   13,  19,  26,  34,  43,  53,  64,  76,  89,  103,
1143   118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278, 294, 310, 326, 342,
1144   358, 374, 390, 406, 3,   7,   12,  18,  25,  33,  42,  52,  63,  75,  88,
1145   102, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309, 325,
1146   341, 357, 373, 389, 405, 420, 6,   11,  17,  24,  32,  41,  51,  62,  74,
1147   87,  101, 116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308,
1148   324, 340, 356, 372, 388, 404, 419, 433, 10,  16,  23,  31,  40,  50,  61,
1149   73,  86,  100, 115, 131, 147, 163, 179, 195, 211, 227, 243, 259, 275, 291,
1150   307, 323, 339, 355, 371, 387, 403, 418, 432, 445, 15,  22,  30,  39,  49,
1151   60,  72,  85,  99,  114, 130, 146, 162, 178, 194, 210, 226, 242, 258, 274,
1152   290, 306, 322, 338, 354, 370, 386, 402, 417, 431, 444, 456, 21,  29,  38,
1153   48,  59,  71,  84,  98,  113, 129, 145, 161, 177, 193, 209, 225, 241, 257,
1154   273, 289, 305, 321, 337, 353, 369, 385, 401, 416, 430, 443, 455, 466, 28,
1155   37,  47,  58,  70,  83,  97,  112, 128, 144, 160, 176, 192, 208, 224, 240,
1156   256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 415, 429, 442, 454, 465,
1157   475, 36,  46,  57,  69,  82,  96,  111, 127, 143, 159, 175, 191, 207, 223,
1158   239, 255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 414, 428, 441, 453,
1159   464, 474, 483, 45,  56,  68,  81,  95,  110, 126, 142, 158, 174, 190, 206,
1160   222, 238, 254, 270, 286, 302, 318, 334, 350, 366, 382, 398, 413, 427, 440,
1161   452, 463, 473, 482, 490, 55,  67,  80,  94,  109, 125, 141, 157, 173, 189,
1162   205, 221, 237, 253, 269, 285, 301, 317, 333, 349, 365, 381, 397, 412, 426,
1163   439, 451, 462, 472, 481, 489, 496, 66,  79,  93,  108, 124, 140, 156, 172,
1164   188, 204, 220, 236, 252, 268, 284, 300, 316, 332, 348, 364, 380, 396, 411,
1165   425, 438, 450, 461, 471, 480, 488, 495, 501, 78,  92,  107, 123, 139, 155,
1166   171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363, 379, 395,
1167   410, 424, 437, 449, 460, 470, 479, 487, 494, 500, 505, 91,  106, 122, 138,
1168   154, 170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378,
1169   394, 409, 423, 436, 448, 459, 469, 478, 486, 493, 499, 504, 508, 105, 121,
1170   137, 153, 169, 185, 201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361,
1171   377, 393, 408, 422, 435, 447, 458, 468, 477, 485, 492, 498, 503, 507, 510,
1172   120, 136, 152, 168, 184, 200, 216, 232, 248, 264, 280, 296, 312, 328, 344,
1173   360, 376, 392, 407, 421, 434, 446, 457, 467, 476, 484, 491, 497, 502, 506,
1174   509, 511,
1175 };
1176 
1177 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x16[512]) = {
1178   0,   1,   3,   6,   10,  15,  21,  28,  36,  45,  55,  66,  78,  91,  105,
1179   120, 2,   4,   7,   11,  16,  22,  29,  37,  46,  56,  67,  79,  92,  106,
1180   121, 136, 5,   8,   12,  17,  23,  30,  38,  47,  57,  68,  80,  93,  107,
1181   122, 137, 152, 9,   13,  18,  24,  31,  39,  48,  58,  69,  81,  94,  108,
1182   123, 138, 153, 168, 14,  19,  25,  32,  40,  49,  59,  70,  82,  95,  109,
1183   124, 139, 154, 169, 184, 20,  26,  33,  41,  50,  60,  71,  83,  96,  110,
1184   125, 140, 155, 170, 185, 200, 27,  34,  42,  51,  61,  72,  84,  97,  111,
1185   126, 141, 156, 171, 186, 201, 216, 35,  43,  52,  62,  73,  85,  98,  112,
1186   127, 142, 157, 172, 187, 202, 217, 232, 44,  53,  63,  74,  86,  99,  113,
1187   128, 143, 158, 173, 188, 203, 218, 233, 248, 54,  64,  75,  87,  100, 114,
1188   129, 144, 159, 174, 189, 204, 219, 234, 249, 264, 65,  76,  88,  101, 115,
1189   130, 145, 160, 175, 190, 205, 220, 235, 250, 265, 280, 77,  89,  102, 116,
1190   131, 146, 161, 176, 191, 206, 221, 236, 251, 266, 281, 296, 90,  103, 117,
1191   132, 147, 162, 177, 192, 207, 222, 237, 252, 267, 282, 297, 312, 104, 118,
1192   133, 148, 163, 178, 193, 208, 223, 238, 253, 268, 283, 298, 313, 328, 119,
1193   134, 149, 164, 179, 194, 209, 224, 239, 254, 269, 284, 299, 314, 329, 344,
1194   135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345,
1195   360, 151, 166, 181, 196, 211, 226, 241, 256, 271, 286, 301, 316, 331, 346,
1196   361, 376, 167, 182, 197, 212, 227, 242, 257, 272, 287, 302, 317, 332, 347,
1197   362, 377, 392, 183, 198, 213, 228, 243, 258, 273, 288, 303, 318, 333, 348,
1198   363, 378, 393, 407, 199, 214, 229, 244, 259, 274, 289, 304, 319, 334, 349,
1199   364, 379, 394, 408, 421, 215, 230, 245, 260, 275, 290, 305, 320, 335, 350,
1200   365, 380, 395, 409, 422, 434, 231, 246, 261, 276, 291, 306, 321, 336, 351,
1201   366, 381, 396, 410, 423, 435, 446, 247, 262, 277, 292, 307, 322, 337, 352,
1202   367, 382, 397, 411, 424, 436, 447, 457, 263, 278, 293, 308, 323, 338, 353,
1203   368, 383, 398, 412, 425, 437, 448, 458, 467, 279, 294, 309, 324, 339, 354,
1204   369, 384, 399, 413, 426, 438, 449, 459, 468, 476, 295, 310, 325, 340, 355,
1205   370, 385, 400, 414, 427, 439, 450, 460, 469, 477, 484, 311, 326, 341, 356,
1206   371, 386, 401, 415, 428, 440, 451, 461, 470, 478, 485, 491, 327, 342, 357,
1207   372, 387, 402, 416, 429, 441, 452, 462, 471, 479, 486, 492, 497, 343, 358,
1208   373, 388, 403, 417, 430, 442, 453, 463, 472, 480, 487, 493, 498, 502, 359,
1209   374, 389, 404, 418, 431, 443, 454, 464, 473, 481, 488, 494, 499, 503, 506,
1210   375, 390, 405, 419, 432, 444, 455, 465, 474, 482, 489, 495, 500, 504, 507,
1211   509, 391, 406, 420, 433, 445, 456, 466, 475, 483, 490, 496, 501, 505, 508,
1212   510, 511,
1213 };
1214 
1215 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x32[512]) = {
1216   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1217   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1218   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1219   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1220   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1221   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1222   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1223   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1224   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1225   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1226   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1227   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1228   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1229   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1230   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1231   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1232   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1233   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
1234   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1235   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
1236   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1237   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
1238   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1239   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
1240   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1241   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
1242   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1243   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
1244   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1245   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
1246   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1247   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
1248   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1249   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
1250   510, 511,
1251 };
1252 
1253 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x16[512]) = {
1254   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1255   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1256   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1257   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1258   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1259   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1260   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1261   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1262   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1263   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1264   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1265   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1266   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1267   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1268   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1269   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1270   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1271   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
1272   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1273   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
1274   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1275   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
1276   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1277   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
1278   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1279   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
1280   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1281   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
1282   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1283   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
1284   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1285   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
1286   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1287   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
1288   510, 511,
1289 };
1290 
1291 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x32[512]) = {
1292   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
1293   240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
1294   480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
1295   209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
1296   449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
1297   178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
1298   418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
1299   147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
1300   387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
1301   116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
1302   356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
1303   85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
1304   325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
1305   54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
1306   294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
1307   23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
1308   263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
1309   503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
1310   232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
1311   472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
1312   201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
1313   441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
1314   170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
1315   410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
1316   139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
1317   379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
1318   108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
1319   348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
1320   77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
1321   317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
1322   46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
1323   286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
1324   15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
1325   255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
1326   495, 511,
1327 };
1328 
1329 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x16[512]) = {
1330   0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
1331   1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
1332   2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
1333   3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
1334   4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
1335   5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
1336   6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
1337   7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
1338   8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
1339   9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
1340   10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
1341   11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
1342   12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
1343   13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
1344   14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
1345   15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
1346   16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
1347   17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
1348   18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
1349   19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
1350   20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
1351   21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
1352   22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
1353   23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
1354   24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
1355   25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
1356   26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
1357   27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
1358   28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
1359   29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
1360   30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
1361   31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
1362 };
1363 
1364 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x16[256]) = {
1365   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1366   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1367   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1368   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1369   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1370   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1371   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1372   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1373   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1374   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1375   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1376   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1377   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1378   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1379   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1380   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1381   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1382   255,
1383 };
1384 
1385 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x16[256]) = {
1386   0,  16, 32, 48, 64, 80, 96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
1387   1,  17, 33, 49, 65, 81, 97,  113, 129, 145, 161, 177, 193, 209, 225, 241,
1388   2,  18, 34, 50, 66, 82, 98,  114, 130, 146, 162, 178, 194, 210, 226, 242,
1389   3,  19, 35, 51, 67, 83, 99,  115, 131, 147, 163, 179, 195, 211, 227, 243,
1390   4,  20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
1391   5,  21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245,
1392   6,  22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246,
1393   7,  23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
1394   8,  24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248,
1395   9,  25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249,
1396   10, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
1397   11, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251,
1398   12, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252,
1399   13, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
1400   14, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254,
1401   15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255,
1402 };
1403 
1404 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x16[256]) = {
1405   0,   2,   3,   9,   10,  20,  21,  35,  36,  54,  55,  77,  78,  104, 105,
1406   135, 1,   4,   8,   11,  19,  22,  34,  37,  53,  56,  76,  79,  103, 106,
1407   134, 136, 5,   7,   12,  18,  23,  33,  38,  52,  57,  75,  80,  102, 107,
1408   133, 137, 164, 6,   13,  17,  24,  32,  39,  51,  58,  74,  81,  101, 108,
1409   132, 138, 163, 165, 14,  16,  25,  31,  40,  50,  59,  73,  82,  100, 109,
1410   131, 139, 162, 166, 189, 15,  26,  30,  41,  49,  60,  72,  83,  99,  110,
1411   130, 140, 161, 167, 188, 190, 27,  29,  42,  48,  61,  71,  84,  98,  111,
1412   129, 141, 160, 168, 187, 191, 210, 28,  43,  47,  62,  70,  85,  97,  112,
1413   128, 142, 159, 169, 186, 192, 209, 211, 44,  46,  63,  69,  86,  96,  113,
1414   127, 143, 158, 170, 185, 193, 208, 212, 227, 45,  64,  68,  87,  95,  114,
1415   126, 144, 157, 171, 184, 194, 207, 213, 226, 228, 65,  67,  88,  94,  115,
1416   125, 145, 156, 172, 183, 195, 206, 214, 225, 229, 240, 66,  89,  93,  116,
1417   124, 146, 155, 173, 182, 196, 205, 215, 224, 230, 239, 241, 90,  92,  117,
1418   123, 147, 154, 174, 181, 197, 204, 216, 223, 231, 238, 242, 249, 91,  118,
1419   122, 148, 153, 175, 180, 198, 203, 217, 222, 232, 237, 243, 248, 250, 119,
1420   121, 149, 152, 176, 179, 199, 202, 218, 221, 233, 236, 244, 247, 251, 254,
1421   120, 150, 151, 177, 178, 200, 201, 219, 220, 234, 235, 245, 246, 252, 253,
1422   255,
1423 };
1424 
1425 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x32[1024]) = {
1426   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,
1427   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
1428   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
1429   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
1430   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
1431   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
1432   78,   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
1433   91,   92,   93,   94,   95,   96,   97,   98,   99,   100,  101,  102,  103,
1434   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
1435   117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
1436   130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
1437   143,  144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
1438   156,  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
1439   169,  170,  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
1440   182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,  194,
1441   195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
1442   208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
1443   221,  222,  223,  224,  225,  226,  227,  228,  229,  230,  231,  232,  233,
1444   234,  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
1445   247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
1446   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
1447   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
1448   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
1449   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,  309,  310,  311,
1450   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
1451   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
1452   338,  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
1453   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
1454   364,  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
1455   377,  378,  379,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389,
1456   390,  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1457   403,  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,  414,  415,
1458   416,  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,  427,  428,
1459   429,  430,  431,  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
1460   442,  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,  453,  454,
1461   455,  456,  457,  458,  459,  460,  461,  462,  463,  464,  465,  466,  467,
1462   468,  469,  470,  471,  472,  473,  474,  475,  476,  477,  478,  479,  480,
1463   481,  482,  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,
1464   494,  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  506,
1465   507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  517,  518,  519,
1466   520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
1467   533,  534,  535,  536,  537,  538,  539,  540,  541,  542,  543,  544,  545,
1468   546,  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
1469   559,  560,  561,  562,  563,  564,  565,  566,  567,  568,  569,  570,  571,
1470   572,  573,  574,  575,  576,  577,  578,  579,  580,  581,  582,  583,  584,
1471   585,  586,  587,  588,  589,  590,  591,  592,  593,  594,  595,  596,  597,
1472   598,  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  609,  610,
1473   611,  612,  613,  614,  615,  616,  617,  618,  619,  620,  621,  622,  623,
1474   624,  625,  626,  627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
1475   637,  638,  639,  640,  641,  642,  643,  644,  645,  646,  647,  648,  649,
1476   650,  651,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
1477   663,  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
1478   676,  677,  678,  679,  680,  681,  682,  683,  684,  685,  686,  687,  688,
1479   689,  690,  691,  692,  693,  694,  695,  696,  697,  698,  699,  700,  701,
1480   702,  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,  714,
1481   715,  716,  717,  718,  719,  720,  721,  722,  723,  724,  725,  726,  727,
1482   728,  729,  730,  731,  732,  733,  734,  735,  736,  737,  738,  739,  740,
1483   741,  742,  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,
1484   754,  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  765,  766,
1485   767,  768,  769,  770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
1486   780,  781,  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
1487   793,  794,  795,  796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
1488   806,  807,  808,  809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
1489   819,  820,  821,  822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
1490   832,  833,  834,  835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
1491   845,  846,  847,  848,  849,  850,  851,  852,  853,  854,  855,  856,  857,
1492   858,  859,  860,  861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
1493   871,  872,  873,  874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
1494   884,  885,  886,  887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
1495   897,  898,  899,  900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
1496   910,  911,  912,  913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
1497   923,  924,  925,  926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
1498   936,  937,  938,  939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
1499   949,  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
1500   962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
1501   975,  976,  977,  978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
1502   988,  989,  990,  991,  992,  993,  994,  995,  996,  997,  998,  999,  1000,
1503   1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
1504   1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
1505 };
1506 
1507 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x32[1024]) = {
1508   0,   32,   64,  96,   128, 160,  192, 224,  256, 288,  320, 352,  384, 416,
1509   448, 480,  512, 544,  576, 608,  640, 672,  704, 736,  768, 800,  832, 864,
1510   896, 928,  960, 992,  1,   33,   65,  97,   129, 161,  193, 225,  257, 289,
1511   321, 353,  385, 417,  449, 481,  513, 545,  577, 609,  641, 673,  705, 737,
1512   769, 801,  833, 865,  897, 929,  961, 993,  2,   34,   66,  98,   130, 162,
1513   194, 226,  258, 290,  322, 354,  386, 418,  450, 482,  514, 546,  578, 610,
1514   642, 674,  706, 738,  770, 802,  834, 866,  898, 930,  962, 994,  3,   35,
1515   67,  99,   131, 163,  195, 227,  259, 291,  323, 355,  387, 419,  451, 483,
1516   515, 547,  579, 611,  643, 675,  707, 739,  771, 803,  835, 867,  899, 931,
1517   963, 995,  4,   36,   68,  100,  132, 164,  196, 228,  260, 292,  324, 356,
1518   388, 420,  452, 484,  516, 548,  580, 612,  644, 676,  708, 740,  772, 804,
1519   836, 868,  900, 932,  964, 996,  5,   37,   69,  101,  133, 165,  197, 229,
1520   261, 293,  325, 357,  389, 421,  453, 485,  517, 549,  581, 613,  645, 677,
1521   709, 741,  773, 805,  837, 869,  901, 933,  965, 997,  6,   38,   70,  102,
1522   134, 166,  198, 230,  262, 294,  326, 358,  390, 422,  454, 486,  518, 550,
1523   582, 614,  646, 678,  710, 742,  774, 806,  838, 870,  902, 934,  966, 998,
1524   7,   39,   71,  103,  135, 167,  199, 231,  263, 295,  327, 359,  391, 423,
1525   455, 487,  519, 551,  583, 615,  647, 679,  711, 743,  775, 807,  839, 871,
1526   903, 935,  967, 999,  8,   40,   72,  104,  136, 168,  200, 232,  264, 296,
1527   328, 360,  392, 424,  456, 488,  520, 552,  584, 616,  648, 680,  712, 744,
1528   776, 808,  840, 872,  904, 936,  968, 1000, 9,   41,   73,  105,  137, 169,
1529   201, 233,  265, 297,  329, 361,  393, 425,  457, 489,  521, 553,  585, 617,
1530   649, 681,  713, 745,  777, 809,  841, 873,  905, 937,  969, 1001, 10,  42,
1531   74,  106,  138, 170,  202, 234,  266, 298,  330, 362,  394, 426,  458, 490,
1532   522, 554,  586, 618,  650, 682,  714, 746,  778, 810,  842, 874,  906, 938,
1533   970, 1002, 11,  43,   75,  107,  139, 171,  203, 235,  267, 299,  331, 363,
1534   395, 427,  459, 491,  523, 555,  587, 619,  651, 683,  715, 747,  779, 811,
1535   843, 875,  907, 939,  971, 1003, 12,  44,   76,  108,  140, 172,  204, 236,
1536   268, 300,  332, 364,  396, 428,  460, 492,  524, 556,  588, 620,  652, 684,
1537   716, 748,  780, 812,  844, 876,  908, 940,  972, 1004, 13,  45,   77,  109,
1538   141, 173,  205, 237,  269, 301,  333, 365,  397, 429,  461, 493,  525, 557,
1539   589, 621,  653, 685,  717, 749,  781, 813,  845, 877,  909, 941,  973, 1005,
1540   14,  46,   78,  110,  142, 174,  206, 238,  270, 302,  334, 366,  398, 430,
1541   462, 494,  526, 558,  590, 622,  654, 686,  718, 750,  782, 814,  846, 878,
1542   910, 942,  974, 1006, 15,  47,   79,  111,  143, 175,  207, 239,  271, 303,
1543   335, 367,  399, 431,  463, 495,  527, 559,  591, 623,  655, 687,  719, 751,
1544   783, 815,  847, 879,  911, 943,  975, 1007, 16,  48,   80,  112,  144, 176,
1545   208, 240,  272, 304,  336, 368,  400, 432,  464, 496,  528, 560,  592, 624,
1546   656, 688,  720, 752,  784, 816,  848, 880,  912, 944,  976, 1008, 17,  49,
1547   81,  113,  145, 177,  209, 241,  273, 305,  337, 369,  401, 433,  465, 497,
1548   529, 561,  593, 625,  657, 689,  721, 753,  785, 817,  849, 881,  913, 945,
1549   977, 1009, 18,  50,   82,  114,  146, 178,  210, 242,  274, 306,  338, 370,
1550   402, 434,  466, 498,  530, 562,  594, 626,  658, 690,  722, 754,  786, 818,
1551   850, 882,  914, 946,  978, 1010, 19,  51,   83,  115,  147, 179,  211, 243,
1552   275, 307,  339, 371,  403, 435,  467, 499,  531, 563,  595, 627,  659, 691,
1553   723, 755,  787, 819,  851, 883,  915, 947,  979, 1011, 20,  52,   84,  116,
1554   148, 180,  212, 244,  276, 308,  340, 372,  404, 436,  468, 500,  532, 564,
1555   596, 628,  660, 692,  724, 756,  788, 820,  852, 884,  916, 948,  980, 1012,
1556   21,  53,   85,  117,  149, 181,  213, 245,  277, 309,  341, 373,  405, 437,
1557   469, 501,  533, 565,  597, 629,  661, 693,  725, 757,  789, 821,  853, 885,
1558   917, 949,  981, 1013, 22,  54,   86,  118,  150, 182,  214, 246,  278, 310,
1559   342, 374,  406, 438,  470, 502,  534, 566,  598, 630,  662, 694,  726, 758,
1560   790, 822,  854, 886,  918, 950,  982, 1014, 23,  55,   87,  119,  151, 183,
1561   215, 247,  279, 311,  343, 375,  407, 439,  471, 503,  535, 567,  599, 631,
1562   663, 695,  727, 759,  791, 823,  855, 887,  919, 951,  983, 1015, 24,  56,
1563   88,  120,  152, 184,  216, 248,  280, 312,  344, 376,  408, 440,  472, 504,
1564   536, 568,  600, 632,  664, 696,  728, 760,  792, 824,  856, 888,  920, 952,
1565   984, 1016, 25,  57,   89,  121,  153, 185,  217, 249,  281, 313,  345, 377,
1566   409, 441,  473, 505,  537, 569,  601, 633,  665, 697,  729, 761,  793, 825,
1567   857, 889,  921, 953,  985, 1017, 26,  58,   90,  122,  154, 186,  218, 250,
1568   282, 314,  346, 378,  410, 442,  474, 506,  538, 570,  602, 634,  666, 698,
1569   730, 762,  794, 826,  858, 890,  922, 954,  986, 1018, 27,  59,   91,  123,
1570   155, 187,  219, 251,  283, 315,  347, 379,  411, 443,  475, 507,  539, 571,
1571   603, 635,  667, 699,  731, 763,  795, 827,  859, 891,  923, 955,  987, 1019,
1572   28,  60,   92,  124,  156, 188,  220, 252,  284, 316,  348, 380,  412, 444,
1573   476, 508,  540, 572,  604, 636,  668, 700,  732, 764,  796, 828,  860, 892,
1574   924, 956,  988, 1020, 29,  61,   93,  125,  157, 189,  221, 253,  285, 317,
1575   349, 381,  413, 445,  477, 509,  541, 573,  605, 637,  669, 701,  733, 765,
1576   797, 829,  861, 893,  925, 957,  989, 1021, 30,  62,   94,  126,  158, 190,
1577   222, 254,  286, 318,  350, 382,  414, 446,  478, 510,  542, 574,  606, 638,
1578   670, 702,  734, 766,  798, 830,  862, 894,  926, 958,  990, 1022, 31,  63,
1579   95,  127,  159, 191,  223, 255,  287, 319,  351, 383,  415, 447,  479, 511,
1580   543, 575,  607, 639,  671, 703,  735, 767,  799, 831,  863, 895,  927, 959,
1581   991, 1023,
1582 };
1583 
1584 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x32[1024]) = {
1585   0,    2,    3,    9,    10,   20,   21,   35,   36,   54,   55,   77,   78,
1586   104,  105,  135,  136,  170,  171,  209,  210,  252,  253,  299,  300,  350,
1587   351,  405,  406,  464,  465,  527,  1,    4,    8,    11,   19,   22,   34,
1588   37,   53,   56,   76,   79,   103,  106,  134,  137,  169,  172,  208,  211,
1589   251,  254,  298,  301,  349,  352,  404,  407,  463,  466,  526,  528,  5,
1590   7,    12,   18,   23,   33,   38,   52,   57,   75,   80,   102,  107,  133,
1591   138,  168,  173,  207,  212,  250,  255,  297,  302,  348,  353,  403,  408,
1592   462,  467,  525,  529,  588,  6,    13,   17,   24,   32,   39,   51,   58,
1593   74,   81,   101,  108,  132,  139,  167,  174,  206,  213,  249,  256,  296,
1594   303,  347,  354,  402,  409,  461,  468,  524,  530,  587,  589,  14,   16,
1595   25,   31,   40,   50,   59,   73,   82,   100,  109,  131,  140,  166,  175,
1596   205,  214,  248,  257,  295,  304,  346,  355,  401,  410,  460,  469,  523,
1597   531,  586,  590,  645,  15,   26,   30,   41,   49,   60,   72,   83,   99,
1598   110,  130,  141,  165,  176,  204,  215,  247,  258,  294,  305,  345,  356,
1599   400,  411,  459,  470,  522,  532,  585,  591,  644,  646,  27,   29,   42,
1600   48,   61,   71,   84,   98,   111,  129,  142,  164,  177,  203,  216,  246,
1601   259,  293,  306,  344,  357,  399,  412,  458,  471,  521,  533,  584,  592,
1602   643,  647,  698,  28,   43,   47,   62,   70,   85,   97,   112,  128,  143,
1603   163,  178,  202,  217,  245,  260,  292,  307,  343,  358,  398,  413,  457,
1604   472,  520,  534,  583,  593,  642,  648,  697,  699,  44,   46,   63,   69,
1605   86,   96,   113,  127,  144,  162,  179,  201,  218,  244,  261,  291,  308,
1606   342,  359,  397,  414,  456,  473,  519,  535,  582,  594,  641,  649,  696,
1607   700,  747,  45,   64,   68,   87,   95,   114,  126,  145,  161,  180,  200,
1608   219,  243,  262,  290,  309,  341,  360,  396,  415,  455,  474,  518,  536,
1609   581,  595,  640,  650,  695,  701,  746,  748,  65,   67,   88,   94,   115,
1610   125,  146,  160,  181,  199,  220,  242,  263,  289,  310,  340,  361,  395,
1611   416,  454,  475,  517,  537,  580,  596,  639,  651,  694,  702,  745,  749,
1612   792,  66,   89,   93,   116,  124,  147,  159,  182,  198,  221,  241,  264,
1613   288,  311,  339,  362,  394,  417,  453,  476,  516,  538,  579,  597,  638,
1614   652,  693,  703,  744,  750,  791,  793,  90,   92,   117,  123,  148,  158,
1615   183,  197,  222,  240,  265,  287,  312,  338,  363,  393,  418,  452,  477,
1616   515,  539,  578,  598,  637,  653,  692,  704,  743,  751,  790,  794,  833,
1617   91,   118,  122,  149,  157,  184,  196,  223,  239,  266,  286,  313,  337,
1618   364,  392,  419,  451,  478,  514,  540,  577,  599,  636,  654,  691,  705,
1619   742,  752,  789,  795,  832,  834,  119,  121,  150,  156,  185,  195,  224,
1620   238,  267,  285,  314,  336,  365,  391,  420,  450,  479,  513,  541,  576,
1621   600,  635,  655,  690,  706,  741,  753,  788,  796,  831,  835,  870,  120,
1622   151,  155,  186,  194,  225,  237,  268,  284,  315,  335,  366,  390,  421,
1623   449,  480,  512,  542,  575,  601,  634,  656,  689,  707,  740,  754,  787,
1624   797,  830,  836,  869,  871,  152,  154,  187,  193,  226,  236,  269,  283,
1625   316,  334,  367,  389,  422,  448,  481,  511,  543,  574,  602,  633,  657,
1626   688,  708,  739,  755,  786,  798,  829,  837,  868,  872,  903,  153,  188,
1627   192,  227,  235,  270,  282,  317,  333,  368,  388,  423,  447,  482,  510,
1628   544,  573,  603,  632,  658,  687,  709,  738,  756,  785,  799,  828,  838,
1629   867,  873,  902,  904,  189,  191,  228,  234,  271,  281,  318,  332,  369,
1630   387,  424,  446,  483,  509,  545,  572,  604,  631,  659,  686,  710,  737,
1631   757,  784,  800,  827,  839,  866,  874,  901,  905,  932,  190,  229,  233,
1632   272,  280,  319,  331,  370,  386,  425,  445,  484,  508,  546,  571,  605,
1633   630,  660,  685,  711,  736,  758,  783,  801,  826,  840,  865,  875,  900,
1634   906,  931,  933,  230,  232,  273,  279,  320,  330,  371,  385,  426,  444,
1635   485,  507,  547,  570,  606,  629,  661,  684,  712,  735,  759,  782,  802,
1636   825,  841,  864,  876,  899,  907,  930,  934,  957,  231,  274,  278,  321,
1637   329,  372,  384,  427,  443,  486,  506,  548,  569,  607,  628,  662,  683,
1638   713,  734,  760,  781,  803,  824,  842,  863,  877,  898,  908,  929,  935,
1639   956,  958,  275,  277,  322,  328,  373,  383,  428,  442,  487,  505,  549,
1640   568,  608,  627,  663,  682,  714,  733,  761,  780,  804,  823,  843,  862,
1641   878,  897,  909,  928,  936,  955,  959,  978,  276,  323,  327,  374,  382,
1642   429,  441,  488,  504,  550,  567,  609,  626,  664,  681,  715,  732,  762,
1643   779,  805,  822,  844,  861,  879,  896,  910,  927,  937,  954,  960,  977,
1644   979,  324,  326,  375,  381,  430,  440,  489,  503,  551,  566,  610,  625,
1645   665,  680,  716,  731,  763,  778,  806,  821,  845,  860,  880,  895,  911,
1646   926,  938,  953,  961,  976,  980,  995,  325,  376,  380,  431,  439,  490,
1647   502,  552,  565,  611,  624,  666,  679,  717,  730,  764,  777,  807,  820,
1648   846,  859,  881,  894,  912,  925,  939,  952,  962,  975,  981,  994,  996,
1649   377,  379,  432,  438,  491,  501,  553,  564,  612,  623,  667,  678,  718,
1650   729,  765,  776,  808,  819,  847,  858,  882,  893,  913,  924,  940,  951,
1651   963,  974,  982,  993,  997,  1008, 378,  433,  437,  492,  500,  554,  563,
1652   613,  622,  668,  677,  719,  728,  766,  775,  809,  818,  848,  857,  883,
1653   892,  914,  923,  941,  950,  964,  973,  983,  992,  998,  1007, 1009, 434,
1654   436,  493,  499,  555,  562,  614,  621,  669,  676,  720,  727,  767,  774,
1655   810,  817,  849,  856,  884,  891,  915,  922,  942,  949,  965,  972,  984,
1656   991,  999,  1006, 1010, 1017, 435,  494,  498,  556,  561,  615,  620,  670,
1657   675,  721,  726,  768,  773,  811,  816,  850,  855,  885,  890,  916,  921,
1658   943,  948,  966,  971,  985,  990,  1000, 1005, 1011, 1016, 1018, 495,  497,
1659   557,  560,  616,  619,  671,  674,  722,  725,  769,  772,  812,  815,  851,
1660   854,  886,  889,  917,  920,  944,  947,  967,  970,  986,  989,  1001, 1004,
1661   1012, 1015, 1019, 1022, 496,  558,  559,  617,  618,  672,  673,  723,  724,
1662   770,  771,  813,  814,  852,  853,  887,  888,  918,  919,  945,  946,  968,
1663   969,  987,  988,  1002, 1003, 1013, 1014, 1020, 1021, 1023,
1664 };
1665 
1666 const SCAN_ORDER av1_scan_orders[TX_SIZES_ALL][TX_TYPES] = {
1667   {
1668       // TX_4X4
1669       { default_scan_4x4, av1_default_iscan_4x4 },
1670       { default_scan_4x4, av1_default_iscan_4x4 },
1671       { default_scan_4x4, av1_default_iscan_4x4 },
1672       { default_scan_4x4, av1_default_iscan_4x4 },
1673       { default_scan_4x4, av1_default_iscan_4x4 },
1674       { default_scan_4x4, av1_default_iscan_4x4 },
1675       { default_scan_4x4, av1_default_iscan_4x4 },
1676       { default_scan_4x4, av1_default_iscan_4x4 },
1677       { default_scan_4x4, av1_default_iscan_4x4 },
1678       { default_scan_4x4, av1_default_iscan_4x4 },
1679       { mrow_scan_4x4, av1_mrow_iscan_4x4 },
1680       { mcol_scan_4x4, av1_mcol_iscan_4x4 },
1681       { mrow_scan_4x4, av1_mrow_iscan_4x4 },
1682       { mcol_scan_4x4, av1_mcol_iscan_4x4 },
1683       { mrow_scan_4x4, av1_mrow_iscan_4x4 },
1684       { mcol_scan_4x4, av1_mcol_iscan_4x4 },
1685   },
1686   {
1687       // TX_8X8
1688       { default_scan_8x8, av1_default_iscan_8x8 },
1689       { default_scan_8x8, av1_default_iscan_8x8 },
1690       { default_scan_8x8, av1_default_iscan_8x8 },
1691       { default_scan_8x8, av1_default_iscan_8x8 },
1692       { default_scan_8x8, av1_default_iscan_8x8 },
1693       { default_scan_8x8, av1_default_iscan_8x8 },
1694       { default_scan_8x8, av1_default_iscan_8x8 },
1695       { default_scan_8x8, av1_default_iscan_8x8 },
1696       { default_scan_8x8, av1_default_iscan_8x8 },
1697       { default_scan_8x8, av1_default_iscan_8x8 },
1698       { mrow_scan_8x8, av1_mrow_iscan_8x8 },
1699       { mcol_scan_8x8, av1_mcol_iscan_8x8 },
1700       { mrow_scan_8x8, av1_mrow_iscan_8x8 },
1701       { mcol_scan_8x8, av1_mcol_iscan_8x8 },
1702       { mrow_scan_8x8, av1_mrow_iscan_8x8 },
1703       { mcol_scan_8x8, av1_mcol_iscan_8x8 },
1704   },
1705   {
1706       // TX_16X16
1707       { default_scan_16x16, av1_default_iscan_16x16 },
1708       { default_scan_16x16, av1_default_iscan_16x16 },
1709       { default_scan_16x16, av1_default_iscan_16x16 },
1710       { default_scan_16x16, av1_default_iscan_16x16 },
1711       { default_scan_16x16, av1_default_iscan_16x16 },
1712       { default_scan_16x16, av1_default_iscan_16x16 },
1713       { default_scan_16x16, av1_default_iscan_16x16 },
1714       { default_scan_16x16, av1_default_iscan_16x16 },
1715       { default_scan_16x16, av1_default_iscan_16x16 },
1716       { default_scan_16x16, av1_default_iscan_16x16 },
1717       { mrow_scan_16x16, av1_mrow_iscan_16x16 },
1718       { mcol_scan_16x16, av1_mcol_iscan_16x16 },
1719       { mrow_scan_16x16, av1_mrow_iscan_16x16 },
1720       { mcol_scan_16x16, av1_mcol_iscan_16x16 },
1721       { mrow_scan_16x16, av1_mrow_iscan_16x16 },
1722       { mcol_scan_16x16, av1_mcol_iscan_16x16 },
1723   },
1724   {
1725       // TX_32X32
1726       { default_scan_32x32, av1_default_iscan_32x32 },
1727       { default_scan_32x32, av1_default_iscan_32x32 },
1728       { default_scan_32x32, av1_default_iscan_32x32 },
1729       { default_scan_32x32, av1_default_iscan_32x32 },
1730       { default_scan_32x32, av1_default_iscan_32x32 },
1731       { default_scan_32x32, av1_default_iscan_32x32 },
1732       { default_scan_32x32, av1_default_iscan_32x32 },
1733       { default_scan_32x32, av1_default_iscan_32x32 },
1734       { default_scan_32x32, av1_default_iscan_32x32 },
1735       { default_scan_32x32, av1_default_iscan_32x32 },
1736       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1737       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1738       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1739       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1740       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1741       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1742   },
1743   {
1744       // TX_64X64
1745       // Half of the coefficients of tx64 at higher frequencies are set to
1746       // zeros. So tx32's scan order is used.
1747       { default_scan_32x32, av1_default_iscan_32x32 },
1748       { default_scan_32x32, av1_default_iscan_32x32 },
1749       { default_scan_32x32, av1_default_iscan_32x32 },
1750       { default_scan_32x32, av1_default_iscan_32x32 },
1751       { default_scan_32x32, av1_default_iscan_32x32 },
1752       { default_scan_32x32, av1_default_iscan_32x32 },
1753       { default_scan_32x32, av1_default_iscan_32x32 },
1754       { default_scan_32x32, av1_default_iscan_32x32 },
1755       { default_scan_32x32, av1_default_iscan_32x32 },
1756       { default_scan_32x32, av1_default_iscan_32x32 },
1757       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1758       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1759       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1760       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1761       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1762       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1763   },
1764   {
1765       // TX_4X8
1766       { default_scan_4x8, av1_default_iscan_4x8 },
1767       { default_scan_4x8, av1_default_iscan_4x8 },
1768       { default_scan_4x8, av1_default_iscan_4x8 },
1769       { default_scan_4x8, av1_default_iscan_4x8 },
1770       { default_scan_4x8, av1_default_iscan_4x8 },
1771       { default_scan_4x8, av1_default_iscan_4x8 },
1772       { default_scan_4x8, av1_default_iscan_4x8 },
1773       { default_scan_4x8, av1_default_iscan_4x8 },
1774       { default_scan_4x8, av1_default_iscan_4x8 },
1775       { default_scan_4x8, av1_default_iscan_4x8 },
1776       { mrow_scan_4x8, av1_mrow_iscan_4x8 },
1777       { mcol_scan_4x8, av1_mcol_iscan_4x8 },
1778       { mrow_scan_4x8, av1_mrow_iscan_4x8 },
1779       { mcol_scan_4x8, av1_mcol_iscan_4x8 },
1780       { mrow_scan_4x8, av1_mrow_iscan_4x8 },
1781       { mcol_scan_4x8, av1_mcol_iscan_4x8 },
1782   },
1783   {
1784       // TX_8X4
1785       { default_scan_8x4, av1_default_iscan_8x4 },
1786       { default_scan_8x4, av1_default_iscan_8x4 },
1787       { default_scan_8x4, av1_default_iscan_8x4 },
1788       { default_scan_8x4, av1_default_iscan_8x4 },
1789       { default_scan_8x4, av1_default_iscan_8x4 },
1790       { default_scan_8x4, av1_default_iscan_8x4 },
1791       { default_scan_8x4, av1_default_iscan_8x4 },
1792       { default_scan_8x4, av1_default_iscan_8x4 },
1793       { default_scan_8x4, av1_default_iscan_8x4 },
1794       { default_scan_8x4, av1_default_iscan_8x4 },
1795       { mrow_scan_8x4, av1_mrow_iscan_8x4 },
1796       { mcol_scan_8x4, av1_mcol_iscan_8x4 },
1797       { mrow_scan_8x4, av1_mrow_iscan_8x4 },
1798       { mcol_scan_8x4, av1_mcol_iscan_8x4 },
1799       { mrow_scan_8x4, av1_mrow_iscan_8x4 },
1800       { mcol_scan_8x4, av1_mcol_iscan_8x4 },
1801   },
1802   {
1803       // TX_8X16
1804       { default_scan_8x16, av1_default_iscan_8x16 },
1805       { default_scan_8x16, av1_default_iscan_8x16 },
1806       { default_scan_8x16, av1_default_iscan_8x16 },
1807       { default_scan_8x16, av1_default_iscan_8x16 },
1808       { default_scan_8x16, av1_default_iscan_8x16 },
1809       { default_scan_8x16, av1_default_iscan_8x16 },
1810       { default_scan_8x16, av1_default_iscan_8x16 },
1811       { default_scan_8x16, av1_default_iscan_8x16 },
1812       { default_scan_8x16, av1_default_iscan_8x16 },
1813       { default_scan_8x16, av1_default_iscan_8x16 },
1814       { mrow_scan_8x16, av1_mrow_iscan_8x16 },
1815       { mcol_scan_8x16, av1_mcol_iscan_8x16 },
1816       { mrow_scan_8x16, av1_mrow_iscan_8x16 },
1817       { mcol_scan_8x16, av1_mcol_iscan_8x16 },
1818       { mrow_scan_8x16, av1_mrow_iscan_8x16 },
1819       { mcol_scan_8x16, av1_mcol_iscan_8x16 },
1820   },
1821   {
1822       // TX_16X8
1823       { default_scan_16x8, av1_default_iscan_16x8 },
1824       { default_scan_16x8, av1_default_iscan_16x8 },
1825       { default_scan_16x8, av1_default_iscan_16x8 },
1826       { default_scan_16x8, av1_default_iscan_16x8 },
1827       { default_scan_16x8, av1_default_iscan_16x8 },
1828       { default_scan_16x8, av1_default_iscan_16x8 },
1829       { default_scan_16x8, av1_default_iscan_16x8 },
1830       { default_scan_16x8, av1_default_iscan_16x8 },
1831       { default_scan_16x8, av1_default_iscan_16x8 },
1832       { default_scan_16x8, av1_default_iscan_16x8 },
1833       { mrow_scan_16x8, av1_mrow_iscan_16x8 },
1834       { mcol_scan_16x8, av1_mcol_iscan_16x8 },
1835       { mrow_scan_16x8, av1_mrow_iscan_16x8 },
1836       { mcol_scan_16x8, av1_mcol_iscan_16x8 },
1837       { mrow_scan_16x8, av1_mrow_iscan_16x8 },
1838       { mcol_scan_16x8, av1_mcol_iscan_16x8 },
1839   },
1840   {
1841       // TX_16X32
1842       { default_scan_16x32, av1_default_iscan_16x32 },
1843       { default_scan_16x32, av1_default_iscan_16x32 },
1844       { default_scan_16x32, av1_default_iscan_16x32 },
1845       { default_scan_16x32, av1_default_iscan_16x32 },
1846       { default_scan_16x32, av1_default_iscan_16x32 },
1847       { default_scan_16x32, av1_default_iscan_16x32 },
1848       { default_scan_16x32, av1_default_iscan_16x32 },
1849       { default_scan_16x32, av1_default_iscan_16x32 },
1850       { default_scan_16x32, av1_default_iscan_16x32 },
1851       { default_scan_16x32, av1_default_iscan_16x32 },
1852       { mrow_scan_16x32, av1_mrow_iscan_16x32 },
1853       { mcol_scan_16x32, av1_mcol_iscan_16x32 },
1854       { mrow_scan_16x32, av1_mrow_iscan_16x32 },
1855       { mcol_scan_16x32, av1_mcol_iscan_16x32 },
1856       { mrow_scan_16x32, av1_mrow_iscan_16x32 },
1857       { mcol_scan_16x32, av1_mcol_iscan_16x32 },
1858   },
1859   {
1860       // TX_32X16
1861       { default_scan_32x16, av1_default_iscan_32x16 },
1862       { default_scan_32x16, av1_default_iscan_32x16 },
1863       { default_scan_32x16, av1_default_iscan_32x16 },
1864       { default_scan_32x16, av1_default_iscan_32x16 },
1865       { default_scan_32x16, av1_default_iscan_32x16 },
1866       { default_scan_32x16, av1_default_iscan_32x16 },
1867       { default_scan_32x16, av1_default_iscan_32x16 },
1868       { default_scan_32x16, av1_default_iscan_32x16 },
1869       { default_scan_32x16, av1_default_iscan_32x16 },
1870       { default_scan_32x16, av1_default_iscan_32x16 },
1871       { mrow_scan_32x16, av1_mrow_iscan_32x16 },
1872       { mcol_scan_32x16, av1_mcol_iscan_32x16 },
1873       { mrow_scan_32x16, av1_mrow_iscan_32x16 },
1874       { mcol_scan_32x16, av1_mcol_iscan_32x16 },
1875       { mrow_scan_32x16, av1_mrow_iscan_32x16 },
1876       { mcol_scan_32x16, av1_mcol_iscan_32x16 },
1877   },
1878   {
1879       // TX_32X64
1880       // Half of the coefficients of tx64 at higher frequencies are set to
1881       // zeros. So tx32's scan order is used.
1882       { default_scan_32x32, av1_default_iscan_32x32 },
1883       { default_scan_32x32, av1_default_iscan_32x32 },
1884       { default_scan_32x32, av1_default_iscan_32x32 },
1885       { default_scan_32x32, av1_default_iscan_32x32 },
1886       { default_scan_32x32, av1_default_iscan_32x32 },
1887       { default_scan_32x32, av1_default_iscan_32x32 },
1888       { default_scan_32x32, av1_default_iscan_32x32 },
1889       { default_scan_32x32, av1_default_iscan_32x32 },
1890       { default_scan_32x32, av1_default_iscan_32x32 },
1891       { default_scan_32x32, av1_default_iscan_32x32 },
1892       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1893       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1894       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1895       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1896       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1897       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1898   },
1899   {
1900       // TX_64X32
1901       // Half of the coefficients of tx64 at higher frequencies are set to
1902       // zeros. So tx32's scan order is used.
1903       { default_scan_32x32, av1_default_iscan_32x32 },
1904       { default_scan_32x32, av1_default_iscan_32x32 },
1905       { default_scan_32x32, av1_default_iscan_32x32 },
1906       { default_scan_32x32, av1_default_iscan_32x32 },
1907       { default_scan_32x32, av1_default_iscan_32x32 },
1908       { default_scan_32x32, av1_default_iscan_32x32 },
1909       { default_scan_32x32, av1_default_iscan_32x32 },
1910       { default_scan_32x32, av1_default_iscan_32x32 },
1911       { default_scan_32x32, av1_default_iscan_32x32 },
1912       { default_scan_32x32, av1_default_iscan_32x32 },
1913       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1914       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1915       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1916       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1917       { mrow_scan_32x32, av1_mrow_iscan_32x32 },
1918       { mcol_scan_32x32, av1_mcol_iscan_32x32 },
1919   },
1920   {
1921       // TX_4X16
1922       { default_scan_4x16, av1_default_iscan_4x16 },
1923       { default_scan_4x16, av1_default_iscan_4x16 },
1924       { default_scan_4x16, av1_default_iscan_4x16 },
1925       { default_scan_4x16, av1_default_iscan_4x16 },
1926       { default_scan_4x16, av1_default_iscan_4x16 },
1927       { default_scan_4x16, av1_default_iscan_4x16 },
1928       { default_scan_4x16, av1_default_iscan_4x16 },
1929       { default_scan_4x16, av1_default_iscan_4x16 },
1930       { default_scan_4x16, av1_default_iscan_4x16 },
1931       { default_scan_4x16, av1_default_iscan_4x16 },
1932       { mrow_scan_4x16, av1_mrow_iscan_4x16 },
1933       { mcol_scan_4x16, av1_mcol_iscan_4x16 },
1934       { mrow_scan_4x16, av1_mrow_iscan_4x16 },
1935       { mcol_scan_4x16, av1_mcol_iscan_4x16 },
1936       { mrow_scan_4x16, av1_mrow_iscan_4x16 },
1937       { mcol_scan_4x16, av1_mcol_iscan_4x16 },
1938   },
1939   {
1940       // TX_16X4
1941       { default_scan_16x4, av1_default_iscan_16x4 },
1942       { default_scan_16x4, av1_default_iscan_16x4 },
1943       { default_scan_16x4, av1_default_iscan_16x4 },
1944       { default_scan_16x4, av1_default_iscan_16x4 },
1945       { default_scan_16x4, av1_default_iscan_16x4 },
1946       { default_scan_16x4, av1_default_iscan_16x4 },
1947       { default_scan_16x4, av1_default_iscan_16x4 },
1948       { default_scan_16x4, av1_default_iscan_16x4 },
1949       { default_scan_16x4, av1_default_iscan_16x4 },
1950       { default_scan_16x4, av1_default_iscan_16x4 },
1951       { mrow_scan_16x4, av1_mrow_iscan_16x4 },
1952       { mcol_scan_16x4, av1_mcol_iscan_16x4 },
1953       { mrow_scan_16x4, av1_mrow_iscan_16x4 },
1954       { mcol_scan_16x4, av1_mcol_iscan_16x4 },
1955       { mrow_scan_16x4, av1_mrow_iscan_16x4 },
1956       { mcol_scan_16x4, av1_mcol_iscan_16x4 },
1957   },
1958   {
1959       // TX_8X32
1960       { default_scan_8x32, av1_default_iscan_8x32 },
1961       { default_scan_8x32, av1_default_iscan_8x32 },
1962       { default_scan_8x32, av1_default_iscan_8x32 },
1963       { default_scan_8x32, av1_default_iscan_8x32 },
1964       { default_scan_8x32, av1_default_iscan_8x32 },
1965       { default_scan_8x32, av1_default_iscan_8x32 },
1966       { default_scan_8x32, av1_default_iscan_8x32 },
1967       { default_scan_8x32, av1_default_iscan_8x32 },
1968       { default_scan_8x32, av1_default_iscan_8x32 },
1969       { default_scan_8x32, av1_default_iscan_8x32 },
1970       { mrow_scan_8x32, av1_mrow_iscan_8x32 },
1971       { mcol_scan_8x32, av1_mcol_iscan_8x32 },
1972       { mrow_scan_8x32, av1_mrow_iscan_8x32 },
1973       { mcol_scan_8x32, av1_mcol_iscan_8x32 },
1974       { mrow_scan_8x32, av1_mrow_iscan_8x32 },
1975       { mcol_scan_8x32, av1_mcol_iscan_8x32 },
1976   },
1977   {
1978       // TX_32X8
1979       { default_scan_32x8, av1_default_iscan_32x8 },
1980       { default_scan_32x8, av1_default_iscan_32x8 },
1981       { default_scan_32x8, av1_default_iscan_32x8 },
1982       { default_scan_32x8, av1_default_iscan_32x8 },
1983       { default_scan_32x8, av1_default_iscan_32x8 },
1984       { default_scan_32x8, av1_default_iscan_32x8 },
1985       { default_scan_32x8, av1_default_iscan_32x8 },
1986       { default_scan_32x8, av1_default_iscan_32x8 },
1987       { default_scan_32x8, av1_default_iscan_32x8 },
1988       { default_scan_32x8, av1_default_iscan_32x8 },
1989       { mrow_scan_32x8, av1_mrow_iscan_32x8 },
1990       { mcol_scan_32x8, av1_mcol_iscan_32x8 },
1991       { mrow_scan_32x8, av1_mrow_iscan_32x8 },
1992       { mcol_scan_32x8, av1_mcol_iscan_32x8 },
1993       { mrow_scan_32x8, av1_mrow_iscan_32x8 },
1994       { mcol_scan_32x8, av1_mcol_iscan_32x8 },
1995   },
1996   {
1997       // TX_16X64
1998       // Half of the coefficients of tx64 at higher frequencies are set to
1999       // zeros. So tx32's scan order is used.
2000       { default_scan_16x32, av1_default_iscan_16x32 },
2001       { default_scan_16x32, av1_default_iscan_16x32 },
2002       { default_scan_16x32, av1_default_iscan_16x32 },
2003       { default_scan_16x32, av1_default_iscan_16x32 },
2004       { default_scan_16x32, av1_default_iscan_16x32 },
2005       { default_scan_16x32, av1_default_iscan_16x32 },
2006       { default_scan_16x32, av1_default_iscan_16x32 },
2007       { default_scan_16x32, av1_default_iscan_16x32 },
2008       { default_scan_16x32, av1_default_iscan_16x32 },
2009       { default_scan_16x32, av1_default_iscan_16x32 },
2010       { mrow_scan_16x32, av1_mrow_iscan_16x32 },
2011       { mcol_scan_16x32, av1_mcol_iscan_16x32 },
2012       { mrow_scan_16x32, av1_mrow_iscan_16x32 },
2013       { mcol_scan_16x32, av1_mcol_iscan_16x32 },
2014       { mrow_scan_16x32, av1_mrow_iscan_16x32 },
2015       { mcol_scan_16x32, av1_mcol_iscan_16x32 },
2016   },
2017   {
2018       // TX_64X16
2019       // Half of the coefficients of tx64 at higher frequencies are set to
2020       // zeros. So tx32's scan order is used.
2021       { default_scan_32x16, av1_default_iscan_32x16 },
2022       { default_scan_32x16, av1_default_iscan_32x16 },
2023       { default_scan_32x16, av1_default_iscan_32x16 },
2024       { default_scan_32x16, av1_default_iscan_32x16 },
2025       { default_scan_32x16, av1_default_iscan_32x16 },
2026       { default_scan_32x16, av1_default_iscan_32x16 },
2027       { default_scan_32x16, av1_default_iscan_32x16 },
2028       { default_scan_32x16, av1_default_iscan_32x16 },
2029       { default_scan_32x16, av1_default_iscan_32x16 },
2030       { default_scan_32x16, av1_default_iscan_32x16 },
2031       { mrow_scan_32x16, av1_mrow_iscan_32x16 },
2032       { mcol_scan_32x16, av1_mcol_iscan_32x16 },
2033       { mrow_scan_32x16, av1_mrow_iscan_32x16 },
2034       { mcol_scan_32x16, av1_mcol_iscan_32x16 },
2035       { mrow_scan_32x16, av1_mrow_iscan_32x16 },
2036       { mcol_scan_32x16, av1_mcol_iscan_32x16 },
2037   },
2038 };
2039