Coverage Report

Created: 2023-06-07 06:31

/src/aom/aom_dsp/intrapred.c
Line
Count
Source (jump to first uncovered line)
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
#include <math.h>
14
15
#include "config/aom_config.h"
16
#include "config/aom_dsp_rtcd.h"
17
18
#include "aom_dsp/aom_dsp_common.h"
19
#include "aom_dsp/intrapred_common.h"
20
#include "aom_mem/aom_mem.h"
21
#include "aom_ports/bitops.h"
22
23
static INLINE void v_predictor(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
24
0
                               const uint8_t *above, const uint8_t *left) {
25
0
  int r;
26
0
  (void)left;
27
28
0
  for (r = 0; r < bh; r++) {
29
0
    memcpy(dst, above, bw);
30
0
    dst += stride;
31
0
  }
32
0
}
33
34
static INLINE void h_predictor(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
35
0
                               const uint8_t *above, const uint8_t *left) {
36
0
  int r;
37
0
  (void)above;
38
39
0
  for (r = 0; r < bh; r++) {
40
0
    memset(dst, left[r], bw);
41
0
    dst += stride;
42
0
  }
43
0
}
44
45
4.98G
static INLINE int abs_diff(int a, int b) { return (a > b) ? a - b : b - a; }
46
47
static INLINE uint16_t paeth_predictor_single(uint16_t left, uint16_t top,
48
1.66G
                                              uint16_t top_left) {
49
1.66G
  const int base = top + left - top_left;
50
1.66G
  const int p_left = abs_diff(base, left);
51
1.66G
  const int p_top = abs_diff(base, top);
52
1.66G
  const int p_top_left = abs_diff(base, top_left);
53
54
  // Return nearest to base of left, top and top_left.
55
1.66G
  return (p_left <= p_top && p_left <= p_top_left) ? left
56
1.66G
         : (p_top <= p_top_left)                   ? top
57
65.0M
                                                   : top_left;
58
1.66G
}
59
60
static INLINE void paeth_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
61
                                   int bh, const uint8_t *above,
62
0
                                   const uint8_t *left) {
63
0
  int r, c;
64
0
  const uint8_t ytop_left = above[-1];
65
66
0
  for (r = 0; r < bh; r++) {
67
0
    for (c = 0; c < bw; c++)
68
0
      dst[c] = (uint8_t)paeth_predictor_single(left[r], above[c], ytop_left);
69
0
    dst += stride;
70
0
  }
71
0
}
72
73
// Some basic checks on weights for smooth predictor.
74
#define sm_weights_sanity_checks(weights_w, weights_h, weights_scale, \
75
                                 pred_scale)                          \
76
2.34M
  assert(weights_w[0] < weights_scale);                               \
77
2.34M
  assert(weights_h[0] < weights_scale);                               \
78
2.34M
  assert(weights_scale - weights_w[bw - 1] < weights_scale);          \
79
2.34M
  assert(weights_scale - weights_h[bh - 1] < weights_scale);          \
80
2.34M
  assert(pred_scale < 31)  // ensures no overflow when calculating predictor.
81
82
562M
#define divide_round(value, bits) (((value) + (1 << ((bits)-1))) >> (bits))
83
84
static INLINE void smooth_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
85
                                    int bh, const uint8_t *above,
86
0
                                    const uint8_t *left) {
87
0
  const uint8_t below_pred = left[bh - 1];   // estimated by bottom-left pixel
88
0
  const uint8_t right_pred = above[bw - 1];  // estimated by top-right pixel
89
0
  const uint8_t *const sm_weights_w = smooth_weights + bw - 4;
90
0
  const uint8_t *const sm_weights_h = smooth_weights + bh - 4;
91
  // scale = 2 * 2^SMOOTH_WEIGHT_LOG2_SCALE
92
0
  const int log2_scale = 1 + SMOOTH_WEIGHT_LOG2_SCALE;
93
0
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
94
0
  sm_weights_sanity_checks(sm_weights_w, sm_weights_h, scale,
95
0
                           log2_scale + sizeof(*dst));
96
0
  int r;
97
0
  for (r = 0; r < bh; ++r) {
98
0
    int c;
99
0
    for (c = 0; c < bw; ++c) {
100
0
      const uint8_t pixels[] = { above[c], below_pred, left[r], right_pred };
101
0
      const uint8_t weights[] = { sm_weights_h[r], scale - sm_weights_h[r],
102
0
                                  sm_weights_w[c], scale - sm_weights_w[c] };
103
0
      uint32_t this_pred = 0;
104
0
      int i;
105
0
      assert(scale >= sm_weights_h[r] && scale >= sm_weights_w[c]);
106
0
      for (i = 0; i < 4; ++i) {
107
0
        this_pred += weights[i] * pixels[i];
108
0
      }
109
0
      dst[c] = divide_round(this_pred, log2_scale);
110
0
    }
111
0
    dst += stride;
112
0
  }
113
0
}
114
115
static INLINE void smooth_v_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
116
                                      int bh, const uint8_t *above,
117
0
                                      const uint8_t *left) {
118
0
  const uint8_t below_pred = left[bh - 1];  // estimated by bottom-left pixel
119
0
  const uint8_t *const sm_weights = smooth_weights + bh - 4;
120
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
121
0
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
122
0
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
123
0
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
124
0
                           log2_scale + sizeof(*dst));
125
126
0
  int r;
127
0
  for (r = 0; r < bh; r++) {
128
0
    int c;
129
0
    for (c = 0; c < bw; ++c) {
130
0
      const uint8_t pixels[] = { above[c], below_pred };
131
0
      const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] };
132
0
      uint32_t this_pred = 0;
133
0
      assert(scale >= sm_weights[r]);
134
0
      int i;
135
0
      for (i = 0; i < 2; ++i) {
136
0
        this_pred += weights[i] * pixels[i];
137
0
      }
138
0
      dst[c] = divide_round(this_pred, log2_scale);
139
0
    }
140
0
    dst += stride;
141
0
  }
142
0
}
143
144
static INLINE void smooth_h_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
145
                                      int bh, const uint8_t *above,
146
0
                                      const uint8_t *left) {
147
0
  const uint8_t right_pred = above[bw - 1];  // estimated by top-right pixel
148
0
  const uint8_t *const sm_weights = smooth_weights + bw - 4;
149
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
150
0
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
151
0
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
152
0
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
153
0
                           log2_scale + sizeof(*dst));
154
155
0
  int r;
156
0
  for (r = 0; r < bh; r++) {
157
0
    int c;
158
0
    for (c = 0; c < bw; ++c) {
159
0
      const uint8_t pixels[] = { left[r], right_pred };
160
0
      const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] };
161
0
      uint32_t this_pred = 0;
162
0
      assert(scale >= sm_weights[c]);
163
0
      int i;
164
0
      for (i = 0; i < 2; ++i) {
165
0
        this_pred += weights[i] * pixels[i];
166
0
      }
167
0
      dst[c] = divide_round(this_pred, log2_scale);
168
0
    }
169
0
    dst += stride;
170
0
  }
171
0
}
172
173
static INLINE void dc_128_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
174
                                    int bh, const uint8_t *above,
175
0
                                    const uint8_t *left) {
176
0
  int r;
177
0
  (void)above;
178
0
  (void)left;
179
180
0
  for (r = 0; r < bh; r++) {
181
0
    memset(dst, 128, bw);
182
0
    dst += stride;
183
0
  }
184
0
}
185
186
static INLINE void dc_left_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
187
                                     int bh, const uint8_t *above,
188
0
                                     const uint8_t *left) {
189
0
  int i, r, expected_dc, sum = 0;
190
0
  (void)above;
191
192
0
  for (i = 0; i < bh; i++) sum += left[i];
193
0
  expected_dc = (sum + (bh >> 1)) / bh;
194
195
0
  for (r = 0; r < bh; r++) {
196
0
    memset(dst, expected_dc, bw);
197
0
    dst += stride;
198
0
  }
199
0
}
200
201
static INLINE void dc_top_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
202
                                    int bh, const uint8_t *above,
203
0
                                    const uint8_t *left) {
204
0
  int i, r, expected_dc, sum = 0;
205
0
  (void)left;
206
207
0
  for (i = 0; i < bw; i++) sum += above[i];
208
0
  expected_dc = (sum + (bw >> 1)) / bw;
209
210
0
  for (r = 0; r < bh; r++) {
211
0
    memset(dst, expected_dc, bw);
212
0
    dst += stride;
213
0
  }
214
0
}
215
216
static INLINE void dc_predictor(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
217
0
                                const uint8_t *above, const uint8_t *left) {
218
0
  int i, r, expected_dc, sum = 0;
219
0
  const int count = bw + bh;
220
221
0
  for (i = 0; i < bw; i++) {
222
0
    sum += above[i];
223
0
  }
224
0
  for (i = 0; i < bh; i++) {
225
0
    sum += left[i];
226
0
  }
227
228
0
  expected_dc = (sum + (count >> 1)) / count;
229
230
0
  for (r = 0; r < bh; r++) {
231
0
    memset(dst, expected_dc, bw);
232
0
    dst += stride;
233
0
  }
234
0
}
235
236
static INLINE int divide_using_multiply_shift(int num, int shift1,
237
1.28M
                                              int multiplier, int shift2) {
238
1.28M
  const int interm = num >> shift1;
239
1.28M
  return interm * multiplier >> shift2;
240
1.28M
}
241
242
// The constants (multiplier and shifts) for a given block size are obtained
243
// as follows:
244
// - Let sum_w_h =  block width + block height.
245
// - Shift 'sum_w_h' right until we reach an odd number. Let the number of
246
// shifts for that block size be called 'shift1' (see the parameter in
247
// dc_predictor_rect() function), and let the odd number be 'd'. [d has only 2
248
// possible values: d = 3 for a 1:2 rect block and d = 5 for a 1:4 rect
249
// block].
250
// - Find multipliers for (i) dividing by 3, and (ii) dividing by 5,
251
// using the "Algorithm 1" in:
252
// http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1467632
253
// by ensuring that m + n = 16 (in that algorithm). This ensures that our 2nd
254
// shift will be 16, regardless of the block size.
255
256
// Note: For low bitdepth, assembly code may be optimized by using smaller
257
// constants for smaller block sizes, where the range of the 'sum' is
258
// restricted to fewer bits.
259
260
0
#define DC_MULTIPLIER_1X2 0x5556
261
0
#define DC_MULTIPLIER_1X4 0x3334
262
263
0
#define DC_SHIFT2 16
264
265
static INLINE void dc_predictor_rect(uint8_t *dst, ptrdiff_t stride, int bw,
266
                                     int bh, const uint8_t *above,
267
                                     const uint8_t *left, int shift1,
268
0
                                     int multiplier) {
269
0
  int sum = 0;
270
271
0
  for (int i = 0; i < bw; i++) {
272
0
    sum += above[i];
273
0
  }
274
0
  for (int i = 0; i < bh; i++) {
275
0
    sum += left[i];
276
0
  }
277
278
0
  const int expected_dc = divide_using_multiply_shift(
279
0
      sum + ((bw + bh) >> 1), shift1, multiplier, DC_SHIFT2);
280
0
  assert(expected_dc < (1 << 8));
281
282
0
  for (int r = 0; r < bh; r++) {
283
0
    memset(dst, expected_dc, bw);
284
0
    dst += stride;
285
0
  }
286
0
}
287
288
#undef DC_SHIFT2
289
290
void aom_dc_predictor_4x8_c(uint8_t *dst, ptrdiff_t stride,
291
0
                            const uint8_t *above, const uint8_t *left) {
292
0
  dc_predictor_rect(dst, stride, 4, 8, above, left, 2, DC_MULTIPLIER_1X2);
293
0
}
294
295
void aom_dc_predictor_8x4_c(uint8_t *dst, ptrdiff_t stride,
296
0
                            const uint8_t *above, const uint8_t *left) {
297
0
  dc_predictor_rect(dst, stride, 8, 4, above, left, 2, DC_MULTIPLIER_1X2);
298
0
}
299
300
void aom_dc_predictor_4x16_c(uint8_t *dst, ptrdiff_t stride,
301
0
                             const uint8_t *above, const uint8_t *left) {
302
0
  dc_predictor_rect(dst, stride, 4, 16, above, left, 2, DC_MULTIPLIER_1X4);
303
0
}
304
305
void aom_dc_predictor_16x4_c(uint8_t *dst, ptrdiff_t stride,
306
0
                             const uint8_t *above, const uint8_t *left) {
307
0
  dc_predictor_rect(dst, stride, 16, 4, above, left, 2, DC_MULTIPLIER_1X4);
308
0
}
309
310
void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t stride,
311
0
                             const uint8_t *above, const uint8_t *left) {
312
0
  dc_predictor_rect(dst, stride, 8, 16, above, left, 3, DC_MULTIPLIER_1X2);
313
0
}
314
315
void aom_dc_predictor_16x8_c(uint8_t *dst, ptrdiff_t stride,
316
0
                             const uint8_t *above, const uint8_t *left) {
317
0
  dc_predictor_rect(dst, stride, 16, 8, above, left, 3, DC_MULTIPLIER_1X2);
318
0
}
319
320
void aom_dc_predictor_8x32_c(uint8_t *dst, ptrdiff_t stride,
321
0
                             const uint8_t *above, const uint8_t *left) {
322
0
  dc_predictor_rect(dst, stride, 8, 32, above, left, 3, DC_MULTIPLIER_1X4);
323
0
}
324
325
void aom_dc_predictor_32x8_c(uint8_t *dst, ptrdiff_t stride,
326
0
                             const uint8_t *above, const uint8_t *left) {
327
0
  dc_predictor_rect(dst, stride, 32, 8, above, left, 3, DC_MULTIPLIER_1X4);
328
0
}
329
330
void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t stride,
331
0
                              const uint8_t *above, const uint8_t *left) {
332
0
  dc_predictor_rect(dst, stride, 16, 32, above, left, 4, DC_MULTIPLIER_1X2);
333
0
}
334
335
void aom_dc_predictor_32x16_c(uint8_t *dst, ptrdiff_t stride,
336
0
                              const uint8_t *above, const uint8_t *left) {
337
0
  dc_predictor_rect(dst, stride, 32, 16, above, left, 4, DC_MULTIPLIER_1X2);
338
0
}
339
340
void aom_dc_predictor_16x64_c(uint8_t *dst, ptrdiff_t stride,
341
0
                              const uint8_t *above, const uint8_t *left) {
342
0
  dc_predictor_rect(dst, stride, 16, 64, above, left, 4, DC_MULTIPLIER_1X4);
343
0
}
344
345
void aom_dc_predictor_64x16_c(uint8_t *dst, ptrdiff_t stride,
346
0
                              const uint8_t *above, const uint8_t *left) {
347
0
  dc_predictor_rect(dst, stride, 64, 16, above, left, 4, DC_MULTIPLIER_1X4);
348
0
}
349
350
void aom_dc_predictor_32x64_c(uint8_t *dst, ptrdiff_t stride,
351
0
                              const uint8_t *above, const uint8_t *left) {
352
0
  dc_predictor_rect(dst, stride, 32, 64, above, left, 5, DC_MULTIPLIER_1X2);
353
0
}
354
355
void aom_dc_predictor_64x32_c(uint8_t *dst, ptrdiff_t stride,
356
0
                              const uint8_t *above, const uint8_t *left) {
357
0
  dc_predictor_rect(dst, stride, 64, 32, above, left, 5, DC_MULTIPLIER_1X2);
358
0
}
359
360
#undef DC_MULTIPLIER_1X2
361
#undef DC_MULTIPLIER_1X4
362
363
static INLINE void highbd_v_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
364
                                      int bh, const uint16_t *above,
365
78.9k
                                      const uint16_t *left, int bd) {
366
78.9k
  int r;
367
78.9k
  (void)left;
368
78.9k
  (void)bd;
369
1.07M
  for (r = 0; r < bh; r++) {
370
998k
    memcpy(dst, above, bw * sizeof(uint16_t));
371
998k
    dst += stride;
372
998k
  }
373
78.9k
}
374
375
static INLINE void highbd_h_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
376
                                      int bh, const uint16_t *above,
377
318k
                                      const uint16_t *left, int bd) {
378
318k
  int r;
379
318k
  (void)above;
380
318k
  (void)bd;
381
4.23M
  for (r = 0; r < bh; r++) {
382
3.91M
    aom_memset16(dst, left[r], bw);
383
3.91M
    dst += stride;
384
3.91M
  }
385
318k
}
386
387
static INLINE void highbd_paeth_predictor(uint16_t *dst, ptrdiff_t stride,
388
                                          int bw, int bh, const uint16_t *above,
389
3.38M
                                          const uint16_t *left, int bd) {
390
3.38M
  int r, c;
391
3.38M
  const uint16_t ytop_left = above[-1];
392
3.38M
  (void)bd;
393
394
100M
  for (r = 0; r < bh; r++) {
395
1.75G
    for (c = 0; c < bw; c++)
396
1.66G
      dst[c] = paeth_predictor_single(left[r], above[c], ytop_left);
397
97.0M
    dst += stride;
398
97.0M
  }
399
3.38M
}
400
401
static INLINE void highbd_smooth_predictor(uint16_t *dst, ptrdiff_t stride,
402
                                           int bw, int bh,
403
                                           const uint16_t *above,
404
1.31M
                                           const uint16_t *left, int bd) {
405
1.31M
  (void)bd;
406
1.31M
  const uint16_t below_pred = left[bh - 1];   // estimated by bottom-left pixel
407
1.31M
  const uint16_t right_pred = above[bw - 1];  // estimated by top-right pixel
408
1.31M
  const uint8_t *const sm_weights_w = smooth_weights + bw - 4;
409
1.31M
  const uint8_t *const sm_weights_h = smooth_weights + bh - 4;
410
  // scale = 2 * 2^SMOOTH_WEIGHT_LOG2_SCALE
411
1.31M
  const int log2_scale = 1 + SMOOTH_WEIGHT_LOG2_SCALE;
412
1.31M
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
413
1.31M
  sm_weights_sanity_checks(sm_weights_w, sm_weights_h, scale,
414
0
                           log2_scale + sizeof(*dst));
415
0
  int r;
416
17.1M
  for (r = 0; r < bh; ++r) {
417
15.8M
    int c;
418
323M
    for (c = 0; c < bw; ++c) {
419
307M
      const uint16_t pixels[] = { above[c], below_pred, left[r], right_pred };
420
307M
      const uint8_t weights[] = { sm_weights_h[r], scale - sm_weights_h[r],
421
307M
                                  sm_weights_w[c], scale - sm_weights_w[c] };
422
307M
      uint32_t this_pred = 0;
423
307M
      int i;
424
307M
      assert(scale >= sm_weights_h[r] && scale >= sm_weights_w[c]);
425
1.53G
      for (i = 0; i < 4; ++i) {
426
1.23G
        this_pred += weights[i] * pixels[i];
427
1.23G
      }
428
307M
      dst[c] = divide_round(this_pred, log2_scale);
429
307M
    }
430
15.8M
    dst += stride;
431
15.8M
  }
432
1.31M
}
433
434
static INLINE void highbd_smooth_v_predictor(uint16_t *dst, ptrdiff_t stride,
435
                                             int bw, int bh,
436
                                             const uint16_t *above,
437
470k
                                             const uint16_t *left, int bd) {
438
470k
  (void)bd;
439
470k
  const uint16_t below_pred = left[bh - 1];  // estimated by bottom-left pixel
440
470k
  const uint8_t *const sm_weights = smooth_weights + bh - 4;
441
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
442
470k
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
443
470k
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
444
470k
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
445
0
                           log2_scale + sizeof(*dst));
446
447
0
  int r;
448
6.28M
  for (r = 0; r < bh; r++) {
449
5.81M
    int c;
450
126M
    for (c = 0; c < bw; ++c) {
451
121M
      const uint16_t pixels[] = { above[c], below_pred };
452
121M
      const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] };
453
121M
      uint32_t this_pred = 0;
454
121M
      assert(scale >= sm_weights[r]);
455
0
      int i;
456
363M
      for (i = 0; i < 2; ++i) {
457
242M
        this_pred += weights[i] * pixels[i];
458
242M
      }
459
121M
      dst[c] = divide_round(this_pred, log2_scale);
460
121M
    }
461
5.81M
    dst += stride;
462
5.81M
  }
463
470k
}
464
465
static INLINE void highbd_smooth_h_predictor(uint16_t *dst, ptrdiff_t stride,
466
                                             int bw, int bh,
467
                                             const uint16_t *above,
468
559k
                                             const uint16_t *left, int bd) {
469
559k
  (void)bd;
470
559k
  const uint16_t right_pred = above[bw - 1];  // estimated by top-right pixel
471
559k
  const uint8_t *const sm_weights = smooth_weights + bw - 4;
472
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
473
559k
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
474
559k
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
475
559k
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
476
0
                           log2_scale + sizeof(*dst));
477
478
0
  int r;
479
7.21M
  for (r = 0; r < bh; r++) {
480
6.65M
    int c;
481
139M
    for (c = 0; c < bw; ++c) {
482
133M
      const uint16_t pixels[] = { left[r], right_pred };
483
133M
      const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] };
484
133M
      uint32_t this_pred = 0;
485
133M
      assert(scale >= sm_weights[c]);
486
0
      int i;
487
399M
      for (i = 0; i < 2; ++i) {
488
266M
        this_pred += weights[i] * pixels[i];
489
266M
      }
490
133M
      dst[c] = divide_round(this_pred, log2_scale);
491
133M
    }
492
6.65M
    dst += stride;
493
6.65M
  }
494
559k
}
495
496
static INLINE void highbd_dc_128_predictor(uint16_t *dst, ptrdiff_t stride,
497
                                           int bw, int bh,
498
                                           const uint16_t *above,
499
18.0k
                                           const uint16_t *left, int bd) {
500
18.0k
  int r;
501
18.0k
  (void)above;
502
18.0k
  (void)left;
503
504
893k
  for (r = 0; r < bh; r++) {
505
875k
    aom_memset16(dst, 128 << (bd - 8), bw);
506
875k
    dst += stride;
507
875k
  }
508
18.0k
}
509
510
static INLINE void highbd_dc_left_predictor(uint16_t *dst, ptrdiff_t stride,
511
                                            int bw, int bh,
512
                                            const uint16_t *above,
513
43.0k
                                            const uint16_t *left, int bd) {
514
43.0k
  int i, r, expected_dc, sum = 0;
515
43.0k
  (void)above;
516
43.0k
  (void)bd;
517
518
1.52M
  for (i = 0; i < bh; i++) sum += left[i];
519
43.0k
  expected_dc = (sum + (bh >> 1)) / bh;
520
521
1.52M
  for (r = 0; r < bh; r++) {
522
1.48M
    aom_memset16(dst, expected_dc, bw);
523
1.48M
    dst += stride;
524
1.48M
  }
525
43.0k
}
526
527
static INLINE void highbd_dc_top_predictor(uint16_t *dst, ptrdiff_t stride,
528
                                           int bw, int bh,
529
                                           const uint16_t *above,
530
63.7k
                                           const uint16_t *left, int bd) {
531
63.7k
  int i, r, expected_dc, sum = 0;
532
63.7k
  (void)left;
533
63.7k
  (void)bd;
534
535
1.98M
  for (i = 0; i < bw; i++) sum += above[i];
536
63.7k
  expected_dc = (sum + (bw >> 1)) / bw;
537
538
2.10M
  for (r = 0; r < bh; r++) {
539
2.04M
    aom_memset16(dst, expected_dc, bw);
540
2.04M
    dst += stride;
541
2.04M
  }
542
63.7k
}
543
544
static INLINE void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
545
                                       int bh, const uint16_t *above,
546
89.0k
                                       const uint16_t *left, int bd) {
547
89.0k
  int i, r, expected_dc, sum = 0;
548
89.0k
  const int count = bw + bh;
549
89.0k
  (void)bd;
550
551
5.78M
  for (i = 0; i < bw; i++) {
552
5.69M
    sum += above[i];
553
5.69M
  }
554
5.78M
  for (i = 0; i < bh; i++) {
555
5.69M
    sum += left[i];
556
5.69M
  }
557
558
89.0k
  expected_dc = (sum + (count >> 1)) / count;
559
560
5.77M
  for (r = 0; r < bh; r++) {
561
5.68M
    aom_memset16(dst, expected_dc, bw);
562
5.68M
    dst += stride;
563
5.68M
  }
564
89.0k
}
565
566
// Obtained similarly as DC_MULTIPLIER_1X2 and DC_MULTIPLIER_1X4 above, but
567
// assume 2nd shift of 17 bits instead of 16.
568
// Note: Strictly speaking, 2nd shift needs to be 17 only when:
569
// - bit depth == 12, and
570
// - bw + bh is divisible by 5 (as opposed to divisible by 3).
571
// All other cases can use half the multipliers with a shift of 16 instead.
572
// This special optimization can be used when writing assembly code.
573
17.1k
#define HIGHBD_DC_MULTIPLIER_1X2 0xAAAB
574
// Note: This constant is odd, but a smaller even constant (0x199a) with the
575
// appropriate shift should work for neon in 8/10-bit.
576
1.27M
#define HIGHBD_DC_MULTIPLIER_1X4 0x6667
577
578
1.28M
#define HIGHBD_DC_SHIFT2 17
579
580
static INLINE void highbd_dc_predictor_rect(uint16_t *dst, ptrdiff_t stride,
581
                                            int bw, int bh,
582
                                            const uint16_t *above,
583
                                            const uint16_t *left, int bd,
584
1.28M
                                            int shift1, uint32_t multiplier) {
585
1.28M
  int sum = 0;
586
1.28M
  (void)bd;
587
588
26.2M
  for (int i = 0; i < bw; i++) {
589
24.9M
    sum += above[i];
590
24.9M
  }
591
16.1M
  for (int i = 0; i < bh; i++) {
592
14.8M
    sum += left[i];
593
14.8M
  }
594
595
1.28M
  const int expected_dc = divide_using_multiply_shift(
596
1.28M
      sum + ((bw + bh) >> 1), shift1, multiplier, HIGHBD_DC_SHIFT2);
597
1.28M
  assert(expected_dc < (1 << bd));
598
599
16.0M
  for (int r = 0; r < bh; r++) {
600
14.7M
    aom_memset16(dst, expected_dc, bw);
601
14.7M
    dst += stride;
602
14.7M
  }
603
1.28M
}
604
605
#undef HIGHBD_DC_SHIFT2
606
607
void aom_highbd_dc_predictor_4x8_c(uint16_t *dst, ptrdiff_t stride,
608
                                   const uint16_t *above, const uint16_t *left,
609
0
                                   int bd) {
610
0
  highbd_dc_predictor_rect(dst, stride, 4, 8, above, left, bd, 2,
611
0
                           HIGHBD_DC_MULTIPLIER_1X2);
612
0
}
613
614
void aom_highbd_dc_predictor_8x4_c(uint16_t *dst, ptrdiff_t stride,
615
                                   const uint16_t *above, const uint16_t *left,
616
0
                                   int bd) {
617
0
  highbd_dc_predictor_rect(dst, stride, 8, 4, above, left, bd, 2,
618
0
                           HIGHBD_DC_MULTIPLIER_1X2);
619
0
}
620
621
void aom_highbd_dc_predictor_4x16_c(uint16_t *dst, ptrdiff_t stride,
622
                                    const uint16_t *above, const uint16_t *left,
623
218k
                                    int bd) {
624
218k
  highbd_dc_predictor_rect(dst, stride, 4, 16, above, left, bd, 2,
625
218k
                           HIGHBD_DC_MULTIPLIER_1X4);
626
218k
}
627
628
void aom_highbd_dc_predictor_16x4_c(uint16_t *dst, ptrdiff_t stride,
629
                                    const uint16_t *above, const uint16_t *left,
630
528k
                                    int bd) {
631
528k
  highbd_dc_predictor_rect(dst, stride, 16, 4, above, left, bd, 2,
632
528k
                           HIGHBD_DC_MULTIPLIER_1X4);
633
528k
}
634
635
void aom_highbd_dc_predictor_8x16_c(uint16_t *dst, ptrdiff_t stride,
636
                                    const uint16_t *above, const uint16_t *left,
637
0
                                    int bd) {
638
0
  highbd_dc_predictor_rect(dst, stride, 8, 16, above, left, bd, 3,
639
0
                           HIGHBD_DC_MULTIPLIER_1X2);
640
0
}
641
642
void aom_highbd_dc_predictor_16x8_c(uint16_t *dst, ptrdiff_t stride,
643
                                    const uint16_t *above, const uint16_t *left,
644
0
                                    int bd) {
645
0
  highbd_dc_predictor_rect(dst, stride, 16, 8, above, left, bd, 3,
646
0
                           HIGHBD_DC_MULTIPLIER_1X2);
647
0
}
648
649
void aom_highbd_dc_predictor_8x32_c(uint16_t *dst, ptrdiff_t stride,
650
                                    const uint16_t *above, const uint16_t *left,
651
110k
                                    int bd) {
652
110k
  highbd_dc_predictor_rect(dst, stride, 8, 32, above, left, bd, 3,
653
110k
                           HIGHBD_DC_MULTIPLIER_1X4);
654
110k
}
655
656
void aom_highbd_dc_predictor_32x8_c(uint16_t *dst, ptrdiff_t stride,
657
                                    const uint16_t *above, const uint16_t *left,
658
356k
                                    int bd) {
659
356k
  highbd_dc_predictor_rect(dst, stride, 32, 8, above, left, bd, 3,
660
356k
                           HIGHBD_DC_MULTIPLIER_1X4);
661
356k
}
662
663
void aom_highbd_dc_predictor_16x32_c(uint16_t *dst, ptrdiff_t stride,
664
                                     const uint16_t *above,
665
0
                                     const uint16_t *left, int bd) {
666
0
  highbd_dc_predictor_rect(dst, stride, 16, 32, above, left, bd, 4,
667
0
                           HIGHBD_DC_MULTIPLIER_1X2);
668
0
}
669
670
void aom_highbd_dc_predictor_32x16_c(uint16_t *dst, ptrdiff_t stride,
671
                                     const uint16_t *above,
672
0
                                     const uint16_t *left, int bd) {
673
0
  highbd_dc_predictor_rect(dst, stride, 32, 16, above, left, bd, 4,
674
0
                           HIGHBD_DC_MULTIPLIER_1X2);
675
0
}
676
677
void aom_highbd_dc_predictor_16x64_c(uint16_t *dst, ptrdiff_t stride,
678
                                     const uint16_t *above,
679
23.2k
                                     const uint16_t *left, int bd) {
680
23.2k
  highbd_dc_predictor_rect(dst, stride, 16, 64, above, left, bd, 4,
681
23.2k
                           HIGHBD_DC_MULTIPLIER_1X4);
682
23.2k
}
683
684
void aom_highbd_dc_predictor_64x16_c(uint16_t *dst, ptrdiff_t stride,
685
                                     const uint16_t *above,
686
33.9k
                                     const uint16_t *left, int bd) {
687
33.9k
  highbd_dc_predictor_rect(dst, stride, 64, 16, above, left, bd, 4,
688
33.9k
                           HIGHBD_DC_MULTIPLIER_1X4);
689
33.9k
}
690
691
void aom_highbd_dc_predictor_32x64_c(uint16_t *dst, ptrdiff_t stride,
692
                                     const uint16_t *above,
693
7.85k
                                     const uint16_t *left, int bd) {
694
7.85k
  highbd_dc_predictor_rect(dst, stride, 32, 64, above, left, bd, 5,
695
7.85k
                           HIGHBD_DC_MULTIPLIER_1X2);
696
7.85k
}
697
698
void aom_highbd_dc_predictor_64x32_c(uint16_t *dst, ptrdiff_t stride,
699
                                     const uint16_t *above,
700
9.30k
                                     const uint16_t *left, int bd) {
701
9.30k
  highbd_dc_predictor_rect(dst, stride, 64, 32, above, left, bd, 5,
702
9.30k
                           HIGHBD_DC_MULTIPLIER_1X2);
703
9.30k
}
704
705
#undef HIGHBD_DC_MULTIPLIER_1X2
706
#undef HIGHBD_DC_MULTIPLIER_1X4
707
708
// This serves as a wrapper function, so that all the prediction functions
709
// can be unified and accessed as a pointer array. Note that the boundary
710
// above and left are not necessarily used all the time.
711
#define intra_pred_sized(type, width, height)                  \
712
  void aom_##type##_predictor_##width##x##height##_c(          \
713
      uint8_t *dst, ptrdiff_t stride, const uint8_t *above,    \
714
0
      const uint8_t *left) {                                   \
715
0
    type##_predictor(dst, stride, width, height, above, left); \
716
0
  }
Unexecuted instantiation: aom_v_predictor_4x4_c
Unexecuted instantiation: aom_v_predictor_8x8_c
Unexecuted instantiation: aom_v_predictor_16x16_c
Unexecuted instantiation: aom_v_predictor_32x32_c
Unexecuted instantiation: aom_v_predictor_64x64_c
Unexecuted instantiation: aom_v_predictor_4x8_c
Unexecuted instantiation: aom_v_predictor_8x4_c
Unexecuted instantiation: aom_v_predictor_8x16_c
Unexecuted instantiation: aom_v_predictor_16x8_c
Unexecuted instantiation: aom_v_predictor_16x32_c
Unexecuted instantiation: aom_v_predictor_32x16_c
Unexecuted instantiation: aom_v_predictor_32x64_c
Unexecuted instantiation: aom_v_predictor_64x32_c
Unexecuted instantiation: aom_v_predictor_4x16_c
Unexecuted instantiation: aom_v_predictor_16x4_c
Unexecuted instantiation: aom_v_predictor_8x32_c
Unexecuted instantiation: aom_v_predictor_32x8_c
Unexecuted instantiation: aom_v_predictor_16x64_c
Unexecuted instantiation: aom_v_predictor_64x16_c
Unexecuted instantiation: aom_h_predictor_4x4_c
Unexecuted instantiation: aom_h_predictor_8x8_c
Unexecuted instantiation: aom_h_predictor_16x16_c
Unexecuted instantiation: aom_h_predictor_32x32_c
Unexecuted instantiation: aom_h_predictor_64x64_c
Unexecuted instantiation: aom_h_predictor_4x8_c
Unexecuted instantiation: aom_h_predictor_8x4_c
Unexecuted instantiation: aom_h_predictor_8x16_c
Unexecuted instantiation: aom_h_predictor_16x8_c
Unexecuted instantiation: aom_h_predictor_16x32_c
Unexecuted instantiation: aom_h_predictor_32x16_c
Unexecuted instantiation: aom_h_predictor_32x64_c
Unexecuted instantiation: aom_h_predictor_64x32_c
Unexecuted instantiation: aom_h_predictor_4x16_c
Unexecuted instantiation: aom_h_predictor_16x4_c
Unexecuted instantiation: aom_h_predictor_8x32_c
Unexecuted instantiation: aom_h_predictor_32x8_c
Unexecuted instantiation: aom_h_predictor_16x64_c
Unexecuted instantiation: aom_h_predictor_64x16_c
Unexecuted instantiation: aom_smooth_predictor_4x4_c
Unexecuted instantiation: aom_smooth_predictor_8x8_c
Unexecuted instantiation: aom_smooth_predictor_16x16_c
Unexecuted instantiation: aom_smooth_predictor_32x32_c
Unexecuted instantiation: aom_smooth_predictor_64x64_c
Unexecuted instantiation: aom_smooth_predictor_4x8_c
Unexecuted instantiation: aom_smooth_predictor_8x4_c
Unexecuted instantiation: aom_smooth_predictor_8x16_c
Unexecuted instantiation: aom_smooth_predictor_16x8_c
Unexecuted instantiation: aom_smooth_predictor_16x32_c
Unexecuted instantiation: aom_smooth_predictor_32x16_c
Unexecuted instantiation: aom_smooth_predictor_32x64_c
Unexecuted instantiation: aom_smooth_predictor_64x32_c
Unexecuted instantiation: aom_smooth_predictor_4x16_c
Unexecuted instantiation: aom_smooth_predictor_16x4_c
Unexecuted instantiation: aom_smooth_predictor_8x32_c
Unexecuted instantiation: aom_smooth_predictor_32x8_c
Unexecuted instantiation: aom_smooth_predictor_16x64_c
Unexecuted instantiation: aom_smooth_predictor_64x16_c
Unexecuted instantiation: aom_smooth_v_predictor_4x4_c
Unexecuted instantiation: aom_smooth_v_predictor_8x8_c
Unexecuted instantiation: aom_smooth_v_predictor_16x16_c
Unexecuted instantiation: aom_smooth_v_predictor_32x32_c
Unexecuted instantiation: aom_smooth_v_predictor_64x64_c
Unexecuted instantiation: aom_smooth_v_predictor_4x8_c
Unexecuted instantiation: aom_smooth_v_predictor_8x4_c
Unexecuted instantiation: aom_smooth_v_predictor_8x16_c
Unexecuted instantiation: aom_smooth_v_predictor_16x8_c
Unexecuted instantiation: aom_smooth_v_predictor_16x32_c
Unexecuted instantiation: aom_smooth_v_predictor_32x16_c
Unexecuted instantiation: aom_smooth_v_predictor_32x64_c
Unexecuted instantiation: aom_smooth_v_predictor_64x32_c
Unexecuted instantiation: aom_smooth_v_predictor_4x16_c
Unexecuted instantiation: aom_smooth_v_predictor_16x4_c
Unexecuted instantiation: aom_smooth_v_predictor_8x32_c
Unexecuted instantiation: aom_smooth_v_predictor_32x8_c
Unexecuted instantiation: aom_smooth_v_predictor_16x64_c
Unexecuted instantiation: aom_smooth_v_predictor_64x16_c
Unexecuted instantiation: aom_smooth_h_predictor_4x4_c
Unexecuted instantiation: aom_smooth_h_predictor_8x8_c
Unexecuted instantiation: aom_smooth_h_predictor_16x16_c
Unexecuted instantiation: aom_smooth_h_predictor_32x32_c
Unexecuted instantiation: aom_smooth_h_predictor_64x64_c
Unexecuted instantiation: aom_smooth_h_predictor_4x8_c
Unexecuted instantiation: aom_smooth_h_predictor_8x4_c
Unexecuted instantiation: aom_smooth_h_predictor_8x16_c
Unexecuted instantiation: aom_smooth_h_predictor_16x8_c
Unexecuted instantiation: aom_smooth_h_predictor_16x32_c
Unexecuted instantiation: aom_smooth_h_predictor_32x16_c
Unexecuted instantiation: aom_smooth_h_predictor_32x64_c
Unexecuted instantiation: aom_smooth_h_predictor_64x32_c
Unexecuted instantiation: aom_smooth_h_predictor_4x16_c
Unexecuted instantiation: aom_smooth_h_predictor_16x4_c
Unexecuted instantiation: aom_smooth_h_predictor_8x32_c
Unexecuted instantiation: aom_smooth_h_predictor_32x8_c
Unexecuted instantiation: aom_smooth_h_predictor_16x64_c
Unexecuted instantiation: aom_smooth_h_predictor_64x16_c
Unexecuted instantiation: aom_paeth_predictor_4x4_c
Unexecuted instantiation: aom_paeth_predictor_8x8_c
Unexecuted instantiation: aom_paeth_predictor_16x16_c
Unexecuted instantiation: aom_paeth_predictor_32x32_c
Unexecuted instantiation: aom_paeth_predictor_64x64_c
Unexecuted instantiation: aom_paeth_predictor_4x8_c
Unexecuted instantiation: aom_paeth_predictor_8x4_c
Unexecuted instantiation: aom_paeth_predictor_8x16_c
Unexecuted instantiation: aom_paeth_predictor_16x8_c
Unexecuted instantiation: aom_paeth_predictor_16x32_c
Unexecuted instantiation: aom_paeth_predictor_32x16_c
Unexecuted instantiation: aom_paeth_predictor_32x64_c
Unexecuted instantiation: aom_paeth_predictor_64x32_c
Unexecuted instantiation: aom_paeth_predictor_4x16_c
Unexecuted instantiation: aom_paeth_predictor_16x4_c
Unexecuted instantiation: aom_paeth_predictor_8x32_c
Unexecuted instantiation: aom_paeth_predictor_32x8_c
Unexecuted instantiation: aom_paeth_predictor_16x64_c
Unexecuted instantiation: aom_paeth_predictor_64x16_c
Unexecuted instantiation: aom_dc_128_predictor_4x4_c
Unexecuted instantiation: aom_dc_128_predictor_8x8_c
Unexecuted instantiation: aom_dc_128_predictor_16x16_c
Unexecuted instantiation: aom_dc_128_predictor_32x32_c
Unexecuted instantiation: aom_dc_128_predictor_64x64_c
Unexecuted instantiation: aom_dc_128_predictor_4x8_c
Unexecuted instantiation: aom_dc_128_predictor_8x4_c
Unexecuted instantiation: aom_dc_128_predictor_8x16_c
Unexecuted instantiation: aom_dc_128_predictor_16x8_c
Unexecuted instantiation: aom_dc_128_predictor_16x32_c
Unexecuted instantiation: aom_dc_128_predictor_32x16_c
Unexecuted instantiation: aom_dc_128_predictor_32x64_c
Unexecuted instantiation: aom_dc_128_predictor_64x32_c
Unexecuted instantiation: aom_dc_128_predictor_4x16_c
Unexecuted instantiation: aom_dc_128_predictor_16x4_c
Unexecuted instantiation: aom_dc_128_predictor_8x32_c
Unexecuted instantiation: aom_dc_128_predictor_32x8_c
Unexecuted instantiation: aom_dc_128_predictor_16x64_c
Unexecuted instantiation: aom_dc_128_predictor_64x16_c
Unexecuted instantiation: aom_dc_left_predictor_4x4_c
Unexecuted instantiation: aom_dc_left_predictor_8x8_c
Unexecuted instantiation: aom_dc_left_predictor_16x16_c
Unexecuted instantiation: aom_dc_left_predictor_32x32_c
Unexecuted instantiation: aom_dc_left_predictor_64x64_c
Unexecuted instantiation: aom_dc_left_predictor_4x8_c
Unexecuted instantiation: aom_dc_left_predictor_8x4_c
Unexecuted instantiation: aom_dc_left_predictor_8x16_c
Unexecuted instantiation: aom_dc_left_predictor_16x8_c
Unexecuted instantiation: aom_dc_left_predictor_16x32_c
Unexecuted instantiation: aom_dc_left_predictor_32x16_c
Unexecuted instantiation: aom_dc_left_predictor_32x64_c
Unexecuted instantiation: aom_dc_left_predictor_64x32_c
Unexecuted instantiation: aom_dc_left_predictor_4x16_c
Unexecuted instantiation: aom_dc_left_predictor_16x4_c
Unexecuted instantiation: aom_dc_left_predictor_8x32_c
Unexecuted instantiation: aom_dc_left_predictor_32x8_c
Unexecuted instantiation: aom_dc_left_predictor_16x64_c
Unexecuted instantiation: aom_dc_left_predictor_64x16_c
Unexecuted instantiation: aom_dc_top_predictor_4x4_c
Unexecuted instantiation: aom_dc_top_predictor_8x8_c
Unexecuted instantiation: aom_dc_top_predictor_16x16_c
Unexecuted instantiation: aom_dc_top_predictor_32x32_c
Unexecuted instantiation: aom_dc_top_predictor_64x64_c
Unexecuted instantiation: aom_dc_top_predictor_4x8_c
Unexecuted instantiation: aom_dc_top_predictor_8x4_c
Unexecuted instantiation: aom_dc_top_predictor_8x16_c
Unexecuted instantiation: aom_dc_top_predictor_16x8_c
Unexecuted instantiation: aom_dc_top_predictor_16x32_c
Unexecuted instantiation: aom_dc_top_predictor_32x16_c
Unexecuted instantiation: aom_dc_top_predictor_32x64_c
Unexecuted instantiation: aom_dc_top_predictor_64x32_c
Unexecuted instantiation: aom_dc_top_predictor_4x16_c
Unexecuted instantiation: aom_dc_top_predictor_16x4_c
Unexecuted instantiation: aom_dc_top_predictor_8x32_c
Unexecuted instantiation: aom_dc_top_predictor_32x8_c
Unexecuted instantiation: aom_dc_top_predictor_16x64_c
Unexecuted instantiation: aom_dc_top_predictor_64x16_c
Unexecuted instantiation: aom_dc_predictor_4x4_c
Unexecuted instantiation: aom_dc_predictor_8x8_c
Unexecuted instantiation: aom_dc_predictor_16x16_c
Unexecuted instantiation: aom_dc_predictor_32x32_c
Unexecuted instantiation: aom_dc_predictor_64x64_c
717
718
#define intra_pred_highbd_sized(type, width, height)                        \
719
  void aom_highbd_##type##_predictor_##width##x##height##_c(                \
720
      uint16_t *dst, ptrdiff_t stride, const uint16_t *above,               \
721
6.34M
      const uint16_t *left, int bd) {                                       \
722
6.34M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
6.34M
  }
Unexecuted instantiation: aom_highbd_v_predictor_4x4_c
Unexecuted instantiation: aom_highbd_v_predictor_8x8_c
Unexecuted instantiation: aom_highbd_v_predictor_16x16_c
Unexecuted instantiation: aom_highbd_v_predictor_32x32_c
aom_highbd_v_predictor_64x64_c
Line
Count
Source
721
1.72k
      const uint16_t *left, int bd) {                                       \
722
1.72k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
1.72k
  }
Unexecuted instantiation: aom_highbd_v_predictor_4x8_c
Unexecuted instantiation: aom_highbd_v_predictor_8x4_c
Unexecuted instantiation: aom_highbd_v_predictor_8x16_c
Unexecuted instantiation: aom_highbd_v_predictor_16x8_c
Unexecuted instantiation: aom_highbd_v_predictor_16x32_c
Unexecuted instantiation: aom_highbd_v_predictor_32x16_c
aom_highbd_v_predictor_32x64_c
Line
Count
Source
721
567
      const uint16_t *left, int bd) {                                       \
722
567
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
567
  }
aom_highbd_v_predictor_64x32_c
Line
Count
Source
721
292
      const uint16_t *left, int bd) {                                       \
722
292
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
292
  }
aom_highbd_v_predictor_4x16_c
Line
Count
Source
721
7.15k
      const uint16_t *left, int bd) {                                       \
722
7.15k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.15k
  }
aom_highbd_v_predictor_16x4_c
Line
Count
Source
721
25.5k
      const uint16_t *left, int bd) {                                       \
722
25.5k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
25.5k
  }
aom_highbd_v_predictor_8x32_c
Line
Count
Source
721
6.22k
      const uint16_t *left, int bd) {                                       \
722
6.22k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
6.22k
  }
aom_highbd_v_predictor_32x8_c
Line
Count
Source
721
34.7k
      const uint16_t *left, int bd) {                                       \
722
34.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
34.7k
  }
aom_highbd_v_predictor_16x64_c
Line
Count
Source
721
2.18k
      const uint16_t *left, int bd) {                                       \
722
2.18k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
2.18k
  }
aom_highbd_v_predictor_64x16_c
Line
Count
Source
721
561
      const uint16_t *left, int bd) {                                       \
722
561
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
561
  }
Unexecuted instantiation: aom_highbd_h_predictor_4x4_c
Unexecuted instantiation: aom_highbd_h_predictor_8x8_c
Unexecuted instantiation: aom_highbd_h_predictor_16x16_c
Unexecuted instantiation: aom_highbd_h_predictor_32x32_c
aom_highbd_h_predictor_64x64_c
Line
Count
Source
721
13.1k
      const uint16_t *left, int bd) {                                       \
722
13.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
13.1k
  }
Unexecuted instantiation: aom_highbd_h_predictor_4x8_c
Unexecuted instantiation: aom_highbd_h_predictor_8x4_c
Unexecuted instantiation: aom_highbd_h_predictor_8x16_c
Unexecuted instantiation: aom_highbd_h_predictor_16x8_c
Unexecuted instantiation: aom_highbd_h_predictor_16x32_c
Unexecuted instantiation: aom_highbd_h_predictor_32x16_c
aom_highbd_h_predictor_32x64_c
Line
Count
Source
721
2.06k
      const uint16_t *left, int bd) {                                       \
722
2.06k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
2.06k
  }
aom_highbd_h_predictor_64x32_c
Line
Count
Source
721
7.17k
      const uint16_t *left, int bd) {                                       \
722
7.17k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.17k
  }
aom_highbd_h_predictor_4x16_c
Line
Count
Source
721
15.7k
      const uint16_t *left, int bd) {                                       \
722
15.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
15.7k
  }
aom_highbd_h_predictor_16x4_c
Line
Count
Source
721
104k
      const uint16_t *left, int bd) {                                       \
722
104k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
104k
  }
aom_highbd_h_predictor_8x32_c
Line
Count
Source
721
7.16k
      const uint16_t *left, int bd) {                                       \
722
7.16k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.16k
  }
aom_highbd_h_predictor_32x8_c
Line
Count
Source
721
131k
      const uint16_t *left, int bd) {                                       \
722
131k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
131k
  }
aom_highbd_h_predictor_16x64_c
Line
Count
Source
721
4.03k
      const uint16_t *left, int bd) {                                       \
722
4.03k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
4.03k
  }
aom_highbd_h_predictor_64x16_c
Line
Count
Source
721
33.8k
      const uint16_t *left, int bd) {                                       \
722
33.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
33.8k
  }
aom_highbd_smooth_predictor_4x4_c
Line
Count
Source
721
154k
      const uint16_t *left, int bd) {                                       \
722
154k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
154k
  }
aom_highbd_smooth_predictor_8x8_c
Line
Count
Source
721
293k
      const uint16_t *left, int bd) {                                       \
722
293k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
293k
  }
aom_highbd_smooth_predictor_16x16_c
Line
Count
Source
721
120k
      const uint16_t *left, int bd) {                                       \
722
120k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
120k
  }
aom_highbd_smooth_predictor_32x32_c
Line
Count
Source
721
84.5k
      const uint16_t *left, int bd) {                                       \
722
84.5k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
84.5k
  }
aom_highbd_smooth_predictor_64x64_c
Line
Count
Source
721
12.1k
      const uint16_t *left, int bd) {                                       \
722
12.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
12.1k
  }
aom_highbd_smooth_predictor_4x8_c
Line
Count
Source
721
42.6k
      const uint16_t *left, int bd) {                                       \
722
42.6k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
42.6k
  }
aom_highbd_smooth_predictor_8x4_c
Line
Count
Source
721
110k
      const uint16_t *left, int bd) {                                       \
722
110k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
110k
  }
aom_highbd_smooth_predictor_8x16_c
Line
Count
Source
721
56.2k
      const uint16_t *left, int bd) {                                       \
722
56.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
56.2k
  }
aom_highbd_smooth_predictor_16x8_c
Line
Count
Source
721
153k
      const uint16_t *left, int bd) {                                       \
722
153k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
153k
  }
aom_highbd_smooth_predictor_16x32_c
Line
Count
Source
721
26.1k
      const uint16_t *left, int bd) {                                       \
722
26.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
26.1k
  }
aom_highbd_smooth_predictor_32x16_c
Line
Count
Source
721
26.6k
      const uint16_t *left, int bd) {                                       \
722
26.6k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
26.6k
  }
aom_highbd_smooth_predictor_32x64_c
Line
Count
Source
721
1.65k
      const uint16_t *left, int bd) {                                       \
722
1.65k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
1.65k
  }
aom_highbd_smooth_predictor_64x32_c
Line
Count
Source
721
3.99k
      const uint16_t *left, int bd) {                                       \
722
3.99k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.99k
  }
aom_highbd_smooth_predictor_4x16_c
Line
Count
Source
721
56.9k
      const uint16_t *left, int bd) {                                       \
722
56.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
56.9k
  }
aom_highbd_smooth_predictor_16x4_c
Line
Count
Source
721
83.3k
      const uint16_t *left, int bd) {                                       \
722
83.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
83.3k
  }
aom_highbd_smooth_predictor_8x32_c
Line
Count
Source
721
25.5k
      const uint16_t *left, int bd) {                                       \
722
25.5k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
25.5k
  }
aom_highbd_smooth_predictor_32x8_c
Line
Count
Source
721
44.6k
      const uint16_t *left, int bd) {                                       \
722
44.6k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
44.6k
  }
aom_highbd_smooth_predictor_16x64_c
Line
Count
Source
721
5.99k
      const uint16_t *left, int bd) {                                       \
722
5.99k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
5.99k
  }
aom_highbd_smooth_predictor_64x16_c
Line
Count
Source
721
15.8k
      const uint16_t *left, int bd) {                                       \
722
15.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
15.8k
  }
aom_highbd_smooth_v_predictor_4x4_c
Line
Count
Source
721
52.1k
      const uint16_t *left, int bd) {                                       \
722
52.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
52.1k
  }
aom_highbd_smooth_v_predictor_8x8_c
Line
Count
Source
721
87.3k
      const uint16_t *left, int bd) {                                       \
722
87.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
87.3k
  }
aom_highbd_smooth_v_predictor_16x16_c
Line
Count
Source
721
38.1k
      const uint16_t *left, int bd) {                                       \
722
38.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
38.1k
  }
aom_highbd_smooth_v_predictor_32x32_c
Line
Count
Source
721
35.9k
      const uint16_t *left, int bd) {                                       \
722
35.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
35.9k
  }
aom_highbd_smooth_v_predictor_64x64_c
Line
Count
Source
721
5.11k
      const uint16_t *left, int bd) {                                       \
722
5.11k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
5.11k
  }
aom_highbd_smooth_v_predictor_4x8_c
Line
Count
Source
721
12.9k
      const uint16_t *left, int bd) {                                       \
722
12.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
12.9k
  }
aom_highbd_smooth_v_predictor_8x4_c
Line
Count
Source
721
56.0k
      const uint16_t *left, int bd) {                                       \
722
56.0k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
56.0k
  }
aom_highbd_smooth_v_predictor_8x16_c
Line
Count
Source
721
26.7k
      const uint16_t *left, int bd) {                                       \
722
26.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
26.7k
  }
aom_highbd_smooth_v_predictor_16x8_c
Line
Count
Source
721
44.1k
      const uint16_t *left, int bd) {                                       \
722
44.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
44.1k
  }
aom_highbd_smooth_v_predictor_16x32_c
Line
Count
Source
721
10.0k
      const uint16_t *left, int bd) {                                       \
722
10.0k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
10.0k
  }
aom_highbd_smooth_v_predictor_32x16_c
Line
Count
Source
721
7.48k
      const uint16_t *left, int bd) {                                       \
722
7.48k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.48k
  }
aom_highbd_smooth_v_predictor_32x64_c
Line
Count
Source
721
642
      const uint16_t *left, int bd) {                                       \
722
642
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
642
  }
aom_highbd_smooth_v_predictor_64x32_c
Line
Count
Source
721
2.28k
      const uint16_t *left, int bd) {                                       \
722
2.28k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
2.28k
  }
aom_highbd_smooth_v_predictor_4x16_c
Line
Count
Source
721
22.8k
      const uint16_t *left, int bd) {                                       \
722
22.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
22.8k
  }
aom_highbd_smooth_v_predictor_16x4_c
Line
Count
Source
721
26.0k
      const uint16_t *left, int bd) {                                       \
722
26.0k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
26.0k
  }
aom_highbd_smooth_v_predictor_8x32_c
Line
Count
Source
721
7.36k
      const uint16_t *left, int bd) {                                       \
722
7.36k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.36k
  }
aom_highbd_smooth_v_predictor_32x8_c
Line
Count
Source
721
25.9k
      const uint16_t *left, int bd) {                                       \
722
25.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
25.9k
  }
aom_highbd_smooth_v_predictor_16x64_c
Line
Count
Source
721
1.89k
      const uint16_t *left, int bd) {                                       \
722
1.89k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
1.89k
  }
aom_highbd_smooth_v_predictor_64x16_c
Line
Count
Source
721
7.32k
      const uint16_t *left, int bd) {                                       \
722
7.32k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.32k
  }
aom_highbd_smooth_h_predictor_4x4_c
Line
Count
Source
721
137k
      const uint16_t *left, int bd) {                                       \
722
137k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
137k
  }
aom_highbd_smooth_h_predictor_8x8_c
Line
Count
Source
721
80.8k
      const uint16_t *left, int bd) {                                       \
722
80.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
80.8k
  }
aom_highbd_smooth_h_predictor_16x16_c
Line
Count
Source
721
49.7k
      const uint16_t *left, int bd) {                                       \
722
49.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
49.7k
  }
aom_highbd_smooth_h_predictor_32x32_c
Line
Count
Source
721
39.7k
      const uint16_t *left, int bd) {                                       \
722
39.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
39.7k
  }
aom_highbd_smooth_h_predictor_64x64_c
Line
Count
Source
721
5.69k
      const uint16_t *left, int bd) {                                       \
722
5.69k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
5.69k
  }
aom_highbd_smooth_h_predictor_4x8_c
Line
Count
Source
721
19.3k
      const uint16_t *left, int bd) {                                       \
722
19.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
19.3k
  }
aom_highbd_smooth_h_predictor_8x4_c
Line
Count
Source
721
31.9k
      const uint16_t *left, int bd) {                                       \
722
31.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
31.9k
  }
aom_highbd_smooth_h_predictor_8x16_c
Line
Count
Source
721
26.7k
      const uint16_t *left, int bd) {                                       \
722
26.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
26.7k
  }
aom_highbd_smooth_h_predictor_16x8_c
Line
Count
Source
721
43.3k
      const uint16_t *left, int bd) {                                       \
722
43.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
43.3k
  }
aom_highbd_smooth_h_predictor_16x32_c
Line
Count
Source
721
14.9k
      const uint16_t *left, int bd) {                                       \
722
14.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
14.9k
  }
aom_highbd_smooth_h_predictor_32x16_c
Line
Count
Source
721
9.64k
      const uint16_t *left, int bd) {                                       \
722
9.64k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
9.64k
  }
aom_highbd_smooth_h_predictor_32x64_c
Line
Count
Source
721
978
      const uint16_t *left, int bd) {                                       \
722
978
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
978
  }
aom_highbd_smooth_h_predictor_64x32_c
Line
Count
Source
721
760
      const uint16_t *left, int bd) {                                       \
722
760
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
760
  }
aom_highbd_smooth_h_predictor_4x16_c
Line
Count
Source
721
17.2k
      const uint16_t *left, int bd) {                                       \
722
17.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
17.2k
  }
aom_highbd_smooth_h_predictor_16x4_c
Line
Count
Source
721
31.4k
      const uint16_t *left, int bd) {                                       \
722
31.4k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
31.4k
  }
aom_highbd_smooth_h_predictor_8x32_c
Line
Count
Source
721
7.27k
      const uint16_t *left, int bd) {                                       \
722
7.27k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
7.27k
  }
aom_highbd_smooth_h_predictor_32x8_c
Line
Count
Source
721
34.8k
      const uint16_t *left, int bd) {                                       \
722
34.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
34.8k
  }
aom_highbd_smooth_h_predictor_16x64_c
Line
Count
Source
721
4.22k
      const uint16_t *left, int bd) {                                       \
722
4.22k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
4.22k
  }
aom_highbd_smooth_h_predictor_64x16_c
Line
Count
Source
721
3.90k
      const uint16_t *left, int bd) {                                       \
722
3.90k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.90k
  }
aom_highbd_paeth_predictor_4x4_c
Line
Count
Source
721
174k
      const uint16_t *left, int bd) {                                       \
722
174k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
174k
  }
aom_highbd_paeth_predictor_8x8_c
Line
Count
Source
721
176k
      const uint16_t *left, int bd) {                                       \
722
176k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
176k
  }
aom_highbd_paeth_predictor_16x16_c
Line
Count
Source
721
110k
      const uint16_t *left, int bd) {                                       \
722
110k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
110k
  }
aom_highbd_paeth_predictor_32x32_c
Line
Count
Source
721
145k
      const uint16_t *left, int bd) {                                       \
722
145k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
145k
  }
aom_highbd_paeth_predictor_64x64_c
Line
Count
Source
721
23.1k
      const uint16_t *left, int bd) {                                       \
722
23.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
23.1k
  }
aom_highbd_paeth_predictor_4x8_c
Line
Count
Source
721
63.2k
      const uint16_t *left, int bd) {                                       \
722
63.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
63.2k
  }
aom_highbd_paeth_predictor_8x4_c
Line
Count
Source
721
101k
      const uint16_t *left, int bd) {                                       \
722
101k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
101k
  }
aom_highbd_paeth_predictor_8x16_c
Line
Count
Source
721
73.3k
      const uint16_t *left, int bd) {                                       \
722
73.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
73.3k
  }
aom_highbd_paeth_predictor_16x8_c
Line
Count
Source
721
83.2k
      const uint16_t *left, int bd) {                                       \
722
83.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
83.2k
  }
aom_highbd_paeth_predictor_16x32_c
Line
Count
Source
721
1.66M
      const uint16_t *left, int bd) {                                       \
722
1.66M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
1.66M
  }
aom_highbd_paeth_predictor_32x16_c
Line
Count
Source
721
21.5k
      const uint16_t *left, int bd) {                                       \
722
21.5k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
21.5k
  }
aom_highbd_paeth_predictor_32x64_c
Line
Count
Source
721
3.43k
      const uint16_t *left, int bd) {                                       \
722
3.43k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.43k
  }
aom_highbd_paeth_predictor_64x32_c
Line
Count
Source
721
3.20k
      const uint16_t *left, int bd) {                                       \
722
3.20k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.20k
  }
aom_highbd_paeth_predictor_4x16_c
Line
Count
Source
721
94.8k
      const uint16_t *left, int bd) {                                       \
722
94.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
94.8k
  }
aom_highbd_paeth_predictor_16x4_c
Line
Count
Source
721
111k
      const uint16_t *left, int bd) {                                       \
722
111k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
111k
  }
aom_highbd_paeth_predictor_8x32_c
Line
Count
Source
721
30.0k
      const uint16_t *left, int bd) {                                       \
722
30.0k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
30.0k
  }
aom_highbd_paeth_predictor_32x8_c
Line
Count
Source
721
78.0k
      const uint16_t *left, int bd) {                                       \
722
78.0k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
78.0k
  }
aom_highbd_paeth_predictor_16x64_c
Line
Count
Source
721
420k
      const uint16_t *left, int bd) {                                       \
722
420k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
420k
  }
aom_highbd_paeth_predictor_64x16_c
Line
Count
Source
721
5.55k
      const uint16_t *left, int bd) {                                       \
722
5.55k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
5.55k
  }
Unexecuted instantiation: aom_highbd_dc_128_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_32x32_c
aom_highbd_dc_128_predictor_64x64_c
Line
Count
Source
721
10.2k
      const uint16_t *left, int bd) {                                       \
722
10.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
10.2k
  }
Unexecuted instantiation: aom_highbd_dc_128_predictor_4x8_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_8x4_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_8x16_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_16x8_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_16x32_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_32x16_c
aom_highbd_dc_128_predictor_32x64_c
Line
Count
Source
721
462
      const uint16_t *left, int bd) {                                       \
722
462
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
462
  }
aom_highbd_dc_128_predictor_64x32_c
Line
Count
Source
721
4.47k
      const uint16_t *left, int bd) {                                       \
722
4.47k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
4.47k
  }
aom_highbd_dc_128_predictor_4x16_c
Line
Count
Source
721
191
      const uint16_t *left, int bd) {                                       \
722
191
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
191
  }
aom_highbd_dc_128_predictor_16x4_c
Line
Count
Source
721
135
      const uint16_t *left, int bd) {                                       \
722
135
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
135
  }
aom_highbd_dc_128_predictor_8x32_c
Line
Count
Source
721
35
      const uint16_t *left, int bd) {                                       \
722
35
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
35
  }
aom_highbd_dc_128_predictor_32x8_c
Line
Count
Source
721
192
      const uint16_t *left, int bd) {                                       \
722
192
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
192
  }
aom_highbd_dc_128_predictor_16x64_c
Line
Count
Source
721
63
      const uint16_t *left, int bd) {                                       \
722
63
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
63
  }
aom_highbd_dc_128_predictor_64x16_c
Line
Count
Source
721
2.19k
      const uint16_t *left, int bd) {                                       \
722
2.19k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
2.19k
  }
Unexecuted instantiation: aom_highbd_dc_left_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_32x32_c
aom_highbd_dc_left_predictor_64x64_c
Line
Count
Source
721
17.6k
      const uint16_t *left, int bd) {                                       \
722
17.6k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
17.6k
  }
Unexecuted instantiation: aom_highbd_dc_left_predictor_4x8_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_8x4_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_8x16_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_16x8_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_16x32_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_32x16_c
aom_highbd_dc_left_predictor_32x64_c
Line
Count
Source
721
533
      const uint16_t *left, int bd) {                                       \
722
533
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
533
  }
aom_highbd_dc_left_predictor_64x32_c
Line
Count
Source
721
673
      const uint16_t *left, int bd) {                                       \
722
673
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
673
  }
aom_highbd_dc_left_predictor_4x16_c
Line
Count
Source
721
3.21k
      const uint16_t *left, int bd) {                                       \
722
3.21k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.21k
  }
aom_highbd_dc_left_predictor_16x4_c
Line
Count
Source
721
5.54k
      const uint16_t *left, int bd) {                                       \
722
5.54k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
5.54k
  }
aom_highbd_dc_left_predictor_8x32_c
Line
Count
Source
721
3.09k
      const uint16_t *left, int bd) {                                       \
722
3.09k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.09k
  }
aom_highbd_dc_left_predictor_32x8_c
Line
Count
Source
721
11.5k
      const uint16_t *left, int bd) {                                       \
722
11.5k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
11.5k
  }
aom_highbd_dc_left_predictor_16x64_c
Line
Count
Source
721
409
      const uint16_t *left, int bd) {                                       \
722
409
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
409
  }
aom_highbd_dc_left_predictor_64x16_c
Line
Count
Source
721
340
      const uint16_t *left, int bd) {                                       \
722
340
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
340
  }
Unexecuted instantiation: aom_highbd_dc_top_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_32x32_c
aom_highbd_dc_top_predictor_64x64_c
Line
Count
Source
721
18.4k
      const uint16_t *left, int bd) {                                       \
722
18.4k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
18.4k
  }
Unexecuted instantiation: aom_highbd_dc_top_predictor_4x8_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_8x4_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_8x16_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_16x8_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_16x32_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_32x16_c
aom_highbd_dc_top_predictor_32x64_c
Line
Count
Source
721
1.21k
      const uint16_t *left, int bd) {                                       \
722
1.21k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
1.21k
  }
aom_highbd_dc_top_predictor_64x32_c
Line
Count
Source
721
775
      const uint16_t *left, int bd) {                                       \
722
775
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
775
  }
aom_highbd_dc_top_predictor_4x16_c
Line
Count
Source
721
16.3k
      const uint16_t *left, int bd) {                                       \
722
16.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
16.3k
  }
aom_highbd_dc_top_predictor_16x4_c
Line
Count
Source
721
3.81k
      const uint16_t *left, int bd) {                                       \
722
3.81k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
3.81k
  }
aom_highbd_dc_top_predictor_8x32_c
Line
Count
Source
721
10.7k
      const uint16_t *left, int bd) {                                       \
722
10.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
10.7k
  }
aom_highbd_dc_top_predictor_32x8_c
Line
Count
Source
721
10.1k
      const uint16_t *left, int bd) {                                       \
722
10.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
10.1k
  }
aom_highbd_dc_top_predictor_16x64_c
Line
Count
Source
721
407
      const uint16_t *left, int bd) {                                       \
722
407
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
407
  }
aom_highbd_dc_top_predictor_64x16_c
Line
Count
Source
721
1.73k
      const uint16_t *left, int bd) {                                       \
722
1.73k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
1.73k
  }
Unexecuted instantiation: aom_highbd_dc_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_predictor_32x32_c
aom_highbd_dc_predictor_64x64_c
Line
Count
Source
721
89.0k
      const uint16_t *left, int bd) {                                       \
722
89.0k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
723
89.0k
  }
724
725
/* clang-format off */
726
#define intra_pred_rectangular(type) \
727
  intra_pred_sized(type, 4, 8) \
728
  intra_pred_sized(type, 8, 4) \
729
  intra_pred_sized(type, 8, 16) \
730
  intra_pred_sized(type, 16, 8) \
731
  intra_pred_sized(type, 16, 32) \
732
  intra_pred_sized(type, 32, 16) \
733
  intra_pred_sized(type, 32, 64) \
734
  intra_pred_sized(type, 64, 32) \
735
  intra_pred_sized(type, 4, 16) \
736
  intra_pred_sized(type, 16, 4) \
737
  intra_pred_sized(type, 8, 32) \
738
  intra_pred_sized(type, 32, 8) \
739
  intra_pred_sized(type, 16, 64) \
740
  intra_pred_sized(type, 64, 16) \
741
  intra_pred_highbd_sized(type, 4, 8) \
742
  intra_pred_highbd_sized(type, 8, 4) \
743
  intra_pred_highbd_sized(type, 8, 16) \
744
  intra_pred_highbd_sized(type, 16, 8) \
745
  intra_pred_highbd_sized(type, 16, 32) \
746
  intra_pred_highbd_sized(type, 32, 16) \
747
  intra_pred_highbd_sized(type, 32, 64) \
748
  intra_pred_highbd_sized(type, 64, 32) \
749
  intra_pred_highbd_sized(type, 4, 16) \
750
  intra_pred_highbd_sized(type, 16, 4) \
751
  intra_pred_highbd_sized(type, 8, 32) \
752
  intra_pred_highbd_sized(type, 32, 8) \
753
  intra_pred_highbd_sized(type, 16, 64) \
754
  intra_pred_highbd_sized(type, 64, 16)
755
756
#define intra_pred_above_4x4(type) \
757
  intra_pred_sized(type, 8, 8) \
758
  intra_pred_sized(type, 16, 16) \
759
  intra_pred_sized(type, 32, 32) \
760
  intra_pred_sized(type, 64, 64) \
761
  intra_pred_highbd_sized(type, 4, 4) \
762
  intra_pred_highbd_sized(type, 8, 8) \
763
  intra_pred_highbd_sized(type, 16, 16) \
764
  intra_pred_highbd_sized(type, 32, 32) \
765
  intra_pred_highbd_sized(type, 64, 64) \
766
  intra_pred_rectangular(type)
767
#define intra_pred_allsizes(type) \
768
  intra_pred_sized(type, 4, 4) \
769
  intra_pred_above_4x4(type)
770
#define intra_pred_square(type) \
771
  intra_pred_sized(type, 4, 4) \
772
  intra_pred_sized(type, 8, 8) \
773
  intra_pred_sized(type, 16, 16) \
774
  intra_pred_sized(type, 32, 32) \
775
  intra_pred_sized(type, 64, 64) \
776
  intra_pred_highbd_sized(type, 4, 4) \
777
  intra_pred_highbd_sized(type, 8, 8) \
778
  intra_pred_highbd_sized(type, 16, 16) \
779
  intra_pred_highbd_sized(type, 32, 32) \
780
  intra_pred_highbd_sized(type, 64, 64)
781
782
intra_pred_allsizes(v)
783
intra_pred_allsizes(h)
784
intra_pred_allsizes(smooth)
785
intra_pred_allsizes(smooth_v)
786
intra_pred_allsizes(smooth_h)
787
intra_pred_allsizes(paeth)
788
intra_pred_allsizes(dc_128)
789
intra_pred_allsizes(dc_left)
790
intra_pred_allsizes(dc_top)
791
intra_pred_square(dc)
792
/* clang-format on */
793
#undef intra_pred_allsizes