From f2aa91a1ac08703d5a22af7fa48c59eba8eb397a Mon Sep 17 00:00:00 2001 From: "fbarchard@google.com" Date: Fri, 2 Aug 2013 17:48:24 +0000 Subject: [PATCH] replace static const with static to avoid internal compiler error with gcc BUG=258 TEST=try bots R=johannkoenig@google.com Review URL: https://webrtc-codereview.appspot.com/1944004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@743 16f28f9a-4ce2-e073-06de-1de4eb20be90 --- README.chromium | 2 +- include/libyuv/version.h | 2 +- source/compare_posix.cc | 17 ++--- source/compare_win.cc | 10 +-- source/convert_argb.cc | 14 +--- source/convert_from_argb.cc | 2 +- source/rotate_neon.cc | 4 +- source/row_neon.cc | 8 +-- source/row_posix.cc | 78 ++++++++++----------- source/row_win.cc | 132 ++++++++++++++++++------------------ source/scale.cc | 45 ++++++------ source/scale_argb.cc | 14 ++-- source/scale_mips.cc | 4 +- source/scale_neon.cc | 8 +-- 14 files changed, 152 insertions(+), 188 deletions(-) diff --git a/README.chromium b/README.chromium index 5bd8344fb..6875a0923 100644 --- a/README.chromium +++ b/README.chromium @@ -1,6 +1,6 @@ Name: libyuv URL: http://code.google.com/p/libyuv/ -Version: 741 +Version: 743 License: BSD License File: LICENSE diff --git a/include/libyuv/version.h b/include/libyuv/version.h index 7e033cf84..afd4bc688 100644 --- a/include/libyuv/version.h +++ b/include/libyuv/version.h @@ -11,6 +11,6 @@ #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT #define INCLUDE_LIBYUV_VERSION_H_ -#define LIBYUV_VERSION 741 +#define LIBYUV_VERSION 743 #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT diff --git a/source/compare_posix.cc b/source/compare_posix.cc index f24835d77..61b012364 100644 --- a/source/compare_posix.cc +++ b/source/compare_posix.cc @@ -66,34 +66,27 @@ uint32 SumSquareError_SSE2(const uint8* src_a, const uint8* src_b, int count) { #if !defined(LIBYUV_DISABLE_X86) && \ (defined(__x86_64__) || (defined(__i386__) && !defined(__pic__))) -// GCC 4.2 on OSX has link error when passing static or const to inline. -// TODO(fbarchard): Use static const when gcc 4.2 support is dropped. -#ifdef __APPLE__ -#define CONST -#else -#define CONST static const -#endif #define HAS_HASHDJB2_SSE41 -CONST uvec32 kHash16x33 = { 0x92d9e201, 0, 0, 0 }; // 33 ^ 16 -CONST uvec32 kHashMul0 = { +static uvec32 kHash16x33 = { 0x92d9e201, 0, 0, 0 }; // 33 ^ 16 +static uvec32 kHashMul0 = { 0x0c3525e1, // 33 ^ 15 0xa3476dc1, // 33 ^ 14 0x3b4039a1, // 33 ^ 13 0x4f5f0981, // 33 ^ 12 }; -CONST uvec32 kHashMul1 = { +static uvec32 kHashMul1 = { 0x30f35d61, // 33 ^ 11 0x855cb541, // 33 ^ 10 0x040a9121, // 33 ^ 9 0x747c7101, // 33 ^ 8 }; -CONST uvec32 kHashMul2 = { +static uvec32 kHashMul2 = { 0xec41d4e1, // 33 ^ 7 0x4cfa3cc1, // 33 ^ 6 0x025528a1, // 33 ^ 5 0x00121881, // 33 ^ 4 }; -CONST uvec32 kHashMul3 = { +static uvec32 kHashMul3 = { 0x00008c61, // 33 ^ 3 0x00000441, // 33 ^ 2 0x00000021, // 33 ^ 1 diff --git a/source/compare_win.cc b/source/compare_win.cc index e576e85c1..fbd6e8787 100644 --- a/source/compare_win.cc +++ b/source/compare_win.cc @@ -101,26 +101,26 @@ uint32 SumSquareError_AVX2(const uint8* src_a, const uint8* src_b, int count) { #endif // _MSC_VER >= 1700 #define HAS_HASHDJB2_SSE41 -static const uvec32 kHash16x33 = { 0x92d9e201, 0, 0, 0 }; // 33 ^ 16 -static const uvec32 kHashMul0 = { +static uvec32 kHash16x33 = { 0x92d9e201, 0, 0, 0 }; // 33 ^ 16 +static uvec32 kHashMul0 = { 0x0c3525e1, // 33 ^ 15 0xa3476dc1, // 33 ^ 14 0x3b4039a1, // 33 ^ 13 0x4f5f0981, // 33 ^ 12 }; -static const uvec32 kHashMul1 = { +static uvec32 kHashMul1 = { 0x30f35d61, // 33 ^ 11 0x855cb541, // 33 ^ 10 0x040a9121, // 33 ^ 9 0x747c7101, // 33 ^ 8 }; -static const uvec32 kHashMul2 = { +static uvec32 kHashMul2 = { 0xec41d4e1, // 33 ^ 7 0x4cfa3cc1, // 33 ^ 6 0x025528a1, // 33 ^ 5 0x00121881, // 33 ^ 4 }; -static const uvec32 kHashMul3 = { +static uvec32 kHashMul3 = { 0x00008c61, // 33 ^ 3 0x00000441, // 33 ^ 2 0x00000021, // 33 ^ 1 diff --git a/source/convert_argb.cc b/source/convert_argb.cc index f9fa84947..84c487000 100644 --- a/source/convert_argb.cc +++ b/source/convert_argb.cc @@ -352,26 +352,18 @@ int I400ToARGB(const uint8* src_y, int src_stride_y, return 0; } -// GCC 4.2 on OSX has link error when passing static or const to inline. -// TODO(fbarchard): Use static const when gcc 4.2 support is dropped. -#ifdef __APPLE__ -#define CONST -#else -#define CONST static const -#endif - // Shuffle table for converting BGRA to ARGB. -CONST uvec8 kShuffleMaskBGRAToARGB = { +static uvec8 kShuffleMaskBGRAToARGB = { 3u, 2u, 1u, 0u, 7u, 6u, 5u, 4u, 11u, 10u, 9u, 8u, 15u, 14u, 13u, 12u }; // Shuffle table for converting ABGR to ARGB. -CONST uvec8 kShuffleMaskABGRToARGB = { +static uvec8 kShuffleMaskABGRToARGB = { 2u, 1u, 0u, 3u, 6u, 5u, 4u, 7u, 10u, 9u, 8u, 11u, 14u, 13u, 12u, 15u }; // Shuffle table for converting RGBA to ARGB. -CONST uvec8 kShuffleMaskRGBAToARGB = { +static uvec8 kShuffleMaskRGBAToARGB = { 1u, 2u, 3u, 0u, 5u, 6u, 7u, 4u, 9u, 10u, 11u, 8u, 13u, 14u, 15u, 12u }; diff --git a/source/convert_from_argb.cc b/source/convert_from_argb.cc index 418f44d0c..5e40fe03f 100644 --- a/source/convert_from_argb.cc +++ b/source/convert_from_argb.cc @@ -706,7 +706,7 @@ int ARGBToI400(const uint8* src_argb, int src_stride_argb, } // Shuffle table for converting ARGB to RGBA. -static const uvec8 kShuffleMaskARGBToRGBA = { +static uvec8 kShuffleMaskARGBToRGBA = { 3u, 0u, 1u, 2u, 7u, 4u, 5u, 6u, 11u, 8u, 9u, 10u, 15u, 12u, 13u, 14u }; diff --git a/source/rotate_neon.cc b/source/rotate_neon.cc index ab07c1697..7ab14a6f6 100644 --- a/source/rotate_neon.cc +++ b/source/rotate_neon.cc @@ -18,7 +18,7 @@ extern "C" { #endif #if !defined(LIBYUV_DISABLE_NEON) && defined(__ARM_NEON__) -static const uvec8 kVTbl4x4Transpose = +static uvec8 kVTbl4x4Transpose = { 0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15 }; void TransposeWx8_NEON(const uint8* src, int src_stride, @@ -184,7 +184,7 @@ void TransposeWx8_NEON(const uint8* src, int src_stride, ); } -static const uvec8 kVTbl4x4TransposeDi = +static uvec8 kVTbl4x4TransposeDi = { 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15 }; void TransposeUVWx8_NEON(const uint8* src, int src_stride, diff --git a/source/row_neon.cc b/source/row_neon.cc index 0bb55e717..bf0167540 100644 --- a/source/row_neon.cc +++ b/source/row_neon.cc @@ -102,10 +102,10 @@ extern "C" { "vtrn.u8 d16, d17 \n" \ "vmov.u8 d21, d16 \n" -static const vec8 kUVToRB = { 127, 127, 127, 127, 102, 102, 102, 102, - 0, 0, 0, 0, 0, 0, 0, 0 }; -static const vec8 kUVToG = { -25, -25, -25, -25, -52, -52, -52, -52, - 0, 0, 0, 0, 0, 0, 0, 0 }; +static vec8 kUVToRB = { 127, 127, 127, 127, 102, 102, 102, 102, + 0, 0, 0, 0, 0, 0, 0, 0 }; +static vec8 kUVToG = { -25, -25, -25, -25, -52, -52, -52, -52, + 0, 0, 0, 0, 0, 0, 0, 0 }; void I444ToARGBRow_NEON(const uint8* src_y, const uint8* src_u, diff --git a/source/row_posix.cc b/source/row_posix.cc index 7eb279e54..db255a2a4 100644 --- a/source/row_posix.cc +++ b/source/row_posix.cc @@ -20,125 +20,117 @@ extern "C" { // This module is for GCC x86 and x64 #if !defined(LIBYUV_DISABLE_X86) && (defined(__x86_64__) || defined(__i386__)) -// GCC 4.2 on OSX has link error when passing static or const to inline. -// TODO(fbarchard): Use static const when gcc 4.2 support is dropped. -#ifdef __APPLE__ -#define CONST -#else -#define CONST static const -#endif - #ifdef HAS_ARGBTOYROW_SSSE3 // Constants for ARGB -CONST vec8 kARGBToY = { +static vec8 kARGBToY = { 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0 }; // JPeg full range. -CONST vec8 kARGBToYJ = { +static vec8 kARGBToYJ = { 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0 }; -CONST vec8 kARGBToU = { +static vec8 kARGBToU = { 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0 }; -CONST vec8 kARGBToUJ = { +static vec8 kARGBToUJ = { 127, -84, -43, 0, 127, -84, -43, 0, 127, -84, -43, 0, 127, -84, -43, 0 }; -CONST vec8 kARGBToV = { +static vec8 kARGBToV = { -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, }; -CONST vec8 kARGBToVJ = { +static vec8 kARGBToVJ = { -20, -107, 127, 0, -20, -107, 127, 0, -20, -107, 127, 0, -20, -107, 127, 0 }; // Constants for BGRA -CONST vec8 kBGRAToY = { +static vec8 kBGRAToY = { 0, 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13 }; -CONST vec8 kBGRAToU = { +static vec8 kBGRAToU = { 0, -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112 }; -CONST vec8 kBGRAToV = { +static vec8 kBGRAToV = { 0, 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18 }; // Constants for ABGR -CONST vec8 kABGRToY = { +static vec8 kABGRToY = { 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13, 0 }; -CONST vec8 kABGRToU = { +static vec8 kABGRToU = { -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112, 0 }; -CONST vec8 kABGRToV = { +static vec8 kABGRToV = { 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18, 0 }; // Constants for RGBA. -CONST vec8 kRGBAToY = { +static vec8 kRGBAToY = { 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33 }; -CONST vec8 kRGBAToU = { +static vec8 kRGBAToU = { 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38 }; -CONST vec8 kRGBAToV = { +static vec8 kRGBAToV = { 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112 }; -CONST uvec8 kAddY16 = { +static uvec8 kAddY16 = { 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u }; -CONST vec16 kAddYJ64 = { +static vec16 kAddYJ64 = { 64, 64, 64, 64, 64, 64, 64, 64 }; -CONST uvec8 kAddUV128 = { +static uvec8 kAddUV128 = { 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u }; -CONST uvec16 kAddUVJ128 = { +static uvec16 kAddUVJ128 = { 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u }; // Shuffle table for converting RGB24 to ARGB. -CONST uvec8 kShuffleMaskRGB24ToARGB = { +static uvec8 kShuffleMaskRGB24ToARGB = { 0u, 1u, 2u, 12u, 3u, 4u, 5u, 13u, 6u, 7u, 8u, 14u, 9u, 10u, 11u, 15u }; // Shuffle table for converting RAW to ARGB. -CONST uvec8 kShuffleMaskRAWToARGB = { +static uvec8 kShuffleMaskRAWToARGB = { 2u, 1u, 0u, 12u, 5u, 4u, 3u, 13u, 8u, 7u, 6u, 14u, 11u, 10u, 9u, 15u }; // Shuffle table for converting ARGB to RGB24. -CONST uvec8 kShuffleMaskARGBToRGB24 = { +static uvec8 kShuffleMaskARGBToRGB24 = { 0u, 1u, 2u, 4u, 5u, 6u, 8u, 9u, 10u, 12u, 13u, 14u, 128u, 128u, 128u, 128u }; // Shuffle table for converting ARGB to RAW. -CONST uvec8 kShuffleMaskARGBToRAW = { +static uvec8 kShuffleMaskARGBToRAW = { 2u, 1u, 0u, 6u, 5u, 4u, 10u, 9u, 8u, 14u, 13u, 12u, 128u, 128u, 128u, 128u }; // Shuffle table for converting ARGBToRGB24 for I422ToRGB24. First 8 + next 4 -CONST uvec8 kShuffleMaskARGBToRGB24_0 = { +static uvec8 kShuffleMaskARGBToRGB24_0 = { 0u, 1u, 2u, 4u, 5u, 6u, 8u, 9u, 128u, 128u, 128u, 128u, 10u, 12u, 13u, 14u }; // Shuffle table for converting ARGB to RAW. -CONST uvec8 kShuffleMaskARGBToRAW_0 = { +static uvec8 kShuffleMaskARGBToRAW_0 = { 2u, 1u, 0u, 6u, 5u, 4u, 10u, 9u, 128u, 128u, 128u, 128u, 8u, 14u, 13u, 12u }; @@ -1901,7 +1893,7 @@ struct { vec8 kVUToB; // 128 vec8 kVUToG; // 144 vec8 kVUToR; // 160 -} CONST SIMD_ALIGNED(kYuvConstants) = { +} static SIMD_ALIGNED(kYuvConstants) = { { UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB }, { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }, { UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR }, @@ -2728,7 +2720,7 @@ void YToARGBRow_SSE2(const uint8* y_buf, #ifdef HAS_MIRRORROW_SSSE3 // Shuffle table for reversing the bytes. -CONST uvec8 kShuffleMirror = { +static uvec8 kShuffleMirror = { 15u, 14u, 13u, 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; @@ -2790,7 +2782,7 @@ void MirrorRow_SSE2(const uint8* src, uint8* dst, int width) { #ifdef HAS_MIRRORROW_UV_SSSE3 // Shuffle table for reversing the bytes of UV channels. -CONST uvec8 kShuffleMirrorUV = { +static uvec8 kShuffleMirrorUV = { 14u, 12u, 10u, 8u, 6u, 4u, 2u, 0u, 15u, 13u, 11u, 9u, 7u, 5u, 3u, 1u }; void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v, @@ -2825,7 +2817,7 @@ void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v, #ifdef HAS_ARGBMIRRORROW_SSSE3 // Shuffle table for reversing the bytes. -CONST uvec8 kARGBShuffleMirror = { +static uvec8 kARGBShuffleMirror = { 12u, 13u, 14u, 15u, 8u, 9u, 10u, 11u, 4u, 5u, 6u, 7u, 0u, 1u, 2u, 3u }; @@ -3605,7 +3597,7 @@ void ARGBBlendRow_SSE2(const uint8* src_argb0, const uint8* src_argb1, #ifdef HAS_ARGBBLENDROW_SSSE3 // Shuffle table for isolating alpha. -CONST uvec8 kShuffleAlpha = { +static uvec8 kShuffleAlpha = { 3u, 0x80, 3u, 0x80, 7u, 0x80, 7u, 0x80, 11u, 0x80, 11u, 0x80, 15u, 0x80, 15u, 0x80 }; @@ -3814,10 +3806,10 @@ void ARGBAttenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width) { #ifdef HAS_ARGBATTENUATEROW_SSSE3 // Shuffle table duplicating alpha -CONST uvec8 kShuffleAlpha0 = { +static uvec8 kShuffleAlpha0 = { 3u, 3u, 3u, 3u, 3u, 3u, 128u, 128u, 7u, 7u, 7u, 7u, 7u, 7u, 128u, 128u, }; -CONST uvec8 kShuffleAlpha1 = { +static uvec8 kShuffleAlpha1 = { 11u, 11u, 11u, 11u, 11u, 11u, 128u, 128u, 15u, 15u, 15u, 15u, 15u, 15u, 128u, 128u, }; @@ -3971,15 +3963,15 @@ void ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width) { // g = (r * 45 + g * 88 + b * 22) >> 7 // r = (r * 50 + g * 98 + b * 24) >> 7 // Constant for ARGB color to sepia tone -CONST vec8 kARGBToSepiaB = { +static vec8 kARGBToSepiaB = { 17, 68, 35, 0, 17, 68, 35, 0, 17, 68, 35, 0, 17, 68, 35, 0 }; -CONST vec8 kARGBToSepiaG = { +static vec8 kARGBToSepiaG = { 22, 88, 45, 0, 22, 88, 45, 0, 22, 88, 45, 0, 22, 88, 45, 0 }; -CONST vec8 kARGBToSepiaR = { +static vec8 kARGBToSepiaR = { 24, 98, 50, 0, 24, 98, 50, 0, 24, 98, 50, 0, 24, 98, 50, 0 }; diff --git a/source/row_win.cc b/source/row_win.cc index 025a82562..2dcaba4fe 100644 --- a/source/row_win.cc +++ b/source/row_win.cc @@ -21,130 +21,130 @@ extern "C" { #ifdef HAS_ARGBTOYROW_SSSE3 // Constants for ARGB. -static const vec8 kARGBToY = { +static vec8 kARGBToY = { 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0 }; // JPeg full range. -static const vec8 kARGBToYJ = { +static vec8 kARGBToYJ = { 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0 }; -static const lvec8 kARGBToY_AVX = { +static lvec8 kARGBToY_AVX = { 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0 }; -static const lvec8 kARGBToYJ_AVX = { +static lvec8 kARGBToYJ_AVX = { 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0, 15, 75, 38, 0 }; -static const vec8 kARGBToU = { +static vec8 kARGBToU = { 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0 }; -static const vec8 kARGBToUJ = { +static vec8 kARGBToUJ = { 127, -84, -43, 0, 127, -84, -43, 0, 127, -84, -43, 0, 127, -84, -43, 0 }; // TODO(fbarchard): Rename kARGBToU_AVX to kARGBToU and use for SSSE3 version. -static const lvec8 kARGBToU_AVX = { +static lvec8 kARGBToU_AVX = { 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0 }; -static const vec8 kARGBToV = { +static vec8 kARGBToV = { -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, }; -static const vec8 kARGBToVJ = { +static vec8 kARGBToVJ = { -20, -107, 127, 0, -20, -107, 127, 0, -20, -107, 127, 0, -20, -107, 127, 0 }; -static const lvec8 kARGBToV_AVX = { +static lvec8 kARGBToV_AVX = { -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0 }; // vpermd for vphaddw + vpackuswb vpermd. -static const lvec32 kShufARGBToY_AVX = { +static lvec32 kShufARGBToY_AVX = { 0, 4, 1, 5, 2, 6, 3, 7 }; // vpshufb for vphaddw + vpackuswb packed to shorts. -static const lvec8 kShufARGBToUV_AVX = { +static lvec8 kShufARGBToUV_AVX = { 0, 1, 8, 9, 2, 3, 10, 11, 4, 5, 12, 13, 6, 7, 14, 15, 0, 1, 8, 9, 2, 3, 10, 11, 4, 5, 12, 13, 6, 7, 14, 15, }; // Constants for BGRA. -static const vec8 kBGRAToY = { +static vec8 kBGRAToY = { 0, 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13 }; -static const vec8 kBGRAToU = { +static vec8 kBGRAToU = { 0, -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112 }; -static const vec8 kBGRAToV = { +static vec8 kBGRAToV = { 0, 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18 }; // Constants for ABGR. -static const vec8 kABGRToY = { +static vec8 kABGRToY = { 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13, 0, 33, 65, 13, 0 }; -static const vec8 kABGRToU = { +static vec8 kABGRToU = { -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112, 0, -38, -74, 112, 0 }; -static const vec8 kABGRToV = { +static vec8 kABGRToV = { 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18, 0, 112, -94, -18, 0 }; // Constants for RGBA. -static const vec8 kRGBAToY = { +static vec8 kRGBAToY = { 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33, 0, 13, 65, 33 }; -static const vec8 kRGBAToU = { +static vec8 kRGBAToU = { 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38, 0, 112, -74, -38 }; -static const vec8 kRGBAToV = { +static vec8 kRGBAToV = { 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112, 0, -18, -94, 112 }; -static const uvec8 kAddY16 = { +static uvec8 kAddY16 = { 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u }; -static const vec16 kAddYJ64 = { +static vec16 kAddYJ64 = { 64, 64, 64, 64, 64, 64, 64, 64 }; -static const lvec16 kAddYJ64_AVX = { +static lvec16 kAddYJ64_AVX = { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }; -static const ulvec8 kAddY16_AVX = { +static ulvec8 kAddY16_AVX = { 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u, 16u }; -static const uvec8 kAddUV128 = { +static uvec8 kAddUV128 = { 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u }; -static const uvec16 kAddUVJ128 = { +static uvec16 kAddUVJ128 = { 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u, 0x8080u }; -static const ulvec8 kAddUV128_AVX = { +static ulvec8 kAddUV128_AVX = { 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, 128u, @@ -152,32 +152,32 @@ static const ulvec8 kAddUV128_AVX = { }; // Shuffle table for converting RGB24 to ARGB. -static const uvec8 kShuffleMaskRGB24ToARGB = { +static uvec8 kShuffleMaskRGB24ToARGB = { 0u, 1u, 2u, 12u, 3u, 4u, 5u, 13u, 6u, 7u, 8u, 14u, 9u, 10u, 11u, 15u }; // Shuffle table for converting RAW to ARGB. -static const uvec8 kShuffleMaskRAWToARGB = { +static uvec8 kShuffleMaskRAWToARGB = { 2u, 1u, 0u, 12u, 5u, 4u, 3u, 13u, 8u, 7u, 6u, 14u, 11u, 10u, 9u, 15u }; // Shuffle table for converting ARGB to RGB24. -static const uvec8 kShuffleMaskARGBToRGB24 = { +static uvec8 kShuffleMaskARGBToRGB24 = { 0u, 1u, 2u, 4u, 5u, 6u, 8u, 9u, 10u, 12u, 13u, 14u, 128u, 128u, 128u, 128u }; // Shuffle table for converting ARGB to RAW. -static const uvec8 kShuffleMaskARGBToRAW = { +static uvec8 kShuffleMaskARGBToRAW = { 2u, 1u, 0u, 6u, 5u, 4u, 10u, 9u, 8u, 14u, 13u, 12u, 128u, 128u, 128u, 128u }; // Shuffle table for converting ARGBToRGB24 for I422ToRGB24. First 8 + next 4 -static const uvec8 kShuffleMaskARGBToRGB24_0 = { +static uvec8 kShuffleMaskARGBToRGB24_0 = { 0u, 1u, 2u, 4u, 5u, 6u, 8u, 9u, 128u, 128u, 128u, 128u, 10u, 12u, 13u, 14u }; // Shuffle table for converting ARGB to RAW. -static const uvec8 kShuffleMaskARGBToRAW_0 = { +static uvec8 kShuffleMaskARGBToRAW_0 = { 2u, 1u, 0u, 6u, 5u, 4u, 10u, 9u, 128u, 128u, 128u, 128u, 8u, 14u, 13u, 12u }; @@ -2085,31 +2085,31 @@ void RGBAToUVRow_Unaligned_SSSE3(const uint8* src_argb0, int src_stride_argb, #ifdef HAS_I422TOARGBROW_AVX2 -static const lvec8 kUVToB_AVX = { +static lvec8 kUVToB_AVX = { UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB }; -static const lvec8 kUVToR_AVX = { +static lvec8 kUVToR_AVX = { UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR }; -static const lvec8 kUVToG_AVX = { +static lvec8 kUVToG_AVX = { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }; -static const lvec16 kYToRgb_AVX = { +static lvec16 kYToRgb_AVX = { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }; -static const lvec16 kYSub16_AVX = { +static lvec16 kYSub16_AVX = { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 }; -static const lvec16 kUVBiasB_AVX = { +static lvec16 kUVBiasB_AVX = { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB }; -static const lvec16 kUVBiasG_AVX = { +static lvec16 kUVBiasG_AVX = { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG }; -static const lvec16 kUVBiasR_AVX = { +static lvec16 kUVBiasR_AVX = { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR }; @@ -2188,35 +2188,35 @@ void I422ToARGBRow_AVX2(const uint8* y_buf, #ifdef HAS_I422TOARGBROW_SSSE3 -static const vec8 kUVToB = { +static vec8 kUVToB = { UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB }; -static const vec8 kUVToR = { +static vec8 kUVToR = { UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR }; -static const vec8 kUVToG = { +static vec8 kUVToG = { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG }; -static const vec8 kVUToB = { +static vec8 kVUToB = { VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, VB, UB, }; -static const vec8 kVUToR = { +static vec8 kVUToR = { VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, VR, UR, }; -static const vec8 kVUToG = { +static vec8 kVUToG = { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, }; -static const vec16 kYToRgb = { YG, YG, YG, YG, YG, YG, YG, YG }; -static const vec16 kYSub16 = { 16, 16, 16, 16, 16, 16, 16, 16 }; -static const vec16 kUVBiasB = { BB, BB, BB, BB, BB, BB, BB, BB }; -static const vec16 kUVBiasG = { BG, BG, BG, BG, BG, BG, BG, BG }; -static const vec16 kUVBiasR = { BR, BR, BR, BR, BR, BR, BR, BR }; +static vec16 kYToRgb = { YG, YG, YG, YG, YG, YG, YG, YG }; +static vec16 kYSub16 = { 16, 16, 16, 16, 16, 16, 16, 16 }; +static vec16 kUVBiasB = { BB, BB, BB, BB, BB, BB, BB, BB }; +static vec16 kUVBiasG = { BG, BG, BG, BG, BG, BG, BG, BG }; +static vec16 kUVBiasR = { BR, BR, BR, BR, BR, BR, BR, BR }; // TODO(fbarchard): Read that does half size on Y and treats 420 as 444. @@ -3187,7 +3187,7 @@ void YToARGBRow_SSE2(const uint8* y_buf, #ifdef HAS_MIRRORROW_SSSE3 // Shuffle table for reversing the bytes. -static const uvec8 kShuffleMirror = { +static uvec8 kShuffleMirror = { 15u, 14u, 13u, 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; @@ -3215,7 +3215,7 @@ void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width) { #ifdef HAS_MIRRORROW_AVX2 // Shuffle table for reversing the bytes. -static const ulvec8 kShuffleMirror_AVX2 = { +static ulvec8 kShuffleMirror_AVX2 = { 15u, 14u, 13u, 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u, 15u, 14u, 13u, 12u, 11u, 10u, 9u, 8u, 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; @@ -3276,7 +3276,7 @@ void MirrorRow_SSE2(const uint8* src, uint8* dst, int width) { #ifdef HAS_MIRRORROW_UV_SSSE3 // Shuffle table for reversing the bytes of UV channels. -static const uvec8 kShuffleMirrorUV = { +static uvec8 kShuffleMirrorUV = { 14u, 12u, 10u, 8u, 6u, 4u, 2u, 0u, 15u, 13u, 11u, 9u, 7u, 5u, 3u, 1u }; @@ -3312,7 +3312,7 @@ void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v, #ifdef HAS_ARGBMIRRORROW_SSSE3 // Shuffle table for reversing the bytes. -static const uvec8 kARGBShuffleMirror = { +static uvec8 kARGBShuffleMirror = { 12u, 13u, 14u, 15u, 8u, 9u, 10u, 11u, 4u, 5u, 6u, 7u, 0u, 1u, 2u, 3u }; @@ -3340,7 +3340,7 @@ void ARGBMirrorRow_SSSE3(const uint8* src, uint8* dst, int width) { #ifdef HAS_ARGBMIRRORROW_AVX2 // Shuffle table for reversing the bytes. -static const ulvec32 kARGBShuffleMirror_AVX2 = { +static ulvec32 kARGBShuffleMirror_AVX2 = { 7u, 6u, 5u, 4u, 3u, 2u, 1u, 0u }; @@ -4458,7 +4458,7 @@ void ARGBBlendRow_SSE2(const uint8* src_argb0, const uint8* src_argb1, #ifdef HAS_ARGBBLENDROW_SSSE3 // Shuffle table for isolating alpha. -static const uvec8 kShuffleAlpha = { +static uvec8 kShuffleAlpha = { 3u, 0x80, 3u, 0x80, 7u, 0x80, 7u, 0x80, 11u, 0x80, 11u, 0x80, 15u, 0x80, 15u, 0x80 }; @@ -4661,10 +4661,10 @@ void ARGBAttenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width) { #ifdef HAS_ARGBATTENUATEROW_SSSE3 // Shuffle table duplicating alpha. -static const uvec8 kShuffleAlpha0 = { +static uvec8 kShuffleAlpha0 = { 3u, 3u, 3u, 3u, 3u, 3u, 128u, 128u, 7u, 7u, 7u, 7u, 7u, 7u, 128u, 128u, }; -static const uvec8 kShuffleAlpha1 = { +static uvec8 kShuffleAlpha1 = { 11u, 11u, 11u, 11u, 11u, 11u, 128u, 128u, 15u, 15u, 15u, 15u, 15u, 15u, 128u, 128u, }; @@ -4710,7 +4710,7 @@ void ARGBAttenuateRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width) { #ifdef HAS_ARGBATTENUATEROW_AVX2 // Shuffle table duplicating alpha. -static const ulvec8 kShuffleAlpha_AVX2 = { +static ulvec8 kShuffleAlpha_AVX2 = { 6u, 7u, 6u, 7u, 6u, 7u, 128u, 128u, 14u, 15u, 14u, 15u, 14u, 15u, 128u, 128u, 6u, 7u, 6u, 7u, 6u, 7u, 128u, 128u, @@ -4804,7 +4804,7 @@ void ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, #ifdef HAS_ARGBUNATTENUATEROW_AVX2 // Shuffle table duplicating alpha. -static const ulvec8 kUnattenShuffleAlpha_AVX2 = { +static ulvec8 kUnattenShuffleAlpha_AVX2 = { 0u, 1u, 0u, 1u, 0u, 1u, 6u, 7u, 8u, 9u, 8u, 9u, 8u, 9u, 14u, 15, 0u, 1u, 0u, 1u, 0u, 1u, 6u, 7u, 8u, 9u, 8u, 9u, 8u, 9u, 14u, 15, }; @@ -4961,15 +4961,15 @@ void ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width) { // g = (r * 45 + g * 88 + b * 22) >> 7 // r = (r * 50 + g * 98 + b * 24) >> 7 // Constant for ARGB color to sepia tone. -static const vec8 kARGBToSepiaB = { +static vec8 kARGBToSepiaB = { 17, 68, 35, 0, 17, 68, 35, 0, 17, 68, 35, 0, 17, 68, 35, 0 }; -static const vec8 kARGBToSepiaG = { +static vec8 kARGBToSepiaG = { 22, 88, 45, 0, 22, 88, 45, 0, 22, 88, 45, 0, 22, 88, 45, 0 }; -static const vec8 kARGBToSepiaR = { +static vec8 kARGBToSepiaR = { 24, 98, 50, 0, 24, 98, 50, 0, 24, 98, 50, 0, 24, 98, 50, 0 }; diff --git a/source/scale.cc b/source/scale.cc index c7b0d01db..99c528b52 100644 --- a/source/scale.cc +++ b/source/scale.cc @@ -96,86 +96,79 @@ void ScaleRowDown38_2_Box_NEON(const uint8* src_ptr, // Constants for SSSE3 code #elif !defined(LIBYUV_DISABLE_X86) && \ (defined(_M_IX86) || defined(__i386__) || defined(__x86_64__)) -// GCC 4.2 on OSX has link error when passing static or const to inline. -// TODO(fbarchard): Use static const when gcc 4.2 support is dropped. -#ifdef __APPLE__ -#define CONST -#else -#define CONST static const -#endif // Offsets for source bytes 0 to 9 -CONST uvec8 kShuf0 = +static uvec8 kShuf0 = { 0, 1, 3, 4, 5, 7, 8, 9, 128, 128, 128, 128, 128, 128, 128, 128 }; // Offsets for source bytes 11 to 20 with 8 subtracted = 3 to 12. -CONST uvec8 kShuf1 = +static uvec8 kShuf1 = { 3, 4, 5, 7, 8, 9, 11, 12, 128, 128, 128, 128, 128, 128, 128, 128 }; // Offsets for source bytes 21 to 31 with 16 subtracted = 5 to 31. -CONST uvec8 kShuf2 = +static uvec8 kShuf2 = { 5, 7, 8, 9, 11, 12, 13, 15, 128, 128, 128, 128, 128, 128, 128, 128 }; // Offsets for source bytes 0 to 10 -CONST uvec8 kShuf01 = +static uvec8 kShuf01 = { 0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10 }; // Offsets for source bytes 10 to 21 with 8 subtracted = 3 to 13. -CONST uvec8 kShuf11 = +static uvec8 kShuf11 = { 2, 3, 4, 5, 5, 6, 6, 7, 8, 9, 9, 10, 10, 11, 12, 13 }; // Offsets for source bytes 21 to 31 with 16 subtracted = 5 to 31. -CONST uvec8 kShuf21 = +static uvec8 kShuf21 = { 5, 6, 6, 7, 8, 9, 9, 10, 10, 11, 12, 13, 13, 14, 14, 15 }; // Coefficients for source bytes 0 to 10 -CONST uvec8 kMadd01 = +static uvec8 kMadd01 = { 3, 1, 2, 2, 1, 3, 3, 1, 2, 2, 1, 3, 3, 1, 2, 2 }; // Coefficients for source bytes 10 to 21 -CONST uvec8 kMadd11 = +static uvec8 kMadd11 = { 1, 3, 3, 1, 2, 2, 1, 3, 3, 1, 2, 2, 1, 3, 3, 1 }; // Coefficients for source bytes 21 to 31 -CONST uvec8 kMadd21 = +static uvec8 kMadd21 = { 2, 2, 1, 3, 3, 1, 2, 2, 1, 3, 3, 1, 2, 2, 1, 3 }; // Coefficients for source bytes 21 to 31 -CONST vec16 kRound34 = +static vec16 kRound34 = { 2, 2, 2, 2, 2, 2, 2, 2 }; -CONST uvec8 kShuf38a = +static uvec8 kShuf38a = { 0, 3, 6, 8, 11, 14, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }; -CONST uvec8 kShuf38b = +static uvec8 kShuf38b = { 128, 128, 128, 128, 128, 128, 0, 3, 6, 8, 11, 14, 128, 128, 128, 128 }; // Arrange words 0,3,6 into 0,1,2 -CONST uvec8 kShufAc = +static uvec8 kShufAc = { 0, 1, 6, 7, 12, 13, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }; // Arrange words 0,3,6 into 3,4,5 -CONST uvec8 kShufAc3 = +static uvec8 kShufAc3 = { 128, 128, 128, 128, 128, 128, 0, 1, 6, 7, 12, 13, 128, 128, 128, 128 }; // Scaling values for boxes of 3x3 and 2x3 -CONST uvec16 kScaleAc33 = +static uvec16 kScaleAc33 = { 65536 / 9, 65536 / 9, 65536 / 6, 65536 / 9, 65536 / 9, 65536 / 6, 0, 0 }; // Arrange first value for pixels 0,1,2,3,4,5 -CONST uvec8 kShufAb0 = +static uvec8 kShufAb0 = { 0, 128, 3, 128, 6, 128, 8, 128, 11, 128, 14, 128, 128, 128, 128, 128 }; // Arrange second value for pixels 0,1,2,3,4,5 -CONST uvec8 kShufAb1 = +static uvec8 kShufAb1 = { 1, 128, 4, 128, 7, 128, 9, 128, 12, 128, 15, 128, 128, 128, 128, 128 }; // Arrange third value for pixels 0,1,2,3,4,5 -CONST uvec8 kShufAb2 = +static uvec8 kShufAb2 = { 2, 128, 5, 128, 128, 128, 10, 128, 13, 128, 128, 128, 128, 128, 128, 128 }; // Scaling values for boxes of 3x2 and 2x2 -CONST uvec16 kScaleAb2 = +static uvec16 kScaleAb2 = { 65536 / 3, 65536 / 3, 65536 / 2, 65536 / 3, 65536 / 3, 65536 / 2, 0, 0 }; #endif diff --git a/source/scale_argb.cc b/source/scale_argb.cc index 32ac11ae4..7d87b86c7 100644 --- a/source/scale_argb.cc +++ b/source/scale_argb.cc @@ -256,13 +256,13 @@ static void ScaleARGBCols_SSE2(uint8* dst_argb, const uint8* src_argb, // TODO(fbarchard): Port to Neon // Shuffle table for arranging 2 pixels into pairs for pmaddubsw -static const uvec8 kShuffleColARGB = { +static uvec8 kShuffleColARGB = { 0u, 4u, 1u, 5u, 2u, 6u, 3u, 7u, // bbggrraa 1st pixel 8u, 12u, 9u, 13u, 10u, 14u, 11u, 15u // bbggrraa 2nd pixel }; // Shuffle table for duplicating 2 fractions into 8 bytes each -static const uvec8 kShuffleFractions = { +static uvec8 kShuffleFractions = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, }; @@ -534,20 +534,14 @@ static void ScaleARGBCols_SSE2(uint8* dst_argb, const uint8* src_argb, ); } -#ifdef __APPLE__ -#define CONST -#else -#define CONST static const -#endif - // Shuffle table for arranging 2 pixels into pairs for pmaddubsw -CONST uvec8 kShuffleColARGB = { +static uvec8 kShuffleColARGB = { 0u, 4u, 1u, 5u, 2u, 6u, 3u, 7u, // bbggrraa 1st pixel 8u, 12u, 9u, 13u, 10u, 14u, 11u, 15u // bbggrraa 2nd pixel }; // Shuffle table for duplicating 2 fractions into 8 bytes each -CONST uvec8 kShuffleFractions = { +static uvec8 kShuffleFractions = { 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, 4u, }; diff --git a/source/scale_mips.cc b/source/scale_mips.cc index cfd48b5b0..c96c27d20 100644 --- a/source/scale_mips.cc +++ b/source/scale_mips.cc @@ -176,7 +176,7 @@ void ScaleRowDown2Box_MIPS_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride, } void ScaleRowDown4_MIPS_DSPR2(const uint8* src_ptr, ptrdiff_t /* src_stride */, - uint8* dst, int dst_width) { + uint8* dst, int dst_width) { __asm__ __volatile__ ( ".set push \n" ".set noreorder \n" @@ -231,7 +231,7 @@ void ScaleRowDown4_MIPS_DSPR2(const uint8* src_ptr, ptrdiff_t /* src_stride */, } void ScaleRowDown4Box_MIPS_DSPR2(const uint8* src_ptr, ptrdiff_t src_stride, - uint8* dst, int dst_width) { + uint8* dst, int dst_width) { intptr_t stride = src_stride; const uint8* s1 = src_ptr + stride; const uint8* s2 = s1 + stride; diff --git a/source/scale_neon.cc b/source/scale_neon.cc index a370349a7..5912f5251 100644 --- a/source/scale_neon.cc +++ b/source/scale_neon.cc @@ -226,14 +226,14 @@ void ScaleRowDown34_1_Box_NEON(const uint8* src_ptr, } #define HAS_SCALEROWDOWN38_NEON -const uvec8 kShuf38 = +static uvec8 kShuf38 = { 0, 3, 6, 8, 11, 14, 16, 19, 22, 24, 27, 30, 0, 0, 0, 0 }; -const uvec8 kShuf38_2 = +static uvec8 kShuf38_2 = { 0, 8, 16, 2, 10, 17, 4, 12, 18, 6, 14, 19, 0, 0, 0, 0 }; -const vec16 kMult38_Div6 = +static vec16 kMult38_Div6 = { 65536 / 12, 65536 / 12, 65536 / 12, 65536 / 12, 65536 / 12, 65536 / 12, 65536 / 12, 65536 / 12 }; -const vec16 kMult38_Div9 = +static vec16 kMult38_Div9 = { 65536 / 18, 65536 / 18, 65536 / 18, 65536 / 18, 65536 / 18, 65536 / 18, 65536 / 18, 65536 / 18 };