Add the clang patch for r266674.
This commit is contained in:
parent
b742fcdab0
commit
72c25e24e9
@ -0,0 +1,49 @@
|
||||
Pull in r209489 from upstream clang trunk (by Akira Hatanaka):
|
||||
|
||||
Fix a bug in xmmintrin.h.
|
||||
|
||||
The last step of _mm_cvtps_pi16 should use _mm_packs_pi32, which is a function
|
||||
that reads two __m64 values and packs four 32-bit values into four 16-bit
|
||||
values.
|
||||
|
||||
<rdar://problem/16873717>
|
||||
|
||||
Pull in r209559 from upstream clang trunk (by Akira Hatanaka):
|
||||
|
||||
Recommit r209532 with -ffreestanding.
|
||||
|
||||
This is a test case for r209489.
|
||||
|
||||
Introduced here: http://svnweb.freebsd.org/changeset/base/266674
|
||||
|
||||
Index: tools/clang/lib/Headers/xmmintrin.h
|
||||
===================================================================
|
||||
--- tools/clang/lib/Headers/xmmintrin.h
|
||||
+++ tools/clang/lib/Headers/xmmintrin.h
|
||||
@@ -903,7 +903,7 @@ _mm_cvtps_pi16(__m128 __a)
|
||||
__a = _mm_movehl_ps(__a, __a);
|
||||
__c = _mm_cvtps_pi32(__a);
|
||||
|
||||
- return _mm_packs_pi16(__b, __c);
|
||||
+ return _mm_packs_pi32(__b, __c);
|
||||
}
|
||||
|
||||
static __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
|
||||
Index: tools/clang/test/Headers/xmmintrin.c
|
||||
===================================================================
|
||||
--- tools/clang/test/Headers/xmmintrin.c
|
||||
+++ tools/clang/test/Headers/xmmintrin.c
|
||||
@@ -0,0 +1,13 @@
|
||||
+// RUN: %clang_cc1 %s -ffreestanding -triple x86_64-apple-macosx10.9.0 -emit-llvm -o - | FileCheck %s
|
||||
+
|
||||
+#include <xmmintrin.h>
|
||||
+
|
||||
+// Make sure the last step of _mm_cvtps_pi16 converts <4 x i32> to <4 x i16> by
|
||||
+// checking that clang emits PACKSSDW instead of PACKSSWB.
|
||||
+
|
||||
+// CHECK: define i64 @test_mm_cvtps_pi16
|
||||
+// CHECK: call x86_mmx @llvm.x86.mmx.packssdw
|
||||
+
|
||||
+__m64 test_mm_cvtps_pi16(__m128 a) {
|
||||
+ return _mm_cvtps_pi16(a);
|
||||
+}
|
Loading…
x
Reference in New Issue
Block a user