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 #ifndef AOM_AOM_DSP_SIMD_V256_INTRINSICS_H_
13 #define AOM_AOM_DSP_SIMD_V256_INTRINSICS_H_
14
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <string.h>
18
19 #include "aom_dsp/simd/v256_intrinsics_c.h"
20 #include "aom_dsp/simd/v128_intrinsics.h"
21 #include "aom_dsp/simd/v64_intrinsics.h"
22
23 /* Fallback to plain, unoptimised C. */
24
25 typedef c_v256 v256;
26
v256_low_u32(v256 a)27 SIMD_INLINE uint32_t v256_low_u32(v256 a) { return c_v256_low_u32(a); }
v256_low_v64(v256 a)28 SIMD_INLINE v64 v256_low_v64(v256 a) { return c_v256_low_v64(a); }
v256_low_u64(v256 a)29 SIMD_INLINE uint64_t v256_low_u64(v256 a) { return c_v256_low_u64(a); }
v256_low_v128(v256 a)30 SIMD_INLINE v128 v256_low_v128(v256 a) { return c_v256_low_v128(a); }
v256_high_v128(v256 a)31 SIMD_INLINE v128 v256_high_v128(v256 a) { return c_v256_high_v128(a); }
v256_from_v128(v128 hi,v128 lo)32 SIMD_INLINE v256 v256_from_v128(v128 hi, v128 lo) {
33 return c_v256_from_v128(hi, lo);
34 }
v256_from_64(uint64_t a,uint64_t b,uint64_t c,uint64_t d)35 SIMD_INLINE v256 v256_from_64(uint64_t a, uint64_t b, uint64_t c, uint64_t d) {
36 return c_v256_from_64(a, b, c, d);
37 }
v256_from_v64(v64 a,v64 b,v64 c,v64 d)38 SIMD_INLINE v256 v256_from_v64(v64 a, v64 b, v64 c, v64 d) {
39 return c_v256_from_v64(a, b, c, d);
40 }
41
v256_load_unaligned(const void * p)42 SIMD_INLINE v256 v256_load_unaligned(const void *p) {
43 return c_v256_load_unaligned(p);
44 }
v256_load_aligned(const void * p)45 SIMD_INLINE v256 v256_load_aligned(const void *p) {
46 return c_v256_load_aligned(p);
47 }
48
v256_store_unaligned(void * p,v256 a)49 SIMD_INLINE void v256_store_unaligned(void *p, v256 a) {
50 c_v256_store_unaligned(p, a);
51 }
v256_store_aligned(void * p,v256 a)52 SIMD_INLINE void v256_store_aligned(void *p, v256 a) {
53 c_v256_store_aligned(p, a);
54 }
55
v256_align(v256 a,v256 b,unsigned int c)56 SIMD_INLINE v256 v256_align(v256 a, v256 b, unsigned int c) {
57 return c_v256_align(a, b, c);
58 }
59
v256_zero()60 SIMD_INLINE v256 v256_zero() { return c_v256_zero(); }
v256_dup_8(uint8_t x)61 SIMD_INLINE v256 v256_dup_8(uint8_t x) { return c_v256_dup_8(x); }
v256_dup_16(uint16_t x)62 SIMD_INLINE v256 v256_dup_16(uint16_t x) { return c_v256_dup_16(x); }
v256_dup_32(uint32_t x)63 SIMD_INLINE v256 v256_dup_32(uint32_t x) { return c_v256_dup_32(x); }
v256_dup_64(uint64_t x)64 SIMD_INLINE v256 v256_dup_64(uint64_t x) { return c_v256_dup_64(x); }
65
66 typedef uint32_t sad256_internal;
v256_sad_u8_init()67 SIMD_INLINE sad256_internal v256_sad_u8_init() { return c_v256_sad_u8_init(); }
v256_sad_u8(sad256_internal s,v256 a,v256 b)68 SIMD_INLINE sad256_internal v256_sad_u8(sad256_internal s, v256 a, v256 b) {
69 return c_v256_sad_u8(s, a, b);
70 }
v256_sad_u8_sum(sad256_internal s)71 SIMD_INLINE uint32_t v256_sad_u8_sum(sad256_internal s) {
72 return c_v256_sad_u8_sum(s);
73 }
74 typedef uint32_t ssd256_internal;
v256_ssd_u8_init()75 SIMD_INLINE ssd256_internal v256_ssd_u8_init() { return c_v256_ssd_u8_init(); }
v256_ssd_u8(ssd256_internal s,v256 a,v256 b)76 SIMD_INLINE ssd256_internal v256_ssd_u8(ssd256_internal s, v256 a, v256 b) {
77 return c_v256_ssd_u8(s, a, b);
78 }
v256_ssd_u8_sum(ssd256_internal s)79 SIMD_INLINE uint32_t v256_ssd_u8_sum(ssd256_internal s) {
80 return c_v256_ssd_u8_sum(s);
81 }
82
v256_dotp_su8(v256 a,v256 b)83 SIMD_INLINE int64_t v256_dotp_su8(v256 a, v256 b) {
84 return c_v256_dotp_su8(a, b);
85 }
v256_dotp_s16(v256 a,v256 b)86 SIMD_INLINE int64_t v256_dotp_s16(v256 a, v256 b) {
87 return c_v256_dotp_s16(a, b);
88 }
v256_dotp_s32(v256 a,v256 b)89 SIMD_INLINE int64_t v256_dotp_s32(v256 a, v256 b) {
90 return c_v256_dotp_s32(a, b);
91 }
v256_hadd_u8(v256 a)92 SIMD_INLINE uint64_t v256_hadd_u8(v256 a) { return c_v256_hadd_u8(a); }
93
v256_or(v256 a,v256 b)94 SIMD_INLINE v256 v256_or(v256 a, v256 b) { return c_v256_or(a, b); }
v256_xor(v256 a,v256 b)95 SIMD_INLINE v256 v256_xor(v256 a, v256 b) { return c_v256_xor(a, b); }
v256_and(v256 a,v256 b)96 SIMD_INLINE v256 v256_and(v256 a, v256 b) { return c_v256_and(a, b); }
v256_andn(v256 a,v256 b)97 SIMD_INLINE v256 v256_andn(v256 a, v256 b) { return c_v256_andn(a, b); }
98
v256_add_8(v256 a,v256 b)99 SIMD_INLINE v256 v256_add_8(v256 a, v256 b) { return c_v256_add_8(a, b); }
v256_add_16(v256 a,v256 b)100 SIMD_INLINE v256 v256_add_16(v256 a, v256 b) { return c_v256_add_16(a, b); }
v256_sadd_s8(v256 a,v256 b)101 SIMD_INLINE v256 v256_sadd_s8(v256 a, v256 b) { return c_v256_sadd_s8(a, b); }
v256_sadd_u8(v256 a,v256 b)102 SIMD_INLINE v256 v256_sadd_u8(v256 a, v256 b) { return c_v256_sadd_u8(a, b); }
v256_sadd_s16(v256 a,v256 b)103 SIMD_INLINE v256 v256_sadd_s16(v256 a, v256 b) { return c_v256_sadd_s16(a, b); }
v256_add_32(v256 a,v256 b)104 SIMD_INLINE v256 v256_add_32(v256 a, v256 b) { return c_v256_add_32(a, b); }
v256_add_64(v256 a,v256 b)105 SIMD_INLINE v256 v256_add_64(v256 a, v256 b) { return c_v256_add_64(a, b); }
v256_sub_64(v256 a,v256 b)106 SIMD_INLINE v256 v256_sub_64(v256 a, v256 b) { return c_v256_sub_64(a, b); }
v256_padd_u8(v256 a)107 SIMD_INLINE v256 v256_padd_u8(v256 a) { return c_v256_padd_u8(a); }
v256_padd_s16(v256 a)108 SIMD_INLINE v256 v256_padd_s16(v256 a) { return c_v256_padd_s16(a); }
v256_sub_8(v256 a,v256 b)109 SIMD_INLINE v256 v256_sub_8(v256 a, v256 b) { return c_v256_sub_8(a, b); }
v256_ssub_u8(v256 a,v256 b)110 SIMD_INLINE v256 v256_ssub_u8(v256 a, v256 b) { return c_v256_ssub_u8(a, b); }
v256_ssub_s8(v256 a,v256 b)111 SIMD_INLINE v256 v256_ssub_s8(v256 a, v256 b) { return c_v256_ssub_s8(a, b); }
v256_sub_16(v256 a,v256 b)112 SIMD_INLINE v256 v256_sub_16(v256 a, v256 b) { return c_v256_sub_16(a, b); }
v256_ssub_s16(v256 a,v256 b)113 SIMD_INLINE v256 v256_ssub_s16(v256 a, v256 b) { return c_v256_ssub_s16(a, b); }
v256_ssub_u16(v256 a,v256 b)114 SIMD_INLINE v256 v256_ssub_u16(v256 a, v256 b) { return c_v256_ssub_u16(a, b); }
v256_sub_32(v256 a,v256 b)115 SIMD_INLINE v256 v256_sub_32(v256 a, v256 b) { return c_v256_sub_32(a, b); }
v256_abs_s16(v256 a)116 SIMD_INLINE v256 v256_abs_s16(v256 a) { return c_v256_abs_s16(a); }
v256_abs_s8(v256 a)117 SIMD_INLINE v256 v256_abs_s8(v256 a) { return c_v256_abs_s8(a); }
118
v256_mul_s16(v128 a,v128 b)119 SIMD_INLINE v256 v256_mul_s16(v128 a, v128 b) { return c_v256_mul_s16(a, b); }
v256_mullo_s16(v256 a,v256 b)120 SIMD_INLINE v256 v256_mullo_s16(v256 a, v256 b) {
121 return c_v256_mullo_s16(a, b);
122 }
v256_mulhi_s16(v256 a,v256 b)123 SIMD_INLINE v256 v256_mulhi_s16(v256 a, v256 b) {
124 return c_v256_mulhi_s16(a, b);
125 }
v256_mullo_s32(v256 a,v256 b)126 SIMD_INLINE v256 v256_mullo_s32(v256 a, v256 b) {
127 return c_v256_mullo_s32(a, b);
128 }
v256_madd_s16(v256 a,v256 b)129 SIMD_INLINE v256 v256_madd_s16(v256 a, v256 b) { return c_v256_madd_s16(a, b); }
v256_madd_us8(v256 a,v256 b)130 SIMD_INLINE v256 v256_madd_us8(v256 a, v256 b) { return c_v256_madd_us8(a, b); }
131
v256_movemask_8(v256 a)132 SIMD_INLINE uint32_t v256_movemask_8(v256 a) { return c_v256_movemask_8(a); }
v256_blend_8(v256 a,v256 b,v256 c)133 SIMD_INLINE v256 v256_blend_8(v256 a, v256 b, v256 c) {
134 return c_v256_blend_8(a, b, c);
135 }
136
v256_avg_u8(v256 a,v256 b)137 SIMD_INLINE v256 v256_avg_u8(v256 a, v256 b) { return c_v256_avg_u8(a, b); }
v256_rdavg_u8(v256 a,v256 b)138 SIMD_INLINE v256 v256_rdavg_u8(v256 a, v256 b) { return c_v256_rdavg_u8(a, b); }
v256_rdavg_u16(v256 a,v256 b)139 SIMD_INLINE v256 v256_rdavg_u16(v256 a, v256 b) {
140 return c_v256_rdavg_u16(a, b);
141 }
v256_avg_u16(v256 a,v256 b)142 SIMD_INLINE v256 v256_avg_u16(v256 a, v256 b) { return c_v256_avg_u16(a, b); }
v256_min_u8(v256 a,v256 b)143 SIMD_INLINE v256 v256_min_u8(v256 a, v256 b) { return c_v256_min_u8(a, b); }
v256_max_u8(v256 a,v256 b)144 SIMD_INLINE v256 v256_max_u8(v256 a, v256 b) { return c_v256_max_u8(a, b); }
v256_min_s8(v256 a,v256 b)145 SIMD_INLINE v256 v256_min_s8(v256 a, v256 b) { return c_v256_min_s8(a, b); }
v256_max_s8(v256 a,v256 b)146 SIMD_INLINE v256 v256_max_s8(v256 a, v256 b) { return c_v256_max_s8(a, b); }
v256_min_s16(v256 a,v256 b)147 SIMD_INLINE v256 v256_min_s16(v256 a, v256 b) { return c_v256_min_s16(a, b); }
v256_max_s16(v256 a,v256 b)148 SIMD_INLINE v256 v256_max_s16(v256 a, v256 b) { return c_v256_max_s16(a, b); }
v256_min_s32(v256 a,v256 b)149 SIMD_INLINE v256 v256_min_s32(v256 a, v256 b) { return c_v256_min_s32(a, b); }
v256_max_s32(v256 a,v256 b)150 SIMD_INLINE v256 v256_max_s32(v256 a, v256 b) { return c_v256_max_s32(a, b); }
151
v256_ziplo_8(v256 a,v256 b)152 SIMD_INLINE v256 v256_ziplo_8(v256 a, v256 b) { return c_v256_ziplo_8(a, b); }
v256_ziphi_8(v256 a,v256 b)153 SIMD_INLINE v256 v256_ziphi_8(v256 a, v256 b) { return c_v256_ziphi_8(a, b); }
v256_ziplo_16(v256 a,v256 b)154 SIMD_INLINE v256 v256_ziplo_16(v256 a, v256 b) { return c_v256_ziplo_16(a, b); }
v256_ziphi_16(v256 a,v256 b)155 SIMD_INLINE v256 v256_ziphi_16(v256 a, v256 b) { return c_v256_ziphi_16(a, b); }
v256_ziplo_32(v256 a,v256 b)156 SIMD_INLINE v256 v256_ziplo_32(v256 a, v256 b) { return c_v256_ziplo_32(a, b); }
v256_ziphi_32(v256 a,v256 b)157 SIMD_INLINE v256 v256_ziphi_32(v256 a, v256 b) { return c_v256_ziphi_32(a, b); }
v256_ziplo_64(v256 a,v256 b)158 SIMD_INLINE v256 v256_ziplo_64(v256 a, v256 b) { return c_v256_ziplo_64(a, b); }
v256_ziphi_64(v256 a,v256 b)159 SIMD_INLINE v256 v256_ziphi_64(v256 a, v256 b) { return c_v256_ziphi_64(a, b); }
v256_ziplo_128(v256 a,v256 b)160 SIMD_INLINE v256 v256_ziplo_128(v256 a, v256 b) {
161 return c_v256_ziplo_128(a, b);
162 }
v256_ziphi_128(v256 a,v256 b)163 SIMD_INLINE v256 v256_ziphi_128(v256 a, v256 b) {
164 return c_v256_ziphi_128(a, b);
165 }
v256_zip_8(v128 a,v128 b)166 SIMD_INLINE v256 v256_zip_8(v128 a, v128 b) { return c_v256_zip_8(a, b); }
v256_zip_16(v128 a,v128 b)167 SIMD_INLINE v256 v256_zip_16(v128 a, v128 b) { return c_v256_zip_16(a, b); }
v256_zip_32(v128 a,v128 b)168 SIMD_INLINE v256 v256_zip_32(v128 a, v128 b) { return c_v256_zip_32(a, b); }
v256_unziplo_8(v256 a,v256 b)169 SIMD_INLINE v256 v256_unziplo_8(v256 a, v256 b) {
170 return c_v256_unziplo_8(a, b);
171 }
v256_unziphi_8(v256 a,v256 b)172 SIMD_INLINE v256 v256_unziphi_8(v256 a, v256 b) {
173 return c_v256_unziphi_8(a, b);
174 }
v256_unziplo_16(v256 a,v256 b)175 SIMD_INLINE v256 v256_unziplo_16(v256 a, v256 b) {
176 return c_v256_unziplo_16(a, b);
177 }
v256_unziphi_16(v256 a,v256 b)178 SIMD_INLINE v256 v256_unziphi_16(v256 a, v256 b) {
179 return c_v256_unziphi_16(a, b);
180 }
v256_unziplo_32(v256 a,v256 b)181 SIMD_INLINE v256 v256_unziplo_32(v256 a, v256 b) {
182 return c_v256_unziplo_32(a, b);
183 }
v256_unziphi_32(v256 a,v256 b)184 SIMD_INLINE v256 v256_unziphi_32(v256 a, v256 b) {
185 return c_v256_unziphi_32(a, b);
186 }
v256_unziplo_64(v256 a,v256 b)187 SIMD_INLINE v256 v256_unziplo_64(v256 a, v256 b) {
188 return c_v256_unziplo_64(a, b);
189 }
v256_unziphi_64(v256 a,v256 b)190 SIMD_INLINE v256 v256_unziphi_64(v256 a, v256 b) {
191 return c_v256_unziphi_64(a, b);
192 }
v256_unpack_u8_s16(v128 a)193 SIMD_INLINE v256 v256_unpack_u8_s16(v128 a) { return c_v256_unpack_u8_s16(a); }
v256_unpacklo_u8_s16(v256 a)194 SIMD_INLINE v256 v256_unpacklo_u8_s16(v256 a) {
195 return c_v256_unpacklo_u8_s16(a);
196 }
v256_unpackhi_u8_s16(v256 a)197 SIMD_INLINE v256 v256_unpackhi_u8_s16(v256 a) {
198 return c_v256_unpackhi_u8_s16(a);
199 }
v256_unpack_s8_s16(v128 a)200 SIMD_INLINE v256 v256_unpack_s8_s16(v128 a) { return c_v256_unpack_s8_s16(a); }
v256_unpacklo_s8_s16(v256 a)201 SIMD_INLINE v256 v256_unpacklo_s8_s16(v256 a) {
202 return c_v256_unpacklo_s8_s16(a);
203 }
v256_unpackhi_s8_s16(v256 a)204 SIMD_INLINE v256 v256_unpackhi_s8_s16(v256 a) {
205 return c_v256_unpackhi_s8_s16(a);
206 }
v256_pack_s32_s16(v256 a,v256 b)207 SIMD_INLINE v256 v256_pack_s32_s16(v256 a, v256 b) {
208 return c_v256_pack_s32_s16(a, b);
209 }
v256_pack_s32_u16(v256 a,v256 b)210 SIMD_INLINE v256 v256_pack_s32_u16(v256 a, v256 b) {
211 return c_v256_pack_s32_u16(a, b);
212 }
v256_pack_s16_u8(v256 a,v256 b)213 SIMD_INLINE v256 v256_pack_s16_u8(v256 a, v256 b) {
214 return c_v256_pack_s16_u8(a, b);
215 }
v256_pack_s16_s8(v256 a,v256 b)216 SIMD_INLINE v256 v256_pack_s16_s8(v256 a, v256 b) {
217 return c_v256_pack_s16_s8(a, b);
218 }
v256_unpack_u16_s32(v128 a)219 SIMD_INLINE v256 v256_unpack_u16_s32(v128 a) {
220 return c_v256_unpack_u16_s32(a);
221 }
v256_unpack_s16_s32(v128 a)222 SIMD_INLINE v256 v256_unpack_s16_s32(v128 a) {
223 return c_v256_unpack_s16_s32(a);
224 }
v256_unpacklo_u16_s32(v256 a)225 SIMD_INLINE v256 v256_unpacklo_u16_s32(v256 a) {
226 return c_v256_unpacklo_u16_s32(a);
227 }
v256_unpacklo_s16_s32(v256 a)228 SIMD_INLINE v256 v256_unpacklo_s16_s32(v256 a) {
229 return c_v256_unpacklo_s16_s32(a);
230 }
v256_unpackhi_u16_s32(v256 a)231 SIMD_INLINE v256 v256_unpackhi_u16_s32(v256 a) {
232 return c_v256_unpackhi_u16_s32(a);
233 }
v256_unpackhi_s16_s32(v256 a)234 SIMD_INLINE v256 v256_unpackhi_s16_s32(v256 a) {
235 return c_v256_unpackhi_s16_s32(a);
236 }
v256_shuffle_8(v256 a,v256 pattern)237 SIMD_INLINE v256 v256_shuffle_8(v256 a, v256 pattern) {
238 return c_v256_shuffle_8(a, pattern);
239 }
v256_wideshuffle_8(v256 a,v256 b,v256 pattern)240 SIMD_INLINE v256 v256_wideshuffle_8(v256 a, v256 b, v256 pattern) {
241 return c_v256_wideshuffle_8(a, b, pattern);
242 }
v256_pshuffle_8(v256 a,v256 pattern)243 SIMD_INLINE v256 v256_pshuffle_8(v256 a, v256 pattern) {
244 return c_v256_pshuffle_8(a, pattern);
245 }
246
v256_cmpgt_s8(v256 a,v256 b)247 SIMD_INLINE v256 v256_cmpgt_s8(v256 a, v256 b) { return c_v256_cmpgt_s8(a, b); }
v256_cmplt_s8(v256 a,v256 b)248 SIMD_INLINE v256 v256_cmplt_s8(v256 a, v256 b) { return c_v256_cmplt_s8(a, b); }
v256_cmpeq_8(v256 a,v256 b)249 SIMD_INLINE v256 v256_cmpeq_8(v256 a, v256 b) { return c_v256_cmpeq_8(a, b); }
v256_cmpgt_s16(v256 a,v256 b)250 SIMD_INLINE v256 v256_cmpgt_s16(v256 a, v256 b) {
251 return c_v256_cmpgt_s16(a, b);
252 }
v256_cmplt_s16(v256 a,v256 b)253 SIMD_INLINE v256 v256_cmplt_s16(v256 a, v256 b) {
254 return c_v256_cmplt_s16(a, b);
255 }
v256_cmpeq_16(v256 a,v256 b)256 SIMD_INLINE v256 v256_cmpeq_16(v256 a, v256 b) { return c_v256_cmpeq_16(a, b); }
v256_cmpeq_32(v256 a,v256 b)257 SIMD_INLINE v256 v256_cmpeq_32(v256 a, v256 b) { return c_v256_cmpeq_32(a, b); }
258
v256_cmpgt_s32(v256 a,v256 b)259 SIMD_INLINE v256 v256_cmpgt_s32(v256 a, v256 b) {
260 return c_v256_cmpgt_s32(a, b);
261 }
v256_cmplt_s32(v256 a,v256 b)262 SIMD_INLINE v256 v256_cmplt_s32(v256 a, v256 b) {
263 return c_v256_cmplt_s32(a, b);
264 }
v256_shl_8(v256 a,unsigned int c)265 SIMD_INLINE v256 v256_shl_8(v256 a, unsigned int c) {
266 return c_v256_shl_8(a, c);
267 }
v256_shr_u8(v256 a,unsigned int c)268 SIMD_INLINE v256 v256_shr_u8(v256 a, unsigned int c) {
269 return c_v256_shr_u8(a, c);
270 }
v256_shr_s8(v256 a,unsigned int c)271 SIMD_INLINE v256 v256_shr_s8(v256 a, unsigned int c) {
272 return c_v256_shr_s8(a, c);
273 }
v256_shl_16(v256 a,unsigned int c)274 SIMD_INLINE v256 v256_shl_16(v256 a, unsigned int c) {
275 return c_v256_shl_16(a, c);
276 }
v256_shr_u16(v256 a,unsigned int c)277 SIMD_INLINE v256 v256_shr_u16(v256 a, unsigned int c) {
278 return c_v256_shr_u16(a, c);
279 }
v256_shr_s16(v256 a,unsigned int c)280 SIMD_INLINE v256 v256_shr_s16(v256 a, unsigned int c) {
281 return c_v256_shr_s16(a, c);
282 }
v256_shl_32(v256 a,unsigned int c)283 SIMD_INLINE v256 v256_shl_32(v256 a, unsigned int c) {
284 return c_v256_shl_32(a, c);
285 }
v256_shr_u32(v256 a,unsigned int c)286 SIMD_INLINE v256 v256_shr_u32(v256 a, unsigned int c) {
287 return c_v256_shr_u32(a, c);
288 }
v256_shr_s32(v256 a,unsigned int c)289 SIMD_INLINE v256 v256_shr_s32(v256 a, unsigned int c) {
290 return c_v256_shr_s32(a, c);
291 }
v256_shl_64(v256 a,unsigned int c)292 SIMD_INLINE v256 v256_shl_64(v256 a, unsigned int c) {
293 return c_v256_shl_64(a, c);
294 }
v256_shr_u64(v256 a,unsigned int c)295 SIMD_INLINE v256 v256_shr_u64(v256 a, unsigned int c) {
296 return c_v256_shr_u64(a, c);
297 }
v256_shr_s64(v256 a,unsigned int c)298 SIMD_INLINE v256 v256_shr_s64(v256 a, unsigned int c) {
299 return c_v256_shr_s64(a, c);
300 }
301
v256_shr_n_byte(v256 a,unsigned int n)302 SIMD_INLINE v256 v256_shr_n_byte(v256 a, unsigned int n) {
303 return c_v256_shr_n_byte(a, n);
304 }
v256_shl_n_byte(v256 a,unsigned int n)305 SIMD_INLINE v256 v256_shl_n_byte(v256 a, unsigned int n) {
306 return c_v256_shl_n_byte(a, n);
307 }
v256_shl_n_8(v256 a,unsigned int n)308 SIMD_INLINE v256 v256_shl_n_8(v256 a, unsigned int n) {
309 return c_v256_shl_n_8(a, n);
310 }
v256_shl_n_16(v256 a,unsigned int n)311 SIMD_INLINE v256 v256_shl_n_16(v256 a, unsigned int n) {
312 return c_v256_shl_n_16(a, n);
313 }
v256_shl_n_32(v256 a,unsigned int n)314 SIMD_INLINE v256 v256_shl_n_32(v256 a, unsigned int n) {
315 return c_v256_shl_n_32(a, n);
316 }
v256_shl_n_64(v256 a,unsigned int n)317 SIMD_INLINE v256 v256_shl_n_64(v256 a, unsigned int n) {
318 return c_v256_shl_n_64(a, n);
319 }
v256_shr_n_u8(v256 a,unsigned int n)320 SIMD_INLINE v256 v256_shr_n_u8(v256 a, unsigned int n) {
321 return c_v256_shr_n_u8(a, n);
322 }
v256_shr_n_u16(v256 a,unsigned int n)323 SIMD_INLINE v256 v256_shr_n_u16(v256 a, unsigned int n) {
324 return c_v256_shr_n_u16(a, n);
325 }
v256_shr_n_u32(v256 a,unsigned int n)326 SIMD_INLINE v256 v256_shr_n_u32(v256 a, unsigned int n) {
327 return c_v256_shr_n_u32(a, n);
328 }
v256_shr_n_u64(v256 a,unsigned int n)329 SIMD_INLINE v256 v256_shr_n_u64(v256 a, unsigned int n) {
330 return c_v256_shr_n_u64(a, n);
331 }
v256_shr_n_s8(v256 a,unsigned int n)332 SIMD_INLINE v256 v256_shr_n_s8(v256 a, unsigned int n) {
333 return c_v256_shr_n_s8(a, n);
334 }
v256_shr_n_s16(v256 a,unsigned int n)335 SIMD_INLINE v256 v256_shr_n_s16(v256 a, unsigned int n) {
336 return c_v256_shr_n_s16(a, n);
337 }
v256_shr_n_s32(v256 a,unsigned int n)338 SIMD_INLINE v256 v256_shr_n_s32(v256 a, unsigned int n) {
339 return c_v256_shr_n_s32(a, n);
340 }
v256_shr_n_s64(v256 a,unsigned int n)341 SIMD_INLINE v256 v256_shr_n_s64(v256 a, unsigned int n) {
342 return c_v256_shr_n_s64(a, n);
343 }
344
v256_shr_n_word(v256 a,unsigned int n)345 SIMD_INLINE v256 v256_shr_n_word(v256 a, unsigned int n) {
346 return c_v256_shr_n_word(a, n);
347 }
v256_shl_n_word(v256 a,unsigned int n)348 SIMD_INLINE v256 v256_shl_n_word(v256 a, unsigned int n) {
349 return c_v256_shl_n_word(a, n);
350 }
351
352 typedef uint32_t sad256_internal_u16;
v256_sad_u16_init()353 SIMD_INLINE sad256_internal_u16 v256_sad_u16_init() {
354 return c_v256_sad_u16_init();
355 }
v256_sad_u16(sad256_internal_u16 s,v256 a,v256 b)356 SIMD_INLINE sad256_internal_u16 v256_sad_u16(sad256_internal_u16 s, v256 a,
357 v256 b) {
358 return c_v256_sad_u16(s, a, b);
359 }
v256_sad_u16_sum(sad256_internal_u16 s)360 SIMD_INLINE uint32_t v256_sad_u16_sum(sad256_internal_u16 s) {
361 return c_v256_sad_u16_sum(s);
362 }
363
364 typedef uint64_t ssd256_internal_s16;
v256_ssd_s16_init()365 SIMD_INLINE ssd256_internal_s16 v256_ssd_s16_init() {
366 return c_v256_ssd_s16_init();
367 }
v256_ssd_s16(ssd256_internal_s16 s,v256 a,v256 b)368 SIMD_INLINE ssd256_internal_s16 v256_ssd_s16(ssd256_internal_s16 s, v256 a,
369 v256 b) {
370 return c_v256_ssd_s16(s, a, b);
371 }
v256_ssd_s16_sum(ssd256_internal_s16 s)372 SIMD_INLINE uint64_t v256_ssd_s16_sum(ssd256_internal_s16 s) {
373 return c_v256_ssd_s16_sum(s);
374 }
375
376 #endif // AOM_AOM_DSP_SIMD_V256_INTRINSICS_H_
377