mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 01:06:46 +08:00
AVX10 cpuid detect added
Replace unused popcount feature bit Bug: libyuv:911 Change-Id: Icd88fcc732751d39b0950d5f09a58bc9ac2c4e30 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5179911 Reviewed-by: richard winterton <rrwinterton@gmail.com> Commit-Queue: Frank Barchard <fbarchard@chromium.org>
This commit is contained in:
parent
ee53a66c5c
commit
af6ac8265b
@ -1,6 +1,6 @@
|
|||||||
Name: libyuv
|
Name: libyuv
|
||||||
URL: https://chromium.googlesource.com/libyuv/libyuv/
|
URL: https://chromium.googlesource.com/libyuv/libyuv/
|
||||||
Version: 1882
|
Version: 1883
|
||||||
License: BSD
|
License: BSD
|
||||||
License File: LICENSE
|
License File: LICENSE
|
||||||
Shipped: yes
|
Shipped: yes
|
||||||
|
|||||||
@ -31,7 +31,7 @@ static const int kCpuHasX86 = 0x10;
|
|||||||
static const int kCpuHasSSE2 = 0x20;
|
static const int kCpuHasSSE2 = 0x20;
|
||||||
static const int kCpuHasSSSE3 = 0x40;
|
static const int kCpuHasSSSE3 = 0x40;
|
||||||
static const int kCpuHasSSE41 = 0x80;
|
static const int kCpuHasSSE41 = 0x80;
|
||||||
static const int kCpuHasSSE42 = 0x100; // unused at this time.
|
static const int kCpuHasSSE42 = 0x100;
|
||||||
static const int kCpuHasAVX = 0x200;
|
static const int kCpuHasAVX = 0x200;
|
||||||
static const int kCpuHasAVX2 = 0x400;
|
static const int kCpuHasAVX2 = 0x400;
|
||||||
static const int kCpuHasERMS = 0x800;
|
static const int kCpuHasERMS = 0x800;
|
||||||
@ -43,7 +43,7 @@ static const int kCpuHasAVX512VNNI = 0x10000;
|
|||||||
static const int kCpuHasAVX512VBMI = 0x20000;
|
static const int kCpuHasAVX512VBMI = 0x20000;
|
||||||
static const int kCpuHasAVX512VBMI2 = 0x40000;
|
static const int kCpuHasAVX512VBMI2 = 0x40000;
|
||||||
static const int kCpuHasAVX512VBITALG = 0x80000;
|
static const int kCpuHasAVX512VBITALG = 0x80000;
|
||||||
static const int kCpuHasAVX512VPOPCNTDQ = 0x100000;
|
static const int kCpuHasAVX10 = 0x100000;
|
||||||
static const int kCpuHasAVXVNNI = 0x200000;
|
static const int kCpuHasAVXVNNI = 0x200000;
|
||||||
static const int kCpuHasAVXVNNIINT8 = 0x400000;
|
static const int kCpuHasAVXVNNIINT8 = 0x400000;
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,6 @@
|
|||||||
#ifndef INCLUDE_LIBYUV_VERSION_H_
|
#ifndef INCLUDE_LIBYUV_VERSION_H_
|
||||||
#define INCLUDE_LIBYUV_VERSION_H_
|
#define INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|
||||||
#define LIBYUV_VERSION 1882
|
#define LIBYUV_VERSION 1883
|
||||||
|
|
||||||
#endif // INCLUDE_LIBYUV_VERSION_H_
|
#endif // INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|||||||
@ -322,7 +322,7 @@ static SAFEBUFFERS int GetCpuFlags(void) {
|
|||||||
cpu_info |= (cpu_info7[2] & 0x00000040) ? kCpuHasAVX512VBMI2 : 0;
|
cpu_info |= (cpu_info7[2] & 0x00000040) ? kCpuHasAVX512VBMI2 : 0;
|
||||||
cpu_info |= (cpu_info7[2] & 0x00000800) ? kCpuHasAVX512VNNI : 0;
|
cpu_info |= (cpu_info7[2] & 0x00000800) ? kCpuHasAVX512VNNI : 0;
|
||||||
cpu_info |= (cpu_info7[2] & 0x00001000) ? kCpuHasAVX512VBITALG : 0;
|
cpu_info |= (cpu_info7[2] & 0x00001000) ? kCpuHasAVX512VBITALG : 0;
|
||||||
cpu_info |= (cpu_info7[2] & 0x00004000) ? kCpuHasAVX512VPOPCNTDQ : 0;
|
cpu_info |= (cpu_einfo7[3] & 0x00080000) ? kCpuHasAVX10 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -543,7 +543,8 @@ void I422ToARGB4444Row_LASX(const uint8_t* src_y,
|
|||||||
__m256i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
|
__m256i vec_yb, vec_yg, vec_ub, vec_vr, vec_ug, vec_vg;
|
||||||
__m256i vec_ubvr, vec_ugvg;
|
__m256i vec_ubvr, vec_ugvg;
|
||||||
__m256i const_0x80 = __lasx_xvldi(0x80);
|
__m256i const_0x80 = __lasx_xvldi(0x80);
|
||||||
__m256i alpha = (__m256i)v4u64{0xF000F000F000F000, 0xF000F000F000F000, 0xF000F000F000F000, 0xF000F000F000F000};
|
__m256i alpha = (__m256i)v4u64{0xF000F000F000F000, 0xF000F000F000F000,
|
||||||
|
0xF000F000F000F000, 0xF000F000F000F000};
|
||||||
__m256i mask = {0x00F000F000F000F0, 0x00F000F000F000F0, 0x00F000F000F000F0,
|
__m256i mask = {0x00F000F000F000F0, 0x00F000F000F000F0, 0x00F000F000F000F0,
|
||||||
0x00F000F000F000F0};
|
0x00F000F000F000F0};
|
||||||
|
|
||||||
|
|||||||
@ -783,7 +783,6 @@ TESTATOA(AB64, uint16_t, 4, 4, 1, ABGR, uint8_t, 4, 4, 1)
|
|||||||
TESTATOA(AR64, uint16_t, 4, 4, 1, AB64, uint16_t, 4, 4, 1)
|
TESTATOA(AR64, uint16_t, 4, 4, 1, AB64, uint16_t, 4, 4, 1)
|
||||||
TESTATOA(AB64, uint16_t, 4, 4, 1, AR64, uint16_t, 4, 4, 1)
|
TESTATOA(AB64, uint16_t, 4, 4, 1, AR64, uint16_t, 4, 4, 1)
|
||||||
|
|
||||||
|
|
||||||
#define TESTATOBDI(FMT_A, BPP_A, STRIDE_A, HEIGHT_A, FMT_B, BPP_B, STRIDE_B, \
|
#define TESTATOBDI(FMT_A, BPP_A, STRIDE_A, HEIGHT_A, FMT_B, BPP_B, STRIDE_B, \
|
||||||
HEIGHT_B, W1280, N, NEG, OFF) \
|
HEIGHT_B, W1280, N, NEG, OFF) \
|
||||||
TEST_F(LibYUVConvertTest, FMT_A##To##FMT_B##Dither##N) { \
|
TEST_F(LibYUVConvertTest, FMT_A##To##FMT_B##Dither##N) { \
|
||||||
|
|||||||
@ -53,7 +53,7 @@ TEST_F(LibYUVBaseTest, TestCpuHas) {
|
|||||||
int has_avx512vbmi = TestCpuFlag(kCpuHasAVX512VBMI);
|
int has_avx512vbmi = TestCpuFlag(kCpuHasAVX512VBMI);
|
||||||
int has_avx512vbmi2 = TestCpuFlag(kCpuHasAVX512VBMI2);
|
int has_avx512vbmi2 = TestCpuFlag(kCpuHasAVX512VBMI2);
|
||||||
int has_avx512vbitalg = TestCpuFlag(kCpuHasAVX512VBITALG);
|
int has_avx512vbitalg = TestCpuFlag(kCpuHasAVX512VBITALG);
|
||||||
int has_avx512vpopcntdq = TestCpuFlag(kCpuHasAVX512VPOPCNTDQ);
|
int has_avx10 = TestCpuFlag(kCpuHasAVX10);
|
||||||
int has_avxvnni = TestCpuFlag(kCpuHasAVXVNNI);
|
int has_avxvnni = TestCpuFlag(kCpuHasAVXVNNI);
|
||||||
int has_avxvnniint8 = TestCpuFlag(kCpuHasAVXVNNIINT8);
|
int has_avxvnniint8 = TestCpuFlag(kCpuHasAVXVNNIINT8);
|
||||||
printf("Has X86 0x%x\n", has_x86);
|
printf("Has X86 0x%x\n", has_x86);
|
||||||
@ -72,7 +72,7 @@ TEST_F(LibYUVBaseTest, TestCpuHas) {
|
|||||||
printf("Has AVX512VBMI 0x%x\n", has_avx512vbmi);
|
printf("Has AVX512VBMI 0x%x\n", has_avx512vbmi);
|
||||||
printf("Has AVX512VBMI2 0x%x\n", has_avx512vbmi2);
|
printf("Has AVX512VBMI2 0x%x\n", has_avx512vbmi2);
|
||||||
printf("Has AVX512VBITALG 0x%x\n", has_avx512vbitalg);
|
printf("Has AVX512VBITALG 0x%x\n", has_avx512vbitalg);
|
||||||
printf("Has AVX512VPOPCNTDQ 0x%x\n", has_avx512vpopcntdq);
|
printf("Has AVX10 0x%x\n", has_avx10);
|
||||||
printf("HAS AVXVNNI 0x%x\n", has_avxvnni);
|
printf("HAS AVXVNNI 0x%x\n", has_avxvnni);
|
||||||
printf("Has AVXVNNIINT8 0x%x\n", has_avxvnniint8);
|
printf("Has AVXVNNIINT8 0x%x\n", has_avxvnniint8);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -144,8 +144,8 @@ int TestCpuEnv(int cpu_info) {
|
|||||||
if (TestEnv("LIBYUV_DISABLE_AVX512VBITALG")) {
|
if (TestEnv("LIBYUV_DISABLE_AVX512VBITALG")) {
|
||||||
cpu_info &= ~libyuv::kCpuHasAVX512VBITALG;
|
cpu_info &= ~libyuv::kCpuHasAVX512VBITALG;
|
||||||
}
|
}
|
||||||
if (TestEnv("LIBYUV_DISABLE_AVX512VPOPCNTDQ")) {
|
if (TestEnv("LIBYUV_DISABLE_AVX10")) {
|
||||||
cpu_info &= ~libyuv::kCpuHasAVX512VPOPCNTDQ;
|
cpu_info &= ~libyuv::kCpuHasAVX10;
|
||||||
}
|
}
|
||||||
if (TestEnv("LIBYUV_DISABLE_AVXVNNI")) {
|
if (TestEnv("LIBYUV_DISABLE_AVXVNNI")) {
|
||||||
cpu_info &= ~libyuv::kCpuHasAVXVNNI;
|
cpu_info &= ~libyuv::kCpuHasAVXVNNI;
|
||||||
|
|||||||
@ -102,7 +102,7 @@ int main(int argc, const char* argv[]) {
|
|||||||
int has_avx512vbmi = TestCpuFlag(kCpuHasAVX512VBMI);
|
int has_avx512vbmi = TestCpuFlag(kCpuHasAVX512VBMI);
|
||||||
int has_avx512vbmi2 = TestCpuFlag(kCpuHasAVX512VBMI2);
|
int has_avx512vbmi2 = TestCpuFlag(kCpuHasAVX512VBMI2);
|
||||||
int has_avx512vbitalg = TestCpuFlag(kCpuHasAVX512VBITALG);
|
int has_avx512vbitalg = TestCpuFlag(kCpuHasAVX512VBITALG);
|
||||||
int has_avx512vpopcntdq = TestCpuFlag(kCpuHasAVX512VPOPCNTDQ);
|
int has_avx10 = TestCpuFlag(kCpuHasAVX10);
|
||||||
int has_avxvnni = TestCpuFlag(kCpuHasAVXVNNI);
|
int has_avxvnni = TestCpuFlag(kCpuHasAVXVNNI);
|
||||||
int has_avxvnniint8 = TestCpuFlag(kCpuHasAVXVNNIINT8);
|
int has_avxvnniint8 = TestCpuFlag(kCpuHasAVXVNNIINT8);
|
||||||
printf("Has X86 0x%x\n", has_x86);
|
printf("Has X86 0x%x\n", has_x86);
|
||||||
@ -121,7 +121,7 @@ int main(int argc, const char* argv[]) {
|
|||||||
printf("Has AVX512VBMI 0x%x\n", has_avx512vbmi);
|
printf("Has AVX512VBMI 0x%x\n", has_avx512vbmi);
|
||||||
printf("Has AVX512VBMI2 0x%x\n", has_avx512vbmi2);
|
printf("Has AVX512VBMI2 0x%x\n", has_avx512vbmi2);
|
||||||
printf("Has AVX512VBITALG 0x%x\n", has_avx512vbitalg);
|
printf("Has AVX512VBITALG 0x%x\n", has_avx512vbitalg);
|
||||||
printf("Has AVX512VPOPCNTDQ 0x%x\n", has_avx512vpopcntdq);
|
printf("Has AVX10 0x%x\n", has_avx10);
|
||||||
printf("HAS AVXVNNI 0x%x\n", has_avxvnni);
|
printf("HAS AVXVNNI 0x%x\n", has_avxvnni);
|
||||||
printf("Has AVXVNNIINT8 0x%x\n", has_avxvnniint8);
|
printf("Has AVXVNNIINT8 0x%x\n", has_avxvnniint8);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user