2
0

bitdepth_conversion_avx2.h 1.0 KB

123456789101112131415161718192021222324252627282930
  1. /*
  2. * Copyright (c) 2017 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. #ifndef VPX_DSP_X86_BITDEPTH_CONVERSION_AVX2_H_
  11. #define VPX_DSP_X86_BITDEPTH_CONVERSION_AVX2_H_
  12. #include <immintrin.h>
  13. #include "./vpx_config.h"
  14. #include "vpx/vpx_integer.h"
  15. #include "vpx_dsp/vpx_dsp_common.h"
  16. // Load 16 16 bit values. If the source is 32 bits then pack down with
  17. // saturation.
  18. static INLINE __m256i load_tran_low(const tran_low_t *a) {
  19. #if CONFIG_VP9_HIGHBITDEPTH
  20. const __m256i a_low = _mm256_loadu_si256((const __m256i *)a);
  21. return _mm256_packs_epi32(a_low, *(const __m256i *)(a + 8));
  22. #else
  23. return _mm256_loadu_si256((const __m256i *)a);
  24. #endif
  25. }
  26. #endif // VPX_DSP_X86_BITDEPTH_CONVERSION_AVX2_H_