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: <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__
|
|
From: <sv...@va...> - 2013-06-17 18:59:59
|
florian 2013-06-17 19:59:51 +0100 (Mon, 17 Jun 2013)
New Revision: 2727
Log:
Add some more IRops to convert between binary floating point and
decimal floating point values. Needed to complete s390 DFP support.
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ 307113.
Modified files:
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/ir_defs.c (+55 -7)
===================================================================
--- trunk/priv/ir_defs.c 2013-06-09 17:46:14 +01:00 (rev 2726)
+++ trunk/priv/ir_defs.c 2013-06-17 19:59:51 +01:00 (rev 2727)
@@ -983,11 +983,23 @@
case Iop_D128toI32U: vex_printf("D128toI32U"); return;
case Iop_D128toI64S: vex_printf("D128toI64S"); return;
case Iop_D128toI64U: vex_printf("D128toI64U"); return;
+ case Iop_F32toD32: vex_printf("F32toD32"); return;
+ case Iop_F32toD64: vex_printf("F32toD64"); return;
+ case Iop_F32toD128: vex_printf("F32toD128"); return;
+ case Iop_F64toD32: vex_printf("F64toD32"); return;
case Iop_F64toD64: vex_printf("F64toD64"); return;
+ case Iop_F64toD128: vex_printf("F64toD128"); return;
+ case Iop_F128toD32: vex_printf("F128toD32"); return;
+ case Iop_F128toD64: vex_printf("F128toD64"); return;
+ case Iop_F128toD128: vex_printf("F128toD128"); return;
+ case Iop_D32toF32: vex_printf("D32toF32"); return;
+ case Iop_D32toF64: vex_printf("D32toF64"); return;
+ case Iop_D32toF128: vex_printf("D32toF128"); return;
+ case Iop_D64toF32: vex_printf("D64toF32"); return;
case Iop_D64toF64: vex_printf("D64toF64"); return;
- case Iop_F64toD128: vex_printf("F64toD128"); return;
+ case Iop_D64toF128: vex_printf("D64toF128"); return;
+ case Iop_D128toF32: vex_printf("D128toF32"); return;
case Iop_D128toF64: vex_printf("D128toF64"); return;
- case Iop_F128toD128: vex_printf("F128toD128"); return;
case Iop_D128toF128: vex_printf("D128toF128"); return;
case Iop_AddD128: vex_printf("AddD128"); return;
case Iop_SubD128: vex_printf("SubD128"); return;
@@ -3015,21 +3027,57 @@
case Iop_I64UtoD64:
BINARY(ity_RMode, Ity_I64, Ity_D64);
+ 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_F64toD128:
+ BINARY(ity_RMode, Ity_F64, Ity_D128);
+
+ 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_F64toD128:
- BINARY(ity_RMode, Ity_F64, Ity_D128);
+ 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_F128toD128:
- BINARY(ity_RMode, Ity_F128, Ity_D128);
-
case Iop_D128toF128:
BINARY(ity_RMode, Ity_D128, Ity_F128);
Modified: trunk/pub/libvex_ir.h (+41 -5)
===================================================================
--- trunk/pub/libvex_ir.h 2013-06-09 17:46:14 +01:00 (rev 2726)
+++ trunk/pub/libvex_ir.h 2013-06-17 19:59:51 +01:00 (rev 2727)
@@ -1092,21 +1092,57 @@
/* IRRoundingMode(I32) x D128 -> I64 */
Iop_D128toI64U,
+ /* IRRoundingMode(I32) x F32 -> D32 */
+ Iop_F32toD32,
+
+ /* IRRoundingMode(I32) x F32 -> D64 */
+ Iop_F32toD64,
+
+ /* IRRoundingMode(I32) x F32 -> D128 */
+ Iop_F32toD128,
+
+ /* IRRoundingMode(I32) x F64 -> D32 */
+ Iop_F64toD32,
+
/* IRRoundingMode(I32) x F64 -> D64 */
Iop_F64toD64,
+ /* IRRoundingMode(I32) x F64 -> D128 */
+ Iop_F64toD128,
+
+ /* IRRoundingMode(I32) x F128 -> D32 */
+ Iop_F128toD32,
+
+ /* IRRoundingMode(I32) x F128 -> D64 */
+ Iop_F128toD64,
+
+ /* IRRoundingMode(I32) x F128 -> D128 */
+ Iop_F128toD128,
+
+ /* IRRoundingMode(I32) x D32 -> F32 */
+ Iop_D32toF32,
+
+ /* IRRoundingMode(I32) x D32 -> F64 */
+ Iop_D32toF64,
+
+ /* IRRoundingMode(I32) x D32 -> F128 */
+ Iop_D32toF128,
+
+ /* IRRoundingMode(I32) x D64 -> F32 */
+ Iop_D64toF32,
+
/* IRRoundingMode(I32) x D64 -> F64 */
Iop_D64toF64,
- /* IRRoundingMode(I32) x F64 -> D128 */
- Iop_F64toD128,
+ /* IRRoundingMode(I32) x D64 -> F128 */
+ Iop_D64toF128,
+ /* IRRoundingMode(I32) x D128 -> F32 */
+ Iop_D128toF32,
+
/* IRRoundingMode(I32) x D128 -> F64 */
Iop_D128toF64,
- /* IRRoundingMode(I32) x F128 -> D128 */
- Iop_F128toD128,
-
/* IRRoundingMode(I32) x D128 -> F128 */
Iop_D128toF128,
|
|
From: <sv...@va...> - 2013-06-17 18:44:27
|
florian 2013-06-17 19:44:15 +0100 (Mon, 17 Jun 2013)
New Revision: 13427
Log:
Update list of ignored files.
Modified directories:
trunk/none/tests/mips64/
Modified: trunk/none/tests/mips64/
Property changed: trunk/none/tests/mips64 (+0 -0)
___________________________________________________________________
Name: svn:ignore
+ Makefile
Makefile.in
.deps
|