1 /*
2  *  Copyright (c) 2018 The WebM project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef VPX_VPX_DSP_PPC_TXFM_COMMON_VSX_H_
12 #define VPX_VPX_DSP_PPC_TXFM_COMMON_VSX_H_
13 
14 #include "vpx_dsp/ppc/types_vsx.h"
15 
16 static const int32x4_t vec_dct_const_rounding = { 8192, 8192, 8192, 8192 };
17 
18 static const uint32x4_t vec_dct_const_bits = { 14, 14, 14, 14 };
19 
20 static const uint16x8_t vec_dct_scale_log2 = { 2, 2, 2, 2, 2, 2, 2, 2 };
21 
22 static const int16x8_t cospi1_v = { 16364, 16364, 16364, 16364,
23                                     16364, 16364, 16364, 16364 };
24 static const int16x8_t cospi2_v = { 16305, 16305, 16305, 16305,
25                                     16305, 16305, 16305, 16305 };
26 static const int16x8_t cospi3_v = { 16207, 16207, 16207, 16207,
27                                     16207, 16207, 16207, 16207 };
28 static const int16x8_t cospi4_v = { 16069, 16069, 16069, 16069,
29                                     16069, 16069, 16069, 16069 };
30 static const int16x8_t cospi4m_v = { -16069, -16069, -16069, -16069,
31                                      -16069, -16069, -16069, -16069 };
32 static const int16x8_t cospi5_v = { 15893, 15893, 15893, 15893,
33                                     15893, 15893, 15893, 15893 };
34 static const int16x8_t cospi6_v = { 15679, 15679, 15679, 15679,
35                                     15679, 15679, 15679, 15679 };
36 static const int16x8_t cospi7_v = { 15426, 15426, 15426, 15426,
37                                     15426, 15426, 15426, 15426 };
38 static const int16x8_t cospi8_v = { 15137, 15137, 15137, 15137,
39                                     15137, 15137, 15137, 15137 };
40 static const int16x8_t cospi8m_v = { -15137, -15137, -15137, -15137,
41                                      -15137, -15137, -15137, -15137 };
42 static const int16x8_t cospi9_v = { 14811, 14811, 14811, 14811,
43                                     14811, 14811, 14811, 14811 };
44 static const int16x8_t cospi10_v = { 14449, 14449, 14449, 14449,
45                                      14449, 14449, 14449, 14449 };
46 static const int16x8_t cospi11_v = { 14053, 14053, 14053, 14053,
47                                      14053, 14053, 14053, 14053 };
48 static const int16x8_t cospi12_v = { 13623, 13623, 13623, 13623,
49                                      13623, 13623, 13623, 13623 };
50 static const int16x8_t cospi13_v = { 13160, 13160, 13160, 13160,
51                                      13160, 13160, 13160, 13160 };
52 static const int16x8_t cospi14_v = { 12665, 12665, 12665, 12665,
53                                      12665, 12665, 12665, 12665 };
54 static const int16x8_t cospi15_v = { 12140, 12140, 12140, 12140,
55                                      12140, 12140, 12140, 12140 };
56 static const int16x8_t cospi16_v = { 11585, 11585, 11585, 11585,
57                                      11585, 11585, 11585, 11585 };
58 static const int16x8_t cospi17_v = { 11003, 11003, 11003, 11003,
59                                      11003, 11003, 11003, 11003 };
60 static const int16x8_t cospi18_v = { 10394, 10394, 10394, 10394,
61                                      10394, 10394, 10394, 10394 };
62 static const int16x8_t cospi19_v = { 9760, 9760, 9760, 9760,
63                                      9760, 9760, 9760, 9760 };
64 static const int16x8_t cospi20_v = { 9102, 9102, 9102, 9102,
65                                      9102, 9102, 9102, 9102 };
66 static const int16x8_t cospi20m_v = { -9102, -9102, -9102, -9102,
67                                       -9102, -9102, -9102, -9102 };
68 static const int16x8_t cospi21_v = { 8423, 8423, 8423, 8423,
69                                      8423, 8423, 8423, 8423 };
70 static const int16x8_t cospi22_v = { 7723, 7723, 7723, 7723,
71                                      7723, 7723, 7723, 7723 };
72 static const int16x8_t cospi23_v = { 7005, 7005, 7005, 7005,
73                                      7005, 7005, 7005, 7005 };
74 static const int16x8_t cospi24_v = { 6270, 6270, 6270, 6270,
75                                      6270, 6270, 6270, 6270 };
76 static const int16x8_t cospi25_v = { 5520, 5520, 5520, 5520,
77                                      5520, 5520, 5520, 5520 };
78 static const int16x8_t cospi26_v = { 4756, 4756, 4756, 4756,
79                                      4756, 4756, 4756, 4756 };
80 static const int16x8_t cospi27_v = { 3981, 3981, 3981, 3981,
81                                      3981, 3981, 3981, 3981 };
82 static const int16x8_t cospi28_v = { 3196, 3196, 3196, 3196,
83                                      3196, 3196, 3196, 3196 };
84 static const int16x8_t cospi29_v = { 2404, 2404, 2404, 2404,
85                                      2404, 2404, 2404, 2404 };
86 static const int16x8_t cospi30_v = { 1606, 1606, 1606, 1606,
87                                      1606, 1606, 1606, 1606 };
88 static const int16x8_t cospi31_v = { 804, 804, 804, 804, 804, 804, 804, 804 };
89 
90 #endif  // VPX_VPX_DSP_PPC_TXFM_COMMON_VSX_H_
91