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
(11) |
|
2
|
3
|
4
|
5
(4) |
6
(21) |
7
(14) |
8
(14) |
|
9
(16) |
10
(19) |
11
(18) |
12
(17) |
13
(14) |
14
(21) |
15
(15) |
|
16
(10) |
17
(7) |
18
(15) |
19
(20) |
20
(20) |
21
(14) |
22
(7) |
|
23
(2) |
24
(8) |
25
(15) |
26
(11) |
27
(6) |
28
(10) |
|
|
From: <sv...@va...> - 2014-02-27 14:17:35
|
Author: dejanj
Date: Thu Feb 27 14:17:19 2014
New Revision: 2827
Log:
mips32: Fpu guest registers are ULong and the initial values need to be
extended.
Because we are supporting both big and little endian mips32 we need to
make sure that the initial values for the fpu registers are the same for both
endian.
Modified:
trunk/priv/guest_mips_helpers.c
Modified: trunk/priv/guest_mips_helpers.c
==============================================================================
--- trunk/priv/guest_mips_helpers.c (original)
+++ trunk/priv/guest_mips_helpers.c Thu Feb 27 14:17:19 2014
@@ -105,38 +105,38 @@
vex_state->guest_LO = 0; /* Multiply and divide register lower result */
/* FPU Registers */
- vex_state->guest_f0 = 0x7ff80000; /* Floting point general purpose registers */
- vex_state->guest_f1 = 0x7ff80000;
- vex_state->guest_f2 = 0x7ff80000;
- vex_state->guest_f3 = 0x7ff80000;
- vex_state->guest_f4 = 0x7ff80000;
- vex_state->guest_f5 = 0x7ff80000;
- vex_state->guest_f6 = 0x7ff80000;
- vex_state->guest_f7 = 0x7ff80000;
- vex_state->guest_f8 = 0x7ff80000;
- vex_state->guest_f9 = 0x7ff80000;
- vex_state->guest_f10 = 0x7ff80000;
- vex_state->guest_f11 = 0x7ff80000;
- vex_state->guest_f12 = 0x7ff80000;
- vex_state->guest_f13 = 0x7ff80000;
- vex_state->guest_f14 = 0x7ff80000;
- vex_state->guest_f15 = 0x7ff80000;
- vex_state->guest_f16 = 0x7ff80000;
- vex_state->guest_f17 = 0x7ff80000;
- vex_state->guest_f18 = 0x7ff80000;
- vex_state->guest_f19 = 0x7ff80000;
- vex_state->guest_f20 = 0x7ff80000;
- vex_state->guest_f21 = 0x7ff80000;
- vex_state->guest_f22 = 0x7ff80000;
- vex_state->guest_f23 = 0x7ff80000;
- vex_state->guest_f24 = 0x7ff80000;
- vex_state->guest_f25 = 0x7ff80000;
- vex_state->guest_f26 = 0x7ff80000;
- vex_state->guest_f27 = 0x7ff80000;
- vex_state->guest_f28 = 0x7ff80000;
- vex_state->guest_f29 = 0x7ff80000;
- vex_state->guest_f30 = 0x7ff80000;
- vex_state->guest_f31 = 0x7ff80000;
+ vex_state->guest_f0 = 0x7ff800007ff80000; /* Floting point GP registers */
+ vex_state->guest_f1 = 0x7ff800007ff80000;
+ vex_state->guest_f2 = 0x7ff800007ff80000;
+ vex_state->guest_f3 = 0x7ff800007ff80000;
+ vex_state->guest_f4 = 0x7ff800007ff80000;
+ vex_state->guest_f5 = 0x7ff800007ff80000;
+ vex_state->guest_f6 = 0x7ff800007ff80000;
+ vex_state->guest_f7 = 0x7ff800007ff80000;
+ vex_state->guest_f8 = 0x7ff800007ff80000;
+ vex_state->guest_f9 = 0x7ff800007ff80000;
+ vex_state->guest_f10 = 0x7ff800007ff80000;
+ vex_state->guest_f11 = 0x7ff800007ff80000;
+ vex_state->guest_f12 = 0x7ff800007ff80000;
+ vex_state->guest_f13 = 0x7ff800007ff80000;
+ vex_state->guest_f14 = 0x7ff800007ff80000;
+ vex_state->guest_f15 = 0x7ff800007ff80000;
+ vex_state->guest_f16 = 0x7ff800007ff80000;
+ vex_state->guest_f17 = 0x7ff800007ff80000;
+ vex_state->guest_f18 = 0x7ff800007ff80000;
+ vex_state->guest_f19 = 0x7ff800007ff80000;
+ vex_state->guest_f20 = 0x7ff800007ff80000;
+ vex_state->guest_f21 = 0x7ff800007ff80000;
+ vex_state->guest_f22 = 0x7ff800007ff80000;
+ vex_state->guest_f23 = 0x7ff800007ff80000;
+ vex_state->guest_f24 = 0x7ff800007ff80000;
+ vex_state->guest_f25 = 0x7ff800007ff80000;
+ vex_state->guest_f26 = 0x7ff800007ff80000;
+ vex_state->guest_f27 = 0x7ff800007ff80000;
+ vex_state->guest_f28 = 0x7ff800007ff80000;
+ vex_state->guest_f29 = 0x7ff800007ff80000;
+ vex_state->guest_f30 = 0x7ff800007ff80000;
+ vex_state->guest_f31 = 0x7ff800007ff80000;
vex_state->guest_FIR = 0; /* FP implementation and revision register */
vex_state->guest_FCCR = 0; /* FP condition codes register */
|
|
From: <sv...@va...> - 2014-02-27 13:46:14
|
Author: cborntra
Date: Thu Feb 27 13:46:02 2014
New Revision: 13842
Log:
wire up some more system calls on s390
Modified:
trunk/coregrind/m_syswrap/syswrap-s390x-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-s390x-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-s390x-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-s390x-linux.c Thu Feb 27 13:46:02 2014
@@ -846,7 +846,7 @@
LINX_(__NR_sched_get_priority_max, sys_sched_get_priority_max), // 159
LINX_(__NR_sched_get_priority_min, sys_sched_get_priority_min), // 160
-// ?????(__NR_sched_rr_get_interval, ), // 161
+ LINXY(__NR_sched_rr_get_interval, sys_sched_rr_get_interval), // 162
GENXY(__NR_nanosleep, sys_nanosleep), // 162
GENX_(__NR_mremap, sys_mremap), // 163
GENX_(164, sys_ni_syscall), /* unimplemented (by the kernel) */ // 164
@@ -1020,13 +1020,13 @@
LINX_(__NR_set_robust_list, sys_set_robust_list), // 304
LINXY(__NR_get_robust_list, sys_get_robust_list), // 305
-// ?????(__NR_splice, ),
+ LINX_(__NR_splice, sys_splice), // 306
LINX_(__NR_sync_file_range, sys_sync_file_range), // 307
-// ?????(__NR_tee, ),
-// ?????(__NR_vmsplice, ),
+ LINX_(__NR_tee, sys_tee), // 308
+ LINXY(__NR_vmsplice, sys_vmsplice), // 309
GENX_(310, sys_ni_syscall), /* unimplemented (by the kernel) */ // 310
-// ?????(__NR_getcpu, ),
+ LINXY(__NR_getcpu, sys_getcpu), // 311
LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 312
GENX_(__NR_utimes, sys_utimes), // 313
LINX_(__NR_fallocate, sys_fallocate), // 314
@@ -1049,16 +1049,18 @@
LINXY(__NR_preadv, sys_preadv), // 328
LINX_(__NR_pwritev, sys_pwritev), // 329
-// ?????(__NR_rt_tgsigqueueinfo, ),
+ LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo), // 330
LINXY(__NR_perf_event_open, sys_perf_event_open), // 331
-// ?????(__NR_fanotify_init, ), // 332
-// ?????(__NR_fanotify_mark, ), // 333
+ LINXY(__NR_fanotify_init, sys_fanotify_init), // 332
+ LINX_(__NR_fanotify_mark, sys_fanotify_mark), // 333
LINXY(__NR_prlimit64, sys_prlimit64), // 334
-// ?????(__NR_name_to_handle_at, ), // 335
-// ?????(__NR_open_by_handle_at, ), // 336
+
+ LINXY(__NR_name_to_handle_at, sys_name_to_handle_at), // 335
+ LINXY(__NR_open_by_handle_at, sys_open_by_handle_at), // 336
LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 337
// ?????(__NR_syncfs, ), // 338
// ?????(__NR_setns, ), // 339
+
LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 340
LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 341
};
|
|
From: <sv...@va...> - 2014-02-27 11:16:10
|
Author: sewardj
Date: Thu Feb 27 11:15:58 2014
New Revision: 13841
Log:
Fill in a (very) few cases for get_otrack_shadow_offset_wrk on arm64.
Apparently needed for generating some kinds of error messages, even
when not doing origin tracking, strangely enough.
Modified:
trunk/memcheck/mc_machine.c
Modified: trunk/memcheck/mc_machine.c
==============================================================================
--- trunk/memcheck/mc_machine.c (original)
+++ trunk/memcheck/mc_machine.c Thu Feb 27 11:15:58 2014
@@ -971,11 +971,17 @@
# define SZB(_fieldname) \
(sizeof(((VexGuestARM64State*)0)->guest_##_fieldname))
- Int o = offset;
- Int sz = szB;
+ Int o = offset;
+ Int sz = szB;
+ Bool is48 = sz == 8 || sz == 4;
+
tl_assert(sz > 0);
tl_assert(host_is_little_endian());
- (void)o; // RMME -- just to stop gcc warning that o is unused
+
+ if (o == GOF(X0) && is48) return o;
+ if (o == GOF(X1) && is48) return o;
+ if (o == GOF(X2) && is48) return o;
+ if (o == GOF(X3) && is48) return o;
VG_(printf)("MC_(get_otrack_shadow_offset)(arm64)(off=%d,sz=%d)\n",
offset,szB);
|
|
From: <sv...@va...> - 2014-02-27 11:14:41
|
Author: sewardj
Date: Thu Feb 27 11:14:19 2014
New Revision: 13840
Log:
Enable a few more syscalls:
sys_setpriority, sys_getpriority, sys_getresuid,
sys_getresgid, sys_recvfrom, sys_readahead
Modified:
trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-arm64-linux.c Thu Feb 27 11:14:19 2014
@@ -923,11 +923,15 @@
GENXY(__NR_nanosleep, sys_nanosleep), // 101
LINXY(__NR_clock_gettime, sys_clock_gettime), // 113
GENX_(__NR_kill, sys_kill), // 129
- LINX_(__NR_tgkill, sys_tgkill), // 131 */Linux
+ LINX_(__NR_tgkill, sys_tgkill), // 131
LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 134
LINXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 135
PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 139
+ GENX_(__NR_setpriority, sys_setpriority), // 140
+ GENX_(__NR_getpriority, sys_getpriority), // 141
LINX_(__NR_setresuid, sys_setresuid), // 147
+ LINXY(__NR_getresuid, sys_getresuid), // 148
+ LINXY(__NR_getresgid, sys_getresgid), // 150
GENX_(__NR_setpgid, sys_setpgid), // 154
GENX_(__NR_getpgid, sys_getpgid), // 155
GENXY(__NR_uname, sys_newuname), // 160
@@ -950,11 +954,13 @@
LINXY(__NR_getsockname, sys_getsockname), // 204
LINXY(__NR_getpeername, sys_getpeername), // 205
LINX_(__NR_sendto, sys_sendto), // 206
+ LINXY(__NR_recvfrom, sys_recvfrom), // 207
LINX_(__NR_setsockopt, sys_setsockopt), // 208
LINXY(__NR_getsockopt, sys_getsockopt), // 209
LINX_(__NR_shutdown, sys_shutdown), // 210
LINX_(__NR_sendmsg, sys_sendmsg), // 211
LINXY(__NR_recvmsg, sys_recvmsg), // 212
+ LINX_(__NR_readahead, sys_readahead), // 213
GENX_(__NR_brk, sys_brk), // 214
GENXY(__NR_munmap, sys_munmap), // 215
PLAX_(__NR_clone, sys_clone), // 220
@@ -1071,8 +1077,6 @@
//ZZ GENX_(__NR_fchmod, sys_fchmod), // 94
//ZZ
//ZZ LINX_(__NR_fchown, sys_fchown16), // 95
-//ZZ GENX_(__NR_getpriority, sys_getpriority), // 96
-//ZZ GENX_(__NR_setpriority, sys_setpriority), // 97
//ZZ // GENX_(__NR_profil, sys_ni_syscall), // 98
//ZZ GENXY(__NR_statfs, sys_statfs), // 99
//ZZ
@@ -1216,7 +1220,6 @@
//ZZ // GENX_(222, sys_ni_syscall), // 222
//ZZ // PLAXY(223, sys_syscall223), // 223 // sys_bproc?
//ZZ
-//ZZ LINX_(__NR_readahead, sys_readahead), // 225 */Linux
//ZZ LINX_(__NR_setxattr, sys_setxattr), // 226
//ZZ LINX_(__NR_lsetxattr, sys_lsetxattr), // 227
//ZZ LINX_(__NR_fsetxattr, sys_fsetxattr), // 228
|
|
From: <sv...@va...> - 2014-02-27 11:10:46
|
Author: sewardj
Date: Thu Feb 27 11:10:19 2014
New Revision: 2826
Log:
Implement a few more integer instructions:
NOP
LDA{R,RH,RB}
STL{R,RH,RB}
RBIT
Modified:
trunk/priv/guest_arm64_toIR.c
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Thu Feb 27 11:10:19 2014
@@ -239,6 +239,10 @@
(((_b10) << 10) \
| BITS10(_b9,_b8,_b7,_b6,_b5,_b4,_b3,_b2,_b1,_b0))
+#define BITS12(_b11, _b10,_b9,_b8,_b7,_b6,_b5,_b4,_b3,_b2,_b1,_b0) \
+ (((_b11) << 11) \
+ | BITS11(_b10,_b9,_b8,_b7,_b6,_b5,_b4,_b3,_b2,_b1,_b0))
+
// produces _uint[_bMax:_bMin]
#define SLICE_UInt(_uint,_bMax,_bMin) \
(( ((UInt)(_uint)) >> (_bMin)) \
@@ -1547,22 +1551,22 @@
/*------------------------------------------------------------*/
/* Generates a 64-bit byte swap. */
-static IRTemp math_BSWAP64 ( IRTemp t1 )
+static IRTemp math_BYTESWAP64 ( IRTemp src )
{
- IRTemp t2 = newTemp(Ity_I64);
IRTemp m8 = newTemp(Ity_I64);
IRTemp s8 = newTemp(Ity_I64);
IRTemp m16 = newTemp(Ity_I64);
IRTemp s16 = newTemp(Ity_I64);
IRTemp m32 = newTemp(Ity_I64);
+ IRTemp res = newTemp(Ity_I64);
assign( m8, mkU64(0xFF00FF00FF00FF00ULL) );
assign( s8,
binop(Iop_Or64,
binop(Iop_Shr64,
- binop(Iop_And64,mkexpr(t1),mkexpr(m8)),
+ binop(Iop_And64,mkexpr(src),mkexpr(m8)),
mkU8(8)),
binop(Iop_And64,
- binop(Iop_Shl64,mkexpr(t1),mkU8(8)),
+ binop(Iop_Shl64,mkexpr(src),mkU8(8)),
mkexpr(m8))
)
);
@@ -1580,7 +1584,7 @@
);
assign( m32, mkU64(0xFFFFFFFF00000000ULL) );
- assign( t2,
+ assign( res,
binop(Iop_Or64,
binop(Iop_Shr64,
binop(Iop_And64,mkexpr(s16),mkexpr(m32)),
@@ -1590,7 +1594,55 @@
mkexpr(m32))
)
);
- return t2;
+ return res;
+}
+
+
+/* Generates a 64-bit bit swap. */
+static IRTemp math_BITSWAP64 ( IRTemp src )
+{
+ IRTemp m1 = newTemp(Ity_I64);
+ IRTemp s1 = newTemp(Ity_I64);
+ IRTemp m2 = newTemp(Ity_I64);
+ IRTemp s2 = newTemp(Ity_I64);
+ IRTemp m4 = newTemp(Ity_I64);
+ IRTemp s4 = newTemp(Ity_I64);
+ assign( m1, mkU64(0xAAAAAAAAAAAAAAAAULL) );
+ assign( s1,
+ binop(Iop_Or64,
+ binop(Iop_Shr64,
+ binop(Iop_And64,mkexpr(src),mkexpr(m1)),
+ mkU8(1)),
+ binop(Iop_And64,
+ binop(Iop_Shl64,mkexpr(src),mkU8(1)),
+ mkexpr(m1))
+ )
+ );
+
+ assign( m2, mkU64(0xCCCCCCCCCCCCCCCCULL) );
+ assign( s2,
+ binop(Iop_Or64,
+ binop(Iop_Shr64,
+ binop(Iop_And64,mkexpr(s1),mkexpr(m2)),
+ mkU8(2)),
+ binop(Iop_And64,
+ binop(Iop_Shl64,mkexpr(s1),mkU8(2)),
+ mkexpr(m2))
+ )
+ );
+
+ assign( m4, mkU64(0xF0F0F0F0F0F0F0F0ULL) );
+ assign( s4,
+ binop(Iop_Or64,
+ binop(Iop_Shr64,
+ binop(Iop_And64,mkexpr(s2),mkexpr(m4)),
+ mkU8(4)),
+ binop(Iop_And64,
+ binop(Iop_Shl64,mkexpr(s2),mkU8(4)),
+ mkexpr(m4))
+ )
+ );
+ return math_BYTESWAP64(s4);
}
@@ -2651,37 +2703,53 @@
/* -------------- REV/REV16/REV32/RBIT -------------- */
/* 31 30 28 20 15 11 9 4
- 1 10 11010110 00000 0000 11 n d REV Xd, Xn
- 0 10 11010110 00000 0000 10 n d REV Wd, Wn
+ 1 10 11010110 00000 0000 11 n d (1) REV Xd, Xn
+ 0 10 11010110 00000 0000 10 n d (2) REV Wd, Wn
- 1 10 11010110 00000 0000 01 n d REV16 Xd, Xn
- 0 10 11010110 00000 0000 01 n d REV16 Wd, Wn
+ 1 10 11010110 00000 0000 00 n d (3) RBIT Xd, Xn
+ 0 10 11010110 00000 0000 00 n d (4) RBIT Wd, Wn
- 1 10 11010110 00000 0000 10 n d REV32 Xd, Xn
+ 1 10 11010110 00000 0000 01 n d (5) REV16 Xd, Xn
+ 0 10 11010110 00000 0000 01 n d (6) REV16 Wd, Wn
+
+ 1 10 11010110 00000 0000 10 n d (7) REV32 Xd, Xn
- 1 10 11010110 00000 0000 00 n d RBIT Xd, Xn
- 0 10 11010110 00000 0000 00 n d RBIT Wd, Wn
*/
- /* Only REV is currently implemented. */
+ /* Only REV and RBIT are currently implemented. */
if (INSN(30,21) == BITS10(1,0,1,1,0,1,0,1,1,0)
- && INSN(20,11) == BITS10(0,0,0,0,0,0,0,0,0,1)
- && INSN(31,31) == INSN(10,10)) {
- Bool is64 = INSN(31,31) == 1;
- UInt nn = INSN(9,5);
- UInt dd = INSN(4,0);
- IRTemp src = newTemp(Ity_I64);
- IRTemp dst = IRTemp_INVALID;
- if (is64) {
- assign(src, getIReg64orZR(nn));
- dst = math_BSWAP64(src);
- putIReg64orZR(dd, mkexpr(dst));
- } else {
- assign(src, binop(Iop_Shl64, getIReg64orZR(nn), mkU8(32)));
- dst = math_BSWAP64(src);
- putIReg32orZR(dd, unop(Iop_64to32, mkexpr(dst)));
+ && INSN(20,12) == BITS9(0,0,0,0,0,0,0,0,0)) {
+ UInt b31 = INSN(31,31);
+ UInt opc = INSN(11,10);
+
+ UInt ix = 0;
+ /**/ if (b31 == 1 && opc == BITS2(1,1)) ix = 1;
+ else if (b31 == 0 && opc == BITS2(1,0)) ix = 2;
+ else if (b31 == 1 && opc == BITS2(0,0)) ix = 3;
+ else if (b31 == 0 && opc == BITS2(0,0)) ix = 4;
+ else if (b31 == 1 && opc == BITS2(0,1)) ix = 5;
+ else if (b31 == 0 && opc == BITS2(0,1)) ix = 6;
+ else if (b31 == 1 && opc == BITS2(1,0)) ix = 7;
+ if (ix >= 1 && ix <= 4) {
+ Bool is64 = ix == 1 || ix == 3;
+ Bool isBIT = ix == 3 || ix == 4;
+ UInt nn = INSN(9,5);
+ UInt dd = INSN(4,0);
+ IRTemp src = newTemp(Ity_I64);
+ IRTemp dst = IRTemp_INVALID;
+ if (is64) {
+ assign(src, getIReg64orZR(nn));
+ dst = isBIT ? math_BITSWAP64(src) : math_BYTESWAP64(src);
+ putIReg64orZR(dd, mkexpr(dst));
+ } else {
+ assign(src, binop(Iop_Shl64, getIReg64orZR(nn), mkU8(32)));
+ dst = isBIT ? math_BITSWAP64(src) : math_BYTESWAP64(src);
+ putIReg32orZR(dd, unop(Iop_64to32, mkexpr(dst)));
+ }
+ DIP("%s %s, %s\n", isBIT ? "rbit" : "rev",
+ nameIRegOrZR(is64,dd), nameIRegOrZR(is64,nn));
+ return True;
}
- DIP("rev %s, %s\n", nameIRegOrZR(is64,dd), nameIRegOrZR(is64,nn));
- return True;
+ /* else fall through */
}
/* -------------------- CLZ/CLS -------------------- */
@@ -4081,50 +4149,89 @@
if (INSN(29,23) == BITS7(0,0,1,0,0,0,0)
&& (INSN(23,21) & BITS3(1,0,1)) == BITS3(0,0,0)
&& INSN(14,10) == BITS5(1,1,1,1,1)) {
- UInt szBlg2 = INSN(31,30);
- Bool isLD = INSN(22,22) == 1;
- Bool isAcqOrRel = INSN(15,15) == 1;
- UInt ss = INSN(20,16);
- UInt nn = INSN(9,5);
- UInt tt = INSN(4,0);
-
- vassert(szBlg2 < 4);
- UInt szB = 1 << szBlg2; /* 1, 2, 4 or 8 */
- IRType ty = integerIRTypeOfSize(szB);
- const HChar* suffix[4] = { "rb", "rh", "r", "r" };
-
- IRTemp ea = newTemp(Ity_I64);
- assign(ea, getIReg64orSP(nn));
- /* FIXME generate check that ea is szB-aligned */
-
- if (isLD && ss == BITS5(1,1,1,1,1)) {
- IRTemp res = newTemp(ty);
- stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(ea), NULL/*LL*/));
- putIReg64orZR(tt, widenUto64(ty, mkexpr(res)));
- if (isAcqOrRel) {
- stmt(IRStmt_MBE(Imbe_Fence));
- }
- DIP("ld%sx%s %s, [%s]\n", isAcqOrRel ? "a" : "", suffix[szBlg2],
- nameIRegOrZR(szB == 8, tt), nameIReg64orSP(nn));
- return True;
- }
- if (!isLD) {
- if (isAcqOrRel) {
- stmt(IRStmt_MBE(Imbe_Fence));
- }
- IRTemp res = newTemp(Ity_I1);
- IRExpr* data = narrowFrom64(ty, getIReg64orZR(tt));
- stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(ea), data));
- /* IR semantics: res is 1 if store succeeds, 0 if it fails.
- Need to set rS to 1 on failure, 0 on success. */
- putIReg64orZR(ss, binop(Iop_Xor64, unop(Iop_1Uto64, mkexpr(res)),
- mkU64(1)));
- DIP("st%sx%s %s, %s, [%s]\n", isAcqOrRel ? "a" : "", suffix[szBlg2],
- nameIRegOrZR(False, ss),
- nameIRegOrZR(szB == 8, tt), nameIReg64orSP(nn));
- return True;
- }
- /* else fall through */
+ UInt szBlg2 = INSN(31,30);
+ Bool isLD = INSN(22,22) == 1;
+ Bool isAcqOrRel = INSN(15,15) == 1;
+ UInt ss = INSN(20,16);
+ UInt nn = INSN(9,5);
+ UInt tt = INSN(4,0);
+
+ vassert(szBlg2 < 4);
+ UInt szB = 1 << szBlg2; /* 1, 2, 4 or 8 */
+ IRType ty = integerIRTypeOfSize(szB);
+ const HChar* suffix[4] = { "rb", "rh", "r", "r" };
+
+ IRTemp ea = newTemp(Ity_I64);
+ assign(ea, getIReg64orSP(nn));
+ /* FIXME generate check that ea is szB-aligned */
+
+ if (isLD && ss == BITS5(1,1,1,1,1)) {
+ IRTemp res = newTemp(ty);
+ stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(ea), NULL/*LL*/));
+ putIReg64orZR(tt, widenUto64(ty, mkexpr(res)));
+ if (isAcqOrRel) {
+ stmt(IRStmt_MBE(Imbe_Fence));
+ }
+ DIP("ld%sx%s %s, [%s]\n", isAcqOrRel ? "a" : "", suffix[szBlg2],
+ nameIRegOrZR(szB == 8, tt), nameIReg64orSP(nn));
+ return True;
+ }
+ if (!isLD) {
+ if (isAcqOrRel) {
+ stmt(IRStmt_MBE(Imbe_Fence));
+ }
+ IRTemp res = newTemp(Ity_I1);
+ IRExpr* data = narrowFrom64(ty, getIReg64orZR(tt));
+ stmt(IRStmt_LLSC(Iend_LE, res, mkexpr(ea), data));
+ /* IR semantics: res is 1 if store succeeds, 0 if it fails.
+ Need to set rS to 1 on failure, 0 on success. */
+ putIReg64orZR(ss, binop(Iop_Xor64, unop(Iop_1Uto64, mkexpr(res)),
+ mkU64(1)));
+ DIP("st%sx%s %s, %s, [%s]\n", isAcqOrRel ? "a" : "", suffix[szBlg2],
+ nameIRegOrZR(False, ss),
+ nameIRegOrZR(szB == 8, tt), nameIReg64orSP(nn));
+ return True;
+ }
+ /* else fall through */
+ }
+
+ /* ------------------ LDA{R,RH,RB} ------------------ */
+ /* ------------------ STL{R,RH,RB} ------------------ */
+ /* 31 29 23 20 14 9 4
+ sz 001000 110 11111 1 11111 n t LDAR<sz> Rt, [Xn|SP]
+ sz 001000 100 11111 1 11111 n t STLR<sz> Rt, [Xn|SP]
+ */
+ if (INSN(29,23) == BITS7(0,0,1,0,0,0,1)
+ && INSN(21,10) == BITS12(0,1,1,1,1,1,1,1,1,1,1,1)) {
+ UInt szBlg2 = INSN(31,30);
+ Bool isLD = INSN(22,22) == 1;
+ UInt nn = INSN(9,5);
+ UInt tt = INSN(4,0);
+
+ vassert(szBlg2 < 4);
+ UInt szB = 1 << szBlg2; /* 1, 2, 4 or 8 */
+ IRType ty = integerIRTypeOfSize(szB);
+ const HChar* suffix[4] = { "rb", "rh", "r", "r" };
+
+ IRTemp ea = newTemp(Ity_I64);
+ assign(ea, getIReg64orSP(nn));
+ /* FIXME generate check that ea is szB-aligned */
+
+ if (isLD) {
+ IRTemp res = newTemp(ty);
+ assign(res, loadLE(ty, mkexpr(ea)));
+ putIReg64orZR(tt, widenUto64(ty, mkexpr(res)));
+ stmt(IRStmt_MBE(Imbe_Fence));
+ DIP("lda%s %s, [%s]\n", suffix[szBlg2],
+ nameIRegOrZR(szB == 8, tt), nameIReg64orSP(nn));
+ } else {
+ stmt(IRStmt_MBE(Imbe_Fence));
+ IRExpr* data = narrowFrom64(ty, getIReg64orZR(tt));
+ storeLE(mkexpr(ea), data);
+ DIP("stl%s %s, [%s]\n", suffix[szBlg2],
+ nameIRegOrZR(szB == 8, tt), nameIReg64orSP(nn));
+ }
+ return True;
}
vex_printf("ARM64 front end: load_store\n");
@@ -4393,6 +4500,12 @@
return True;
}
+ /* -------------------- NOP -------------------- */
+ if (INSN(31,0) == 0xD503201F) {
+ DIP("nop\n");
+ return True;
+ }
+
//fail:
vex_printf("ARM64 front end: branch_etc\n");
return False;
@@ -6677,7 +6790,7 @@
archinfo, abiinfo );
if (ok) {
/* All decode successes end up here. */
- vassert(dres.len == 4 /*|| dres.len == 20*/);
+ vassert(dres.len == 4 || dres.len == 20);
switch (dres.whatNext) {
case Dis_Continue:
putPC( mkU64(dres.len + guest_PC_curr_instr) );
|
|
From: Christian B. <bor...@de...> - 2014-02-27 06:58:58
|
valgrind revision: 13839 VEX revision: 2825 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.5.1-0.7.29) Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.23.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.101-0.8-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP3 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP3 gcc 4.3.4 on z196 (s390x) ) Started at 2014-02-27 03:45:01 CET Ended at 2014-02-27 07:58:45 CET 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 == 642 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_cond_destroy_busy (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 == 642 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) drd/tests/pth_barrier3 (stderr) drd/tests/pth_barrier_thr_cr (stderr) drd/tests/pth_create_chain (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 27 04:06:23 2014 --- new.short Thu Feb 27 04:53:47 2014 *************** *** 8,16 **** ! == 642 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == ! memcheck/tests/err_disable4 (stderr) ! helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) - drd/tests/pth_barrier3 (stderr) - drd/tests/pth_barrier_thr_cr (stderr) - drd/tests/pth_create_chain (stderr) --- 8,11 ---- ! == 642 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_cond_destroy_busy (stderr) --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=5 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.22s no: 4.3s (19.5x, -----) me: 7.0s (31.8x, -----) ca:26.4s (120.2x, -----) he: 5.1s (23.2x, -----) ca: 9.2s (41.6x, -----) dr: 5.5s (25.0x, -----) ma: 4.7s (21.4x, -----) bigcode1 valgrind-old:0.22s no: 4.3s (19.5x, 0.2%) me: 6.9s (31.5x, 1.0%) ca:26.4s (119.8x, 0.3%) he: 5.0s (22.9x, 1.2%) ca: 9.1s (41.4x, 0.5%) dr: 5.5s (25.1x, -0.5%) ma: 4.7s (21.2x, 0.6%) -- bigcode2 -- bigcode2 valgrind-new:0.24s no: 7.2s (30.1x, -----) me:13.8s (57.5x, -----) ca:39.5s (164.8x, -----) he:10.0s (41.8x, -----) ca:14.2s (59.1x, -----) dr: 9.6s (40.0x, -----) ma: 8.1s (33.8x, -----) bigcode2 valgrind-old:0.24s no: 7.2s (30.0x, 0.6%) me:13.8s (57.3x, 0.4%) ca:39.5s (164.7x, 0.1%) he:10.1s (41.9x, -0.3%) ca:14.1s (58.9x, 0.4%) dr: 9.7s (40.3x, -0.6%) ma: 8.1s (33.6x, 0.4%) -- bz2 -- bz2 valgrind-new:0.69s no: 5.0s ( 7.2x, -----) me:12.9s (18.8x, -----) ca:30.6s (44.3x, -----) he:19.7s (28.6x, -----) ca:34.3s (49.7x, -----) dr:31.3s (45.3x, -----) ma: 3.6s ( 5.3x, -----) bz2 valgrind-old:0.69s no: 4.9s ( 7.1x, 1.2%) me:13.0s (18.8x, -0.3%) ca:30.7s (44.5x, -0.3%) he:19.6s (28.4x, 0.9%) ca:34.3s (49.8x, -0.2%) dr:29.2s (42.3x, 6.7%) ma: 3.9s ( 5.6x, -6.3%) -- fbench -- fbench valgrind-new:0.41s no: 1.6s ( 3.9x, -----) me: 4.2s (10.4x, -----) ca: 9.3s (22.8x, -----) he: 6.2s (15.1x, -----) ca: 7.2s (17.5x, -----) dr: 5.7s (14.0x, -----) ma: 1.7s ( 4.1x, -----) fbench valgrind-old:0.41s no: 1.6s ( 3.9x, 0.6%) me: 4.3s (10.5x, -0.9%) ca: 9.2s (22.5x, 1.2%) he: 6.2s (15.0x, 0.8%) ca: 7.2s (17.5x, -0.1%) dr: 5.5s (13.3x, 4.5%) ma: 1.7s ( 4.1x, -0.6%) -- ffbench -- ffbench valgrind-new:0.21s no: 1.1s ( 5.0x, -----) me: 3.0s (14.5x, -----) ca: 3.0s (14.4x, -----) he:43.5s (207.4x, -----) ca: 9.6s (45.7x, -----) dr: 6.9s (32.9x, -----) ma: 0.9s ( 4.5x, -----) ffbench valgrind-old:0.21s no: 1.0s ( 5.0x, 1.0%) me: 3.0s (14.5x, 0.3%) ca: 3.0s (14.4x, 0.3%) he:43.5s (207.4x, 0.0%) ca: 9.6s (45.8x, -0.2%) dr: 6.9s (32.8x, 0.3%) ma: 1.0s ( 4.6x, -1.1%) -- heap -- heap valgrind-new:0.23s no: 1.8s ( 7.7x, -----) me: 8.8s (38.4x, -----) ca:13.4s (58.2x, -----) he:12.7s (55.4x, -----) ca:11.2s (48.8x, -----) dr: 8.2s (35.6x, -----) ma: 7.8s (34.1x, -----) heap valgrind-old:0.23s no: 1.8s ( 7.7x, 1.1%) me: 8.7s (37.7x, 1.7%) ca:13.3s (57.9x, 0.5%) he:12.7s (55.2x, 0.3%) ca:11.3s (49.3x, -1.1%) dr: 7.7s (33.3x, 6.2%) ma: 8.0s (34.8x, -2.0%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.22s no: 2.0s ( 8.9x, -----) me:13.0s (59.0x, -----) ca:14.3s (65.0x, -----) he:14.2s (64.6x, -----) ca:12.4s (56.3x, -----) dr: 9.1s (41.3x, -----) ma: 8.0s (36.1x, -----) heap_pdb4 valgrind-old:0.22s no: 1.9s ( 8.8x, 1.5%) me:12.8s (58.1x, 1.6%) ca:14.3s (65.2x, -0.3%) he:14.1s (63.9x, 1.2%) ca:12.4s (56.3x, 0.0%) dr: 8.8s (40.1x, 2.8%) ma: 8.1s (36.6x, -1.4%) -- many-loss-records -- many-loss-records valgrind-new:0.02s no: 0.5s (23.0x, -----) me: 2.1s (103.5x, -----) ca: 1.9s (97.0x, -----) he: 2.2s (108.0x, -----) ca: 1.9s (95.0x, -----) dr: 1.8s (89.0x, -----) ma: 1.6s (82.5x, -----) many-loss-records valgrind-old:0.02s no: 0.5s (23.0x, 0.0%) me: 2.0s (102.5x, 1.0%) ca: 1.9s (96.5x, 0.5%) he: 2.1s (106.0x, 1.9%) ca: 1.9s (95.0x, 0.0%) dr: 1.7s (87.0x, 2.2%) ma: 1.7s (83.5x, -1.2%) -- many-xpts -- many-xpts valgrind-new:0.06s no: 0.6s (10.0x, -----) me: 3.2s (53.5x, -----) ca:370.9s (6182.3x, -----) he: 6.6s (110.0x, -----) ca: 2.8s (46.5x, -----) dr: 2.6s (43.3x, -----) ma: 2.6s (43.2x, -----) many-xpts valgrind-old:0.06s no: 0.6s ( 9.8x, 1.7%) me: 3.2s (53.2x, 0.6%) ca:374.0s (6232.7x, -0.8%) he: 6.5s (108.8x, 1.1%) ca: 2.8s (46.5x, 0.0%) dr: 2.5s (41.5x, 4.2%) ma: 2.6s (43.7x, -1.2%) -- sarp -- sarp valgrind-new:0.03s no: 0.6s (19.0x, -----) me: 3.6s (120.0x, -----) ca: 3.2s (105.3x, -----) he:16.8s (560.7x, -----) ca: 2.0s (68.3x, -----) dr: 1.6s (52.3x, -----) ma: 0.5s (16.3x, -----) sarp valgrind-old:0.03s no: 0.6s (19.3x, -1.8%) me: 3.6s (120.0x, 0.0%) ca: 3.2s (105.7x, -0.3%) he:16.7s (556.7x, 0.7%) ca: 2.0s (68.3x, 0.0%) dr: 1.3s (44.7x, 14.6%) ma: 0.5s (17.3x, -6.1%) -- tinycc -- tinycc valgrind-new:0.22s no: 2.7s (12.1x, -----) me:14.9s (67.9x, -----) ca:29.9s (136.0x, -----) he:27.7s (125.9x, -----) ca:21.4s (97.4x, -----) dr:21.8s (99.2x, -----) ma: 4.0s (18.2x, -----) tinycc valgrind-old:0.22s no: 2.6s (12.0x, 1.1%) me:14.9s (67.9x, -0.1%) ca:30.1s (136.7x, -0.5%) he:27.7s (126.0x, -0.1%) ca:21.2s (96.6x, 0.8%) dr:20.4s (92.9x, 6.3%) ma: 4.3s (19.4x, -6.7%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 184m58.158s user 183m19.236s sys 1m25.627s |