1; RUN: llc < %s -mtriple=i686-apple-darwin9 -mattr=sse4.2 | FileCheck %s -check-prefix=X32
2; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mattr=sse4.2 | FileCheck %s -check-prefix=X64
3
4declare i32 @llvm.x86.sse42.crc32.32.8(i32, i8) nounwind
5declare i32 @llvm.x86.sse42.crc32.32.16(i32, i16) nounwind
6declare i32 @llvm.x86.sse42.crc32.32.32(i32, i32) nounwind
7
8define i32 @crc32_32_8(i32 %a, i8 %b) nounwind {
9  %tmp = call i32 @llvm.x86.sse42.crc32.32.8(i32 %a, i8 %b)
10  ret i32 %tmp
11; X32: _crc32_32_8:
12; X32:     crc32b   8(%esp), %eax
13
14; X64: _crc32_32_8:
15; X64:     crc32b   %sil,
16}
17
18
19define i32 @crc32_32_16(i32 %a, i16 %b) nounwind {
20  %tmp = call i32 @llvm.x86.sse42.crc32.32.16(i32 %a, i16 %b)
21  ret i32 %tmp
22; X32: _crc32_32_16:
23; X32:     crc32w   8(%esp), %eax
24
25; X64: _crc32_32_16:
26; X64:     crc32w   %si,
27}
28
29
30define i32 @crc32_32_32(i32 %a, i32 %b) nounwind {
31  %tmp = call i32 @llvm.x86.sse42.crc32.32.32(i32 %a, i32 %b)
32  ret i32 %tmp
33; X32: _crc32_32_32:
34; X32:     crc32l   8(%esp), %eax
35
36; X64: _crc32_32_32:
37; X64:     crc32l   %esi,
38}
39
40