diff --git a/bin/system_info/print_system_info.c b/bin/system_info/print_system_info.c index 5197e5d85..cfcfa00f5 100644 --- a/bin/system_info/print_system_info.c +++ b/bin/system_info/print_system_info.c @@ -44,6 +44,7 @@ int main(void) { fprintf(stdout, " 'arm_crc': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_ARM_CRC) ? "true" : "false"); fprintf(stdout, " 'arm_pmull': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_ARM_PMULL) ? "true" : "false"); fprintf(stdout, " 'arm_crypto': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_ARM_CRYPTO) ? "true" : "false"); + fprintf(stdout, " 'amd_ssse3': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_SSSE_3) ? "true" : "false"); fprintf(stdout, " 'amd_sse4_1': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_SSE_4_1) ? "true" : "false"); fprintf(stdout, " 'amd_sse4_2': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_SSE_4_2) ? "true" : "false"); fprintf(stdout, " 'amd_clmul': %s,\n", aws_cpu_has_feature(AWS_CPU_FEATURE_CLMUL) ? "true" : "false"); diff --git a/include/aws/common/cpuid.h b/include/aws/common/cpuid.h index 9ab7d5059..f139cfeda 100644 --- a/include/aws/common/cpuid.h +++ b/include/aws/common/cpuid.h @@ -13,6 +13,7 @@ enum aws_cpu_feature_name { AWS_CPU_FEATURE_CLMUL, AWS_CPU_FEATURE_SSE_4_1, AWS_CPU_FEATURE_SSE_4_2, + AWS_CPU_FEATURE_SSSE_3, AWS_CPU_FEATURE_AVX2, AWS_CPU_FEATURE_AVX512, AWS_CPU_FEATURE_ARM_CRC, diff --git a/source/arch/intel/cpuid.c b/source/arch/intel/cpuid.c index e50fa2cdf..060883e71 100644 --- a/source/arch/intel/cpuid.c +++ b/source/arch/intel/cpuid.c @@ -36,6 +36,7 @@ static void s_cache_cpu_features(void) { } aws_run_cpuid(0x1, 0x0, abcd); s_cpu_features[AWS_CPU_FEATURE_CLMUL] = abcd[2] & (1 << 1); /* pclmulqdq = ECX[bit 1] */ + s_cpu_features[AWS_CPU_FEATURE_SSSE_3] = abcd[2] & (1 << 9); /* ssse3 = ECX[bit 9] */ s_cpu_features[AWS_CPU_FEATURE_SSE_4_1] = abcd[2] & (1 << 19); /* sse4.1 = ECX[bit 19] */ s_cpu_features[AWS_CPU_FEATURE_SSE_4_2] = abcd[2] & (1 << 20); /* sse4.2 = ECX[bit 20] */ diff --git a/tests/cpuid_test.c b/tests/cpuid_test.c index b189a80e7..cba21f9ca 100644 --- a/tests/cpuid_test.c +++ b/tests/cpuid_test.c @@ -21,6 +21,7 @@ static int s_cpuid_test_fn(struct aws_allocator *allocator, void *ctx) { (void)ctx; /* TODO: make sure those check returns the expected value. */ aws_cpu_has_feature(AWS_CPU_FEATURE_CLMUL); + aws_cpu_has_feature(AWS_CPU_FEATURE_SSSE_3); aws_cpu_has_feature(AWS_CPU_FEATURE_SSE_4_1); aws_cpu_has_feature(AWS_CPU_FEATURE_SSE_4_2); aws_cpu_has_feature(AWS_CPU_FEATURE_AVX2);