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
(7) |
2
(5) |
3
(2) |
4
(8) |
5
(10) |
|
6
(3) |
7
(9) |
8
(7) |
9
(8) |
10
(7) |
11
(4) |
12
(11) |
|
13
(5) |
14
(17) |
15
(6) |
16
(15) |
17
|
18
(3) |
19
(1) |
|
20
(6) |
21
(18) |
22
(5) |
23
(9) |
24
(6) |
25
(3) |
26
(1) |
|
27
(1) |
28
|
29
(8) |
30
(5) |
|
|
|
|
From: <sv...@va...> - 2015-09-05 21:28:05
|
Author: florian Date: Sat Sep 5 22:27:58 2015 New Revision: 15632 Log: Strange segments in /proc/self/maps have been observed in the field. Namely those with a file name and an inode number but without major and minor device numbers. See for instance https://bugs.kde.org/124528#c11 This patch also recognises segments with a file name as FileV segments (which is what valgrind used to do prior to r5818). Modified: trunk/coregrind/m_aspacemgr/aspacemgr-linux.c Modified: trunk/coregrind/m_aspacemgr/aspacemgr-linux.c ============================================================================== --- trunk/coregrind/m_aspacemgr/aspacemgr-linux.c (original) +++ trunk/coregrind/m_aspacemgr/aspacemgr-linux.c Sat Sep 5 22:27:58 2015 @@ -1519,12 +1519,11 @@ seg.hasX = toBool(prot & VKI_PROT_EXEC); seg.hasT = False; - /* Don't use the presence of a filename to decide if a segment in - the initial /proc/self/maps to decide if the segment is an AnonV - or FileV segment as some systems don't report the filename. Use - the device and inode numbers instead. Fixes bug #124528. */ + /* A segment in the initial /proc/self/maps is considered a FileV + segment if either it has a file name associated with it or both its + device and inode numbers are != 0. See bug #124528. */ seg.kind = SkAnonV; - if (dev != 0 && ino != 0) + if (filename || (dev != 0 && ino != 0)) seg.kind = SkFileV; # if defined(VGO_darwin) |
|
From: Florian K. <fl...@ei...> - 2015-09-05 21:20:51
|
Committed in r15631. Thanks for sending the patch.
Florian
On 05.09.2015 15:28, Matthias Schwarzott wrote:
> Unescaped left brace in regex is deprecated, passed through in regex;
> marked by <-- HERE in m/\${ <-- HERE PWD}/ at tests/vg_regtest line 312.
> ---
> tests/vg_regtest.in | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
> index bfb269f..a441f42 100755
> --- a/tests/vg_regtest.in
> +++ b/tests/vg_regtest.in
> @@ -309,7 +309,7 @@ sub read_vgtest_file($)
> next;
> } elsif ($line =~ /^\s*vgopts:\s*(.*)$/) {
> my $addvgopts = $1;
> - $addvgopts =~ s/\${PWD}/$ENV{PWD}/g;
> + $addvgopts =~ s/\$\{PWD\}/$ENV{PWD}/g;
> $vgopts = $vgopts . " " . $addvgopts; # Nb: Make sure there's a space!
> } elsif ($line =~ /^\s*prog:\s*(.*)$/) {
> $prog = validate_program(".", $1, 0, 0);
>
|
|
From: <sv...@va...> - 2015-09-05 21:19:19
|
Author: florian
Date: Sat Sep 5 22:19:11 2015
New Revision: 15631
Log:
Avoid warnings about deprecated unescaped curly brackets in regular
expressions. Happens with perl 5.22 and newer.
Patch by Matthias Schwarzott <zz...@ge...>
Modified:
trunk/tests/vg_regtest.in
Modified: trunk/tests/vg_regtest.in
==============================================================================
--- trunk/tests/vg_regtest.in (original)
+++ trunk/tests/vg_regtest.in Sat Sep 5 22:19:11 2015
@@ -309,7 +309,7 @@
next;
} elsif ($line =~ /^\s*vgopts:\s*(.*)$/) {
my $addvgopts = $1;
- $addvgopts =~ s/\${PWD}/$ENV{PWD}/g;
+ $addvgopts =~ s/\$\{PWD\}/$ENV{PWD}/g;
$vgopts = $vgopts . " " . $addvgopts; # Nb: Make sure there's a space!
} elsif ($line =~ /^\s*prog:\s*(.*)$/) {
$prog = validate_program(".", $1, 0, 0);
|
|
From: <sv...@va...> - 2015-09-05 20:45:10
|
Author: mjw
Date: Sat Sep 5 21:45:04 2015
New Revision: 15630
Log:
Correct expected output of tc18 and tc20 helgrind tests.
The addition if the safe wrapper in r15620 introduced an extra
output frame in the backtrace of helgrind/tests/tc18_semabuse and
helgrind/tests/tc20_verifywrap.
Modified:
trunk/helgrind/tests/tc18_semabuse.stderr.exp
trunk/helgrind/tests/tc20_verifywrap.stderr.exp
Modified: trunk/helgrind/tests/tc18_semabuse.stderr.exp
==============================================================================
--- trunk/helgrind/tests/tc18_semabuse.stderr.exp (original)
+++ trunk/helgrind/tests/tc18_semabuse.stderr.exp Sat Sep 5 21:45:04 2015
@@ -24,6 +24,7 @@
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 (tc18_semabuse.c:40)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp Sat Sep 5 21:45:04 2015
@@ -238,6 +238,7 @@
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:265)
|
|
From: <sv...@va...> - 2015-09-05 20:39:35
|
Author: florian
Date: Sat Sep 5 21:39:27 2015
New Revision: 15629
Log:
Changes related to new IROp Iop_RoundF128toInt. See VEX r3183.
s390: Add testcase for fixbr.
Patch by Andreas Arnez <ar...@li...>.
Part of fixing BZ #350290.
Added:
trunk/none/tests/s390x/fixbr.c
trunk/none/tests/s390x/fixbr.stderr.exp
trunk/none/tests/s390x/fixbr.stdout.exp
trunk/none/tests/s390x/fixbr.vgtest
Modified:
trunk/NEWS
trunk/docs/internals/3_10_BUGSTATUS.txt
trunk/docs/internals/s390-opcodes.csv
trunk/memcheck/mc_translate.c
trunk/memcheck/tests/vbit-test/irops.c
trunk/memcheck/tests/vbit-test/util.c
trunk/none/tests/s390x/ (props changed)
trunk/none/tests/s390x/Makefile.am
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Sat Sep 5 21:39:27 2015
@@ -358,6 +358,7 @@
349941 di_notify_mmap might create wrong start/size DebugInfoMapping
350062 vex x86->IR: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X
350202 Add limited param to 'monitor block_list'
+350290 s390x: Support instructions fixbr(a)
350809 Fix none/tests/async-sigs for Solaris
350811 Remove reference to --db-attach which has been removed.
350813 Memcheck/x86: enable handwritten assembly helpers for x86/Solaris too
Modified: trunk/docs/internals/3_10_BUGSTATUS.txt
==============================================================================
--- trunk/docs/internals/3_10_BUGSTATUS.txt (original)
+++ trunk/docs/internals/3_10_BUGSTATUS.txt Sat Sep 5 21:39:27 2015
@@ -73,8 +73,6 @@
=== VEX/s390x ==========================================================
-350290 s390x unsupported instruction fixbra
-
=== VEX general ========================================================
=== Syscalls/ioctls ====================================================
Modified: trunk/docs/internals/s390-opcodes.csv
==============================================================================
--- trunk/docs/internals/s390-opcodes.csv (original)
+++ trunk/docs/internals/s390-opcodes.csv Sat Sep 5 21:39:27 2015
@@ -293,9 +293,9 @@
lcxbr,"load complement extended bfp",implemented,
lcdbr,"load complement long bfp",implemented,
lcebr,"load complement short bfp",implemented,
-fixbr,"load fp integer extended bfp","not implemented",
-fidbr,"load fp integer long bfp","implemented",
-fiebr,"load fp integer short bfp","implemented",
+fixbr,"load fp integer extended bfp",implemented,
+fidbr,"load fp integer long bfp",implemented,
+fiebr,"load fp integer short bfp",implemented,
lfpc,"load fpc",implemented,
lxdbr,"load lengthened long to extended bfp",implemented,
lxdb,"load lengthened long to extended bfp",implemented,
Modified: trunk/memcheck/mc_translate.c
==============================================================================
--- trunk/memcheck/mc_translate.c (original)
+++ trunk/memcheck/mc_translate.c Sat Sep 5 21:39:27 2015
@@ -3785,6 +3785,10 @@
/* I32(rm) x D128 -> D128 */
return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+ case Iop_RoundF128toInt:
+ /* I32(rm) x F128 -> F128 */
+ return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+
case Iop_D64toI64S:
case Iop_D64toI64U:
case Iop_I64StoD64:
Modified: trunk/memcheck/tests/vbit-test/irops.c
==============================================================================
--- trunk/memcheck/tests/vbit-test/irops.c (original)
+++ trunk/memcheck/tests/vbit-test/irops.c Sat Sep 5 21:39:27 2015
@@ -241,8 +241,9 @@
{ DEFOP(Iop_CosF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 },
{ DEFOP(Iop_TanF64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 },
{ DEFOP(Iop_2xm1F64, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 },
- { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 },
- { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 0, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 },
+ { DEFOP(Iop_RoundF128toInt, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0, .tilegx = 0 },
+ { DEFOP(Iop_RoundF64toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 },
+ { DEFOP(Iop_RoundF32toInt, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1, .tilegx = 0 },
{ DEFOP(Iop_MAddF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 },
{ DEFOP(Iop_MSubF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 1, .tilegx = 0 },
{ DEFOP(Iop_MAddF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1, .tilegx = 0 },
Modified: trunk/memcheck/tests/vbit-test/util.c
==============================================================================
--- trunk/memcheck/tests/vbit-test/util.c (original)
+++ trunk/memcheck/tests/vbit-test/util.c Sat Sep 5 21:39:27 2015
@@ -811,6 +811,7 @@
UNARY(Ity_F128, Ity_F128);
case Iop_SqrtF128:
+ case Iop_RoundF128toInt:
BINARY(ity_RMode,Ity_F128, Ity_F128);
case Iop_I32StoF128: UNARY(Ity_I32, Ity_F128);
Modified: trunk/none/tests/s390x/Makefile.am
==============================================================================
--- trunk/none/tests/s390x/Makefile.am (original)
+++ trunk/none/tests/s390x/Makefile.am Sat Sep 5 21:39:27 2015
@@ -22,7 +22,7 @@
INSN_TESTS += dfp-1 dfp-2 dfp-3 dfp-4 dfptest dfpext dfpconv srnmt pfpo
endif
if HAS_MLONG_DOUBLE_128
- INSN_TESTS += fpext
+ INSN_TESTS += fpext fixbr
endif
check_PROGRAMS = $(INSN_TESTS) \
@@ -36,6 +36,7 @@
ecag.stdout.exp-z10ec ecag.stdout.exp-z196 ecag.stdout.exp-zec12 \
ecag.stdout.exp-z13 \
op00.stderr.exp1 op00.stderr.exp2 op00.vgtest \
+ fixbr.vgtest fixbr.stderr.exp fixbr.stdout.exp \
fpext.vgtest fpext.stderr.exp fpext.stdout.exp \
fpext_fail.vgtest fpext_fail.stderr.exp fpext_fail.stdout.exp \
test.h opcodes.h add.h and.h div.h insert.h dfp_utils.h \
@@ -60,5 +61,6 @@
cu14_1_CFLAGS = $(AM_CFLAGS) -DM3=1
cu21_1_CFLAGS = $(AM_CFLAGS) -DM3=1
cu24_1_CFLAGS = $(AM_CFLAGS) -DM3=1
+fixbr_CFLAGS = $(AM_CFLAGS) @FLAG_MLONG_DOUBLE_128@
fpext_CFLAGS = $(AM_CFLAGS) @FLAG_MLONG_DOUBLE_128@
ex_clone_LDFLAGS = -lpthread
Added: trunk/none/tests/s390x/fixbr.c
==============================================================================
--- trunk/none/tests/s390x/fixbr.c (added)
+++ trunk/none/tests/s390x/fixbr.c Sat Sep 5 21:39:27 2015
@@ -0,0 +1,73 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include "opcodes.h"
+#include "rounding.h"
+
+/* Test "fixbr" with rounding mode given in insn (m3 field)
+ Covers all generally available rounding modes that can be mapped to
+ IRRoundingMode. As a consequence m3=1 which is "round to nearest with
+ ties away from 0" is not tested here.
+*/
+
+const char *
+rtext(unsigned m3_round)
+{
+ switch (m3_round) {
+ case 0: return "[-> per fpc]";
+ case 1: return "[-> nearest away]";
+ case 3: return "[-> prepare short]"; // floating point extension fac needed
+ case 4: return "[-> nearest even]";
+ case 5: return "[-> 0]";
+ case 6: return "[-> +inf]";
+ case 7: return "[-> -inf]";
+ }
+ assert(0);
+}
+
+#define round_to_int(value,round) \
+do { \
+ long double src = value; \
+ long double dst; \
+ \
+ __asm__ volatile ("fixbr %[dst]," #round ",%[src]\n\t" \
+ : [dst] "=f"(dst) \
+ : [src] "f"(src)); \
+ \
+ printf("fixbr %.5Lf\t-> %Lg %s\n", \
+ src, dst, rtext(round)); \
+} while (0)
+
+#define fixbr(value,round) round_to_int(value,round)
+
+void
+set_rounding_mode(unsigned mode)
+{
+ register unsigned r asm("1") = mode;
+ __asm__ volatile ( SFPC(1) : : "d"(r) );
+}
+
+
+int main(void)
+{
+ int j;
+ static const long double dval[] = {
+ 1.25, 1.5, 2.5, 1.75, -1.25, -1.5, -2.5, -1.75, 0.0,
+ };
+
+ assert(sizeof(long double) == 16);
+
+ /* f128 -> f128, round to int */
+ for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) {
+ set_rounding_mode(FPC_BFP_ROUND_ZERO);
+ fixbr(dval[j], M3_BFP_ROUND_NEAREST_EVEN);
+ set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN);
+ fixbr(dval[j], M3_BFP_ROUND_ZERO);
+ fixbr(dval[j], M3_BFP_ROUND_POSINF);
+ fixbr(dval[j], M3_BFP_ROUND_NEGINF);
+ }
+
+ return 0;
+}
Added: trunk/none/tests/s390x/fixbr.stderr.exp
==============================================================================
--- trunk/none/tests/s390x/fixbr.stderr.exp (added)
+++ trunk/none/tests/s390x/fixbr.stderr.exp Sat Sep 5 21:39:27 2015
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/s390x/fixbr.stdout.exp
==============================================================================
--- trunk/none/tests/s390x/fixbr.stdout.exp (added)
+++ trunk/none/tests/s390x/fixbr.stdout.exp Sat Sep 5 21:39:27 2015
@@ -0,0 +1,36 @@
+fixbr 1.25000 -> 1 [-> nearest even]
+fixbr 1.25000 -> 1 [-> 0]
+fixbr 1.25000 -> 2 [-> +inf]
+fixbr 1.25000 -> 1 [-> -inf]
+fixbr 1.50000 -> 2 [-> nearest even]
+fixbr 1.50000 -> 1 [-> 0]
+fixbr 1.50000 -> 2 [-> +inf]
+fixbr 1.50000 -> 1 [-> -inf]
+fixbr 2.50000 -> 2 [-> nearest even]
+fixbr 2.50000 -> 2 [-> 0]
+fixbr 2.50000 -> 3 [-> +inf]
+fixbr 2.50000 -> 2 [-> -inf]
+fixbr 1.75000 -> 2 [-> nearest even]
+fixbr 1.75000 -> 1 [-> 0]
+fixbr 1.75000 -> 2 [-> +inf]
+fixbr 1.75000 -> 1 [-> -inf]
+fixbr -1.25000 -> -1 [-> nearest even]
+fixbr -1.25000 -> -1 [-> 0]
+fixbr -1.25000 -> -1 [-> +inf]
+fixbr -1.25000 -> -2 [-> -inf]
+fixbr -1.50000 -> -2 [-> nearest even]
+fixbr -1.50000 -> -1 [-> 0]
+fixbr -1.50000 -> -1 [-> +inf]
+fixbr -1.50000 -> -2 [-> -inf]
+fixbr -2.50000 -> -2 [-> nearest even]
+fixbr -2.50000 -> -2 [-> 0]
+fixbr -2.50000 -> -2 [-> +inf]
+fixbr -2.50000 -> -3 [-> -inf]
+fixbr -1.75000 -> -2 [-> nearest even]
+fixbr -1.75000 -> -1 [-> 0]
+fixbr -1.75000 -> -1 [-> +inf]
+fixbr -1.75000 -> -2 [-> -inf]
+fixbr 0.00000 -> 0 [-> nearest even]
+fixbr 0.00000 -> 0 [-> 0]
+fixbr 0.00000 -> 0 [-> +inf]
+fixbr 0.00000 -> 0 [-> -inf]
Added: trunk/none/tests/s390x/fixbr.vgtest
==============================================================================
--- trunk/none/tests/s390x/fixbr.vgtest (added)
+++ trunk/none/tests/s390x/fixbr.vgtest Sat Sep 5 21:39:27 2015
@@ -0,0 +1,2 @@
+prog: fixbr
+prereq: test -e fixbr && ../../../tests/s390x_features s390x-fpext
|
|
From: <sv...@va...> - 2015-09-05 20:36:00
|
Author: florian
Date: Sat Sep 5 21:35:52 2015
New Revision: 3183
Log:
s390: Add support for fixbr(a) instructions.
New IROp Iop_RoundF128toInt.
Patch by Andreas Arnez <ar...@li...>.
Part of fixing BZ #350290.
Modified:
trunk/priv/guest_s390_toIR.c
trunk/priv/host_s390_defs.c
trunk/priv/host_s390_defs.h
trunk/priv/host_s390_isel.c
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/guest_s390_toIR.c
==============================================================================
--- trunk/priv/guest_s390_toIR.c (original)
+++ trunk/priv/guest_s390_toIR.c Sat Sep 5 21:35:52 2015
@@ -12410,6 +12410,19 @@
}
static const HChar *
+s390_irgen_FIXBRA(UChar m3, UChar m4 __attribute__((unused)),
+ UChar r1, UChar r2)
+{
+ IRTemp result = newTemp(Ity_F128);
+
+ assign(result, binop(Iop_RoundF128toInt, mkexpr(encode_bfp_rounding_mode(m3)),
+ get_fpr_pair(r2)));
+ put_fpr_pair(r1, mkexpr(result));
+
+ return "fixbra";
+}
+
+static const HChar *
s390_irgen_LNEBR(UChar r1, UChar r2)
{
IRTemp result = newTemp(Ity_F32);
@@ -14531,7 +14544,9 @@
case 0xb346: s390_format_RRF_UUFF(s390_irgen_LEXBR, ovl.fmt.RRF2.m3,
ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
ovl.fmt.RRF2.r2); goto ok;
- case 0xb347: /* FIXBR */ goto unimplemented;
+ case 0xb347: s390_format_RRF_UUFF(s390_irgen_FIXBRA, ovl.fmt.RRF2.m3,
+ ovl.fmt.RRF2.m4, ovl.fmt.RRF2.r1,
+ ovl.fmt.RRF2.r2); goto ok;
case 0xb348: /* KXBR */ goto unimplemented;
case 0xb349: s390_format_RRE_FF(s390_irgen_CXBR, ovl.fmt.RRE.r1,
ovl.fmt.RRE.r2); goto ok;
Modified: trunk/priv/host_s390_defs.c
==============================================================================
--- trunk/priv/host_s390_defs.c (original)
+++ trunk/priv/host_s390_defs.c Sat Sep 5 21:35:52 2015
@@ -3973,6 +3973,23 @@
static UChar *
+s390_emit_FIXBRA(UChar *p, UChar m3, UChar m4, UChar r1, UChar r2)
+{
+ vassert(m3 == 0 || s390_host_has_fpext);
+
+ if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM)) {
+ if (m4 == 0)
+ s390_disasm(ENC4(MNM, FPR, UINT, FPR), "fixbr", r1, m3, r2);
+ else
+ s390_disasm(ENC5(MNM, FPR, UINT, FPR, UINT),
+ "fixbra", r1, m3, r2, m4);
+ }
+
+ return emit_RRF2(p, 0xb3470000, m3, m4, r1, r2);
+}
+
+
+static UChar *
s390_emit_MEEBR(UChar *p, UChar r1, UChar r2)
{
if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
@@ -5748,7 +5765,7 @@
}
-static s390_insn *
+s390_insn *
s390_insn_bfp128_convert(UChar size, s390_bfp_conv_t tag, HReg dst_hi,
HReg dst_lo, HReg op_hi, HReg op_lo,
s390_bfp_round_t rounding_mode)
@@ -5756,9 +5773,10 @@
s390_insn *insn = LibVEX_Alloc_inline(sizeof(s390_insn));
if (size == 16) {
- /* From smaller size to 16 bytes */
+ /* From smaller or equal size to 16 bytes */
vassert(is_valid_fp128_regpair(dst_hi, dst_lo));
- vassert(hregIsInvalid(op_lo));
+ vassert(hregIsInvalid(op_lo)
+ || is_valid_fp128_regpair(op_hi, op_lo));
} else {
/* From 16 bytes to smaller size */
vassert(is_valid_fp128_regpair(op_hi, op_lo));
@@ -6728,7 +6746,8 @@
case S390_BFP_F128_TO_F32:
case S390_BFP_F128_TO_F64: op = "v-f2f"; break;
case S390_BFP_F32_TO_F32I:
- case S390_BFP_F64_TO_F64I: op = "v-f2fi"; break;
+ case S390_BFP_F64_TO_F64I:
+ case S390_BFP_F128_TO_F128I: op = "v-f2fi"; break;
default: goto fail;
}
s390_sprintf(buf, "%M %R,%R", op, insn->variant.bfp_convert.dst_hi,
@@ -9003,6 +9022,7 @@
/* Load FP integer */
case S390_BFP_F32_TO_F32I: return s390_emit_FIEBRA(buf, m3, m4, r1, r2);
case S390_BFP_F64_TO_F64I: return s390_emit_FIDBRA(buf, m3, m4, r1, r2);
+ case S390_BFP_F128_TO_F128I: return s390_emit_FIXBRA(buf, m3, m4, r1, r2);
default: goto fail;
}
Modified: trunk/priv/host_s390_defs.h
==============================================================================
--- trunk/priv/host_s390_defs.h (original)
+++ trunk/priv/host_s390_defs.h Sat Sep 5 21:35:52 2015
@@ -244,7 +244,8 @@
S390_BFP_F128_TO_F32,
S390_BFP_F128_TO_F64,
S390_BFP_F32_TO_F32I,
- S390_BFP_F64_TO_F64I
+ S390_BFP_F64_TO_F64I,
+ S390_BFP_F128_TO_F128I
} s390_bfp_conv_t;
/* Type conversion operations: to and/or from decimal floating point */
@@ -660,6 +661,9 @@
s390_insn *s390_insn_bfp_compare(UChar size, HReg dst, HReg op1, HReg op2);
s390_insn *s390_insn_bfp_convert(UChar size, s390_bfp_conv_t tag, HReg dst,
HReg op, s390_bfp_round_t);
+s390_insn *s390_insn_bfp128_convert(UChar size, s390_bfp_conv_t tag, HReg dst_hi,
+ HReg dst_lo, HReg op_hi, HReg op_lo,
+ s390_bfp_round_t rounding_mode);
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,
Modified: trunk/priv/host_s390_isel.c
==============================================================================
--- trunk/priv/host_s390_isel.c (original)
+++ trunk/priv/host_s390_isel.c Sat Sep 5 21:35:52 2015
@@ -2143,6 +2143,42 @@
return;
}
+ case Iop_RoundF128toInt: {
+ IRExpr *irrm;
+ IRExpr *left;
+ s390_bfp_round_t rm;
+ HReg op_hi, op_lo;
+ HReg f0, f2, f4, f6; /* real registers */
+
+ f4 = make_fpr(4); /* source */
+ f6 = make_fpr(6); /* source */
+ f0 = make_fpr(0); /* destination */
+ f2 = make_fpr(2); /* destination */
+
+ irrm = expr->Iex.Binop.arg1;
+ left = expr->Iex.Binop.arg2;
+
+ if (s390_host_has_fpext) {
+ rm = get_bfp_rounding_mode(env, irrm);
+ } else {
+ set_bfp_rounding_mode_in_fpc(env, irrm);
+ rm = S390_BFP_ROUND_PER_FPC;
+ }
+
+ s390_isel_float128_expr(&op_hi, &op_lo, env, left);
+ /* operand --> (f4, f6) */
+ addInstr(env, s390_insn_move(8, f4, op_hi));
+ addInstr(env, s390_insn_move(8, f6, op_lo));
+ addInstr(env, s390_insn_bfp128_convert(16, S390_BFP_F128_TO_F128I,
+ f0, f2, f4, f6, rm));
+ /* (f0, f2) --> destination */
+ *dst_hi = newVRegF(env);
+ *dst_lo = newVRegF(env);
+ addInstr(env, s390_insn_move(8, *dst_hi, f0));
+ addInstr(env, s390_insn_move(8, *dst_lo, f2));
+ return;
+ }
+
default:
goto irreducible;
}
Modified: trunk/priv/ir_defs.c
==============================================================================
--- trunk/priv/ir_defs.c (original)
+++ trunk/priv/ir_defs.c Sat Sep 5 21:35:52 2015
@@ -396,6 +396,7 @@
case Iop_F32toF64: vex_printf("F32toF64"); return;
case Iop_F64toF32: vex_printf("F64toF32"); return;
+ case Iop_RoundF128toInt: vex_printf("RoundF128toInt"); return;
case Iop_RoundF64toInt: vex_printf("RoundF64toInt"); return;
case Iop_RoundF32toInt: vex_printf("RoundF32toInt"); return;
case Iop_RoundF64toF32: vex_printf("RoundF64toF32"); return;
@@ -3161,6 +3162,7 @@
UNARY(Ity_F128, Ity_F128);
case Iop_SqrtF128:
+ case Iop_RoundF128toInt:
BINARY(ity_RMode,Ity_F128, Ity_F128);
case Iop_I32StoF128: UNARY(Ity_I32, Ity_F128);
Modified: trunk/pub/libvex_ir.h
==============================================================================
--- trunk/pub/libvex_ir.h (original)
+++ trunk/pub/libvex_ir.h Sat Sep 5 21:35:52 2015
@@ -713,6 +713,8 @@
Iop_CosF64, /* FCOS */
Iop_TanF64, /* FTAN */
Iop_2xm1F64, /* (2^arg - 1.0) */
+ Iop_RoundF128toInt, /* F128 value to nearest integral value (still
+ as F128) */
Iop_RoundF64toInt, /* F64 value to nearest integral value (still
as F64) */
Iop_RoundF32toInt, /* F32 value to nearest integral value (still
|
|
From: Matthias S. <zz...@ge...> - 2015-09-05 13:29:26
|
Unescaped left brace in regex is deprecated, passed through in regex;
marked by <-- HERE in m/\${ <-- HERE PWD}/ at tests/vg_regtest line 312.
---
tests/vg_regtest.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
index bfb269f..a441f42 100755
--- a/tests/vg_regtest.in
+++ b/tests/vg_regtest.in
@@ -309,7 +309,7 @@ sub read_vgtest_file($)
next;
} elsif ($line =~ /^\s*vgopts:\s*(.*)$/) {
my $addvgopts = $1;
- $addvgopts =~ s/\${PWD}/$ENV{PWD}/g;
+ $addvgopts =~ s/\$\{PWD\}/$ENV{PWD}/g;
$vgopts = $vgopts . " " . $addvgopts; # Nb: Make sure there's a space!
} elsif ($line =~ /^\s*prog:\s*(.*)$/) {
$prog = validate_program(".", $1, 0, 0);
--
2.5.1
|
|
From: <sv...@va...> - 2015-09-05 08:41:39
|
Author: florian
Date: Sat Sep 5 09:41:32 2015
New Revision: 15628
Log:
Do not compile ansi.c with clang as that compiler does not
recognise the -ansi command line option.
Modified:
trunk/none/tests/Makefile.am
Modified: trunk/none/tests/Makefile.am
==============================================================================
--- trunk/none/tests/Makefile.am (original)
+++ trunk/none/tests/Makefile.am Sat Sep 5 09:41:32 2015
@@ -198,7 +198,7 @@
process_vm_readv_writev.stderr.exp process_vm_readv_writev.vgtest
check_PROGRAMS = \
- ansi args \
+ args \
async-sigs \
bitfield1 \
bug129866 bug234814 \
@@ -250,6 +250,11 @@
check_PROGRAMS += rlimit64_nofile
endif
+# clang does now know -ansi
+if ! COMPILER_IS_CLANG
+ check_PROGRAMS += ansi
+endif
+
if BUILD_IFUNC_TESTS
check_PROGRAMS += ifunc
endif
|
|
From: <sv...@va...> - 2015-09-05 08:40:50
|
Author: florian
Date: Sat Sep 5 09:40:43 2015
New Revision: 15627
Log:
Add callgrind.h
Modified:
trunk/none/tests/ansi.c
Modified: trunk/none/tests/ansi.c
==============================================================================
--- trunk/none/tests/ansi.c (original)
+++ trunk/none/tests/ansi.c Sat Sep 5 09:40:43 2015
@@ -7,6 +7,7 @@
#include "valgrind.h"
#include "../../memcheck/memcheck.h"
#include "../../helgrind/helgrind.h"
+#include "../../callgrind/callgrind.h"
#include "../../drd/drd.h"
int main(void)
|
|
From: <sv...@va...> - 2015-09-05 07:47:57
|
Author: florian
Date: Sat Sep 5 08:47:49 2015
New Revision: 15626
Log:
Update line number as a result of r15624.
Modified:
trunk/none/tests/s390x/fpext_fail.stderr.exp
Modified: trunk/none/tests/s390x/fpext_fail.stderr.exp
==============================================================================
--- trunk/none/tests/s390x/fpext_fail.stderr.exp (original)
+++ trunk/none/tests/s390x/fpext_fail.stderr.exp Sat Sep 5 08:47:49 2015
@@ -2,7 +2,7 @@
Emulation fatal error -- Valgrind cannot continue:
Encountered an instruction that requires the floating point extension facility.
That facility is not available on this host
- at 0x........: main (fpext.c:134)
+ at 0x........: main (fpext.c:136)
Valgrind has to exit now. Sorry.
|