59 lines · c
1// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,CHECK642// RUN: %clang_cc1 -ffreestanding %s -triple=i686-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +crc32 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,CHECK644// RUN: %clang_cc1 -ffreestanding %s -triple=i686-apple-darwin -target-feature +crc32 -emit-llvm -o - -Wall -Werror | FileCheck %s5 6#include <x86intrin.h>7 8unsigned int test__crc32b(unsigned int CRC, unsigned char V) {9// CHECK-LABEL: test__crc32b10// CHECK: call i32 @llvm.x86.sse42.crc32.32.8(i32 %{{.*}}, i8 %{{.*}})11 return __crc32b(CRC, V);12}13 14unsigned int test__crc32w(unsigned int CRC, unsigned short V) {15// CHECK-LABEL: test__crc32w16// CHECK: call i32 @llvm.x86.sse42.crc32.32.16(i32 %{{.*}}, i16 %{{.*}})17 return __crc32w(CRC, V);18}19 20unsigned int test__crc32d(unsigned int CRC, unsigned int V) {21// CHECK-LABEL: test__crc32d22// CHECK: call i32 @llvm.x86.sse42.crc32.32.32(i32 %{{.*}}, i32 %{{.*}})23 return __crc32d(CRC, V);24}25 26#ifdef __x86_64__27unsigned long long test__crc32q(unsigned long long CRC, unsigned long long V) {28// CHECK64-LABEL: test__crc32q29// CHECK64: call i64 @llvm.x86.sse42.crc32.64.64(i64 %{{.*}}, i64 %{{.*}})30 return __crc32q(CRC, V);31}32#endif33 34unsigned int test_mm_crc32_u8(unsigned int CRC, unsigned char V) {35// CHECK-LABEL: test_mm_crc32_u836// CHECK: call i32 @llvm.x86.sse42.crc32.32.8(i32 %{{.*}}, i8 %{{.*}})37 return _mm_crc32_u8(CRC, V);38}39 40unsigned int test_mm_crc32_u16(unsigned int CRC, unsigned short V) {41// CHECK-LABEL: test_mm_crc32_u1642// CHECK: call i32 @llvm.x86.sse42.crc32.32.16(i32 %{{.*}}, i16 %{{.*}})43 return _mm_crc32_u16(CRC, V);44}45 46unsigned int test_mm_crc32_u32(unsigned int CRC, unsigned int V) {47// CHECK-LABEL: test_mm_crc32_u3248// CHECK: call i32 @llvm.x86.sse42.crc32.32.32(i32 %{{.*}}, i32 %{{.*}})49 return _mm_crc32_u32(CRC, V);50}51 52#ifdef __x86_64__53unsigned long long test_mm_crc32_u64(unsigned long long CRC, unsigned long long V) {54// CHECK64-LABEL: test_mm_crc32_u6455// CHECK64: call i64 @llvm.x86.sse42.crc32.64.64(i64 %{{.*}}, i64 %{{.*}})56 return _mm_crc32_u64(CRC, V);57}58#endif59