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
(14) |
|
2
(5) |
3
(15) |
4
(20) |
5
(2) |
6
(4) |
7
(16) |
8
(13) |
|
9
(3) |
10
(19) |
11
(13) |
12
(10) |
13
(16) |
14
|
15
|
|
16
|
17
(5) |
18
(14) |
19
(1) |
20
(12) |
21
(1) |
22
|
|
23
(1) |
24
(1) |
25
(1) |
26
(13) |
27
(2) |
28
(19) |
29
(15) |
|
30
(17) |
|
|
|
|
|
|
|
From: Julian S. <js...@ac...> - 2013-06-20 15:59:26
|
On 06/20/2013 05:33 PM, John Reiser wrote: >> (1) translate "XBEGIN fail-addr" as "goto fail-addr"; that is: push >> simulated execution directly onto the failure path. This is simple >> but will have poor performance, if (as is likely) the failure path >> uses normal locking and is not tuned for speed. > > That strategy might induce a deadlock, infinite loop, or application failure > in some cases. For example, one fallback strategy for the application when > the transaction fails is: grab a larger lock (more powerful) which > logically guarantees that the transaction will succeed, then re-run > the transaction while holding that lock. Are you sure about that? The transaction might fail for entirely arbitrary reasons, such as resource exhaustion (for conflict tracking) in the hardware or due to a context switch whilst inside the transaction, so the fallback path must always be usable. Hence not providing a usable fallback path is a straight-out application bug. Do I misunderstand something? J |
|
From: John R. <jr...@bi...> - 2013-06-20 15:32:04
|
> (1) translate "XBEGIN fail-addr" as "goto fail-addr"; that is: push > simulated execution directly onto the failure path. This is simple > but will have poor performance, if (as is likely) the failure path > uses normal locking and is not tuned for speed. That strategy might induce a deadlock, infinite loop, or application failure in some cases. For example, one fallback strategy for the application when the transaction fails is: grab a larger lock (more powerful) which logically guarantees that the transaction will succeed, then re-run the transaction while holding that lock. If VG always interprets XBEGIN as "goto transaction failed" then the application cannot make progress. -- |
|
From: Niall D. <ndo...@bl...> - 2013-06-20 15:08:15
|
> Some time earlier this year I worked out most of the details for making > memcheck multithreaded without using TM, and posted the details to the list (I > think). Philippe points out though that we will in any case need to retain the > ability to serialize so as not to force tool authors to completely rewrite tools for > multithreaded operation. You are aware there is a perfectly good mature compiler based on GCC which implements TM in software and uses HTM for acceleration where possible? TM in software isn't slow either, in fact the software converted to TM has shown very significant performance improvements. My point is you can convert valgrind to TM right now, and it works on non-Haswell. Your only problem would be if SG5 significantly changes the present TM spec for C/C++ and makes your code stop compiling - presently, this seems highly unlikely so long as you don't do anything too exotic. Niall --- Opinions expressed here are my own and do not necessarily represent those of BlackBerry Inc. |
|
From: Niall D. <ndo...@bl...> - 2013-06-20 14:53:29
|
This list may find this discussion on WG21 SG5 Transactional Memory of use: https://groups.google.com/a/isocpp.org/d/msg/tm/zfRyY_XfxSU/47esUzUcHX0J In short, I think you should simulate TM directly as effectively a "super longjmp" which preserves memory as well as registers. That's the most future proof, and it gives you a third way from the two you proposed to handle transactional memory. I'd recommend that approach instead, because (a) Haswell's HTM is known to be incomplete by Intel's own definition and they're planning on improving it and (ii) you can't handle it using the real CPU because Haswell's HTM either captures all memory writes or it doesn't i.e. all of valgrind's writes in addition to program writes. The fact Haswell's HTM is all or nothing I think suggests strongly what Intel will improve upon. Niall --- Opinions expressed here are my own and do not necessarily represent those of BlackBerry Inc. |
|
From: Julian S. <js...@ac...> - 2013-06-20 13:39:26
|
On 06/20/2013 02:15 PM, Josef Weidendorfer wrote: > But the code added by VG + > tool (just assume cache simulation) will raise the probability for > transaction failure significantly. Yes .. I agree with that. > And doing a rollback + failure path > is slower than doing the failure path from the beginning. So (1) may > not be a bad option at all. OK, worth a try. At least it gives us an ultra-simple baseline implementation. I expect to have a Haswell box to try with, soon. That's Intel-specific, though. The question of whether we can fit Power/s390 into the same framework is also important. > What about > (3) if XBEGIN/XEND is found in the same SB, remove them. As VG is > serializing threads, there is no way for a conflict within a SB anyway. OK for now, but if we continue Philippe Waroquiers' work on multithreaded Valgrind, then that serialization might go away one day. > PS: Using TM ourself should be a very nice solution to make memcheck > fast when we remove serializing of threads at one point. The move > forward here would be to let the tool decide whether VG core should > do serialization or not. If TM is not available, memcheck would > go with thread serialization as now. Hmm, interesting. Some time earlier this year I worked out most of the details for making memcheck multithreaded without using TM, and posted the details to the list (I think). Philippe points out though that we will in any case need to retain the ability to serialize so as not to force tool authors to completely rewrite tools for multithreaded operation. J |
|
From: Josef W. <Jos...@gm...> - 2013-06-20 12:15:58
|
Am 20.06.2013 11:27, schrieb Julian Seward: > (1) translate "XBEGIN fail-addr" as "goto fail-addr"; that is: push > simulated execution directly onto the failure path. This is simple > but will have poor performance, if (as is likely) the failure path > uses normal locking and is not tuned for speed. > > (2) translate "XBEGIN fail-addr" by handing it through to the real CPU, > in the same kind of way we handle CPUID, RDTSC, etc. Of course we will > have to put our own failure-handler address so we don't lose control > of execution if the transaction is aborted, but that's not difficult. > > --- > > (1) is simple but likely to work. (2) is probably preferable but I don't > know if there will be hidden problems in it. I do not see a hidden problem at the moment. But the code added by VG + tool (just assume cache simulation) will raise the probability for transaction failure significantly. And doing a rollback + failure path is slower than doing the failure path from the beginning. So (1) may not be a bad option at all. What about (3) if XBEGIN/XEND is found in the same SB, remove them. As VG is serializing threads, there is no way for a conflict within a SB anyway. Hm. A problem would be exceptions raised between XBEGIN/XEND. A transaction would simply fail... Josef PS: Using TM ourself should be a very nice solution to make memcheck fast when we remove serializing of threads at one point. The move forward here would be to let the tool decide whether VG core should do serialization or not. If TM is not available, memcheck would go with thread serialization as now. PS2: making the handling of TM transparent to tools means that e.g. cache simulation cannot tell anything about how TM would influence the cache. Current TM implementations use ways of cache sets to store transaction changes, thus influencing miss behavior. This is just a note; i do not suggest to simulate TM in VG ;-) > This also assumes that the s390 and POWER instructions can be mapped to > this same structure: TRANSACTION-START(fail-addr) and TRANSACTION-END. > That's probably the first thing that we should investigate. > > J > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Julian S. <js...@ac...> - 2013-06-20 09:27:24
|
Transactional memory support in hardware is about to hit mainstream
cpus, with the arrival of Intel's Haswell family. It also exists or
is about to exist (I don't know which) in the s390 and POWER architectures.
So we need to have a Plan for dealing with it. I looked at the Intel
(Haswell) instructions a bit, but don't know about the s390 or POWER
ones.
IIRC, the Intel scheme requires two instructions:
XBEGIN fail-addr
XEND
XBEGIN starts a transaction and registers fail-addr as the fallback
address. If the transaction fails for whatever reason (there are many
reasons why it might fail) then the processor rolls back register/memory
state to how it was at the XBEGIN, and executes code at fail-addr
instead.
XEND finishes the transaction.
Transactions can be nested.
We can't hope to emulate the conflict checking done by the real CPU
in any sane (performance or complexity) way. So I see two remaining
options:
(1) translate "XBEGIN fail-addr" as "goto fail-addr"; that is: push
simulated execution directly onto the failure path. This is simple
but will have poor performance, if (as is likely) the failure path
uses normal locking and is not tuned for speed.
(2) translate "XBEGIN fail-addr" by handing it through to the real CPU,
in the same kind of way we handle CPUID, RDTSC, etc. Of course we will
have to put our own failure-handler address so we don't lose control
of execution if the transaction is aborted, but that's not difficult.
---
(1) is simple but likely to work. (2) is probably preferable but I don't
know if there will be hidden problems in it.
This also assumes that the s390 and POWER instructions can be mapped to
this same structure: TRANSACTION-START(fail-addr) and TRANSACTION-END.
That's probably the first thing that we should investigate.
J
|
|
From: Paralkar Anmol-B. <B0...@fr...> - 2013-06-19 17:29:01
|
Hello Julian, I have created: https://bugs.kde.org/show_bug.cgi?id=321396 PS: I do not know how to make the bug 'Assigned To' myself; kindly help with the same. Please note that the patches have to clear an internal legal review process at Freescale before they can be posted externally. (Meanwhile, the port is available via our upcoming SDK-1.4 release). Kindly advise on any copyright assignment/legal paperwork if needed, so that we can work on it as well. A brief overview of the work is: - All of the SPE instructions (about 220) are supported: - FP, Fractional arithmetic instructions are "implemented" as-is via dirty-helpers. - All other instructions (integer arithmetic, load-store, logical, ...) by generating classic Power 32 via expressing in VEX IR. - There is at least one unit-test per instruction, typically tested against a sequence of randomly generated input data (recorded in the test's source code) and creating the test's baseline by running standalone on linux and then verifying that we obtain the same results when run under Valgrind. - Typical UNIX Utilities like: wc(1), grep(1), ls(1), head(1), gcc(1), ... work fine on it, used typically. - TODO's: - Support for e500v2 in Valgrind's internal gdbserver is yet to be added. - ptrace(2), prlimit(2), (and perhaps a lot of other syscalls) yet unsupported. - Need to warn on misaligned SPE load-stores (I suppose the e500v2 linux kernel handles these internally, so we get a difference in behavior). I am sure we'll need to split the patches/rework them some before they become acceptable for submission and I look forward to working with the community. Thank you very much. Regards, Anmol. > -----Original Message----- > From: Julian Seward [mailto:js...@ac...] > Sent: Monday, June 10, 2013 7:10 AM > To: Paralkar Anmol-B07584 > Cc: val...@li... > Subject: Re: [Valgrind-developers] Freescale Support for e500v2 SPE in > Valgrind. > > On 05/31/2013 06:50 PM, Paralkar Anmol-B07584 wrote: > > Hello, > > > > Freescale recently added support for the e500v2 SPE architecture based > off of Valgrind-3.8.1; > > this will be available in the upcoming SDK-1.4 release and is intended > to be contributed back > > to the public-domain mainline Valgrind sources. > > Is there a bug in the bug tracker containing the patches, for > review/testing > etc? > > J > > |
|
From: Christophe L. <chr...@st...> - 2013-06-18 13:35:10
|
Hello, I'd like to know if there are some plans to port valgrind to aarch64? Thanks, Christophe. |
|
From: Philippe W. <phi...@sk...> - 2013-06-18 03:32:55
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.7.2-204.fc18.ppc64 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2013-06-17 20:00:06 PDT Ended at 2013-06-17 20:32:31 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 == 557 tests, 31 stderr failures, 3 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (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/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 03:21:52
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) GDB: 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2013-06-18 03:52:49 BST Ended at 2013-06-18 04:21:35 BST 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 == 632 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) ================================================= == 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 == 632 tests, 3 stderr failures, 2 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) memcheck/tests/err_disable4 (stderr) none/tests/amd64/sse4-64 (stdout) none/tests/fdleak_ipv4 (stdout) none/tests/fdleak_ipv4 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-06-18 04:07:58.648416813 +0100 --- new.short 2013-06-18 04:21:35.134018897 +0100 *************** *** 8,15 **** ! == 632 tests, 3 stderr failures, 2 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) - memcheck/tests/err_disable4 (stderr) none/tests/amd64/sse4-64 (stdout) - none/tests/fdleak_ipv4 (stdout) - none/tests/fdleak_ipv4 (stderr) --- 8,12 ---- ! == 632 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2013-06-18 03:12:41
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) GDB: 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2013-06-18 03:43:27 BST Ended at 2013-06-18 04:12:26 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 == 634 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2013-06-18 03:08:16
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2) GDB: 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 13 (Goddard) Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2013-06-18 03:32:56 BST Ended at 2013-06-18 04:08:01 BST 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 == 634 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) none/tests/fdleak_ipv4 (stderr) helgrind/tests/pth_barrier3 (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 == 634 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_barrier3 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-06-18 03:51:57.240869058 +0100 --- new.short 2013-06-18 04:08:01.304363077 +0100 *************** *** 8,10 **** ! == 634 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_barrier3 (stderr) --- 8,12 ---- ! == 634 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == ! memcheck/tests/err_disable4 (stderr) ! none/tests/fdleak_ipv4 (stderr) helgrind/tests/pth_barrier3 (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 03:00:52
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) GDB: GNU gdb (GDB) Fedora (7.2-52.fc14) 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 14 (Laughlin) Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2013-06-18 03:25:15 BST Ended at 2013-06-18 04:00:36 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 653 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 02:55:15
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.1-48.fc15) 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2013-06-18 03:15:26 BST Ended at 2013-06-18 03:54: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 == 655 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 02:41:05
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.50.20110722-16.fc16) 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2013-06-18 03:04:01 BST Ended at 2013-06-18 03:40: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 == 655 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 02:30:46
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) GDB: GNU gdb (GDB) Fedora (7.4.50.20120120-54.fc17) 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.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2013-06-18 02:52:46 BST Ended at 2013-06-18 03:30:27 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 == 655 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 02:20:14
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-38.fc18) Assembler: GNU assembler version 2.23.51.0.1-6.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2013-06-18 02:43:25 BST Ended at 2013-06-18 03:19:59 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 == 655 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Christian B. <bor...@de...> - 2013-06-18 02:15:12
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.3-0.6.1) 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.74-0.6.10-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 2013-06-18 03:45:02 CEST Ended at 2013-06-18 04:14:59 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 635 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Christian B. <bor...@de...> - 2013-06-18 02:13:50
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9bb4) GDB: GNU gdb (GDB) Fedora (7.5-1bb1.fc15) Assembler: GNU assembler version 2.21.51.0.6-6bb6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.8.6-60.x.20130412-s390xperformance s390x Vendor version: unknown Nightly build on fedora390 ( Fedora 15 with devel libc/toolchain on z196 (s390x) ) Started at 2013-06-18 03:45:01 CEST Ended at 2013-06-18 04:14:02 CEST 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 == 636 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 02:08:55
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.8.1 20130603 (Red Hat 4.8.1-1) GDB: GNU gdb (GDB) Fedora (7.6-30.fc19) Assembler: GNU assembler version 2.23.52.0.1-8.fc19 20130226 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 19 (Schrödingerâs Cat) Nightly build on bristol ( x86_64, Fedora 19 (Schrödingerâs Cat) ) Started at 2013-06-18 02:33:18 BST Ended at 2013-06-18 03:08:41 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 == 655 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-06-18 01:54:10
|
valgrind revision: 13429 VEX revision: 2728 C compiler: gcc (GCC) 4.8.1 20130612 (Red Hat 4.8.1-2) GDB: GNU gdb (GDB) Fedora (7.6-32.fc20) Assembler: GNU assembler version 2.23.2 C library: GNU C Library (GNU libc) development release version 2.17.90 uname -mrs: Linux 3.9.4-200.fc18.x86_64 x86_64 Vendor version: Fedora release 20 (Rawhide) Nightly build on bristol ( x86_64, Fedora 20 ) Started at 2013-06-18 02:24:18 BST Ended at 2013-06-18 02:53:52 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 == 655 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) |
|
From: <sv...@va...> - 2013-06-17 21:04:38
|
florian 2013-06-17 22:04:25 +0100 (Mon, 17 Jun 2013)
New Revision: 13429
Log:
s390: Update testcase for PFPO
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ 307113.
Modified files:
trunk/none/tests/s390x/pfpo.c
trunk/none/tests/s390x/pfpo.stdout.exp
Modified: trunk/none/tests/s390x/pfpo.stdout.exp (+540 -180)
===================================================================
--- trunk/none/tests/s390x/pfpo.stdout.exp 2013-06-17 20:04:24 +01:00 (rev 13428)
+++ trunk/none/tests/s390x/pfpo.stdout.exp 2013-06-17 22:04:25 +01:00 (rev 13429)
@@ -1,182 +1,542 @@
pfpo test: function=81090600 ret=0 cc=0
pfpo test: function=81990600 ret=0 cc=3
-round=0 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=0 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=0 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=0 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=0 3c000000000001 -> 0.000000 ret=0 cc=1
-round=0 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=0 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=0 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=0 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=0 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=0 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=0 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=0 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=0 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=0 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=0 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=0 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=0 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=1 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=1 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=1 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=1 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=1 3c000000000001 -> 0.000000 ret=0 cc=1
-round=1 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=1 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=1 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=1 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=1 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=1 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=1 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=1 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=1 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=1 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=1 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=1 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=1 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=8 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=8 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=8 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=8 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=8 3c000000000001 -> 0.000000 ret=0 cc=1
-round=8 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=8 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=8 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=8 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=8 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=8 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=8 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=8 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=8 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=8 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=8 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=8 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=8 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=9 123456789999.565674 -> 262934b9c7fa7f56 ret=0 cc=1
-round=9 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=9 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b195 ret=0 cc=1
-round=9 262934b9c7fa7f57 -> 123456789999.565689 ret=0 cc=1
-round=9 3c000000000001 -> 0.000000 ret=0 cc=1
-round=9 77fcff3fcff3fcff -> 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 ret=0 cc=1
-round=9 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=9 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=9 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c43 ret=0 cc=1
-round=9 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=9 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=9 77ffcff3fcff3fcff3fcff3fcff3fcff -> 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 ret=0 cc=1
-round=9 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9778 ret=0 cc=1
-round=9 0.000000 -> d2ede220cc32483ba1962ddf1d687d2 ret=0 cc=1
-round=9 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=9 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=9 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=9 2239c0000000000000000016 -> 159999999999999999999999999999999981967451960713347652646954378648835054196656431469501071806818470701403544010634248613895135655802310342557603066270931617117849608473951398449804804366242587112112128.000000 ret=0 cc=1
-round=a 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=a 0.000000 -> 92d251ce3ea1d02 ret=0 cc=1
-round=a 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=a 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=a 3c000000000001 -> 0.000000 ret=0 cc=1
-round=a 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=a 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=a 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca05 ret=0 cc=1
-round=a 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=a 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.750000 ret=0 cc=1
-round=a 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=a 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=a 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=a 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=a 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000001 ret=0 cc=1
-round=a 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=a 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=a 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=b 123456789999.565674 -> 262934b9c7fa7f56 ret=0 cc=1
-round=b 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=b 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b195 ret=0 cc=1
-round=b 262934b9c7fa7f57 -> 123456789999.565689 ret=0 cc=1
-round=b 3c000000000001 -> 0.000000 ret=0 cc=1
-round=b 77fcff3fcff3fcff -> 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 ret=0 cc=1
-round=b 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=b 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=b 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c43 ret=0 cc=1
-round=b 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=b 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=b 77ffcff3fcff3fcff3fcff3fcff3fcff -> 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 ret=0 cc=1
-round=b 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9778 ret=0 cc=1
-round=b 0.000000 -> d2ede220cc32483ba1962ddf1d687d2 ret=0 cc=1
-round=b 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=b 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=b 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=b 2239c0000000000000000016 -> 159999999999999999999999999999999981967451960713347652646954378648835054196656431469501071806818470701403544010634248613895135655802310342557603066270931617117849608473951398449804804366242587112112128.000000 ret=0 cc=1
-round=c 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=c 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=c 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=c 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=c 3c000000000001 -> 0.000000 ret=0 cc=1
-round=c 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=c 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=c 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=c 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=c 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=c 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=c 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=c 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=c 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=c 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=c 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=c 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=c 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=d 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=d 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=d 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=d 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=d 3c000000000001 -> 0.000000 ret=0 cc=1
-round=d 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=d 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=d 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=d 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=d 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.500000 ret=0 cc=1
-round=d 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=d 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=d 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=d 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=d 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000000 ret=0 cc=1
-round=d 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=d 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=d 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=e 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
-round=e 0.000000 -> 92d251ce3ea1d02 ret=0 cc=1
-round=e 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=e 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
-round=e 3c000000000001 -> 0.000000 ret=0 cc=1
-round=e 77fcff3fcff3fcff -> inf ret=0 cc=1
-round=e 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=e 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca05 ret=0 cc=1
-round=e 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
-round=e 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.750000 ret=0 cc=1
-round=e 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=e 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
-round=e 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
-round=e 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
-round=e 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000001 ret=0 cc=1
-round=e 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=e 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=e 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
-round=f 123456789999.565674 -> 262934b9c7fa7f56 ret=0 cc=1
-round=f 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
-round=f 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
-round=f 262934b9c7fa7f57 -> 123456789999.565689 ret=0 cc=1
-round=f 3c000000000001 -> 0.000000 ret=0 cc=1
-round=f 77fcff3fcff3fcff -> 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 ret=0 cc=1
-round=f 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
-round=f 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
-round=f 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c43 ret=0 cc=1
-round=f 220640000000049c5de0ff3fe9fd5bcf -> 1234567899999999.750000 ret=0 cc=1
-round=f 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=f 77ffcff3fcff3fcff3fcff3fcff3fcff -> 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 ret=0 cc=1
-round=f 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9778 ret=0 cc=1
-round=f 0.000000 -> d2ede220cc32483ba1962ddf1d687d2 ret=0 cc=1
-round=f 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 -> 2631f0000000000000000001 ret=0 cc=1
-round=f 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
-round=f 840000000000000000001 -> 0.000000 ret=0 cc=1
-round=f 2239c0000000000000000016 -> 160000000000000000000000000000000011451533404631639467034099542619685764485103465972941918495930191370342312699297155536760176106261431760279282994113469896575542029761393840336009893684180428123013120.000000 ret=0 cc=1
+f32 -> d32: round=0 123.565681 -> 2614d757 ret=0 cc=1
+f32 -> d32: round=0 340282346638528859811704183484516925440.000000 -> 4c58092d ret=0 cc=1
+f32 -> d32: round=0 0.000000 -> 793d65a ret=0 cc=1
+f32 -> d64: round=0 123.565681 -> 260535d5a1cbd4db ret=0 cc=1
+f32 -> d64: round=0 340282346638528859811704183484516925440.000000 -> 2e96024b66672d4f ret=0 cc=1
+f32 -> d64: round=0 0.000000 -> 2564f5969d04b14e ret=0 cc=1
+f32 -> d128: round=0 123.565681 -> 2203c00000000001275ae8317d1774a5 ret=0 cc=0
+f32 -> d128: round=0 340282346638528859811704183484516925440.000000 -> 2e096024b66672d4eb78971063c934e9 ret=0 cc=1
+f32 -> d128: round=0 0.000000 -> 25f64f5969d04b16ba1faeedab748946 ret=0 cc=1
+f64 -> d32: round=0 123456789999.565674 -> 26a4d2e8 ret=0 cc=1
+f64 -> d32: round=0 0.000000 -> 0 ret=0 cc=1
+f64 -> d32: round=0 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 78000000 ret=0 cc=1
+f64 -> d64: round=0 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
+f64 -> d64: round=0 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
+f64 -> d64: round=0 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
+f64 -> d128: round=0 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
+f64 -> d128: round=0 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
+f64 -> d128: round=0 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
+f128 -> d32: round=0 1234567812345678912345678912.565679 -> 27a4d2e8 ret=0 cc=1
+f128 -> d32: round=0 0.000000 -> 0 ret=0 cc=1
+f128 -> d32: round=0 1189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968.000000 -> 78000000 ret=0 cc=1
+f128 -> d6: round=0 1234567812345678912345678912.565679 -> 266934b9d1c71779 ret=0 cc=1
+f128 -> d6: round=0 0.000000 -> 0 ret=0 cc=1
+f128 -> d6: round=0 1189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968.000000 -> 7800000000000000 ret=0 cc=1
+f128 -> d128: round=0 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
+f128 -> d128: round=0 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
+f128 -> d128: round=0 1189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968.000000 -> 46d0ccfec65b75d31f944bf65a6ca007 ret=0 cc=1
+d32 -> f32: round=0 2614d757 -> 123.565697 ret=0 cc=1
+d32 -> f32: round=0 77f3fcff -> inf ret=0 cc=1
+d32 -> f32: round=0 600001 -> 0.000000 ret=0 cc=1
+d32 -> f64: round=0 2614d757 -> 123.565700 ret=0 cc=1
+d32 -> f64: round=0 77f3fcff -> 9999998999999999145058500637276236756335285900858519878078201916184111084614646836542515064078336.000000 ret=0 cc=1
+d32 -> f64: round=0 600001 -> 0.000000 ret=0 cc=1
+d32 -> f128: round=0 2614d757 -> 123.565700 ret=0 cc=1
+d32 -> f128: round=0 77f3fcff -> 9999998999999999999999999999999999462354159244984568360531049341302200948801429690072240675094528.000000 ret=0 cc=1
+d32 -> f128: round=0 600001 -> 0.000000 ret=0 cc=1
+d64 -> f32: round=0 262934b9c7fa7f57 -> 123456790528.000000 ret=0 cc=1
+d64 -> f32: round=0 3c000000000001 -> 0.000000 ret=0 cc=1
+d64 -> f32: round=0 77fcff3fcff3fcff -> inf ret=0 cc=1
+d64 -> f64: round=0 262934b9c7fa7f57 -> 123456789999.565704 ret=0 cc=1
+d64 -> f64: round=0 3c000000000001 -> 0.000000 ret=0 cc=1
+d64 -> f64: round=0 77fcff3fcff3fcff -> inf ret=0 cc=1
+d64 -> f128: round=0 262934b9c7fa7f57 -> 123456789999.565700 ret=0 cc=1
+d64 -> f128: round=0 3c000000000001 -> 0.000000 ret=0 cc=1
+d64 -> f128: round=0 77fcff3fcff3fcff -> 9999999999999999000000000000000000013723202727516060118807077893448616268747199640509480875143654370524821933293844615764721668487788941176186611501359635428425057176258171019295271247185046529699191156424938761709359083589727106005789174223154354416401110127617320588057734183075456542453869127620182239429135678998347351873054557747250681274391162650971365131334722353902232279187456.000000 ret=0 cc=1
+d128 -> f32: round=0 2606934b9d1c71778671c5de19cb9779 -> 1234567826894753579187306496.000000 ret=0 cc=1
+d128 -> f32: round=0 840000000000000000001 -> 0.000000 ret=0 cc=1
+d128 -> f32: round=0 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
+d128 -> f64: round=0 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678857580314624.000000 ret=0 cc=1
+d128 -> f64: round=0 840000000000000000001 -> 0.000000 ret=0 cc=1
+d128 -> f64: round=0 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
+d128 -> f128: round=0 2606934b9d1c71778671c5de19cb9779 -> 1234567812345678912345678912.565679 ret=0 cc=1
+d128 -> f128: round=0 840000000000000000001 -> 0.000000 ret=0 cc=1
+d128 -> f128: round=0 77ffcff3fcff3fcff3fcff3fcff3fcff -> inf ret=0 cc=1
+f32 -> d32: round=1 123.565681 -> 2614d757 ret=0 cc=1
+f32 -> d32: round=1 340282346638528859811704183484516925440.000000 -> 4c58092d ret=0 cc=1
+f32 -> d32: round=1 0.000000 -> 793d65a ret=0 cc=1
+f32 -> d64: round=1 123.565681 -> 260535d5a1cbd4db ret=0 cc=1
+f32 -> d64: round=1 340282346638528859811704183484516925440.000000 -> 2e96024b66672d4f ret=0 cc=1
+f32 -> d64: round=1 0.000000 -> 2564f5969d04b14e ret=0 cc=1
+f32 -> d128: round=1 123.565681 -> 2203c00000000001275ae8317d1774a5 ret=0 cc=0
+f32 -> d128: round=1 340282346638528859811704183484516925440.000000 -> 2e096024b66672d4eb78971063c934e9 ret=0 cc=1
+f32 -> d128: round=1 0.000000 -> 25f64f5969d04b16ba1faeedab748946 ret=0 cc=1
+f64 -> d32: round=1 123456789999.565674 -> 26a4d2e8 ret=0 cc=1
+f64 -> d32: round=1 0.000000 -> 0 ret=0 cc=1
+f64 -> d32: round=1 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 78000000 ret=0 cc=1
+f64 -> d64: round=1 123456789999.565674 -> 262934b9c7fa7f57 ret=0 cc=1
+f64 -> d64: round=1 0.000000 -> 92d251ce3ea1d01 ret=0 cc=1
+f64 -> d64: round=1 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 46cffbcecb45b196 ret=0 cc=1
+f64 -> d128: round=1 123456789999.565674 -> 22050000000028e56f3cffb97734b8a5 ret=0 cc=0
+f64 -> d128: round=1 0.000000 -> 29b2d251ce3ea1d016ac1a4cb976ca04 ret=0 cc=1
+f64 -> d128: round=1 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 264cffbcecb45b195e20c55d13765c44 ret=0 cc=1
+f128 -> d32: round=1 1234567812345678912345678912.565679 -> 27a4d2e8 ret=0 cc=1
+f128 -> d32: round=1 0.000000 -> 0 ret=0 cc=1
+f128 -> d32: round=1 1189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968.000000 -> 78000000 ret=0 cc=1
+f128 -> d6: round=1 1234567812345678912345678912.565679 -> 266934b9d1c71779 ret=0 cc=1
+f128 -> d6: round=1 0.000000 -> 0 ret=0 cc=1
+f128 -> d6: round=1 1189731495357231765085759326628007016196469052641694045529698884212163579755312392324974012848462073525902033564749126859755265433573804462672698751945261490853461958725021262845865799405404493574681566096686172574953791792292256220777095858112702436475442537092608935138247345677279593806773692330094615746119725784172889892521939920757654204864565673356452247278152288867700638935595456496699511441752909606878513250948311396886100526833092128683974752192266386791880873694343077348155564101669971138512786874753496996549221727686770196551512812712488289469952298031867469924683981576664562667786719061499639630341657098305425237220876664630087808767256182803220212219924852375903049520911395910918921205273496768588119030111593018789368039232011671404175845108854706965215605777113516257404818817695075025715299705916714352103671782759119316034498392169720631800164034124698918142227577300459309880454715179606299895507583075851195185857971173167676966057998899352631885417716295302014668802384075846036226606480142977595407135050379808649130157164024060311786908796372510335873512774795275748595417572920936651398752709055215663939505589207804914540432978557623565645991208599669097180808881920063722771431218489011922209679053545963628417326002439732802939524313786668514027381434321036636571171670423586472759561231970793967839279147282720195377060602122638457883204809341717526809639253539447730280863675704796054050525162959099932535265586464682793821550087166946662209865086040990507131145474267411042839542322762994938759613112743837192839682676257555388372814490845395747128162065871588219108887240116651361962050800029176299938826082417547516732269930473133261258921845516815235455354310458114528303607394526100730578774092094736822286015459361126642549541799645333882549670764145955017051330800061253865140180153211929361456500343514792890205532021760061882232615736553377294980974059590520187961459799386741513028505934410453603480192383349321115171811051004108592830991811382552909064873029533418691087118107895004426881765865961841419267486232005929789956207494587649901662172318722999484512325826087031561936383689740686505279775296789331613683822798597040651600524129025149894873153196942095056670847466927644812596506700129443579512479230621373978088731257089799622902183824105412930483065603459863120371744282301377070153823878609951218937542956964157950988060608985782910656238116142203574104757451828170804875257446204128348513829082731722364189380493588338947664370623279820755831646205417488393062838201789547219543194450902113699925965376908192792152122212824578879336506875288617303469517112245451315447164280392523574962804175375927948971096983905242318797695347043690474223813266505639761164438844266531364626851219633994434154098562127395936184421821444273431534507860161614287022720984061569660333372788241037131538077377480152670583257920535569973318188112685673318997967497786786001251403873023920127717626858627038170562807276699687356274072773403132694104831615879354395811585825112837841563222761623334459188131537882355732483030085976890382969734476214593428191212717141333047577867552218517431064848760373196290310124466145087078377140528533048684204278799596652514009368964527494988719996088230065668196236298805733689960371306226158464997243490564472254071897564144128539839986096045563264771285585066304177995720101744844387158329767375560416207800878830072072413908657855667239546369357775781344288195989176313356856417845434232814886744226746707066979755577121788798468777700116472954103621810567107869855646414713502627836321256957407217461738363552424248762436478085351810995749293238174081331905048144612700905541425702220302537611494824228765324577933778519818778697340282580912780674979058938062556856001076057705982166686824756037569615760497619819482052758118532729333127733603742149847001463931981340719681330844408263017545241644293372483217234561694263937855759294448662979095419227451801588425977869694026601427919655168415895923043115191751872713346095752634608254475988154162254952597853199039645883742199236387610395830948074365988397707849632252080920941206268114832425403540515474312327876180802357701527842702008781378306569508588571830140611098042683009530862797403015355464377406249853964481000402231771665700893607521804084523668568649103258862666293372472441435563520595461701042390500795615834505944837326652542467444364861499184275097485253621979537504128523848241127715641240965261646703516395599407360083455079665191393229410544185167999099787655424462558900874388405649169453726739312260234815543297842308646072190147948072928456725835039546121182133640777769925841807579051735838823112759622714067509669913645288281894558925612972425252452248453502562347348900936766966136332741088135837550717443838484760651019872222926016920811114616937143207743488504602012776364256746872315205952601072228970686460932435222754496341763535189105548847634608972381760403137363968.000000 -> 7800000000000000 ret=0 cc=1
+f128 -> d128: round=1 1234567812345678912345678912.565679 -> 2606934b9d1c71778671c5de19cb9779 ret=0 cc=1
+f128 -> d128: round=1 0.000000 -> d2ede220cc32483ba1962ddf1d687d3 ret=0 cc=1
+f128 -> d128: round=1 118973149535723176508575932662800701619646905264169404552969888421216357975531239232497401284846207352590203356474912685975526543357380446267269875194526149085346195872502126284586579940540449357468156609668617257495379179229225622077709585811270243647544253709260893513824734567727959380677369233009461574611972578417288989252193992075765420486456567335645224727815228886770063893559545649669951144175290960687851325094831139688610052683309212868397475219226638679188087369434307734815556410166997113851278687475349699654922172768677019655151281271248828946995229803186746992468398157666456266778671906149963963034165709830542523722087666463008780876725618280322021221992485237590304952091139591091892120527349676858811903011159301878936803923201167140417584510885470696521560577711351625740481881769507502571529970591671435210367178275911931603449839216972063180016403412469891814222757730045930988045471517960629989550758307585119518585797117316767696605799889935263188541771629530201466880238407584603622660648014297759540713505037980864913015716402406031178690879637251033587351277479527574859541757292093665139875270905521566393950558920780491454043297855762356564599120859966909718080888192006372277143121848901192220967905354596362841732600243973280293952431378666851402738143432103663657117167042358647275956123197079396783927914728272019537706060212263845788320480934171752680963925353944773028086367570479605405052516295909993253526558646468279382155008716694666220986508604099050713114547426741104283954232276299493875961311274383719283968267625755538837281449084539574712816206587158821910888724011665136196205080002917629993882608241754751673226993047313326125892184551681523545535431045811452830360739452610073057877409209473682228601545936112664254954179964533388254967076414595501705133080006125386514018015321192936145650034351479289020553202176006188223261573655337729498097405959052018796145979938674151302850593441045360348019238334932111517181105100410859283099181138255290906487302953341869108711810789500442688176586596184141926748623200592978995620749458764990166217231872299948451232582608703156193638368974068650527977529678933161368382279859704065160052412902514989487315319694209505667084746692764481259650670012944357951247923062137397808873125708979962290218382410541293048306560345986312037174428230137707015382387860995121893754295696415795098806060898578291065623811614220357410475745182817080487525744620412834851382908273172236418938049358833894766437062327982075583164620541748839306283820178954721954319445090211369992596537690819279215212221282457887933650687528861730346951711224545131544716428039252357496280417537592794897109698390524231879769534704369047422381326650563976116443884426653136462685121963399443415409856212739593618442182144427343153450786016161428702272098406156966033337278824103713153807737748015267058325792053556997331818811268567331899796749778678600125140387302392012771762685862703817056280727669968735627407277340313269410483161587935439581158582511283784156322276162333445918813153788235573248303008597689038296973447621459342819121271714133304757786755221851743106484876037319629031012446614508707837714052853304868420427879959665251400936896452749498871999608823006566819623629880573368996037130622615846499724349056447225407189756414412853983998609604556326477128558506630417799572010174484438715832976737556041620780087883007207241390865785566723954636935777578134428819598917631335685641784543423281488674422674670706697975557712178879846877770011647295410362181056710786985564641471350262783632125695740721746173836355242424876243647808535181099574929323817408133190504814461270090554142570222030253761149482422876532457793377851981877869734028258091278067497905893806255685600107605770598216668682475603756961576049761981948205275811853272933312773360374214984700146393198134071968133084440826301754524164429337248321723456169426393785575929444866297909541922745180158842597786969402660142791965516841589592304311519175187271334609575263460825447598815416225495259785319903964588374...
[truncated message content] |
|
From: <sv...@va...> - 2013-06-17 21:04:10
|
florian 2013-06-17 22:03:56 +0100 (Mon, 17 Jun 2013)
New Revision: 2728
Log:
s390: Support some more BFP <-> DFP conversions (the ones
that were added in VEX r2727).
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ 307113.
Modified files:
trunk/priv/guest_s390_defs.h
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
trunk/priv/s390_defs.h
Modified: trunk/priv/guest_s390_defs.h (+4 -2)
===================================================================
--- trunk/priv/guest_s390_defs.h 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/guest_s390_defs.h 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -154,8 +154,9 @@
S390_CC_OP_DFP_128_TO_INT_32 = 55,
S390_CC_OP_DFP_64_TO_INT_64 = 56,
S390_CC_OP_DFP_128_TO_INT_64 = 57,
- S390_CC_OP_PFPO_64 = 58,
- S390_CC_OP_PFPO_128 = 59
+ S390_CC_OP_PFPO_32 = 58,
+ S390_CC_OP_PFPO_64 = 59,
+ S390_CC_OP_PFPO_128 = 60
};
/*------------------------------------------------------------*/
@@ -229,6 +230,7 @@
| S390_CC_OP_DFP_128_TO_INT_32 | D source hi 64 bits | D source low 64 bits | Z rounding mode |
| S390_CC_OP_DFP_64_TO_INT_64 | D source | Z rounding mode | |
| S390_CC_OP_DFP_128_TO_INT_64 | D source hi 64 bits | D source low 64 bits | Z rounding mode |
+ | S390_CC_OP_PFPO_32 | F|D source | Z GR0 low 32 bits | |
| S390_CC_OP_PFPO_64 | F|D source | Z GR0 low 32 bits | |
| S390_CC_OP_PFPO_128 | F|D source hi 64 bits | F|D src low 64 bits | Z GR0 low 32 bits |
+--------------------------------+-----------------------+----------------------+-----------------+
Modified: trunk/priv/s390_defs.h (+15 -3)
===================================================================
--- trunk/priv/s390_defs.h 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/s390_defs.h 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -123,14 +123,26 @@
S390_FPC_DFP_ROUND_PREPARE_SHORT = 7
} s390_fpc_dfp_round_t;
-/* PFPO function code as it is encoded in bits [33:55] of GP0
+/* PFPO function code as it is encoded in bits [33:55] of GR0
when PFPO insn is executed. */
typedef enum {
+ S390_PFPO_F32_TO_D32 = 0x010805,
+ S390_PFPO_F32_TO_D64 = 0x010905,
+ S390_PFPO_F32_TO_D128 = 0x010A05,
+ S390_PFPO_F64_TO_D32 = 0x010806,
S390_PFPO_F64_TO_D64 = 0x010906,
+ S390_PFPO_F64_TO_D128 = 0x010A06,
+ S390_PFPO_F128_TO_D32 = 0x010807,
+ S390_PFPO_F128_TO_D64 = 0x010907,
+ S390_PFPO_F128_TO_D128 = 0x010A07,
+ S390_PFPO_D32_TO_F32 = 0x010508,
+ S390_PFPO_D32_TO_F64 = 0x010608,
+ S390_PFPO_D32_TO_F128 = 0x010708,
+ S390_PFPO_D64_TO_F32 = 0x010509,
S390_PFPO_D64_TO_F64 = 0x010609,
- S390_PFPO_F64_TO_D128 = 0x010A06,
+ S390_PFPO_D64_TO_F128 = 0x010709,
+ S390_PFPO_D128_TO_F32 = 0x01050A,
S390_PFPO_D128_TO_F64 = 0x01060A,
- S390_PFPO_F128_TO_D128 = 0x010A07,
S390_PFPO_D128_TO_F128 = 0x01070A
} s390_pfpo_function_t;
Modified: trunk/priv/guest_s390_helpers.c (+12 -0)
===================================================================
--- trunk/priv/guest_s390_helpers.c 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/guest_s390_helpers.c 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -1741,6 +1741,18 @@
return S390_CC_FOR_DFP128_UCONVERT(".insn rrf,0xb94a0000", cc_dep1,
cc_dep2, cc_ndep);
+ case S390_CC_OP_PFPO_32: {
+ __asm__ volatile(
+ "ler 4, %[cc_dep1]\n\t" /* 32 bit FR move */
+ "lr 0, %[cc_dep2]\n\t" /* 32 bit GR move */
+ ".short 0x010a\n\t" /* PFPO */
+ "ipm %[psw]\n\t" : [psw] "=d"(psw)
+ : [cc_dep1] "f"(cc_dep1),
+ [cc_dep2] "d"(cc_dep2)
+ : "r0", "r1", "f4");
+ return psw >> 28; /* cc */
+ }
+
case S390_CC_OP_PFPO_64: {
__asm__ volatile(
"ldr 4, %[cc_dep1]\n\t"
Modified: trunk/priv/host_s390_isel.c (+83 -1)
===================================================================
--- trunk/priv/host_s390_isel.c 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/host_s390_isel.c 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -1974,6 +1974,45 @@
*dst_lo = s390_isel_float_expr(env, expr->Iex.Binop.arg2);
return;
+ case Iop_D32toF128:
+ case Iop_D64toF128: {
+ IRExpr *irrm;
+ IRExpr *left;
+ s390_dfp_round_t rm;
+ HReg h1; /* virtual reg. to hold source */
+ HReg f0, f2, f4, r1; /* real registers used by PFPO */
+ s390_fp_conv_t fpconv;
+
+ switch (expr->Iex.Binop.op) {
+ case Iop_D32toF128:
+ fpconv = S390_FP_D32_TO_F128;
+ break;
+ case Iop_D64toF128:
+ fpconv = S390_FP_D64_TO_F128;
+ break;
+ default: goto irreducible;
+ }
+
+ f4 = make_fpr(4); /* source */
+ f0 = make_fpr(0); /* destination */
+ f2 = make_fpr(2); /* destination */
+ r1 = make_gpr(1); /* GPR #1 clobbered */
+ irrm = expr->Iex.Binop.arg1;
+ left = expr->Iex.Binop.arg2;
+ rm = get_dfp_rounding_mode(env, irrm);
+ h1 = s390_isel_dfp_expr(env, left);
+ addInstr(env, s390_insn_move(8, f4, h1));
+ addInstr(env, s390_insn_fp128_convert(16, fpconv, f0, f2,
+ f4, INVALID_HREG, r1, 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;
+ }
+
case Iop_D128toF128: {
IRExpr *irrm;
IRExpr *left;
@@ -2246,7 +2285,11 @@
case Iop_I64StoF64: conv = S390_BFP_I64_TO_F64; goto convert_int;
case Iop_I64UtoF32: conv = S390_BFP_U64_TO_F32; goto convert_int;
case Iop_I64UtoF64: conv = S390_BFP_U64_TO_F64; goto convert_int;
+ case Iop_D32toF32: fpconv = S390_FP_D32_TO_F32; goto convert_dfp;
+ case Iop_D32toF64: fpconv = S390_FP_D32_TO_F64; goto convert_dfp;
+ case Iop_D64toF32: fpconv = S390_FP_D64_TO_F32; goto convert_dfp;
case Iop_D64toF64: fpconv = S390_FP_D64_TO_F64; goto convert_dfp;
+ case Iop_D128toF32: fpconv = S390_FP_D128_TO_F32; goto convert_dfp128;
case Iop_D128toF64: fpconv = S390_FP_D128_TO_F64; goto convert_dfp128;
convert_float:
@@ -2638,13 +2681,25 @@
return;
}
+ case Iop_F32toD128:
case Iop_F64toD128: {
IRExpr *irrm;
IRExpr *left;
s390_dfp_round_t rm;
HReg h1; /* virtual reg. to hold source */
HReg f0, f2, f4, r1; /* real registers used by PFPO */
+ s390_fp_conv_t fpconv;
+ switch (expr->Iex.Binop.op) {
+ case Iop_F32toD128: /* (D128, I64) -> D128 */
+ fpconv = S390_FP_F32_TO_D128;
+ break;
+ case Iop_F64toD128: /* (D128, I64) -> D128 */
+ fpconv = S390_FP_F64_TO_D128;
+ break;
+ default: goto irreducible;
+ }
+
f4 = make_fpr(4); /* source */
f0 = make_fpr(0); /* destination */
f2 = make_fpr(2); /* destination */
@@ -2654,7 +2709,7 @@
rm = get_dfp_rounding_mode(env, irrm);
h1 = s390_isel_float_expr(env, left);
addInstr(env, s390_insn_move(8, f4, h1));
- addInstr(env, s390_insn_fp128_convert(16, S390_FP_F64_TO_D128, f0, f2,
+ addInstr(env, s390_insn_fp128_convert(16, fpconv, f0, f2,
f4, INVALID_HREG, r1, rm));
/* (f0, f2) --> destination */
*dst_hi = newVRegF(env);
@@ -2823,7 +2878,12 @@
case Iop_D64toD32: conv = S390_DFP_D64_TO_D32; goto convert_dfp;
case Iop_I64StoD64: conv = S390_DFP_I64_TO_D64; goto convert_int;
case Iop_I64UtoD64: conv = S390_DFP_U64_TO_D64; goto convert_int;
+ case Iop_F32toD32: fpconv = S390_FP_F32_TO_D32; goto convert_bfp;
+ case Iop_F32toD64: fpconv = S390_FP_F32_TO_D64; goto convert_bfp;
+ case Iop_F64toD32: fpconv = S390_FP_F64_TO_D32; goto convert_bfp;
case Iop_F64toD64: fpconv = S390_FP_F64_TO_D64; goto convert_bfp;
+ case Iop_F128toD32: fpconv = S390_FP_F128_TO_D32; goto convert_bfp128;
+ case Iop_F128toD64: fpconv = S390_FP_F128_TO_D64; goto convert_bfp128;
convert_dfp:
h1 = s390_isel_dfp_expr(env, left);
@@ -2867,6 +2927,28 @@
return dst;
}
+ convert_bfp128: {
+ s390_dfp_round_t rm;
+ HReg op_hi, op_lo;
+ HReg f0, f4, f6, r1; /* real registers used by PFPO */
+
+ f4 = make_fpr(4); /* source */
+ f6 = make_fpr(6); /* source */
+ f0 = make_fpr(0); /* destination */
+ r1 = make_gpr(1); /* GPR #1 clobbered */
+ s390_isel_float128_expr(&op_hi, &op_lo, env, left);
+ dst = newVRegF(env);
+ rm = get_dfp_rounding_mode(env, irrm);
+ /* 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_fp128_convert(16, fpconv, f0, INVALID_HREG,
+ f4, f6, r1, rm));
+ /* f0 --> destination */
+ addInstr(env, s390_insn_move(8, dst, f0));
+ return dst;
+ }
+
case Iop_D128toD64: {
HReg op_hi, op_lo, f13, f15;
s390_dfp_round_t rounding_mode;
Modified: trunk/priv/host_s390_defs.h (+14 -2)
===================================================================
--- trunk/priv/host_s390_defs.h 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/host_s390_defs.h 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -268,11 +268,23 @@
} s390_dfp_conv_t;
typedef enum {
+ S390_FP_F32_TO_D32,
+ S390_FP_F32_TO_D64,
+ S390_FP_F32_TO_D128,
+ S390_FP_F64_TO_D32,
S390_FP_F64_TO_D64,
+ S390_FP_F64_TO_D128,
+ S390_FP_F128_TO_D32,
+ S390_FP_F128_TO_D64,
+ S390_FP_F128_TO_D128,
+ S390_FP_D32_TO_F32,
+ S390_FP_D32_TO_F64,
+ S390_FP_D32_TO_F128,
+ S390_FP_D64_TO_F32,
S390_FP_D64_TO_F64,
- S390_FP_F64_TO_D128,
+ S390_FP_D64_TO_F128,
+ S390_FP_D128_TO_F32,
S390_FP_D128_TO_F64,
- S390_FP_F128_TO_D128,
S390_FP_D128_TO_F128
} s390_fp_conv_t;
Modified: trunk/priv/host_s390_defs.c (+44 -8)
===================================================================
--- trunk/priv/host_s390_defs.c 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/host_s390_defs.c 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -6923,11 +6923,23 @@
s390_fp_convert *fp_convert = insn->variant.fp_convert.details;
switch (fp_convert->tag) {
- case S390_FP_F64_TO_D64: op = "v-f2d"; break;
- case S390_FP_D64_TO_F64: op = "v-d2f"; break;
- case S390_FP_F64_TO_D128: op = "v-f2d"; break;
- case S390_FP_D128_TO_F64: op = "v-d2f"; break;
+ case S390_FP_F32_TO_D32:
+ case S390_FP_F32_TO_D64:
+ case S390_FP_F32_TO_D128:
+ case S390_FP_F64_TO_D32:
+ case S390_FP_F64_TO_D64:
+ case S390_FP_F64_TO_D128:
+ case S390_FP_F128_TO_D32:
+ case S390_FP_F128_TO_D64:
case S390_FP_F128_TO_D128: op = "v-f2d"; break;
+ case S390_FP_D32_TO_F32:
+ case S390_FP_D32_TO_F64:
+ case S390_FP_D32_TO_F128:
+ case S390_FP_D64_TO_F32:
+ case S390_FP_D64_TO_F64:
+ case S390_FP_D64_TO_F128:
+ case S390_FP_D128_TO_F32:
+ case S390_FP_D128_TO_F64:
case S390_FP_D128_TO_F128: op = "v-d2f"; break;
default: goto fail;
}
@@ -7096,11 +7108,23 @@
s390_fp_convert *fp_convert = insn->variant.fp_convert.details;
switch (fp_convert->tag) {
+ case S390_FP_F32_TO_D32:
+ case S390_FP_F32_TO_D64:
+ case S390_FP_F32_TO_D128:
+ case S390_FP_D32_TO_F32:
+ case S390_FP_D32_TO_F64:
+ case S390_FP_D32_TO_F128: p += vex_sprintf(p, "4 -> "); goto common;
+ case S390_FP_F64_TO_D32:
case S390_FP_F64_TO_D64:
+ case S390_FP_F64_TO_D128:
+ case S390_FP_D64_TO_F32:
case S390_FP_D64_TO_F64:
- case S390_FP_F64_TO_D128: p += vex_sprintf(p, "8 -> "); goto common;
+ case S390_FP_D64_TO_F128: p += vex_sprintf(p, "8 -> "); goto common;
+ case S390_FP_F128_TO_D32:
+ case S390_FP_F128_TO_D64:
+ case S390_FP_F128_TO_D128:
+ case S390_FP_D128_TO_F32:
case S390_FP_D128_TO_F64:
- case S390_FP_F128_TO_D128:
case S390_FP_D128_TO_F128: p += vex_sprintf(p, "16 -> "); goto common;
default:
goto common;
@@ -9317,11 +9341,23 @@
vassert(rm < 2 || rm > 7);
switch (fp_convert->tag) {
+ case S390_FP_F32_TO_D32: pfpo = S390_PFPO_F32_TO_D32 << 8; break;
+ case S390_FP_F32_TO_D64: pfpo = S390_PFPO_F32_TO_D64 << 8; break;
+ case S390_FP_F32_TO_D128: pfpo = S390_PFPO_F32_TO_D128 << 8; break;
+ case S390_FP_F64_TO_D32: pfpo = S390_PFPO_F64_TO_D32 << 8; break;
case S390_FP_F64_TO_D64: pfpo = S390_PFPO_F64_TO_D64 << 8; break;
+ case S390_FP_F64_TO_D128: pfpo = S390_PFPO_F64_TO_D128 << 8; break;
+ case S390_FP_F128_TO_D32: pfpo = S390_PFPO_F128_TO_D32 << 8; break;
+ case S390_FP_F128_TO_D64: pfpo = S390_PFPO_F128_TO_D64 << 8; break;
+ case S390_FP_F128_TO_D128: pfpo = S390_PFPO_F128_TO_D128 << 8; break;
+ case S390_FP_D32_TO_F32: pfpo = S390_PFPO_D32_TO_F32 << 8; break;
+ case S390_FP_D32_TO_F64: pfpo = S390_PFPO_D32_TO_F64 << 8; break;
+ case S390_FP_D32_TO_F128: pfpo = S390_PFPO_D32_TO_F128 << 8; break;
+ case S390_FP_D64_TO_F32: pfpo = S390_PFPO_D64_TO_F32 << 8; break;
case S390_FP_D64_TO_F64: pfpo = S390_PFPO_D64_TO_F64 << 8; break;
- case S390_FP_F64_TO_D128: pfpo = S390_PFPO_F64_TO_D128 << 8; break;
+ case S390_FP_D64_TO_F128: pfpo = S390_PFPO_D64_TO_F128 << 8; break;
+ case S390_FP_D128_TO_F32: pfpo = S390_PFPO_D128_TO_F32 << 8; break;
case S390_FP_D128_TO_F64: pfpo = S390_PFPO_D128_TO_F64 << 8; break;
- case S390_FP_F128_TO_D128: pfpo = S390_PFPO_F128_TO_D128 << 8; break;
case S390_FP_D128_TO_F128: pfpo = S390_PFPO_D128_TO_F128 << 8; break;
default: goto fail;
}
Modified: trunk/priv/guest_s390_toIR.c (+161 -41)
===================================================================
--- trunk/priv/guest_s390_toIR.c 2013-06-17 19:59:51 +01:00 (rev 2727)
+++ trunk/priv/guest_s390_toIR.c 2013-06-17 22:03:56 +01:00 (rev 2728)
@@ -7199,18 +7199,42 @@
IRTemp test_bit = newTemp(Ity_I32); /* bit 32 of GR 0 - test validity */
IRTemp fn = newTemp(Ity_I32); /* [33:55] of GR 0 - function code */
IRTemp ef = newTemp(Ity_I32); /* Emulation Failure */
- IRTemp src1 = newTemp(Ity_F64);
- IRTemp dst1 = newTemp(Ity_D64);
- IRTemp src2 = newTemp(Ity_D64);
- IRTemp dst2 = newTemp(Ity_F64);
- IRTemp src3 = newTemp(Ity_F64);
+ IRTemp src1 = newTemp(Ity_F32);
+ IRTemp dst1 = newTemp(Ity_D32);
+ IRTemp src2 = newTemp(Ity_F32);
+ IRTemp dst2 = newTemp(Ity_D64);
+ IRTemp src3 = newTemp(Ity_F32);
IRTemp dst3 = newTemp(Ity_D128);
- IRTemp src4 = newTemp(Ity_D128);
- IRTemp dst4 = newTemp(Ity_F64);
- IRTemp src5 = newTemp(Ity_F128);
- IRTemp dst5 = newTemp(Ity_D128);
- IRTemp src6 = newTemp(Ity_D128);
- IRTemp dst6 = newTemp(Ity_F128);
+ IRTemp src4 = newTemp(Ity_F64);
+ IRTemp dst4 = newTemp(Ity_D32);
+ IRTemp src5 = newTemp(Ity_F64);
+ IRTemp dst5 = newTemp(Ity_D64);
+ IRTemp src6 = newTemp(Ity_F64);
+ IRTemp dst6 = newTemp(Ity_D128);
+ IRTemp src7 = newTemp(Ity_F128);
+ IRTemp dst7 = newTemp(Ity_D32);
+ IRTemp src8 = newTemp(Ity_F128);
+ IRTemp dst8 = newTemp(Ity_D64);
+ IRTemp src9 = newTemp(Ity_F128);
+ IRTemp dst9 = newTemp(Ity_D128);
+ IRTemp src10 = newTemp(Ity_D32);
+ IRTemp dst10 = newTemp(Ity_F32);
+ IRTemp src11 = newTemp(Ity_D32);
+ IRTemp dst11 = newTemp(Ity_F64);
+ IRTemp src12 = newTemp(Ity_D32);
+ IRTemp dst12 = newTemp(Ity_F128);
+ IRTemp src13 = newTemp(Ity_D64);
+ IRTemp dst13 = newTemp(Ity_F32);
+ IRTemp src14 = newTemp(Ity_D64);
+ IRTemp dst14 = newTemp(Ity_F64);
+ IRTemp src15 = newTemp(Ity_D64);
+ IRTemp dst15 = newTemp(Ity_F128);
+ IRTemp src16 = newTemp(Ity_D128);
+ IRTemp dst16 = newTemp(Ity_F32);
+ IRTemp src17 = newTemp(Ity_D128);
+ IRTemp dst17 = newTemp(Ity_F64);
+ IRTemp src18 = newTemp(Ity_D128);
+ IRTemp dst18 = newTemp(Ity_F128);
IRExpr *irrm;
vassert(s390_host_has_pfpo);
@@ -7225,7 +7249,7 @@
irrm = get_rounding_mode_from_gr0();
/* test_bit is 1 */
- assign(src1, get_fpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(src1, get_fpr_w0(4)); /* get source from FPR 4,6 */
s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src1, gr0);
/* Return code set in GR1 is usually 0. Non-zero value is set only
@@ -7253,52 +7277,148 @@
)
);
- /* F64 -> D64 */
+ /* F32 -> D32 */
/* get source from FPR 4,6 - already set in src1 */
- assign(dst1, binop(Iop_F64toD64, irrm, mkexpr(src1)));
- put_dpr_dw0(0, mkexpr(dst1)); /* put the result in FPR 0,2 */
+ assign(dst1, binop(Iop_F32toD32, irrm, mkexpr(src1)));
+ put_dpr_w0(0, mkexpr(dst1)); /* put the result in FPR 0,2 */
put_gpr_w1(1, mkU32(0x0));
- s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src1, gr0);
- next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F64_TO_D64)));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_32, src1, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F32_TO_D32)));
- /* D64 -> F64 */
- assign(src2, get_dpr_dw0(4)); /* get source from FPR 4,6 */
- assign(dst2, binop(Iop_D64toF64, irrm, mkexpr(src2)));
- put_fpr_dw0(0, mkexpr(dst2)); /* put the result in FPR 0,2 */
+ /* F32 -> D64 */
+ assign(src2, get_fpr_w0(4)); /* get source from FPR 4,6 */
+ assign(dst2, binop(Iop_F32toD64, irrm, mkexpr(src2)));
+ put_dpr_dw0(0, mkexpr(dst2)); /* put the result in FPR 0,2 */
put_gpr_w1(1, mkU32(0x0));
- s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src2, gr0);
- next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D64_TO_F64)));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_32, src2, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F32_TO_D64)));
- /* F64 -> D128 */
- assign(src3, get_fpr_dw0(4)); /* get source from FPR 4,6 */
- assign(dst3, binop(Iop_F64toD128, irrm, mkexpr(src3)));
+ /* F32 -> D128 */
+ assign(src3, get_fpr_w0(4)); /* get source from FPR 4,6 */
+ assign(dst3, binop(Iop_F32toD128, irrm, mkexpr(src3)));
put_dpr_pair(0, mkexpr(dst3)); /* put the result in FPR 0,2 */
put_gpr_w1(1, mkU32(0x0));
- s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src3, gr0);
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_32, src3, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F32_TO_D128)));
+
+ /* F64 -> D32 */
+ assign(src4, get_fpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(dst4, binop(Iop_F64toD32, irrm, mkexpr(src4)));
+ put_dpr_w0(0, mkexpr(dst4)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src4, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F64_TO_D32)));
+
+ /* F64 -> D64 */
+ assign(src5, get_fpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(dst5, binop(Iop_F64toD64, irrm, mkexpr(src5)));
+ put_dpr_dw0(0, mkexpr(dst5)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src5, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F64_TO_D64)));
+
+ /* F64 -> D128 */
+ assign(src6, get_fpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(dst6, binop(Iop_F64toD128, irrm, mkexpr(src6)));
+ put_dpr_pair(0, mkexpr(dst6)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src6, gr0);
next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F64_TO_D128)));
- /* D128 -> F64 */
- assign(src4, get_dpr_pair(4)); /* get source from FPR 4,6 */
- assign(dst4, binop(Iop_D128toF64, irrm, mkexpr(src4)));
- put_fpr_dw0(0, mkexpr(dst4)); /* put the result in FPR 0,2 */
+ /* F128 -> D32 */
+ assign(src7, get_fpr_pair(4)); /* get source from FPR 4,6 */
+ assign(dst7, binop(Iop_F128toD32, irrm, mkexpr(src7)));
+ put_dpr_w0(0, mkexpr(dst7)); /* put the result in FPR 0,2 */
put_gpr_w1(1, mkU32(0x0));
- s390_cc_thunk_put1d128Z(S390_CC_OP_PFPO_128, src4, gr0);
- next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D128_TO_F64)));
+ s390_cc_thunk_put1f128Z(S390_CC_OP_PFPO_128, src7, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F128_TO_D32)));
+ /* F128 -> D64 */
+ assign(src8, get_fpr_pair(4)); /* get source from FPR 4,6 */
+ assign(dst8, binop(Iop_F128toD64, irrm, mkexpr(src8)));
+ put_dpr_dw0(0, mkexpr(dst8)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_put1f128Z(S390_CC_OP_PFPO_128, src8, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F128_TO_D64)));
+
/* F128 -> D128 */
- assign(src5, get_fpr_pair(4)); /* get source from FPR 4,6 */
- assign(dst5, binop(Iop_F128toD128, irrm, mkexpr(src5)));
- put_dpr_pair(0, mkexpr(dst5)); /* put the result in FPR 0,2 */
+ assign(src9, get_fpr_pair(4)); /* get source from FPR 4,6 */
+ assign(dst9, binop(Iop_F128toD128, irrm, mkexpr(src9)));
+ put_dpr_pair(0, mkexpr(dst9)); /* put the result in FPR 0,2 */
put_gpr_w1(1, mkU32(0x0));
- s390_cc_thunk_put1f128Z(S390_CC_OP_PFPO_128, src5, gr0);
+ s390_cc_thunk_put1f128Z(S390_CC_OP_PFPO_128, src9, gr0);
next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_F128_TO_D128)));
+ /* D32 -> F32 */
+ assign(src10, get_dpr_w0(4)); /* get source from FPR 4,6 */
+ assign(dst10, binop(Iop_D32toF32, irrm, mkexpr(src10)));
+ put_fpr_w0(0, mkexpr(dst10)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_32, src10, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D32_TO_F32)));
+
+ /* D32 -> F64 */
+ assign(src11, get_dpr_w0(4)); /* get source from FPR 4,6 */
+ assign(dst11, binop(Iop_D32toF64, irrm, mkexpr(src11)));
+ put_fpr_dw0(0, mkexpr(dst11)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_32, src11, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D32_TO_F64)));
+
+ /* D32 -> F128 */
+ assign(src12, get_dpr_w0(4)); /* get source from FPR 4,6 */
+ assign(dst12, binop(Iop_D32toF128, irrm, mkexpr(src12)));
+ put_fpr_pair(0, mkexpr(dst12)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_32, src12, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D32_TO_F128)));
+
+ /* D64 -> F32 */
+ assign(src13, get_dpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(dst13, binop(Iop_D64toF32, irrm, mkexpr(src13)));
+ put_fpr_w0(0, mkexpr(dst13)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src13, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D64_TO_F32)));
+
+ /* D64 -> F64 */
+ assign(src14, get_dpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(dst14, binop(Iop_D64toF64, irrm, mkexpr(src14)));
+ put_fpr_dw0(0, mkexpr(dst14)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src14, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D64_TO_F64)));
+
+ /* D64 -> F128 */
+ assign(src15, get_dpr_dw0(4)); /* get source from FPR 4,6 */
+ assign(dst15, binop(Iop_D64toF128, irrm, mkexpr(src15)));
+ put_fpr_pair(0, mkexpr(dst15)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_putFZ(S390_CC_OP_PFPO_64, src15, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D64_TO_F128)));
+
+ /* D128 -> F32 */
+ assign(src16, get_dpr_pair(4)); /* get source from FPR 4,6 */
+ assign(dst16, binop(Iop_D128toF32, irrm, mkexpr(src16)));
+ put_fpr_w0(0, mkexpr(dst16)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_put1d128Z(S390_CC_OP_PFPO_128, src16, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D128_TO_F32)));
+
+ /* D128 -> F64 */
+ assign(src17, get_dpr_pair(4)); /* get source from FPR 4,6 */
+ assign(dst17, binop(Iop_D128toF64, irrm, mkexpr(src17)));
+ put_fpr_dw0(0, mkexpr(dst17)); /* put the result in FPR 0,2 */
+ put_gpr_w1(1, mkU32(0x0));
+ s390_cc_thunk_put1d128Z(S390_CC_OP_PFPO_128, src17, gr0);
+ next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D128_TO_F64)));
+
/* D128 -> F128 */
- assign(src6, get_dpr_pair(4)); /* get source from FPR 4,6 */
- assign(dst6, binop(Iop_D128toF128, irrm, mkexpr(src6)));
- put_fpr_pair(0, mkexpr(dst6)); /* put the result in FPR 0,2 */
+ assign(src18, get_dpr_pair(4)); /* get source from FPR 4,6 */
+ assign(dst18, binop(Iop_D128toF128, irrm, mkexpr(src18)));
+ put_fpr_pair(0, mkexpr(dst18)); /* put the result in FPR 0,2 */
put_gpr_w1(1, mkU32(0x0));
- s390_cc_thunk_put1d128Z(S390_CC_OP_PFPO_128, src6, gr0);
+ s390_cc_thunk_put1d128Z(S390_CC_OP_PFPO_128, src18, gr0);
next_insn_if(binop(Iop_CmpEQ32, mkexpr(fn), mkU32(S390_PFPO_D128_TO_F128)));
return "pfpo";
|
|
From: <sv...@va...> - 2013-06-17 19:04:36
|
florian 2013-06-17 20:04:24 +0100 (Mon, 17 Jun 2013)
New Revision: 13428
Log:
valgrind side changes to support the new IRops introduced
in VEX r2727 (conversion ops between binary floating point and
decimal floating point).
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ 307113.
Modified files:
trunk/memcheck/mc_translate.c
trunk/memcheck/tests/vbit-test/irops.c
trunk/memcheck/tests/vbit-test/util.c
Modified: trunk/memcheck/mc_translate.c (+18 -9)
===================================================================
--- trunk/memcheck/mc_translate.c 2013-06-17 19:44:15 +01:00 (rev 13427)
+++ trunk/memcheck/mc_translate.c 2013-06-17 20:04:24 +01:00 (rev 13428)
@@ -3437,22 +3437,31 @@
/* I32(rm) x I64/D64 -> D64/I64 */
return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+ case Iop_F32toD32:
+ case Iop_F64toD32:
+ case Iop_F128toD32:
+ case Iop_D32toF32:
+ case Iop_D64toF32:
+ case Iop_D128toF32:
+ /* I32(rm) x F32/F64/F128/D32/D64/D128 -> D32/F32 */
+ return mkLazy2(mce, Ity_I32, vatom1, vatom2);
+
+ case Iop_F32toD64:
case Iop_F64toD64:
+ case Iop_F128toD64:
+ case Iop_D32toF64:
case Iop_D64toF64:
- /* I32(rm) x F64/D64 -> D64/F64 */
+ case Iop_D128toF64:
+ /* I32(rm) x F32/F64/F128/D32/D64/D128 -> D64/F64 */
return mkLazy2(mce, Ity_I64, vatom1, vatom2);
+ case Iop_F32toD128:
case Iop_F64toD128:
- /* I32(rm) x F64 -> D128 */
- return mkLazy2(mce, Ity_I128, vatom1, vatom2);
-
- case Iop_D128toF64:
- /* I32(rm) x D128 -> F64 */
- return mkLazy2(mce, Ity_I64, vatom1, vatom2);
-
case Iop_F128toD128:
+ case Iop_D32toF128:
+ case Iop_D64toF128:
case Iop_D128toF128:
- /* I32(rm) x F128/D128 -> D128/F128 */
+ /* I32(rm) x F32/F64/F128/D32/D64/D128 -> D128/F128 */
return mkLazy2(mce, Ity_I128, vatom1, vatom2);
case Iop_RoundF32toInt:
Modified: trunk/memcheck/tests/vbit-test/util.c (+41 -5)
===================================================================
--- trunk/memcheck/tests/vbit-test/util.c 2013-06-17 19:44:15 +01:00 (rev 13427)
+++ trunk/memcheck/tests/vbit-test/util.c 2013-06-17 20:04:24 +01:00 (rev 13428)
@@ -869,21 +869,57 @@
case Iop_I64UtoD128:
UNARY(Ity_I64, Ity_D128);
+ case Iop_F32toD32:
+ BINARY(ity_RMode, Ity_F32, Ity_D32);
+
+ case Iop_F32toD64:
+ BINARY(ity_RMode, Ity_F32, Ity_D64);
+
+ case Iop_F32toD128:
+ BINARY(ity_RMode, Ity_F32, Ity_D128);
+
+ case Iop_F64toD32:
+ BINARY(ity_RMode, Ity_F64, Ity_D32);
+
case Iop_F64toD64:
BINARY(ity_RMode, Ity_F64, Ity_D64);
- case Iop_D64toF64: /* I64 bit pattern stored in Float register */
- BINARY(ity_RMode, Ity_D64, Ity_F64);
-
case Iop_F64toD128:
BINARY(ity_RMode, Ity_F64, Ity_D128);
- case Iop_D128toF64:
- BINARY(ity_RMode, Ity_D128, Ity_F64);
+ case Iop_F128toD32:
+ BINARY(ity_RMode, Ity_F128, Ity_D32);
+ case Iop_F128toD64:
+ BINARY(ity_RMode, Ity_F128, Ity_D64);
+
case Iop_F128toD128:
BINARY(ity_RMode, Ity_F128, Ity_D128);
+ case Iop_D32toF32:
+ BINARY(ity_RMode, Ity_D32, Ity_F32);
+
+ case Iop_D32toF64:
+ BINARY(ity_RMode, Ity_D32, Ity_F64);
+
+ case Iop_D32toF128:
+ BINARY(ity_RMode, Ity_D32, Ity_F128);
+
+ case Iop_D64toF32:
+ BINARY(ity_RMode, Ity_D64, Ity_F32);
+
+ case Iop_D64toF64:
+ BINARY(ity_RMode, Ity_D64, Ity_F64);
+
+ case Iop_D64toF128:
+ BINARY(ity_RMode, Ity_D64, Ity_F128);
+
+ case Iop_D128toF32:
+ BINARY(ity_RMode, Ity_D128, Ity_F32);
+
+ case Iop_D128toF64:
+ BINARY(ity_RMode, Ity_D128, Ity_F64);
+
case Iop_D128toF128:
BINARY(ity_RMode, Ity_D128, Ity_F128);
Modified: trunk/memcheck/tests/vbit-test/irops.c (+40 -2)
===================================================================
--- trunk/memcheck/tests/vbit-test/irops.c 2013-06-17 19:44:15 +01:00 (rev 13427)
+++ trunk/memcheck/tests/vbit-test/irops.c 2013-06-17 20:04:24 +01:00 (rev 13428)
@@ -509,11 +509,23 @@
{ DEFOP(Iop_D128toI64U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toI32S, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toI32U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F32toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F32toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F32toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F64toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_F64toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F64toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F128toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F128toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_F128toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D32toF32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D32toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D32toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D64toF32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D64toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
- { DEFOP(Iop_F64toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D64toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D128toF32, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toF64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
- { DEFOP(Iop_F128toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toF128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_RoundD64toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_RoundD128toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
@@ -984,7 +996,33 @@
rc /= 256;
if (rc != 0) return NULL;
}
+ /* PFPO Iops */
+ case Iop_F32toD32:
+ case Iop_F32toD64:
+ case Iop_F32toD128:
+ case Iop_F64toD32:
+ case Iop_F64toD64:
+ case Iop_F64toD128:
+ case Iop_F128toD32:
+ case Iop_F128toD64:
+ case Iop_F128toD128:
+ case Iop_D32toF32:
+ case Iop_D32toF64:
+ case Iop_D32toF128:
+ case Iop_D64toF32:
+ case Iop_D64toF64:
+ case Iop_D64toF128:
+ case Iop_D128toF32:
+ case Iop_D128toF64:
+ case Iop_D128toF128: {
+ int rc;
+ /* These IROps require the Perform Floating Point Operation facility */
+ rc = system(S390X_FEATURES " s390x-pfpo");
+ // s390x_features returns 1 if feature does not exist
+ rc /= 256;
+ if (rc != 0) return NULL;
}
+ }
return p->s390x ? p : NULL;
#endif
#ifdef __x86_64__
|