forked from OSchip/llvm-project
30 lines
1.7 KiB
C
30 lines
1.7 KiB
C
// RUN: %clang_cc1 -w -O2 -fblocks -triple i386-pc-linux-gnu -target-cpu pentium4 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LINUX
|
|
// RUN: %clang_cc1 -w -O2 -fblocks -triple i386-netbsd -target-cpu pentium4 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,NETBSD
|
|
// RUN: %clang_cc1 -w -O2 -fblocks -triple i386-apple-darwin9 -target-cpu yonah -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,DARWIN
|
|
// RUN: %clang_cc1 -w -O2 -fblocks -triple i386-pc-elfiamcu -mfloat-abi soft -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,IAMCU
|
|
// RUN: %clang_cc1 -w -O2 -fblocks -triple i386-pc-win32 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WIN32
|
|
|
|
#include <mmintrin.h>
|
|
__m64 m64;
|
|
void callee(__m64 __m1, __m64 __m2);
|
|
__m64 caller(__m64 __m1, __m64 __m2)
|
|
{
|
|
// LINUX-LABEL: define x86_mmx @caller(x86_mmx %__m1.coerce, x86_mmx %__m2.coerce)
|
|
// LINUX: tail call void @callee(x86_mmx %__m2.coerce, x86_mmx %__m1.coerce)
|
|
// LINUX: ret x86_mmx
|
|
// NETBSD-LABEL: define x86_mmx @caller(x86_mmx %__m1.coerce, x86_mmx %__m2.coerce)
|
|
// NETBSD: tail call void @callee(x86_mmx %__m2.coerce, x86_mmx %__m1.coerce)
|
|
// NETBSD: ret x86_mmx
|
|
// DARWIN-LABEL: define i64 @caller(i64 %__m1.coerce, i64 %__m2.coerce)
|
|
// DARWIN: tail call void @callee(i64 %__m2.coerce, i64 %__m1.coerce)
|
|
// DARWIN: ret i64
|
|
// IAMCU-LABEL: define <1 x i64> @caller(i64 %__m1.coerce, i64 %__m2.coerce)
|
|
// IAMCU: tail call void @callee(i64 %__m2.coerce, i64 %__m1.coerce)
|
|
// IAMCU: ret <1 x i64>
|
|
// WIN32-LABEL: define dso_local <1 x i64> @caller(i64 %__m1.coerce, i64 %__m2.coerce)
|
|
// WIN32: call void @callee(i64 %__m2.coerce, i64 %__m1.coerce)
|
|
// WIN32: ret <1 x i64>
|
|
callee(__m2, __m1);
|
|
return m64;
|
|
}
|