Dan Gohman | 36a0947 | 2009-09-08 23:54:48 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=i686-apple-darwin9 -mattr=sse42 | FileCheck %s -check-prefix=X32 |
| 2 | ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mattr=sse42 | FileCheck %s -check-prefix=X64 |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 3 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 4 | declare i32 @llvm.x86.sse42.crc32.32.8(i32, i8) nounwind |
| 5 | declare i32 @llvm.x86.sse42.crc32.32.16(i32, i16) nounwind |
| 6 | declare i32 @llvm.x86.sse42.crc32.32.32(i32, i32) nounwind |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 7 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 8 | define i32 @crc32_32_8(i32 %a, i8 %b) nounwind { |
| 9 | %tmp = call i32 @llvm.x86.sse42.crc32.32.8(i32 %a, i8 %b) |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 10 | ret i32 %tmp |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 11 | ; X32: _crc32_32_8: |
Kevin Enderby | b46b03b | 2010-03-19 20:04:42 +0000 | [diff] [blame] | 12 | ; X32: crc32b 8(%esp), %eax |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 13 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 14 | ; X64: _crc32_32_8: |
Jakob Stoklund Olesen | 61396ae | 2011-05-04 23:54:51 +0000 | [diff] [blame] | 15 | ; X64: crc32b %sil, |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 16 | } |
| 17 | |
| 18 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 19 | define i32 @crc32_32_16(i32 %a, i16 %b) nounwind { |
| 20 | %tmp = call i32 @llvm.x86.sse42.crc32.32.16(i32 %a, i16 %b) |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 21 | ret i32 %tmp |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 22 | ; X32: _crc32_32_16: |
Kevin Enderby | b46b03b | 2010-03-19 20:04:42 +0000 | [diff] [blame] | 23 | ; X32: crc32w 8(%esp), %eax |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 24 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 25 | ; X64: _crc32_32_16: |
Jakob Stoklund Olesen | 61396ae | 2011-05-04 23:54:51 +0000 | [diff] [blame] | 26 | ; X64: crc32w %si, |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 27 | } |
| 28 | |
| 29 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 30 | define i32 @crc32_32_32(i32 %a, i32 %b) nounwind { |
| 31 | %tmp = call i32 @llvm.x86.sse42.crc32.32.32(i32 %a, i32 %b) |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 32 | ret i32 %tmp |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 33 | ; X32: _crc32_32_32: |
Kevin Enderby | b46b03b | 2010-03-19 20:04:42 +0000 | [diff] [blame] | 34 | ; X32: crc32l 8(%esp), %eax |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 35 | |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 36 | ; X64: _crc32_32_32: |
Jakob Stoklund Olesen | 61396ae | 2011-05-04 23:54:51 +0000 | [diff] [blame] | 37 | ; X64: crc32l %esi, |
Eric Christopher | b4dc13c | 2009-08-08 21:55:08 +0000 | [diff] [blame] | 38 | } |
Chad Rosier | 6266031 | 2011-05-26 23:13:19 +0000 | [diff] [blame^] | 39 | |