summaryrefslogtreecommitdiff
path: root/lib/msan/tests
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
commita9acd26d1d910e19c02b931a5c30edb0550ac574 (patch)
tree925fa857412a1658bd14fe1cb51d4af516467d32 /lib/msan/tests
parent5b4277ade389dfd4712dfc42b7d1042a4f3c0d33 (diff)
[msan] Handle x86 vector pack intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@210020 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/tests')
-rw-r--r--lib/msan/tests/msan_test.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/msan/tests/msan_test.cc b/lib/msan/tests/msan_test.cc
index d0b5ce2ff..b4250b153 100644
--- a/lib/msan/tests/msan_test.cc
+++ b/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;