summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-06-02 12:31:44 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-06-02 12:31:44 +0000
commitd425a2b169e7a1fceaa266c4513b23fe29641d36 (patch)
tree0af7030b621347f956f3493cc707b24cf2842bb7 /compiler-rt
parent0797874f3366aa5a8435c62ee7239e47b6a44696 (diff)
downloadbcm5719-llvm-d425a2b169e7a1fceaa266c4513b23fe29641d36.tar.gz
bcm5719-llvm-d425a2b169e7a1fceaa266c4513b23fe29641d36.zip
[msan] Handle x86 vector pack intrinsics.
llvm-svn: 210020
Diffstat (limited to 'compiler-rt')
-rw-r--r--compiler-rt/lib/msan/tests/msan_test.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/compiler-rt/lib/msan/tests/msan_test.cc b/compiler-rt/lib/msan/tests/msan_test.cc
index d0b5ce2ff9d..b4250b153fa 100644
--- a/compiler-rt/lib/msan/tests/msan_test.cc
+++ b/compiler-rt/lib/msan/tests/msan_test.cc
@@ -3612,6 +3612,27 @@ TEST(VectorShiftTest, avx2_left) {
#endif // __AVX2__
} // namespace
+TEST(VectorPackTest, sse2_packssdw_128) {
+ const unsigned S2_max = (1 << 15) - 1;
+ V4x32 a = {*GetPoisoned<U4>() & 0xFF0000U, *GetPoisoned<U4>() & 0xFFFF0000,
+ S2_max + 100, 4};
+ V4x32 b = {*GetPoisoned<U4>() & 0xFF, S2_max + 10000,
+ *GetPoisoned<U4>() & 0xFF00, S2_max};
+ V8x16 c = _mm_packs_epi32(a, b);
+ EXPECT_POISONED(c[0]);
+ EXPECT_POISONED(c[1]);
+ EXPECT_NOT_POISONED(c[2]);
+ EXPECT_NOT_POISONED(c[3]);
+ EXPECT_POISONED(c[4]);
+ EXPECT_NOT_POISONED(c[5]);
+ EXPECT_POISONED(c[6]);
+ EXPECT_NOT_POISONED(c[7]);
+
+ EXPECT_EQ(c[2], S2_max);
+ EXPECT_EQ(c[3], 4);
+ EXPECT_EQ(c[5], S2_max);
+ EXPECT_EQ(c[7], S2_max);
+}
TEST(MemorySanitizerDr, StoreInDSOTest) {
if (!__msan_has_dynamic_component()) return;
OpenPOWER on IntegriCloud