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
(18) |
2
(1) |
3
(17) |
4
(10) |
5
(18) |
6
(17) |
|
7
(21) |
8
(25) |
9
(16) |
10
(1) |
11
(4) |
12
(27) |
13
(13) |
|
14
(11) |
15
(19) |
16
(18) |
17
(14) |
18
(25) |
19
(23) |
20
(22) |
|
21
(29) |
22
(16) |
23
(17) |
24
(16) |
25
|
26
(4) |
27
(21) |
|
28
(15) |
29
(19) |
30
(15) |
31
(6) |
|
|
|
|
From: <sv...@va...> - 2012-10-07 21:59:50
|
florian 2012-10-07 22:59:42 +0100 (Sun, 07 Oct 2012)
New Revision: 13031
Log:
This is the 2nd installment of the cache info reorganisation.
The host's VexArchInfo is passed to the tool instrumentation
functions. Purely mechanic patch.
Modified files:
trunk/cachegrind/cg_main.c
trunk/callgrind/main.c
trunk/coregrind/m_tooliface.c
trunk/coregrind/m_translate.c
trunk/coregrind/pub_core_tooliface.h
trunk/drd/drd_load_store.c
trunk/drd/drd_load_store.h
trunk/exp-bbv/bbv_main.c
trunk/exp-dhat/dh_main.c
trunk/exp-sgcheck/h_main.c
trunk/exp-sgcheck/h_main.h
trunk/helgrind/hg_main.c
trunk/include/pub_tool_tooliface.h
trunk/lackey/lk_main.c
trunk/massif/ms_main.c
trunk/memcheck/mc_include.h
trunk/memcheck/mc_translate.c
trunk/none/nl_main.c
Modified: trunk/lackey/lk_main.c (+1 -0)
===================================================================
--- trunk/lackey/lk_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/lackey/lk_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -605,6 +605,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
IRDirty* di;
Modified: trunk/memcheck/mc_translate.c (+1 -0)
===================================================================
--- trunk/memcheck/mc_translate.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/memcheck/mc_translate.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -5302,6 +5302,7 @@
IRSB* sb_in,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Bool verboze = 0||False;
Modified: trunk/helgrind/hg_main.c (+1 -0)
===================================================================
--- trunk/helgrind/hg_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/helgrind/hg_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -4326,6 +4326,7 @@
IRSB* bbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i;
Modified: trunk/exp-dhat/dh_main.c (+1 -0)
===================================================================
--- trunk/exp-dhat/dh_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/exp-dhat/dh_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -874,6 +874,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i, n = 0;
Modified: trunk/coregrind/m_tooliface.c (+2 -1)
===================================================================
--- trunk/coregrind/m_tooliface.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/coregrind/m_tooliface.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -41,7 +41,8 @@
void VG_(basic_tool_funcs)(
void(*post_clo_init)(void),
IRSB*(*instrument)(VgCallbackClosure*, IRSB*,
- VexGuestLayout*, VexGuestExtents*, IRType, IRType),
+ VexGuestLayout*, VexGuestExtents*, VexArchInfo*,
+ IRType, IRType),
void(*fini)(Int)
)
{
Modified: trunk/massif/ms_main.c (+1 -0)
===================================================================
--- trunk/massif/ms_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/massif/ms_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -2117,6 +2117,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
if (! have_started_executing_code) {
Modified: trunk/drd/drd_load_store.h (+1 -0)
===================================================================
--- trunk/drd/drd_load_store.h 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/drd/drd_load_store.h 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -43,6 +43,7 @@
IRSB* const bb_in,
VexGuestLayout* const layout,
VexGuestExtents* const vge,
+ VexArchInfo* const archinfo_host,
IRType const gWordTy,
IRType const hWordTy);
void DRD_(trace_mem_access)(const Addr addr, const SizeT size,
Modified: trunk/drd/drd_load_store.c (+1 -0)
===================================================================
--- trunk/drd/drd_load_store.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/drd/drd_load_store.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -581,6 +581,7 @@
IRSB* const bb_in,
VexGuestLayout* const layout,
VexGuestExtents* const vge,
+ VexArchInfo* archinfo_host,
IRType const gWordTy,
IRType const hWordTy)
{
Modified: trunk/cachegrind/cg_main.c (+1 -0)
===================================================================
--- trunk/cachegrind/cg_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/cachegrind/cg_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -952,6 +952,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i, isize;
Modified: trunk/include/pub_tool_tooliface.h (+1 -0)
===================================================================
--- trunk/include/pub_tool_tooliface.h 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/include/pub_tool_tooliface.h 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -220,6 +220,7 @@
IRSB* sb_in,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy,
IRType hWordTy),
Modified: trunk/exp-sgcheck/h_main.h (+1 -0)
===================================================================
--- trunk/exp-sgcheck/h_main.h 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/exp-sgcheck/h_main.h 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -72,6 +72,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy );
#endif
Modified: trunk/exp-sgcheck/h_main.c (+1 -0)
===================================================================
--- trunk/exp-sgcheck/h_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/exp-sgcheck/h_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -609,6 +609,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Bool verboze = 0||False;
Modified: trunk/coregrind/m_translate.c (+7 -3)
===================================================================
--- trunk/coregrind/m_translate.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/coregrind/m_translate.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -222,6 +222,7 @@
IRSB* sb_in,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* vai,
IRType gWordTy,
IRType hWordTy )
{
@@ -230,6 +231,7 @@
sb_in,
layout,
vge,
+ vai,
gWordTy,
hWordTy),
layout,
@@ -261,6 +263,7 @@
IRSB* sb_in,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* vai,
IRType gWordTy,
IRType hWordTy )
{
@@ -1505,15 +1508,16 @@
They are entirely legal but longwinded so as to maximise the
chance of the C typechecker picking up any type snafus. */
IRSB*(*f)(VgCallbackClosure*,
- IRSB*,VexGuestLayout*,VexGuestExtents*,
+ IRSB*,VexGuestLayout*,VexGuestExtents*, VexArchInfo*,
IRType,IRType)
= VG_(clo_vgdb) != Vg_VgdbNo
? tool_instrument_then_gdbserver_if_needed
: VG_(tdict).tool_instrument;
IRSB*(*g)(void*,
- IRSB*,VexGuestLayout*,VexGuestExtents*,
+ IRSB*,VexGuestLayout*,VexGuestExtents*,VexArchInfo*,
IRType,IRType)
- = (IRSB*(*)(void*,IRSB*,VexGuestLayout*,VexGuestExtents*,IRType,IRType))f;
+ = (IRSB*(*)(void*,IRSB*,VexGuestLayout*,VexGuestExtents*,
+ VexArchInfo*,IRType,IRType))f;
vta.instrument1 = g;
}
/* No need for type kludgery here. */
Modified: trunk/memcheck/mc_include.h (+1 -0)
===================================================================
--- trunk/memcheck/mc_include.h 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/memcheck/mc_include.h 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -566,6 +566,7 @@
IRSB* bb_in,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy );
IRSB* MC_(final_tidy) ( IRSB* );
Modified: trunk/exp-bbv/bbv_main.c (+1 -0)
===================================================================
--- trunk/exp-bbv/bbv_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/exp-bbv/bbv_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -347,6 +347,7 @@
static IRSB* bbv_instrument ( VgCallbackClosure* closure,
IRSB* sbIn, VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i,n_instrs=1;
Modified: trunk/coregrind/pub_core_tooliface.h (+1 -1)
===================================================================
--- trunk/coregrind/pub_core_tooliface.h 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/coregrind/pub_core_tooliface.h 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -109,7 +109,7 @@
IRSB* (*tool_instrument) (VgCallbackClosure*,
IRSB*,
VexGuestLayout*, VexGuestExtents*,
- IRType, IRType);
+ VexArchInfo*, IRType, IRType);
void (*tool_fini) (Int);
// VG_(needs).core_errors
Modified: trunk/none/nl_main.c (+1 -0)
===================================================================
--- trunk/none/nl_main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/none/nl_main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -40,6 +40,7 @@
IRSB* bb,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
return bb;
Modified: trunk/callgrind/main.c (+1 -0)
===================================================================
--- trunk/callgrind/main.c 2012-10-07 22:03:27 +01:00 (rev 13030)
+++ trunk/callgrind/main.c 2012-10-07 22:59:42 +01:00 (rev 13031)
@@ -909,6 +909,7 @@
IRSB* sbIn,
VexGuestLayout* layout,
VexGuestExtents* vge,
+ VexArchInfo* archinfo_host,
IRType gWordTy, IRType hWordTy )
{
Int i;
|
|
From: <sv...@va...> - 2012-10-07 21:58:15
|
florian 2012-10-07 22:58:07 +0100 (Sun, 07 Oct 2012)
New Revision: 2549
Log:
Pass VexArchInfo to the instrumentation functions.
Modified files:
trunk/priv/main_main.c
trunk/pub/libvex.h
Modified: trunk/pub/libvex.h (+2 -0)
===================================================================
--- trunk/pub/libvex.h 2012-10-07 20:44:40 +01:00 (rev 2548)
+++ trunk/pub/libvex.h 2012-10-07 22:58:07 +01:00 (rev 2549)
@@ -636,11 +636,13 @@
IRSB*,
VexGuestLayout*,
VexGuestExtents*,
+ VexArchInfo*,
IRType gWordTy, IRType hWordTy );
IRSB* (*instrument2) ( /*callback_opaque*/void*,
IRSB*,
VexGuestLayout*,
VexGuestExtents*,
+ VexArchInfo*,
IRType gWordTy, IRType hWordTy );
IRSB* (*finaltidy) ( IRSB* );
Modified: trunk/priv/main_main.c (+2 -0)
===================================================================
--- trunk/priv/main_main.c 2012-10-07 20:44:40 +01:00 (rev 2548)
+++ trunk/priv/main_main.c 2012-10-07 22:58:07 +01:00 (rev 2549)
@@ -679,6 +679,7 @@
irsb = vta->instrument1(vta->callback_opaque,
irsb, guest_layout,
vta->guest_extents,
+ &vta->archinfo_host,
guest_word_type, host_word_type);
vexAllocSanityCheck();
@@ -686,6 +687,7 @@
irsb = vta->instrument2(vta->callback_opaque,
irsb, guest_layout,
vta->guest_extents,
+ &vta->archinfo_host,
guest_word_type, host_word_type);
if (vex_traceflags & VEX_TRACE_INST) {
|
|
From: <sv...@va...> - 2012-10-07 21:03:34
|
florian 2012-10-07 22:03:27 +0100 (Sun, 07 Oct 2012)
New Revision: 13030
Log:
Use last-level cache for simulation. Even if there are more than
3 cache levels. Update documentation.
Modified files:
trunk/cachegrind/cg-arch.c
trunk/cachegrind/docs/cg-manual.xml
Modified: trunk/cachegrind/cg-arch.c (+0 -2)
===================================================================
--- trunk/cachegrind/cg-arch.c 2012-10-07 21:27:38 +01:00 (rev 13029)
+++ trunk/cachegrind/cg-arch.c 2012-10-07 22:03:27 +01:00 (rev 13030)
@@ -302,8 +302,6 @@
// Extract what we need
i1 = locate_cache(ci, INSN_CACHE, 1);
d1 = locate_cache(ci, DATA_CACHE, 1);
- // FIXME: needs clarification for num_levels > 3 see also warning below
- // FIXME: whether it needs adjustment
ll = locate_cache(ci, UNIFIED_CACHE, ci->num_levels);
if (ll && ci->num_levels > 2) {
Modified: trunk/cachegrind/docs/cg-manual.xml (+3 -3)
===================================================================
--- trunk/cachegrind/docs/cg-manual.xml 2012-10-07 21:27:38 +01:00 (rev 13029)
+++ trunk/cachegrind/docs/cg-manual.xml 2012-10-07 22:03:27 +01:00 (rev 13030)
@@ -20,10 +20,10 @@
unified second-level cache (L2). This exactly matches the configuration of
many modern machines.</para>
-<para>However, some modern machines have three levels of cache. For these
+<para>However, some modern machines have three or four levels of cache. For these
machines (in the cases where Cachegrind can auto-detect the cache
-configuration) Cachegrind simulates the first-level and third-level caches.
-The reason for this choice is that the L3 cache has the most influence on
+configuration) Cachegrind simulates the first-level and last-level caches.
+The reason for this choice is that the last-level cache has the most influence on
runtime, as it masks accesses to main memory. Furthermore, the L1 caches
often have low associativity, so simulating them can detect cases where the
code interacts badly with this cache (eg. traversing a matrix column-wise
|
|
From: <sv...@va...> - 2012-10-07 20:27:44
|
florian 2012-10-07 21:27:38 +0100 (Sun, 07 Oct 2012)
New Revision: 13029
Log:
Fix compile error on ppc. Followup to r13028
Modified files:
trunk/coregrind/m_libcproc.c
Modified: trunk/coregrind/m_libcproc.c (+0 -1)
===================================================================
--- trunk/coregrind/m_libcproc.c 2012-10-07 20:47:04 +01:00 (rev 13028)
+++ trunk/coregrind/m_libcproc.c 2012-10-07 21:27:38 +01:00 (rev 13029)
@@ -738,7 +738,6 @@
Addr endaddr = startaddr + nbytes;
Addr cls;
Addr addr;
- VexArchInfo vai;
VG_(machine_get_VexArchInfo)( NULL, &vai );
cls = vai.ppc_cache_line_szB;
|
|
From: <sv...@va...> - 2012-10-07 19:47:14
|
florian 2012-10-07 20:47:04 +0100 (Sun, 07 Oct 2012)
New Revision: 13028
Log:
This patch is the first installment of the cache info reorganisation.
It's reorg only. No new cache autodetection stuff has been added.
coregrind
pub_tool_cpuid.h is removed as it is no longer exposed to tools.
Its contents has moved to pub_core_cpuid.h.
New file: coregrind/m_cache.c to contain the autodetect code for
cache configurations and define other cache characteristics that
cannot be autodetected (i.e. icaches_maintain_coherence). Most of
cg-arch/x86-amd64.c was moved here. The cache detection code for
x86-64 needs to be fixed to properly initialise VexCacheInfo. It
currently has cachegrind bias.
m_cache.c exports a single function (to coregrind):
VG_(machine_get_cache_info)(VexArchInfo *vai)
This function is called from VG_(machine_get_hwcaps) after hwcaps have
been detected.
cachegrind
Remove cachegrind/cg-{ppc32,ppc43,arm,mips32,s390x,x86-amd64}.c
With the exception of x86/mamd64 those were only establishing a
default cache configuration and that is so small a code snippet that
a separate file is no longer warranted. So, the code was moved to
cg-arch.c. Code was added to extract the relevant info from
x86-amd64.
New function maybe_tweak_LLc which captures the code to massage the
LLc cache configuration into something the simulator can handle. This
was originally in cg-x86-amd64.c but should be used to all architectures.
Changed warning message about missing cache auto-detect feature
to be more useful. Adapted filter-stderr scripts accordingly.
Added files:
trunk/coregrind/m_cache.c
Removed files:
trunk/cachegrind/cg-arm.c
trunk/cachegrind/cg-mips32.c
trunk/cachegrind/cg-ppc32.c
trunk/cachegrind/cg-ppc64.c
trunk/cachegrind/cg-s390x.c
trunk/cachegrind/cg-x86-amd64.c
trunk/include/pub_tool_cpuid.h
Modified files:
trunk/cachegrind/Makefile.am
trunk/cachegrind/cg-arch.c
trunk/cachegrind/cg_arch.h
trunk/cachegrind/tests/filter_stderr
trunk/callgrind/Makefile.am
trunk/callgrind/tests/filter_stderr
trunk/coregrind/Makefile.am
trunk/coregrind/m_libcproc.c
trunk/coregrind/m_machine.c
trunk/coregrind/pub_core_cpuid.h
trunk/coregrind/pub_core_machine.h
trunk/include/Makefile.am
trunk/include/pub_tool_machine.h
Deleted: trunk/cachegrind/cg-s390x.c (+0 -130)
===================================================================
--- trunk/cachegrind/cg-s390x.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-s390x.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,130 +0,0 @@
-/* -*- mode: C; c-basic-offset: 3; -*- */
-
-/*--------------------------------------------------------------------*/
-/*--- s390x-specific definitions. cg-s390x.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Cachegrind, a Valgrind tool for cache
- profiling programs.
-
- Copyright IBM Corp. 2010-2012
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-/* Contributed by Christian Borntraeger */
-
-#if defined(VGA_s390x)
-
-#include "pub_tool_basics.h"
-#include "pub_tool_libcbase.h"
-#include "pub_tool_libcassert.h"
-#include "pub_tool_libcprint.h"
-
-#include "cg_arch.h"
-
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
- Bool all_caches_clo_defined)
-{
- // z900
- //
- // Source:
- // The microarchitecture of the IBM eServer z900 processor
- // IBM Journal of Research and Development
- // Volume 46, Number 4/5, pp 381-395, July/September 2002
- //
- // Split L1 I/D cache
- // Size: 256 kB each
- // Line size: 256 bytes
- // 4-way set associative
- // L2 cache: 16 MB x 2 (16 MB per 10 CPs) (Charles Webb)
-
- // z800
- //
- // Source: Charles Webb from IBM
- //
- // Split L1 I/D cache
- // Size: 256 kB each
- // Line size: 256 bytes
- // 4-way set associative
- // L2 cache: 16 MB (or half that size)
-
- // z990
- //
- // The IBM eServer z990 microprocessor
- // IBM Journal of Research and Development
- // Volume 48, Number 3/4, pp 295-309, May/July 2004
- //
- // Split L1 I/D cache
- // Size: 256 kB each
- // Line size: 256 bytes
- // 4-way set associative
- // L2 cache: 32 MB x 4 (32 MB per book/node) (Charles Webb)
-
- // z890
- //
- // Source: Charles Webb from IBM
- //
- // Split L1 I/D cache
- // Size: 256 kB each
- // Line size: 256 bytes
- // 4-way set associative
- // L2 cache: 32 MB (or half that size)
-
- // z9
- //
- // Source: Charles Webb from IBM
- //
- // Split L1 I/D cache
- // Size: 256 kB each
- // Line size: 256 bytes
- // 4-way set associative
- // L2 cache: 40 MB x 4 (40 MB per book/node)
-
-
- // Set caches to z10 default.
- // See IBM Journal of Research and Development
- // Issue Date: Jan. 2009
- // Volume: 53 Issue:1
- // fixs390: have a table for all available models and check /proc/cpuinfo
- *I1c = (cache_t) { 65536, 4, 256 };
- *D1c = (cache_t) { 131072, 8, 256 };
- *LLc = (cache_t) {50331648, 24, 256 };
-
- // Warn if config not completely specified from cmd line. Note that
- // this message is slightly different from the one we give on x86/AMD64
- // when auto-detection fails; this lets us filter out this one (which is
- // not important) in the regression test suite without filtering the
- // x86/AMD64 one (which we want to see if it ever occurs in the
- // regression test suite).
- //
- // If you change this message, please update
- // cachegrind/tests/filter_stderr!
- //
- if (!all_caches_clo_defined) {
- VG_(dmsg)("Warning: Cannot auto-detect cache config, "
- "assuming z10-EC cache configuration\n");
- }
-}
-
-#endif
-
-/*--------------------------------------------------------------------*/
-/*--- end cg-s390x.c ---*/
-/*--------------------------------------------------------------------*/
Deleted: trunk/cachegrind/cg-ppc64.c (+0 -68)
===================================================================
--- trunk/cachegrind/cg-ppc64.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-ppc64.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,68 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- PPC64-specific definitions. cg-ppc64.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Cachegrind, a Valgrind tool for cache
- profiling programs.
-
- Copyright (C) 2005-2012 Nicholas Nethercote
- nj...@va...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#if defined(VGA_ppc64)
-
-#include "pub_tool_basics.h"
-#include "pub_tool_libcbase.h"
-#include "pub_tool_libcassert.h"
-#include "pub_tool_libcprint.h"
-
-#include "cg_arch.h"
-
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
- Bool all_caches_clo_defined)
-{
- // Set caches to default.
- *I1c = (cache_t) { 65536, 2, 64 };
- *D1c = (cache_t) { 65536, 2, 64 };
- *LLc = (cache_t) { 262144, 8, 64 };
-
- // Warn if config not completely specified from cmd line. Note that
- // this message is slightly different from the one we give on x86/AMD64
- // when auto-detection fails; this lets us filter out this one (which is
- // not important) in the regression test suite without filtering the
- // x86/AMD64 one (which we want to see if it ever occurs in the
- // regression test suite).
- //
- // If you change this message, please update
- // cachegrind/tests/filter_stderr!
- //
- if (!all_caches_clo_defined) {
- VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC64, using one "
- "or more defaults\n");
- }
-}
-
-#endif
-
-/*--------------------------------------------------------------------*/
-/*--- end ---*/
-/*--------------------------------------------------------------------*/
Deleted: trunk/cachegrind/cg-x86-amd64.c (+0 -548)
===================================================================
--- trunk/cachegrind/cg-x86-amd64.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-x86-amd64.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,548 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- x86- and AMD64-specific definitions. cg-x86-amd64.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Cachegrind, a Valgrind tool for cache
- profiling programs.
-
- Copyright (C) 2002-2012 Nicholas Nethercote
- nj...@va...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#if defined(VGA_x86) || defined(VGA_amd64)
-
-#include "pub_tool_basics.h"
-#include "pub_tool_cpuid.h"
-#include "pub_tool_libcbase.h"
-#include "pub_tool_libcassert.h"
-#include "pub_tool_libcprint.h"
-
-#include "cg_arch.h"
-
-// All CPUID info taken from sandpile.org/ia32/cpuid.htm */
-// Probably only works for Intel and AMD chips, and probably only for some of
-// them.
-
-static void micro_ops_warn(Int actual_size, Int used_size, Int line_size)
-{
- VG_(dmsg)("warning: Pentium 4 with %d KB micro-op instruction trace cache\n",
- actual_size);
- VG_(dmsg)(" Simulating a %d KB I-cache with %d B lines\n",
- used_size, line_size);
-}
-
-/* Intel method is truly wretched. We have to do an insane indexing into an
- * array of pre-defined configurations for various parts of the memory
- * hierarchy.
- * According to Intel Processor Identification, App Note 485.
- *
- * If a L3 cache is found, then data for it rather than the L2
- * is returned via *LLc.
- */
-static
-Int Intel_cache_info(Int level, cache_t* I1c, cache_t* D1c, cache_t* LLc)
-{
- Int cpuid1_eax;
- Int cpuid1_ignore;
- Int family;
- Int model;
- UChar info[16];
- Int i, j, trials;
- Bool L2_found = False;
- /* If we see L3 cache info, copy it into L3c. Then, at the end,
- copy it into *LLc. Hence if a L3 cache is specified, *LLc will
- eventually contain a description of it rather than the L2 cache.
- The use of the L3c intermediary makes this process independent
- of the order in which the cache specifications appear in
- info[]. */
- Bool L3_found = False;
- cache_t L3c = { 0, 0, 0 };
-
- if (level < 2) {
- VG_(dmsg)("warning: CPUID level < 2 for Intel processor (%d)\n", level);
- return -1;
- }
-
- /* family/model needed to distinguish code reuse (currently 0x49) */
- VG_(cpuid)(1, 0, &cpuid1_eax, &cpuid1_ignore,
- &cpuid1_ignore, &cpuid1_ignore);
- family = (((cpuid1_eax >> 20) & 0xff) << 4) + ((cpuid1_eax >> 8) & 0xf);
- model = (((cpuid1_eax >> 16) & 0xf) << 4) + ((cpuid1_eax >> 4) & 0xf);
-
- VG_(cpuid)(2, 0, (Int*)&info[0], (Int*)&info[4],
- (Int*)&info[8], (Int*)&info[12]);
- trials = info[0] - 1; /* AL register - bits 0..7 of %eax */
- info[0] = 0x0; /* reset AL */
-
- if (0 != trials) {
- VG_(dmsg)("warning: non-zero CPUID trials for Intel processor (%d)\n",
- trials);
- return -1;
- }
-
- for (i = 0; i < 16; i++) {
-
- switch (info[i]) {
-
- case 0x0: /* ignore zeros */
- break;
-
- /* TLB info, ignore */
- case 0x01: case 0x02: case 0x03: case 0x04: case 0x05:
- case 0x0b:
- case 0x4f: case 0x50: case 0x51: case 0x52: case 0x55:
- case 0x56: case 0x57: case 0x59:
- case 0x5a: case 0x5b: case 0x5c: case 0x5d:
- case 0x76:
- case 0xb0: case 0xb1: case 0xb2:
- case 0xb3: case 0xb4: case 0xba: case 0xc0:
- case 0xca:
- break;
-
- case 0x06: *I1c = (cache_t) { 8, 4, 32 }; break;
- case 0x08: *I1c = (cache_t) { 16, 4, 32 }; break;
- case 0x09: *I1c = (cache_t) { 32, 4, 64 }; break;
- case 0x30: *I1c = (cache_t) { 32, 8, 64 }; break;
-
- case 0x0a: *D1c = (cache_t) { 8, 2, 32 }; break;
- case 0x0c: *D1c = (cache_t) { 16, 4, 32 }; break;
- case 0x0d: *D1c = (cache_t) { 16, 4, 64 }; break;
- case 0x0e: *D1c = (cache_t) { 24, 6, 64 }; break;
- case 0x2c: *D1c = (cache_t) { 32, 8, 64 }; break;
-
- /* IA-64 info -- panic! */
- case 0x10: case 0x15: case 0x1a:
- case 0x88: case 0x89: case 0x8a: case 0x8d:
- case 0x90: case 0x96: case 0x9b:
- VG_(tool_panic)("IA-64 cache detected?!");
-
- /* L3 cache info. */
- case 0x22: L3c = (cache_t) { 512, 4, 64 }; L3_found = True; break;
- case 0x23: L3c = (cache_t) { 1024, 8, 64 }; L3_found = True; break;
- case 0x25: L3c = (cache_t) { 2048, 8, 64 }; L3_found = True; break;
- case 0x29: L3c = (cache_t) { 4096, 8, 64 }; L3_found = True; break;
- case 0x46: L3c = (cache_t) { 4096, 4, 64 }; L3_found = True; break;
- case 0x47: L3c = (cache_t) { 8192, 8, 64 }; L3_found = True; break;
- case 0x4a: L3c = (cache_t) { 6144, 12, 64 }; L3_found = True; break;
- case 0x4b: L3c = (cache_t) { 8192, 16, 64 }; L3_found = True; break;
- case 0x4c: L3c = (cache_t) { 12288, 12, 64 }; L3_found = True; break;
- case 0x4d: L3c = (cache_t) { 16384, 16, 64 }; L3_found = True; break;
- case 0xd0: L3c = (cache_t) { 512, 4, 64 }; L3_found = True; break;
- case 0xd1: L3c = (cache_t) { 1024, 4, 64 }; L3_found = True; break;
- case 0xd2: L3c = (cache_t) { 2048, 4, 64 }; L3_found = True; break;
- case 0xd6: L3c = (cache_t) { 1024, 8, 64 }; L3_found = True; break;
- case 0xd7: L3c = (cache_t) { 2048, 8, 64 }; L3_found = True; break;
- case 0xd8: L3c = (cache_t) { 4096, 8, 64 }; L3_found = True; break;
- case 0xdc: L3c = (cache_t) { 1536, 12, 64 }; L3_found = True; break;
- case 0xdd: L3c = (cache_t) { 3072, 12, 64 }; L3_found = True; break;
- case 0xde: L3c = (cache_t) { 6144, 12, 64 }; L3_found = True; break;
- case 0xe2: L3c = (cache_t) { 2048, 16, 64 }; L3_found = True; break;
- case 0xe3: L3c = (cache_t) { 4096, 16, 64 }; L3_found = True; break;
- case 0xe4: L3c = (cache_t) { 8192, 16, 64 }; L3_found = True; break;
- case 0xea: L3c = (cache_t) { 12288, 24, 64 }; L3_found = True; break;
- case 0xeb: L3c = (cache_t) { 18432, 24, 64 }; L3_found = True; break;
- case 0xec: L3c = (cache_t) { 24576, 24, 64 }; L3_found = True; break;
-
- /* Described as "MLC" in Intel documentation */
- case 0x21: *LLc = (cache_t) { 256, 8, 64 }; L2_found = True; break;
-
- /* These are sectored, whatever that means */
- case 0x39: *LLc = (cache_t) { 128, 4, 64 }; L2_found = True; break;
- case 0x3c: *LLc = (cache_t) { 256, 4, 64 }; L2_found = True; break;
-
- /* If a P6 core, this means "no L2 cache".
- If a P4 core, this means "no L3 cache".
- We don't know what core it is, so don't issue a warning. To detect
- a missing L2 cache, we use 'L2_found'. */
- case 0x40:
- break;
-
- case 0x41: *LLc = (cache_t) { 128, 4, 32 }; L2_found = True; break;
- case 0x42: *LLc = (cache_t) { 256, 4, 32 }; L2_found = True; break;
- case 0x43: *LLc = (cache_t) { 512, 4, 32 }; L2_found = True; break;
- case 0x44: *LLc = (cache_t) { 1024, 4, 32 }; L2_found = True; break;
- case 0x45: *LLc = (cache_t) { 2048, 4, 32 }; L2_found = True; break;
- case 0x48: *LLc = (cache_t) { 3072, 12, 64 }; L2_found = True; break;
- case 0x4e: *LLc = (cache_t) { 6144, 24, 64 }; L2_found = True; break;
- case 0x49:
- if (family == 15 && model == 6) {
- /* On Xeon MP (family F, model 6), this is for L3 */
- L3c = (cache_t) { 4096, 16, 64 }; L3_found = True;
- } else {
- *LLc = (cache_t) { 4096, 16, 64 }; L2_found = True;
- }
- break;
-
- /* These are sectored, whatever that means */
- case 0x60: *D1c = (cache_t) { 16, 8, 64 }; break; /* sectored */
- case 0x66: *D1c = (cache_t) { 8, 4, 64 }; break; /* sectored */
- case 0x67: *D1c = (cache_t) { 16, 4, 64 }; break; /* sectored */
- case 0x68: *D1c = (cache_t) { 32, 4, 64 }; break; /* sectored */
-
- /* HACK ALERT: Instruction trace cache -- capacity is micro-ops based.
- * conversion to byte size is a total guess; treat the 12K and 16K
- * cases the same since the cache byte size must be a power of two for
- * everything to work!. Also guessing 32 bytes for the line size...
- */
- case 0x70: /* 12K micro-ops, 8-way */
- *I1c = (cache_t) { 16, 8, 32 };
- micro_ops_warn(12, 16, 32);
- break;
- case 0x71: /* 16K micro-ops, 8-way */
- *I1c = (cache_t) { 16, 8, 32 };
- micro_ops_warn(16, 16, 32);
- break;
- case 0x72: /* 32K micro-ops, 8-way */
- *I1c = (cache_t) { 32, 8, 32 };
- micro_ops_warn(32, 32, 32);
- break;
-
- /* not sectored, whatever that might mean */
- case 0x78: *LLc = (cache_t) { 1024, 4, 64 }; L2_found = True; break;
-
- /* These are sectored, whatever that means */
- case 0x79: *LLc = (cache_t) { 128, 8, 64 }; L2_found = True; break;
- case 0x7a: *LLc = (cache_t) { 256, 8, 64 }; L2_found = True; break;
- case 0x7b: *LLc = (cache_t) { 512, 8, 64 }; L2_found = True; break;
- case 0x7c: *LLc = (cache_t) { 1024, 8, 64 }; L2_found = True; break;
- case 0x7d: *LLc = (cache_t) { 2048, 8, 64 }; L2_found = True; break;
- case 0x7e: *LLc = (cache_t) { 256, 8, 128 }; L2_found = True; break;
- case 0x7f: *LLc = (cache_t) { 512, 2, 64 }; L2_found = True; break;
- case 0x80: *LLc = (cache_t) { 512, 8, 64 }; L2_found = True; break;
- case 0x81: *LLc = (cache_t) { 128, 8, 32 }; L2_found = True; break;
- case 0x82: *LLc = (cache_t) { 256, 8, 32 }; L2_found = True; break;
- case 0x83: *LLc = (cache_t) { 512, 8, 32 }; L2_found = True; break;
- case 0x84: *LLc = (cache_t) { 1024, 8, 32 }; L2_found = True; break;
- case 0x85: *LLc = (cache_t) { 2048, 8, 32 }; L2_found = True; break;
- case 0x86: *LLc = (cache_t) { 512, 4, 64 }; L2_found = True; break;
- case 0x87: *LLc = (cache_t) { 1024, 8, 64 }; L2_found = True; break;
-
- /* Ignore prefetch information */
- case 0xf0: case 0xf1:
- break;
-
- case 0xff:
- j = 0;
- VG_(cpuid)(4, j++, (Int*)&info[0], (Int*)&info[4],
- (Int*)&info[8], (Int*)&info[12]);
-
- while ((info[0] & 0x1f) != 0) {
- UInt assoc = ((*(UInt *)&info[4] >> 22) & 0x3ff) + 1;
- UInt parts = ((*(UInt *)&info[4] >> 12) & 0x3ff) + 1;
- UInt line_size = (*(UInt *)&info[4] & 0x7ff) + 1;
- UInt sets = *(UInt *)&info[8] + 1;
- cache_t c;
-
- c.size = assoc * parts * line_size * sets / 1024;
- c.assoc = assoc;
- c.line_size = line_size;
-
- switch ((info[0] & 0xe0) >> 5)
- {
- case 1:
- switch (info[0] & 0x1f)
- {
- case 1: *D1c = c; break;
- case 2: *I1c = c; break;
- case 3: VG_(dmsg)("warning: L1 unified cache ignored\n"); break;
- default: VG_(dmsg)("warning: L1 cache of unknown type ignored\n"); break;
- }
- break;
- case 2:
- switch (info[0] & 0x1f)
- {
- case 1: VG_(dmsg)("warning: L2 data cache ignored\n"); break;
- case 2: VG_(dmsg)("warning: L2 instruction cache ignored\n"); break;
- case 3: *LLc = c; L2_found = True; break;
- default: VG_(dmsg)("warning: L2 cache of unknown type ignored\n"); break;
- }
- break;
- case 3:
- switch (info[0] & 0x1f)
- {
- case 1: VG_(dmsg)("warning: L3 data cache ignored\n"); break;
- case 2: VG_(dmsg)("warning: L3 instruction cache ignored\n"); break;
- case 3: L3c = c; L3_found = True; break;
- default: VG_(dmsg)("warning: L3 cache of unknown type ignored\n"); break;
- }
- break;
- default:
- VG_(dmsg)("warning: L%u cache ignored\n", (info[0] & 0xe0) >> 5);
- break;
- }
-
- VG_(cpuid)(4, j++, (Int*)&info[0], (Int*)&info[4],
- (Int*)&info[8], (Int*)&info[12]);
- }
- break;
-
- default:
- VG_(dmsg)("warning: Unknown Intel cache config value (0x%x), ignoring\n",
- info[i]);
- break;
- }
- }
-
- /* If we found a L3 cache, throw away the L2 data and use the L3's instead. */
- if (L3_found) {
- VG_(dmsg)("warning: L3 cache found, using its data for the LL simulation.\n");
- *LLc = L3c;
- L2_found = True;
- }
-
- if (!L2_found)
- VG_(dmsg)("warning: L2 cache not installed, ignore LL results.\n");
-
- return 0;
-}
-
-/* AMD method is straightforward, just extract appropriate bits from the
- * result registers.
- *
- * Bits, for D1 and I1:
- * 31..24 data L1 cache size in KBs
- * 23..16 data L1 cache associativity (FFh=full)
- * 15.. 8 data L1 cache lines per tag
- * 7.. 0 data L1 cache line size in bytes
- *
- * Bits, for L2:
- * 31..16 unified L2 cache size in KBs
- * 15..12 unified L2 cache associativity (0=off, FFh=full)
- * 11.. 8 unified L2 cache lines per tag
- * 7.. 0 unified L2 cache line size in bytes
- *
- * #3 The AMD K7 processor's L2 cache must be configured prior to relying
- * upon this information. (Whatever that means -- njn)
- *
- * Also, according to Cyrille Chepelov, Duron stepping A0 processors (model
- * 0x630) have a bug and misreport their L2 size as 1KB (it's really 64KB),
- * so we detect that.
- *
- * Returns 0 on success, non-zero on failure. As with the Intel code
- * above, if a L3 cache is found, then data for it rather than the L2
- * is returned via *LLc.
- */
-
-/* A small helper */
-static Int decode_AMD_cache_L2_L3_assoc ( Int bits_15_12 )
-{
- /* Decode a L2/L3 associativity indication. It is encoded
- differently from the I1/D1 associativity. Returns 1
- (direct-map) as a safe but suboptimal result for unknown
- encodings. */
- switch (bits_15_12 & 0xF) {
- case 1: return 1; case 2: return 2;
- case 4: return 4; case 6: return 8;
- case 8: return 16; case 0xA: return 32;
- case 0xB: return 48; case 0xC: return 64;
- case 0xD: return 96; case 0xE: return 128;
- case 0xF: /* fully associative */
- case 0: /* L2/L3 cache or TLB is disabled */
- default:
- return 1;
- }
-}
-
-static
-Int AMD_cache_info(cache_t* I1c, cache_t* D1c, cache_t* LLc)
-{
- UInt ext_level;
- UInt dummy, model;
- UInt I1i, D1i, L2i, L3i;
-
- VG_(cpuid)(0x80000000, 0, &ext_level, &dummy, &dummy, &dummy);
-
- if (0 == (ext_level & 0x80000000) || ext_level < 0x80000006) {
- VG_(dmsg)("warning: ext_level < 0x80000006 for AMD processor (0x%x)\n",
- ext_level);
- return -1;
- }
-
- VG_(cpuid)(0x80000005, 0, &dummy, &dummy, &D1i, &I1i);
- VG_(cpuid)(0x80000006, 0, &dummy, &dummy, &L2i, &L3i);
-
- VG_(cpuid)(0x1, 0, &model, &dummy, &dummy, &dummy);
-
- /* Check for Duron bug */
- if (model == 0x630) {
- VG_(dmsg)("warning: Buggy Duron stepping A0. Assuming L2 size=65536 bytes\n");
- L2i = (64 << 16) | (L2i & 0xffff);
- }
-
- D1c->size = (D1i >> 24) & 0xff;
- D1c->assoc = (D1i >> 16) & 0xff;
- D1c->line_size = (D1i >> 0) & 0xff;
-
- I1c->size = (I1i >> 24) & 0xff;
- I1c->assoc = (I1i >> 16) & 0xff;
- I1c->line_size = (I1i >> 0) & 0xff;
-
- LLc->size = (L2i >> 16) & 0xffff; /* Nb: different bits used for L2 */
- LLc->assoc = decode_AMD_cache_L2_L3_assoc((L2i >> 12) & 0xf);
- LLc->line_size = (L2i >> 0) & 0xff;
-
- if (((L3i >> 18) & 0x3fff) > 0) {
- /* There's an L3 cache. Replace *LLc contents with this info. */
- /* NB: the test in the if is "if L3 size > 0 ". I don't know if
- this is the right way to test presence-vs-absence of L3. I
- can't see any guidance on this in the AMD documentation. */
- LLc->size = ((L3i >> 18) & 0x3fff) * 512;
- LLc->assoc = decode_AMD_cache_L2_L3_assoc((L3i >> 12) & 0xf);
- LLc->line_size = (L3i >> 0) & 0xff;
- VG_(dmsg)("warning: L3 cache found, using its data for the L2 simulation.\n");
- }
-
- return 0;
-}
-
-static
-Int get_caches_from_CPUID(cache_t* I1c, cache_t* D1c, cache_t* LLc)
-{
- Int level, ret;
- Char vendor_id[13];
-
- if (!VG_(has_cpuid)()) {
- VG_(dmsg)("CPUID instruction not supported\n");
- return -1;
- }
-
- VG_(cpuid)(0, 0, &level, (int*)&vendor_id[0],
- (int*)&vendor_id[8], (int*)&vendor_id[4]);
- vendor_id[12] = '\0';
-
- if (0 == level) {
- VG_(dmsg)("CPUID level is 0, early Pentium?\n");
- return -1;
- }
-
- /* Only handling Intel and AMD chips... no Cyrix, Transmeta, etc */
- if (0 == VG_(strcmp)(vendor_id, "GenuineIntel")) {
- ret = Intel_cache_info(level, I1c, D1c, LLc);
-
- } else if (0 == VG_(strcmp)(vendor_id, "AuthenticAMD")) {
- ret = AMD_cache_info(I1c, D1c, LLc);
-
- } else if (0 == VG_(strcmp)(vendor_id, "CentaurHauls")) {
- /* Total kludge. Pretend to be a VIA Nehemiah. */
- D1c->size = 64;
- D1c->assoc = 16;
- D1c->line_size = 16;
- I1c->size = 64;
- I1c->assoc = 4;
- I1c->line_size = 16;
- LLc->size = 64;
- LLc->assoc = 16;
- LLc->line_size = 16;
- ret = 0;
-
- } else {
- VG_(dmsg)("CPU vendor ID not recognised (%s)\n", vendor_id);
- return -1;
- }
-
- /* Successful! Convert sizes from KB to bytes */
- I1c->size *= 1024;
- D1c->size *= 1024;
- LLc->size *= 1024;
-
- /* If the LL cache config isn't something the simulation functions
- can handle, try to adjust it so it is. Caches are characterised
- by (total size T, line size L, associativity A), and then we
- have
-
- number of sets S = T / (L * A)
-
- The required constraints are:
-
- * L must be a power of 2, but it always is in practice, so
- no problem there
-
- * A can be any value >= 1
-
- * T can be any value, but ..
-
- * S must be a power of 2.
-
- That sometimes gives a problem. For example, some Core iX based
- Intel CPUs have T = 12MB, A = 16, L = 64, which gives 12288
- sets. The "fix" in this case is to increase the associativity
- by 50% to 24, which reduces the number of sets to 8192, making
- it a power of 2. That's what the following code does (handing
- the "3/2 rescaling case".) We might need to deal with other
- ratios later (5/4 ?).
-
- The "fix" is "justified" (cough, cough) by alleging that
- increases of associativity above about 4 have very little effect
- on the actual miss rate. It would be far more inaccurate to
- fudge this by changing the size of the simulated cache --
- changing the associativity is a much better option.
- */
- if (LLc->size > 0 && LLc->assoc > 0 && LLc->line_size > 0) {
- Long nSets = (Long)LLc->size / (Long)(LLc->line_size * LLc->assoc);
- if (/* stay sane */
- nSets >= 4
- /* nSets is not a power of 2 */
- && VG_(log2_64)( (ULong)nSets ) == -1
- /* nSets is 50% above a power of 2 */
- && VG_(log2_64)( (ULong)((2 * nSets) / (Long)3) ) != -1
- /* associativity can be increased by exactly 50% */
- && (LLc->assoc % 2) == 0
- ) {
- /* # sets is 1.5 * a power of two, but the associativity is
- even, so we can increase that up by 50% and implicitly
- scale the # sets down accordingly. */
- Int new_assoc = LLc->assoc + (LLc->assoc / 2);
- VG_(dmsg)("warning: pretending that LL cache has associativity"
- " %d instead of actual %d\n", new_assoc, LLc->assoc);
- LLc->assoc = new_assoc;
- }
- }
-
- return ret;
-}
-
-
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
- Bool all_caches_clo_defined)
-{
- Int res;
-
- // Set caches to default.
- *I1c = (cache_t) { 65536, 2, 64 };
- *D1c = (cache_t) { 65536, 2, 64 };
- *LLc = (cache_t) { 262144, 8, 64 };
-
- // Then replace with any info we can get from CPUID.
- res = get_caches_from_CPUID(I1c, D1c, LLc);
-
- // Warn if CPUID failed and config not completely specified from cmd line.
- if (res != 0 && !all_caches_clo_defined) {
- VG_(dmsg)("Warning: Couldn't auto-detect cache config, using one "
- "or more defaults \n");
- }
-}
-
-#endif // defined(VGA_x86) || defined(VGA_amd64)
-
-/*--------------------------------------------------------------------*/
-/*--- end ---*/
-/*--------------------------------------------------------------------*/
Deleted: trunk/cachegrind/cg-mips32.c (+0 -59)
===================================================================
--- trunk/cachegrind/cg-mips32.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-mips32.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,59 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- MIPS-specific definitions. cg-mips32.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Cachegrind, a Valgrind tool for cache
- profiling programs.
-
- Copyright (C) 2010-2012 RT-RK
- mip...@rt...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#if defined(VGA_mips32)
-
-#include "pub_tool_basics.h"
-#include "pub_tool_libcbase.h"
-#include "pub_tool_libcassert.h"
-#include "pub_tool_libcprint.h"
-
-#include "cg_arch.h"
-
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* L2c,
- Bool all_caches_clo_defined)
-{
- // Set caches to default (for MIPS32-r2(mips 74kc))
- *I1c = (cache_t) { 32768, 4, 32 };
- *D1c = (cache_t) { 32768, 4, 32 };
- *L2c = (cache_t) { 524288, 8, 32 };
-
- if (!all_caches_clo_defined) {
- VG_(message)(Vg_DebugMsg,
- "Warning: Cannot auto-detect cache config on MIPS32, using one "
- "or more defaults\n");
- }
-}
-
-#endif // #if defined(VGA_mips32)
-
-/*--------------------------------------------------------------------*/
-/*--- end cg-mips32.c ---*/
-/*--------------------------------------------------------------------*/
Deleted: trunk/include/pub_tool_cpuid.h (+0 -46)
===================================================================
--- trunk/include/pub_tool_cpuid.h 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/include/pub_tool_cpuid.h 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,46 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- Interface to CPUID. pub_tool_cpuid.h ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Valgrind, a dynamic binary instrumentation
- framework.
-
- Copyright (C) 2000-2012 Julian Seward
- js...@ac...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#ifndef __PUB_TOOL_CPUID_H
-#define __PUB_TOOL_CPUID_H
-
-#if defined(VGA_x86) || defined(VGA_amd64)
-extern Bool VG_(has_cpuid) ( void );
-
-extern void VG_(cpuid) ( UInt eax, UInt ecx,
- UInt* eax_ret, UInt* ebx_ret,
- UInt* ecx_ret, UInt* edx_ret );
-#endif
-
-#endif // __PUB_TOOL_CPUID_H
-
-/*--------------------------------------------------------------------*/
-/*--- end ---*/
-/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/pub_core_cpuid.h (+7 -1)
===================================================================
--- trunk/coregrind/pub_core_cpuid.h 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/coregrind/pub_core_cpuid.h 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -36,8 +36,14 @@
// CPUID instruction.
//--------------------------------------------------------------------
-#include "pub_tool_cpuid.h"
+#if defined(VGA_x86) || defined(VGA_amd64)
+extern Bool VG_(has_cpuid) ( void );
+extern void VG_(cpuid) ( UInt eax, UInt ecx,
+ UInt* eax_ret, UInt* ebx_ret,
+ UInt* ecx_ret, UInt* edx_ret );
+#endif
+
#endif // __PUB_CORE_CPUID_H
/*--------------------------------------------------------------------*/
Deleted: trunk/cachegrind/cg-arm.c (+0 -59)
===================================================================
--- trunk/cachegrind/cg-arm.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-arm.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,59 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- ARM-specific definitions. cg-arm.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Cachegrind, a Valgrind tool for cache
- profiling programs.
-
- Copyright (C) 2005-2012 Johan Bjork
- jb...@gm...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#if defined(VGA_arm)
-
-#include "pub_tool_basics.h"
-#include "pub_tool_libcbase.h"
-#include "pub_tool_libcassert.h"
-#include "pub_tool_libcprint.h"
-
-#include "cg_arch.h"
-
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
- Bool all_caches_clo_defined)
-{
- // Set caches to default (for Cortex-A8 ?)
- *I1c = (cache_t) { 16384, 4, 64 };
- *D1c = (cache_t) { 16384, 4, 64 };
- *LLc = (cache_t) { 262144, 8, 64 };
-
- if (!all_caches_clo_defined) {
- VG_(message)(Vg_DebugMsg,
- "Warning: Cannot auto-detect cache config on ARM, using one "
- "or more defaults\n");
- }
-}
-
-#endif // #if defined(VGA_arm)
-
-/*--------------------------------------------------------------------*/
-/*--- end cg-arm.c ---*/
-/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/m_machine.c (+22 -11)
===================================================================
--- trunk/coregrind/m_machine.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/coregrind/m_machine.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -674,7 +674,8 @@
/* Determine what insn set and insn set variant the host has, and
record it. To be called once at system startup. Returns False if
- this a CPU incapable of running Valgrind. */
+ this a CPU incapable of running Valgrind.
+ Also determine information about the caches on this host. */
Bool VG_(machine_get_hwcaps)( void )
{
@@ -731,26 +732,23 @@
have_lzcnt = (ecx & (1<<5)) != 0; /* True => have LZCNT */
}
+ va = VexArchX86;
if (have_sse2 && have_sse1) {
- va = VexArchX86;
vai.hwcaps = VEX_HWCAPS_X86_SSE1;
vai.hwcaps |= VEX_HWCAPS_X86_SSE2;
if (have_lzcnt)
vai.hwcaps |= VEX_HWCAPS_X86_LZCNT;
VG_(machine_x86_have_mxcsr) = 1;
- return True;
- }
-
- if (have_sse1) {
- va = VexArchX86;
+ } else if (have_sse1) {
vai.hwcaps = VEX_HWCAPS_X86_SSE1;
VG_(machine_x86_have_mxcsr) = 1;
- return True;
+ } else {
+ vai.hwcaps = 0; /*baseline - no sse at all*/
+ VG_(machine_x86_have_mxcsr) = 0;
}
- va = VexArchX86;
- vai.hwcaps = 0; /*baseline - no sse at all*/
- VG_(machine_x86_have_mxcsr) = 0;
+ VG_(machine_get_cache_info)(&vai);
+
return True;
}
@@ -836,6 +834,9 @@
| (have_cx16 ? VEX_HWCAPS_AMD64_CX16 : 0)
| (have_lzcnt ? VEX_HWCAPS_AMD64_LZCNT : 0)
| (have_avx ? VEX_HWCAPS_AMD64_AVX : 0);
+
+ VG_(machine_get_cache_info)(&vai);
+
return True;
}
@@ -980,6 +981,7 @@
if (have_VX) vai.hwcaps |= VEX_HWCAPS_PPC32_VX;
if (have_DFP) vai.hwcaps |= VEX_HWCAPS_PPC32_DFP;
+ VG_(machine_get_cache_info)(&vai);
/* But we're not done yet: VG_(machine_ppc32_set_clszB) must be
called before we're ready to go. */
@@ -1105,6 +1107,8 @@
if (have_VX) vai.hwcaps |= VEX_HWCAPS_PPC64_VX;
if (have_DFP) vai.hwcaps |= VEX_HWCAPS_PPC64_DFP;
+ VG_(machine_get_cache_info)(&vai);
+
/* But we're not done yet: VG_(machine_ppc64_set_clszB) must be
called before we're ready to go. */
return True;
@@ -1251,6 +1255,8 @@
VG_(debugLog)(1, "machine", "hwcaps = 0x%x\n", vai.hwcaps);
+ VG_(machine_get_cache_info)(&vai);
+
return True;
}
@@ -1360,6 +1366,8 @@
if (have_VFP) vai.hwcaps |= VEX_HWCAPS_ARM_VFP;
if (have_NEON) vai.hwcaps |= VEX_HWCAPS_ARM_NEON;
+ VG_(machine_get_cache_info)(&vai);
+
return True;
}
@@ -1371,6 +1379,9 @@
return False;
vai.hwcaps = model;
+
+ VG_(machine_get_cache_info)(&vai);
+
return True;
}
Modified: trunk/cachegrind/tests/filter_stderr (+2 -4)
===================================================================
--- trunk/cachegrind/tests/filter_stderr 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/tests/filter_stderr 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -17,8 +17,6 @@
sed "/warning: Pentium 4 with 12 KB micro-op instruction trace cache/d" |
sed "/Simulating a 16 KB I-cache with 32 B lines/d" |
sed "/warning: L3 cache found, using its data for the LL simulation./d" |
-sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
-sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d" |
-sed "/Warning: Cannot auto-detect cache config, assuming z10-EC cache configuration/d" |
-sed "/Warning: Cannot auto-detect cache config on MIPS.., using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config, using defaults./d" |
+sed "/Run with -v to see./d" |
sed "/warning: pretending that LL cache has associativity .*$/d"
Deleted: trunk/cachegrind/cg-ppc32.c (+0 -68)
===================================================================
--- trunk/cachegrind/cg-ppc32.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-ppc32.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,68 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- PPC32-specific definitions. cg-ppc32.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Cachegrind, a Valgrind tool for cache
- profiling programs.
-
- Copyright (C) 2005-2012 Nicholas Nethercote
- nj...@va...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#if defined(VGA_ppc32)
-
-#include "pub_tool_basics.h"
-#include "pub_tool_libcbase.h"
-#include "pub_tool_libcassert.h"
-#include "pub_tool_libcprint.h"
-
-#include "cg_arch.h"
-
-void VG_(configure_caches)(cache_t* I1c, cache_t* D1c, cache_t* LLc,
- Bool all_caches_clo_defined)
-{
- // Set caches to default.
- *I1c = (cache_t) { 65536, 2, 64 };
- *D1c = (cache_t) { 65536, 2, 64 };
- *LLc = (cache_t) { 262144, 8, 64 };
-
- // Warn if config not completely specified from cmd line. Note that
- // this message is slightly different from the one we give on x86/AMD64
- // when auto-detection fails; this lets us filter out this one (which is
- // not important) in the regression test suite without filtering the
- // x86/AMD64 one (which we want to see if it ever occurs in the
- // regression test suite).
- //
- // If you change this message, please update
- // cachegrind/tests/filter_stderr!
- //
- if (!all_caches_clo_defined) {
- VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC32, using one "
- "or more defaults\n");
- }
-}
-
-#endif // defined(VGA_ppc32)
-
-/*--------------------------------------------------------------------*/
-/*--- end ---*/
-/*--------------------------------------------------------------------*/
Modified: trunk/cachegrind/cg-arch.c (+236 -5)
===================================================================
--- trunk/cachegrind/cg-arch.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/cachegrind/cg-arch.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -1,8 +1,5 @@
/*--------------------------------------------------------------------*/
-/*--- Cachegrind: cache configuration. ---*/
-/*--- The architecture specific void VG_(configure_caches) are ---*/
-/*--- located in the cg-<architecture>.c files. ---*/
-/*--- cg-arch.c ---*/
+/*--- Cachegrind: cache configuration. cg-arch.c ---*/
/*--------------------------------------------------------------------*/
/*
@@ -35,9 +32,13 @@
#include "pub_tool_libcbase.h"
#include "pub_tool_libcprint.h"
#include "pub_tool_options.h"
+#include "pub_tool_machine.h"
#include "cg_arch.h"
+static void configure_caches(cache_t* I1c, cache_t* D1c, cache_t* LLc,
+ Bool all_caches_clo_defined);
+
// Checks cache config is ok. Returns NULL if ok, or a pointer to an error
// string otherwise.
static Char* check_cache(cache_t* cache)
@@ -157,6 +158,65 @@
}
}
+
+/* If the LL cache config isn't something the simulation functions
+ can handle, try to adjust it so it is. Caches are characterised
+ by (total size T, line size L, associativity A), and then we
+ have
+
+ number of sets S = T / (L * A)
+
+ The required constraints are:
+
+ * L must be a power of 2, but it always is in practice, so
+ no problem there
+
+ * A can be any value >= 1
+
+ * T can be any value, but ..
+
+ * S must be a power of 2.
+
+ That sometimes gives a problem. For example, some Core iX based
+ Intel CPUs have T = 12MB, A = 16, L = 64, which gives 12288
+ sets. The "fix" in this case is to increase the associativity
+ by 50% to 24, which reduces the number of sets to 8192, making
+ it a power of 2. That's what the following code does (handing
+ the "3/2 rescaling case".) We might need to deal with other
+ ratios later (5/4 ?).
+
+ The "fix" is "justified" (cough, cough) by alleging that
+ increases of associativity above about 4 have very little effect
+ on the actual miss rate. It would be far more inaccurate to
+ fudge this by changing the size of the simulated cache --
+ changing the associativity is a much better option.
+*/
+
+static void
+maybe_tweak_LLc(cache_t *LLc)
+{
+ if (LLc->size > 0 && LLc->assoc > 0 && LLc->line_size > 0) {
+ Long nSets = (Long)LLc->size / (Long)(LLc->line_size * LLc->assoc);
+ if (/* stay sane */
+ nSets >= 4
+ /* nSets is not a power of 2 */
+ && VG_(log2_64)( (ULong)nSets ) == -1
+ /* nSets is 50% above a power of 2 */
+ && VG_(log2_64)( (ULong)((2 * nSets) / (Long)3) ) != -1
+ /* associativity can be increased by exactly 50% */
+ && (LLc->assoc % 2) == 0
+ ) {
+ /* # sets is 1.5 * a power of two, but the associativity is
+ even, so we can increase that up by 50% and implicitly
+ scale the # sets down accordingly. */
+ Int new_assoc = LLc->assoc + (LLc->assoc / 2);
+ VG_(dmsg)("warning: pretending that LL cache has associativity"
+ " %d instead of actual %d\n", new_assoc, LLc->assoc);
+ LLc->assoc = new_assoc;
+ }
+ }
+}
+
void VG_(post_clo_init_configure_caches)(cache_t* I1c,
cache_t* D1c,
cache_t* LLc,
@@ -174,8 +234,10 @@
// Set the cache config (using auto-detection, if supported by the
// architecture).
- VG_(configure_caches)( I1c, D1c, LLc, all_caches_clo_defined );
+ configure_caches( I1c, D1c, LLc, all_caches_clo_defined );
+ maybe_tweak_LLc( LLc );
+
// Check the default/auto-detected values.
// Allow the user to override invalid auto-detected caches
// with command line.
@@ -206,3 +268,172 @@
" --LL=<size>,<assoc>,<line_size> set LL cache manually\n"
);
}
+
+
+// Traverse the cache info and return a cache of the given kind and level.
+// Return NULL if no such cache exists.
+static const VexCache *
+locate_cache(const VexCacheInfo *ci, VexCacheKind kind, UInt level)
+{
+ const VexCache *c;
+
+ for (c = ci->caches; c != ci->caches + ci->num_caches; ++c) {
+ if (c->level == level && c->kind == kind) {
+ return c;
+ }
+ }
+ return NULL; // not found
+}
+
+
+// Gives the auto-detected configuration of I1, D1 and LL caches. They get
+// overridden by any cache configurations specified on the command line.
+static void
+configure_caches(cache_t *I1c, cache_t *D1c, cache_t *LLc,
+ Bool all_caches_clo_defined)
+{
+ VexArchInfo vai;
+ const VexCacheInfo *ci;
+ const VexCache *i1, *d1, *ll;
+
+ VG_(machine_get_VexArchInfo)(NULL, &vai);
+ ci = &vai.hwcache_info;
+
+ // Extract what we need
+ i1 = locate_cache(ci, INSN_CACHE, 1);
+ d1 = locate_cache(ci, DATA_CACHE, 1);
+ // FIXME: needs clarification for num_levels > 3 see also warning below
+ // FIXME: whether it needs adjustment
+ ll = locate_cache(ci, UNIFIED_CACHE, ci->num_levels);
+
+ if (ll && ci->num_levels > 2) {
+ VG_(dmsg)("warning: L%u cache found, using its data for the "
+ "LL simulation.\n", ci->num_levels);
+ }
+
+ if (i1 && d1 && ll) {
+ *I1c = (cache_t) { i1->sizeB, i1->assoc, i1->line_sizeB };
+ *D1c = (cache_t) { d1->sizeB, d1->assoc, d1->line_sizeB };
+ *LLc = (cache_t) { ll->sizeB, ll->assoc, ll->line_sizeB };
+
+ return;
+ }
+
+ // Cache information could not be queried; choose some default
+ // architecture specific default setting.
+
+#if defined(VGA_ppc32)
+
+ // Default cache configuration
+ *I1c = (cache_t) { 65536, 2, 64 };
+ *D1c = (cache_t) { 65536, 2, 64 };
+ *LLc = (cache_t) { 262144, 8, 64 };
+
+#elif defined(VGA_ppc64)
+
+ // Default cache configuration
+ *I1c = (cache_t) { 65536, 2, 64 };
+ *D1c = (cache_t) { 65536, 2, 64 };
+ *LLc = (cache_t) { 262144, 8, 64 };
+
+#elif defined(VGA_arm)
+
+ // Set caches to default (for Cortex-A8 ?)
+ *I1c = (cache_t) { 16384, 4, 64 };
+ *D1c = (cache_t) { 16384, 4, 64 };
+ *LLc = (cache_t) { 262144, 8, 64 };
+
+#elif defined(VGA_s390x)
+ // z900
+ //
+ // Source:
+ // The microarchitecture of the IBM eServer z900 processor
+ // IBM Journal of Research and Development
+ // Volume 46, Number 4/5, pp 381-395, July/September 2002
+ //
+ // Split L1 I/D cache
+ // Size: 256 kB each
+ // Line size: 256 bytes
+ // 4-way set associative
+ // L2 cache: 16 MB x 2 (16 MB per 10 CPs) (Charles Webb)
+
+ // z800
+ //
+ // Source: Charles Webb from IBM
+ //
+ // Split L1 I/D cache
+ // Size: 256 kB each
+ // Line size: 256 bytes
+ // 4-way set associative
+ // L2 cache: 16 MB (or half that size)
+
+ // z990
+ //
+ // The IBM eServer z990 microprocessor
+ // IBM Journal of Research and Development
+ // Volume 48, Number 3/4, pp 295-309, May/July 2004
+ //
+ // Split L1 I/D cache
+ // Size: 256 kB each
+ // Line size: 256 bytes
+ // 4-way set associative
+ // L2 cache: 32 MB x 4 (32 MB per book/node) (Charles Webb)
+
+ // z890
+ //
+ // Source: Charles Webb from IBM
+ //
+ // Split L1 I/D cache
+ // Size: 256 kB each
+ // Line size: 256 bytes
+ // 4-way set associative
+ // L2 cache: 32 MB (or half that size)
+
+ // z9
+ //
+ // Source: Charles Webb from IBM
+ //
+ // Split L1 I/D cache
+ // Size: 256 kB each
+ // Line size: 256 bytes
+ // 4-way set associative
+ // L2 cache: 40 MB x 4 (40 MB per book/node)
+
+ // fixs390: have a table for all models we support and check
+ // fixs390: VEX_S390X_MODEL(hwcaps)
+
+ // Default cache configuration is z10-EC (Source: ECAG insn)
+ *I1c = (cache_t) { 65536, 4, 256 };
+ *D1c = (cache_t) { 131072, 8, 256 };
+ *LLc = (cache_t) { 50331648, 24, 256 };
+
+#elif defined(VGA_mips32)
+
+ // Set caches to default (for MIPS32-r2(mips 74kc))
+ *I1c = (cache_t) { 32768, 4, 32 };
+ *D1c = (cache_t) { 32768, 4, 32 };
+ *L2c = (cache_t) { 524288, 8, 32 };
+
+#elif defined(VGA_x86) || defined(VGA_amd64)
+
+ *I1c = (cache_t) { 65536, 2, 64 };
+ *D1c = (cache_t) { 65536, 2, 64 };
+ *LLc = (cache_t) { 262144, 8, 64 };
+
+#else
+
+#error "Unknown arch"
+
+#endif
+
+ if (!all_caches_clo_defined) {
+ const char warning[] =
+ "Warning: Cannot auto-detect cache config, using defaults.\n"
+ " Run with -v to see.\n";
+ VG_(dmsg)("%s", warning);
+ }
+}
+
+/*--------------------------------------------------------------------*/
+/*--- end ---*/
+/*--------------------------------------------------------------------*/
Modified: trunk/include/pub_tool_machine.h (+6 -0)
===================================================================
--- trunk/include/pub_tool_machine.h 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/include/pub_tool_machine.h 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -31,6 +31,8 @@
#ifndef __PUB_TOOL_MACHINE_H
#define __PUB_TOOL_MACHINE_H
+#include "libvex.h" // VexArchInfo
+
#if defined(VGP_x86_linux)
# define VG_MIN_INSTR_SZB 1 // min length of native instruction
# define VG_MAX_INSTR_SZB 16 // max length of native instruction
@@ -164,6 +166,10 @@
(eg, AVX or non-AVX ?, for amd64). */
extern Int VG_(machine_get_size_of_largest_guest_register) ( void );
+/* Return host cpu info. */
+extern void VG_(machine_get_VexArchInfo)( /*OUT*/VexArch*,
+ /*OUT*/VexArchInfo* );
+
#endif // __PUB_TOOL_MACHINE_H
/*--------------------------------------------------------------------*/
Modified: trunk/include/Makefile.am (+0 -1)
===================================================================
--- trunk/include/Makefile.am 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/include/Makefile.am 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -8,7 +8,6 @@
pub_tool_aspacemgr.h \
pub_tool_clientstate.h \
pub_tool_clreq.h \
- pub_tool_cpuid.h \
pub_tool_debuginfo.h \
pub_tool_errormgr.h \
pub_tool_execontext.h \
Added: trunk/coregrind/m_cache.c (+582 -0)
===================================================================
--- trunk/coregrind/m_cache.c 2012-10-07 05:00:48 +01:00 (rev 13027)
+++ trunk/coregrind/m_cache.c 2012-10-07 20:47:04 +01:00 (rev 13028)
@@ -0,0 +1,582 @@
+/* -*- mode: C; c-basic-offset: 3; -*- */
+
+/*--------------------------------------------------------------------*/
+/*--- Cache-related stuff. m_cache.c ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+ This file is part of Valgrind, a dynamic binary instrumentation
+ framework.
+
+ Copyright (C) 2002-2012 Nicholas Nethercote
+ nj...@va...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+#include "pub_core_basics.h"
+#include "pub_core_libcbase.h"
+#include "pub_core_libcassert.h"
+#include "pub_core_libcprint.h"
+#include "pub_core_mallocfree.h"
+#include "pub_core_machine.h"
+#include "libvex.h"
+
+#if defined(VGA_x86) || defined(VGA_amd64)
+
+#include "pub_core_cpuid.h"
+
+// All CPUID info taken from sandpile.org/ia32/cpuid.htm */
+// Probably only works for Intel and AMD chips, and probably only for some of
+// them.
+
+static void
+micro_ops_warn(Int actual_size, Int used_size, Int line_size)
+{
+ VG_(dmsg)("warning: Pentium 4 with %d KB micro-op instruction trace cache\n",
+ actual_size);
+ VG_(dmsg)(" Simulating a %d KB I-cache with %d B lines\n",
+ used_size, line_size);
+}
+
+/* FIXME: Temporarily introduce cachegrind's cache_t structure here to
+ get Intel_cache_info to work. This function needs to be rewritten to
+ properly fill in VexCacheInfo. Absolutely no warnings about ignored
+ caches and such are appropriate here! */
+typedef struct {
+ Int size; // bytes
+ Int assoc;
+ Int line_size; // bytes
+} cache_t;
+
+/* Intel method is truly wretched. We have to do an insane indexing into an
+ * array of pre-defined configurations for various parts of the memory
+ * hierarchy.
+ * According to Intel Processor Identification, App Note 485.
+ *
+ * If a L3 cache is found, then data for it rather than the L2
+ * is returned via *LLc.
+ */
+static Int
+Intel_cache_info_aux(Int level, cache_t* I1c, cache_t* D1c, cache_t* LLc)
+{
+ Int cpuid1_eax;
+ Int cpuid1_ignore;
+ Int family;
+ Int model;
+ UChar info[16];
+ Int i, j, trials;
+ Bool L2_found = False;
+ /* If we see L3 cache info, copy it into L3c. Then, at the end,
+ copy it into *LLc. Hence if a L3 cache is specified, *LLc will
+ eventually contain a description of it rather than the L2 cache.
+ The use of the L3c intermediary makes this process independent
+ of the order in which the cache specifications appear in
+ info[]. */
+ Bool L3_found = False;
+ cache_t L3c = { 0, 0, 0 };
+
+ if (level < 2) {
+ VG_(dmsg)("warning: CPUID level < 2 for Intel processor (%d)\n", level);
+ return -1;
+ }
+
+ /* family/model needed to distinguish code reuse (currently 0x49) */
+ VG_(cpuid)(1, 0, &cpuid1_eax, &...
[truncated message content] |
|
From: <sv...@va...> - 2012-10-07 19:44:48
|
florian 2012-10-07 20:44:40 +0100 (Sun, 07 Oct 2012)
New Revision: 2548
Log:
Add data structures for cache representation to libvex.h:
VexCacheInfo, VexCache, and VexCacheKind.
VexArchInfo gets a VexCacheInfo member which LibVEX_default_VexArchInfo
initialises.
Modified files:
trunk/priv/main_main.c
trunk/pub/libvex.h
Modified: trunk/priv/main_main.c (+4 -0)
===================================================================
--- trunk/priv/main_main.c 2012-10-07 16:42:37 +01:00 (rev 2547)
+++ trunk/priv/main_main.c 2012-10-07 20:44:40 +01:00 (rev 2548)
@@ -1081,6 +1081,10 @@
vai->ppc_dcbz_szB = 0;
vai->ppc_dcbzl_szB = 0;
+ vai->hwcache_info.num_levels = 0;
+ vai->hwcache_info.num_caches = 0;
+ vai->hwcache_info.caches = NULL;
+ vai->hwcache_info.icaches_maintain_coherence = True; // whatever
}
/* Write default settings info *vbi. */
Modified: trunk/pub/libvex.h (+39 -2)
===================================================================
--- trunk/pub/libvex.h 2012-10-07 16:42:37 +01:00 (rev 2547)
+++ trunk/pub/libvex.h 2012-10-07 20:44:40 +01:00 (rev 2548)
@@ -181,15 +181,52 @@
extern const HChar* LibVEX_ppVexArch ( VexArch );
extern const HChar* LibVEX_ppVexHwCaps ( VexArch, UInt );
+/* The various kinds of caches */
+typedef enum {
+ DATA_CACHE,
+ INSN_CACHE,
+ UNIFIED_CACHE
+} VexCacheKind;
+/* Information about a particular cache */
+typedef struct {
+ VexCacheKind kind;
+ UInt level; /* level this cache is at, e.g. 1 for L1 cache */
+ UInt sizeB; /* size of this cache in bytes */
+ UInt line_sizeB; /* cache line size in bytes */
+ UInt assoc; /* set associativity */
+} VexCache;
+
+/* Convenience macro to initialise a VexCache */
+#define VEX_CACHE_INIT(_kind, _level, _size, _line_size, _assoc) \
+ ({ (VexCache) { .kind = _kind, .level = _level, .sizeB = _size, \
+ .line_sizeB = _line_size, .assoc = _assoc }; })
+
+/* Information about the cache system as a whole */
+typedef struct {
+ UInt num_levels;
+ UInt num_caches;
+ /* Unordered array of caches for this host. NULL if there are
+ no caches. Users can assume that the array contains at most one
+ cache of a given kind per cache level. Additionally, if there exists
+ a unified cache at a particular level then no other cache exists
+ at that level. */
+ VexCache *caches;
+ Bool icaches_maintain_coherence;
+} VexCacheInfo;
+
+
/* This struct is a bit of a hack, but is needed to carry misc
important bits of info about an arch. Fields which are meaningless
- or ignored for the platform in question should be set to zero. */
+ or ignored for the platform in question should be set to zero.
+ Nb: if you add fields to the struct make sure to update function
+ LibVEX_default_VexArchInfo. */
typedef
struct {
- /* This is the only mandatory field. */
+ /* The following two fields are mandatory. */
UInt hwcaps;
+ VexCacheInfo hwcache_info;
/* PPC32/PPC64 only: size of cache line */
Int ppc_cache_line_szB;
/* PPC32/PPC64 only: sizes zeroed by the dcbz/dcbzl instructions
|
|
From: <sv...@va...> - 2012-10-07 15:42:52
|
florian 2012-10-07 16:42:37 +0100 (Sun, 07 Oct 2012)
New Revision: 2547
Log:
s390: This is a pre-patch for DFP support. It renames certain
identifiers to explicitly refer to BFP, as there will be counterparts
in the future for DFP.
Patch by Maran <ma...@li...>.
Part of fixing #307113.
Modified files:
trunk/priv/guest_s390_helpers.c
trunk/priv/guest_s390_toIR.c
trunk/priv/host_s390_defs.c
trunk/priv/host_s390_defs.h
trunk/priv/host_s390_isel.c
Modified: trunk/priv/host_s390_defs.h (+20 -20)
===================================================================
--- trunk/priv/host_s390_defs.h 2012-09-30 21:30:17 +01:00 (rev 2546)
+++ trunk/priv/host_s390_defs.h 2012-10-07 16:42:37 +01:00 (rev 2547)
@@ -140,7 +140,7 @@
S390_INSN_MFENCE,
S390_INSN_GZERO, /* Assign zero to a guest register */
S390_INSN_GADD, /* Add a value to a guest register */
- S390_INSN_SET_FPCRM, /* Set the rounding mode in the FPC */
+ S390_INSN_SET_FPC_BFPRM, /* Set the bfp rounding mode in the FPC */
/* The following 5 insns are mandated by translation chaining */
S390_INSN_XDIRECT, /* direct transfer to guest address */
S390_INSN_XINDIR, /* indirect transfer to guest address */
@@ -257,28 +257,28 @@
/* Rounding mode as it is encoded in the m3 field of certain
instructions (e.g. CFEBR) */
typedef enum {
- S390_ROUND_PER_FPC = 0,
- S390_ROUND_NEAREST_AWAY = 1,
+ S390_BFP_ROUND_PER_FPC = 0,
+ S390_BFP_ROUND_NEAREST_AWAY = 1,
/* 2 is not allowed */
- S390_ROUND_PREPARE_SHORT = 3,
- S390_ROUND_NEAREST_EVEN = 4,
- S390_ROUND_ZERO = 5,
- S390_ROUND_POSINF = 6,
- S390_ROUND_NEGINF = 7
-} s390_round_t;
+ S390_BFP_ROUND_PREPARE_SHORT = 3,
+ S390_BFP_ROUND_NEAREST_EVEN = 4,
+ S390_BFP_ROUND_ZERO = 5,
+ S390_BFP_ROUND_POSINF = 6,
+ S390_BFP_ROUND_NEGINF = 7
+} s390_bfp_round_t;
/* Rounding mode as it is encoded in bits [29:31] of the FPC register.
Only rounding modes 0..3 are universally supported. Others require
additional hardware facilities. */
typedef enum {
- S390_FPC_ROUND_NEAREST_EVEN = 0,
- S390_FPC_ROUND_ZERO = 1,
- S390_FPC_ROUND_POSINF = 2,
- S390_FPC_ROUND_NEGINF = 3,
+ S390_FPC_BFP_ROUND_NEAREST_EVEN = 0,
+ S390_FPC_BFP_ROUND_ZERO = 1,
+ S390_FPC_BFP_ROUND_POSINF = 2,
+ S390_FPC_BFP_ROUND_NEGINF = 3,
/* 4,5,6 are not allowed */
- S390_FPC_ROUND_PREPARE_SHORT = 7
-} s390_fpc_round_t;
+ S390_FPC_BFP_ROUND_PREPARE_SHORT = 7
+} s390_fpc_bfp_round_t;
/* Invert the condition code */
@@ -438,7 +438,7 @@
} bfp_unop;
struct {
s390_conv_t tag;
- s390_round_t rounding_mode;
+ s390_bfp_round_t rounding_mode;
HReg dst_hi; /* 128-bit result high part; 32/64-bit result */
HReg dst_lo; /* 128-bit result low part */
HReg op_hi; /* 128-bit operand high part; 32/64-bit opnd */
@@ -463,7 +463,7 @@
} gadd;
struct {
HReg mode;
- } set_fpcrm;
+ } set_fpc_bfprm;
/* The next 5 entries are generic to support translation chaining */
@@ -541,7 +541,7 @@
HReg op);
s390_insn *s390_insn_bfp_compare(UChar size, HReg dst, HReg op1, HReg op2);
s390_insn *s390_insn_bfp_convert(UChar size, s390_conv_t tag, HReg dst,
- HReg op, s390_round_t);
+ HReg op, s390_bfp_round_t);
s390_insn *s390_insn_bfp128_binop(UChar size, s390_bfp_binop_t, HReg dst_hi,
HReg dst_lo, HReg op2_hi, HReg op2_lo);
s390_insn *s390_insn_bfp128_unop(UChar size, s390_bfp_unop_t, HReg dst_hi,
@@ -552,11 +552,11 @@
HReg dst_hi, HReg dst_lo, HReg op);
s390_insn *s390_insn_bfp128_convert_from(UChar size, s390_conv_t,
HReg dst, HReg op_hi, HReg op_lo,
- s390_round_t);
+ s390_bfp_round_t);
s390_insn *s390_insn_mfence(void);
s390_insn *s390_insn_gzero(UChar size, UInt offset);
s390_insn *s390_insn_gadd(UChar size, UInt offset, UChar delta, ULong value);
-s390_insn *s390_insn_set_fpcrm(UChar size, HReg mode);
+s390_insn *s390_insn_set_fpc_bfprm(UChar size, HReg mode);
/* Five for translation chaining */
s390_insn *s390_insn_xdirect(s390_cc_t cond, Addr64 dst, s390_amode *guest_IA,
Modified: trunk/priv/host_s390_defs.c (+20 -19)
===================================================================
--- trunk/priv/host_s390_defs.c 2012-09-30 21:30:17 +01:00 (rev 2546)
+++ trunk/priv/host_s390_defs.c 2012-10-07 16:42:37 +01:00 (rev 2547)
@@ -708,8 +708,8 @@
case S390_INSN_GADD:
break;
- case S390_INSN_SET_FPCRM:
- addHRegUse(u, HRmRead, insn->variant.set_fpcrm.mode);
+ case S390_INSN_SET_FPC_BFPRM:
+ addHRegUse(u, HRmRead, insn->variant.set_fpc_bfprm.mode);
break;
case S390_INSN_EVCHECK:
@@ -936,9 +936,9 @@
case S390_INSN_GADD:
break;
- case S390_INSN_SET_FPCRM:
- insn->variant.set_fpcrm.mode =
- lookupHRegRemap(m, insn->variant.set_fpcrm.mode);
+ case S390_INSN_SET_FPC_BFPRM:
+ insn->variant.set_fpc_bfprm.mode =
+ lookupHRegRemap(m, insn->variant.set_fpc_bfprm.mode);
break;
case S390_INSN_EVCHECK:
@@ -4738,7 +4738,7 @@
s390_insn *
s390_insn_bfp_convert(UChar size, s390_conv_t tag, HReg dst, HReg op,
- s390_round_t rounding_mode)
+ s390_bfp_round_t rounding_mode)
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
@@ -4841,7 +4841,7 @@
static s390_insn *
s390_insn_bfp128_convert(UChar size, s390_conv_t tag, HReg dst_hi,
HReg dst_lo, HReg op_hi, HReg op_lo,
- s390_round_t rounding_mode)
+ s390_bfp_round_t rounding_mode)
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
@@ -4874,7 +4874,7 @@
{
/* Conversion to bfp128 never requires a rounding mode. Provide default
rounding mode. It will not be used when emitting insns. */
- s390_round_t rounding_mode = S390_ROUND_NEAREST_EVEN;
+ s390_bfp_round_t rounding_mode = S390_BFP_ROUND_NEAREST_EVEN;
return s390_insn_bfp128_convert(size, tag, dst_hi, dst_lo, op,
INVALID_HREG, rounding_mode);
@@ -4884,7 +4884,7 @@
s390_insn *
s390_insn_bfp128_convert_from(UChar size, s390_conv_t tag, HReg dst,
HReg op_hi, HReg op_lo,
- s390_round_t rounding_mode)
+ s390_bfp_round_t rounding_mode)
{
return s390_insn_bfp128_convert(size, tag, dst, INVALID_HREG, op_hi, op_lo,
rounding_mode);
@@ -4932,15 +4932,15 @@
s390_insn *
-s390_insn_set_fpcrm(UChar size, HReg mode)
+s390_insn_set_fpc_bfprm(UChar size, HReg mode)
{
vassert(size == 4);
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- insn->tag = S390_INSN_SET_FPCRM;
+ insn->tag = S390_INSN_SET_FPC_BFPRM;
insn->size = size;
- insn->variant.set_fpcrm.mode = mode;
+ insn->variant.set_fpc_bfprm.mode = mode;
return insn;
}
@@ -5451,8 +5451,9 @@
insn->variant.gadd.value);
break;
- case S390_INSN_SET_FPCRM:
- s390_sprintf(buf, "%M %R", "v-set-fpcrm", insn->variant.set_fpcrm.mode);
+ case S390_INSN_SET_FPC_BFPRM:
+ s390_sprintf(buf, "%M %R", "v-set-fpc-bfprm",
+ insn->variant.set_fpc_bfprm.mode);
break;
case S390_INSN_EVCHECK:
@@ -7415,7 +7416,7 @@
{
UInt r1 = hregNumber(insn->variant.bfp_convert.dst_hi);
UInt r2 = hregNumber(insn->variant.bfp_convert.op_hi);
- s390_round_t m3 = insn->variant.bfp_convert.rounding_mode;
+ s390_bfp_round_t m3 = insn->variant.bfp_convert.rounding_mode;
/* The IEEE-inexact-exception control is not modelled. So the
m4 field is 0 (which is what GCC does, too) */
const UInt m4 = 0;
@@ -7518,9 +7519,9 @@
static UChar *
-s390_insn_set_fpcrm_emit(UChar *buf, const s390_insn *insn)
+s390_insn_set_fpc_bfprm_emit(UChar *buf, const s390_insn *insn)
{
- UInt mode = hregNumber(insn->variant.set_fpcrm.mode);
+ UInt mode = hregNumber(insn->variant.set_fpc_bfprm.mode);
/* Copy FPC from guest state to R0 and OR in the new rounding mode */
buf = s390_emit_L(buf, R0, 0, S390_REGNO_GUEST_STATE_POINTER,
@@ -8074,8 +8075,8 @@
end = s390_insn_gadd_emit(buf, insn);
break;
- case S390_INSN_SET_FPCRM:
- end = s390_insn_set_fpcrm_emit(buf, insn);
+ case S390_INSN_SET_FPC_BFPRM:
+ end = s390_insn_set_fpc_bfprm_emit(buf, insn);
break;
case S390_INSN_PROFINC:
Modified: trunk/priv/host_s390_isel.c (+14 -14)
===================================================================
--- trunk/priv/host_s390_isel.c 2012-09-30 21:30:17 +01:00 (rev 2546)
+++ trunk/priv/host_s390_isel.c 2012-10-07 16:42:37 +01:00 (rev 2547)
@@ -577,7 +577,7 @@
addInstr(env, s390_insn_alu(4, S390_ALU_SUB, mode, s390_opnd_reg(ir)));
addInstr(env, s390_insn_alu(4, S390_ALU_AND, mode, s390_opnd_imm(3)));
- addInstr(env, s390_insn_set_fpcrm(4, mode));
+ addInstr(env, s390_insn_set_fpc_bfprm(4, mode));
}
@@ -585,7 +585,7 @@
a rounding mode in the insn itself. In that case there is no need to
stick the rounding mode into the FPC -- a good thing. However, the
rounding mode must be known. */
-static s390_round_t
+static s390_bfp_round_t
get_bfp_rounding_mode(ISelEnv *env, IRExpr *irrm)
{
if (irrm->tag == Iex_Const) { /* rounding mode is known */
@@ -593,17 +593,17 @@
IRRoundingMode mode = irrm->Iex.Const.con->Ico.U32;
switch (mode) {
- case Irrm_NEAREST: return S390_ROUND_NEAREST_EVEN;
- case Irrm_ZERO: return S390_ROUND_ZERO;
- case Irrm_PosINF: return S390_ROUND_POSINF;
- case Irrm_NegINF: return S390_ROUND_NEGINF;
+ case Irrm_NEAREST: return S390_BFP_ROUND_NEAREST_EVEN;
+ case Irrm_ZERO: return S390_BFP_ROUND_ZERO;
+ case Irrm_PosINF: return S390_BFP_ROUND_POSINF;
+ case Irrm_NegINF: return S390_BFP_ROUND_NEGINF;
default:
vpanic("get_bfp_rounding_mode");
}
}
set_bfp_rounding_mode_in_fpc(env, irrm);
- return S390_ROUND_PER_FPC;
+ return S390_BFP_ROUND_PER_FPC;
}
@@ -981,7 +981,7 @@
case Iop_F128toI64U: conv = S390_BFP_F128_TO_U64; goto do_convert_128;
do_convert: {
- s390_round_t rounding_mode;
+ s390_bfp_round_t rounding_mode;
res = newVRegI(env);
h1 = s390_isel_float_expr(env, arg2); /* Process operand */
@@ -993,7 +993,7 @@
}
do_convert_128: {
- s390_round_t rounding_mode;
+ s390_bfp_round_t rounding_mode;
HReg op_hi, op_lo, f13, f15;
res = newVRegI(env);
@@ -1956,7 +1956,7 @@
goto convert;
convert: {
- s390_round_t rounding_mode;
+ s390_bfp_round_t rounding_mode;
/* convert-from-fixed and load-rounded have a rounding mode field
when the floating point extension facility is installed. */
dst = newVRegF(env);
@@ -1964,7 +1964,7 @@
rounding_mode = get_bfp_rounding_mode(env, irrm);
} else {
set_bfp_rounding_mode_in_fpc(env, irrm);
- rounding_mode = S390_ROUND_PER_FPC;
+ rounding_mode = S390_BFP_ROUND_PER_FPC;
}
addInstr(env, s390_insn_bfp_convert(size, conv, dst, h1,
rounding_mode));
@@ -1977,7 +1977,7 @@
case Iop_F128toF64:
case Iop_F128toF32: {
HReg op_hi, op_lo, f13, f15;
- s390_round_t rounding_mode;
+ s390_bfp_round_t rounding_mode;
conv = op == Iop_F128toF32 ? S390_BFP_F128_TO_F32
: S390_BFP_F128_TO_F64;
@@ -1999,7 +1999,7 @@
rounding_mode = get_bfp_rounding_mode(env, irrm);
} else {
set_bfp_rounding_mode_in_fpc(env, irrm);
- rounding_mode = S390_ROUND_PER_FPC;
+ rounding_mode = S390_BFP_ROUND_PER_FPC;
}
addInstr(env, s390_insn_bfp128_convert_from(size, conv, dst, f13, f15,
rounding_mode));
@@ -2064,7 +2064,7 @@
/* No rounding mode is needed for these conversions. Just stick
one in. It won't be used later on. */
addInstr(env, s390_insn_bfp_convert(size, conv, dst, h1,
- S390_ROUND_NEAREST_EVEN));
+ S390_BFP_ROUND_NEAREST_EVEN));
return dst;
default:
Modified: trunk/priv/guest_s390_helpers.c (+25 -25)
===================================================================
--- trunk/priv/guest_s390_helpers.c 2012-09-30 21:30:17 +01:00 (rev 2546)
+++ trunk/priv/guest_s390_helpers.c 2012-10-07 16:42:37 +01:00 (rev 2547)
@@ -874,14 +874,14 @@
/* Convert an IRRoundingMode value to s390_round_t */
#if defined(VGA_s390x)
-static s390_round_t
+static s390_bfp_round_t
decode_bfp_rounding_mode(UInt irrm)
{
switch (irrm) {
- case Irrm_NEAREST: return S390_ROUND_NEAREST_EVEN;
- case Irrm_NegINF: return S390_ROUND_NEGINF;
- case Irrm_PosINF: return S390_ROUND_POSINF;
- case Irrm_ZERO: return S390_ROUND_ZERO;
+ case Irrm_NEAREST: return S390_BFP_ROUND_NEAREST_EVEN;
+ case Irrm_NegINF: return S390_BFP_ROUND_NEGINF;
+ case Irrm_PosINF: return S390_BFP_ROUND_POSINF;
+ case Irrm_ZERO: return S390_BFP_ROUND_ZERO;
}
vpanic("decode_bfp_rounding_mode");
}
@@ -965,20 +965,20 @@
({ \
UInt cc; \
switch (decode_bfp_rounding_mode(cc_dep2)) { \
- case S390_ROUND_NEAREST_EVEN: \
+ case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,4); \
break; \
- case S390_ROUND_ZERO: \
+ case S390_BFP_ROUND_ZERO: \
cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,5); \
break; \
- case S390_ROUND_POSINF: \
+ case S390_BFP_ROUND_POSINF: \
cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,6); \
break; \
- case S390_ROUND_NEGINF: \
+ case S390_BFP_ROUND_NEGINF: \
cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,7); \
break; \
default: \
- vpanic("unexpected rounding mode"); \
+ vpanic("unexpected bfp rounding mode"); \
} \
cc; \
})
@@ -997,20 +997,20 @@
({ \
UInt cc; \
switch (decode_bfp_rounding_mode(cc_dep2)) { \
- case S390_ROUND_NEAREST_EVEN: \
+ case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,4); \
break; \
- case S390_ROUND_ZERO: \
+ case S390_BFP_ROUND_ZERO: \
cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,5); \
break; \
- case S390_ROUND_POSINF: \
+ case S390_BFP_ROUND_POSINF: \
cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,6); \
break; \
- case S390_ROUND_NEGINF: \
+ case S390_BFP_ROUND_NEGINF: \
cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,7); \
break; \
default: \
- vpanic("unexpected rounding mode"); \
+ vpanic("unexpected bfp rounding mode"); \
} \
cc; \
})
@@ -1034,20 +1034,20 @@
s390_cc_thunk_put3 for rationale. */ \
cc_dep2 = cc_dep2 ^ cc_ndep; \
switch (decode_bfp_rounding_mode(cc_ndep)) { \
- case S390_ROUND_NEAREST_EVEN: \
+ case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
break; \
- case S390_ROUND_ZERO: \
+ case S390_BFP_ROUND_ZERO: \
cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
break; \
- case S390_ROUND_POSINF: \
+ case S390_BFP_ROUND_POSINF: \
cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
break; \
- case S390_ROUND_NEGINF: \
+ case S390_BFP_ROUND_NEGINF: \
cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
break; \
default: \
- vpanic("unexpected rounding mode"); \
+ vpanic("unexpected bfp rounding mode"); \
} \
cc; \
})
@@ -1071,20 +1071,20 @@
s390_cc_thunk_put3 for rationale. */ \
cc_dep2 = cc_dep2 ^ cc_ndep; \
switch (decode_bfp_rounding_mode(cc_ndep)) { \
- case S390_ROUND_NEAREST_EVEN: \
+ case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
break; \
- case S390_ROUND_ZERO: \
+ case S390_BFP_ROUND_ZERO: \
cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
break; \
- case S390_ROUND_POSINF: \
+ case S390_BFP_ROUND_POSINF: \
cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
break; \
- case S390_ROUND_NEGINF: \
+ case S390_BFP_ROUND_NEGINF: \
cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
break; \
default: \
- vpanic("unexpected rounding mode"); \
+ vpanic("unexpected bfp rounding mode"); \
} \
cc; \
})
Modified: trunk/priv/guest_s390_toIR.c (+59 -56)
===================================================================
--- trunk/priv/guest_s390_toIR.c 2012-09-30 21:30:17 +01:00 (rev 2546)
+++ trunk/priv/guest_s390_toIR.c 2012-10-07 16:42:37 +01:00 (rev 2547)
@@ -1397,7 +1397,7 @@
/*--- Rounding modes ---*/
/*------------------------------------------------------------*/
-/* Extract the rounding mode from the guest FPC reg and encode it as an
+/* Extract the bfp rounding mode from the guest FPC reg and encode it as an
IRRoundingMode:
rounding mode | s390 | IR
@@ -1410,7 +1410,7 @@
So: IR = (4 - s390) & 3
*/
static IRExpr *
-get_rounding_mode_from_fpc(void)
+get_bfp_rounding_mode_from_fpc(void)
{
IRTemp fpc_bits = newTemp(Ity_I32);
@@ -1432,7 +1432,7 @@
/* For now silently adjust an unsupported rounding mode to "nearest" */
IRExpr *rm_s390 = mkite(binop(Iop_CmpLE32S, mkexpr(fpc_bits), mkU32(3)),
mkexpr(fpc_bits),
- mkU32(S390_FPC_ROUND_NEAREST_EVEN));
+ mkU32(S390_FPC_BFP_ROUND_NEAREST_EVEN));
// rm_IR = (4 - rm_s390) & 3;
return binop(Iop_And32, binop(Iop_Sub32, mkU32(4), rm_s390), mkU32(3));
@@ -1449,13 +1449,15 @@
IRExpr *rm;
switch (mode) {
- case S390_ROUND_PER_FPC: rm = get_rounding_mode_from_fpc(); break;
- case S390_ROUND_NEAREST_AWAY: /* not supported */
- case S390_ROUND_PREPARE_SHORT: /* not supported */
- case S390_ROUND_NEAREST_EVEN: rm = mkU32(Irrm_NEAREST); break;
- case S390_ROUND_ZERO: rm = mkU32(Irrm_ZERO); break;
- case S390_ROUND_POSINF: rm = mkU32(Irrm_PosINF); break;
- case S390_ROUND_NEGINF: rm = mkU32(Irrm_NegINF); break;
+ case S390_BFP_ROUND_PER_FPC:
+ rm = get_bfp_rounding_mode_from_fpc();
+ break;
+ case S390_BFP_ROUND_NEAREST_AWAY: /* not supported */
+ case S390_BFP_ROUND_PREPARE_SHORT: /* not supported */
+ case S390_BFP_ROUND_NEAREST_EVEN: rm = mkU32(Irrm_NEAREST); break;
+ case S390_BFP_ROUND_ZERO: rm = mkU32(Irrm_ZERO); break;
+ case S390_BFP_ROUND_POSINF: rm = mkU32(Irrm_PosINF); break;
+ case S390_BFP_ROUND_NEGINF: rm = mkU32(Irrm_NegINF); break;
default:
vpanic("encode_bfp_rounding_mode");
}
@@ -8210,7 +8212,7 @@
/* ok */
} else {
emulation_warning(EmWarn_S390X_invalid_rounding);
- d2 = S390_FPC_ROUND_NEAREST_EVEN;
+ d2 = S390_FPC_BFP_ROUND_NEAREST_EVEN;
}
}
}
@@ -8273,7 +8275,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, get_fpr_w0(r2));
@@ -8291,7 +8293,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, get_fpr_dw0(r2));
@@ -8309,7 +8311,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, load(Ity_F32, mkexpr(op2addr)));
@@ -8327,7 +8329,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, load(Ity_F64, mkexpr(op2addr)));
@@ -8343,9 +8345,9 @@
s390_irgen_CEFBR(UChar m3, UChar m4 __attribute__((unused)),
UChar r1, UChar r2)
{
- if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) {
+ if (! s390_host_has_fpext && m3 != S390_BFP_ROUND_PER_FPC) {
emulation_warning(EmWarn_S390X_fpext_rounding);
- m3 = S390_ROUND_PER_FPC;
+ m3 = S390_BFP_ROUND_PER_FPC;
}
IRTemp op2 = newTemp(Ity_I32);
@@ -8372,9 +8374,9 @@
s390_irgen_CEGBR(UChar m3, UChar m4 __attribute__((unused)),
UChar r1, UChar r2)
{
- if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) {
+ if (! s390_host_has_fpext && m3 != S390_BFP_ROUND_PER_FPC) {
emulation_warning(EmWarn_S390X_fpext_rounding);
- m3 = S390_ROUND_PER_FPC;
+ m3 = S390_BFP_ROUND_PER_FPC;
}
IRTemp op2 = newTemp(Ity_I64);
@@ -8389,9 +8391,9 @@
s390_irgen_CDGBR(UChar m3, UChar m4 __attribute__((unused)),
UChar r1, UChar r2)
{
- if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) {
+ if (! s390_host_has_fpext && m3 != S390_BFP_ROUND_PER_FPC) {
emulation_warning(EmWarn_S390X_fpext_rounding);
- m3 = S390_ROUND_PER_FPC;
+ m3 = S390_BFP_ROUND_PER_FPC;
}
IRTemp op2 = newTemp(Ity_I64);
@@ -8620,7 +8622,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, get_fpr_w0(r2));
@@ -8637,7 +8639,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, get_fpr_dw0(r2));
@@ -8654,7 +8656,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, load(Ity_F32, mkexpr(op2addr)));
@@ -8671,7 +8673,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, load(Ity_F64, mkexpr(op2addr)));
@@ -8756,9 +8758,9 @@
s390_irgen_LEDBR(UChar m3, UChar m4 __attribute__((unused)),
UChar r1, UChar r2)
{
- if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) {
+ if (! s390_host_has_fpext && m3 != S390_BFP_ROUND_PER_FPC) {
emulation_warning(EmWarn_S390X_fpext_rounding);
- m3 = S390_ROUND_PER_FPC;
+ m3 = S390_BFP_ROUND_PER_FPC;
}
IRTemp op = newTemp(Ity_F64);
@@ -8775,7 +8777,8 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRRoundingMode rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRRoundingMode rounding_mode =
+ encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, get_fpr_w0(r2));
@@ -8792,7 +8795,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, get_fpr_dw0(r2));
@@ -8809,7 +8812,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, load(Ity_F32, mkexpr(op2addr)));
@@ -8826,7 +8829,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, load(Ity_F64, mkexpr(op2addr)));
@@ -8843,7 +8846,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, get_fpr_w0(r2));
@@ -8861,7 +8864,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, get_fpr_dw0(r2));
@@ -8879,7 +8882,7 @@
IRTemp op1 = newTemp(Ity_F32);
IRTemp op2 = newTemp(Ity_F32);
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_w0(r1));
assign(op2, load(Ity_F32, mkexpr(op2addr)));
@@ -8897,7 +8900,7 @@
IRTemp op1 = newTemp(Ity_F64);
IRTemp op2 = newTemp(Ity_F64);
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_dw0(r1));
assign(op2, load(Ity_F64, mkexpr(op2addr)));
@@ -10309,7 +10312,7 @@
IRTemp op1 = newTemp(Ity_F128);
IRTemp op2 = newTemp(Ity_F128);
IRTemp result = newTemp(Ity_F128);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_pair(r1));
assign(op2, get_fpr_pair(r2));
@@ -10594,7 +10597,7 @@
IRTemp op1 = newTemp(Ity_F128);
IRTemp op2 = newTemp(Ity_F128);
IRTemp result = newTemp(Ity_F128);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_pair(r1));
assign(op2, get_fpr_pair(r2));
@@ -10749,9 +10752,9 @@
s390_irgen_LDXBR(UChar m3, UChar m4 __attribute__((unused)),
UChar r1, UChar r2)
{
- if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) {
+ if (! s390_host_has_fpext && m3 != S390_BFP_ROUND_PER_FPC) {
emulation_warning(EmWarn_S390X_fpext_rounding);
- m3 = S390_ROUND_PER_FPC;
+ m3 = S390_BFP_ROUND_PER_FPC;
}
IRTemp result = newTemp(Ity_F64);
@@ -10766,9 +10769,9 @@
s390_irgen_LEXBR(UChar m3, UChar m4 __attribute__((unused)),
UChar r1, UChar r2)
{
- if (! s390_host_has_fpext && m3 != S390_ROUND_PER_FPC) {
+ if (! s390_host_has_fpext && m3 != S390_BFP_ROUND_PER_FPC) {
emulation_warning(EmWarn_S390X_fpext_rounding);
- m3 = S390_ROUND_PER_FPC;
+ m3 = S390_BFP_ROUND_PER_FPC;
}
IRTemp result = newTemp(Ity_F32);
@@ -10785,7 +10788,7 @@
IRTemp op1 = newTemp(Ity_F128);
IRTemp op2 = newTemp(Ity_F128);
IRTemp result = newTemp(Ity_F128);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_pair(r1));
assign(op2, get_fpr_pair(r2));
@@ -10799,7 +10802,7 @@
static HChar *
s390_irgen_MAEBR(UChar r1, UChar r3, UChar r2)
{
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_w0(r1, qop(Iop_MAddF32, mkexpr(rounding_mode),
get_fpr_w0(r1), get_fpr_w0(r2), get_fpr_w0(r3)));
@@ -10810,7 +10813,7 @@
static HChar *
s390_irgen_MADBR(UChar r1, UChar r3, UChar r2)
{
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_dw0(r1, qop(Iop_MAddF64, mkexpr(rounding_mode),
get_fpr_dw0(r1), get_fpr_dw0(r2), get_fpr_dw0(r3)));
@@ -10822,7 +10825,7 @@
s390_irgen_MAEB(UChar r3, IRTemp op2addr, UChar r1)
{
IRExpr *op2 = load(Ity_F32, mkexpr(op2addr));
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_w0(r1, qop(Iop_MAddF32, mkexpr(rounding_mode),
get_fpr_w0(r1), op2, get_fpr_w0(r3)));
@@ -10834,7 +10837,7 @@
s390_irgen_MADB(UChar r3, IRTemp op2addr, UChar r1)
{
IRExpr *op2 = load(Ity_F64, mkexpr(op2addr));
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_dw0(r1, qop(Iop_MAddF64, mkexpr(rounding_mode),
get_fpr_dw0(r1), op2, get_fpr_dw0(r3)));
@@ -10845,7 +10848,7 @@
static HChar *
s390_irgen_MSEBR(UChar r1, UChar r3, UChar r2)
{
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_w0(r1, qop(Iop_MSubF32, mkexpr(rounding_mode),
get_fpr_w0(r1), get_fpr_w0(r2), get_fpr_w0(r3)));
@@ -10856,7 +10859,7 @@
static HChar *
s390_irgen_MSDBR(UChar r1, UChar r3, UChar r2)
{
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_dw0(r1, qop(Iop_MSubF64, mkexpr(rounding_mode),
get_fpr_dw0(r1), get_fpr_dw0(r2), get_fpr_dw0(r3)));
@@ -10868,7 +10871,7 @@
s390_irgen_MSEB(UChar r3, IRTemp op2addr, UChar r1)
{
IRExpr *op2 = load(Ity_F32, mkexpr(op2addr));
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_w0(r1, qop(Iop_MSubF32, mkexpr(rounding_mode),
get_fpr_w0(r1), op2, get_fpr_w0(r3)));
@@ -10880,7 +10883,7 @@
s390_irgen_MSDB(UChar r3, IRTemp op2addr, UChar r1)
{
IRExpr *op2 = load(Ity_F64, mkexpr(op2addr));
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
put_fpr_dw0(r1, qop(Iop_MSubF64, mkexpr(rounding_mode),
get_fpr_dw0(r1), op2, get_fpr_dw0(r3)));
@@ -10892,7 +10895,7 @@
s390_irgen_SQEBR(UChar r1, UChar r2)
{
IRTemp result = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(result, binop(Iop_SqrtF32, mkexpr(rounding_mode), get_fpr_w0(r2)));
put_fpr_w0(r1, mkexpr(result));
@@ -10904,7 +10907,7 @@
s390_irgen_SQDBR(UChar r1, UChar r2)
{
IRTemp result = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(result, binop(Iop_SqrtF64, mkexpr(rounding_mode), get_fpr_dw0(r2)));
put_fpr_dw0(r1, mkexpr(result));
@@ -10916,7 +10919,7 @@
s390_irgen_SQXBR(UChar r1, UChar r2)
{
IRTemp result = newTemp(Ity_F128);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(result, binop(Iop_SqrtF128, mkexpr(rounding_mode),
get_fpr_pair(r2)));
@@ -10929,7 +10932,7 @@
s390_irgen_SQEB(UChar r1, IRTemp op2addr)
{
IRTemp op = newTemp(Ity_F32);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op, load(Ity_F32, mkexpr(op2addr)));
put_fpr_w0(r1, binop(Iop_SqrtF32, mkexpr(rounding_mode), mkexpr(op)));
@@ -10941,7 +10944,7 @@
s390_irgen_SQDB(UChar r1, IRTemp op2addr)
{
IRTemp op = newTemp(Ity_F64);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op, load(Ity_F64, mkexpr(op2addr)));
put_fpr_dw0(r1, binop(Iop_SqrtF64, mkexpr(rounding_mode), mkexpr(op)));
@@ -10955,7 +10958,7 @@
IRTemp op1 = newTemp(Ity_F128);
IRTemp op2 = newTemp(Ity_F128);
IRTemp result = newTemp(Ity_F128);
- IRTemp rounding_mode = encode_bfp_rounding_mode(S390_ROUND_PER_FPC);
+ IRTemp rounding_mode = encode_bfp_rounding_mode(S390_BFP_ROUND_PER_FPC);
assign(op1, get_fpr_pair(r1));
assign(op2, get_fpr_pair(r2));
|
|
From: <sv...@va...> - 2012-10-07 04:03:21
|
florian 2012-10-07 05:00:48 +0100 (Sun, 07 Oct 2012)
New Revision: 13027
Log:
s390: Add a few more test from olden times.
Added files:
trunk/none/tests/s390x/clst.c
trunk/none/tests/s390x/clst.stderr.exp
trunk/none/tests/s390x/clst.stdout.exp
trunk/none/tests/s390x/clst.vgtest
trunk/none/tests/s390x/mvc.c
trunk/none/tests/s390x/mvc.stderr.exp
trunk/none/tests/s390x/mvc.stdout.exp
trunk/none/tests/s390x/mvc.vgtest
trunk/none/tests/s390x/spechelper-algr.c
trunk/none/tests/s390x/spechelper-algr.stderr.exp
trunk/none/tests/s390x/spechelper-algr.stdout.exp
trunk/none/tests/s390x/spechelper-algr.vgtest
trunk/none/tests/s390x/spechelper-alr.c
trunk/none/tests/s390x/spechelper-alr.stderr.exp
trunk/none/tests/s390x/spechelper-alr.stdout.exp
trunk/none/tests/s390x/spechelper-alr.vgtest
trunk/none/tests/s390x/spechelper-clr.c
trunk/none/tests/s390x/spechelper-clr.stderr.exp
trunk/none/tests/s390x/spechelper-clr.stdout.exp
trunk/none/tests/s390x/spechelper-clr.vgtest
trunk/none/tests/s390x/spechelper-cr.c
trunk/none/tests/s390x/spechelper-cr.stderr.exp
trunk/none/tests/s390x/spechelper-cr.stdout.exp
trunk/none/tests/s390x/spechelper-cr.vgtest
trunk/none/tests/s390x/spechelper-icm-1.c
trunk/none/tests/s390x/spechelper-icm-1.stderr.exp
trunk/none/tests/s390x/spechelper-icm-1.stdout.exp
trunk/none/tests/s390x/spechelper-icm-1.vgtest
trunk/none/tests/s390x/spechelper-icm-2.c
trunk/none/tests/s390x/spechelper-icm-2.stderr.exp
trunk/none/tests/s390x/spechelper-icm-2.stdout.exp
trunk/none/tests/s390x/spechelper-icm-2.vgtest
trunk/none/tests/s390x/spechelper-ltr.c
trunk/none/tests/s390x/spechelper-ltr.stderr.exp
trunk/none/tests/s390x/spechelper-ltr.stdout.exp
trunk/none/tests/s390x/spechelper-ltr.vgtest
trunk/none/tests/s390x/spechelper-or.c
trunk/none/tests/s390x/spechelper-or.stderr.exp
trunk/none/tests/s390x/spechelper-or.stdout.exp
trunk/none/tests/s390x/spechelper-or.vgtest
trunk/none/tests/s390x/spechelper-slgr.c
trunk/none/tests/s390x/spechelper-slgr.stderr.exp
trunk/none/tests/s390x/spechelper-slgr.stdout.exp
trunk/none/tests/s390x/spechelper-slgr.vgtest
trunk/none/tests/s390x/spechelper-slr.c
trunk/none/tests/s390x/spechelper-slr.stderr.exp
trunk/none/tests/s390x/spechelper-slr.stdout.exp
trunk/none/tests/s390x/spechelper-slr.vgtest
trunk/none/tests/s390x/spechelper-tm.c
trunk/none/tests/s390x/spechelper-tm.stderr.exp
trunk/none/tests/s390x/spechelper-tm.stdout.exp
trunk/none/tests/s390x/spechelper-tm.vgtest
trunk/none/tests/s390x/spechelper-tmll.c
trunk/none/tests/s390x/spechelper-tmll.stderr.exp
trunk/none/tests/s390x/spechelper-tmll.stdout.exp
trunk/none/tests/s390x/spechelper-tmll.vgtest
trunk/none/tests/s390x/svc.h
trunk/none/tests/s390x/test_clone.c
trunk/none/tests/s390x/test_clone.stderr.exp
trunk/none/tests/s390x/test_clone.stdout.exp
trunk/none/tests/s390x/test_clone.vgtest
trunk/none/tests/s390x/test_fork.c
trunk/none/tests/s390x/test_fork.stderr.exp
trunk/none/tests/s390x/test_fork.stdout.exp
trunk/none/tests/s390x/test_fork.vgtest
trunk/none/tests/s390x/test_sig.c
trunk/none/tests/s390x/test_sig.stderr.exp
trunk/none/tests/s390x/test_sig.stdout.exp
trunk/none/tests/s390x/test_sig.vgtest
Modified directories:
trunk/none/tests/s390x/
Modified files:
trunk/none/tests/s390x/Makefile.am
trunk/none/tests/s390x/test.h
Modified: trunk/none/tests/s390x/
Added: trunk/none/tests/s390x/spechelper-alr.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-alr.vgtest 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-alr.vgtest 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1 @@
+prog: spechelper-alr
Property changed: trunk/none/tests/s390x (+0 -0)
___________________________________________________________________
Name: svn:ignore
- .deps
add
add_EI
add_GE
allexec
and
and_EI
clc
clcle
cvb
cvd
div
ex_clone
ex_sig
flogr
icm
insert
insert_EI
lam_stam
lpr
Makefile
Makefile.in
mul
mul_GE
mvst
or
or_EI
srst
sub
sub_EI
tcxb
xc
xor
xor_EI
stck
stcke
stckf
op_exception
fgx
condloadstore
fold_And16
stfle
op00
cksm
clcl
mvcl
troo
trot
trto
trtt
tr
tre
clrj
clgrj
crj
cgrj
clij
clgij
cij
cgij
cs
csg
cds
cdsg
cu21
cu21_1
cu24
cu24_1
cu42
cu12
cu12_1
cu14
cu14_1
cu41
ecag
fpext
fpext_warn
fpconv
rounding-1
rounding-2
rounding-3
rounding-4
rounding-5
bfp-1
bfp-2
bfp-3
bfp-4
srnm
srnmb
comp-1
comp-2
ex
exrl
tm
tmll
stmg
+ .deps
add
add_EI
add_GE
allexec
and
and_EI
clc
clcle
cvb
cvd
div
ex_clone
ex_sig
flogr
icm
insert
insert_EI
lam_stam
lpr
Makefile
Makefile.in
mul
mul_GE
mvst
or
or_EI
srst
sub
sub_EI
tcxb
xc
xor
xor_EI
stck
stcke
stckf
op_exception
fgx
condloadstore
fold_And16
stfle
op00
cksm
clcl
mvcl
troo
trot
trto
trtt
tr
tre
clrj
clgrj
crj
cgrj
clij
clgij
cij
cgij
cs
csg
cds
cdsg
cu21
cu21_1
cu24
cu24_1
cu42
cu12
cu12_1
cu14
cu14_1
cu41
ecag
fpext
fpext_warn
fpconv
rounding-1
rounding-2
rounding-3
rounding-4
rounding-5
bfp-1
bfp-2
bfp-3
bfp-4
srnm
srnmb
comp-1
comp-2
ex
exrl
tm
tmll
stmg
test_sig
test_clone
test_fork
clst
mvc
spechelper-algr
spechelper-tmll
spechelper-icm-1
spechelper-icm-2
spechelper-cr
spechelper-ltr
spechelper-alr
spechelper-clr
spechelper-slr
spechelper-slgr
spechelper-or
spechelper-tm
Added: trunk/none/tests/s390x/spechelper-or.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-or.vgtest 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-or.vgtest 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1 @@
+prog: spechelper-or
Added: trunk/none/tests/s390x/mvc.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/s390x/mvc.stderr.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/mvc.stderr.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/spechelper-icm-1.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-icm-1.vgtest 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-icm-1.vgtest 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1 @@
+prog: spechelper-icm-1
Added: trunk/none/tests/s390x/test_sig.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/s390x/test_sig.stderr.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/test_sig.stderr.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/mvc.c (+62 -0)
===================================================================
--- trunk/none/tests/s390x/mvc.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/mvc.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+
+char buffer[] = "0123456789abcdefXXXXX";
+char target[] = "---------------------";
+char overlap[]= "012345678901234567890";
+char full[300];
+
+int main(void)
+{
+ int i;
+
+ /* Normal copy */
+ printf("------- Copy 17 bytes from BUFFER to TARGET\n");
+ printf("before: buffer = |%s|\n", buffer);
+ printf("before: target = |%s|\n", target);
+ asm volatile( "mvc 0(17,%0),0(%1)\n"
+ ::"a" (target),"a" (buffer): "memory");
+ printf("after: buffer = |%s|\n", buffer);
+ printf("after: target = |%s|\n", target);
+ printf("\n");
+
+ /* Destructive overlap #1 */
+ printf("------- Destructive overlap #1\n");
+ printf("before: |%s|\n", overlap);
+ asm volatile( "mvc 1(17,%0),0(%1)\n"
+ ::"a" (overlap),"a" (overlap): "memory");
+ printf("after: |%s|\n", overlap);
+
+ /* Destructive overlap #2 */
+ printf("------- Destructive overlap #2\n");
+ memset(target, '-', sizeof target - 1); // restore initial state
+ printf("before: target = |%s|\n", target);
+ asm volatile( "mvi 0(%0),'x'\n\t" // target[1] = 'x'
+ "mvc 1(2,%0),0(%0)\n\t" // target[2:3] = target[1]
+ :: "a" (target+1));
+ printf("after: target = |%s|\n", target);
+
+ /* Destructive overlap #3 */
+ printf("------- Destructive overlap #3 (max length)\n");
+ memset(full, '-', sizeof full);
+ full[0] = 'x';
+ asm volatile( "mvc 1(256,%0),0(%0)\n\t" // full[1:256] = full[0]
+ :: "a" (full));
+ /* Verify: the first 256+1 characters should be 'x' followed by '-' */
+ for (i = 0; i <= 256; ++i)
+ assert(full[i] == 'x');
+ for ( ; i < sizeof full; ++i)
+ assert(full[i] == '-');
+ printf("\n");
+
+ /* Non-destructive overlap */
+ printf("------- Non-destructive overlap buf[0:4] = buf[10:14]\n");
+ char buf[] = "0123456789abcde";
+ printf("before: buf = |%s|\n", buf);
+ asm volatile( "mvc 0(5,%0),10(%1)\n"
+ ::"a" (buf),"a" (buf): "memory");
+ printf("after: buf = |%s|\n", buf);
+
+ return 0;
+}
Added: trunk/none/tests/s390x/spechelper-ltr.c (+120 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-ltr.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-ltr.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,120 @@
+#include <stdio.h>
+
+#define branch(mask,_v1) \
+ ({ \
+ unsigned char taken; \
+ unsigned b1 = _v1; \
+ asm volatile( " ltr %[b1],%[b1]\n\t" \
+ " brc " #mask " ,1f\n\t" \
+ " mvi %[taken],0\n\t" \
+ " j 0f\n\t" \
+ "1: mvi %[taken],1\n\t" \
+ "0: bcr 0,0 /* nop */\n\t" \
+ : [taken] "=Q" (taken), [b1] "+d"(b1) \
+ : \
+ : "cc"); \
+ taken; \
+ })
+
+void
+ltr_1(void)
+{
+ int wrong, ok, v1;
+
+ printf("Test #1 value = 0\n");
+
+ v1 = 0;
+ wrong = ok = 0;
+ if (branch(0, v1)) ++wrong; else ++ok;
+ if (branch(1, v1)) ++wrong; else ++ok;
+ if (branch(2, v1)) ++wrong; else ++ok;
+ if (branch(3, v1)) ++wrong; else ++ok;
+ if (branch(4, v1)) ++wrong; else ++ok;
+ if (branch(5, v1)) ++wrong; else ++ok;
+ if (branch(6, v1)) ++wrong; else ++ok;
+ if (branch(7, v1)) ++wrong; else ++ok;
+ if (branch(8, v1)) ++ok; else ++wrong;
+ if (branch(9, v1)) ++ok; else ++wrong;
+ if (branch(10, v1)) ++ok; else ++wrong;
+ if (branch(11, v1)) ++ok; else ++wrong;
+ if (branch(12, v1)) ++ok; else ++wrong;
+ if (branch(13, v1)) ++ok; else ++wrong;
+ if (branch(14, v1)) ++ok; else ++wrong;
+ if (branch(15, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+ltr_2(void)
+{
+ int wrong, ok, v1;
+
+ printf("Test #2 value > 0\n");
+ v1 = 42;
+ wrong = ok = 0;
+ if (branch(0, v1)) ++wrong; else ++ok;
+ if (branch(1, v1)) ++wrong; else ++ok;
+ if (branch(2, v1)) ++ok; else ++wrong;
+ if (branch(3, v1)) ++ok; else ++wrong;
+ if (branch(4, v1)) ++wrong; else ++ok;
+ if (branch(5, v1)) ++wrong; else ++ok;
+ if (branch(6, v1)) ++ok; else ++wrong;
+ if (branch(7, v1)) ++ok; else ++wrong;
+ if (branch(8, v1)) ++wrong; else ++ok;
+ if (branch(9, v1)) ++wrong; else ++ok;
+ if (branch(10, v1)) ++ok; else ++wrong;
+ if (branch(11, v1)) ++ok; else ++wrong;
+ if (branch(12, v1)) ++wrong; else ++ok;
+ if (branch(13, v1)) ++wrong; else ++ok;
+ if (branch(14, v1)) ++ok; else ++wrong;
+ if (branch(15, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+ltr_3(void)
+{
+ int wrong, ok, v1;
+
+ printf("Test #3 value < 0\n");
+
+ v1 = -100;
+ wrong = ok = 0;
+ if (branch(0, v1)) ++wrong; else ++ok;
+ if (branch(1, v1)) ++wrong; else ++ok;
+ if (branch(2, v1)) ++wrong; else ++ok;
+ if (branch(3, v1)) ++wrong; else ++ok;
+ if (branch(4, v1)) ++ok; else ++wrong;
+ if (branch(5, v1)) ++ok; else ++wrong;
+ if (branch(6, v1)) ++ok; else ++wrong;
+ if (branch(7, v1)) ++ok; else ++wrong;
+ if (branch(8, v1)) ++wrong; else ++ok;
+ if (branch(9, v1)) ++wrong; else ++ok;
+ if (branch(10, v1)) ++wrong; else ++ok;
+ if (branch(11, v1)) ++wrong; else ++ok;
+ if (branch(12, v1)) ++ok; else ++wrong;
+ if (branch(13, v1)) ++ok; else ++wrong;
+ if (branch(14, v1)) ++ok; else ++wrong;
+ if (branch(15, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+int main()
+{
+ ltr_1();
+ ltr_2();
+ ltr_3();
+ return 0;
+}
Added: trunk/none/tests/s390x/mvc.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/mvc.vgtest 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/mvc.vgtest 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1 @@
+prog: mvc
Added: trunk/none/tests/s390x/spechelper-slgr.c (+138 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-slgr.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-slgr.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,138 @@
+#include <stdio.h>
+
+#define branch(mask,_v1,_v2) \
+ ({ \
+ unsigned char taken; \
+ unsigned long b1 = _v1; \
+ unsigned long b2 = _v2; \
+ asm volatile(" slgr %[b1],%[b2]\n\t" \
+ " brc " #mask " ,1f\n\t" \
+ " mvi %[taken],0\n\t" \
+ " j 0f\n\t" \
+ "1: mvi %[taken],1\n\t" \
+ "0: bcr 0,0 /* nop */\n\t" \
+ : [taken] "=Q" (taken), [b1] "+d"(b1) \
+ : [b2] "d"(b2) \
+ : "cc"); \
+ taken; \
+ })
+
+
+/* cc = (op1 == op2) ? 2
+ : (op1 > op2) ? 3 : 1; */
+
+
+void
+slgr_equal(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #1 op1 == op2\n");
+
+ v1 = v2 = 42;
+ wrong = ok = 0;
+
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++wrong; else ++ok;
+ if (branch(2, v1, v2)) ++ok; else ++wrong;
+ if (branch(3, v1, v2)) ++ok; else ++wrong;
+ if (branch(4, v1, v2)) ++wrong; else ++ok;
+ if (branch(5, v1, v2)) ++wrong; else ++ok;
+ if (branch(6, v1, v2)) ++ok; else ++wrong;
+ if (branch(7, v1, v2)) ++ok; else ++wrong;
+ if (branch(8, v1, v2)) ++wrong; else ++ok;
+ if (branch(9, v1, v2)) ++wrong; else ++ok;
+ if (branch(10, v1, v2)) ++ok; else ++wrong;
+ if (branch(11, v1, v2)) ++ok; else ++wrong;
+ if (branch(12, v1, v2)) ++wrong; else ++ok;
+ if (branch(13, v1, v2)) ++wrong; else ++ok;
+ if (branch(14, v1, v2)) ++ok; else ++wrong;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+slgr_less(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #2 op1 < op2\n");
+
+ v1 = 100;
+ v2 = 1000;
+
+ wrong = ok = 0;
+
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++wrong; else ++ok;
+ if (branch(2, v1, v2)) ++wrong; else ++ok;
+ if (branch(3, v1, v2)) ++wrong; else ++ok;
+ if (branch(4, v1, v2)) ++ok; else ++wrong;
+ if (branch(5, v1, v2)) ++ok; else ++wrong;
+ if (branch(6, v1, v2)) ++ok; else ++wrong;
+ if (branch(7, v1, v2)) ++ok; else ++wrong;
+ if (branch(8, v1, v2)) ++wrong; else ++ok;
+ if (branch(9, v1, v2)) ++wrong; else ++ok;
+ if (branch(10, v1, v2)) ++wrong; else ++ok;
+ if (branch(11, v1, v2)) ++wrong; else ++ok;
+ if (branch(12, v1, v2)) ++ok; else ++wrong;
+ if (branch(13, v1, v2)) ++ok; else ++wrong;
+ if (branch(14, v1, v2)) ++ok; else ++wrong;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 /* || ok != 16 */)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+slgr_greater(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #3 op1 > op2\n");
+
+ v1 = 10000;
+ v2 = 1000;
+
+ wrong = ok = 0;
+
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++ok; else ++wrong;
+ if (branch(2, v1, v2)) ++wrong; else ++ok;
+ if (branch(3, v1, v2)) ++ok; else ++wrong;
+ if (branch(4, v1, v2)) ++wrong; else ++ok;
+ if (branch(5, v1, v2)) ++ok; else ++wrong;
+ if (branch(6, v1, v2)) ++wrong; else ++ok;
+ if (branch(7, v1, v2)) ++ok; else ++wrong;
+ if (branch(8, v1, v2)) ++wrong; else ++ok;
+ if (branch(9, v1, v2)) ++ok; else ++wrong;
+ if (branch(10, v1, v2)) ++wrong; else ++ok;
+ if (branch(11, v1, v2)) ++ok; else ++wrong;
+ if (branch(12, v1, v2)) ++wrong; else ++ok;
+ if (branch(13, v1, v2)) ++ok; else ++wrong;
+ if (branch(14, v1, v2)) ++wrong; else ++ok;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+int main()
+{
+ slgr_equal();
+ slgr_less();
+ slgr_greater();
+
+ return 0;
+}
Added: trunk/none/tests/s390x/clst.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/clst.vgtest 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/clst.vgtest 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1 @@
+prog: clst
Added: trunk/none/tests/s390x/spechelper-clr.stdout.exp (+6 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-clr.stdout.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-clr.stdout.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,6 @@
+Test #1 op1 == op2
+OK
+Test #2 op1 > op2
+OK
+Test #3 op1 < op2
+OK
Added: trunk/none/tests/s390x/spechelper-clr.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-clr.stderr.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-clr.stderr.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/test_clone.stderr.exp (+3 -0)
===================================================================
--- trunk/none/tests/s390x/test_clone.stderr.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/test_clone.stderr.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,3 @@
+
+
+
Added: trunk/none/tests/s390x/clst.c (+53 -0)
===================================================================
--- trunk/none/tests/s390x/clst.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/clst.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <ctype.h>
+#include "test.h"
+
+#define LOOPBACK "jo 0b \n\t"
+
+typedef struct {
+ const char *str1;
+ const char *str2;
+ int cc;
+} clst_t;
+
+static clst_t
+do_clst(const char *__string1, const char *__string2, char __end)
+{
+ register char end asm ("0") = __end;
+ register const char *string1 asm ("2") = __string1;
+ register const char *string2 asm ("4") = __string2;
+
+ asm volatile( "0: clst 2,4\n\t"
+ LOOPBACK
+ :"+d" (string1), "+d" (string2) :"d" (end): "cc");
+
+ return (clst_t) { .str1 = string1, .str2 = string2, .cc = get_cc() };
+}
+
+void
+clst(const char *str1, const char *str2, int sentinel)
+{
+ clst_t res;
+
+ printf("comparing: %s with %s sentinel = %d", str1, str2, sentinel);
+ if (isprint(sentinel))
+ printf(" (%c)", sentinel);
+ printf("\n");
+ res = do_clst(str1, str2, sentinel);
+ printf("str1 = %s\nstr2 = %s\ncc = %d\n", res.str1, res.str2, res.cc);
+ printf("\n");
+}
+
+int main(void)
+{
+ clst("lower123", "lowerabc", '\0');
+ clst("higher234", "higher123", '\0');
+ clst("equal", "equal", '\0');
+
+ clst("equal", "equallong", '\0');
+ clst("equallong", "equal", '\0');
+
+ clst("lower1", "lower2", 'w'); // will compare equal
+
+ return 0;
+}
Added: trunk/none/tests/s390x/spechelper-algr.c (+168 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-algr.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-algr.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,168 @@
+#include <stdio.h>
+
+#define branch(mask,_v1,_v2) \
+ ({ \
+ unsigned char taken; \
+ unsigned long b1 = _v1; \
+ unsigned long b2 = _v2; \
+ asm volatile( " algr %[b1],%[b2]\n\t" \
+ " brc " #mask " ,1f\n\t" \
+ " mvi %[taken],0\n\t" \
+ " j 0f\n\t" \
+ "1: mvi %[taken],1\n\t" \
+ "0: bcr 0,0 /* nop */\n\t" \
+ : [taken] "=Q" (taken), [b1] "+d"(b1) \
+ : [b2] "d"(b2) \
+ : "cc"); \
+ taken; \
+ })
+
+
+void
+algr_cc_0(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #1 cc == 0\n");
+
+ v1 = v2 = 0;
+ wrong = ok = 0;
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++wrong; else ++ok;
+ if (branch(2, v1, v2)) ++wrong; else ++ok;
+ if (branch(3, v1, v2)) ++wrong; else ++ok;
+ if (branch(4, v1, v2)) ++wrong; else ++ok;
+ if (branch(5, v1, v2)) ++wrong; else ++ok;
+ if (branch(6, v1, v2)) ++wrong; else ++ok;
+ if (branch(7, v1, v2)) ++wrong; else ++ok;
+ if (branch(8, v1, v2)) ++ok; else ++wrong;
+ if (branch(9, v1, v2)) ++ok; else ++wrong;
+ if (branch(10, v1, v2)) ++ok; else ++wrong;
+ if (branch(11, v1, v2)) ++ok; else ++wrong;
+ if (branch(12, v1, v2)) ++ok; else ++wrong;
+ if (branch(13, v1, v2)) ++ok; else ++wrong;
+ if (branch(14, v1, v2)) ++ok; else ++wrong;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+algr_cc_1(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #2 cc == 1\n");
+
+ v1 = v2 = 42;
+ wrong = ok = 0;
+
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++wrong; else ++ok;
+ if (branch(2, v1, v2)) ++wrong; else ++ok;
+ if (branch(3, v1, v2)) ++wrong; else ++ok;
+ if (branch(4, v1, v2)) ++ok; else ++wrong;
+ if (branch(5, v1, v2)) ++ok; else ++wrong;
+ if (branch(6, v1, v2)) ++ok; else ++wrong;
+ if (branch(7, v1, v2)) ++ok; else ++wrong;
+ if (branch(8, v1, v2)) ++wrong; else ++ok;
+ if (branch(9, v1, v2)) ++wrong; else ++ok;
+ if (branch(10, v1, v2)) ++wrong; else ++ok;
+ if (branch(11, v1, v2)) ++wrong; else ++ok;
+ if (branch(12, v1, v2)) ++ok; else ++wrong;
+ if (branch(13, v1, v2)) ++ok; else ++wrong;
+ if (branch(14, v1, v2)) ++ok; else ++wrong;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+algr_cc_2(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #3 cc == 2\n");
+
+ v1 = ~0ULL;
+ v2 = 1;
+
+ wrong = ok = 0;
+
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++wrong; else ++ok;
+ if (branch(2, v1, v2)) ++ok; else ++wrong;
+ if (branch(3, v1, v2)) ++ok; else ++wrong;
+ if (branch(4, v1, v2)) ++wrong; else ++ok;
+ if (branch(5, v1, v2)) ++wrong; else ++ok;
+ if (branch(6, v1, v2)) ++ok; else ++wrong;
+ if (branch(7, v1, v2)) ++ok; else ++wrong;
+ if (branch(8, v1, v2)) ++wrong; else ++ok;
+ if (branch(9, v1, v2)) ++wrong; else ++ok;
+ if (branch(10, v1, v2)) ++ok; else ++wrong;
+ if (branch(11, v1, v2)) ++ok; else ++wrong;
+ if (branch(12, v1, v2)) ++wrong; else ++ok;
+ if (branch(13, v1, v2)) ++wrong; else ++ok;
+ if (branch(14, v1, v2)) ++ok; else ++wrong;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 /* || ok != 16 */)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+algr_cc_3(void)
+{
+ unsigned long v1, v2;
+ int wrong, ok;
+
+ printf("Test #4 cc == 3\n");
+
+ v1 = ~0ULL;
+ v2 = 100;
+
+ wrong = ok = 0;
+
+ if (branch(0, v1, v2)) ++wrong; else ++ok;
+ if (branch(1, v1, v2)) ++ok; else ++wrong;
+ if (branch(2, v1, v2)) ++wrong; else ++ok;
+ if (branch(3, v1, v2)) ++ok; else ++wrong;
+ if (branch(4, v1, v2)) ++wrong; else ++ok;
+ if (branch(5, v1, v2)) ++ok; else ++wrong;
+ if (branch(6, v1, v2)) ++wrong; else ++ok;
+ if (branch(7, v1, v2)) ++ok; else ++wrong;
+ if (branch(8, v1, v2)) ++wrong; else ++ok;
+ if (branch(9, v1, v2)) ++ok; else ++wrong;
+ if (branch(10, v1, v2)) ++wrong; else ++ok;
+ if (branch(11, v1, v2)) ++ok; else ++wrong;
+ if (branch(12, v1, v2)) ++wrong; else ++ok;
+ if (branch(13, v1, v2)) ++ok; else ++wrong;
+ if (branch(14, v1, v2)) ++wrong; else ++ok;
+ if (branch(15, v1, v2)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+int main()
+{
+ algr_cc_0();
+ algr_cc_1();
+ algr_cc_2();
+ algr_cc_3();
+
+ return 0;
+}
Added: trunk/none/tests/s390x/spechelper-slr.stdout.exp (+6 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-slr.stdout.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-slr.stdout.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,6 @@
+Test #1 op1 == op2
+OK
+Test #2 op1 < op2
+OK
+Test #3 op1 > op2
+OK
Added: trunk/none/tests/s390x/spechelper-icm-1.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-icm-1.stderr.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-icm-1.stderr.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/spechelper-tmll.stdout.exp (+12 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-tmll.stdout.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-tmll.stdout.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,12 @@
+Test #1 mask == 0, value == ~0 --> cc == 0
+OK
+Test #2 mask == 0xFFF, value == 0 --> cc == 0
+OK
+Test #3 mask == 0xFFFF, value == 0xFFFF --> cc == 3
+OK
+Test #4 mask == 0x8000, value == 0x8000 --> cc == 3
+OK
+Test #5 mask == 0xF000, value == 0x9000 --> cc == 2
+OK
+Test #6 mask == 0xF000, value == 0x3000 --> cc == 1
+OK
Added: trunk/none/tests/s390x/test_sig.vgtest (+1 -0)
===================================================================
--- trunk/none/tests/s390x/test_sig.vgtest 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/test_sig.vgtest 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1 @@
+prog: test_sig
Added: trunk/none/tests/s390x/spechelper-tm.c (+233 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-tm.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-tm.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,233 @@
+#include <stdio.h>
+
+#define branch(mask,i2,_v1) \
+ ({ \
+ unsigned char taken; \
+ unsigned char v1 = _v1; \
+ asm volatile( " tm %[v]," #i2 "\n\t" \
+ " brc " #mask " ,1f\n\t" \
+ " mvi %[taken],0\n\t" \
+ " j 0f\n\t" \
+ "1: mvi %[taken],1\n\t" \
+ "0: bcr 0,0 /* nop */\n\t" \
+ : [taken] "=Q" (taken) \
+ : [v] "Q"(v1) \
+ : "cc"); \
+ taken; \
+ })
+
+void
+tm_mask_0(void)
+{
+ int wrong, ok;
+ unsigned char v;
+
+ printf("Test #1 mask == 0, value == ~0 --> cc == 0\n");
+
+ v = ~0;
+ wrong = ok = 0;
+
+ if (branch(0, 0, v)) ++wrong; else ++ok;
+ if (branch(1, 0, v)) ++wrong; else ++ok;
+ if (branch(2, 0, v)) ++wrong; else ++ok;
+ if (branch(3, 0, v)) ++wrong; else ++ok;
+ if (branch(4, 0, v)) ++wrong; else ++ok;
+ if (branch(5, 0, v)) ++wrong; else ++ok;
+ if (branch(6, 0, v)) ++wrong; else ++ok;
+ if (branch(7, 0, v)) ++wrong; else ++ok;
+ if (branch(8, 0, v)) ++ok; else ++wrong;
+ if (branch(9, 0, v)) ++ok; else ++wrong;
+ if (branch(10, 0, v)) ++ok; else ++wrong;
+ if (branch(11, 0, v)) ++ok; else ++wrong;
+ if (branch(12, 0, v)) ++ok; else ++wrong;
+ if (branch(13, 0, v)) ++ok; else ++wrong;
+ if (branch(14, 0, v)) ++ok; else ++wrong;
+ if (branch(15, 0, v)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+tm_value_0(void)
+{
+ int wrong, ok;
+ unsigned char v;
+
+ printf("Test #2 mask == 0xFF, value == 0 --> cc == 0\n");
+
+ v = 0;
+ wrong = ok = 0;
+
+ if (branch(0, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(1, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(2, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(3, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(4, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(5, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(6, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(7, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(8, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(9, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(10, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(11, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(12, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(13, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(14, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(15, 0xFF, v)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+tm_all_selected_bits_set_1(void)
+{
+ int wrong, ok;
+ unsigned char v;
+
+ printf("Test #3 mask == 0xFF, value == 0xFF --> cc == 3\n");
+
+ v = 0xFF;
+ wrong = ok = 0;
+
+ if (branch(0, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(1, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(2, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(3, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(4, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(5, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(6, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(7, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(8, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(9, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(10, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(11, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(12, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(13, 0xFF, v)) ++ok; else ++wrong;
+ if (branch(14, 0xFF, v)) ++wrong; else ++ok;
+ if (branch(15, 0xFF, v)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+tm_all_selected_bits_set_2(void)
+{
+ int wrong, ok;
+ unsigned char v;
+
+ printf("Test #4 mask == 0x80, value == 0x80 --> cc == 3\n");
+
+ v = 0x80;
+ wrong = ok = 0;
+
+ if (branch(0, 0x80, v)) ++wrong; else ++ok;
+ if (branch(1, 0x80, v)) ++ok; else ++wrong;
+ if (branch(2, 0x80, v)) ++wrong; else ++ok;
+ if (branch(3, 0x80, v)) ++ok; else ++wrong;
+ if (branch(4, 0x80, v)) ++wrong; else ++ok;
+ if (branch(5, 0x80, v)) ++ok; else ++wrong;
+ if (branch(6, 0x80, v)) ++wrong; else ++ok;
+ if (branch(7, 0x80, v)) ++ok; else ++wrong;
+ if (branch(8, 0x80, v)) ++wrong; else ++ok;
+ if (branch(9, 0x80, v)) ++ok; else ++wrong;
+ if (branch(10, 0x80, v)) ++wrong; else ++ok;
+ if (branch(11, 0x80, v)) ++ok; else ++wrong;
+ if (branch(12, 0x80, v)) ++wrong; else ++ok;
+ if (branch(13, 0x80, v)) ++ok; else ++wrong;
+ if (branch(14, 0x80, v)) ++wrong; else ++ok;
+ if (branch(15, 0x80, v)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+tm_some_selected_bits_set_msb_set(void)
+{
+ int wrong, ok;
+ unsigned char v;
+
+ printf("Test #5 mask == 0xF0, value == 0x90 --> cc == 1\n");
+
+ v = 0x90;
+ wrong = ok = 0;
+
+ if (branch(0, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(1, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(2, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(3, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(4, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(5, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(6, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(7, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(8, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(9, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(10, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(11, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(12, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(13, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(14, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(15, 0xF0, v)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+tm_some_selected_bits_set_msb_not_set(void)
+{
+ int wrong, ok;
+ unsigned char v;
+
+ printf("Test #6 mask == 0xF0, value == 0x30 --> cc == 1\n");
+
+ v = 0x30;
+ wrong = ok = 0;
+
+ if (branch(0, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(1, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(2, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(3, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(4, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(5, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(6, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(7, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(8, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(9, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(10, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(11, 0xF0, v)) ++wrong; else ++ok;
+ if (branch(12, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(13, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(14, 0xF0, v)) ++ok; else ++wrong;
+ if (branch(15, 0xF0, v)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+int main()
+{
+ tm_mask_0();
+ tm_value_0();
+ tm_all_selected_bits_set_1();
+ tm_all_selected_bits_set_2();
+ tm_some_selected_bits_set_msb_set();
+ tm_some_selected_bits_set_msb_not_set();
+
+ return 0;
+}
Added: trunk/none/tests/s390x/spechelper-tm.stderr.exp (+2 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-tm.stderr.exp 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-tm.stderr.exp 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/spechelper-icm-2.c (+761 -0)
===================================================================
--- trunk/none/tests/s390x/spechelper-icm-2.c 2012-10-06 19:02:46 +01:00 (rev 13026)
+++ trunk/none/tests/s390x/spechelper-icm-2.c 2012-10-07 05:00:48 +01:00 (rev 13027)
@@ -0,0 +1,761 @@
+#include <stdio.h>
+
+#define branch(mask,icmm,_v1) \
+ ({ \
+ unsigned char taken; \
+ unsigned b1 = _v1; \
+ asm volatile( " larl 1, 2f\n\t" \
+ " l 0, 0(1)\n\t" \
+ " icm 0," #icmm",%[b1]\n\t" \
+ " brc " #mask " ,1f\n\t" \
+ " mvi %[taken],0\n\t" \
+ " j 0f\n\t" \
+ "1: mvi %[taken],1\n\t" \
+ " j 0f\n\t" \
+ "2: .long 0xffffffff\n\t" \
+ "0: bcr 0,0 /* nop */\n\t" \
+ : [taken] "=Q" (taken) \
+ : [b1] "Q"(b1) \
+ : "cc", "0","1"); \
+ taken; \
+ })
+
+void
+icm_mask_0(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #1 mask == 0, value == 0xFFFFFFFF --> cc == 0\n");
+
+ v1 = 0xFFFFFFFF;
+ wrong = ok = 0;
+
+ if (branch(0, 0, v1)) ++wrong; else ++ok;
+ if (branch(1, 0, v1)) ++wrong; else ++ok;
+ if (branch(2, 0, v1)) ++wrong; else ++ok;
+ if (branch(3, 0, v1)) ++wrong; else ++ok;
+ if (branch(4, 0, v1)) ++wrong; else ++ok;
+ if (branch(5, 0, v1)) ++wrong; else ++ok;
+ if (branch(6, 0, v1)) ++wrong; else ++ok;
+ if (branch(7, 0, v1)) ++wrong; else ++ok;
+ if (branch(8, 0, v1)) ++ok; else ++wrong;
+ if (branch(9, 0, v1)) ++ok; else ++wrong;
+ if (branch(10, 0, v1)) ++ok; else ++wrong;
+ if (branch(11, 0, v1)) ++ok; else ++wrong;
+ if (branch(12, 0, v1)) ++ok; else ++wrong;
+ if (branch(13, 0, v1)) ++ok; else ++wrong;
+ if (branch(14, 0, v1)) ++ok; else ++wrong;
+ if (branch(15, 0, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+void
+icm_value_0(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #2 mask == 0xF, value == 0 --> cc == 0\n");
+
+ v1 = 0;
+ wrong = ok = 0;
+
+ if (branch(0, 15, v1)) ++wrong; else ++ok;
+ if (branch(1, 15, v1)) ++wrong; else ++ok;
+ if (branch(2, 15, v1)) ++wrong; else ++ok;
+ if (branch(3, 15, v1)) ++wrong; else ++ok;
+ if (branch(4, 15, v1)) ++wrong; else ++ok;
+ if (branch(5, 15, v1)) ++wrong; else ++ok;
+ if (branch(6, 15, v1)) ++wrong; else ++ok;
+ if (branch(7, 15, v1)) ++wrong; else ++ok;
+ if (branch(8, 15, v1)) ++ok; else ++wrong;
+ if (branch(9, 15, v1)) ++ok; else ++wrong;
+ if (branch(10, 15, v1)) ++ok; else ++wrong;
+ if (branch(11, 15, v1)) ++ok; else ++wrong;
+ if (branch(12, 15, v1)) ++ok; else ++wrong;
+ if (branch(13, 15, v1)) ++ok; else ++wrong;
+ if (branch(14, 15, v1)) ++ok; else ++wrong;
+ if (branch(15, 15, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+/* loads one byte */
+void
+icm_one_byte_msb_set(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #3 load one byte, msb set --> cc == 1\n");
+
+ v1 = 0x80000000;
+ wrong = ok = 0;
+
+ if (branch(0, 8, v1)) ++wrong; else ++ok;
+ if (branch(1, 8, v1)) ++wrong; else ++ok;
+ if (branch(2, 8, v1)) ++wrong; else ++ok;
+ if (branch(3, 8, v1)) ++wrong; else ++ok;
+ if (branch(4, 8, v1)) ++ok; else ++wrong;
+ if (branch(5, 8, v1)) ++ok; else ++wrong;
+ if (branch(6, 8, v1)) ++ok; else ++wrong;
+ if (branch(7, 8, v1)) ++ok; else ++wrong;
+ if (branch(8, 8, v1)) ++wrong; else ++ok;
+ if (branch(9, 8, v1)) ++wrong; else ++ok;
+ if (branch(10, 8, v1)) ++wrong; else ++ok;
+ if (branch(11, 8, v1)) ++wrong; else ++ok;
+ if (branch(12, 8, v1)) ++ok; else ++wrong;
+ if (branch(13, 8, v1)) ++ok; else ++wrong;
+ if (branch(14, 8, v1)) ++ok; else ++wrong;
+ if (branch(15, 8, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 4, v1)) ++wrong; else ++ok;
+ if (branch(1, 4, v1)) ++wrong; else ++ok;
+ if (branch(2, 4, v1)) ++wrong; else ++ok;
+ if (branch(3, 4, v1)) ++wrong; else ++ok;
+ if (branch(4, 4, v1)) ++ok; else ++wrong;
+ if (branch(5, 4, v1)) ++ok; else ++wrong;
+ if (branch(6, 4, v1)) ++ok; else ++wrong;
+ if (branch(7, 4, v1)) ++ok; else ++wrong;
+ if (branch(8, 4, v1)) ++wrong; else ++ok;
+ if (branch(9, 4, v1)) ++wrong; else ++ok;
+ if (branch(10, 4, v1)) ++wrong; else ++ok;
+ if (branch(11, 4, v1)) ++wrong; else ++ok;
+ if (branch(12, 4, v1)) ++ok; else ++wrong;
+ if (branch(13, 4, v1)) ++ok; else ++wrong;
+ if (branch(14, 4, v1)) ++ok; else ++wrong;
+ if (branch(15, 4, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 2, v1)) ++wrong; else ++ok;
+ if (branch(1, 2, v1)) ++wrong; else ++ok;
+ if (branch(2, 2, v1)) ++wrong; else ++ok;
+ if (branch(3, 2, v1)) ++wrong; else ++ok;
+ if (branch(4, 2, v1)) ++ok; else ++wrong;
+ if (branch(5, 2, v1)) ++ok; else ++wrong;
+ if (branch(6, 2, v1)) ++ok; else ++wrong;
+ if (branch(7, 2, v1)) ++ok; else ++wrong;
+ if (branch(8, 2, v1)) ++wrong; else ++ok;
+ if (branch(9, 2, v1)) ++wrong; else ++ok;
+ if (branch(10, 2, v1)) ++wrong; else ++ok;
+ if (branch(11, 2, v1)) ++wrong; else ++ok;
+ if (branch(12, 2, v1)) ++ok; else ++wrong;
+ if (branch(13, 2, v1)) ++ok; else ++wrong;
+ if (branch(14, 2, v1)) ++ok; else ++wrong;
+ if (branch(15, 2, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 1, v1)) ++wrong; else ++ok;
+ if (branch(1, 1, v1)) ++wrong; else ++ok;
+ if (branch(2, 1, v1)) ++wrong; else ++ok;
+ if (branch(3, 1, v1)) ++wrong; else ++ok;
+ if (branch(4, 1, v1)) ++ok; else ++wrong;
+ if (branch(5, 1, v1)) ++ok; else ++wrong;
+ if (branch(6, 1, v1)) ++ok; else ++wrong;
+ if (branch(7, 1, v1)) ++ok; else ++wrong;
+ if (branch(8, 1, v1)) ++wrong; else ++ok;
+ if (branch(9, 1, v1)) ++wrong; else ++ok;
+ if (branch(10, 1, v1)) ++wrong; else ++ok;
+ if (branch(11, 1, v1)) ++wrong; else ++ok;
+ if (branch(12, 1, v1)) ++ok; else ++wrong;
+ if (branch(13, 1, v1)) ++ok; else ++wrong;
+ if (branch(14, 1, v1)) ++ok; else ++wrong;
+ if (branch(15, 1, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 64)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+/* loads two bytes */
+void
+icm_two_bytes_msb_set(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #4 load two bytes, msb set --> cc == 1\n");
+
+ v1 = 0x80000000;
+ wrong = ok = 0;
+
+ if (branch(0, 12, v1)) ++wrong; else ++ok;
+ if (branch(1, 12, v1)) ++wrong; else ++ok;
+ if (branch(2, 12, v1)) ++wrong; else ++ok;
+ if (branch(3, 12, v1)) ++wrong; else ++ok;
+ if (branch(4, 12, v1)) ++ok; else ++wrong;
+ if (branch(5, 12, v1)) ++ok; else ++wrong;
+ if (branch(6, 12, v1)) ++ok; else ++wrong;
+ if (branch(7, 12, v1)) ++ok; else ++wrong;
+ if (branch(8, 12, v1)) ++wrong; else ++ok;
+ if (branch(9, 12, v1)) ++wrong; else ++ok;
+ if (branch(10, 12, v1)) ++wrong; else ++ok;
+ if (branch(11, 12, v1)) ++wrong; else ++ok;
+ if (branch(12, 12, v1)) ++ok; else ++wrong;
+ if (branch(13, 12, v1)) ++ok; else ++wrong;
+ if (branch(14, 12, v1)) ++ok; else ++wrong;
+ if (branch(15, 12, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 10, v1)) ++wrong; else ++ok;
+ if (branch(1, 10, v1)) ++wrong; else ++ok;
+ if (branch(2, 10, v1)) ++wrong; else ++ok;
+ if (branch(3, 10, v1)) ++wrong; else ++ok;
+ if (branch(4, 10, v1)) ++ok; else ++wrong;
+ if (branch(5, 10, v1)) ++ok; else ++wrong;
+ if (branch(6, 10, v1)) ++ok; else ++wrong;
+ if (branch(7, 10, v1)) ++ok; else ++wrong;
+ if (branch(8, 10, v1)) ++wrong; else ++ok;
+ if (branch(9, 10, v1)) ++wrong; else ++ok;
+ if (branch(10, 10, v1)) ++wrong; else ++ok;
+ if (branch(11, 10, v1)) ++wrong; else ++ok;
+ if (branch(12, 10, v1)) ++ok; else ++wrong;
+ if (branch(13, 10, v1)) ++ok; else ++wrong;
+ if (branch(14, 10, v1)) ++ok; else ++wrong;
+ if (branch(15, 10, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 9, v1)) ++wrong; else ++ok;
+ if (branch(1, 9, v1)) ++wrong; else ++ok;
+ if (branch(2, 9, v1)) ++wrong; else ++ok;
+ if (branch(3, 9, v1)) ++wrong; else ++ok;
+ if (branch(4, 9, v1)) ++ok; else ++wrong;
+ if (branch(5, 9, v1)) ++ok; else ++wrong;
+ if (branch(6, 9, v1)) ++ok; else ++wrong;
+ if (branch(7, 9, v1)) ++ok; else ++wrong;
+ if (branch(8, 9, v1)) ++wrong; else ++ok;
+ if (branch(9, 9, v1)) ++wrong; else ++ok;
+ if (branch(10, 9, v1)) ++wrong; else ++ok;
+ if (branch(11, 9, v1)) ++wrong; else ++ok;
+ if (branch(12, 9, v1)) ++ok; else ++wrong;
+ if (branch(13, 9, v1)) ++ok; else ++wrong;
+ if (branch(14, 9, v1)) ++ok; else ++wrong;
+ if (branch(15, 9, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 6, v1)) ++wrong; else ++ok;
+ if (branch(1, 6, v1)) ++wrong; else ++ok;
+ if (branch(2, 6, v1)) ++wrong; else ++ok;
+ if (branch(3, 6, v1)) ++wrong; else ++ok;
+ if (branch(4, 6, v1)) ++ok; else ++wrong;
+ if (branch(5, 6, v1)) ++ok; else ++wrong;
+ if (branch(6, 6, v1)) ++ok; else ++wrong;
+ if (branch(7, 6, v1)) ++ok; else ++wrong;
+ if (branch(8, 6, v1)) ++wrong; else ++ok;
+ if (branch(9, 6, v1)) ++wrong; else ++ok;
+ if (branch(10, 6, v1)) ++wrong; else ++ok;
+ if (branch(11, 6, v1)) ++wrong; else ++ok;
+ if (branch(12, 6, v1)) ++ok; else ++wrong;
+ if (branch(13, 6, v1)) ++ok; else ++wrong;
+ if (branch(14, 6, v1)) ++ok; else ++wrong;
+ if (branch(15, 6, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 5, v1)) ++wrong; else ++ok;
+ if (branch(1, 5, v1)) ++wrong; else ++ok;
+ if (branch(2, 5, v1)) ++wrong; else ++ok;
+ if (branch(3, 5, v1)) ++wrong; else ++ok;
+ if (branch(4, 5, v1)) ++ok; else ++wrong;
+ if (branch(5, 5, v1)) ++ok; else ++wrong;
+ if (branch(6, 5, v1)) ++ok; else ++wrong;
+ if (branch(7, 5, v1)) ++ok; else ++wrong;
+ if (branch(8, 5, v1)) ++wrong; else ++ok;
+ if (branch(9, 5, v1)) ++wrong; else ++ok;
+ if (branch(10, 5, v1)) ++wrong; else ++ok;
+ if (branch(11, 5, v1)) ++wrong; else ++ok;
+ if (branch(12, 5, v1)) ++ok; else ++wrong;
+ if (branch(13, 5, v1)) ++ok; else ++wrong;
+ if (branch(14, 5, v1)) ++ok; else ++wrong;
+ if (branch(15, 5, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 3, v1)) ++wrong; else ++ok;
+ if (branch(1, 3, v1)) ++wrong; else ++ok;
+ if (branch(2, 3, v1)) ++wrong; else ++ok;
+ if (branch(3, 3, v1)) ++wrong; else ++ok;
+ if (branch(4, 3, v1)) ++ok; else ++wrong;
+ if (branch(5, 3, v1)) ++ok; else ++wrong;
+ if (branch(6, 3, v1)) ++ok; else ++wrong;
+ if (branch(7, 3, v1)) ++ok; else ++wrong;
+ if (branch(8, 3, v1)) ++wrong; else ++ok;
+ if (branch(9, 3, v1)) ++wrong; else ++ok;
+ if (branch(10, 3, v1)) ++wrong; else ++ok;
+ if (branch(11, 3, v1)) ++wrong; else ++ok;
+ if (branch(12, 3, v1)) ++ok; else ++wrong;
+ if (branch(13, 3, v1)) ++ok; else ++wrong;
+ if (branch(14, 3, v1)) ++ok; else ++wrong;
+ if (branch(15, 3, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 96)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+/* loads three bytes */
+void
+icm_three_bytes_msb_set(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #5 load three bytes, msb set --> cc == 1\n");
+
+ v1 = 0x80000000;
+ wrong = ok = 0;
+
+ if (branch(0, 14, v1)) ++wrong; else ++ok;
+ if (branch(1, 14, v1)) ++wrong; else ++ok;
+ if (branch(2, 14, v1)) ++wrong; else ++ok;
+ if (branch(3, 14, v1)) ++wrong; else ++ok;
+ if (branch(4, 14, v1)) ++ok; else ++wrong;
+ if (branch(5, 14, v1)) ++ok; else ++wrong;
+ if (branch(6, 14, v1)) ++ok; else ++wrong;
+ if (branch(7, 14, v1)) ++ok; else ++wrong;
+ if (branch(8, 14, v1)) ++wrong; else ++ok;
+ if (branch(9, 14, v1)) ++wrong; else ++ok;
+ if (branch(10, 14, v1)) ++wrong; else ++ok;
+ if (branch(11, 14, v1)) ++wrong; else ++ok;
+ if (branch(12, 14, v1)) ++ok; else ++wrong;
+ if (branch(13, 14, v1)) ++ok; else ++wrong;
+ if (branch(14, 14, v1)) ++ok; else ++wrong;
+ if (branch(15, 14, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 13, v1)) ++wrong; else ++ok;
+ if (branch(1, 13, v1)) ++wrong; else ++ok;
+ if (branch(2, 13, v1)) ++wrong; else ++ok;
+ if (branch(3, 13, v1)) ++wrong; else ++ok;
+ if (branch(4, 13, v1)) ++ok; else ++wrong;
+ if (branch(5, 13, v1)) ++ok; else ++wrong;
+ if (branch(6, 13, v1)) ++ok; else ++wrong;
+ if (branch(7, 13, v1)) ++ok; else ++wrong;
+ if (branch(8, 13, v1)) ++wrong; else ++ok;
+ if (branch(9, 13, v1)) ++wrong; else ++ok;
+ if (branch(10, 13, v1)) ++wrong; else ++ok;
+ if (branch(11, 13, v1)) ++wrong; else ++ok;
+ if (branch(12, 13, v1)) ++ok; else ++wrong;
+ if (branch(13, 13, v1)) ++ok; else ++wrong;
+ if (branch(14, 13, v1)) ++ok; else ++wrong;
+ if (branch(15, 13, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 11, v1)) ++wrong; else ++ok;
+ if (branch(1, 11, v1)) ++wrong; else ++ok;
+ if (branch(2, 11, v1)) ++wrong; else ++ok;
+ if (branch(3, 11, v1)) ++wrong; else ++ok;
+ if (branch(4, 11, v1)) ++ok; else ++wrong;
+ if (branch(5, 11, v1)) ++ok; else ++wrong;
+ if (branch(6, 11, v1)) ++ok; else ++wrong;
+ if (branch(7, 11, v1)) ++ok; else ++wrong;
+ if (branch(8, 11, v1)) ++wrong; else ++ok;
+ if (branch(9, 11, v1)) ++wrong; else ++ok;
+ if (branch(10, 11, v1)) ++wrong; else ++ok;
+ if (branch(11, 11, v1)) ++wrong; else ++ok;
+ if (branch(12, 11, v1)) ++ok; else ++wrong;
+ if (branch(13, 11, v1)) ++ok; else ++wrong;
+ if (branch(14, 11, v1)) ++ok; else ++wrong;
+ if (branch(15, 11, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 7, v1)) ++wrong; else ++ok;
+ if (branch(1, 7, v1)) ++wrong; else ++ok;
+ if (branch(2, 7, v1)) ++wrong; else ++ok;
+ if (branch(3, 7, v1)) ++wrong; else ++ok;
+ if (branch(4, 7, v1)) ++ok; else ++wrong;
+ if (branch(5, 7, v1)) ++ok; else ++wrong;
+ if (branch(6, 7, v1)) ++ok; else ++wrong;
+ if (branch(7, 7, v1)) ++ok; else ++wrong;
+ if (branch(8, 7, v1)) ++wrong; else ++ok;
+ if (branch(9, 7, v1)) ++wrong; else ++ok;
+ if (branch(10, 7, v1)) ++wrong; else ++ok;
+ if (branch(11, 7, v1)) ++wrong; else ++ok;
+ if (branch(12, 7, v1)) ++ok; else ++wrong;
+ if (branch(13, 7, v1)) ++ok; else ++wrong;
+ if (branch(14, 7, v1)) ++ok; else ++wrong;
+ if (branch(15, 7, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 64)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+/* loads four bytes */
+void
+icm_four_bytes_msb_set(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #6 load four bytes, msb set --> cc == 1\n");
+
+ v1 = 0x80000000;
+ wrong = ok = 0;
+
+ if (branch(0, 15, v1)) ++wrong; else ++ok;
+ if (branch(1, 15, v1)) ++wrong; else ++ok;
+ if (branch(2, 15, v1)) ++wrong; else ++ok;
+ if (branch(3, 15, v1)) ++wrong; else ++ok;
+ if (branch(4, 15, v1)) ++ok; else ++wrong;
+ if (branch(5, 15, v1)) ++ok; else ++wrong;
+ if (branch(6, 15, v1)) ++ok; else ++wrong;
+ if (branch(7, 15, v1)) ++ok; else ++wrong;
+ if (branch(8, 15, v1)) ++wrong; else ++ok;
+ if (branch(9, 15, v1)) ++wrong; else ++ok;
+ if (branch(10, 15, v1)) ++wrong; else ++ok;
+ if (branch(11, 15, v1)) ++wrong; else ++ok;
+ if (branch(12, 15, v1)) ++ok; else ++wrong;
+ if (branch(13, 15, v1)) ++ok; else ++wrong;
+ if (branch(14, 15, v1)) ++ok; else ++wrong;
+ if (branch(15, 15, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 16)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+/* loads one byte */
+void
+icm_one_byte_msb_not_set(void)
+{
+ int wrong, ok, v1;
+
+ printf("Test #7 load one byte, msb not set --> cc == 2\n");
+
+ v1 = 0x7FFFFFFF;
+ wrong = ok = 0;
+
+ if (branch(0, 8, v1)) ++wrong; else ++ok;
+ if (branch(1, 8, v1)) ++wrong; else ++ok;
+ if (branch(2, 8, v1)) ++ok; else ++wrong;
+ if (branch(3, 8, v1)) ++ok; else ++wrong;
+ if (branch(4, 8, v1)) ++wrong; else ++ok;
+ if (branch(5, 8, v1)) ++wrong; else ++ok;
+ if (branch(6, 8, v1)) ++ok; else ++wrong;
+ if (branch(7, 8, v1)) ++ok; else ++wrong;
+ if (branch(8, 8, v1)) ++wrong; else ++ok;
+ if (branch(9, 8, v1)) ++wrong; else ++ok;
+ if (branch(10, 8, v1)) ++ok; else ++wrong;
+ if (branch(11, 8, v1)) ++ok; else ++wrong;
+ if (branch(12, 8, v1)) ++wrong; else ++ok;
+ if (branch(13, 8, v1)) ++wrong; else ++ok;
+ if (branch(14, 8, v1)) ++ok; else ++wrong;
+ if (branch(15, 8, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 4, v1)) ++wrong; else ++ok;
+ if (branch(1, 4, v1)) ++wrong; else ++ok;
+ if (branch(2, 4, v1)) ++ok; else ++wrong;
+ if (branch(3, 4, v1)) ++ok; else ++wrong;
+ if (branch(4, 4, v1)) ++wrong; else ++ok;
+ if (branch(5, 4, v1)) ++wrong; else ++ok;
+ if (branch(6, 4, v1)) ++ok; else ++wrong;
+ if (branch(7, 4, v1)) ++ok; else ++wrong;
+ if (branch(8, 4, v1)) ++wrong; else ++ok;
+ if (branch(9, 4, v1)) ++wrong; else ++ok;
+ if (branch(10, 4, v1)) ++ok; else ++wrong;
+ if (branch(11, 4, v1)) ++ok; else ++wrong;
+ if (branch(12, 4, v1)) ++wrong; else ++ok;
+ if (branch(13, 4, v1)) ++wrong; else ++ok;
+ if (branch(14, 4, v1)) ++ok; else ++wrong;
+ if (branch(15, 4, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 2, v1)) ++wrong; else ++ok;
+ if (branch(1, 2, v1)) ++wrong; else ++ok;
+ if (branch(2, 2, v1)) ++ok; else ++wrong;
+ if (branch(3, 2, v1)) ++ok; else ++wrong;
+ if (branch(4, 2, v1)) ++wrong; else ++ok;
+ if (branch(5, 2, v1)) ++wrong; else ++ok;
+ if (branch(6, 2, v1)) ++ok; else ++wrong;
+ if (branch(7, 2, v1)) ++ok; else ++wrong;
+ if (branch(8, 2, v1)) ++wrong; else ++ok;
+ if (branch(9, 2, v1)) ++wrong; else ++ok;
+ if (branch(10, 2, v1)) ++ok; else ++wrong;
+ if (branch(11, 2, v1)) ++ok; else ++wrong;
+ if (branch(12, 2, v1)) ++wrong; else ++ok;
+ if (branch(13, 2, v1)) ++wrong; else ++ok;
+ if (branch(14, 2, v1)) ++ok; else ++wrong;
+ if (branch(15, 2, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 1, v1)) ++wrong; else ++ok;
+ if (branch(1, 1, v1)) ++wrong; else ++ok;
+ if (branch(2, 1, v1)) ++ok; else ++wrong;
+ if (branch(3, 1, v1)) ++ok; else ++wrong;
+ if (branch(4, 1, v1)) ++wrong; else ++ok;
+ if (branch(5, 1, v1)) ++wrong; else ++ok;
+ if (branch(6, 1, v1)) ++ok; else ++wrong;
+ if (branch(7, 1, v1)) ++ok; else ++wrong;
+ if (branch(8, 1, v1)) ++wrong; else ++ok;
+ if (branch(9, 1, v1)) ++wrong; else ++ok;
+ if (branch(10, 1, v1)) ++ok; else ++wrong;
+ if (branch(11, 1, v1)) ++ok; else ++wrong;
+ if (branch(12, 1, v1)) ++wrong; else ++ok;
+ if (branch(13, 1, v1)) ++wrong; else ++ok;
+ if (branch(14, 1, v1)) ++ok; else ++wrong;
+ if (branch(15, 1, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 64)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+/* loads two bytes */
+void
+icm_two_bytes_msb_not_set(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #8 load two bytes, msb not set --> cc == 2\n");
+
+ v1 = 0x7FFFFFFF;
+ wrong = ok = 0;
+
+ if (branch(0, 12, v1)) ++wrong; else ++ok;
+ if (branch(1, 12, v1)) ++wrong; else ++ok;
+ if (branch(2, 12, v1)) ++ok; else ++wrong;
+ if (branch(3, 12, v1)) ++ok; else ++wrong;
+ if (branch(4, 12, v1)) ++wrong; else ++ok;
+ if (branch(5, 12, v1)) ++wrong; else ++ok;
+ if (branch(6, 12, v1)) ++ok; else ++wrong;
+ if (branch(7, 12, v1)) ++ok; else ++wrong;
+ if (branch(8, 12, v1)) ++wrong; else ++ok;
+ if (branch(9, 12, v1)) ++wrong; else ++ok;
+ if (branch(10, 12, v1)) ++ok; else ++wrong;
+ if (branch(11, 12, v1)) ++ok; else ++wrong;
+ if (branch(12, 12, v1)) ++wrong; else ++ok;
+ if (branch(13, 12, v1)) ++wrong; else ++ok;
+ if (branch(14, 12, v1)) ++ok; else ++wrong;
+ if (branch(15, 12, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 10, v1)) ++wrong; else ++ok;
+ if (branch(1, 10, v1)) ++wrong; else ++ok;
+ if (branch(2, 10, v1)) ++ok; else ++wrong;
+ if (branch(3, 10, v1)) ++ok; else ++wrong;
+ if (branch(4, 10, v1)) ++wrong; else ++ok;
+ if (branch(5, 10, v1)) ++wrong; else ++ok;
+ if (branch(6, 10, v1)) ++ok; else ++wrong;
+ if (branch(7, 10, v1)) ++ok; else ++wrong;
+ if (branch(8, 10, v1)) ++wrong; else ++ok;
+ if (branch(9, 10, v1)) ++wrong; else ++ok;
+ if (branch(10, 10, v1)) ++ok; else ++wrong;
+ if (branch(11, 10, v1)) ++ok; else ++wrong;
+ if (branch(12, 10, v1)) ++wrong; else ++ok;
+ if (branch(13, 10, v1)) ++wrong; else ++ok;
+ if (branch(14, 10, v1)) ++ok; else ++wrong;
+ if (branch(15, 10, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 9, v1)) ++wrong; else ++ok;
+ if (branch(1, 9, v1)) ++wrong; else ++ok;
+ if (branch(2, 9, v1)) ++ok; else ++wrong;
+ if (branch(3, 9, v1)) ++ok; else ++wrong;
+ if (branch(4, 9, v1)) ++wrong; else ++ok;
+ if (branch(5, 9, v1)) ++wrong; else ++ok;
+ if (branch(6, 9, v1)) ++ok; else ++wrong;
+ if (branch(7, 9, v1)) ++ok; else ++wrong;
+ if (branch(8, 9, v1)) ++wrong; else ++ok;
+ if (branch(9, 9, v1)) ++wrong; else ++ok;
+ if (branch(10, 9, v1)) ++ok; else ++wrong;
+ if (branch(11, 9, v1)) ++ok; else ++wrong;
+ if (branch(12, 9, v1)) ++wrong; else ++ok;
+ if (branch(13, 9, v1)) ++wrong; else ++ok;
+ if (branch(14, 9, v1)) ++ok; else ++wrong;
+ if (branch(15, 9, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 6, v1)) ++wrong; else ++ok;
+ if (branch(1, 6, v1)) ++wrong; else ++ok;
+ if (branch(2, 6, v1)) ++ok; else ++wrong;
+ if (branch(3, 6, v1)) ++ok; else ++wrong;
+ if (branch(4, 6, v1)) ++wrong; else ++ok;
+ if (branch(5, 6, v1)) ++wrong; else ++ok;
+ if (branch(6, 6, v1)) ++ok; else ++wrong;
+ if (branch(7, 6, v1)) ++ok; else ++wrong;
+ if (branch(8, 6, v1)) ++wrong; else ++ok;
+ if (branch(9, 6, v1)) ++wrong; else ++ok;
+ if (branch(10, 6, v1)) ++ok; else ++wrong;
+ if (branch(11, 6, v1)) ++ok; else ++wrong;
+ if (branch(12, 6, v1)) ++wrong; else ++ok;
+ if (branch(13, 6, v1)) ++wrong; else ++ok;
+ if (branch(14, 6, v1)) ++ok; else ++wrong;
+ if (branch(15, 6, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 5, v1)) ++wrong; else ++ok;
+ if (branch(1, 5, v1)) ++wrong; else ++ok;
+ if (branch(2, 5, v1)) ++ok; else ++wrong;
+ if (branch(3, 5, v1)) ++ok; else ++wrong;
+ if (branch(4, 5, v1)) ++wrong; else ++ok;
+ if (branch(5, 5, v1)) ++wrong; else ++ok;
+ if (branch(6, 5, v1)) ++ok; else ++wrong;
+ if (branch(7, 5, v1)) ++ok; else ++wrong;
+ if (branch(8, 5, v1)) ++wrong; else ++ok;
+ if (branch(9, 5, v1)) ++wrong; else ++ok;
+ if (branch(10, 5, v1)) ++ok; else ++wrong;
+ if (branch(11, 5, v1)) ++ok; else ++wrong;
+ if (branch(12, 5, v1)) ++wrong; else ++ok;
+ if (branch(13, 5, v1)) ++wrong; else ++ok;
+ if (branch(14, 5, v1)) ++ok; else ++wrong;
+ if (branch(15, 5, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 3, v1)) ++wrong; else ++ok;
+ if (branch(1, 3, v1)) ++wrong; else ++ok;
+ if (branch(2, 3, v1)) ++ok; else ++wrong;
+ if (branch(3, 3, v1)) ++ok; else ++wrong;
+ if (branch(4, 3, v1)) ++wrong; else ++ok;
+ if (branch(5, 3, v1)) ++wrong; else ++ok;
+ if (branch(6, 3, v1)) ++ok; else ++wrong;
+ if (branch(7, 3, v1)) ++ok; else ++wrong;
+ if (branch(8, 3, v1)) ++wrong; else ++ok;
+ if (branch(9, 3, v1)) ++wrong; else ++ok;
+ if (branch(10, 3, v1)) ++ok; else ++wrong;
+ if (branch(11, 3, v1)) ++ok; else ++wrong;
+ if (branch(12, 3, v1)) ++wrong; else ++ok;
+ if (branch(13, 3, v1)) ++wrong; else ++ok;
+ if (branch(14, 3, v1)) ++ok; else ++wrong;
+ if (branch(15, 3, v1)) ++ok; else ++wrong;
+
+ if (wrong != 0 || ok != 96)
+ printf("FAILED\n");
+ else
+ printf("OK\n");
+}
+
+
+/* loads three bytes */
+void
+icm_three_bytes_msb_not_set(void)
+{
+ int wrong, ok;
+ unsigned v1;
+
+ printf("Test #9 load three bytes, msb not set --> cc == 2\n");
+
+ v1 = 0x7FFFFFFF;
+ wrong = ok = 0;
+
+ if (branch(0, 14, v1)) ++wrong; else ++ok;
+ if (branch(1, 14, v1)) ++wrong; else ++ok;
+ if (branch(2, 14, v1)) ++ok; else ++wrong;
+ if (branch(3, 14, v1)) ++ok; else ++wrong;
+ if (branch(4, 14, v1)) ++wrong; else ++ok;
+ if (branch(5, 14, v1)) ++wrong; else ++ok;
+ if (branch(6, 14, v1)) ++ok; else ++wrong;
+ if (branch(7, 14, v1)) ++ok; else ++wrong;
+ if (branch(8, 14, v1)) ++wrong; else ++ok;
+ if (branch(9, 14, v1)) ++wrong; else ++ok;
+ if (branch(10, 14, v1)) ++ok; else ++wrong;
+ if (branch(11, 14, v1)) ++ok; else ++wrong;
+ if (branch(12, 14, v1)) ++wrong; else ++ok;
+ if (branch(13, 14, v1)) ++wrong; else ++ok;
+ if (branch(14, 14, v1)) ++ok; else ++wrong;
+ if (branch(15, 14, v1)) ++ok; else ++wrong;
+
+ if (branch(0, 13, v1)) ++wrong; else ++ok;
+ if (branch(1, 13, v1)) ++wrong; else ++ok;
+ if (branch(2, 13, v1)) ++ok; else ++wrong;
+ if (branch(3, 13, v1)) ++ok; else ++wrong;
+ if (branch(4, 13, v1)) ++wrong; else ++ok;
+ if (branch(5, 13, v1)) ++wrong; else ++ok;
+ if (branch(6, 13, v1)) ++ok; else ++wrong;
+ if (branch(7, 13, v1)) ++ok; else ++wrong;
+ if (branch(8, 13, v1)) ++wrong; else ++ok;
+ if (branch(9, 13, v1)) ++wrong; else ++ok;
+ if (branch(10, 13, v1)) ++ok; else ++wro...
[truncated message content] |
|
From: Philippe W. <phi...@sk...> - 2012-10-07 04:02:39
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.3.1-3.fc16.ppc64 ppc64 Vendor version: Fedora release 16 (Verne) Nightly build on gcc110 ( Fedora release 16 (Verne), ppc64 ) Started at 2012-10-06 20:00:14 PDT Ended at 2012-10-06 21:01:10 PDT 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 == 533 tests, 7 stderr failures, 2 stdout failures, 1 stderrB failure, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/supp_unknown (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <to...@co...> - 2012-10-07 03:18:09
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2012-10-07 03:41:54 BST Ended at 2012-10-07 04:17:51 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 == 608 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: <br...@ac...> - 2012-10-07 03:09:01
|
valgrind revision: 13026
VEX revision: 2546
C compiler: gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)
Assembler: GNU assembler 2.15.92.0.2 20040927
C library: GNU C Library stable release version 2.3.4
uname -mrs: Linux 2.6.9-42.EL s390x
Vendor version: Red Hat Enterprise Linux AS release 4 (Nahant Update 4)
Nightly build on z10-ec ( s390x build on z10-EC )
Started at 2012-10-06 22:20:22 EDT
Ended at 2012-10-06 23:08:48 EDT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 549 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/manuel3 (stderr)
memcheck/tests/partial_load_ok (stderr)
memcheck/tests/varinfo6 (stderr)
none/tests/s390x/fpconv (stdout)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc20_verifywrap (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 544 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/manuel3 (stderr)
memcheck/tests/partial_load_ok (stderr)
memcheck/tests/varinfo6 (stderr)
none/tests/s390x/fpconv (stdout)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc20_verifywrap (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Sat Oct 6 22:44:32 2012
--- new.short Sat Oct 6 23:08:48 2012
***************
*** 8,10 ****
! == 544 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/manuel3 (stderr)
--- 8,10 ----
! == 549 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/manuel3 (stderr)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff
=================================================
--- tc09_bad_unlock.stderr.exp 2012-10-06 22:45:14.000000000 -0400
+++ tc09_bad_unlock.stderr.out 2012-10-06 23:04:11.000000000 -0400
@@ -42,14 +42,6 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
---------------------
----------------------------------------------------------------
@@ -110,16 +102,8 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-----------------------------------------------------------------
-
Thread #x: Exiting thread still holds 1 lock
...
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc20_verifywrap.stderr.diff
=================================================
--- tc20_verifywrap.stderr.exp 2012-10-06 22:45:14.000000000 -0400
+++ tc20_verifywrap.stderr.out 2012-10-06 23:04:29.000000000 -0400
@@ -1,7 +1,7 @@
------- This is output for >= glibc 2.4 ------
+------ This is output for < glibc 2.4 ------
---------------- pthread_create/join ----------------
@@ -45,13 +45,6 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_init failed
- with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-----------------------------------------------------------------
-
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
@@ -63,26 +56,8 @@
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-
-----------------------------------------------------------------
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
+make pthread_mutex_lock fail: skipped on glibc < 2.4
----------------------------------------------------------------
@@ -90,13 +65,6 @@
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
@@ -215,14 +183,6 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
-----------------------------------------------------------------
-
-Thread #x's call to sem_post failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_post_WRK (hg_intercepts.c:...)
- by 0x........: sem_post (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:245)
-
FIXME: can't figure out how to verify wrap of sem_post
@@ -235,4 +195,4 @@
...
-ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc20_verifywrap.stderr.diff-mips32
=================================================
--- tc20_verifywrap.stderr.exp-mips32 2012-10-06 22:45:14.000000000 -0400
+++ tc20_verifywrap.stderr.out 2012-10-06 23:04:29.000000000 -0400
@@ -1,7 +1,7 @@
------- This is output for >= glibc 2.4 ------
+------ This is output for < glibc 2.4 ------
---------------- pthread_create/join ----------------
@@ -35,7 +35,7 @@
----------------------------------------------------------------
Thread #x's call to pthread_join failed
- with error code 45 (EDEADLK: Resource deadlock would occur)
+ with error code 35 (EDEADLK: Resource deadlock would occur)
at 0x........: pthread_join_WRK (hg_intercepts.c:...)
by 0x........: pthread_join (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:83)
@@ -45,13 +45,6 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_init failed
- with error code 122 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-----------------------------------------------------------------
-
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
@@ -63,26 +56,8 @@
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
+make pthread_mutex_lock fail: skipped on glibc < 2.4
----------------------------------------------------------------
@@ -90,13 +65,6 @@
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
@@ -227,4 +195,4 @@
...
-ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/manuel3.stderr.diff
=================================================
--- manuel3.stderr.exp 2012-10-06 22:49:25.000000000 -0400
+++ manuel3.stderr.out 2012-10-06 22:58:40.000000000 -0400
@@ -1,4 +1,3 @@
Conditional jump or move depends on uninitialised value(s)
- at 0x........: gcc_cant_inline_me (manuel3.c:22)
- by 0x........: main (manuel3.c:14)
+ at 0x........: main (manuel3.c:12)
=================================================
./valgrind-new/memcheck/tests/partial_load_ok.stderr.diff
=================================================
--- partial_load_ok.stderr.exp 2012-10-06 22:49:25.000000000 -0400
+++ partial_load_ok.stderr.out 2012-10-06 22:59:13.000000000 -0400
@@ -1,7 +1,13 @@
-Invalid read of size 4
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
+Invalid read of size 8
at 0x........: main (partial_load.c:23)
- Address 0x........ is 1 bytes inside a block of size 4 alloc'd
+ Address 0x........ is 1 bytes inside a block of size 8 alloc'd
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:20)
@@ -11,9 +17,9 @@
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:28)
-Invalid read of size 4
+Invalid read of size 8
at 0x........: main (partial_load.c:37)
- Address 0x........ is 0 bytes inside a block of size 4 free'd
+ Address 0x........ is 0 bytes inside a block of size 8 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:36)
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/partial_load_ok.stderr.diff64
=================================================
--- partial_load_ok.stderr.exp64 2012-10-06 22:49:25.000000000 -0400
+++ partial_load_ok.stderr.out 2012-10-06 22:59:13.000000000 -0400
@@ -1,4 +1,10 @@
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
Invalid read of size 8
at 0x........: main (partial_load.c:23)
Address 0x........ is 1 bytes inside a block of size 8 alloc'd
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff
=================================================
--- varinfo6.stderr.exp 2012-10-06 22:49:25.000000000 -0400
+++ varinfo6.stderr.out 2012-10-06 23:00:14.000000000 -0400
@@ -7,8 +7,7 @@
by 0x........: BZ2_bzCompress (varinfo6.c:4860)
by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
by 0x........: main (varinfo6.c:6517)
- Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3115, in frame #2 of thread 1
+ Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo6.c:34)
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff-ppc64
=================================================
--- varinfo6.stderr.exp-ppc64 2012-10-06 22:49:25.000000000 -0400
+++ varinfo6.stderr.out 2012-10-06 23:00:14.000000000 -0400
@@ -1,5 +1,5 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: mainSort (varinfo6.c:2999)
by 0x........: BZ2_blockSort (varinfo6.c:3143)
by 0x........: BZ2_compressBlock (varinfo6.c:4072)
@@ -10,7 +10,7 @@
Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: BZ2_decompress (varinfo6.c:1699)
by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
=================================================
./valgrind-new/none/tests/s390x/fpconv.stdout.diff
=================================================
--- fpconv.stdout.exp 2012-10-06 22:50:38.000000000 -0400
+++ fpconv.stdout.out 2012-10-06 23:02:24.000000000 -0400
@@ -35,137 +35,137 @@
"cdgbr" -9223372036854775808.000000
"cdgbr" 9223372036854775808.000000
"cxfbr" 0.000000
-"cxfbr" 1.000000
-"cxfbr" -1.000000
-"cxfbr" -2147483648.000000
-"cxfbr" 2147483647.000000
+"cxfbr" 1.937500
+"cxfbr" -1.937500
+"cxfbr" -7.500000
+"cxfbr" 7.500000
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxgbr" 0.000000
-"cxgbr" 1.000000
-"cxgbr" 4294967295.000000
-"cxgbr" 2147483648.000000
-"cxgbr" 2147483647.000000
-"cxgbr" 4294967296.000000
-"cxgbr" -1.000000
-"cxgbr" -9223372036854775808.000000
-"cxgbr" 9223372036854775807.000000
-"cfebr" 4294967295 cc=1
-"cfebr" 0 cc=0
-"cfebr" 1 cc=2
-"cfebr" 1 cc=2
-"cfebr" 2 cc=2
-"cfebr" 2 cc=2
-"cfebr" 16000 cc=2
-"cfebr" 160000000 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=2
-"cfebr" 0 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cgebr" -1 cc=1
-"cgebr" 0 cc=0
-"cgebr" 1 cc=2
-"cgebr" 1 cc=2
-"cgebr" 2 cc=2
-"cgebr" 2 cc=2
-"cgebr" 16000 cc=2
-"cgebr" 160000000 cc=2
-"cgebr" 1599999967232 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=2
-"cgebr" 0 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cfdbr" 4294967295 cc=1
-"cfdbr" 0 cc=0
-"cfdbr" 1 cc=2
-"cfdbr" 1 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 16000 cc=2
-"cfdbr" 160000000 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=0
-"cfdbr" 2147483647 cc=3
-"cgdbr" -1 cc=1
-"cgdbr" 0 cc=0
-"cgdbr" 1 cc=2
-"cgdbr" 1 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 16000 cc=2
-"cgdbr" 160000000 cc=2
-"cgdbr" 1600000000000 cc=2
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 0 cc=2
-"cgdbr" 0 cc=2
<truncated beyond 100 lines>
=================================================
./valgrind-old/helgrind/tests/tc09_bad_unlock.stderr.diff
=================================================
--- tc09_bad_unlock.stderr.exp 2012-10-06 22:22:39.000000000 -0400
+++ tc09_bad_unlock.stderr.out 2012-10-06 22:39:55.000000000 -0400
@@ -42,14 +42,6 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
---------------------
----------------------------------------------------------------
@@ -110,16 +102,8 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-----------------------------------------------------------------
-
Thread #x: Exiting thread still holds 1 lock
...
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc20_verifywrap.stderr.diff
=================================================
--- tc20_verifywrap.stderr.exp 2012-10-06 22:22:39.000000000 -0400
+++ tc20_verifywrap.stderr.out 2012-10-06 22:40:13.000000000 -0400
@@ -1,7 +1,7 @@
------- This is output for >= glibc 2.4 ------
+------ This is output for < glibc 2.4 ------
---------------- pthread_create/join ----------------
@@ -45,13 +45,6 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_init failed
- with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-----------------------------------------------------------------
-
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
@@ -63,26 +56,8 @@
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-
-----------------------------------------------------------------
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
+make pthread_mutex_lock fail: skipped on glibc < 2.4
----------------------------------------------------------------
@@ -90,13 +65,6 @@
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
@@ -215,14 +183,6 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
-----------------------------------------------------------------
-
-Thread #x's call to sem_post failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_post_WRK (hg_intercepts.c:...)
- by 0x........: sem_post (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:245)
-
FIXME: can't figure out how to verify wrap of sem_post
@@ -235,4 +195,4 @@
...
-ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc20_verifywrap.stderr.diff-mips32
=================================================
--- tc20_verifywrap.stderr.exp-mips32 2012-10-06 22:22:39.000000000 -0400
+++ tc20_verifywrap.stderr.out 2012-10-06 22:40:13.000000000 -0400
@@ -1,7 +1,7 @@
------- This is output for >= glibc 2.4 ------
+------ This is output for < glibc 2.4 ------
---------------- pthread_create/join ----------------
@@ -35,7 +35,7 @@
----------------------------------------------------------------
Thread #x's call to pthread_join failed
- with error code 45 (EDEADLK: Resource deadlock would occur)
+ with error code 35 (EDEADLK: Resource deadlock would occur)
at 0x........: pthread_join_WRK (hg_intercepts.c:...)
by 0x........: pthread_join (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:83)
@@ -45,13 +45,6 @@
----------------------------------------------------------------
-Thread #x's call to pthread_mutex_init failed
- with error code 122 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-----------------------------------------------------------------
-
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
@@ -63,26 +56,8 @@
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
+make pthread_mutex_lock fail: skipped on glibc < 2.4
----------------------------------------------------------------
@@ -90,13 +65,6 @@
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
@@ -227,4 +195,4 @@
...
-ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/memcheck/tests/manuel3.stderr.diff
=================================================
--- manuel3.stderr.exp 2012-10-06 22:25:08.000000000 -0400
+++ manuel3.stderr.out 2012-10-06 22:34:28.000000000 -0400
@@ -1,4 +1,3 @@
Conditional jump or move depends on uninitialised value(s)
- at 0x........: gcc_cant_inline_me (manuel3.c:22)
- by 0x........: main (manuel3.c:14)
+ at 0x........: main (manuel3.c:12)
=================================================
./valgrind-old/memcheck/tests/partial_load_ok.stderr.diff
=================================================
--- partial_load_ok.stderr.exp 2012-10-06 22:25:08.000000000 -0400
+++ partial_load_ok.stderr.out 2012-10-06 22:35:00.000000000 -0400
@@ -1,7 +1,13 @@
-Invalid read of size 4
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
+Invalid read of size 8
at 0x........: main (partial_load.c:23)
- Address 0x........ is 1 bytes inside a block of size 4 alloc'd
+ Address 0x........ is 1 bytes inside a block of size 8 alloc'd
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:20)
@@ -11,9 +17,9 @@
at 0x........: calloc (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:28)
-Invalid read of size 4
+Invalid read of size 8
at 0x........: main (partial_load.c:37)
- Address 0x........ is 0 bytes inside a block of size 4 free'd
+ Address 0x........ is 0 bytes inside a block of size 8 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (partial_load.c:36)
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/memcheck/tests/partial_load_ok.stderr.diff64
=================================================
--- partial_load_ok.stderr.exp64 2012-10-06 22:25:08.000000000 -0400
+++ partial_load_ok.stderr.out 2012-10-06 22:35:00.000000000 -0400
@@ -1,4 +1,10 @@
+Invalid read of size 1
+ at 0x........: main (partial_load.c:16)
+ Address 0x........ is 0 bytes after a block of size 7 alloc'd
+ at 0x........: calloc (vg_replace_malloc.c:...)
+ by 0x........: main (partial_load.c:14)
+
Invalid read of size 8
at 0x........: main (partial_load.c:23)
Address 0x........ is 1 bytes inside a block of size 8 alloc'd
@@ -25,4 +31,4 @@
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/memcheck/tests/varinfo6.stderr.diff
=================================================
--- varinfo6.stderr.exp 2012-10-06 22:25:08.000000000 -0400
+++ varinfo6.stderr.out 2012-10-06 22:36:00.000000000 -0400
@@ -7,8 +7,7 @@
by 0x........: BZ2_bzCompress (varinfo6.c:4860)
by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
by 0x........: main (varinfo6.c:6517)
- Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3115, in frame #2 of thread 1
+ Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo6.c:34)
=================================================
./valgrind-old/memcheck/tests/varinfo6.stderr.diff-ppc64
=================================================
--- varinfo6.stderr.exp-ppc64 2012-10-06 22:25:08.000000000 -0400
+++ varinfo6.stderr.out 2012-10-06 22:36:00.000000000 -0400
@@ -1,5 +1,5 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: mainSort (varinfo6.c:2999)
by 0x........: BZ2_blockSort (varinfo6.c:3143)
by 0x........: BZ2_compressBlock (varinfo6.c:4072)
@@ -10,7 +10,7 @@
Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: BZ2_decompress (varinfo6.c:1699)
by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
=================================================
./valgrind-old/none/tests/s390x/fpconv.stdout.diff
=================================================
--- fpconv.stdout.exp 2012-10-06 22:25:34.000000000 -0400
+++ fpconv.stdout.out 2012-10-06 22:38:10.000000000 -0400
@@ -35,137 +35,137 @@
"cdgbr" -9223372036854775808.000000
"cdgbr" 9223372036854775808.000000
"cxfbr" 0.000000
-"cxfbr" 1.000000
-"cxfbr" -1.000000
-"cxfbr" -2147483648.000000
-"cxfbr" 2147483647.000000
+"cxfbr" 1.937500
+"cxfbr" -1.937500
+"cxfbr" -7.500000
+"cxfbr" 7.500000
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxfbr" 0.000000
-"cxfbr" -1.000000
+"cxfbr" -1.937500
"cxgbr" 0.000000
-"cxgbr" 1.000000
-"cxgbr" 4294967295.000000
-"cxgbr" 2147483648.000000
-"cxgbr" 2147483647.000000
-"cxgbr" 4294967296.000000
-"cxgbr" -1.000000
-"cxgbr" -9223372036854775808.000000
-"cxgbr" 9223372036854775807.000000
-"cfebr" 4294967295 cc=1
-"cfebr" 0 cc=0
-"cfebr" 1 cc=2
-"cfebr" 1 cc=2
-"cfebr" 2 cc=2
-"cfebr" 2 cc=2
-"cfebr" 16000 cc=2
-"cfebr" 160000000 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=2
-"cfebr" 0 cc=2
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cfebr" 0 cc=0
-"cfebr" 2147483647 cc=3
-"cgebr" -1 cc=1
-"cgebr" 0 cc=0
-"cgebr" 1 cc=2
-"cgebr" 1 cc=2
-"cgebr" 2 cc=2
-"cgebr" 2 cc=2
-"cgebr" 16000 cc=2
-"cgebr" 160000000 cc=2
-"cgebr" 1599999967232 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=2
-"cgebr" 0 cc=2
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cgebr" 0 cc=0
-"cgebr" 9223372036854775807 cc=3
-"cfdbr" 4294967295 cc=1
-"cfdbr" 0 cc=0
-"cfdbr" 1 cc=2
-"cfdbr" 1 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 2 cc=2
-"cfdbr" 16000 cc=2
-"cfdbr" 160000000 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=2
-"cfdbr" 2147483647 cc=3
-"cfdbr" 0 cc=0
-"cfdbr" 2147483647 cc=3
-"cgdbr" -1 cc=1
-"cgdbr" 0 cc=0
-"cgdbr" 1 cc=2
-"cgdbr" 1 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 2 cc=2
-"cgdbr" 16000 cc=2
-"cgdbr" 160000000 cc=2
-"cgdbr" 1600000000000 cc=2
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 9223372036854775807 cc=3
-"cgdbr" 0 cc=2
-"cgdbr" 0 cc=2
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2012-10-07 03:06:28
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) Assembler: GNU assembler version 2.19.51.0.14-3.fc11 20090722 C library: GNU C Library stable release version 2.10.2 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2012-10-07 03:31:42 BST Ended at 2012-10-07 04:06:07 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 == 612 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2012-10-07 03:06:08
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) Assembler: GNU assembler version 2.20.51.0.7-8.fc14 20100318 C library: GNU C Library stable release version 2.13 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 14 (Laughlin) Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2012-10-07 03:12:04 BST Ended at 2012-10-07 04:05:50 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 == 627 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2012-10-07 03:05:36
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2) Assembler: GNU assembler version 2.20.51.0.2-20.fc13 20091009 C library: GNU C Library stable release version 2.12.2 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 13 (Goddard) Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2012-10-07 03:22:33 BST Ended at 2012-10-07 04:05:12 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 == 612 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) helgrind/tests/pth_barrier3 (stderr) |
|
From: Rich C. <rc...@wi...> - 2012-10-07 03:03:44
|
valgrind revision: 13026
VEX revision: 2546
C compiler: gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]
Assembler: GNU assembler (GNU Binutils; openSUSE 11.4) 2.21
C library: GNU C Library stable release version 2.11.3 (20110203)
uname -mrs: Linux 2.6.37.6-0.7-desktop x86_64
Vendor version: Welcome to openSUSE 11.4 "Celadon" - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.6-0.7-desktop x86_64 )
Started at 2012-10-06 21:30:01 CDT
Ended at 2012-10-06 22:03:34 CDT
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
== 620 tests, 2 stderr failures, 0 stdout failures, 6 stderrB failures, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mcbreak (stderrB)
gdbserver_tests/mcclean_after_fork (stderrB)
gdbserver_tests/mcleak (stderrB)
gdbserver_tests/mcmain_pic (stderrB)
gdbserver_tests/mcvabits (stderrB)
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/linux/timerfd-syscall (stderr)
memcheck/tests/origin5-bz2 (stderr)
=================================================
./valgrind-new/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2012-10-06 21:46:34.267953338 -0500
+++ mcbreak.stderrB.out 2012-10-06 21:54:32.468344220 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
vgdb-error value changed from 999999 to 0
n_errs_found 1 n_errs_shown 1 (vgdb-error 0)
vgdb-error value changed from 0 to 0
=================================================
./valgrind-new/gdbserver_tests/mcclean_after_fork.stderrB.diff
=================================================
--- mcclean_after_fork.stderrB.exp 2012-10-06 21:46:34.266953223 -0500
+++ mcclean_after_fork.stderrB.out 2012-10-06 21:54:34.170542459 -0500
@@ -1,4 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
monitor command request to kill this process
Remote connection closed
=================================================
./valgrind-new/gdbserver_tests/mcleak.stderrB.diff
=================================================
--- mcleak.stderrB.exp 2012-10-06 21:46:34.262952759 -0500
+++ mcleak.stderrB.out 2012-10-06 21:54:53.688815546 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: f (leak-delta.c:14)
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2012-10-06 21:46:34.270953685 -0500
+++ mcmain_pic.stderrB.out 2012-10-06 21:54:55.295002599 -0500
@@ -1,3 +1,5 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Remote connection closed
=================================================
./valgrind-new/gdbserver_tests/mcvabits.stderrB.diff
=================================================
--- mcvabits.stderrB.exp 2012-10-06 21:46:34.271953801 -0500
+++ mcvabits.stderrB.out 2012-10-06 21:55:00.263581230 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
Address 0x........ len 10 defined
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-10-06 21:46:34.270953685 -0500
+++ mssnapshot.stderrB.out 2012-10-06 21:55:03.341939727 -0500
@@ -1,5 +1,9 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=92ec8fe859846a62345f74696ab349721415587a"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/linux/timerfd-syscall.stderr.diff
=================================================
--- timerfd-syscall.stderr.exp 2012-10-06 21:47:55.445349016 -0500
+++ timerfd-syscall.stderr.out 2012-10-06 21:56:09.445637744 -0500
@@ -33,7 +33,7 @@
got timer ticks (1) after 0.5 s
absolute timer test (at 500 ms) ...
waiting timer ...
-got timer ticks (1) after 0.5 s
+got timer ticks (1) after 0.0 s
sequential timer test (100 ms clock) ...
sleeping one second ...
timerfd_gettime returned:
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-10-06 21:49:25.296748688 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:56:24.793424981 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-10-06 21:49:25.279746721 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:56:24.793424981 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-10-06 21:49:25.223740238 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:56:24.793424981 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-10-06 21:49:25.253743711 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:56:24.793424981 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-10-06 21:49:25.266745215 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:56:24.793424981 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2012-10-06 21:32:10.450975376 -0500
+++ mcbreak.stderrB.out 2012-10-06 21:37:22.772122811 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
vgdb-error value changed from 999999 to 0
n_errs_found 1 n_errs_shown 1 (vgdb-error 0)
vgdb-error value changed from 0 to 0
=================================================
./valgrind-old/gdbserver_tests/mcclean_after_fork.stderrB.diff
=================================================
--- mcclean_after_fork.stderrB.exp 2012-10-06 21:32:10.450975376 -0500
+++ mcclean_after_fork.stderrB.out 2012-10-06 21:37:24.482320747 -0500
@@ -1,4 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
monitor command request to kill this process
Remote connection closed
=================================================
./valgrind-old/gdbserver_tests/mcleak.stderrB.diff
=================================================
--- mcleak.stderrB.exp 2012-10-06 21:32:10.446974914 -0500
+++ mcleak.stderrB.out 2012-10-06 21:37:43.125478491 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: f (leak-delta.c:14)
=================================================
./valgrind-old/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2012-10-06 21:32:10.453975724 -0500
+++ mcmain_pic.stderrB.out 2012-10-06 21:37:44.734664736 -0500
@@ -1,3 +1,5 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Remote connection closed
=================================================
./valgrind-old/gdbserver_tests/mcvabits.stderrB.diff
=================================================
--- mcvabits.stderrB.exp 2012-10-06 21:32:10.455975955 -0500
+++ mcvabits.stderrB.out 2012-10-06 21:37:49.809252066 -0500
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
Address 0x........ len 10 defined
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-10-06 21:32:10.454975840 -0500
+++ mssnapshot.stderrB.out 2012-10-06 21:37:52.982619348 -0500
@@ -1,5 +1,9 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=92ec8fe859846a62345f74696ab349721415587a"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/linux/timerfd-syscall.stderr.diff
=================================================
--- timerfd-syscall.stderr.exp 2012-10-06 21:32:15.167521255 -0500
+++ timerfd-syscall.stderr.out 2012-10-06 21:38:58.495201738 -0500
@@ -33,7 +33,7 @@
got timer ticks (1) after 0.5 s
absolute timer test (at 500 ms) ...
waiting timer ...
-got timer ticks (1) after 0.5 s
+got timer ticks (1) after 0.0 s
sequential timer test (100 ms clock) ...
sleeping one second ...
timerfd_gettime returned:
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-10-06 21:32:25.489715914 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:39:13.653956208 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-10-06 21:32:25.472713947 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:39:13.653956208 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-10-06 21:32:25.415707350 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:39:13.653956208 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-10-06 21:32:25.445710823 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:39:13.653956208 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-10-06 21:32:25.458712327 -0500
+++ origin5-bz2.stderr.out 2012-10-06 21:39:13.653956208 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2012-10-07 02:48:10
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2012-10-07 02:52:42 BST Ended at 2012-10-07 03:47:55 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 == 629 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2012-10-07 02:47:29
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2012-10-07 03:03:45 BST Ended at 2012-10-07 03:47:13 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 == 629 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2012-10-07 02:17:04
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2012-10-07 02:41:10 BST Ended at 2012-10-07 03:16: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 == 629 tests, 6 stderr failures, 1 stdout failure, 0 stderrB failures, 1 stdoutB failure, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/nlcontrolc (stdoutB) memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Christian B. <bor...@de...> - 2012-10-07 02:13:34
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.21.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.38-0.5-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP2 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2012-10-07 03:45:01 CEST Ended at 2012-10-07 04:13:23 CEST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 585 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 580 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Oct 7 03:59:13 2012 --- new.short Sun Oct 7 04:13:23 2012 *************** *** 8,10 **** ! == 580 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) --- 8,10 ---- ! == 585 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <to...@co...> - 2012-10-07 02:08:57
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) Assembler: GNU assembler version 2.23.51.0.1-3.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2012-10-07 02:31:44 BST Ended at 2012-10-07 03:08:40 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 == 629 tests, 3 stderr failures, 1 stdout failure, 0 stderrB failures, 1 stdoutB failure, 0 post failures == gdbserver_tests/nlcontrolc (stdoutB) memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Christian B. <bor...@de...> - 2012-10-07 02:04:46
|
valgrind revision: 13026 VEX revision: 2546 C compiler: gcc (GCC) 4.5.3 20110121 (Red Hat 4.5.3-5) Assembler: GNU assembler version 2.20.51.0.7-4bb6.fc13 20100318 C library: GNU C Library stable release version 2.12.1 uname -mrs: Linux 3.3.4-53.x.20120504-s390xperformance s390x Vendor version: unknown Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2012-10-07 03:45:01 CEST Ended at 2012-10-07 04:04:53 CEST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 584 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/tc21_pthonce (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 579 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/tc21_pthonce (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Oct 7 03:54:58 2012 --- new.short Sun Oct 7 04:04:53 2012 *************** *** 8,10 **** ! == 579 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) --- 8,10 ---- ! == 584 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc20_verifywrap (stderr) |