diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-03-04 05:26:16 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-03-04 05:26:16 +0000 |
commit | ba5d18afaa1f6ec960952c9891f82074b97ad3df (patch) | |
tree | 7a9df1a88bc2c93ded98d5942f7d52e8dec0fff6 /test/CodeGen/3dnow-builtins.c | |
parent | e9edec07b08d287b7cbf7d789f5992813e7796c6 (diff) | |
download | clang-ba5d18afaa1f6ec960952c9891f82074b97ad3df.tar.gz |
[X86] Pass __m64 types via SSE registers for GCC compatibility
For compatibility with GCC, classify __m64 as SSE.
However, clang is a platform compiler for certain targets; retain our
old behavior on those targets: classify __m64 as integer.
This fixes PR26832.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262688 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/3dnow-builtins.c')
-rw-r--r-- | test/CodeGen/3dnow-builtins.c | 78 |
1 files changed, 52 insertions, 26 deletions
diff --git a/test/CodeGen/3dnow-builtins.c b/test/CodeGen/3dnow-builtins.c index d534349a74..fdee2a7619 100644 --- a/test/CodeGen/3dnow-builtins.c +++ b/test/CodeGen/3dnow-builtins.c @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s +// RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s -check-prefix=GCC -check-prefix=CHECK +// RUN: %clang_cc1 %s -triple=x86_64-scei-ps4 -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s -check-prefix=PS4 -check-prefix=CHECK // Don't include mm_malloc.h, it's system specific. #define __MM_MALLOC_H @@ -6,151 +7,176 @@ #include <x86intrin.h> __m64 test_m_pavgusb(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pavgusb + // PS4-LABEL: define i64 @test_m_pavgusb + // GCC-LABEL: define double @test_m_pavgusb // CHECK: @llvm.x86.3dnow.pavgusb return _m_pavgusb(m1, m2); } __m64 test_m_pf2id(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pf2id + // PS4-LABEL: define i64 @test_m_pf2id + // GCC-LABEL: define double @test_m_pf2id // CHECK: @llvm.x86.3dnow.pf2id return _m_pf2id(m); } __m64 test_m_pfacc(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfacc + // PS4-LABEL: define i64 @test_m_pfacc + // GCC-LABEL: define double @test_m_pfacc // CHECK: @llvm.x86.3dnow.pfacc return _m_pfacc(m1, m2); } __m64 test_m_pfadd(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfadd + // PS4-LABEL: define i64 @test_m_pfadd + // GCC-LABEL: define double @test_m_pfadd // CHECK: @llvm.x86.3dnow.pfadd return _m_pfadd(m1, m2); } __m64 test_m_pfcmpeq(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfcmpeq + // PS4-LABEL: define i64 @test_m_pfcmpeq + // GCC-LABEL: define double @test_m_pfcmpeq // CHECK: @llvm.x86.3dnow.pfcmpeq return _m_pfcmpeq(m1, m2); } __m64 test_m_pfcmpge(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfcmpge + // PS4-LABEL: define i64 @test_m_pfcmpge + // GCC-LABEL: define double @test_m_pfcmpge // CHECK: @llvm.x86.3dnow.pfcmpge return _m_pfcmpge(m1, m2); } __m64 test_m_pfcmpgt(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfcmpgt + // PS4-LABEL: define i64 @test_m_pfcmpgt + // GCC-LABEL: define double @test_m_pfcmpgt // CHECK: @llvm.x86.3dnow.pfcmpgt return _m_pfcmpgt(m1, m2); } __m64 test_m_pfmax(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfmax + // PS4-LABEL: define i64 @test_m_pfmax + // GCC-LABEL: define double @test_m_pfmax // CHECK: @llvm.x86.3dnow.pfmax return _m_pfmax(m1, m2); } __m64 test_m_pfmin(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfmin + // PS4-LABEL: define i64 @test_m_pfmin + // GCC-LABEL: define double @test_m_pfmin // CHECK: @llvm.x86.3dnow.pfmin return _m_pfmin(m1, m2); } __m64 test_m_pfmul(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfmul + // PS4-LABEL: define i64 @test_m_pfmul + // GCC-LABEL: define double @test_m_pfmul // CHECK: @llvm.x86.3dnow.pfmul return _m_pfmul(m1, m2); } __m64 test_m_pfrcp(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pfrcp + // PS4-LABEL: define i64 @test_m_pfrcp + // GCC-LABEL: define double @test_m_pfrcp // CHECK: @llvm.x86.3dnow.pfrcp return _m_pfrcp(m); } __m64 test_m_pfrcpit1(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfrcpit1 + // PS4-LABEL: define i64 @test_m_pfrcpit1 + // GCC-LABEL: define double @test_m_pfrcpit1 // CHECK: @llvm.x86.3dnow.pfrcpit1 return _m_pfrcpit1(m1, m2); } __m64 test_m_pfrcpit2(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfrcpit2 + // PS4-LABEL: define i64 @test_m_pfrcpit2 + // GCC-LABEL: define double @test_m_pfrcpit2 // CHECK: @llvm.x86.3dnow.pfrcpit2 return _m_pfrcpit2(m1, m2); } __m64 test_m_pfrsqrt(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pfrsqrt + // PS4-LABEL: define i64 @test_m_pfrsqrt + // GCC-LABEL: define double @test_m_pfrsqrt // CHECK: @llvm.x86.3dnow.pfrsqrt return _m_pfrsqrt(m); } __m64 test_m_pfrsqrtit1(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfrsqrtit1 + // PS4-LABEL: define i64 @test_m_pfrsqrtit1 + // GCC-LABEL: define double @test_m_pfrsqrtit1 // CHECK: @llvm.x86.3dnow.pfrsqit1 return _m_pfrsqrtit1(m1, m2); } __m64 test_m_pfsub(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfsub + // PS4-LABEL: define i64 @test_m_pfsub + // GCC-LABEL: define double @test_m_pfsub // CHECK: @llvm.x86.3dnow.pfsub return _m_pfsub(m1, m2); } __m64 test_m_pfsubr(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfsubr + // PS4-LABEL: define i64 @test_m_pfsubr + // GCC-LABEL: define double @test_m_pfsubr // CHECK: @llvm.x86.3dnow.pfsubr return _m_pfsubr(m1, m2); } __m64 test_m_pi2fd(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pi2fd + // PS4-LABEL: define i64 @test_m_pi2fd + // GCC-LABEL: define double @test_m_pi2fd // CHECK: @llvm.x86.3dnow.pi2fd return _m_pi2fd(m); } __m64 test_m_pmulhrw(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pmulhrw + // PS4-LABEL: define i64 @test_m_pmulhrw + // GCC-LABEL: define double @test_m_pmulhrw // CHECK: @llvm.x86.3dnow.pmulhrw return _m_pmulhrw(m1, m2); } __m64 test_m_pf2iw(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pf2iw + // PS4-LABEL: define i64 @test_m_pf2iw + // GCC-LABEL: define double @test_m_pf2iw // CHECK: @llvm.x86.3dnowa.pf2iw return _m_pf2iw(m); } __m64 test_m_pfnacc(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfnacc + // PS4-LABEL: define i64 @test_m_pfnacc + // GCC-LABEL: define double @test_m_pfnacc // CHECK: @llvm.x86.3dnowa.pfnacc return _m_pfnacc(m1, m2); } __m64 test_m_pfpnacc(__m64 m1, __m64 m2) { - // CHECK-LABEL: define i64 @test_m_pfpnacc + // PS4-LABEL: define i64 @test_m_pfpnacc + // GCC-LABEL: define double @test_m_pfpnacc // CHECK: @llvm.x86.3dnowa.pfpnacc return _m_pfpnacc(m1, m2); } __m64 test_m_pi2fw(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pi2fw + // PS4-LABEL: define i64 @test_m_pi2fw + // GCC-LABEL: define double @test_m_pi2fw // CHECK: @llvm.x86.3dnowa.pi2fw return _m_pi2fw(m); } __m64 test_m_pswapdsf(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pswapdsf + // PS4-LABEL: define i64 @test_m_pswapdsf + // GCC-LABEL: define double @test_m_pswapdsf // CHECK: @llvm.x86.3dnowa.pswapd return _m_pswapdsf(m); } __m64 test_m_pswapdsi(__m64 m) { - // CHECK-LABEL: define i64 @test_m_pswapdsi + // PS4-LABEL: define i64 @test_m_pswapdsi + // GCC-LABEL: define double @test_m_pswapdsi // CHECK: @llvm.x86.3dnowa.pswapd return _m_pswapdsi(m); } |