You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(9) |
2
(1) |
3
(1) |
|
4
(1) |
5
(1) |
6
(1) |
7
(1) |
8
(5) |
9
(9) |
10
(1) |
|
11
(1) |
12
(2) |
13
(10) |
14
(4) |
15
(1) |
16
|
17
(1) |
|
18
(1) |
19
(1) |
20
(8) |
21
(1) |
22
(2) |
23
|
24
|
|
25
|
26
(2) |
27
(15) |
28
(12) |
29
(9) |
30
(5) |
31
(5) |
|
From: Bart V. A. <bar...@gm...> - 2009-10-09 07:53:32
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-10-09 02:26:30 EDT Ended at 2009-10-09 03:53:15 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 448 tests, 45 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Alexander P. <gl...@go...> - 2009-10-09 06:10:14
|
Nightly build on mcgrind ( Darwin 9.7.0 i386 ) Started at 2009-10-09 09:06:05 MSD Ended at 2009-10-09 09:55:30 MSD Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 433 tests, 22 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/null_socket (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) none/tests/async-sigs (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc23_bogus_condwait (stderr) -- Alexander Potapenko Software Engineer Google Moscow |
|
From: Tom H. <th...@cy...> - 2009-10-09 02:50:03
|
Nightly build on vauxhall ( x86_64, Fedora 11 ) Started at 2009-10-09 03:20:04 BST Ended at 2009-10-09 03:49:47 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 540 tests, 6 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) |
|
From: Tom H. <th...@cy...> - 2009-10-09 02:49:14
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-10-09 03:05:05 BST Ended at 2009-10-09 03:48:49 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 530 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2009-10-09 02:29:58
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-10-09 03:10:05 BST Ended at 2009-10-09 03:29:36 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 537 tests, 15 stderr failures, 0 stdout failures, 0 post failures == cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/notpower2 (stderr) cachegrind/tests/wrap5 (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) callgrind/tests/notpower2-hwpref (stderr) callgrind/tests/notpower2-use (stderr) callgrind/tests/notpower2-wb (stderr) callgrind/tests/notpower2 (stderr) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stderr) helgrind/tests/pth_spinlock (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2009-10-09 01:15:30
|
Author: sewardj
Date: 2009-10-09 02:15:16 +0100 (Fri, 09 Oct 2009)
New Revision: 10902
Log:
mc_LOADVn_slow: disable debug printing.
Modified:
branches/ICC111/memcheck/mc_main.c
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp
Modified: branches/ICC111/memcheck/mc_main.c
===================================================================
--- branches/ICC111/memcheck/mc_main.c 2009-10-09 00:52:57 UTC (rev 10901)
+++ branches/ICC111/memcheck/mc_main.c 2009-10-09 01:15:16 UTC (rev 10902)
@@ -1253,8 +1253,8 @@
We don't care about the endianness here, since we're
merely counting how many addresses are invalid. (Could do
better!) */
-VG_(printf)("QQQQ a = %#lx mo = %d\n", a, (Int)mo);
Addr a128 = mo == MoLA64of128 ? a : a-8;
+ if (0) VG_(printf)("QQQQ a = %#lx mo = %d\n", a, (Int)mo);
if (VG_IS_16_ALIGNED(a128)) {
Int nab128 = 0;
for (i = 0; i < 16; i++) {
@@ -1270,7 +1270,7 @@
addressible bytes followed by unaddressable bytes,
since that's the expected use case (a zero-terminated
C-style string). */
-VG_(printf)("QQQQ a128 = %#lx nab = %d\n", a128, (Int)nab128);
+ if (0) VG_(printf)("QQQQ a128 = %#lx nab = %d\n", a128, (Int)nab128);
tl_assert(nab128 > 0);
if (nab128 < 16)
complain = False;
Modified: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp 2009-10-09 00:52:57 UTC (rev 10901)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp 2009-10-09 01:15:16 UTC (rev 10902)
@@ -1,6 +0,0 @@
-QQQQ a = 0x........ mo = 100
-QQQQ a128 = 0x........ nab = 12
-QQQQ a = 0x........ mo = 101
-QQQQ a128 = 0x........ nab = 12
-QQQQ a = 0x........ mo = 101
-QQQQ a128 = 0x........ nab = 4
Modified: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp 2009-10-09 00:52:57 UTC (rev 10901)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp 2009-10-09 01:15:16 UTC (rev 10902)
@@ -1,6 +0,0 @@
-QQQQ a = 0x........ mo = 100
-QQQQ a128 = 0x........ nab = 12
-QQQQ a = 0x........ mo = 101
-QQQQ a128 = 0x........ nab = 12
-QQQQ a = 0x........ mo = 101
-QQQQ a128 = 0x........ nab = 4
|
|
From: <sv...@va...> - 2009-10-09 00:53:11
|
Author: sewardj
Date: 2009-10-09 01:52:57 +0100 (Fri, 09 Oct 2009)
New Revision: 10901
Log:
Add tests for correct handling of sse2-based strlen routines, when
--allow-partial-load128s=yes is given.
Added:
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stderr.exp
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stdout.exp
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.vgtest
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stdout.exp
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.vgtest
branches/ICC111/memcheck/tests/amd64/strlen-sse2-64.c
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stderr.exp
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stdout.exp
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.vgtest
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stdout.exp
branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.vgtest
branches/ICC111/memcheck/tests/x86/strlen-sse2-32.c
Modified:
branches/ICC111/memcheck/tests/amd64/Makefile.am
branches/ICC111/memcheck/tests/x86/Makefile.am
Modified: branches/ICC111/memcheck/tests/amd64/Makefile.am
===================================================================
--- branches/ICC111/memcheck/tests/amd64/Makefile.am 2009-10-09 00:26:55 UTC (rev 10900)
+++ branches/ICC111/memcheck/tests/amd64/Makefile.am 2009-10-09 00:52:57 UTC (rev 10901)
@@ -19,6 +19,10 @@
more_x87_fp.stderr.exp more_x87_fp.stdout.exp more_x87_fp.vgtest \
pmovmskb64.stderr.exp pmovmskb64.stdout.exp pmovmskb64.vgtest \
sse_memory.stderr.exp sse_memory.stdout.exp sse_memory.vgtest \
+ strlen-sse2-64-1.vgtest strlen-sse2-64-1.stdout.exp \
+ strlen-sse2-64-1.stderr.exp \
+ strlen-sse2-64-2.vgtest strlen-sse2-64-2.stdout.exp \
+ strlen-sse2-64-2.stderr.exp \
xor-undef-amd64.stderr.exp xor-undef-amd64.stdout.exp \
xor-undef-amd64.vgtest
@@ -28,6 +32,7 @@
bug132146 \
fxsave-amd64 \
pmovmskb64 \
+ strlen-sse2-64 \
xor-undef-amd64
# DDD: not sure if these ones should work on Darwin or not... if not, should
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stderr.exp (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stderr.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,7 @@
+Invalid read of size 8
+ at 0x........: __strlen_sse2 (in /home/sewardj/VgTRUNK/ic111/memcheck/tests/amd64/strlen-sse2-64)
+ by 0x........: (below main)
+ Address 0x........ is 0 bytes inside a block of size 4 alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (strlen-sse2-64.c:50)
+
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stdout.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stdout.exp (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.stdout.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,2 @@
+len is 2
+len is 10
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-1.vgtest 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,2 @@
+prog: strlen-sse2-64
+vgopts: -q
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stderr.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,6 @@
+QQQQ a = 0x........ mo = 100
+QQQQ a128 = 0x........ nab = 12
+QQQQ a = 0x........ mo = 101
+QQQQ a128 = 0x........ nab = 12
+QQQQ a = 0x........ mo = 101
+QQQQ a128 = 0x........ nab = 4
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stdout.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stdout.exp (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.stdout.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,2 @@
+len is 2
+len is 10
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64-2.vgtest 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,2 @@
+prog: strlen-sse2-64
+vgopts: -q --partial-load128s-ok=yes
Added: branches/ICC111/memcheck/tests/amd64/strlen-sse2-64.c
===================================================================
--- branches/ICC111/memcheck/tests/amd64/strlen-sse2-64.c (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/strlen-sse2-64.c 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,64 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* This is the version that is in glibc cvs */
+
+asm(
+".text" "\n\t"
+".globl __strlen_sse2\n\t"
+".type __strlen_sse2, @function\n\t"
+"__strlen_sse2:" "\n\t"
+"" "\n\t"
+" movq %rdi, %rcx" "\n\t"
+" movq %rdi, %r8" "\n\t"
+" andq $~15, %rdi" "\n\t"
+" pxor %xmm1, %xmm1" "\n\t"
+" orl $0xffffffff, %esi" "\n\t"
+" movdqa (%rdi), %xmm0" "\n\t"
+" subq %rdi, %rcx" "\n\t"
+" leaq 16(%rdi), %rdi" "\n\t"
+" pcmpeqb %xmm1, %xmm0" "\n\t"
+" shl %cl, %esi" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+" xorl %eax, %eax" "\n\t"
+" negq %r8" "\n\t"
+" andl %esi, %edx" "\n\t"
+" jnz 1f" "\n\t"
+"" "\n\t"
+"2: movdqa (%rdi), %xmm0" "\n\t"
+" leaq 16(%rdi), %rdi" "\n\t"
+" pcmpeqb %xmm1, %xmm0" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+" testl %edx, %edx" "\n\t"
+" jz 2b" "\n\t"
+"" "\n\t"
+"1: leaq -16(%rdi,%r8), %rdi" "\n\t"
+" bsfl %edx, %eax" "\n\t"
+" addq %rdi, %rax" "\n\t"
+" ret" "\n\t"
+"" "\n\t"
+".size __strlen_sse2, .-__strlen_sse2" "\n\t"
+".previous\n"
+);
+
+extern int __strlen_sse2 ( char* );
+
+int main ( void )
+{
+ int i;
+ char* str = malloc(4);
+ str[0] = str[1] = 'x';
+ str[2] = 0;
+ printf("len is %d\n", __strlen_sse2(str));
+ free(str);
+
+ str = malloc(12);
+ for (i = 0; i < 12-2; i++)
+ str[i] = 'y';
+ str[i] = 0;
+ printf("len is %d\n", __strlen_sse2(str));
+ free(str);
+
+ return 0;
+}
Modified: branches/ICC111/memcheck/tests/x86/Makefile.am
===================================================================
--- branches/ICC111/memcheck/tests/x86/Makefile.am 2009-10-09 00:26:55 UTC (rev 10900)
+++ branches/ICC111/memcheck/tests/x86/Makefile.am 2009-10-09 00:52:57 UTC (rev 10901)
@@ -23,6 +23,10 @@
more_x86_fp.stderr.exp more_x86_fp.stdout.exp more_x86_fp.vgtest \
pmovmskb32.stderr.exp pmovmskb32.stdout.exp pmovmskb32.vgtest \
fprem.stderr.exp fprem.stdout.exp fprem.vgtest \
+ strlen-sse2-32-1.vgtest strlen-sse2-32-1.stdout.exp \
+ strlen-sse2-32-1.stderr.exp \
+ strlen-sse2-32-2.vgtest strlen-sse2-32-2.stdout.exp \
+ strlen-sse2-32-2.stderr.exp \
xor-undef-x86.stderr.exp xor-undef-x86.stdout.exp \
xor-undef-x86.vgtest
@@ -39,6 +43,7 @@
pushfw_x86 \
pushpopmem \
sse_memory \
+ strlen-sse2-32 \
tronical \
xor-undef-x86
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stderr.exp (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stderr.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,14 @@
+Invalid read of size 8
+ at 0x........: __strlen_sse2 (in /home/sewardj/VgTRUNK/ic111/memcheck/tests/x86/strlen-sse2-32)
+ by 0x........: main (strlen-sse2-32.c:77)
+ Address 0x........ is 8 bytes before a block of size 4 alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (strlen-sse2-32.c:74)
+
+Invalid read of size 8
+ at 0x........: __strlen_sse2 (in /home/sewardj/VgTRUNK/ic111/memcheck/tests/x86/strlen-sse2-32)
+ by 0x........: main (strlen-sse2-32.c:84)
+ Address 0x........ is 8 bytes inside a block of size 12 alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (strlen-sse2-32.c:80)
+
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stdout.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stdout.exp (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.stdout.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,2 @@
+len is 2
+len is 10
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-1.vgtest 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,3 @@
+prog: strlen-sse2-32
+vgopts: -q
+prereq: ../../../tests/x86_amd64_features x86-sse2
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stderr.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,6 @@
+QQQQ a = 0x........ mo = 100
+QQQQ a128 = 0x........ nab = 12
+QQQQ a = 0x........ mo = 101
+QQQQ a128 = 0x........ nab = 12
+QQQQ a = 0x........ mo = 101
+QQQQ a128 = 0x........ nab = 4
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stdout.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stdout.exp (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.stdout.exp 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,2 @@
+len is 2
+len is 10
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32-2.vgtest 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,3 @@
+prog: strlen-sse2-32
+vgopts: -q --partial-load128s-ok=yes
+prereq: ../../../tests/x86_amd64_features x86-sse2
Added: branches/ICC111/memcheck/tests/x86/strlen-sse2-32.c
===================================================================
--- branches/ICC111/memcheck/tests/x86/strlen-sse2-32.c (rev 0)
+++ branches/ICC111/memcheck/tests/x86/strlen-sse2-32.c 2009-10-09 00:52:57 UTC (rev 10901)
@@ -0,0 +1,88 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+
+asm(
+".text" "\n\t"
+".globl __strlen_sse2\n\t"
+".type __strlen_sse2, @function\n\t"
+"__strlen_sse2: " "\n\t"
+ "\n\t"
+" pushl %ebp" "\n\t"
+" movl %esp, %ebp" "\n\t"
+" mov 8(%esp), %eax" "\n\t"
+" mov %eax, %ecx" "\n\t"
+" pxor %xmm0, %xmm0" "\n\t"
+" mov %eax, %esi" "\n\t"
+" and $15, %ecx" "\n\t"
+" jz 1f" "\n\t"
+"" "\n\t"
+" and $-16, %esi" "\n\t"
+"" "\n\t"
+" pcmpeqb (%esi), %xmm0" "\n\t"
+" lea 16(%eax), %esi" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+"" "\n\t"
+" shr %cl, %edx" "\n\t"
+" test %edx, %edx" "\n\t"
+" jnz 2f" "\n\t"
+" sub %ecx, %esi" "\n\t"
+" pxor %xmm0, %xmm0" "\n\t"
+"" "\n\t"
+"1:" "\n\t"
+" pcmpeqb (%esi), %xmm0" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+"" "\n\t"
+" add $16, %esi" "\n\t"
+" test %edx, %edx" "\n\t"
+" jnz 2f" "\n\t"
+"" "\n\t"
+" pcmpeqb (%esi), %xmm0" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+" add $16, %esi" "\n\t"
+" test %edx, %edx" "\n\t"
+" jnz 2f" "\n\t"
+"" "\n\t"
+" pcmpeqb (%esi), %xmm0" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+" add $16, %esi" "\n\t"
+" test %edx, %edx" "\n\t"
+" jnz 2f" "\n\t"
+"" "\n\t"
+" pcmpeqb (%esi), %xmm0" "\n\t"
+" pmovmskb %xmm0, %edx" "\n\t"
+" add $16, %esi" "\n\t"
+" test %edx, %edx" "\n\t"
+" jz 1b" "\n\t"
+"" "\n\t"
+"2:" "\n\t"
+" neg %eax" "\n\t"
+" lea -16(%eax, %esi), %eax" "\n\t"
+" bsf %edx, %ecx" "\n\t"
+" add %ecx, %eax" "\n\t"
+" leave" "\n\t"
+" ret" "\n\t"
+".size __strlen_sse2, .-__strlen_sse2" "\n\t"
+".previous\n"
+);
+
+extern int __strlen_sse2 ( char* );
+
+int main ( void )
+{
+ int i;
+ char* str = malloc(4);
+ str[0] = str[1] = 'x';
+ str[2] = 0;
+ printf("len is %d\n", __strlen_sse2(str));
+ free(str);
+
+ str = malloc(12);
+ for (i = 0; i < 12-2; i++)
+ str[i] = 'y';
+ str[i] = 0;
+ printf("len is %d\n", __strlen_sse2(str));
+ free(str);
+
+ return 0;
+}
|
|
From: <sv...@va...> - 2009-10-09 00:27:56
|
Author: sewardj
Date: 2009-10-09 01:26:55 +0100 (Fri, 09 Oct 2009)
New Revision: 10900
Log:
Add tests for partially defined arguments on bsf{w,l,q} (that is,
really, check for correct Memcheck interpretation of Ctz{16,32,64}).
Added:
branches/ICC111/memcheck/tests/amd64/bsf64.c
branches/ICC111/memcheck/tests/amd64/bsf64.stderr.exp
branches/ICC111/memcheck/tests/amd64/bsf64.stdout.exp
branches/ICC111/memcheck/tests/amd64/bsf64.vgtest
branches/ICC111/memcheck/tests/x86/bsf32.c
branches/ICC111/memcheck/tests/x86/bsf32.stderr.exp
branches/ICC111/memcheck/tests/x86/bsf32.stdout.exp
branches/ICC111/memcheck/tests/x86/bsf32.vgtest
Modified:
branches/ICC111/memcheck/tests/amd64/Makefile.am
branches/ICC111/memcheck/tests/x86/Makefile.am
Modified: branches/ICC111/memcheck/tests/amd64/Makefile.am
===================================================================
--- branches/ICC111/memcheck/tests/amd64/Makefile.am 2009-10-09 00:04:51 UTC (rev 10899)
+++ branches/ICC111/memcheck/tests/amd64/Makefile.am 2009-10-09 00:26:55 UTC (rev 10900)
@@ -9,6 +9,7 @@
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
$(addsuffix .vgtest,$(INSN_TESTS)) \
+ bsf64.stderr.exp bsf64.stdout.exp bsf64.vgtest \
bt_everything.stderr.exp bt_everything.stdout.exp \
bt_everything.vgtest \
bug132146.vgtest bug132146.stderr.exp bug132146.stdout.exp \
@@ -22,6 +23,7 @@
xor-undef-amd64.vgtest
check_PROGRAMS = \
+ bsf64 \
bt_everything \
bug132146 \
fxsave-amd64 \
Added: branches/ICC111/memcheck/tests/amd64/bsf64.c
===================================================================
--- branches/ICC111/memcheck/tests/amd64/bsf64.c (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/bsf64.c 2009-10-09 00:26:55 UTC (rev 10900)
@@ -0,0 +1,180 @@
+
+/* What this program does: checks memcheck's handling of 64-, 32- and
+ 16-bit count trailing zeroes (Ctz64, Ctz32, Ctz16). */
+
+#include <stdio.h>
+#include "../../memcheck.h"
+
+typedef unsigned long long int ULong;
+typedef unsigned int UInt;
+typedef unsigned short UShort;
+
+
+/* Return X, but mark as undefined all bits in it which are 1 in NOTV.
+ (note this is the opposite of the V bits encoding used
+ internally). */
+ULong undef64 ( ULong x, ULong notv )
+{
+ ULong allzeroes = 0;
+ VALGRIND_MAKE_MEM_UNDEFINED(&allzeroes, sizeof(allzeroes));
+ // now allzeroes is all 0s and all undefined
+ allzeroes &= notv;
+ // now allzeroes is still all 0s, but the places where notv is
+ // zero are now defined
+
+ // this doesn't change the value of x. But it 'infect' the
+ // relevant bit positions, making them undefined.
+ x ^= allzeroes;
+ return x;
+}
+
+ULong ctz64 ( ULong x )
+{
+ ULong res;
+ __asm__ __volatile__( "bsfq %1, %0" : "=b"(res) : "a"(x) : "cc" );
+ return res;
+}
+
+ULong ctz32 ( ULong x )
+{
+ UInt res;
+ __asm__ __volatile__( "bsfl %1, %0" : "=b"(res) : "a"((UInt)x) : "cc" );
+ return (ULong)res;
+}
+
+ULong ctz16 ( ULong x )
+{
+ UShort res;
+ __asm__ __volatile__( "bsfw %1, %0" : "=b"(res) : "a"((UShort)x) : "cc" );
+ return (ULong)res;
+}
+
+
+void try64 ( ULong expect_err, ULong x, ULong notv )
+{
+ // x, notv: clean
+ ULong xbad = undef64(x, notv);
+ // xbad: partially undefined as per notv
+ ULong res = ctz64(xbad);
+ // res: possibly undefined, as per ctz interpretation of xbad
+ ULong resclean = res;
+ VALGRIND_MAKE_MEM_DEFINED(&resclean, sizeof(resclean));
+ if (expect_err)
+ fprintf(stderr, "Expect: ERROR\n");
+ else
+ fprintf(stderr, "Expect: no error\n");
+ VALGRIND_CHECK_VALUE_IS_DEFINED(res);
+ fprintf(stderr, "ctz64 ( arg=0x%016llx, undefbits=0x%016llx ) = %d\n",
+ x, notv, resclean);
+ fprintf(stderr, "\n");
+}
+
+
+
+void try32 ( ULong expect_err, ULong x, ULong notv )
+{
+ // x, notv: clean
+ ULong xbad = undef64(x, notv);
+ // xbad: partially undefined as per notv
+ ULong res = ctz64( xbad & 0xFFFFFFFFULL );
+ // res: possibly undefined, as per ctz interpretation of xbad
+ ULong resclean = res;
+ VALGRIND_MAKE_MEM_DEFINED(&resclean, sizeof(resclean));
+ if (expect_err)
+ fprintf(stderr, "Expect: ERROR\n");
+ else
+ fprintf(stderr, "Expect: no error\n");
+ VALGRIND_CHECK_VALUE_IS_DEFINED(res);
+ fprintf(stderr, "ctz32 ( arg=0x%016llx, undefbits=0x%016llx ) = %d\n",
+ x, notv, resclean);
+ fprintf(stderr, "\n");
+}
+
+
+void try16 ( ULong expect_err, ULong x, ULong notv )
+{
+ // x, notv: clean
+ ULong xbad = undef64(x, notv);
+ // xbad: partially undefined as per notv
+ ULong res = ctz16(xbad & 0xFFFFULL);
+ // res: possibly undefined, as per ctz interpretation of xbad
+ ULong resclean = res;
+ VALGRIND_MAKE_MEM_DEFINED(&resclean, sizeof(resclean));
+ if (expect_err)
+ fprintf(stderr, "Expect: ERROR\n");
+ else
+ fprintf(stderr, "Expect: no error\n");
+ VALGRIND_CHECK_VALUE_IS_DEFINED(res);
+ fprintf(stderr, "ctz16 ( arg=0x%016llx, undefbits=0x%016llx ) = %d\n",
+ x, notv, resclean);
+ fprintf(stderr, "\n");
+}
+
+
+int main ( void )
+{
+ fprintf(stderr, "\n");
+
+ fprintf(stderr, "======== 64-bit cases ========\n\n");
+
+ // err? ctz-arg badbits
+ try64( 0, 0x10, 0 );
+ try64( 1, 0x10, 1 );
+ try64( 1, 0x10, 2 );
+ try64( 1, 0x10, 4 );
+ try64( 1, 0x10, 8 );
+ try64( 1, 0x10, 0x10 );
+ try64( 0, 0x10, 0x20 );
+ try64( 0, 0x10, 0x40 );
+ try64( 0, 0x10, 0x80 );
+ try64( 0, 0x10, 0x4000000000000000ULL );
+ try64( 0, 0x10, 0x8000000000000000ULL);
+
+ try64( 0, 0, 0 );
+ try64( 1, 0, 2 );
+ try64( 1, 0, 0x8000000000000000ULL);
+ try64( 0, 0x4000000000000000ULL, 0x8000000000000000ULL);
+ try64( 1, 0x4000000000000000ULL, 0x8001000000000000ULL);
+
+ try64( 0, 0xFFFFFFFFFFFFFFFFULL, 0 );
+ try64( 0, 0xFFFFFFFFFFFFFFFFULL, 2 );
+
+ try64( 0, 0xFFFFFFFFFFFFFFFEULL, 0 );
+ try64( 1, 0xFFFFFFFFFFFFFFFEULL, 1 );
+ try64( 1, 0xFFFFFFFFFFFFFFFEULL, 2 );
+ try64( 0, 0xFFFFFFFFFFFFFFFEULL, 4 );
+
+ fprintf(stderr, "======== 32-bit cases ========\n\n");
+
+ // err? ctz-arg badbits
+ try32( 0, 0x10, 0 );
+ try32( 1, 0x10, 1 );
+ try32( 1, 0x10, 2 );
+ try32( 1, 0x10, 4 );
+ try32( 1, 0x10, 8 );
+ try32( 1, 0x10, 0x10 );
+ try32( 0, 0x10, 0x20 );
+ try32( 0, 0x10, 0x40 );
+ try32( 0, 0x10, 0x80 );
+ try32( 0, 0x10, 0x40000000 );
+ try32( 0, 0x10, 0x80000000 );
+
+ fprintf(stderr, "======== 16-bit cases ========\n\n");
+
+ // err? ctz-arg badbits
+ try16( 0, 0x10, 0 );
+ try16( 1, 0x10, 1 );
+ try16( 1, 0x10, 2 );
+ try16( 1, 0x10, 4 );
+ try16( 1, 0x10, 8 );
+ try16( 1, 0x10, 0x10 );
+ try16( 0, 0x10, 0x20 );
+ try16( 0, 0x10, 0x40 );
+ try16( 0, 0x10, 0x80 );
+ try16( 0, 0x10, 0x4000 );
+ try16( 0, 0x10, 0x8000 );
+
+ try16( 0, 0x10, 0x10000 );
+
+ return 0;
+}
Added: branches/ICC111/memcheck/tests/amd64/bsf64.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/bsf64.stderr.exp (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/bsf64.stderr.exp 2009-10-09 00:26:55 UTC (rev 10900)
@@ -0,0 +1,242 @@
+
+======== 64-bit cases ========
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:122)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:123)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:124)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:125)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:126)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4198896
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:134)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4198896
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:135)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 4198896
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 62
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:137)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 62
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 0
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 0
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 1
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:143)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 1
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try64 (bsf64.c:66)
+ by 0x........: main (bsf64.c:144)
+ Address 0x........ is on thread 1's stack
+
+ctz64 ( arg=0x........, undefbits=0x........ ) = 1
+
+Expect: no error
+ctz64 ( arg=0x........, undefbits=0x........ ) = 1
+
+======== 32-bit cases ========
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf64.c:87)
+ by 0x........: main (bsf64.c:151)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf64.c:87)
+ by 0x........: main (bsf64.c:152)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf64.c:87)
+ by 0x........: main (bsf64.c:153)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf64.c:87)
+ by 0x........: main (bsf64.c:154)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf64.c:87)
+ by 0x........: main (bsf64.c:155)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+======== 16-bit cases ========
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf64.c:107)
+ by 0x........: main (bsf64.c:166)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf64.c:107)
+ by 0x........: main (bsf64.c:167)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf64.c:107)
+ by 0x........: main (bsf64.c:168)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf64.c:107)
+ by 0x........: main (bsf64.c:169)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf64.c:107)
+ by 0x........: main (bsf64.c:170)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
Added: branches/ICC111/memcheck/tests/amd64/bsf64.stdout.exp
===================================================================
Added: branches/ICC111/memcheck/tests/amd64/bsf64.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/amd64/bsf64.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/bsf64.vgtest 2009-10-09 00:26:55 UTC (rev 10900)
@@ -0,0 +1,2 @@
+prog: bsf64
+vgopts: -q
Modified: branches/ICC111/memcheck/tests/x86/Makefile.am
===================================================================
--- branches/ICC111/memcheck/tests/x86/Makefile.am 2009-10-09 00:04:51 UTC (rev 10899)
+++ branches/ICC111/memcheck/tests/x86/Makefile.am 2009-10-09 00:26:55 UTC (rev 10900)
@@ -6,6 +6,7 @@
INSN_TESTS = insn_basic insn_fpu insn_cmov insn_mmx insn_mmxext insn_sse insn_sse2
EXTRA_DIST = \
+ bsf32.vgtest bsf32.stderr.exp bsf32.stdout.exp \
bug152022.vgtest bug152022.stderr.exp bug152022.stdout.exp \
espindola2.vgtest espindola2.stderr.exp \
fpeflags.stderr.exp fpeflags.vgtest \
@@ -26,6 +27,7 @@
xor-undef-x86.vgtest
check_PROGRAMS = \
+ bsf32 \
bug152022 \
espindola2 \
fpeflags \
Added: branches/ICC111/memcheck/tests/x86/bsf32.c
===================================================================
--- branches/ICC111/memcheck/tests/x86/bsf32.c (rev 0)
+++ branches/ICC111/memcheck/tests/x86/bsf32.c 2009-10-09 00:26:55 UTC (rev 10900)
@@ -0,0 +1,133 @@
+
+/* What this program does: checks memcheck's handling of 32- and
+ 16-bit count trailing zeroes (Ctz32, Ctz16). */
+
+#include <stdio.h>
+#include "../../memcheck.h"
+
+typedef unsigned int UInt;
+
+/* Return X, but mark as undefined all bits in it which are 1 in NOTV.
+ (note this is the opposite of the V bits encoding used
+ internally). */
+UInt undef32 ( UInt x, UInt notv )
+{
+ UInt allzeroes = 0;
+ VALGRIND_MAKE_MEM_UNDEFINED(&allzeroes, sizeof(allzeroes));
+ // now allzeroes is all 0s and all undefined
+ allzeroes &= notv;
+ // now allzeroes is still all 0s, but the places where notv is
+ // zero are now defined
+
+ // this doesn't change the value of x. But it 'infect' the
+ // relevant bit positions, making them undefined.
+ x ^= allzeroes;
+ return x;
+}
+
+UInt ctz32 ( UInt x )
+{
+ UInt res;
+ __asm__ __volatile__( "bsfl %1, %0" : "=b"(res) : "a"(x) : "cc" );
+ return res;
+}
+
+UInt ctz16 ( UInt x )
+{
+ unsigned short res;
+ __asm__ __volatile__( "bsfw %1, %0" : "=b"(res) : "a"((unsigned short)x) : "cc" );
+ return (UInt)res;
+}
+
+void try32 ( UInt expect_err, UInt x, UInt notv )
+{
+ // x, notv: clean
+ UInt xbad = undef32(x, notv);
+ // xbad: partially undefined as per notv
+ UInt res = ctz32(xbad);
+ // res: possibly undefined, as per ctz interpretation of xbad
+ UInt resclean = res;
+ VALGRIND_MAKE_MEM_DEFINED(&resclean, sizeof(resclean));
+ if (expect_err)
+ fprintf(stderr, "Expect: ERROR\n");
+ else
+ fprintf(stderr, "Expect: no error\n");
+ VALGRIND_CHECK_VALUE_IS_DEFINED(res);
+ fprintf(stderr, "ctz32 ( arg=0x%08x, undefbits=0x%08x ) = %d\n",
+ x, notv, resclean);
+ fprintf(stderr, "\n");
+}
+
+
+void try16 ( UInt expect_err, UInt x, UInt notv )
+{
+ // x, notv: clean
+ UInt xbad = undef32(x, notv);
+ // xbad: partially undefined as per notv
+ UInt res = ctz16(xbad & 0xFFFF);
+ // res: possibly undefined, as per ctz interpretation of xbad
+ UInt resclean = res;
+ VALGRIND_MAKE_MEM_DEFINED(&resclean, sizeof(resclean));
+ if (expect_err)
+ fprintf(stderr, "Expect: ERROR\n");
+ else
+ fprintf(stderr, "Expect: no error\n");
+ VALGRIND_CHECK_VALUE_IS_DEFINED(res);
+ fprintf(stderr, "ctz16 ( arg=0x%08x, undefbits=0x%08x ) = %d\n",
+ x, notv, resclean);
+ fprintf(stderr, "\n");
+}
+
+
+int main ( void )
+{
+ fprintf(stderr, "\n");
+
+ fprintf(stderr, "======== 32-bit cases ========\n\n");
+
+ // err? ctz-arg badbits
+ try32( 0, 0x10, 0 );
+ try32( 1, 0x10, 1 );
+ try32( 1, 0x10, 2 );
+ try32( 1, 0x10, 4 );
+ try32( 1, 0x10, 8 );
+ try32( 1, 0x10, 0x10 );
+ try32( 0, 0x10, 0x20 );
+ try32( 0, 0x10, 0x40 );
+ try32( 0, 0x10, 0x80 );
+ try32( 0, 0x10, 0x40000000 );
+ try32( 0, 0x10, 0x80000000 );
+
+ try32( 0, 0, 0 );
+ try32( 1, 0, 2 );
+ try32( 1, 0, 0x80000000 );
+ try32( 0, 0x40000000, 0x80000000 );
+ try32( 1, 0x40000000, 0x80010000 );
+
+ try32( 0, 0xFFFFFFFF, 0 );
+ try32( 0, 0xFFFFFFFF, 2 );
+
+ try32( 0, 0xFFFFFFFE, 0 );
+ try32( 1, 0xFFFFFFFE, 1 );
+ try32( 1, 0xFFFFFFFE, 2 );
+ try32( 0, 0xFFFFFFFE, 4 );
+
+ fprintf(stderr, "======== 16-bit cases ========\n\n");
+
+ // err? ctz-arg badbits
+ try16( 0, 0x10, 0 );
+ try16( 1, 0x10, 1 );
+ try16( 1, 0x10, 2 );
+ try16( 1, 0x10, 4 );
+ try16( 1, 0x10, 8 );
+ try16( 1, 0x10, 0x10 );
+ try16( 0, 0x10, 0x20 );
+ try16( 0, 0x10, 0x40 );
+ try16( 0, 0x10, 0x80 );
+ try16( 0, 0x10, 0x4000 );
+ try16( 0, 0x10, 0x8000 );
+
+ try16( 0, 0x10, 0x10000 );
+
+ return 0;
+}
Added: branches/ICC111/memcheck/tests/x86/bsf32.stderr.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/bsf32.stderr.exp (rev 0)
+++ branches/ICC111/memcheck/tests/x86/bsf32.stderr.exp 2009-10-09 00:26:55 UTC (rev 10900)
@@ -0,0 +1,182 @@
+
+======== 32-bit cases ========
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:90)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:91)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:92)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:93)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:94)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 115900404
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:102)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 115900404
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:103)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 115900404
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 30
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:105)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 30
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 0
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 0
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 1
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:111)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 1
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try32 (bsf32.c:55)
+ by 0x........: main (bsf32.c:112)
+ Address 0x........ is on thread 1's stack
+
+ctz32 ( arg=0x........, undefbits=0x........ ) = 1
+
+Expect: no error
+ctz32 ( arg=0x........, undefbits=0x........ ) = 1
+
+======== 16-bit cases ========
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf32.c:75)
+ by 0x........: main (bsf32.c:119)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf32.c:75)
+ by 0x........: main (bsf32.c:120)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf32.c:75)
+ by 0x........: main (bsf32.c:121)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf32.c:75)
+ by 0x........: main (bsf32.c:122)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: ERROR
+Uninitialised byte(s) found during client check request
+ at 0x........: try16 (bsf32.c:75)
+ by 0x........: main (bsf32.c:123)
+ Address 0x........ is on thread 1's stack
+
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
+Expect: no error
+ctz16 ( arg=0x........, undefbits=0x........ ) = 4
+
Added: branches/ICC111/memcheck/tests/x86/bsf32.stdout.exp
===================================================================
Added: branches/ICC111/memcheck/tests/x86/bsf32.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/x86/bsf32.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/x86/bsf32.vgtest 2009-10-09 00:26:55 UTC (rev 10900)
@@ -0,0 +1,2 @@
+prog: bsf32
+vgopts: -q
|
|
From: <sv...@va...> - 2009-10-09 00:05:14
|
Author: sewardj
Date: 2009-10-09 01:04:51 +0100 (Fri, 09 Oct 2009)
New Revision: 10899
Log:
Add tests for PMOVMSKB for x86 and amd64.
Added:
branches/ICC111/memcheck/tests/amd64/pmovmskb64.c
branches/ICC111/memcheck/tests/amd64/pmovmskb64.stderr.exp
branches/ICC111/memcheck/tests/amd64/pmovmskb64.stdout.exp
branches/ICC111/memcheck/tests/amd64/pmovmskb64.vgtest
branches/ICC111/memcheck/tests/x86/pmovmskb32.c
branches/ICC111/memcheck/tests/x86/pmovmskb32.stderr.exp
branches/ICC111/memcheck/tests/x86/pmovmskb32.stdout.exp
branches/ICC111/memcheck/tests/x86/pmovmskb32.vgtest
Modified:
branches/ICC111/memcheck/tests/amd64/Makefile.am
branches/ICC111/memcheck/tests/x86/Makefile.am
Modified: branches/ICC111/memcheck/tests/amd64/Makefile.am
===================================================================
--- branches/ICC111/memcheck/tests/amd64/Makefile.am 2009-10-08 17:26:07 UTC (rev 10898)
+++ branches/ICC111/memcheck/tests/amd64/Makefile.am 2009-10-09 00:04:51 UTC (rev 10899)
@@ -16,12 +16,17 @@
fxsave-amd64.vgtest fxsave-amd64.stdout.exp fxsave-amd64.stderr.exp \
int3-amd64.vgtest int3-amd64.stdout.exp int3-amd64.stderr.exp \
more_x87_fp.stderr.exp more_x87_fp.stdout.exp more_x87_fp.vgtest \
+ pmovmskb64.stderr.exp pmovmskb64.stdout.exp pmovmskb64.vgtest \
sse_memory.stderr.exp sse_memory.stdout.exp sse_memory.vgtest \
xor-undef-amd64.stderr.exp xor-undef-amd64.stdout.exp \
xor-undef-amd64.vgtest
-check_PROGRAMS = bt_everything bug132146 fxsave-amd64 \
- xor-undef-amd64
+check_PROGRAMS = \
+ bt_everything \
+ bug132146 \
+ fxsave-amd64 \
+ pmovmskb64 \
+ xor-undef-amd64
# DDD: not sure if these ones should work on Darwin or not... if not, should
# be moved into amd64-linux/.
Added: branches/ICC111/memcheck/tests/amd64/pmovmskb64.c
===================================================================
--- branches/ICC111/memcheck/tests/amd64/pmovmskb64.c (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/pmovmskb64.c 2009-10-09 00:04:51 UTC (rev 10899)
@@ -0,0 +1,96 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "tests/malloc.h"
+#include <string.h>
+
+typedef unsigned char V128[16];
+typedef unsigned char V64[8];
+typedef unsigned int UInt;
+typedef signed int Int;
+typedef unsigned char UChar;
+typedef unsigned long long int ULong;
+
+static UChar randUChar ( void )
+{
+ static UInt seed = 80021;
+ seed = 1103515245 * seed + 12345;
+ return (seed >> 17) & 0xFF;
+}
+
+static void randV128 ( V128* v )
+{
+ Int i;
+ for (i = 0; i < 16; i++)
+ (*v)[i] = randUChar();
+}
+
+static void randV64 ( V64* v )
+{
+ Int i;
+ for (i = 0; i < 8; i++)
+ (*v)[i] = randUChar();
+}
+
+static void showV128 ( V128* v )
+{
+ Int i;
+ for (i = 0; i < 16; i++)
+ printf("%02x", (Int)(*v)[i]);
+}
+
+static void showV64 ( V64* v )
+{
+ Int i;
+ for (i = 0; i < 8; i++)
+ printf("%02x", (Int)(*v)[i]);
+}
+
+ULong do_pmovmskb_xmm_r64 ( V128* arg )
+{
+ ULong res;
+ __asm__ __volatile__(
+ "movupd (%1), %%xmm11" "\n\t"
+ "pmovmskb %%xmm11, %%r15" "\n\t"
+ "movq %%r15, %0" "\n"
+ : /*out*/ "=r"(res) : /*in*/ "r"(arg)
+ : /*trash*/"memory","xmm1","r15"
+ );
+ return res;
+}
+
+ULong do_pmovmskb_mmx_r64 ( V64* arg )
+{
+ ULong res;
+ __asm__ __volatile__(
+ "movq (%1), %%mm1" "\n\t"
+ "pmovmskb %%mm1, %0" "\n"
+ : /*out*/ "=r"(res) : /*in*/ "r"(arg)
+ : /*trash*/"memory","mm1"
+ );
+ return res;
+}
+
+int main ( void )
+{
+ V128 argL;
+ V64 argS;
+ UInt res, i;
+ UChar* undef = malloc(1);
+ for (i = 0; i < 10; i++) {
+ randV128( &argL );
+ //if (i == 9) argL[5] = *undef;
+ res = do_pmovmskb_xmm_r64( &argL );
+ showV128( &argL );
+ printf(" %08x\n", res );
+ }
+ for (i = 0; i < 10; i++) {
+ randV64( &argS );
+ res = do_pmovmskb_mmx_r64( &argS );
+ showV64( &argS );
+ printf(" %08x\n", res );
+ }
+ free(undef);
+ return 0;
+}
Added: branches/ICC111/memcheck/tests/amd64/pmovmskb64.stderr.exp
===================================================================
Added: branches/ICC111/memcheck/tests/amd64/pmovmskb64.stdout.exp
===================================================================
--- branches/ICC111/memcheck/tests/amd64/pmovmskb64.stdout.exp (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/pmovmskb64.stdout.exp 2009-10-09 00:04:51 UTC (rev 10899)
@@ -0,0 +1,20 @@
+00571784494af2981ecac9199de37551 000036c8
+3bd127afa6e9c3690d6a95fac528657d 00001c7a
+501eefeec0d8b84784c4457d8560b160 0000537c
+b244a056e51599fe2751bca75afbd2b6 0000ecd5
+382dccdbc2829139fd673a5c2148a319 0000417c
+179e655064dc2a846b3e625d19775d06 000000a2
+e540bc6839c44b4a36ed3550df9899d8 0000f225
+979b83b70eb840d7856c13b8709950cb 0000a9af
+8315cab0121ab056db93c0f8294addf9 0000cf4d
+5df605a7d127a7d31f195c53c95bf85f 000050da
+3d6603cf39008e39 00000048
+979569ee6d5cbcd8 000000cb
+966cf73d98a42d54 00000035
+e87fc9cb92bba120 0000007d
+40ef72e29bf3afcf 000000fa
+172ebcce16c982d1 000000ec
+6eb865944fab9d36 0000006a
+8adae4bb36b59768 0000006f
+b76e2305226ee0f4 000000c1
+069b4435908d7b40 00000032
Added: branches/ICC111/memcheck/tests/amd64/pmovmskb64.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/amd64/pmovmskb64.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/amd64/pmovmskb64.vgtest 2009-10-09 00:04:51 UTC (rev 10899)
@@ -0,0 +1,2 @@
+prog: pmovmskb64
+vgopts: -q
Modified: branches/ICC111/memcheck/tests/x86/Makefile.am
===================================================================
--- branches/ICC111/memcheck/tests/x86/Makefile.am 2009-10-08 17:26:07 UTC (rev 10898)
+++ branches/ICC111/memcheck/tests/x86/Makefile.am 2009-10-09 00:04:51 UTC (rev 10899)
@@ -20,6 +20,7 @@
sse2_memory.stderr.exp sse2_memory.stdout.exp sse2_memory.vgtest \
tronical.stderr.exp tronical.vgtest \
more_x86_fp.stderr.exp more_x86_fp.stdout.exp more_x86_fp.vgtest \
+ pmovmskb32.stderr.exp pmovmskb32.stdout.exp pmovmskb32.vgtest \
fprem.stderr.exp fprem.stdout.exp fprem.vgtest \
xor-undef-x86.stderr.exp xor-undef-x86.stdout.exp \
xor-undef-x86.vgtest
@@ -31,6 +32,7 @@
fprem \
fxsave \
more_x86_fp \
+ pmovmskb32 \
pushfpopf \
pushfw_x86 \
pushpopmem \
Added: branches/ICC111/memcheck/tests/x86/pmovmskb32.c
===================================================================
--- branches/ICC111/memcheck/tests/x86/pmovmskb32.c (rev 0)
+++ branches/ICC111/memcheck/tests/x86/pmovmskb32.c 2009-10-09 00:04:51 UTC (rev 10899)
@@ -0,0 +1,94 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "tests/malloc.h"
+#include <string.h>
+
+typedef unsigned char V128[16];
+typedef unsigned char V64[8];
+typedef unsigned int UInt;
+typedef signed int Int;
+typedef unsigned char UChar;
+
+static UChar randUChar ( void )
+{
+ static UInt seed = 80021;
+ seed = 1103515245 * seed + 12345;
+ return (seed >> 17) & 0xFF;
+}
+
+static void randV128 ( V128* v )
+{
+ Int i;
+ for (i = 0; i < 16; i++)
+ (*v)[i] = randUChar();
+}
+
+static void randV64 ( V64* v )
+{
+ Int i;
+ for (i = 0; i < 8; i++)
+ (*v)[i] = randUChar();
+}
+
+static void showV128 ( V128* v )
+{
+ Int i;
+ for (i = 0; i < 16; i++)
+ printf("%02x", (Int)(*v)[i]);
+}
+
+static void showV64 ( V64* v )
+{
+ Int i;
+ for (i = 0; i < 8; i++)
+ printf("%02x", (Int)(*v)[i]);
+}
+
+UInt do_pmovmskb_xmm_r32 ( V128* arg )
+{
+ UInt res;
+ __asm__ __volatile__(
+ "movupd (%1), %%xmm1" "\n\t"
+ "pmovmskb %%xmm1, %0" "\n"
+ : /*out*/ "=r"(res) : /*in*/ "r"(arg)
+ : /*trash*/"memory","xmm1"
+ );
+ return res;
+}
+
+UInt do_pmovmskb_mmx_r32 ( V64* arg )
+{
+ UInt res;
+ __asm__ __volatile__(
+ "movq (%1), %%mm1" "\n\t"
+ "pmovmskb %%mm1, %0" "\n"
+ : /*out*/ "=r"(res) : /*in*/ "r"(arg)
+ : /*trash*/"memory","mm1"
+ );
+ return res;
+}
+
+int main ( void )
+{
+ V128 argL;
+ V64 argS;
+ UInt res, i;
+ UChar* undef = malloc(1);
+ for (i = 0; i < 10; i++) {
+ randV128( &argL );
+ //if (i == 9) argL[5] = *undef;
+ res = do_pmovmskb_xmm_r32( &argL );
+ showV128( &argL );
+ printf(" %08x\n", res );
+ }
+ for (i = 0; i < 10; i++) {
+ randV64( &argS );
+ res = do_pmovmskb_mmx_r32( &argS );
+ showV64( &argS );
+ printf(" %08x\n", res );
+ }
+ free(undef);
+ return 0;
+}
Added: branches/ICC111/memcheck/tests/x86/pmovmskb32.stderr.exp
===================================================================
Added: branches/ICC111/memcheck/tests/x86/pmovmskb32.stdout.exp
===================================================================
--- branches/ICC111/memcheck/tests/x86/pmovmskb32.stdout.exp (rev 0)
+++ branches/ICC111/memcheck/tests/x86/pmovmskb32.stdout.exp 2009-10-09 00:04:51 UTC (rev 10899)
@@ -0,0 +1,20 @@
+00571784494af2981ecac9199de37551 000036c8
+3bd127afa6e9c3690d6a95fac528657d 00001c7a
+501eefeec0d8b84784c4457d8560b160 0000537c
+b244a056e51599fe2751bca75afbd2b6 0000ecd5
+382dccdbc2829139fd673a5c2148a319 0000417c
+179e655064dc2a846b3e625d19775d06 000000a2
+e540bc6839c44b4a36ed3550df9899d8 0000f225
+979b83b70eb840d7856c13b8709950cb 0000a9af
+8315cab0121ab056db93c0f8294addf9 0000cf4d
+5df605a7d127a7d31f195c53c95bf85f 000050da
+3d6603cf39008e39 00000048
+979569ee6d5cbcd8 000000cb
+966cf73d98a42d54 00000035
+e87fc9cb92bba120 0000007d
+40ef72e29bf3afcf 000000fa
+172ebcce16c982d1 000000ec
+6eb865944fab9d36 0000006a
+8adae4bb36b59768 0000006f
+b76e2305226ee0f4 000000c1
+069b4435908d7b40 00000032
Added: branches/ICC111/memcheck/tests/x86/pmovmskb32.vgtest
===================================================================
--- branches/ICC111/memcheck/tests/x86/pmovmskb32.vgtest (rev 0)
+++ branches/ICC111/memcheck/tests/x86/pmovmskb32.vgtest 2009-10-09 00:04:51 UTC (rev 10899)
@@ -0,0 +1,3 @@
+prog: pmovmskb32
+vgopts: -q
+prereq: ../../../tests/x86_amd64_features x86-sse2
|