diff options
author | Craig Topper <craig.topper@gmail.com> | 2015-11-11 08:00:41 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2015-11-11 08:00:41 +0000 |
commit | a5455524c2aa02a8f6d21819bc993f513d293831 (patch) | |
tree | 0bd614635626cf58276fbf63378b2d9627941fee /clang/test | |
parent | 880f60b7b3c6694e377abd50ca21911192355846 (diff) | |
download | bcm5719-llvm-a5455524c2aa02a8f6d21819bc993f513d293831.tar.gz bcm5719-llvm-a5455524c2aa02a8f6d21819bc993f513d293831.zip |
[X86] Use __builtin_ia32_paddq and __builtin_ia32_psubq to implement a couple intrinsics that were supposed to operate on MMX registers. Otherwise we end up operating on GPRs. Throw in a test for _mm_mul_su32 while I was there.
llvm-svn: 252711
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGen/sse-builtins.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/CodeGen/sse-builtins.c b/clang/test/CodeGen/sse-builtins.c index 11a094aad7b..fce57b665f2 100644 --- a/clang/test/CodeGen/sse-builtins.c +++ b/clang/test/CodeGen/sse-builtins.c @@ -495,3 +495,21 @@ __m128i test_mm_undefined_si128() { // CHECK: ret <2 x i64> undef return _mm_undefined_si128(); } + +__m64 test_mm_add_si64(__m64 __a, __m64 __b) { + // CHECK-LABEL: @test_mm_add_si64 + // CHECK @llvm.x86.mmx.padd.q(x86_mmx %{{.*}}, x86_mmx %{{.*}}) + return _mm_add_si64(__a, __b); +} + +__m64 test_mm_sub_si64(__m64 __a, __m64 __b) { + // CHECK-LABEL: @test_mm_sub_si64 + // CHECK @llvm.x86.mmx.psub.q(x86_mmx %{{.*}}, x86_mmx %{{.*}}) + return _mm_sub_si64(__a, __b); +} + +__m64 test_mm_mul_su32(__m64 __a, __m64 __b) { + // CHECK-LABEL: @test_mm_mul_su32 + // CHECK @llvm.x86.mmx.pmulu.dq(x86_mmx %{{.*}}, x86_mmx %{{.*}}) + return _mm_mul_su32(__a, __b); +} |