diff options
author | Hans Wennborg <hans@hanshq.net> | 2019-06-19 11:34:08 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2019-06-19 11:34:08 +0000 |
commit | d874c057bc2361da5157553e1e2178f43c3ade1a (patch) | |
tree | bfabdbc1a5b81121b054d320255b82b7a46f7a40 /clang/test/CodeGen/x86_32-arguments-linux.c | |
parent | bb6b85618387f768a6368f289ae754eb92935c5d (diff) | |
download | bcm5719-llvm-d874c057bc2361da5157553e1e2178f43c3ade1a.tar.gz bcm5719-llvm-d874c057bc2361da5157553e1e2178f43c3ade1a.zip |
Revert r363116 "[X86] [ABI] Fix i386 ABI "__m64" type bug"
This introduced MMX instructions in code that wasn't previously using
them, breaking programs using 64-bit vectors and x87 floating-point in
the same application. See discussion on the code review for more
details.
> According to System V i386 ABI: the __m64 type paramater and return
> value are passed by MMX registers. But current implementation treats
> __m64 as i64 which results in parameter passing by stack and returning
> by EDX and EAX.
>
> This patch fixes the bug (https://bugs.llvm.org/show_bug.cgi?id=41029)
> for Linux and NetBSD.
>
> Patch by Wei Xiao (wxiao3)
>
> Differential Revision: https://reviews.llvm.org/D59744
llvm-svn: 363790
Diffstat (limited to 'clang/test/CodeGen/x86_32-arguments-linux.c')
-rw-r--r-- | clang/test/CodeGen/x86_32-arguments-linux.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/test/CodeGen/x86_32-arguments-linux.c b/clang/test/CodeGen/x86_32-arguments-linux.c index 1bdaa628eb2..3c64fbcc15b 100644 --- a/clang/test/CodeGen/x86_32-arguments-linux.c +++ b/clang/test/CodeGen/x86_32-arguments-linux.c @@ -3,7 +3,7 @@ // CHECK-LABEL: define void @f56( // CHECK: i8 signext %a0, %struct.s56_0* byval(%struct.s56_0) align 4 %a1, -// CHECK: x86_mmx %a2.coerce, %struct.s56_1* byval(%struct.s56_1) align 4, +// CHECK: i64 %a2.coerce, %struct.s56_1* byval(%struct.s56_1) align 4, // CHECK: <1 x double> %a4, %struct.s56_2* byval(%struct.s56_2) align 4, // CHECK: <4 x i32> %a6, %struct.s56_3* byval(%struct.s56_3) align 4, // CHECK: <2 x double> %a8, %struct.s56_4* byval(%struct.s56_4) align 4, @@ -12,7 +12,7 @@ // CHECK: call void (i32, ...) @f56_0(i32 1, // CHECK: i32 %{{.*}}, %struct.s56_0* byval(%struct.s56_0) align 4 %{{[^ ]*}}, -// CHECK: x86_mmx %{{[^ ]*}}, %struct.s56_1* byval(%struct.s56_1) align 4 %{{[^ ]*}}, +// CHECK: i64 %{{[^ ]*}}, %struct.s56_1* byval(%struct.s56_1) align 4 %{{[^ ]*}}, // CHECK: <1 x double> %{{[^ ]*}}, %struct.s56_2* byval(%struct.s56_2) align 4 %{{[^ ]*}}, // CHECK: <4 x i32> %{{[^ ]*}}, %struct.s56_3* byval(%struct.s56_3) align 4 %{{[^ ]*}}, // CHECK: <2 x double> %{{[^ ]*}}, %struct.s56_4* byval(%struct.s56_4) align 4 %{{[^ ]*}}, |