• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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,
18                 default_scan_4x4[16]) = { 0, 1,  4,  8,  5, 2,  3,  6,
19                                           9, 12, 13, 10, 7, 11, 14, 15 };
20 
21 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x4[16]) = {
22   0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15,
23 };
24 
25 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x4[16]) = {
26   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
27 };
28 
29 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x8[32]) = {
30   0,  1,  4,  2,  5,  8,  3,  6,  9,  12, 7,  10, 13, 16, 11, 14,
31   17, 20, 15, 18, 21, 24, 19, 22, 25, 28, 23, 26, 29, 27, 30, 31,
32 };
33 
34 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x8[32]) = {
35   0, 4, 8,  12, 16, 20, 24, 28, 1, 5, 9,  13, 17, 21, 25, 29,
36   2, 6, 10, 14, 18, 22, 26, 30, 3, 7, 11, 15, 19, 23, 27, 31,
37 };
38 
39 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x8[32]) = {
40   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
41   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
42 };
43 
44 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x4[32]) = {
45   0,  8, 1,  16, 9,  2, 24, 17, 10, 3, 25, 18, 11, 4,  26, 19,
46   12, 5, 27, 20, 13, 6, 28, 21, 14, 7, 29, 22, 15, 30, 23, 31,
47 };
48 
49 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x4[32]) = {
50   0, 8,  16, 24, 1, 9,  17, 25, 2, 10, 18, 26, 3, 11, 19, 27,
51   4, 12, 20, 28, 5, 13, 21, 29, 6, 14, 22, 30, 7, 15, 23, 31,
52 };
53 
54 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x4[32]) = {
55   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
56   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
57 };
58 
59 DECLARE_ALIGNED(16, static const int16_t, default_scan_4x16[64]) = {
60   0,  1,  4,  2,  5,  8,  3,  6,  9,  12, 7,  10, 13, 16, 11, 14,
61   17, 20, 15, 18, 21, 24, 19, 22, 25, 28, 23, 26, 29, 32, 27, 30,
62   33, 36, 31, 34, 37, 40, 35, 38, 41, 44, 39, 42, 45, 48, 43, 46,
63   49, 52, 47, 50, 53, 56, 51, 54, 57, 60, 55, 58, 61, 59, 62, 63,
64 };
65 
66 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x4[64]) = {
67   0,  16, 1,  32, 17, 2,  48, 33, 18, 3,  49, 34, 19, 4,  50, 35,
68   20, 5,  51, 36, 21, 6,  52, 37, 22, 7,  53, 38, 23, 8,  54, 39,
69   24, 9,  55, 40, 25, 10, 56, 41, 26, 11, 57, 42, 27, 12, 58, 43,
70   28, 13, 59, 44, 29, 14, 60, 45, 30, 15, 61, 46, 31, 62, 47, 63,
71 };
72 
73 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_4x16[64]) = {
74   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
75   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
76   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
77   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
78 };
79 
80 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x4[64]) = {
81   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
82   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
83   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
84   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
85 };
86 
87 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_4x16[64]) = {
88   0, 4, 8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
89   1, 5, 9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61,
90   2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
91   3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
92 };
93 
94 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x4[64]) = {
95   0,  16, 32, 48, 1,  17, 33, 49, 2,  18, 34, 50, 3,  19, 35, 51,
96   4,  20, 36, 52, 5,  21, 37, 53, 6,  22, 38, 54, 7,  23, 39, 55,
97   8,  24, 40, 56, 9,  25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
98   12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63,
99 };
100 
101 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x32[256]) = {
102   0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
103   5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
104   21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
105   30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
106   39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
107   96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
108   105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
109   114, 121, 128, 87,  94,  101, 108, 115, 122, 129, 136, 95,  102, 109, 116,
110   123, 130, 137, 144, 103, 110, 117, 124, 131, 138, 145, 152, 111, 118, 125,
111   132, 139, 146, 153, 160, 119, 126, 133, 140, 147, 154, 161, 168, 127, 134,
112   141, 148, 155, 162, 169, 176, 135, 142, 149, 156, 163, 170, 177, 184, 143,
113   150, 157, 164, 171, 178, 185, 192, 151, 158, 165, 172, 179, 186, 193, 200,
114   159, 166, 173, 180, 187, 194, 201, 208, 167, 174, 181, 188, 195, 202, 209,
115   216, 175, 182, 189, 196, 203, 210, 217, 224, 183, 190, 197, 204, 211, 218,
116   225, 232, 191, 198, 205, 212, 219, 226, 233, 240, 199, 206, 213, 220, 227,
117   234, 241, 248, 207, 214, 221, 228, 235, 242, 249, 215, 222, 229, 236, 243,
118   250, 223, 230, 237, 244, 251, 231, 238, 245, 252, 239, 246, 253, 247, 254,
119   255,
120 };
121 
122 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x8[256]) = {
123   0,   32,  1,   64,  33,  2,   96,  65,  34,  3,   128, 97,  66,  35,  4,
124   160, 129, 98,  67,  36,  5,   192, 161, 130, 99,  68,  37,  6,   224, 193,
125   162, 131, 100, 69,  38,  7,   225, 194, 163, 132, 101, 70,  39,  8,   226,
126   195, 164, 133, 102, 71,  40,  9,   227, 196, 165, 134, 103, 72,  41,  10,
127   228, 197, 166, 135, 104, 73,  42,  11,  229, 198, 167, 136, 105, 74,  43,
128   12,  230, 199, 168, 137, 106, 75,  44,  13,  231, 200, 169, 138, 107, 76,
129   45,  14,  232, 201, 170, 139, 108, 77,  46,  15,  233, 202, 171, 140, 109,
130   78,  47,  16,  234, 203, 172, 141, 110, 79,  48,  17,  235, 204, 173, 142,
131   111, 80,  49,  18,  236, 205, 174, 143, 112, 81,  50,  19,  237, 206, 175,
132   144, 113, 82,  51,  20,  238, 207, 176, 145, 114, 83,  52,  21,  239, 208,
133   177, 146, 115, 84,  53,  22,  240, 209, 178, 147, 116, 85,  54,  23,  241,
134   210, 179, 148, 117, 86,  55,  24,  242, 211, 180, 149, 118, 87,  56,  25,
135   243, 212, 181, 150, 119, 88,  57,  26,  244, 213, 182, 151, 120, 89,  58,
136   27,  245, 214, 183, 152, 121, 90,  59,  28,  246, 215, 184, 153, 122, 91,
137   60,  29,  247, 216, 185, 154, 123, 92,  61,  30,  248, 217, 186, 155, 124,
138   93,  62,  31,  249, 218, 187, 156, 125, 94,  63,  250, 219, 188, 157, 126,
139   95,  251, 220, 189, 158, 127, 252, 221, 190, 159, 253, 222, 191, 254, 223,
140   255,
141 };
142 
143 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x32[256]) = {
144   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
145   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
146   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
147   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
148   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
149   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
150   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
151   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
152   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
153   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
154   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
155   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
156   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
157   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
158   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
159   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
160   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
161   255,
162 };
163 
164 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x8[256]) = {
165   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
166   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
167   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
168   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
169   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
170   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
171   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
172   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
173   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
174   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
175   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
176   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
177   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
178   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
179   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
180   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
181   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
182   255,
183 };
184 
185 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x32[256]) = {
186   0,   8,   16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96,  104, 112,
187   120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232,
188   240, 248, 1,   9,   17,  25,  33,  41,  49,  57,  65,  73,  81,  89,  97,
189   105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193, 201, 209, 217,
190   225, 233, 241, 249, 2,   10,  18,  26,  34,  42,  50,  58,  66,  74,  82,
191   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
192   210, 218, 226, 234, 242, 250, 3,   11,  19,  27,  35,  43,  51,  59,  67,
193   75,  83,  91,  99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187,
194   195, 203, 211, 219, 227, 235, 243, 251, 4,   12,  20,  28,  36,  44,  52,
195   60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148, 156, 164, 172,
196   180, 188, 196, 204, 212, 220, 228, 236, 244, 252, 5,   13,  21,  29,  37,
197   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
198   165, 173, 181, 189, 197, 205, 213, 221, 229, 237, 245, 253, 6,   14,  22,
199   30,  38,  46,  54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142,
200   150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230, 238, 246, 254, 7,
201   15,  23,  31,  39,  47,  55,  63,  71,  79,  87,  95,  103, 111, 119, 127,
202   135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231, 239, 247,
203   255,
204 };
205 
206 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x8[256]) = {
207   0,  32, 64, 96,  128, 160, 192, 224, 1,  33, 65, 97,  129, 161, 193, 225,
208   2,  34, 66, 98,  130, 162, 194, 226, 3,  35, 67, 99,  131, 163, 195, 227,
209   4,  36, 68, 100, 132, 164, 196, 228, 5,  37, 69, 101, 133, 165, 197, 229,
210   6,  38, 70, 102, 134, 166, 198, 230, 7,  39, 71, 103, 135, 167, 199, 231,
211   8,  40, 72, 104, 136, 168, 200, 232, 9,  41, 73, 105, 137, 169, 201, 233,
212   10, 42, 74, 106, 138, 170, 202, 234, 11, 43, 75, 107, 139, 171, 203, 235,
213   12, 44, 76, 108, 140, 172, 204, 236, 13, 45, 77, 109, 141, 173, 205, 237,
214   14, 46, 78, 110, 142, 174, 206, 238, 15, 47, 79, 111, 143, 175, 207, 239,
215   16, 48, 80, 112, 144, 176, 208, 240, 17, 49, 81, 113, 145, 177, 209, 241,
216   18, 50, 82, 114, 146, 178, 210, 242, 19, 51, 83, 115, 147, 179, 211, 243,
217   20, 52, 84, 116, 148, 180, 212, 244, 21, 53, 85, 117, 149, 181, 213, 245,
218   22, 54, 86, 118, 150, 182, 214, 246, 23, 55, 87, 119, 151, 183, 215, 247,
219   24, 56, 88, 120, 152, 184, 216, 248, 25, 57, 89, 121, 153, 185, 217, 249,
220   26, 58, 90, 122, 154, 186, 218, 250, 27, 59, 91, 123, 155, 187, 219, 251,
221   28, 60, 92, 124, 156, 188, 220, 252, 29, 61, 93, 125, 157, 189, 221, 253,
222   30, 62, 94, 126, 158, 190, 222, 254, 31, 63, 95, 127, 159, 191, 223, 255,
223 };
224 
225 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x8[64]) = {
226   0,  1,  8,  16, 9,  2,  3,  10, 17, 24, 32, 25, 18, 11, 4,  5,
227   12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6,  7,  14, 21, 28,
228   35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
229   58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
230 };
231 
232 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x8[64]) = {
233   0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
234   2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
235   4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
236   6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63,
237 };
238 
239 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x8[64]) = {
240   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
241   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
242   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
243   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
244 };
245 
246 DECLARE_ALIGNED(16, static const int16_t, default_scan_8x16[128]) = {
247   0,   1,   8,   2,   9,   16,  3,   10,  17,  24,  4,   11,  18,  25,  32,
248   5,   12,  19,  26,  33,  40,  6,   13,  20,  27,  34,  41,  48,  7,   14,
249   21,  28,  35,  42,  49,  56,  15,  22,  29,  36,  43,  50,  57,  64,  23,
250   30,  37,  44,  51,  58,  65,  72,  31,  38,  45,  52,  59,  66,  73,  80,
251   39,  46,  53,  60,  67,  74,  81,  88,  47,  54,  61,  68,  75,  82,  89,
252   96,  55,  62,  69,  76,  83,  90,  97,  104, 63,  70,  77,  84,  91,  98,
253   105, 112, 71,  78,  85,  92,  99,  106, 113, 120, 79,  86,  93,  100, 107,
254   114, 121, 87,  94,  101, 108, 115, 122, 95,  102, 109, 116, 123, 103, 110,
255   117, 124, 111, 118, 125, 119, 126, 127,
256 };
257 
258 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x8[128]) = {
259   0,  16,  1,   32, 17,  2,   48,  33,  18, 3,  64,  49,  34,  19,  4,   80,
260   65, 50,  35,  20, 5,   96,  81,  66,  51, 36, 21,  6,   112, 97,  82,  67,
261   52, 37,  22,  7,  113, 98,  83,  68,  53, 38, 23,  8,   114, 99,  84,  69,
262   54, 39,  24,  9,  115, 100, 85,  70,  55, 40, 25,  10,  116, 101, 86,  71,
263   56, 41,  26,  11, 117, 102, 87,  72,  57, 42, 27,  12,  118, 103, 88,  73,
264   58, 43,  28,  13, 119, 104, 89,  74,  59, 44, 29,  14,  120, 105, 90,  75,
265   60, 45,  30,  15, 121, 106, 91,  76,  61, 46, 31,  122, 107, 92,  77,  62,
266   47, 123, 108, 93, 78,  63,  124, 109, 94, 79, 125, 110, 95,  126, 111, 127,
267 };
268 
269 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_8x16[128]) = {
270   0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
271   1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
272   2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
273   3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
274   4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
275   5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
276   6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
277   7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
278 };
279 
280 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x8[128]) = {
281   0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
282   2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
283   4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
284   6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
285   8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
286   10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
287   12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
288   14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
289 };
290 
291 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_8x16[128]) = {
292   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
293   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
294   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
295   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
296   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
297   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
298   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
299   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
300   120, 121, 122, 123, 124, 125, 126, 127,
301 };
302 
303 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x8[128]) = {
304   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
305   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
306   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
307   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
308   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
309   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
310   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
311   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
312   120, 121, 122, 123, 124, 125, 126, 127,
313 };
314 
315 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x32[512]) = {
316   0,   1,   16,  2,   17,  32,  3,   18,  33,  48,  4,   19,  34,  49,  64,
317   5,   20,  35,  50,  65,  80,  6,   21,  36,  51,  66,  81,  96,  7,   22,
318   37,  52,  67,  82,  97,  112, 8,   23,  38,  53,  68,  83,  98,  113, 128,
319   9,   24,  39,  54,  69,  84,  99,  114, 129, 144, 10,  25,  40,  55,  70,
320   85,  100, 115, 130, 145, 160, 11,  26,  41,  56,  71,  86,  101, 116, 131,
321   146, 161, 176, 12,  27,  42,  57,  72,  87,  102, 117, 132, 147, 162, 177,
322   192, 13,  28,  43,  58,  73,  88,  103, 118, 133, 148, 163, 178, 193, 208,
323   14,  29,  44,  59,  74,  89,  104, 119, 134, 149, 164, 179, 194, 209, 224,
324   15,  30,  45,  60,  75,  90,  105, 120, 135, 150, 165, 180, 195, 210, 225,
325   240, 31,  46,  61,  76,  91,  106, 121, 136, 151, 166, 181, 196, 211, 226,
326   241, 256, 47,  62,  77,  92,  107, 122, 137, 152, 167, 182, 197, 212, 227,
327   242, 257, 272, 63,  78,  93,  108, 123, 138, 153, 168, 183, 198, 213, 228,
328   243, 258, 273, 288, 79,  94,  109, 124, 139, 154, 169, 184, 199, 214, 229,
329   244, 259, 274, 289, 304, 95,  110, 125, 140, 155, 170, 185, 200, 215, 230,
330   245, 260, 275, 290, 305, 320, 111, 126, 141, 156, 171, 186, 201, 216, 231,
331   246, 261, 276, 291, 306, 321, 336, 127, 142, 157, 172, 187, 202, 217, 232,
332   247, 262, 277, 292, 307, 322, 337, 352, 143, 158, 173, 188, 203, 218, 233,
333   248, 263, 278, 293, 308, 323, 338, 353, 368, 159, 174, 189, 204, 219, 234,
334   249, 264, 279, 294, 309, 324, 339, 354, 369, 384, 175, 190, 205, 220, 235,
335   250, 265, 280, 295, 310, 325, 340, 355, 370, 385, 400, 191, 206, 221, 236,
336   251, 266, 281, 296, 311, 326, 341, 356, 371, 386, 401, 416, 207, 222, 237,
337   252, 267, 282, 297, 312, 327, 342, 357, 372, 387, 402, 417, 432, 223, 238,
338   253, 268, 283, 298, 313, 328, 343, 358, 373, 388, 403, 418, 433, 448, 239,
339   254, 269, 284, 299, 314, 329, 344, 359, 374, 389, 404, 419, 434, 449, 464,
340   255, 270, 285, 300, 315, 330, 345, 360, 375, 390, 405, 420, 435, 450, 465,
341   480, 271, 286, 301, 316, 331, 346, 361, 376, 391, 406, 421, 436, 451, 466,
342   481, 496, 287, 302, 317, 332, 347, 362, 377, 392, 407, 422, 437, 452, 467,
343   482, 497, 303, 318, 333, 348, 363, 378, 393, 408, 423, 438, 453, 468, 483,
344   498, 319, 334, 349, 364, 379, 394, 409, 424, 439, 454, 469, 484, 499, 335,
345   350, 365, 380, 395, 410, 425, 440, 455, 470, 485, 500, 351, 366, 381, 396,
346   411, 426, 441, 456, 471, 486, 501, 367, 382, 397, 412, 427, 442, 457, 472,
347   487, 502, 383, 398, 413, 428, 443, 458, 473, 488, 503, 399, 414, 429, 444,
348   459, 474, 489, 504, 415, 430, 445, 460, 475, 490, 505, 431, 446, 461, 476,
349   491, 506, 447, 462, 477, 492, 507, 463, 478, 493, 508, 479, 494, 509, 495,
350   510, 511,
351 };
352 
353 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x16[512]) = {
354   0,   32,  1,   64,  33,  2,   96,  65,  34,  3,   128, 97,  66,  35,  4,
355   160, 129, 98,  67,  36,  5,   192, 161, 130, 99,  68,  37,  6,   224, 193,
356   162, 131, 100, 69,  38,  7,   256, 225, 194, 163, 132, 101, 70,  39,  8,
357   288, 257, 226, 195, 164, 133, 102, 71,  40,  9,   320, 289, 258, 227, 196,
358   165, 134, 103, 72,  41,  10,  352, 321, 290, 259, 228, 197, 166, 135, 104,
359   73,  42,  11,  384, 353, 322, 291, 260, 229, 198, 167, 136, 105, 74,  43,
360   12,  416, 385, 354, 323, 292, 261, 230, 199, 168, 137, 106, 75,  44,  13,
361   448, 417, 386, 355, 324, 293, 262, 231, 200, 169, 138, 107, 76,  45,  14,
362   480, 449, 418, 387, 356, 325, 294, 263, 232, 201, 170, 139, 108, 77,  46,
363   15,  481, 450, 419, 388, 357, 326, 295, 264, 233, 202, 171, 140, 109, 78,
364   47,  16,  482, 451, 420, 389, 358, 327, 296, 265, 234, 203, 172, 141, 110,
365   79,  48,  17,  483, 452, 421, 390, 359, 328, 297, 266, 235, 204, 173, 142,
366   111, 80,  49,  18,  484, 453, 422, 391, 360, 329, 298, 267, 236, 205, 174,
367   143, 112, 81,  50,  19,  485, 454, 423, 392, 361, 330, 299, 268, 237, 206,
368   175, 144, 113, 82,  51,  20,  486, 455, 424, 393, 362, 331, 300, 269, 238,
369   207, 176, 145, 114, 83,  52,  21,  487, 456, 425, 394, 363, 332, 301, 270,
370   239, 208, 177, 146, 115, 84,  53,  22,  488, 457, 426, 395, 364, 333, 302,
371   271, 240, 209, 178, 147, 116, 85,  54,  23,  489, 458, 427, 396, 365, 334,
372   303, 272, 241, 210, 179, 148, 117, 86,  55,  24,  490, 459, 428, 397, 366,
373   335, 304, 273, 242, 211, 180, 149, 118, 87,  56,  25,  491, 460, 429, 398,
374   367, 336, 305, 274, 243, 212, 181, 150, 119, 88,  57,  26,  492, 461, 430,
375   399, 368, 337, 306, 275, 244, 213, 182, 151, 120, 89,  58,  27,  493, 462,
376   431, 400, 369, 338, 307, 276, 245, 214, 183, 152, 121, 90,  59,  28,  494,
377   463, 432, 401, 370, 339, 308, 277, 246, 215, 184, 153, 122, 91,  60,  29,
378   495, 464, 433, 402, 371, 340, 309, 278, 247, 216, 185, 154, 123, 92,  61,
379   30,  496, 465, 434, 403, 372, 341, 310, 279, 248, 217, 186, 155, 124, 93,
380   62,  31,  497, 466, 435, 404, 373, 342, 311, 280, 249, 218, 187, 156, 125,
381   94,  63,  498, 467, 436, 405, 374, 343, 312, 281, 250, 219, 188, 157, 126,
382   95,  499, 468, 437, 406, 375, 344, 313, 282, 251, 220, 189, 158, 127, 500,
383   469, 438, 407, 376, 345, 314, 283, 252, 221, 190, 159, 501, 470, 439, 408,
384   377, 346, 315, 284, 253, 222, 191, 502, 471, 440, 409, 378, 347, 316, 285,
385   254, 223, 503, 472, 441, 410, 379, 348, 317, 286, 255, 504, 473, 442, 411,
386   380, 349, 318, 287, 505, 474, 443, 412, 381, 350, 319, 506, 475, 444, 413,
387   382, 351, 507, 476, 445, 414, 383, 508, 477, 446, 415, 509, 478, 447, 510,
388   479, 511,
389 };
390 
391 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x32[512]) = {
392   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
393   240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
394   480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
395   209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
396   449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
397   178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
398   418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
399   147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
400   387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
401   116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
402   356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
403   85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
404   325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
405   54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
406   294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
407   23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
408   263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
409   503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
410   232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
411   472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
412   201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
413   441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
414   170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
415   410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
416   139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
417   379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
418   108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
419   348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
420   77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
421   317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
422   46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
423   286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
424   15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
425   255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
426   495, 511,
427 };
428 
429 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x16[512]) = {
430   0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
431   1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
432   2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
433   3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
434   4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
435   5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
436   6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
437   7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
438   8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
439   9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
440   10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
441   11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
442   12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
443   13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
444   14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
445   15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
446   16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
447   17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
448   18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
449   19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
450   20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
451   21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
452   22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
453   23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
454   24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
455   25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
456   26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
457   27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
458   28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
459   29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
460   30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
461   31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
462 };
463 
464 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x32[512]) = {
465   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
466   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
467   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
468   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
469   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
470   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
471   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
472   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
473   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
474   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
475   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
476   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
477   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
478   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
479   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
480   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
481   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
482   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
483   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
484   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
485   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
486   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
487   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
488   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
489   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
490   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
491   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
492   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
493   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
494   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
495   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
496   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
497   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
498   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
499   510, 511,
500 };
501 
502 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x16[512]) = {
503   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
504   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
505   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
506   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
507   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
508   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
509   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
510   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
511   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
512   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
513   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
514   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
515   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
516   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
517   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
518   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
519   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
520   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
521   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
522   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
523   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
524   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
525   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
526   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
527   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
528   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
529   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
530   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
531   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
532   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
533   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
534   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
535   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
536   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
537   510, 511,
538 };
539 
540 DECLARE_ALIGNED(16, static const int16_t, default_scan_16x16[256]) = {
541   0,   1,   16,  32,  17,  2,   3,   18,  33,  48,  64,  49,  34,  19,  4,
542   5,   20,  35,  50,  65,  80,  96,  81,  66,  51,  36,  21,  6,   7,   22,
543   37,  52,  67,  82,  97,  112, 128, 113, 98,  83,  68,  53,  38,  23,  8,
544   9,   24,  39,  54,  69,  84,  99,  114, 129, 144, 160, 145, 130, 115, 100,
545   85,  70,  55,  40,  25,  10,  11,  26,  41,  56,  71,  86,  101, 116, 131,
546   146, 161, 176, 192, 177, 162, 147, 132, 117, 102, 87,  72,  57,  42,  27,
547   12,  13,  28,  43,  58,  73,  88,  103, 118, 133, 148, 163, 178, 193, 208,
548   224, 209, 194, 179, 164, 149, 134, 119, 104, 89,  74,  59,  44,  29,  14,
549   15,  30,  45,  60,  75,  90,  105, 120, 135, 150, 165, 180, 195, 210, 225,
550   240, 241, 226, 211, 196, 181, 166, 151, 136, 121, 106, 91,  76,  61,  46,
551   31,  47,  62,  77,  92,  107, 122, 137, 152, 167, 182, 197, 212, 227, 242,
552   243, 228, 213, 198, 183, 168, 153, 138, 123, 108, 93,  78,  63,  79,  94,
553   109, 124, 139, 154, 169, 184, 199, 214, 229, 244, 245, 230, 215, 200, 185,
554   170, 155, 140, 125, 110, 95,  111, 126, 141, 156, 171, 186, 201, 216, 231,
555   246, 247, 232, 217, 202, 187, 172, 157, 142, 127, 143, 158, 173, 188, 203,
556   218, 233, 248, 249, 234, 219, 204, 189, 174, 159, 175, 190, 205, 220, 235,
557   250, 251, 236, 221, 206, 191, 207, 222, 237, 252, 253, 238, 223, 239, 254,
558   255
559 };
560 
561 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_16x16[256]) = {
562   0,  16, 32, 48, 64, 80, 96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
563   1,  17, 33, 49, 65, 81, 97,  113, 129, 145, 161, 177, 193, 209, 225, 241,
564   2,  18, 34, 50, 66, 82, 98,  114, 130, 146, 162, 178, 194, 210, 226, 242,
565   3,  19, 35, 51, 67, 83, 99,  115, 131, 147, 163, 179, 195, 211, 227, 243,
566   4,  20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
567   5,  21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245,
568   6,  22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246,
569   7,  23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
570   8,  24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248,
571   9,  25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249,
572   10, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
573   11, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251,
574   12, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252,
575   13, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
576   14, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254,
577   15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255,
578 };
579 
580 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_16x16[256]) = {
581   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
582   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
583   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
584   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
585   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
586   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
587   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
588   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
589   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
590   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
591   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
592   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
593   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
594   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
595   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
596   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
597   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
598   255,
599 };
600 
601 DECLARE_ALIGNED(16, static const int16_t, mcol_scan_32x32[1024]) = {
602   0,   32,   64,  96,   128, 160,  192, 224,  256, 288,  320, 352,  384, 416,
603   448, 480,  512, 544,  576, 608,  640, 672,  704, 736,  768, 800,  832, 864,
604   896, 928,  960, 992,  1,   33,   65,  97,   129, 161,  193, 225,  257, 289,
605   321, 353,  385, 417,  449, 481,  513, 545,  577, 609,  641, 673,  705, 737,
606   769, 801,  833, 865,  897, 929,  961, 993,  2,   34,   66,  98,   130, 162,
607   194, 226,  258, 290,  322, 354,  386, 418,  450, 482,  514, 546,  578, 610,
608   642, 674,  706, 738,  770, 802,  834, 866,  898, 930,  962, 994,  3,   35,
609   67,  99,   131, 163,  195, 227,  259, 291,  323, 355,  387, 419,  451, 483,
610   515, 547,  579, 611,  643, 675,  707, 739,  771, 803,  835, 867,  899, 931,
611   963, 995,  4,   36,   68,  100,  132, 164,  196, 228,  260, 292,  324, 356,
612   388, 420,  452, 484,  516, 548,  580, 612,  644, 676,  708, 740,  772, 804,
613   836, 868,  900, 932,  964, 996,  5,   37,   69,  101,  133, 165,  197, 229,
614   261, 293,  325, 357,  389, 421,  453, 485,  517, 549,  581, 613,  645, 677,
615   709, 741,  773, 805,  837, 869,  901, 933,  965, 997,  6,   38,   70,  102,
616   134, 166,  198, 230,  262, 294,  326, 358,  390, 422,  454, 486,  518, 550,
617   582, 614,  646, 678,  710, 742,  774, 806,  838, 870,  902, 934,  966, 998,
618   7,   39,   71,  103,  135, 167,  199, 231,  263, 295,  327, 359,  391, 423,
619   455, 487,  519, 551,  583, 615,  647, 679,  711, 743,  775, 807,  839, 871,
620   903, 935,  967, 999,  8,   40,   72,  104,  136, 168,  200, 232,  264, 296,
621   328, 360,  392, 424,  456, 488,  520, 552,  584, 616,  648, 680,  712, 744,
622   776, 808,  840, 872,  904, 936,  968, 1000, 9,   41,   73,  105,  137, 169,
623   201, 233,  265, 297,  329, 361,  393, 425,  457, 489,  521, 553,  585, 617,
624   649, 681,  713, 745,  777, 809,  841, 873,  905, 937,  969, 1001, 10,  42,
625   74,  106,  138, 170,  202, 234,  266, 298,  330, 362,  394, 426,  458, 490,
626   522, 554,  586, 618,  650, 682,  714, 746,  778, 810,  842, 874,  906, 938,
627   970, 1002, 11,  43,   75,  107,  139, 171,  203, 235,  267, 299,  331, 363,
628   395, 427,  459, 491,  523, 555,  587, 619,  651, 683,  715, 747,  779, 811,
629   843, 875,  907, 939,  971, 1003, 12,  44,   76,  108,  140, 172,  204, 236,
630   268, 300,  332, 364,  396, 428,  460, 492,  524, 556,  588, 620,  652, 684,
631   716, 748,  780, 812,  844, 876,  908, 940,  972, 1004, 13,  45,   77,  109,
632   141, 173,  205, 237,  269, 301,  333, 365,  397, 429,  461, 493,  525, 557,
633   589, 621,  653, 685,  717, 749,  781, 813,  845, 877,  909, 941,  973, 1005,
634   14,  46,   78,  110,  142, 174,  206, 238,  270, 302,  334, 366,  398, 430,
635   462, 494,  526, 558,  590, 622,  654, 686,  718, 750,  782, 814,  846, 878,
636   910, 942,  974, 1006, 15,  47,   79,  111,  143, 175,  207, 239,  271, 303,
637   335, 367,  399, 431,  463, 495,  527, 559,  591, 623,  655, 687,  719, 751,
638   783, 815,  847, 879,  911, 943,  975, 1007, 16,  48,   80,  112,  144, 176,
639   208, 240,  272, 304,  336, 368,  400, 432,  464, 496,  528, 560,  592, 624,
640   656, 688,  720, 752,  784, 816,  848, 880,  912, 944,  976, 1008, 17,  49,
641   81,  113,  145, 177,  209, 241,  273, 305,  337, 369,  401, 433,  465, 497,
642   529, 561,  593, 625,  657, 689,  721, 753,  785, 817,  849, 881,  913, 945,
643   977, 1009, 18,  50,   82,  114,  146, 178,  210, 242,  274, 306,  338, 370,
644   402, 434,  466, 498,  530, 562,  594, 626,  658, 690,  722, 754,  786, 818,
645   850, 882,  914, 946,  978, 1010, 19,  51,   83,  115,  147, 179,  211, 243,
646   275, 307,  339, 371,  403, 435,  467, 499,  531, 563,  595, 627,  659, 691,
647   723, 755,  787, 819,  851, 883,  915, 947,  979, 1011, 20,  52,   84,  116,
648   148, 180,  212, 244,  276, 308,  340, 372,  404, 436,  468, 500,  532, 564,
649   596, 628,  660, 692,  724, 756,  788, 820,  852, 884,  916, 948,  980, 1012,
650   21,  53,   85,  117,  149, 181,  213, 245,  277, 309,  341, 373,  405, 437,
651   469, 501,  533, 565,  597, 629,  661, 693,  725, 757,  789, 821,  853, 885,
652   917, 949,  981, 1013, 22,  54,   86,  118,  150, 182,  214, 246,  278, 310,
653   342, 374,  406, 438,  470, 502,  534, 566,  598, 630,  662, 694,  726, 758,
654   790, 822,  854, 886,  918, 950,  982, 1014, 23,  55,   87,  119,  151, 183,
655   215, 247,  279, 311,  343, 375,  407, 439,  471, 503,  535, 567,  599, 631,
656   663, 695,  727, 759,  791, 823,  855, 887,  919, 951,  983, 1015, 24,  56,
657   88,  120,  152, 184,  216, 248,  280, 312,  344, 376,  408, 440,  472, 504,
658   536, 568,  600, 632,  664, 696,  728, 760,  792, 824,  856, 888,  920, 952,
659   984, 1016, 25,  57,   89,  121,  153, 185,  217, 249,  281, 313,  345, 377,
660   409, 441,  473, 505,  537, 569,  601, 633,  665, 697,  729, 761,  793, 825,
661   857, 889,  921, 953,  985, 1017, 26,  58,   90,  122,  154, 186,  218, 250,
662   282, 314,  346, 378,  410, 442,  474, 506,  538, 570,  602, 634,  666, 698,
663   730, 762,  794, 826,  858, 890,  922, 954,  986, 1018, 27,  59,   91,  123,
664   155, 187,  219, 251,  283, 315,  347, 379,  411, 443,  475, 507,  539, 571,
665   603, 635,  667, 699,  731, 763,  795, 827,  859, 891,  923, 955,  987, 1019,
666   28,  60,   92,  124,  156, 188,  220, 252,  284, 316,  348, 380,  412, 444,
667   476, 508,  540, 572,  604, 636,  668, 700,  732, 764,  796, 828,  860, 892,
668   924, 956,  988, 1020, 29,  61,   93,  125,  157, 189,  221, 253,  285, 317,
669   349, 381,  413, 445,  477, 509,  541, 573,  605, 637,  669, 701,  733, 765,
670   797, 829,  861, 893,  925, 957,  989, 1021, 30,  62,   94,  126,  158, 190,
671   222, 254,  286, 318,  350, 382,  414, 446,  478, 510,  542, 574,  606, 638,
672   670, 702,  734, 766,  798, 830,  862, 894,  926, 958,  990, 1022, 31,  63,
673   95,  127,  159, 191,  223, 255,  287, 319,  351, 383,  415, 447,  479, 511,
674   543, 575,  607, 639,  671, 703,  735, 767,  799, 831,  863, 895,  927, 959,
675   991, 1023,
676 };
677 
678 DECLARE_ALIGNED(16, static const int16_t, mrow_scan_32x32[1024]) = {
679   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,
680   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
681   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
682   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
683   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
684   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
685   78,   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
686   91,   92,   93,   94,   95,   96,   97,   98,   99,   100,  101,  102,  103,
687   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
688   117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
689   130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
690   143,  144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
691   156,  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
692   169,  170,  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
693   182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,  194,
694   195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
695   208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
696   221,  222,  223,  224,  225,  226,  227,  228,  229,  230,  231,  232,  233,
697   234,  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
698   247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
699   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
700   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
701   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
702   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,  309,  310,  311,
703   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
704   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
705   338,  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
706   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
707   364,  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
708   377,  378,  379,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389,
709   390,  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
710   403,  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,  414,  415,
711   416,  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,  427,  428,
712   429,  430,  431,  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
713   442,  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,  453,  454,
714   455,  456,  457,  458,  459,  460,  461,  462,  463,  464,  465,  466,  467,
715   468,  469,  470,  471,  472,  473,  474,  475,  476,  477,  478,  479,  480,
716   481,  482,  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,
717   494,  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  506,
718   507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  517,  518,  519,
719   520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
720   533,  534,  535,  536,  537,  538,  539,  540,  541,  542,  543,  544,  545,
721   546,  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
722   559,  560,  561,  562,  563,  564,  565,  566,  567,  568,  569,  570,  571,
723   572,  573,  574,  575,  576,  577,  578,  579,  580,  581,  582,  583,  584,
724   585,  586,  587,  588,  589,  590,  591,  592,  593,  594,  595,  596,  597,
725   598,  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  609,  610,
726   611,  612,  613,  614,  615,  616,  617,  618,  619,  620,  621,  622,  623,
727   624,  625,  626,  627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
728   637,  638,  639,  640,  641,  642,  643,  644,  645,  646,  647,  648,  649,
729   650,  651,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
730   663,  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
731   676,  677,  678,  679,  680,  681,  682,  683,  684,  685,  686,  687,  688,
732   689,  690,  691,  692,  693,  694,  695,  696,  697,  698,  699,  700,  701,
733   702,  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,  714,
734   715,  716,  717,  718,  719,  720,  721,  722,  723,  724,  725,  726,  727,
735   728,  729,  730,  731,  732,  733,  734,  735,  736,  737,  738,  739,  740,
736   741,  742,  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,
737   754,  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  765,  766,
738   767,  768,  769,  770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
739   780,  781,  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
740   793,  794,  795,  796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
741   806,  807,  808,  809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
742   819,  820,  821,  822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
743   832,  833,  834,  835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
744   845,  846,  847,  848,  849,  850,  851,  852,  853,  854,  855,  856,  857,
745   858,  859,  860,  861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
746   871,  872,  873,  874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
747   884,  885,  886,  887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
748   897,  898,  899,  900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
749   910,  911,  912,  913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
750   923,  924,  925,  926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
751   936,  937,  938,  939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
752   949,  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
753   962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
754   975,  976,  977,  978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
755   988,  989,  990,  991,  992,  993,  994,  995,  996,  997,  998,  999,  1000,
756   1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
757   1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
758 };
759 
760 DECLARE_ALIGNED(16, static const int16_t, default_scan_32x32[1024]) = {
761   0,    1,    32,   64,   33,   2,   3,    34,   65,   96,   128,  97,  66,
762   35,   4,    5,    36,   67,   98,  129,  160,  192,  161,  130,  99,  68,
763   37,   6,    7,    38,   69,   100, 131,  162,  193,  224,  256,  225, 194,
764   163,  132,  101,  70,   39,   8,   9,    40,   71,   102,  133,  164, 195,
765   226,  257,  288,  320,  289,  258, 227,  196,  165,  134,  103,  72,  41,
766   10,   11,   42,   73,   104,  135, 166,  197,  228,  259,  290,  321, 352,
767   384,  353,  322,  291,  260,  229, 198,  167,  136,  105,  74,   43,  12,
768   13,   44,   75,   106,  137,  168, 199,  230,  261,  292,  323,  354, 385,
769   416,  448,  417,  386,  355,  324, 293,  262,  231,  200,  169,  138, 107,
770   76,   45,   14,   15,   46,   77,  108,  139,  170,  201,  232,  263, 294,
771   325,  356,  387,  418,  449,  480, 512,  481,  450,  419,  388,  357, 326,
772   295,  264,  233,  202,  171,  140, 109,  78,   47,   16,   17,   48,  79,
773   110,  141,  172,  203,  234,  265, 296,  327,  358,  389,  420,  451, 482,
774   513,  544,  576,  545,  514,  483, 452,  421,  390,  359,  328,  297, 266,
775   235,  204,  173,  142,  111,  80,  49,   18,   19,   50,   81,   112, 143,
776   174,  205,  236,  267,  298,  329, 360,  391,  422,  453,  484,  515, 546,
777   577,  608,  640,  609,  578,  547, 516,  485,  454,  423,  392,  361, 330,
778   299,  268,  237,  206,  175,  144, 113,  82,   51,   20,   21,   52,  83,
779   114,  145,  176,  207,  238,  269, 300,  331,  362,  393,  424,  455, 486,
780   517,  548,  579,  610,  641,  672, 704,  673,  642,  611,  580,  549, 518,
781   487,  456,  425,  394,  363,  332, 301,  270,  239,  208,  177,  146, 115,
782   84,   53,   22,   23,   54,   85,  116,  147,  178,  209,  240,  271, 302,
783   333,  364,  395,  426,  457,  488, 519,  550,  581,  612,  643,  674, 705,
784   736,  768,  737,  706,  675,  644, 613,  582,  551,  520,  489,  458, 427,
785   396,  365,  334,  303,  272,  241, 210,  179,  148,  117,  86,   55,  24,
786   25,   56,   87,   118,  149,  180, 211,  242,  273,  304,  335,  366, 397,
787   428,  459,  490,  521,  552,  583, 614,  645,  676,  707,  738,  769, 800,
788   832,  801,  770,  739,  708,  677, 646,  615,  584,  553,  522,  491, 460,
789   429,  398,  367,  336,  305,  274, 243,  212,  181,  150,  119,  88,  57,
790   26,   27,   58,   89,   120,  151, 182,  213,  244,  275,  306,  337, 368,
791   399,  430,  461,  492,  523,  554, 585,  616,  647,  678,  709,  740, 771,
792   802,  833,  864,  896,  865,  834, 803,  772,  741,  710,  679,  648, 617,
793   586,  555,  524,  493,  462,  431, 400,  369,  338,  307,  276,  245, 214,
794   183,  152,  121,  90,   59,   28,  29,   60,   91,   122,  153,  184, 215,
795   246,  277,  308,  339,  370,  401, 432,  463,  494,  525,  556,  587, 618,
796   649,  680,  711,  742,  773,  804, 835,  866,  897,  928,  960,  929, 898,
797   867,  836,  805,  774,  743,  712, 681,  650,  619,  588,  557,  526, 495,
798   464,  433,  402,  371,  340,  309, 278,  247,  216,  185,  154,  123, 92,
799   61,   30,   31,   62,   93,   124, 155,  186,  217,  248,  279,  310, 341,
800   372,  403,  434,  465,  496,  527, 558,  589,  620,  651,  682,  713, 744,
801   775,  806,  837,  868,  899,  930, 961,  992,  993,  962,  931,  900, 869,
802   838,  807,  776,  745,  714,  683, 652,  621,  590,  559,  528,  497, 466,
803   435,  404,  373,  342,  311,  280, 249,  218,  187,  156,  125,  94,  63,
804   95,   126,  157,  188,  219,  250, 281,  312,  343,  374,  405,  436, 467,
805   498,  529,  560,  591,  622,  653, 684,  715,  746,  777,  808,  839, 870,
806   901,  932,  963,  994,  995,  964, 933,  902,  871,  840,  809,  778, 747,
807   716,  685,  654,  623,  592,  561, 530,  499,  468,  437,  406,  375, 344,
808   313,  282,  251,  220,  189,  158, 127,  159,  190,  221,  252,  283, 314,
809   345,  376,  407,  438,  469,  500, 531,  562,  593,  624,  655,  686, 717,
810   748,  779,  810,  841,  872,  903, 934,  965,  996,  997,  966,  935, 904,
811   873,  842,  811,  780,  749,  718, 687,  656,  625,  594,  563,  532, 501,
812   470,  439,  408,  377,  346,  315, 284,  253,  222,  191,  223,  254, 285,
813   316,  347,  378,  409,  440,  471, 502,  533,  564,  595,  626,  657, 688,
814   719,  750,  781,  812,  843,  874, 905,  936,  967,  998,  999,  968, 937,
815   906,  875,  844,  813,  782,  751, 720,  689,  658,  627,  596,  565, 534,
816   503,  472,  441,  410,  379,  348, 317,  286,  255,  287,  318,  349, 380,
817   411,  442,  473,  504,  535,  566, 597,  628,  659,  690,  721,  752, 783,
818   814,  845,  876,  907,  938,  969, 1000, 1001, 970,  939,  908,  877, 846,
819   815,  784,  753,  722,  691,  660, 629,  598,  567,  536,  505,  474, 443,
820   412,  381,  350,  319,  351,  382, 413,  444,  475,  506,  537,  568, 599,
821   630,  661,  692,  723,  754,  785, 816,  847,  878,  909,  940,  971, 1002,
822   1003, 972,  941,  910,  879,  848, 817,  786,  755,  724,  693,  662, 631,
823   600,  569,  538,  507,  476,  445, 414,  383,  415,  446,  477,  508, 539,
824   570,  601,  632,  663,  694,  725, 756,  787,  818,  849,  880,  911, 942,
825   973,  1004, 1005, 974,  943,  912, 881,  850,  819,  788,  757,  726, 695,
826   664,  633,  602,  571,  540,  509, 478,  447,  479,  510,  541,  572, 603,
827   634,  665,  696,  727,  758,  789, 820,  851,  882,  913,  944,  975, 1006,
828   1007, 976,  945,  914,  883,  852, 821,  790,  759,  728,  697,  666, 635,
829   604,  573,  542,  511,  543,  574, 605,  636,  667,  698,  729,  760, 791,
830   822,  853,  884,  915,  946,  977, 1008, 1009, 978,  947,  916,  885, 854,
831   823,  792,  761,  730,  699,  668, 637,  606,  575,  607,  638,  669, 700,
832   731,  762,  793,  824,  855,  886, 917,  948,  979,  1010, 1011, 980, 949,
833   918,  887,  856,  825,  794,  763, 732,  701,  670,  639,  671,  702, 733,
834   764,  795,  826,  857,  888,  919, 950,  981,  1012, 1013, 982,  951, 920,
835   889,  858,  827,  796,  765,  734, 703,  735,  766,  797,  828,  859, 890,
836   921,  952,  983,  1014, 1015, 984, 953,  922,  891,  860,  829,  798, 767,
837   799,  830,  861,  892,  923,  954, 985,  1016, 1017, 986,  955,  924, 893,
838   862,  831,  863,  894,  925,  956, 987,  1018, 1019, 988,  957,  926, 895,
839   927,  958,  989,  1020, 1021, 990, 959,  991,  1022, 1023
840 };
841 
842 DECLARE_ALIGNED(16, static const int16_t,
843                 av1_default_iscan_4x4[16]) = { 0, 1, 5,  6,  2, 4,  7,  12,
844                                                3, 8, 11, 13, 9, 10, 14, 15 };
845 
846 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x4[16]) = {
847   0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15,
848 };
849 
850 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x4[16]) = {
851   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
852 };
853 
854 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x8[32]) = {
855   0,  1,  3,  6,  2,  4,  7,  10, 5,  8,  11, 14, 9,  12, 15, 18,
856   13, 16, 19, 22, 17, 20, 23, 26, 21, 24, 27, 29, 25, 28, 30, 31,
857 };
858 
859 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x8[32]) = {
860   0, 8,  16, 24, 1, 9,  17, 25, 2, 10, 18, 26, 3, 11, 19, 27,
861   4, 12, 20, 28, 5, 13, 21, 29, 6, 14, 22, 30, 7, 15, 23, 31,
862 };
863 
864 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x8[32]) = {
865   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
866   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
867 };
868 
869 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x4[32]) = {
870   0, 2, 5,  9,  13, 17, 21, 25, 1, 4,  8,  12, 16, 20, 24, 28,
871   3, 7, 11, 15, 19, 23, 27, 30, 6, 10, 14, 18, 22, 26, 29, 31,
872 };
873 
874 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x4[32]) = {
875   0, 4, 8,  12, 16, 20, 24, 28, 1, 5, 9,  13, 17, 21, 25, 29,
876   2, 6, 10, 14, 18, 22, 26, 30, 3, 7, 11, 15, 19, 23, 27, 31,
877 };
878 
879 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x4[32]) = {
880   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
881   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
882 };
883 
884 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x16[64]) = {
885   0,  1,  3,  6,  2,  4,  7,  10, 5,  8,  11, 14, 9,  12, 15, 18,
886   13, 16, 19, 22, 17, 20, 23, 26, 21, 24, 27, 30, 25, 28, 31, 34,
887   29, 32, 35, 38, 33, 36, 39, 42, 37, 40, 43, 46, 41, 44, 47, 50,
888   45, 48, 51, 54, 49, 52, 55, 58, 53, 56, 59, 61, 57, 60, 62, 63,
889 };
890 
891 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x4[64]) = {
892   0, 2,  5,  9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57,
893   1, 4,  8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
894   3, 7,  11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 62,
895   6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 61, 63,
896 };
897 
898 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_4x16[64]) = {
899   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
900   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
901   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
902   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
903 };
904 
905 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x4[64]) = {
906   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
907   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
908   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
909   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
910 };
911 
912 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_4x16[64]) = {
913   0,  16, 32, 48, 1,  17, 33, 49, 2,  18, 34, 50, 3,  19, 35, 51,
914   4,  20, 36, 52, 5,  21, 37, 53, 6,  22, 38, 54, 7,  23, 39, 55,
915   8,  24, 40, 56, 9,  25, 41, 57, 10, 26, 42, 58, 11, 27, 43, 59,
916   12, 28, 44, 60, 13, 29, 45, 61, 14, 30, 46, 62, 15, 31, 47, 63,
917 };
918 
919 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x4[64]) = {
920   0, 4, 8,  12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,
921   1, 5, 9,  13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61,
922   2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62,
923   3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63,
924 };
925 
926 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x32[256]) = {
927   0,   1,   3,   6,   10,  15,  21,  28,  2,   4,   7,   11,  16,  22,  29,
928   36,  5,   8,   12,  17,  23,  30,  37,  44,  9,   13,  18,  24,  31,  38,
929   45,  52,  14,  19,  25,  32,  39,  46,  53,  60,  20,  26,  33,  40,  47,
930   54,  61,  68,  27,  34,  41,  48,  55,  62,  69,  76,  35,  42,  49,  56,
931   63,  70,  77,  84,  43,  50,  57,  64,  71,  78,  85,  92,  51,  58,  65,
932   72,  79,  86,  93,  100, 59,  66,  73,  80,  87,  94,  101, 108, 67,  74,
933   81,  88,  95,  102, 109, 116, 75,  82,  89,  96,  103, 110, 117, 124, 83,
934   90,  97,  104, 111, 118, 125, 132, 91,  98,  105, 112, 119, 126, 133, 140,
935   99,  106, 113, 120, 127, 134, 141, 148, 107, 114, 121, 128, 135, 142, 149,
936   156, 115, 122, 129, 136, 143, 150, 157, 164, 123, 130, 137, 144, 151, 158,
937   165, 172, 131, 138, 145, 152, 159, 166, 173, 180, 139, 146, 153, 160, 167,
938   174, 181, 188, 147, 154, 161, 168, 175, 182, 189, 196, 155, 162, 169, 176,
939   183, 190, 197, 204, 163, 170, 177, 184, 191, 198, 205, 212, 171, 178, 185,
940   192, 199, 206, 213, 220, 179, 186, 193, 200, 207, 214, 221, 228, 187, 194,
941   201, 208, 215, 222, 229, 235, 195, 202, 209, 216, 223, 230, 236, 241, 203,
942   210, 217, 224, 231, 237, 242, 246, 211, 218, 225, 232, 238, 243, 247, 250,
943   219, 226, 233, 239, 244, 248, 251, 253, 227, 234, 240, 245, 249, 252, 254,
944   255,
945 };
946 
947 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x8[256]) = {
948   0,   2,   5,   9,   14,  20,  27,  35,  43,  51,  59,  67,  75,  83,  91,
949   99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187, 195, 203, 211,
950   219, 227, 1,   4,   8,   13,  19,  26,  34,  42,  50,  58,  66,  74,  82,
951   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
952   210, 218, 226, 234, 3,   7,   12,  18,  25,  33,  41,  49,  57,  65,  73,
953   81,  89,  97,  105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193,
954   201, 209, 217, 225, 233, 240, 6,   11,  17,  24,  32,  40,  48,  56,  64,
955   72,  80,  88,  96,  104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184,
956   192, 200, 208, 216, 224, 232, 239, 245, 10,  16,  23,  31,  39,  47,  55,
957   63,  71,  79,  87,  95,  103, 111, 119, 127, 135, 143, 151, 159, 167, 175,
958   183, 191, 199, 207, 215, 223, 231, 238, 244, 249, 15,  22,  30,  38,  46,
959   54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142, 150, 158, 166,
960   174, 182, 190, 198, 206, 214, 222, 230, 237, 243, 248, 252, 21,  29,  37,
961   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
962   165, 173, 181, 189, 197, 205, 213, 221, 229, 236, 242, 247, 251, 254, 28,
963   36,  44,  52,  60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148,
964   156, 164, 172, 180, 188, 196, 204, 212, 220, 228, 235, 241, 246, 250, 253,
965   255,
966 };
967 
968 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x32[256]) = {
969   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
970   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
971   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
972   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
973   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
974   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
975   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
976   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
977   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
978   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
979   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
980   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
981   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
982   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
983   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
984   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
985   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
986   255,
987 };
988 
989 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x8[256]) = {
990   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
991   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
992   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
993   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
994   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
995   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
996   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
997   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
998   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
999   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1000   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1001   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1002   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1003   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1004   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1005   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1006   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1007   255,
1008 };
1009 
1010 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x32[256]) = {
1011   0,  32, 64, 96,  128, 160, 192, 224, 1,  33, 65, 97,  129, 161, 193, 225,
1012   2,  34, 66, 98,  130, 162, 194, 226, 3,  35, 67, 99,  131, 163, 195, 227,
1013   4,  36, 68, 100, 132, 164, 196, 228, 5,  37, 69, 101, 133, 165, 197, 229,
1014   6,  38, 70, 102, 134, 166, 198, 230, 7,  39, 71, 103, 135, 167, 199, 231,
1015   8,  40, 72, 104, 136, 168, 200, 232, 9,  41, 73, 105, 137, 169, 201, 233,
1016   10, 42, 74, 106, 138, 170, 202, 234, 11, 43, 75, 107, 139, 171, 203, 235,
1017   12, 44, 76, 108, 140, 172, 204, 236, 13, 45, 77, 109, 141, 173, 205, 237,
1018   14, 46, 78, 110, 142, 174, 206, 238, 15, 47, 79, 111, 143, 175, 207, 239,
1019   16, 48, 80, 112, 144, 176, 208, 240, 17, 49, 81, 113, 145, 177, 209, 241,
1020   18, 50, 82, 114, 146, 178, 210, 242, 19, 51, 83, 115, 147, 179, 211, 243,
1021   20, 52, 84, 116, 148, 180, 212, 244, 21, 53, 85, 117, 149, 181, 213, 245,
1022   22, 54, 86, 118, 150, 182, 214, 246, 23, 55, 87, 119, 151, 183, 215, 247,
1023   24, 56, 88, 120, 152, 184, 216, 248, 25, 57, 89, 121, 153, 185, 217, 249,
1024   26, 58, 90, 122, 154, 186, 218, 250, 27, 59, 91, 123, 155, 187, 219, 251,
1025   28, 60, 92, 124, 156, 188, 220, 252, 29, 61, 93, 125, 157, 189, 221, 253,
1026   30, 62, 94, 126, 158, 190, 222, 254, 31, 63, 95, 127, 159, 191, 223, 255,
1027 };
1028 
1029 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x8[256]) = {
1030   0,   8,   16,  24,  32,  40,  48,  56,  64,  72,  80,  88,  96,  104, 112,
1031   120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232,
1032   240, 248, 1,   9,   17,  25,  33,  41,  49,  57,  65,  73,  81,  89,  97,
1033   105, 113, 121, 129, 137, 145, 153, 161, 169, 177, 185, 193, 201, 209, 217,
1034   225, 233, 241, 249, 2,   10,  18,  26,  34,  42,  50,  58,  66,  74,  82,
1035   90,  98,  106, 114, 122, 130, 138, 146, 154, 162, 170, 178, 186, 194, 202,
1036   210, 218, 226, 234, 242, 250, 3,   11,  19,  27,  35,  43,  51,  59,  67,
1037   75,  83,  91,  99,  107, 115, 123, 131, 139, 147, 155, 163, 171, 179, 187,
1038   195, 203, 211, 219, 227, 235, 243, 251, 4,   12,  20,  28,  36,  44,  52,
1039   60,  68,  76,  84,  92,  100, 108, 116, 124, 132, 140, 148, 156, 164, 172,
1040   180, 188, 196, 204, 212, 220, 228, 236, 244, 252, 5,   13,  21,  29,  37,
1041   45,  53,  61,  69,  77,  85,  93,  101, 109, 117, 125, 133, 141, 149, 157,
1042   165, 173, 181, 189, 197, 205, 213, 221, 229, 237, 245, 253, 6,   14,  22,
1043   30,  38,  46,  54,  62,  70,  78,  86,  94,  102, 110, 118, 126, 134, 142,
1044   150, 158, 166, 174, 182, 190, 198, 206, 214, 222, 230, 238, 246, 254, 7,
1045   15,  23,  31,  39,  47,  55,  63,  71,  79,  87,  95,  103, 111, 119, 127,
1046   135, 143, 151, 159, 167, 175, 183, 191, 199, 207, 215, 223, 231, 239, 247,
1047   255,
1048 };
1049 
1050 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x8[64]) = {
1051   0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
1052   2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
1053   4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
1054   6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63,
1055 };
1056 
1057 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x8[64]) = {
1058   0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15,
1059   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1060   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1061   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1062 };
1063 
1064 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x8[64]) = {
1065   0,  1,  5,  6,  14, 15, 27, 28, 2,  4,  7,  13, 16, 26, 29, 42,
1066   3,  8,  12, 17, 25, 30, 41, 43, 9,  11, 18, 24, 31, 40, 44, 53,
1067   10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60,
1068   21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63
1069 };
1070 
1071 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_8x16[128]) = {
1072   0,  1,  3,   6,   10,  15,  21,  28,  2,  4,   7,   11,  16,  22,  29,  36,
1073   5,  8,  12,  17,  23,  30,  37,  44,  9,  13,  18,  24,  31,  38,  45,  52,
1074   14, 19, 25,  32,  39,  46,  53,  60,  20, 26,  33,  40,  47,  54,  61,  68,
1075   27, 34, 41,  48,  55,  62,  69,  76,  35, 42,  49,  56,  63,  70,  77,  84,
1076   43, 50, 57,  64,  71,  78,  85,  92,  51, 58,  65,  72,  79,  86,  93,  100,
1077   59, 66, 73,  80,  87,  94,  101, 107, 67, 74,  81,  88,  95,  102, 108, 113,
1078   75, 82, 89,  96,  103, 109, 114, 118, 83, 90,  97,  104, 110, 115, 119, 122,
1079   91, 98, 105, 111, 116, 120, 123, 125, 99, 106, 112, 117, 121, 124, 126, 127,
1080 };
1081 
1082 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x8[128]) = {
1083   0,  2,  5,  9,  14, 20, 27, 35, 43, 51,  59,  67,  75,  83,  91,  99,
1084   1,  4,  8,  13, 19, 26, 34, 42, 50, 58,  66,  74,  82,  90,  98,  106,
1085   3,  7,  12, 18, 25, 33, 41, 49, 57, 65,  73,  81,  89,  97,  105, 112,
1086   6,  11, 17, 24, 32, 40, 48, 56, 64, 72,  80,  88,  96,  104, 111, 117,
1087   10, 16, 23, 31, 39, 47, 55, 63, 71, 79,  87,  95,  103, 110, 116, 121,
1088   15, 22, 30, 38, 46, 54, 62, 70, 78, 86,  94,  102, 109, 115, 120, 124,
1089   21, 29, 37, 45, 53, 61, 69, 77, 85, 93,  101, 108, 114, 119, 123, 126,
1090   28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 107, 113, 118, 122, 125, 127,
1091 };
1092 
1093 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_8x16[128]) = {
1094   0,  16, 32, 48, 64, 80, 96,  112, 1,  17, 33, 49, 65, 81, 97,  113,
1095   2,  18, 34, 50, 66, 82, 98,  114, 3,  19, 35, 51, 67, 83, 99,  115,
1096   4,  20, 36, 52, 68, 84, 100, 116, 5,  21, 37, 53, 69, 85, 101, 117,
1097   6,  22, 38, 54, 70, 86, 102, 118, 7,  23, 39, 55, 71, 87, 103, 119,
1098   8,  24, 40, 56, 72, 88, 104, 120, 9,  25, 41, 57, 73, 89, 105, 121,
1099   10, 26, 42, 58, 74, 90, 106, 122, 11, 27, 43, 59, 75, 91, 107, 123,
1100   12, 28, 44, 60, 76, 92, 108, 124, 13, 29, 45, 61, 77, 93, 109, 125,
1101   14, 30, 46, 62, 78, 94, 110, 126, 15, 31, 47, 63, 79, 95, 111, 127,
1102 };
1103 
1104 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x8[128]) = {
1105   0, 8,  16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96,  104, 112, 120,
1106   1, 9,  17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97,  105, 113, 121,
1107   2, 10, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98,  106, 114, 122,
1108   3, 11, 19, 27, 35, 43, 51, 59, 67, 75, 83, 91, 99,  107, 115, 123,
1109   4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124,
1110   5, 13, 21, 29, 37, 45, 53, 61, 69, 77, 85, 93, 101, 109, 117, 125,
1111   6, 14, 22, 30, 38, 46, 54, 62, 70, 78, 86, 94, 102, 110, 118, 126,
1112   7, 15, 23, 31, 39, 47, 55, 63, 71, 79, 87, 95, 103, 111, 119, 127,
1113 };
1114 
1115 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_8x16[128]) = {
1116   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1117   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1118   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1119   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1120   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1121   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1122   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1123   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1124   120, 121, 122, 123, 124, 125, 126, 127,
1125 };
1126 
1127 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x8[128]) = {
1128   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1129   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1130   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1131   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1132   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1133   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1134   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1135   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1136   120, 121, 122, 123, 124, 125, 126, 127,
1137 };
1138 
1139 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x32[512]) = {
1140   0,   1,   3,   6,   10,  15,  21,  28,  36,  45,  55,  66,  78,  91,  105,
1141   120, 2,   4,   7,   11,  16,  22,  29,  37,  46,  56,  67,  79,  92,  106,
1142   121, 136, 5,   8,   12,  17,  23,  30,  38,  47,  57,  68,  80,  93,  107,
1143   122, 137, 152, 9,   13,  18,  24,  31,  39,  48,  58,  69,  81,  94,  108,
1144   123, 138, 153, 168, 14,  19,  25,  32,  40,  49,  59,  70,  82,  95,  109,
1145   124, 139, 154, 169, 184, 20,  26,  33,  41,  50,  60,  71,  83,  96,  110,
1146   125, 140, 155, 170, 185, 200, 27,  34,  42,  51,  61,  72,  84,  97,  111,
1147   126, 141, 156, 171, 186, 201, 216, 35,  43,  52,  62,  73,  85,  98,  112,
1148   127, 142, 157, 172, 187, 202, 217, 232, 44,  53,  63,  74,  86,  99,  113,
1149   128, 143, 158, 173, 188, 203, 218, 233, 248, 54,  64,  75,  87,  100, 114,
1150   129, 144, 159, 174, 189, 204, 219, 234, 249, 264, 65,  76,  88,  101, 115,
1151   130, 145, 160, 175, 190, 205, 220, 235, 250, 265, 280, 77,  89,  102, 116,
1152   131, 146, 161, 176, 191, 206, 221, 236, 251, 266, 281, 296, 90,  103, 117,
1153   132, 147, 162, 177, 192, 207, 222, 237, 252, 267, 282, 297, 312, 104, 118,
1154   133, 148, 163, 178, 193, 208, 223, 238, 253, 268, 283, 298, 313, 328, 119,
1155   134, 149, 164, 179, 194, 209, 224, 239, 254, 269, 284, 299, 314, 329, 344,
1156   135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345,
1157   360, 151, 166, 181, 196, 211, 226, 241, 256, 271, 286, 301, 316, 331, 346,
1158   361, 376, 167, 182, 197, 212, 227, 242, 257, 272, 287, 302, 317, 332, 347,
1159   362, 377, 392, 183, 198, 213, 228, 243, 258, 273, 288, 303, 318, 333, 348,
1160   363, 378, 393, 407, 199, 214, 229, 244, 259, 274, 289, 304, 319, 334, 349,
1161   364, 379, 394, 408, 421, 215, 230, 245, 260, 275, 290, 305, 320, 335, 350,
1162   365, 380, 395, 409, 422, 434, 231, 246, 261, 276, 291, 306, 321, 336, 351,
1163   366, 381, 396, 410, 423, 435, 446, 247, 262, 277, 292, 307, 322, 337, 352,
1164   367, 382, 397, 411, 424, 436, 447, 457, 263, 278, 293, 308, 323, 338, 353,
1165   368, 383, 398, 412, 425, 437, 448, 458, 467, 279, 294, 309, 324, 339, 354,
1166   369, 384, 399, 413, 426, 438, 449, 459, 468, 476, 295, 310, 325, 340, 355,
1167   370, 385, 400, 414, 427, 439, 450, 460, 469, 477, 484, 311, 326, 341, 356,
1168   371, 386, 401, 415, 428, 440, 451, 461, 470, 478, 485, 491, 327, 342, 357,
1169   372, 387, 402, 416, 429, 441, 452, 462, 471, 479, 486, 492, 497, 343, 358,
1170   373, 388, 403, 417, 430, 442, 453, 463, 472, 480, 487, 493, 498, 502, 359,
1171   374, 389, 404, 418, 431, 443, 454, 464, 473, 481, 488, 494, 499, 503, 506,
1172   375, 390, 405, 419, 432, 444, 455, 465, 474, 482, 489, 495, 500, 504, 507,
1173   509, 391, 406, 420, 433, 445, 456, 466, 475, 483, 490, 496, 501, 505, 508,
1174   510, 511,
1175 };
1176 
1177 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x16[512]) = {
1178   0,   2,   5,   9,   14,  20,  27,  35,  44,  54,  65,  77,  90,  104, 119,
1179   135, 151, 167, 183, 199, 215, 231, 247, 263, 279, 295, 311, 327, 343, 359,
1180   375, 391, 1,   4,   8,   13,  19,  26,  34,  43,  53,  64,  76,  89,  103,
1181   118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278, 294, 310, 326, 342,
1182   358, 374, 390, 406, 3,   7,   12,  18,  25,  33,  42,  52,  63,  75,  88,
1183   102, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309, 325,
1184   341, 357, 373, 389, 405, 420, 6,   11,  17,  24,  32,  41,  51,  62,  74,
1185   87,  101, 116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308,
1186   324, 340, 356, 372, 388, 404, 419, 433, 10,  16,  23,  31,  40,  50,  61,
1187   73,  86,  100, 115, 131, 147, 163, 179, 195, 211, 227, 243, 259, 275, 291,
1188   307, 323, 339, 355, 371, 387, 403, 418, 432, 445, 15,  22,  30,  39,  49,
1189   60,  72,  85,  99,  114, 130, 146, 162, 178, 194, 210, 226, 242, 258, 274,
1190   290, 306, 322, 338, 354, 370, 386, 402, 417, 431, 444, 456, 21,  29,  38,
1191   48,  59,  71,  84,  98,  113, 129, 145, 161, 177, 193, 209, 225, 241, 257,
1192   273, 289, 305, 321, 337, 353, 369, 385, 401, 416, 430, 443, 455, 466, 28,
1193   37,  47,  58,  70,  83,  97,  112, 128, 144, 160, 176, 192, 208, 224, 240,
1194   256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 415, 429, 442, 454, 465,
1195   475, 36,  46,  57,  69,  82,  96,  111, 127, 143, 159, 175, 191, 207, 223,
1196   239, 255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 414, 428, 441, 453,
1197   464, 474, 483, 45,  56,  68,  81,  95,  110, 126, 142, 158, 174, 190, 206,
1198   222, 238, 254, 270, 286, 302, 318, 334, 350, 366, 382, 398, 413, 427, 440,
1199   452, 463, 473, 482, 490, 55,  67,  80,  94,  109, 125, 141, 157, 173, 189,
1200   205, 221, 237, 253, 269, 285, 301, 317, 333, 349, 365, 381, 397, 412, 426,
1201   439, 451, 462, 472, 481, 489, 496, 66,  79,  93,  108, 124, 140, 156, 172,
1202   188, 204, 220, 236, 252, 268, 284, 300, 316, 332, 348, 364, 380, 396, 411,
1203   425, 438, 450, 461, 471, 480, 488, 495, 501, 78,  92,  107, 123, 139, 155,
1204   171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363, 379, 395,
1205   410, 424, 437, 449, 460, 470, 479, 487, 494, 500, 505, 91,  106, 122, 138,
1206   154, 170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378,
1207   394, 409, 423, 436, 448, 459, 469, 478, 486, 493, 499, 504, 508, 105, 121,
1208   137, 153, 169, 185, 201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361,
1209   377, 393, 408, 422, 435, 447, 458, 468, 477, 485, 492, 498, 503, 507, 510,
1210   120, 136, 152, 168, 184, 200, 216, 232, 248, 264, 280, 296, 312, 328, 344,
1211   360, 376, 392, 407, 421, 434, 446, 457, 467, 476, 484, 491, 497, 502, 506,
1212   509, 511,
1213 };
1214 
1215 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x32[512]) = {
1216   0,  32, 64, 96,  128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480,
1217   1,  33, 65, 97,  129, 161, 193, 225, 257, 289, 321, 353, 385, 417, 449, 481,
1218   2,  34, 66, 98,  130, 162, 194, 226, 258, 290, 322, 354, 386, 418, 450, 482,
1219   3,  35, 67, 99,  131, 163, 195, 227, 259, 291, 323, 355, 387, 419, 451, 483,
1220   4,  36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 420, 452, 484,
1221   5,  37, 69, 101, 133, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 485,
1222   6,  38, 70, 102, 134, 166, 198, 230, 262, 294, 326, 358, 390, 422, 454, 486,
1223   7,  39, 71, 103, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 487,
1224   8,  40, 72, 104, 136, 168, 200, 232, 264, 296, 328, 360, 392, 424, 456, 488,
1225   9,  41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 361, 393, 425, 457, 489,
1226   10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 330, 362, 394, 426, 458, 490,
1227   11, 43, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, 491,
1228   12, 44, 76, 108, 140, 172, 204, 236, 268, 300, 332, 364, 396, 428, 460, 492,
1229   13, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 493,
1230   14, 46, 78, 110, 142, 174, 206, 238, 270, 302, 334, 366, 398, 430, 462, 494,
1231   15, 47, 79, 111, 143, 175, 207, 239, 271, 303, 335, 367, 399, 431, 463, 495,
1232   16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, 368, 400, 432, 464, 496,
1233   17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433, 465, 497,
1234   18, 50, 82, 114, 146, 178, 210, 242, 274, 306, 338, 370, 402, 434, 466, 498,
1235   19, 51, 83, 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 435, 467, 499,
1236   20, 52, 84, 116, 148, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 500,
1237   21, 53, 85, 117, 149, 181, 213, 245, 277, 309, 341, 373, 405, 437, 469, 501,
1238   22, 54, 86, 118, 150, 182, 214, 246, 278, 310, 342, 374, 406, 438, 470, 502,
1239   23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 375, 407, 439, 471, 503,
1240   24, 56, 88, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, 504,
1241   25, 57, 89, 121, 153, 185, 217, 249, 281, 313, 345, 377, 409, 441, 473, 505,
1242   26, 58, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 506,
1243   27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507,
1244   28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 476, 508,
1245   29, 61, 93, 125, 157, 189, 221, 253, 285, 317, 349, 381, 413, 445, 477, 509,
1246   30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, 478, 510,
1247   31, 63, 95, 127, 159, 191, 223, 255, 287, 319, 351, 383, 415, 447, 479, 511,
1248 };
1249 
1250 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x16[512]) = {
1251   0,   16,  32,  48,  64,  80,  96,  112, 128, 144, 160, 176, 192, 208, 224,
1252   240, 256, 272, 288, 304, 320, 336, 352, 368, 384, 400, 416, 432, 448, 464,
1253   480, 496, 1,   17,  33,  49,  65,  81,  97,  113, 129, 145, 161, 177, 193,
1254   209, 225, 241, 257, 273, 289, 305, 321, 337, 353, 369, 385, 401, 417, 433,
1255   449, 465, 481, 497, 2,   18,  34,  50,  66,  82,  98,  114, 130, 146, 162,
1256   178, 194, 210, 226, 242, 258, 274, 290, 306, 322, 338, 354, 370, 386, 402,
1257   418, 434, 450, 466, 482, 498, 3,   19,  35,  51,  67,  83,  99,  115, 131,
1258   147, 163, 179, 195, 211, 227, 243, 259, 275, 291, 307, 323, 339, 355, 371,
1259   387, 403, 419, 435, 451, 467, 483, 499, 4,   20,  36,  52,  68,  84,  100,
1260   116, 132, 148, 164, 180, 196, 212, 228, 244, 260, 276, 292, 308, 324, 340,
1261   356, 372, 388, 404, 420, 436, 452, 468, 484, 500, 5,   21,  37,  53,  69,
1262   85,  101, 117, 133, 149, 165, 181, 197, 213, 229, 245, 261, 277, 293, 309,
1263   325, 341, 357, 373, 389, 405, 421, 437, 453, 469, 485, 501, 6,   22,  38,
1264   54,  70,  86,  102, 118, 134, 150, 166, 182, 198, 214, 230, 246, 262, 278,
1265   294, 310, 326, 342, 358, 374, 390, 406, 422, 438, 454, 470, 486, 502, 7,
1266   23,  39,  55,  71,  87,  103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
1267   263, 279, 295, 311, 327, 343, 359, 375, 391, 407, 423, 439, 455, 471, 487,
1268   503, 8,   24,  40,  56,  72,  88,  104, 120, 136, 152, 168, 184, 200, 216,
1269   232, 248, 264, 280, 296, 312, 328, 344, 360, 376, 392, 408, 424, 440, 456,
1270   472, 488, 504, 9,   25,  41,  57,  73,  89,  105, 121, 137, 153, 169, 185,
1271   201, 217, 233, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425,
1272   441, 457, 473, 489, 505, 10,  26,  42,  58,  74,  90,  106, 122, 138, 154,
1273   170, 186, 202, 218, 234, 250, 266, 282, 298, 314, 330, 346, 362, 378, 394,
1274   410, 426, 442, 458, 474, 490, 506, 11,  27,  43,  59,  75,  91,  107, 123,
1275   139, 155, 171, 187, 203, 219, 235, 251, 267, 283, 299, 315, 331, 347, 363,
1276   379, 395, 411, 427, 443, 459, 475, 491, 507, 12,  28,  44,  60,  76,  92,
1277   108, 124, 140, 156, 172, 188, 204, 220, 236, 252, 268, 284, 300, 316, 332,
1278   348, 364, 380, 396, 412, 428, 444, 460, 476, 492, 508, 13,  29,  45,  61,
1279   77,  93,  109, 125, 141, 157, 173, 189, 205, 221, 237, 253, 269, 285, 301,
1280   317, 333, 349, 365, 381, 397, 413, 429, 445, 461, 477, 493, 509, 14,  30,
1281   46,  62,  78,  94,  110, 126, 142, 158, 174, 190, 206, 222, 238, 254, 270,
1282   286, 302, 318, 334, 350, 366, 382, 398, 414, 430, 446, 462, 478, 494, 510,
1283   15,  31,  47,  63,  79,  95,  111, 127, 143, 159, 175, 191, 207, 223, 239,
1284   255, 271, 287, 303, 319, 335, 351, 367, 383, 399, 415, 431, 447, 463, 479,
1285   495, 511,
1286 };
1287 
1288 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x32[512]) = {
1289   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1290   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1291   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1292   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1293   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1294   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1295   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1296   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1297   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1298   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1299   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1300   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1301   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1302   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1303   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1304   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1305   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1306   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
1307   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1308   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
1309   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1310   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
1311   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1312   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
1313   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1314   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
1315   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1316   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
1317   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1318   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
1319   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1320   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
1321   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1322   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
1323   510, 511,
1324 };
1325 
1326 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x16[512]) = {
1327   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1328   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1329   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1330   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1331   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1332   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1333   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1334   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1335   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1336   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1337   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1338   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1339   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1340   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1341   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1342   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1343   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1344   255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
1345   270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1346   285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
1347   300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1348   315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
1349   330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1350   345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
1351   360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1352   375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
1353   390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1354   405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
1355   420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1356   435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
1357   450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1358   465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
1359   480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1360   495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
1361   510, 511,
1362 };
1363 
1364 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_16x16[256]) = {
1365   0,  16, 32, 48, 64, 80, 96,  112, 128, 144, 160, 176, 192, 208, 224, 240,
1366   1,  17, 33, 49, 65, 81, 97,  113, 129, 145, 161, 177, 193, 209, 225, 241,
1367   2,  18, 34, 50, 66, 82, 98,  114, 130, 146, 162, 178, 194, 210, 226, 242,
1368   3,  19, 35, 51, 67, 83, 99,  115, 131, 147, 163, 179, 195, 211, 227, 243,
1369   4,  20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 180, 196, 212, 228, 244,
1370   5,  21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197, 213, 229, 245,
1371   6,  22, 38, 54, 70, 86, 102, 118, 134, 150, 166, 182, 198, 214, 230, 246,
1372   7,  23, 39, 55, 71, 87, 103, 119, 135, 151, 167, 183, 199, 215, 231, 247,
1373   8,  24, 40, 56, 72, 88, 104, 120, 136, 152, 168, 184, 200, 216, 232, 248,
1374   9,  25, 41, 57, 73, 89, 105, 121, 137, 153, 169, 185, 201, 217, 233, 249,
1375   10, 26, 42, 58, 74, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 250,
1376   11, 27, 43, 59, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 251,
1377   12, 28, 44, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 252,
1378   13, 29, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 253,
1379   14, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, 254,
1380   15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239, 255,
1381 };
1382 
1383 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_16x16[256]) = {
1384   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
1385   15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
1386   30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
1387   45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
1388   60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,
1389   75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
1390   90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,
1391   105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1392   120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1393   135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
1394   150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1395   165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1396   180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1397   195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1398   210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1399   225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1400   240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1401   255,
1402 };
1403 
1404 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x16[256]) = {
1405   0,   1,   5,   6,   14,  15,  27,  28,  44,  45,  65,  66,  90,  91,  119,
1406   120, 2,   4,   7,   13,  16,  26,  29,  43,  46,  64,  67,  89,  92,  118,
1407   121, 150, 3,   8,   12,  17,  25,  30,  42,  47,  63,  68,  88,  93,  117,
1408   122, 149, 151, 9,   11,  18,  24,  31,  41,  48,  62,  69,  87,  94,  116,
1409   123, 148, 152, 177, 10,  19,  23,  32,  40,  49,  61,  70,  86,  95,  115,
1410   124, 147, 153, 176, 178, 20,  22,  33,  39,  50,  60,  71,  85,  96,  114,
1411   125, 146, 154, 175, 179, 200, 21,  34,  38,  51,  59,  72,  84,  97,  113,
1412   126, 145, 155, 174, 180, 199, 201, 35,  37,  52,  58,  73,  83,  98,  112,
1413   127, 144, 156, 173, 181, 198, 202, 219, 36,  53,  57,  74,  82,  99,  111,
1414   128, 143, 157, 172, 182, 197, 203, 218, 220, 54,  56,  75,  81,  100, 110,
1415   129, 142, 158, 171, 183, 196, 204, 217, 221, 234, 55,  76,  80,  101, 109,
1416   130, 141, 159, 170, 184, 195, 205, 216, 222, 233, 235, 77,  79,  102, 108,
1417   131, 140, 160, 169, 185, 194, 206, 215, 223, 232, 236, 245, 78,  103, 107,
1418   132, 139, 161, 168, 186, 193, 207, 214, 224, 231, 237, 244, 246, 104, 106,
1419   133, 138, 162, 167, 187, 192, 208, 213, 225, 230, 238, 243, 247, 252, 105,
1420   134, 137, 163, 166, 188, 191, 209, 212, 226, 229, 239, 242, 248, 251, 253,
1421   135, 136, 164, 165, 189, 190, 210, 211, 227, 228, 240, 241, 249, 250, 254,
1422   255
1423 };
1424 
1425 DECLARE_ALIGNED(16, static const int16_t, av1_mcol_iscan_32x32[1024]) = {
1426   0,   32,   64,  96,   128, 160,  192, 224,  256, 288,  320, 352,  384, 416,
1427   448, 480,  512, 544,  576, 608,  640, 672,  704, 736,  768, 800,  832, 864,
1428   896, 928,  960, 992,  1,   33,   65,  97,   129, 161,  193, 225,  257, 289,
1429   321, 353,  385, 417,  449, 481,  513, 545,  577, 609,  641, 673,  705, 737,
1430   769, 801,  833, 865,  897, 929,  961, 993,  2,   34,   66,  98,   130, 162,
1431   194, 226,  258, 290,  322, 354,  386, 418,  450, 482,  514, 546,  578, 610,
1432   642, 674,  706, 738,  770, 802,  834, 866,  898, 930,  962, 994,  3,   35,
1433   67,  99,   131, 163,  195, 227,  259, 291,  323, 355,  387, 419,  451, 483,
1434   515, 547,  579, 611,  643, 675,  707, 739,  771, 803,  835, 867,  899, 931,
1435   963, 995,  4,   36,   68,  100,  132, 164,  196, 228,  260, 292,  324, 356,
1436   388, 420,  452, 484,  516, 548,  580, 612,  644, 676,  708, 740,  772, 804,
1437   836, 868,  900, 932,  964, 996,  5,   37,   69,  101,  133, 165,  197, 229,
1438   261, 293,  325, 357,  389, 421,  453, 485,  517, 549,  581, 613,  645, 677,
1439   709, 741,  773, 805,  837, 869,  901, 933,  965, 997,  6,   38,   70,  102,
1440   134, 166,  198, 230,  262, 294,  326, 358,  390, 422,  454, 486,  518, 550,
1441   582, 614,  646, 678,  710, 742,  774, 806,  838, 870,  902, 934,  966, 998,
1442   7,   39,   71,  103,  135, 167,  199, 231,  263, 295,  327, 359,  391, 423,
1443   455, 487,  519, 551,  583, 615,  647, 679,  711, 743,  775, 807,  839, 871,
1444   903, 935,  967, 999,  8,   40,   72,  104,  136, 168,  200, 232,  264, 296,
1445   328, 360,  392, 424,  456, 488,  520, 552,  584, 616,  648, 680,  712, 744,
1446   776, 808,  840, 872,  904, 936,  968, 1000, 9,   41,   73,  105,  137, 169,
1447   201, 233,  265, 297,  329, 361,  393, 425,  457, 489,  521, 553,  585, 617,
1448   649, 681,  713, 745,  777, 809,  841, 873,  905, 937,  969, 1001, 10,  42,
1449   74,  106,  138, 170,  202, 234,  266, 298,  330, 362,  394, 426,  458, 490,
1450   522, 554,  586, 618,  650, 682,  714, 746,  778, 810,  842, 874,  906, 938,
1451   970, 1002, 11,  43,   75,  107,  139, 171,  203, 235,  267, 299,  331, 363,
1452   395, 427,  459, 491,  523, 555,  587, 619,  651, 683,  715, 747,  779, 811,
1453   843, 875,  907, 939,  971, 1003, 12,  44,   76,  108,  140, 172,  204, 236,
1454   268, 300,  332, 364,  396, 428,  460, 492,  524, 556,  588, 620,  652, 684,
1455   716, 748,  780, 812,  844, 876,  908, 940,  972, 1004, 13,  45,   77,  109,
1456   141, 173,  205, 237,  269, 301,  333, 365,  397, 429,  461, 493,  525, 557,
1457   589, 621,  653, 685,  717, 749,  781, 813,  845, 877,  909, 941,  973, 1005,
1458   14,  46,   78,  110,  142, 174,  206, 238,  270, 302,  334, 366,  398, 430,
1459   462, 494,  526, 558,  590, 622,  654, 686,  718, 750,  782, 814,  846, 878,
1460   910, 942,  974, 1006, 15,  47,   79,  111,  143, 175,  207, 239,  271, 303,
1461   335, 367,  399, 431,  463, 495,  527, 559,  591, 623,  655, 687,  719, 751,
1462   783, 815,  847, 879,  911, 943,  975, 1007, 16,  48,   80,  112,  144, 176,
1463   208, 240,  272, 304,  336, 368,  400, 432,  464, 496,  528, 560,  592, 624,
1464   656, 688,  720, 752,  784, 816,  848, 880,  912, 944,  976, 1008, 17,  49,
1465   81,  113,  145, 177,  209, 241,  273, 305,  337, 369,  401, 433,  465, 497,
1466   529, 561,  593, 625,  657, 689,  721, 753,  785, 817,  849, 881,  913, 945,
1467   977, 1009, 18,  50,   82,  114,  146, 178,  210, 242,  274, 306,  338, 370,
1468   402, 434,  466, 498,  530, 562,  594, 626,  658, 690,  722, 754,  786, 818,
1469   850, 882,  914, 946,  978, 1010, 19,  51,   83,  115,  147, 179,  211, 243,
1470   275, 307,  339, 371,  403, 435,  467, 499,  531, 563,  595, 627,  659, 691,
1471   723, 755,  787, 819,  851, 883,  915, 947,  979, 1011, 20,  52,   84,  116,
1472   148, 180,  212, 244,  276, 308,  340, 372,  404, 436,  468, 500,  532, 564,
1473   596, 628,  660, 692,  724, 756,  788, 820,  852, 884,  916, 948,  980, 1012,
1474   21,  53,   85,  117,  149, 181,  213, 245,  277, 309,  341, 373,  405, 437,
1475   469, 501,  533, 565,  597, 629,  661, 693,  725, 757,  789, 821,  853, 885,
1476   917, 949,  981, 1013, 22,  54,   86,  118,  150, 182,  214, 246,  278, 310,
1477   342, 374,  406, 438,  470, 502,  534, 566,  598, 630,  662, 694,  726, 758,
1478   790, 822,  854, 886,  918, 950,  982, 1014, 23,  55,   87,  119,  151, 183,
1479   215, 247,  279, 311,  343, 375,  407, 439,  471, 503,  535, 567,  599, 631,
1480   663, 695,  727, 759,  791, 823,  855, 887,  919, 951,  983, 1015, 24,  56,
1481   88,  120,  152, 184,  216, 248,  280, 312,  344, 376,  408, 440,  472, 504,
1482   536, 568,  600, 632,  664, 696,  728, 760,  792, 824,  856, 888,  920, 952,
1483   984, 1016, 25,  57,   89,  121,  153, 185,  217, 249,  281, 313,  345, 377,
1484   409, 441,  473, 505,  537, 569,  601, 633,  665, 697,  729, 761,  793, 825,
1485   857, 889,  921, 953,  985, 1017, 26,  58,   90,  122,  154, 186,  218, 250,
1486   282, 314,  346, 378,  410, 442,  474, 506,  538, 570,  602, 634,  666, 698,
1487   730, 762,  794, 826,  858, 890,  922, 954,  986, 1018, 27,  59,   91,  123,
1488   155, 187,  219, 251,  283, 315,  347, 379,  411, 443,  475, 507,  539, 571,
1489   603, 635,  667, 699,  731, 763,  795, 827,  859, 891,  923, 955,  987, 1019,
1490   28,  60,   92,  124,  156, 188,  220, 252,  284, 316,  348, 380,  412, 444,
1491   476, 508,  540, 572,  604, 636,  668, 700,  732, 764,  796, 828,  860, 892,
1492   924, 956,  988, 1020, 29,  61,   93,  125,  157, 189,  221, 253,  285, 317,
1493   349, 381,  413, 445,  477, 509,  541, 573,  605, 637,  669, 701,  733, 765,
1494   797, 829,  861, 893,  925, 957,  989, 1021, 30,  62,   94,  126,  158, 190,
1495   222, 254,  286, 318,  350, 382,  414, 446,  478, 510,  542, 574,  606, 638,
1496   670, 702,  734, 766,  798, 830,  862, 894,  926, 958,  990, 1022, 31,  63,
1497   95,  127,  159, 191,  223, 255,  287, 319,  351, 383,  415, 447,  479, 511,
1498   543, 575,  607, 639,  671, 703,  735, 767,  799, 831,  863, 895,  927, 959,
1499   991, 1023,
1500 };
1501 
1502 DECLARE_ALIGNED(16, static const int16_t, av1_mrow_iscan_32x32[1024]) = {
1503   0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,
1504   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
1505   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,
1506   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
1507   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,
1508   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
1509   78,   79,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   90,
1510   91,   92,   93,   94,   95,   96,   97,   98,   99,   100,  101,  102,  103,
1511   104,  105,  106,  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
1512   117,  118,  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
1513   130,  131,  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
1514   143,  144,  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,
1515   156,  157,  158,  159,  160,  161,  162,  163,  164,  165,  166,  167,  168,
1516   169,  170,  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,
1517   182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,  193,  194,
1518   195,  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
1519   208,  209,  210,  211,  212,  213,  214,  215,  216,  217,  218,  219,  220,
1520   221,  222,  223,  224,  225,  226,  227,  228,  229,  230,  231,  232,  233,
1521   234,  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
1522   247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,  259,
1523   260,  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
1524   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,  283,  284,  285,
1525   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
1526   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,  309,  310,  311,
1527   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
1528   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
1529   338,  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
1530   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
1531   364,  365,  366,  367,  368,  369,  370,  371,  372,  373,  374,  375,  376,
1532   377,  378,  379,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389,
1533   390,  391,  392,  393,  394,  395,  396,  397,  398,  399,  400,  401,  402,
1534   403,  404,  405,  406,  407,  408,  409,  410,  411,  412,  413,  414,  415,
1535   416,  417,  418,  419,  420,  421,  422,  423,  424,  425,  426,  427,  428,
1536   429,  430,  431,  432,  433,  434,  435,  436,  437,  438,  439,  440,  441,
1537   442,  443,  444,  445,  446,  447,  448,  449,  450,  451,  452,  453,  454,
1538   455,  456,  457,  458,  459,  460,  461,  462,  463,  464,  465,  466,  467,
1539   468,  469,  470,  471,  472,  473,  474,  475,  476,  477,  478,  479,  480,
1540   481,  482,  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,
1541   494,  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  506,
1542   507,  508,  509,  510,  511,  512,  513,  514,  515,  516,  517,  518,  519,
1543   520,  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
1544   533,  534,  535,  536,  537,  538,  539,  540,  541,  542,  543,  544,  545,
1545   546,  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
1546   559,  560,  561,  562,  563,  564,  565,  566,  567,  568,  569,  570,  571,
1547   572,  573,  574,  575,  576,  577,  578,  579,  580,  581,  582,  583,  584,
1548   585,  586,  587,  588,  589,  590,  591,  592,  593,  594,  595,  596,  597,
1549   598,  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  609,  610,
1550   611,  612,  613,  614,  615,  616,  617,  618,  619,  620,  621,  622,  623,
1551   624,  625,  626,  627,  628,  629,  630,  631,  632,  633,  634,  635,  636,
1552   637,  638,  639,  640,  641,  642,  643,  644,  645,  646,  647,  648,  649,
1553   650,  651,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
1554   663,  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,  674,  675,
1555   676,  677,  678,  679,  680,  681,  682,  683,  684,  685,  686,  687,  688,
1556   689,  690,  691,  692,  693,  694,  695,  696,  697,  698,  699,  700,  701,
1557   702,  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,  713,  714,
1558   715,  716,  717,  718,  719,  720,  721,  722,  723,  724,  725,  726,  727,
1559   728,  729,  730,  731,  732,  733,  734,  735,  736,  737,  738,  739,  740,
1560   741,  742,  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,
1561   754,  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  765,  766,
1562   767,  768,  769,  770,  771,  772,  773,  774,  775,  776,  777,  778,  779,
1563   780,  781,  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
1564   793,  794,  795,  796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
1565   806,  807,  808,  809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
1566   819,  820,  821,  822,  823,  824,  825,  826,  827,  828,  829,  830,  831,
1567   832,  833,  834,  835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
1568   845,  846,  847,  848,  849,  850,  851,  852,  853,  854,  855,  856,  857,
1569   858,  859,  860,  861,  862,  863,  864,  865,  866,  867,  868,  869,  870,
1570   871,  872,  873,  874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
1571   884,  885,  886,  887,  888,  889,  890,  891,  892,  893,  894,  895,  896,
1572   897,  898,  899,  900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
1573   910,  911,  912,  913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
1574   923,  924,  925,  926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
1575   936,  937,  938,  939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
1576   949,  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
1577   962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
1578   975,  976,  977,  978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
1579   988,  989,  990,  991,  992,  993,  994,  995,  996,  997,  998,  999,  1000,
1580   1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
1581   1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
1582 };
1583 
1584 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_32x32[1024]) = {
1585   0,    1,    5,    6,    14,   15,   27,   28,   44,   45,   65,   66,   90,
1586   91,   119,  120,  152,  153,  189,  190,  230,  231,  275,  276,  324,  325,
1587   377,  378,  434,  435,  495,  496,  2,    4,    7,    13,   16,   26,   29,
1588   43,   46,   64,   67,   89,   92,   118,  121,  151,  154,  188,  191,  229,
1589   232,  274,  277,  323,  326,  376,  379,  433,  436,  494,  497,  558,  3,
1590   8,    12,   17,   25,   30,   42,   47,   63,   68,   88,   93,   117,  122,
1591   150,  155,  187,  192,  228,  233,  273,  278,  322,  327,  375,  380,  432,
1592   437,  493,  498,  557,  559,  9,    11,   18,   24,   31,   41,   48,   62,
1593   69,   87,   94,   116,  123,  149,  156,  186,  193,  227,  234,  272,  279,
1594   321,  328,  374,  381,  431,  438,  492,  499,  556,  560,  617,  10,   19,
1595   23,   32,   40,   49,   61,   70,   86,   95,   115,  124,  148,  157,  185,
1596   194,  226,  235,  271,  280,  320,  329,  373,  382,  430,  439,  491,  500,
1597   555,  561,  616,  618,  20,   22,   33,   39,   50,   60,   71,   85,   96,
1598   114,  125,  147,  158,  184,  195,  225,  236,  270,  281,  319,  330,  372,
1599   383,  429,  440,  490,  501,  554,  562,  615,  619,  672,  21,   34,   38,
1600   51,   59,   72,   84,   97,   113,  126,  146,  159,  183,  196,  224,  237,
1601   269,  282,  318,  331,  371,  384,  428,  441,  489,  502,  553,  563,  614,
1602   620,  671,  673,  35,   37,   52,   58,   73,   83,   98,   112,  127,  145,
1603   160,  182,  197,  223,  238,  268,  283,  317,  332,  370,  385,  427,  442,
1604   488,  503,  552,  564,  613,  621,  670,  674,  723,  36,   53,   57,   74,
1605   82,   99,   111,  128,  144,  161,  181,  198,  222,  239,  267,  284,  316,
1606   333,  369,  386,  426,  443,  487,  504,  551,  565,  612,  622,  669,  675,
1607   722,  724,  54,   56,   75,   81,   100,  110,  129,  143,  162,  180,  199,
1608   221,  240,  266,  285,  315,  334,  368,  387,  425,  444,  486,  505,  550,
1609   566,  611,  623,  668,  676,  721,  725,  770,  55,   76,   80,   101,  109,
1610   130,  142,  163,  179,  200,  220,  241,  265,  286,  314,  335,  367,  388,
1611   424,  445,  485,  506,  549,  567,  610,  624,  667,  677,  720,  726,  769,
1612   771,  77,   79,   102,  108,  131,  141,  164,  178,  201,  219,  242,  264,
1613   287,  313,  336,  366,  389,  423,  446,  484,  507,  548,  568,  609,  625,
1614   666,  678,  719,  727,  768,  772,  813,  78,   103,  107,  132,  140,  165,
1615   177,  202,  218,  243,  263,  288,  312,  337,  365,  390,  422,  447,  483,
1616   508,  547,  569,  608,  626,  665,  679,  718,  728,  767,  773,  812,  814,
1617   104,  106,  133,  139,  166,  176,  203,  217,  244,  262,  289,  311,  338,
1618   364,  391,  421,  448,  482,  509,  546,  570,  607,  627,  664,  680,  717,
1619   729,  766,  774,  811,  815,  852,  105,  134,  138,  167,  175,  204,  216,
1620   245,  261,  290,  310,  339,  363,  392,  420,  449,  481,  510,  545,  571,
1621   606,  628,  663,  681,  716,  730,  765,  775,  810,  816,  851,  853,  135,
1622   137,  168,  174,  205,  215,  246,  260,  291,  309,  340,  362,  393,  419,
1623   450,  480,  511,  544,  572,  605,  629,  662,  682,  715,  731,  764,  776,
1624   809,  817,  850,  854,  887,  136,  169,  173,  206,  214,  247,  259,  292,
1625   308,  341,  361,  394,  418,  451,  479,  512,  543,  573,  604,  630,  661,
1626   683,  714,  732,  763,  777,  808,  818,  849,  855,  886,  888,  170,  172,
1627   207,  213,  248,  258,  293,  307,  342,  360,  395,  417,  452,  478,  513,
1628   542,  574,  603,  631,  660,  684,  713,  733,  762,  778,  807,  819,  848,
1629   856,  885,  889,  918,  171,  208,  212,  249,  257,  294,  306,  343,  359,
1630   396,  416,  453,  477,  514,  541,  575,  602,  632,  659,  685,  712,  734,
1631   761,  779,  806,  820,  847,  857,  884,  890,  917,  919,  209,  211,  250,
1632   256,  295,  305,  344,  358,  397,  415,  454,  476,  515,  540,  576,  601,
1633   633,  658,  686,  711,  735,  760,  780,  805,  821,  846,  858,  883,  891,
1634   916,  920,  945,  210,  251,  255,  296,  304,  345,  357,  398,  414,  455,
1635   475,  516,  539,  577,  600,  634,  657,  687,  710,  736,  759,  781,  804,
1636   822,  845,  859,  882,  892,  915,  921,  944,  946,  252,  254,  297,  303,
1637   346,  356,  399,  413,  456,  474,  517,  538,  578,  599,  635,  656,  688,
1638   709,  737,  758,  782,  803,  823,  844,  860,  881,  893,  914,  922,  943,
1639   947,  968,  253,  298,  302,  347,  355,  400,  412,  457,  473,  518,  537,
1640   579,  598,  636,  655,  689,  708,  738,  757,  783,  802,  824,  843,  861,
1641   880,  894,  913,  923,  942,  948,  967,  969,  299,  301,  348,  354,  401,
1642   411,  458,  472,  519,  536,  580,  597,  637,  654,  690,  707,  739,  756,
1643   784,  801,  825,  842,  862,  879,  895,  912,  924,  941,  949,  966,  970,
1644   987,  300,  349,  353,  402,  410,  459,  471,  520,  535,  581,  596,  638,
1645   653,  691,  706,  740,  755,  785,  800,  826,  841,  863,  878,  896,  911,
1646   925,  940,  950,  965,  971,  986,  988,  350,  352,  403,  409,  460,  470,
1647   521,  534,  582,  595,  639,  652,  692,  705,  741,  754,  786,  799,  827,
1648   840,  864,  877,  897,  910,  926,  939,  951,  964,  972,  985,  989,  1002,
1649   351,  404,  408,  461,  469,  522,  533,  583,  594,  640,  651,  693,  704,
1650   742,  753,  787,  798,  828,  839,  865,  876,  898,  909,  927,  938,  952,
1651   963,  973,  984,  990,  1001, 1003, 405,  407,  462,  468,  523,  532,  584,
1652   593,  641,  650,  694,  703,  743,  752,  788,  797,  829,  838,  866,  875,
1653   899,  908,  928,  937,  953,  962,  974,  983,  991,  1000, 1004, 1013, 406,
1654   463,  467,  524,  531,  585,  592,  642,  649,  695,  702,  744,  751,  789,
1655   796,  830,  837,  867,  874,  900,  907,  929,  936,  954,  961,  975,  982,
1656   992,  999,  1005, 1012, 1014, 464,  466,  525,  530,  586,  591,  643,  648,
1657   696,  701,  745,  750,  790,  795,  831,  836,  868,  873,  901,  906,  930,
1658   935,  955,  960,  976,  981,  993,  998,  1006, 1011, 1015, 1020, 465,  526,
1659   529,  587,  590,  644,  647,  697,  700,  746,  749,  791,  794,  832,  835,
1660   869,  872,  902,  905,  931,  934,  956,  959,  977,  980,  994,  997,  1007,
1661   1010, 1016, 1019, 1021, 527,  528,  588,  589,  645,  646,  698,  699,  747,
1662   748,  792,  793,  833,  834,  870,  871,  903,  904,  932,  933,  957,  958,
1663   978,  979,  995,  996,  1008, 1009, 1017, 1018, 1022, 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