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
(22) |
2
(24) |
|
3
(19) |
4
(20) |
5
(17) |
6
(20) |
7
(13) |
8
|
9
|
|
10
(10) |
11
(35) |
12
(20) |
13
(6) |
14
(19) |
15
|
16
|
|
17
(2) |
18
(3) |
19
(12) |
20
(1) |
21
(14) |
22
(2) |
23
(13) |
|
24
(2) |
25
(16) |
26
(17) |
27
(21) |
28
(17) |
29
(17) |
30
(14) |
|
31
(15) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2013-03-28 10:40:59
|
sewardj 2013-03-28 10:40:53 +0000 (Thu, 28 Mar 2013)
New Revision: 13345
Log:
Be more aggressive about dropping the lock in spinloops.
Modified files:
trunk/coregrind/m_scheduler/scheduler.c
Modified: trunk/coregrind/m_scheduler/scheduler.c (+2 -2)
===================================================================
--- trunk/coregrind/m_scheduler/scheduler.c 2013-03-28 09:35:39 +00:00 (rev 13344)
+++ trunk/coregrind/m_scheduler/scheduler.c 2013-03-28 10:40:53 +00:00 (rev 13345)
@@ -1354,8 +1354,8 @@
before swapping to another. That means that short term
spins waiting for hardware to poke memory won't cause a
thread swap. */
- if (dispatch_ctr > 2000)
- dispatch_ctr = 2000;
+ if (dispatch_ctr > 1000)
+ dispatch_ctr = 1000;
break;
case VG_TRC_INNER_COUNTERZERO:
|
|
From: <sv...@va...> - 2013-03-28 09:35:52
|
tom 2013-03-28 09:35:39 +0000 (Thu, 28 Mar 2013)
New Revision: 13344
Log:
Update test results for EQ_UQ SSE FP comparison operation. BZ#317444.
Modified files:
trunk/none/tests/amd64/avx-1.stdout.exp
Modified: trunk/none/tests/amd64/avx-1.stdout.exp (+6538 -6376)
===================================================================
--- trunk/none/tests/amd64/avx-1.stdout.exp 2013-03-27 21:59:21 +00:00 (rev 13343)
+++ trunk/none/tests/amd64/avx-1.stdout.exp 2013-03-28 09:35:39 +00:00 (rev 13344)
@@ -2914,7 +2914,7 @@
82f7e0fdd4e4067b.68388c83142e2162.a6a7400c41cc403a.a51b48e54cd51e1c
e9269fd30f8a03b2
-VCMPSS_128_0xA(reg)
+VCMPSS_128_0x8(reg)
before
753d505c0ab09ee1.b8d82f6a47ac22b0.c4bfd1b2202a1a0f.afda9ac39034ba3b
a5ad56eddad02b56.ea2f447357bd916f.57392c71721ca7ec.07dc3d60ae9fe86f
@@ -2927,7 +2927,7 @@
d5c2adf11b78e6bd.f5c89b0321220fe6.7bf39b2ea78e03a5.8b7aa3cfb7188605
61c851d368330ac1.b66eb008c0e7573e.8e361a535a0e6be5.15814afcc8ac5227
82bbadd4fc650602
-VCMPSS_128_0xA(mem)
+VCMPSS_128_0x8(mem)
before
aff4484170525fc1.a50b3f015d8dd40f.07ef006d511826a6.ea51a34e28271b59
76fa9831407c1991.fdd771e697138053.c515061eefc23848.ed8f348aac664eac
@@ -2937,11 +2937,11 @@
after
aff4484170525fc1.a50b3f015d8dd40f.07ef006d511826a6.ea51a34e28271b59
76fa9831407c1991.fdd771e697138053.c515061eefc23848.ed8f348aac664eac
- 0000000000000000.0000000000000000.c515061eefc23848.ed8f348affffffff
+ 0000000000000000.0000000000000000.c515061eefc23848.ed8f348a00000000
4599434661bc9e12.5838978548d16d6b.f9832414c3af14ec.53a35b75478330a1
7011e9fc977a579b
-VCMPSS_128_0xA(reg)
+VCMPSS_128_0x8(reg)
before
a2d26e740dc6f125.05ca9744eaeae21c.14668117f7212697.26633431320a5646
4632e74945f33bea.d1f79073408676e6.544da1105bccb169.3018eb4b1e0dca8a
@@ -2954,7 +2954,7 @@
b87d4fe8dc8e7197.83eca8c17c9c179d.7439f1dc0f5e498d.f370c44ca3c52de5
54fea2bb6e22ced7.f8755d1abc38816c.cf766fe8b0642bae.4b353b21de3d3c83
1434ccb7eb81b08f
-VCMPSS_128_0xA(mem)
+VCMPSS_128_0x8(mem)
before
2a39f4f9e49d4836.7703dd30953c9057.0c5d2a681c677080.c34f179ed9699379
69102ed3e89ebea3.7bd6fab1f066f1c3.9b728b98b7359f05.ab12e36c26fabc99
@@ -2968,7 +2968,7 @@
d263c8fe7b7d3782.9919cf8cac20820d.9a4efa4f10dab010.c681dcfd9fed458a
b1c6009702681bb3
-VCMPSS_128_0xA(reg)
+VCMPSS_128_0x8(reg)
before
012339f9fa9ea4e2.b47820294273b14b.6b217ebd46c72a43.c1ae00ad05ca0aee
10e6848e211b1ac2.2f8e7b9b847efa8a.8f2701ab82af6115.d46a8a9ea68994ed
@@ -2976,12 +2976,12 @@
dfc93d02731cbf48.5ff02707e2ffe81e.3d616f6e5273703c.2b251ae55aa12bfd
27bc1914a613af65
after
- 0000000000000000.0000000000000000.8f2701ab82af6115.d46a8a9effffffff
+ 0000000000000000.0000000000000000.8f2701ab82af6115.d46a8a9e00000000
10e6848e211b1ac2.2f8e7b9b847efa8a.8f2701ab82af6115.d46a8a9ea68994ed
3c59dcc3166cba00.1e7254415aa8ce6d.617952c2fc64652f.ae4d140d0f220b39
dfc93d02731cbf48.5ff02707e2ffe81e.3d616f6e5273703c.2b251ae55aa12bfd
27bc1914a613af65
-VCMPSS_128_0xA(mem)
+VCMPSS_128_0x8(mem)
before
7ddf8c850d83549f.5682a3b8d4b76745.cdd370da388f06c9.7f2c531b1d67bfe9
0b5aef24abfed6d5.fed00a52d6caeca3.44e9aca47762e29b.8226fb36fbcd8ee1
@@ -2991,11 +2991,11 @@
after
7ddf8c850d83549f.5682a3b8d4b76745.cdd370da388f06c9.7f2c531b1d67bfe9
0b5aef24abfed6d5.fed00a52d6caeca3.44e9aca47762e29b.8226fb36fbcd8ee1
- 0000000000000000.0000000000000000.44e9aca47762e29b.8226fb36ffffffff
+ 0000000000000000.0000000000000000.44e9aca47762e29b.8226fb3600000000
3b88769dfe4160e6.4c5bcdde2b857f35.bcdaead22207c663.40d783625f1c9a65
b2255c4c1c1d5048
-VCMPSS_128_0xC(reg)
+VCMPSS_128_0xA(reg)
before
55d2e8525cc07626.96d2924eeb23e01a.ac2f20a9b64605c1.764de40dc5ef46b1
872b24e2bb9047ad.98a58ede7f3e2cfa.abc8640652ae595e.a822c0efc24c75d6
@@ -3008,7 +3008,7 @@
a37a0a67d41a0087.1ccbe637d7a002b3.a67396639a49b7b9.3025fb67352a0efd
040c984d43e9dd60.001117470e551c71.f97ab12b2ba45a7d.e821105e3894cf53
aee47bc1ea967203
-VCMPSS_128_0xC(mem)
+VCMPSS_128_0xA(mem)
before
5c38b87c653cb33a.082cc900a58919e5.1e439bf94068375f.0029b1caa04a7f57
d0ea437cc5935023.0a289aed9586f1c2.542df0398ae50eaa.17ce92ad95c762f2
@@ -3018,11 +3018,11 @@
after
5c38b87c653cb33a.082cc900a58919e5.1e439bf94068375f.0029b1caa04a7f57
d0ea437cc5935023.0a289aed9586f1c2.542df0398ae50eaa.17ce92ad95c762f2
- 0000000000000000.0000000000000000.542df0398ae50eaa.17ce92adffffffff
+ 0000000000000000.0000000000000000.542df0398ae50eaa.17ce92ad00000000
769835f7a68289be.77e0082091ca6532.7358fb13d54ee405.e526e8ea7278511e
5471551e91c3d406
-VCMPSS_128_0xC(reg)
+VCMPSS_128_0xA(reg)
before
43e19344a0160660.602c934a5f319dc7.9a349e40d527781e.1631a8850d52596d
0ec29eca3cfc21d7.7f4d30926dc2fd33.2c93c34917121711.3ff21635cdf17ce2
@@ -3035,7 +3035,7 @@
1160731b00026318.afc986baec3e632e.874974a6f3167eb7.cb67c00f31360790
a8060da389b305ce.cd6a13aef9b38be3.08a1abc507c0e8be.975c2200532db7a2
7d9db9f252e24845
-VCMPSS_128_0xC(mem)
+VCMPSS_128_0xA(mem)
before
5af5ffd3486275a4.2f0267ce739b46a7.b3fd525ab02c337e.0ce96611ec9b92d0
0a31728d51b8fbec.029e80085846604c.3e4ebfaa2cb6152d.ed6ba0f64033b899
@@ -3045,11 +3045,11 @@
after
5af5ffd3486275a4.2f0267ce739b46a7.b3fd525ab02c337e.0ce96611ec9b92d0
0a31728d51b8fbec.029e80085846604c.3e4ebfaa2cb6152d.ed6ba0f64033b899
- 0000000000000000.0000000000000000.3e4ebfaa2cb6152d.ed6ba0f6ffffffff
+ 0000000000000000.0000000000000000.3e4ebfaa2cb6152d.ed6ba0f600000000
5486cc410e1801e6.fbe9d859891712b1.b35914e7e42a7a71.ba50823ba4cc6703
5d4b2274ebe468fb
-VCMPSS_128_0xC(reg)
+VCMPSS_128_0xA(reg)
before
4eb131f511ead55b.a535ac12f939f9f0.da300f480d5521c7.56acf4ab592c745f
e9cdab2bb169e9ce.39f9a86d69613a92.7548f5f7fc86fa5b.0decf3c4036f990f
@@ -3057,12 +3057,12 @@
8d5bd168d203f9a0.9aece47241f38651.4e19b64191f1faac.2a6639a167e65368
48387a3e59326169
after
- 0000000000000000.0000000000000000.7548f5f7fc86fa5b.0decf3c4ffffffff
+ 0000000000000000.0000000000000000.7548f5f7fc86fa5b.0decf3c400000000
e9cdab2bb169e9ce.39f9a86d69613a92.7548f5f7fc86fa5b.0decf3c4036f990f
8aed8c8368ede101.ec9d3c3e779a80f9.277c83d0f436d919.b5e68b1cfefea5af
8d5bd168d203f9a0.9aece47241f38651.4e19b64191f1faac.2a6639a167e65368
48387a3e59326169
-VCMPSS_128_0xC(mem)
+VCMPSS_128_0xA(mem)
before
eb28c9dff1ee88dc.4f64754589366d56.1fb31cf3e37509c5.456b8bb56e4498c1
ee01a2704a2787ed.2a5474882c1378d0.57bf61ae782ec582.67befd9728bbf004
@@ -3157,7 +3157,7 @@
5aded321f5e9d319.fa795a662907aa69.ae038ac60802d7fc.c445f26226a6187f
5efd93fcd510e425
-VCMPSS_128_0xD(reg)
+VCMPSS_128_0xC(reg)
before
7e371c361bff130b.ac3c2d75b22e70d3.6c09cf62f062ff19.35f829e1f2dc792e
8040877e9400e2dd.79c71dabab114dfd.d1816976db491720.09f35fa9ca8f3ffb
@@ -3165,12 +3165,12 @@
9aeff8e48c664ff3.f48fa86ec0e2ba54.e85cfe9290e87bdd.082b7dedb2ad2214
ebff5d41fa31b8b9
after
- 0000000000000000.0000000000000000.d1816976db491720.09f35fa900000000
+ 0000000000000000.0000000000000000.d1816976db491720.09f35fa9ffffffff
8040877e9400e2dd.79c71dabab114dfd.d1816976db491720.09f35fa9ca8f3ffb
c064d23fda9e8d46.9d491caffc9f27c4.872e250c87472c28.06c0a709ab26e38e
9aeff8e48c664ff3.f48fa86ec0e2ba54.e85cfe9290e87bdd.082b7dedb2ad2214
ebff5d41fa31b8b9
-VCMPSS_128_0xD(mem)
+VCMPSS_128_0xC(mem)
before
8b0ac3f1a0bd60a8.6a2df5db43e2658f.5a653bd214e9c2d8.5257f07391b940ec
c4162ce9bf5dd70e.8c6ac68f9ea00bc7.aa9753c913bdfa7d.1f6bf81b2645b601
@@ -3184,7 +3184,7 @@
7064f462da0b21ed.360fd1dfa911f6ba.7d3e001d8302edd9.560d36707fbea8eb
783365f67ac49c19
-VCMPSS_128_0xD(reg)
+VCMPSS_128_0xC(reg)
before
6da299f279b631fc.9c3e4bba0d306dbf.7611035293dbb3cd.b74b8d512c891fe8
92a6cfd1191ea440.d149950b2a9a77b7.7841f8328f16ef2b.4ce48ec8f10f72c7
@@ -3192,12 +3192,12 @@
dd9c2deaaa86139e.c526ee44916ab7cb.325d1ceb2f11d87b.f6eadc2d3d476aa8
c4ef22f2fc108801
after
- 0000000000000000.0000000000000000.7841f8328f16ef2b.4ce48ec800000000
+ 0000000000000000.0000000000000000.7841f8328f16ef2b.4ce48ec8ffffffff
92a6cfd1191ea440.d149950b2a9a77b7.7841f8328f16ef2b.4ce48ec8f10f72c7
448b0100f58a3193.ea534c3f4d54fb02.98ebadec3a4fe881.17d57f6eeda0a2a3
dd9c2deaaa86139e.c526ee44916ab7cb.325d1ceb2f11d87b.f6eadc2d3d476aa8
c4ef22f2fc108801
-VCMPSS_128_0xD(mem)
+VCMPSS_128_0xC(mem)
before
5cafcca94707b6da.ba274efad39c8810.3d8ff70513e9653f.a1e2439a0ae9fcc4
9cf8563f3939b061.3776619e0d5aca93.2d5ae16eeddcc289.43c51e6768628f08
@@ -3211,7 +3211,7 @@
8050fab4847bfc23.8293494f21fca67e.e9454ce8204f7852.8cd8dc081b67f535
eca0b8b4a90c4074
-VCMPSS_128_0xD(reg)
+VCMPSS_128_0xC(reg)
before
eef7372d2983ea5f.dcf80d6c15a4c5b7.07f9173435f9ba3e.6dfec5d1afe74928
ed2955df375631a2.5058f0b2bd374aa8.9c54c65cc8cc8abf.d94811120823b885
@@ -3219,12 +3219,12 @@
564c5f9f6f4580de.ec6f1698c3cc7c4f.6617b826e12955b7.ddc20e4d86b96483
2d8ab81fe32b187b
after
- 0000000000000000.0000000000000000.9c54c65cc8cc8abf.d948111200000000
+ 0000000000000000.0000000000000000.9c54c65cc8cc8abf.d9481112ffffffff
ed2955df375631a2.5058f0b2bd374aa8.9c54c65cc8cc8abf.d94811120823b885
47810f3770134ee8.b63b1f7298414921.9def5334780355ae.0bf0aa9846108395
564c5f9f6f4580de.ec6f1698c3cc7c4f.6617b826e12955b7.ddc20e4d86b96483
2d8ab81fe32b187b
-VCMPSS_128_0xD(mem)
+VCMPSS_128_0xC(mem)
before
d51424f87a715aab.78d64385d1790130.ccbe52105ae79f5e.5319f39f9ecac785
b22bcec66697e83d.076bb653313a0e89.33f54ec6789b7079.c03fff0c4b73e7c4
@@ -3238,7 +3238,7 @@
7c34ceeeafb4d238.e0e63a5c5c94bb02.074b769dba030784.8a297b6ee70b1f49
9f86e33c0e11b0e5
-VCMPSS_128_0xE(reg)
+VCMPSS_128_0xD(reg)
before
a4370cad9550dea4.20bd1b2043c3a8fa.e163436e6045d47a.2b029a9516cf46cd
f48af22d1951e72f.690496f69de3b8ce.c11ccb19d2b368a9.46d06f7c6a6421d3
@@ -3251,7 +3251,7 @@
edc9912836a20535.33d5bc5cd91fbfe1.da5bcfc94f6bb33c.3482703dd1d155c1
ea41e60b86ce7460.5bfb073f1283795e.896d49ea72f8f2df.d2e519c3681f9ec3
fac3e6fc4a5cb707
-VCMPSS_128_0xE(mem)
+VCMPSS_128_0xD(mem)
before
89e954d394935db6.473dec40a762725c.bb44f589641ca172.2a9e37e8d7e6613d
5b22dd3461d14cff.5f0b9f3435e839d6.307a0128ecf5f449.1a3994301bc23c03
@@ -3265,7 +3265,7 @@
38013545f68ff409.3549fd0b060014f3.c9e064110c970aee.52e18b4aae712575
53861ef4365dab7a
-VCMPSS_128_0xE(reg)
+VCMPSS_128_0xD(reg)
before
12c510980b668c96.fb3efcccf5282524.a9519fc481a9a0ee.a5a8b334dd794614
ebeb5da1cc190676.71c0ce8de8f78f86.4a5adfedd875e617.068e105b53cc9bad
@@ -3278,7 +3278,7 @@
3a43017b120053c5.76502975eb08ee5e.72b0b8f1a8f12219.c85df7728a9ac8e5
5b1bf9927ca9b030.e5bd886f1968fdd6.7f9f273c8da890a0.c6e3e5659ff188e7
deea5420addd96e0
-VCMPSS_128_0xE(mem)
+VCMPSS_128_0xD(mem)
before
eb3fc28fd068aefb.aabd3f52a3a05863.9cd268668e22791a.cb72263a22266b5a
c9aeaa9f26a08e65.8377d12725708809.765a434867421e57.b476b35703f8f0f1
@@ -3292,7 +3292,7 @@
6709d94ed44591d5.435ec7c1a9cb7060.03f7df7ab3e6d16b.c842649f1bc5e667
ada181a18ad9d09f
-VCMPSS_128_0xE(reg)
+VCMPSS_128_0xD(reg)
before
9d601a73b5705464.e08e18c566ca2d32.e224225de36f9f69.6da397a25f81589a
f5cd2d7f3916ae63.9a5cc18d992c7f8f.7a30b9bfe71c4695.6bf33b64ddb3f772
@@ -3305,7 +3305,7 @@
1233b533b1581947.7040509189754416.69d08752515fa192.d8b248ad4c876c1e
4eddaffabac1d2bd.400641bd53b338f3.0a4e8881bec3ec09.8fae3967c50971cb
6eb18a806646c2a4
-VCMPSS_128_0xE(mem)
+VCMPSS_128_0xD(mem)
before
4f89b7e24b491dd6.06181540efdd1471.e47a11fd13f21753.b9f8b9bac9d462a9
10003c7b8f1e3c8c.9630e571ed391d0e.3a673b3de33d9c62.d11814680f1e401c
@@ -3319,7 +3319,7 @@
9efd40fea670b837.ae26b044b2de6fb5.68e08d6d2a278b3b.b0ec3dd3ba8f232c
2f39036958cea022
-VCMPSS_128_0x11(reg)
+VCMPSS_128_0xE(reg)
before
882ce323a076759b.231cb6c1b0058e83.ee9da4beb1403017.f803ae36d7df6c5d
1613db6e2e13de44.f80a746a8a9c1804.7620f0d4e811a713.aad018ae06d3e4df
@@ -3327,12 +3327,12 @@
45e800698e5e5ad5.fd87ba1f1d003a54.ce7d85807031a787.e098bc6058a089ac
1c2aee70b3922d51
after
- 0000000000000000.0000000000000000.7620f0d4e811a713.aad018ae00000000
+ 0000000000000000.0000000000000000.7620f0d4e811a713.aad018aeffffffff
1613db6e2e13de44.f80a746a8a9c1804.7620f0d4e811a713.aad018ae06d3e4df
3738e6b79e3216c9.f795f7e5504112e6.a2fc92f0f4de1054.581349c3d210afea
45e800698e5e5ad5.fd87ba1f1d003a54.ce7d85807031a787.e098bc6058a089ac
1c2aee70b3922d51
-VCMPSS_128_0x11(mem)
+VCMPSS_128_0xE(mem)
before
e99759e1ffef5805.9d6e25ef9723e614.e7ad39020de64a7a.56efc6eff999a757
23a97b9e59c5c6f3.9c1852b7570ef534.8fd2f07b3dfeff86.969e4fa82b9f4d71
@@ -3342,11 +3342,11 @@
after
e99759e1ffef5805.9d6e25ef9723e614.e7ad39020de64a7a.56efc6eff999a757
23a97b9e59c5c6f3.9c1852b7570ef534.8fd2f07b3dfeff86.969e4fa82b9f4d71
- 0000000000000000.0000000000000000.8fd2f07b3dfeff86.969e4fa800000000
+ 0000000000000000.0000000000000000.8fd2f07b3dfeff86.969e4fa8ffffffff
4fefd1aca60a5a2f.fa04b1ba6b838fc1.8c4ef7e0cbf647fa.aee22eadf7ba7b32
3e0f7bd0cae67a31
-VCMPSS_128_0x11(reg)
+VCMPSS_128_0xE(reg)
before
f5a901eeb5e20f29.f8bbfed6d190f7d4.13dedbcdf7269287.993b3fa461ed52bb
31fcbd74553975c7.7e5cd1fb79c0c865.410bfdd1a81e08dd.d658afaea746f211
@@ -3354,12 +3354,12 @@
a5fdc463222aa8a4.915159eab147f2f5.4f8e155df03e40e7.4b52f844b150df2a
3cc7c8a8ad19a545
after
- 0000000000000000.0000000000000000.410bfdd1a81e08dd.d658afae00000000
+ 0000000000000000.0000000000000000.410bfdd1a81e08dd.d658afaeffffffff
31fcbd74553975c7.7e5cd1fb79c0c865.410bfdd1a81e08dd.d658afaea746f211
4d54aacc4578eab7.bda0c508baa3870c.e1d712331df72e6e.1d71c3eab80ee227
a5fdc463222aa8a4.915159eab147f2f5.4f8e155df03e40e7.4b52f844b150df2a
3cc7c8a8ad19a545
-VCMPSS_128_0x11(mem)
+VCMPSS_128_0xE(mem)
before
cc9bb102c974f0a5.944207a687dbec3a.d63c068b79b7c24e.e87b05bcbd7e79f3
d79c2e3e206d7b76.787170ff1018f127.682d4ad92f00b640.06ecdbbd2143173f
@@ -3369,11 +3369,11 @@
after
cc9bb102c974f0a5.944207a687dbec3a.d63c068b79b7c24e.e87b05bcbd7e79f3
d79c2e3e206d7b76.787170ff1018f127.682d4ad92f00b640.06ecdbbd2143173f
- 0000000000000000.0000000000000000.682d4ad92f00b640.06ecdbbd00000000
+ 0000000000000000.0000000000000000.682d4ad92f00b640.06ecdbbdffffffff
ce50d50df06b4419.8bb8a0a8016332b0.e3518329d34af5a6.44852d511c8e6c46
1c46a1bdeb2b9d59
-VCMPSS_128_0x11(reg)
+VCMPSS_128_0xE(reg)
before
eabaed7ac17e215b.729cf778a287fa43.726960cfa089e4a5.841b7103f964b970
0a2c0bf4391234f9.01449d74ff72e08e.be3236bdd36b49a0.e21ce6397d868f86
@@ -3381,12 +3381,12 @@
b03eb2cf812ffbb8.4fd766d42be22f36.f140109e68911756.45ee51690d136440
0158413c5196da3d
after
- 0000000000000000.0000000000000000.be3236bdd36b49a0.e21ce63900000000
+ 0000000000000000.0000000000000000.be3236bdd36b49a0.e21ce639ffffffff
0a2c0bf4391234f9.01449d74ff72e08e.be3236bdd36b49a0.e21ce6397d868f86
d8eaf997f07414df.561343ef2337b325.c9611cde37959b4c.d91e5db77abc3411
b03eb2cf812ffbb8.4fd766d42be22f36.f140109e68911756.45ee51690d136440
0158413c5196da3d
-VCMPSS_128_0x11(mem)
+VCMPSS_128_0xE(mem)
before
eb28a61a63515434.ee75320989cf2631.c75a810f33800fea.901c0d6900edf86a
de29fdf15e518c52.eedb75afa3e0d1f5.9a69108c551c1070.04420fac9e347c33
@@ -3396,11 +3396,11 @@
after
eb28a61a63515434.ee75320989cf2631.c75a810f33800fea.901c0d6900edf86a
de29fdf15e518c52.eedb75afa3e0d1f5.9a69108c551c1070.04420fac9e347c33
- 0000000000000000.0000000000000000.9a69108c551c1070.04420facffffffff
+ 0000000000000000.0000000000000000.9a69108c551c1070.04420fac00000000
4ef27336804d28b2.a36436f37e879510.c05b7afc5d7f649c.d696144656b55795
ee5e0d75a9062887
-VCMPSS_128_0x12(reg)
+VCMPSS_128_0x11(reg)
before
499efdcc70738adf.8451897de062044c.111eab69783527c0.ccd64ec77b5e309b
44a4ddb64887ba48.3212826c99eb8fbd.b138d3fcf484296a.a20c8585236b0c1b
@@ -3413,7 +3413,7 @@
3bbaaa9fcccff46e.3601d8efc7f58430.defcaa188e00d6bd.20cb9d2074b3b447
8a2d61f398d573ff.6be909f2878aa1d2.f6b72d29e3356b63.20dd12868741e64c
800f5ea17a225c56
-VCMPSS_128_0x12(mem)
+VCMPSS_128_0x11(mem)
before
1a2dff5f6960d390.8d49fd1e492774a4.ac989061f4b8a0ce.54b5579b8fb02408
cc0370ab6f090626.a1597a8c7b51330c.d7d8e9282b8b3d51.534124da2cfc3c59
@@ -3427,7 +3427,7 @@
e406b29d31cb9419.678908e2d05ad9cf.563e036f654d459a.a838986faf397cae
b639379ecd411b0a
-VCMPSS_128_0x12(reg)
+VCMPSS_128_0x11(reg)
before
d5f968494c4b0bc2.02cb7c1b26fb65ce.d24011a12a513984.64fcbbc7a15427b9
63c42adecbe28681.a77805d7a2c5e48f.bd1ceb54765047a9.ca7c35271530970e
@@ -3440,7 +3440,7 @@
bae676c8e392c9f3.b0d9cbbec136cb89.846993654ee23eed.6589ed7adfec53c6
38aa4a7232e80fc6.f7ba4abaa059d7e7.827303424e935cfa.12f160ae1b95150c
ab7e09aee436990d
-VCMPSS_128_0x12(mem)
+VCMPSS_128_0x11(mem)
before
0dfd646657db9df5.375ea14a546f95a3.59e7fcb85a3bc4d6.1585395613f0da7c
143aedc28f90dbef.144c77bbe4b39739.b22b5fa50ce74d81.98ed300d3884f720
@@ -3454,7 +3454,7 @@
821d7a17bf5cf8cc.d9099019bfa4fe3b.ba2c25f9c6cd26be.deea52141483f97e
5818743c0305578e
-VCMPSS_128_0x12(reg)
+VCMPSS_128_0x11(reg)
before
33cb48b8c2ee4271.a05c76e7f08b4e06.7870ccdd4368dbff.208080370720eda7
ca4fc9f2eecbf7d1.d388900c56facf02.654277eaa51a242b.ed1c7b14ae6e41fd
@@ -3467,7 +3467,7 @@
79eff3582227b25b.f76e44710db537ed.fcca8dad8145146a.fdcb937bd9c1deeb
9bf8c354fb8fafba.e8da0f0132c941f3.9a560b907475e869.2c5b4359a427809e
569607982aabe242
-VCMPSS_128_0x12(mem)
+VCMPSS_128_0x11(mem)
before
574a5c25885ac102.8eb73354148e299b.82986caae041ab40.9930eb011937dcd4
0b41bcedd93fd90b.ac7641c309b05daa.a174d75734292eff.56a52b6b0d162c56
@@ -3481,7 +3481,7 @@
fc2a92dac5dca3a6.dd26259efa8fe2ff.deb5c76d3c7b7684.7a90b8d9505cce51
999efeb6d7db9922
-VCMPSS_128_0x16(reg)
+VCMPSS_128_0x12(reg)
before
e676923d1da8b0bb.f0b5ffd898accd91.a8b0f2e22d63ab9f.b3b245ae28fcb3a3
bd6572d8bd4d4ec7.08b369bfcfe22074.0e6a4d45ac8b1e1c.7efdc1a32a1df9e4
@@ -3489,12 +3489,12 @@
78b804fd7d5511ea.113c20fdd8b22fd4.1fa19b180004f15e.63ada35add72977f
34a902f4c8bd6630
after
- 0000000000000000.0000000000000000.0e6a4d45ac8b1e1c.7efdc1a300000000
+ 0000000000000000.0000000000000000.0e6a4d45ac8b1e1c.7efdc1a3ffffffff
bd6572d8bd4d4ec7.08b369bfcfe22074.0e6a4d45ac8b1e1c.7efdc1a32a1df9e4
7ab79af45459b0f3.1ff24b7d868b577c.6da1313314927722.1a62b7395deb0774
78b804fd7d5511ea.113c20fdd8b22fd4.1fa19b180004f15e.63ada35add72977f
34a902f4c8bd6630
-VCMPSS_128_0x16(mem)
+VCMPSS_128_0x12(mem)
before
6b244ef137d830b4.15b4ad60d4cfaf59.b95e672be16364a9.81b685610d6ec97c
e3e8053f48cfb036.acf79288f652c4eb.f52499f4beabb126.f02ced78d65b3b27
@@ -3504,11 +3504,11 @@
after
6b244ef137d830b4.15b4ad60d4cfaf59.b95e672be16364a9.81b685610d6ec97c
e3e8053f48cfb036.acf79288f652c4eb.f52499f4beabb126.f02ced78d65b3b27
- 0000000000000000.0000000000000000.f52499f4beabb126.f02ced7800000000
+ 0000000000000000.0000000000000000.f52499f4beabb126.f02ced78ffffffff
057ea27bbe83c5e6.3781fdd60aa4452b.95cbb202622d87cb.606a24c50eefdbd6
1acaebd2b5ae8232
-VCMPSS_128_0x16(reg)
+VCMPSS_128_0x12(reg)
before
51bb205d8820b3cc.68e880415c57d26d.e4607cd5338c2a31.b24491216180864a
5f89bdd524d2a94f.7bcbb7070b3885a1.fbb6264997ac760a.d1924d89a3998f22
@@ -3516,12 +3516,12 @@
73ec25342423d7c2.253026440d4ed0c6.d6f7eb407ec935e6.89d848e9634eaa8c
da6880b718033476
after
- 0000000000000000.0000000000000000.fbb6264997ac760a.d1924d8900000000
+ 0000000000000000.0000000000000000.fbb6264997ac760a.d1924d89ffffffff
5f89bdd524d2a94f.7bcbb7070b3885a1.fbb6264997ac760a.d1924d89a3998f22
a180c0a3244fa168.1cf5c6b9e7319bb1.d7cff69ed2926562.d07f602846855c7f
73ec25342423d7c2.253026440d4ed0c6.d6f7eb407ec935e6.89d848e9634eaa8c
da6880b718033476
-VCMPSS_128_0x16(mem)
+VCMPSS_128_0x12(mem)
before
9dfd848081adb868.3118e6f4c1db870a.74495492989cdf0f.5379fe9b3ade2042
b061d02fb95af08f.3752014f9702ecec.e30ccd90a52685b6.a9a32c1c9f5c6321
@@ -3531,11 +3531,11 @@
after
9dfd848081adb868.3118e6f4c1db870a.74495492989cdf0f.5379fe9b3ade2042
b061d02fb95af08f.3752014f9702ecec.e30ccd90a52685b6.a9a32c1c9f5c6321
- 0000000000000000.0000000000000000.e30ccd90a52685b6.a9a32c1c00000000
+ 0000000000000000.0000000000000000.e30ccd90a52685b6.a9a32c1cffffffff
31ca31f007ea6e2a.8b1b32885bcec72c.95c08d4eb32086d0.541acb3cdac4e01b
610033b3e7c6928d
-VCMPSS_128_0x16(reg)
+VCMPSS_128_0x12(reg)
before
b7bda7000f618b32.59663ed955e62cf7.9143403c828bb6e2.8f48cde4eca7589b
b39d218eed2209b8.3f018359e3148fa8.4fa8973c52e84ae2.1aab46db179ab174
@@ -3543,12 +3543,12 @@
0ef41c1d3d437f11.b869a7ca2d383368.625812cd5aaf536f.542dd899b0f6e703
bae5e83857773d10
after
- 0000000000000000.0000000000000000.4fa8973c52e84ae2.1aab46db00000000
+ 0000000000000000.0000000000000000.4fa8973c52e84ae2.1aab46dbffffffff
b39d218eed2209b8.3f018359e3148fa8.4fa8973c52e84ae2.1aab46db179ab174
b2eb9fc91e9346c8.c0697d5acd81536a.219534f36570c0d8.12b3761e4f064d88
0ef41c1d3d437f11.b869a7ca2d383368.625812cd5aaf536f.542dd899b0f6e703
bae5e83857773d10
-VCMPSS_128_0x16(mem)
+VCMPSS_128_0x12(mem)
before
21a723e8609408dc.240595f6e6bbef3d.04cc7c932245eccf.703b2d36cb314054
653e0393e6590792.516804c0b68ad4f9.7e5f7aa3c5b53acb.a68b829a5483c332
@@ -3558,11 +3558,11 @@
after
21a723e8609408dc.240595f6e6bbef3d.04cc7c932245eccf.703b2d36cb314054
653e0393e6590792.516804c0b68ad4f9.7e5f7aa3c5b53acb.a68b829a5483c332
- 0000000000000000.0000000000000000.7e5f7aa3c5b53acb.a68b829affffffff
+ 0000000000000000.0000000000000000.7e5f7aa3c5b53acb.a68b829a00000000
f41fa78eda0c8d6f.5b56b9d83a56e7cf.6f45df458beb8330.f9a2c60320c57a8b
cf00aee19acd265f
-VCMPSS_128_0x1E(reg)
+VCMPSS_128_0x16(reg)
before
3dfcbf699dd458db.f70063b681138bed.f17af6fd256c8f41.9e303eafe6c9f7f1
9ee0f609c5664cae.47e7b48914f1ad06.0d201ac4a7079af3.6c7ab50f5f3af0f7
@@ -3575,7 +3575,7 @@
50f94e2cad103d82.c0a018f5b2b4ade5.0b9522975bb44591.b5f1c051144a296e
ae93c33ef25e6803.3ef70ae5756848b7.482509e4defeccc6.555fdb6221035f81
2891832ca1734e5d
-VCMPSS_128_0x1E(mem)
+VCMPSS_128_0x16(mem)
before
0a53339db0a5b22d.13fa51aa2fda09de.9db7064579173aa8.1e1ccb16cb716a3f
d771679f6ba6461e.dd7af4de00125bbf.b9ae8901dbcf3ee3.eac66499bf9a5ca7
@@ -3589,7 +3589,7 @@
a1f04c0b5442f112.0bf46a4cd0e40541.986c103e26886fe9.d4620c422a3c2bf7
a9ed1340d9cc8136
-VCMPSS_128_0x1E(reg)
+VCMPSS_128_0x16(reg)
before
e55ae13fff421a15.57e9f44cb9f67f6d.2986355d0796d53a.13cc0d9649a1130c
e3f672ac372a323f.686e11cf3aa82e98.1a6106e5433346ea.ba9281fa38f2bb2a
@@ -3602,7 +3602,7 @@
ff0dc3f11d0f0761.af4b1e80f264bac0.3cd1d7511e4895fa.6b89e6571188216e
95eacf7c4e7dd326.0a4c984bfe37de11.e922a60b3760fe18.017fba98f06e0104
573e78a8f0b1191a
-VCMPSS_128_0x1E(mem)
+VCMPSS_128_0x16(mem)
before
4b939c752d5b23da.01db92b86600d33c.543df91c792c58b6.7e9f6e812807bcf0
b84aa2eac47adc70.9e2a08100025424c.68e9bfe08050e2db.57962b1e8dca0d2e
@@ -3616,7 +3616,7 @@
6c0d467c6e464ad1.e015fec92b836011.63a667eda0511859.461d757c25d15289
1346f9168f2ebf00
-VCMPSS_128_0x1E(reg)
+VCMPSS_128_0x16(reg)
before
94186387ded6ae8b.6bb2db71ba0a77f3.3b497601f4d4871c.004e420ef1483c08
25dfaf3cae565bd9.54e842bfcf72429c.390c9106b0f60dd3.d9e271d23d9d61e8
@@ -3629,7 +3629,7 @@
22e6d79f9a380294.017cf850c98b69f8.34aa4b45fb7630e2.c82e6f24a15c4225
e77bd91d3e0ade68.4f3a7712c560a632.8a6ea1286fdf29f4.aafdbbf039919dea
5c1dce2220492c64
-VCMPSS_128_0x1E(mem)
+VCMPSS_128_0x16(mem)
before
b85825a6728fabbe.d0e8b02337582c03.1bee3defdefdb676.96a58e1cabbd37b6
9b7b3d684c70d825.397a581b21ad280e.3f64c5d5316f54f2.b39b0e8e489d94d3
@@ -3643,7 +3643,7 @@
67a99d57073027c9.fb3c0b96359c182b.03c50c68f2002e3c.94f4b7981b902ed1
0fefd90988bbe20a
-VMOVDDUP_XMMorMEM64_to_XMM(reg)
+VCMPSS_128_0x1E(reg)
before
0dd87ea7c818d74d.074cde5c1f27c25e.0c050ff0984f8593.5a48c3ee9937e063
e8fda2de76334649.9e06ce4e2fe9f9b0.0d22d4ed5b398f1d.7abd2c2cea721271
@@ -3651,12 +3651,12 @@
a82658c78dcf8917.22f3b0aea5fc2e38.4e8c928073e36e46.86ad0581f825e1f0
29bf6d6fedb6f7b9
after
- 0000000000000000.0000000000000000.7abd2c2cea721271.7abd2c2cea721271
+ 0000000000000000.0000000000000000.0d22d4ed5b398f1d.7abd2c2c00000000
e8fda2de76334649.9e06ce4e2fe9f9b0.0d22d4ed5b398f1d.7abd2c2cea721271
fda8411a2e966ea8.09a5eb1b528189ea.5ae156f91be77475.3ff0c40f00be7e91
a82658c78dcf8917.22f3b0aea5fc2e38.4e8c928073e36e46.86ad0581f825e1f0
29bf6d6fedb6f7b9
-VMOVDDUP_XMMorMEM64_to_XMM(mem)
+VCMPSS_128_0x1E(mem)
before
05f477c6fb7a7b19.46c3e1522f6ad441.c6bd9af34365a3c7.477082ee00bcb93d
f6169f703f7f2a3c.31cada25aff18bd3.d1cf23d649c8a5c3.a0d924af5dfb9306
@@ -3666,11 +3666,11 @@
after
05f477c6fb7a7b19.46c3e1522f6ad441.c6bd9af34365a3c7.477082ee00bcb93d
f6169f703f7f2a3c.31cada25aff18bd3.d1cf23d649c8a5c3.a0d924af5dfb9306
- d8f2615bd4d0c04d.c6893eada9f3ea78.1ff4c943d231f058.b4127330272e364c
- 0000000000000000.0000000000000000.477082ee00bcb93d.477082ee00bcb93d
+ 0000000000000000.0000000000000000.d1cf23d649c8a5c3.a0d924afffffffff
+ 87543a71d77af879.614a0a57baf92cdd.8cfa0726faad40b1.e1696cdbf9e0dfbc
8228091e709ec901
-VMOVDDUP_XMMorMEM64_to_XMM(reg)
+VCMPSS_128_0x1E(reg)
before
f29c486427f331c8.df08a4a0638890eb.5e5b388e7d918eae.f4ab596bde4850fa
8f112418ba6b53bd.bcda1dd3950641d0.1906c6bd8f464b96.33d53bfe9a0cdd60
@@ -3678,12 +3678,12 @@
bc2ea37fe7f6b5de.75072af55984e5a2.395cf0b80e38ca5d.a6bfa1bf07455e33
92171cc5f1d0c9f6
after
- 0000000000000000.0000000000000000.33d53bfe9a0cdd60.33d53bfe9a0cdd60
+ 0000000000000000.0000000000000000.1906c6bd8f464b96.33d53bfe00000000
8f112418ba6b53bd.bcda1dd3950641d0.1906c6bd8f464b96.33d53bfe9a0cdd60
b3d399a8c6936b8b.fa9521f68901ca54.ee98af528ba4a142.25422acc4907a30f
bc2ea37fe7f6b5de.75072af55984e5a2.395cf0b80e38ca5d.a6bfa1bf07455e33
92171cc5f1d0c9f6
-VMOVDDUP_XMMorMEM64_to_XMM(mem)
+VCMPSS_128_0x1E(mem)
before
c51817c923b6a187.046d3f09b7206c64.08fab6bc239b50e6.56a0835bb38d0394
1a8c0fb7b802a210.e9de68b2d59dcdc6.913b40380353c44e.a1af66a7172f8793
@@ -3693,11 +3693,11 @@
after
c51817c923b6a187.046d3f09b7206c64.08fab6bc239b50e6.56a0835bb38d0394
1a8c0fb7b802a210.e9de68b2d59dcdc6.913b40380353c44e.a1af66a7172f8793
- 6f417e7accc187be.c5cb1ae7dbfa13b3.eb96445314b70004.76d49408d5ab9305
- 0000000000000000.0000000000000000.56a0835bb38d0394.56a0835bb38d0394
+ 0000000000000000.0000000000000000.913b40380353c44e.a1af66a7ffffffff
+ 9f01e2007cfe0dbc.f681511265c37bd5.f2d73efa73d3be34.315c09eb8a8c6396
2e93c1bad15f33f4
-VMOVDDUP_XMMorMEM64_to_XMM(reg)
+VCMPSS_128_0x1E(reg)
before
c9c5b9e346af3ec9.8699b635e3c6f037.d64c09a1108241d9.82c9aa1a3bb4bb0b
5e3eebd08608c1c1.ffd577031e23eb5b.c2783ffe77c5a16a.763a059e8865b3b5
@@ -3705,12 +3705,12 @@
e533f3abd6061fcd.1b68ac1d7ed21d4c.2f2212d6eb051ee5.ffc4758124688230
4a7683b9aad2d25a
after
- 0000000000000000.0000000000000000.763a059e8865b3b5.763a059e8865b3b5
+ 0000000000000000.0000000000000000.c2783ffe77c5a16a.763a059e00000000
5e3eebd08608c1c1.ffd577031e23eb5b.c2783ffe77c5a16a.763a059e8865b3b5
484955ef2df6f889.e8809f574823bc53.1650ee973718d735.acf4ca7177f2615d
e533f3abd6061fcd.1b68ac1d7ed21d4c.2f2212d6eb051ee5.ffc4758124688230
4a7683b9aad2d25a
-VMOVDDUP_XMMorMEM64_to_XMM(mem)
+VCMPSS_128_0x1E(mem)
before
6bd66e05253c0d06.9049bf701dc37139.76571942db3aca71.6738a729301ab327
3cafb451b2b3ee61.a4d5b7aa9fba2b77.d41b62b07c6a81ef.1bdfaafba1e3d1a7
@@ -3720,11 +3720,11 @@
after
6bd66e05253c0d06.9049bf701dc37139.76571942db3aca71.6738a729301ab327
3cafb451b2b3ee61.a4d5b7aa9fba2b77.d41b62b07c6a81ef.1bdfaafba1e3d1a7
- 9bcfd0896c423296.7f24d6c5f7768936.107e04557c6bfcf1.a76316b8dbeab610
- 0000000000000000.0000000000000000.6738a729301ab327.6738a729301ab327
+ 0000000000000000.0000000000000000.d41b62b07c6a81ef.1bdfaafb00000000
+ 62003f9a70f695d2.7c81182dc283c620.084d791cf74bf8a4.6710e7cc79be9c0f
b73119a317e8c04f
-VMOVD_IREGorMEM32_to_XMM(reg)
+VMOVDDUP_XMMorMEM64_to_XMM(reg)
before
f414a8aa52f65d7d.6f0f7b6edadad240.f63a794e9b6e1fe2.96533ff10b153034
7803914bc673b045.9cc802f3c4faa60d.4b99f6941fc2d027.975ed1c0d1d562cc
@@ -3732,12 +3732,12 @@
c8395e0fc6eb6851.ca68debc8e1f0373.f27d304096d529ec.63af4afce8699ec7
e68d294171552281
after
- 0000000000000000.0000000000000000.0000000000000000.0000000071552281
+ 0000000000000000.0000000000000000.975ed1c0d1d562cc.975ed1c0d1d562cc
7803914bc673b045.9cc802f3c4faa60d.4b99f6941fc2d027.975ed1c0d1d562cc
a04ccff40eebf552.c6f74f134d62cd65.d5ec896ce90b159c.e838ac7567984899
c8395e0fc6eb6851.ca68debc8e1f0373.f27d304096d529ec.63af4afce8699ec7
e68d294171552281
-VMOVD_IREGorMEM32_to_XMM(mem)
+VMOVDDUP_XMMorMEM64_to_XMM(mem)
before
4b9fc4301e678ef3.4b163a0a8bfe44ed.82e72bd9a53c0364.fc99e77ec1ad49c5
6fb197b60aab9f4b.87316050f8b1c6d3.cb3fb356aec68a64.518ba891071fb1d0
@@ -3748,10 +3748,10 @@
4b9fc4301e678ef3.4b163a0a8bfe44ed.82e72bd9a53c0364.fc99e77ec1ad49c5
6fb197b60aab9f4b.87316050f8b1c6d3.cb3fb356aec68a64.518ba891071fb1d0
2e8e1fbd512d11b2.d7d5ca4caa8e2aaf.823df11ec4c7549e.4ba171e403b59cbb
- 0000000000000000.0000000000000000.0000000000000000.00000000c1ad49c5
+ 0000000000000000.0000000000000000.fc99e77ec1ad49c5.fc99e77ec1ad49c5
a26507ff8f83eee1
-VMOVD_IREGorMEM32_to_XMM(reg)
+VMOVDDUP_XMMorMEM64_to_XMM(reg)
before
b6abce9e56d1cd73.eedd3a03621d0664.23e65f1b4bfc87f7.a55b7f458964a071
e0448b2f44751f94.a6e6c61864a30205.d7ed82c673a4f8bb.ca13c77a6f179963
@@ -3759,12 +3759,12 @@
e79fdcd204ed0f37.13b847c6e605a7b6.266f62bb7b928be0.87d0c7c5d182e133
d76d76b28452a768
after
- 0000000000000000.0000000000000000.0000000000000000.000000008452a768
+ 0000000000000000.0000000000000000.ca13c77a6f179963.ca13c77a6f179963
e0448b2f44751f94.a6e6c61864a30205.d7ed82c673a4f8bb.ca13c77a6f179963
7c7c3c1cf5fb21f2.69ebf66031974e68.0eabd9d74ea73a25.cca1b6abd372c640
e79fdcd204ed0f37.13b847c6e605a7b6.266f62bb7b928be0.87d0c7c5d182e133
d76d76b28452a768
-VMOVD_IREGorMEM32_to_XMM(mem)
+VMOVDDUP_XMMorMEM64_to_XMM(mem)
before
98443f6008eed40d.7bf867be0dd9240f.801934369efac91e.7a8418df93ef259a
a6219fb97a63244b.95d5d94aad4b9e27.8cd9399c758170ca.6535f8ad344d45fc
@@ -3775,10 +3775,10 @@
98443f6008eed40d.7bf867be0dd9240f.801934369efac91e.7a8418df93ef259a
a6219fb97a63244b.95d5d94aad4b9e27.8cd9399c758170ca.6535f8ad344d45fc
ddd011abf5bc5251.91802fe47fceb72b.13c6d2e589a657e6.45d0fc93fa3526b5
- 0000000000000000.0000000000000000.0000000000000000.0000000093ef259a
+ 0000000000000000.0000000000000000.7a8418df93ef259a.7a8418df93ef259a
50ef655363d81fd6
-VMOVD_IREGorMEM32_to_XMM(reg)
+VMOVDDUP_XMMorMEM64_to_XMM(reg)
before
340cc1063eabad97.36d31b07784a3b5f.9f7374ee2b37b8a5.0252b1cbd1fbd821
7b413280ad39ee5e.10c0ab49b8986dc0.69535b373d361873.228aef423f44ea98
@@ -3786,12 +3786,12 @@
a6274579b9b774ac.6b6a4f92c07dfa12.4f5b9f6de483c38f.ffda73d1384b5b12
7389b1c2fc23336e
after
- 0000000000000000.0000000000000000.0000000000000000.00000000fc23336e
+ 0000000000000000.0000000000000000.228aef423f44ea98.228aef423f44ea98
7b413280ad39ee5e.10c0ab49b8986dc0.69535b373d361873.228aef423f44ea98
83dcb52d4d0e1cd6.83ae3ed371fb6e98.8531163df17607dd.2d1eb14b585a2c2f
a6274579b9b774ac.6b6a4f92c07dfa12.4f5b9f6de483c38f.ffda73d1384b5b12
7389b1c2fc23336e
-VMOVD_IREGorMEM32_to_XMM(mem)
+VMOVDDUP_XMMorMEM64_to_XMM(mem)
before
67f8e809bfec6f6f.4270ded18ebf318b.a4c05a70c02ccc5b.231bf431b1ea8634
b6f393929eb4cc40.b1017c9f68b29120.097cdb5b8e14a29f.5dbe10f6f5368d78
@@ -3802,10 +3802,10 @@
67f8e809bfec6f6f.4270ded18ebf318b.a4c05a70c02ccc5b.231bf431b1ea8634
b6f393929eb4cc40.b1017c9f68b29120.097cdb5b8e14a29f.5dbe10f6f5368d78
3c462e49b487060e.50271b50e11dce17.78694f3d453f3609.5990f0284bf41409
- 0000000000000000.0000000000000000.0000000000000000.00000000b1ea8634
+ 0000000000000000.0000000000000000.231bf431b1ea8634.231bf431b1ea8634
06f1e8859ef390bc
-VMOVQ_XMM_MEM64(reg)
+VMOVD_IREGorMEM32_to_XMM(reg)
before
7017f986d44cfe37.5c2425f2f77a0050.8f614e0d2688d1d9.e00afd9adf948a01
0c9dbda58c47dcae.ae4779bb5cb4381c.e60dd9ef2aa10ffd.92552fedfbd5c2e7
@@ -3813,12 +3813,12 @@
49f44feaf351d63e.25ef3dd438e2cae5.d001bfdafd543124.3cddb6775abffa63
edb10386d6817350
after
- 7017f986d44cfe37.5c2425f2f77a0050.8f614e0d2688d1d9.e00afd9adf948a01
+ 0000000000000000.0000000000000000.0000000000000000.00000000d6817350
0c9dbda58c47dcae.ae4779bb5cb4381c.e60dd9ef2aa10ffd.92552fedfbd5c2e7
36cd314d626f65cd.a8f1ad6268283c94.dd7f55653d611b32.bd0243e8708aa9a4
49f44feaf351d63e.25ef3dd438e2cae5.d001bfdafd543124.3cddb6775abffa63
edb10386d6817350
-VMOVQ_XMM_MEM64(mem)
+VMOVD_IREGorMEM32_to_XMM(mem)
before
aa4ca602ffdbce99.a35e15e8da786ab0.000da6fce7ee9c3a.1ce012ba06078c80
51781bd5f2d9c768.9e577eb3b4705fcd.171762c592596fc1.1b684a71f30569f2
@@ -3826,13 +3826,13 @@
c9b66c34a4f38749.ec252a61af0457ba.651ec8ef4979070e.a5a25915eb1398c7
e8ec29d92d3b6281
after
- aa4ca602ffdbce99.a35e15e8da786ab0.000da6fce7ee9c3a.1b684a71f30569f2
+ aa4ca602ffdbce99.a35e15e8da786ab0.000da6fce7ee9c3a.1ce012ba06078c80
51781bd5f2d9c768.9e577eb3b4705fcd.171762c592596fc1.1b684a71f30569f2
bc02deecca881ce9.982a87b71cc6ef42.44d9ef1d542efea3.2ae4636b61da0426
- c9b66c34a4f38749.ec252a61af0457ba.651ec8ef4979070e.a5a25915eb1398c7
+ 0000000000000000.0000000000000000.0000000000000000.0000000006078c80
e8ec29d92d3b6281
-VMOVQ_XMM_MEM64(reg)
+VMOVD_IREGorMEM32_to_XMM(reg)
before
4f0fce24c4df9e01.526040979b27c5b4.f592651b08b9d2e2.54b46a278e47442e
365744634c8988f3.34ccd603cc2f9155.11be3353c46e9e65.ee654fb13fa3712f
@@ -3840,12 +3840,12 @@
f48694699c2554dc.741939a34aebc7eb.ed8379e9d30e132f.944bd76c52378f82
57187174ed86f72c
after
- 4f0fce24c4df9e01.526040979b27c5b4.f592651b08b9d2e2.54b46a278e47442e
+ 0000000000000000.0000000000000000.0000000000000000.00000000ed86f72c
365744634c8988f3.34ccd603cc2f9155.11be3353c46e9e65.ee654fb13fa3712f
f910870160c85b03.4cc6ab635217a959.9af590737eb1f5f0.10fef57a779a4c3c
f48694699c2554dc.741939a34aebc7eb.ed8379e9d30e132f.944bd76c52378f82
57187174ed86f72c
-VMOVQ_XMM_MEM64(mem)
+VMOVD_IREGorMEM32_to_XMM(mem)
before
35313f7f63934067.830565099d2eaf2a.8992feafcfb8a738.67b3e8205e0f36cd
0b61be77d16b255e.01d8f84cfe6ea89a.67fd7573fd89076c.62d3db84bc429877
@@ -3853,13 +3853,13 @@
0a3abce303aab633.3fad526b52c4628f.efd96ad3c7693237.4f0e3a835e6c0c9e
f8c29ff6db7b9572
after
- 35313f7f63934067.830565099d2eaf2a.8992feafcfb8a738.62d3db84bc429877
+ 35313f7f63934067.830565099d2eaf2a.8992feafcfb8a738.67b3e8205e0f36cd
0b61be77d16b255e.01d8f84cfe6ea89a.67fd7573fd89076c.62d3db84bc429877
b376694a5219633e.cc4c499e5c717ad8.eb261adbf16ba1b2.3c2d4d81883376d9
- 0a3abce303aab633.3fad526b52c4628f.efd96ad3c7693237.4f0e3a835e6c0c9e
+ 0000000000000000.0000000000000000.0000000000000000.000000005e0f36cd
f8c29ff6db7b9572
-VMOVQ_XMM_MEM64(reg)
+VMOVD_IREGorMEM32_to_XMM(reg)
before
939577469bec4e03.ec7a332eff29d968.b64711207df29c6c.50e2df479a8f7626
7cd3bee0394973fa.35024b1763a2890a.8c6680277888631b.ea0cf72486ea28ac
@@ -3867,12 +3867,12 @@
a9bf899e80fdefd1.6c194b73d1b48043.ca6264df50198b9d.39f6fec51c6cc92c
a64ee462fdab2f7e
after
- 939577469bec4e03.ec7a332eff29d968.b64711207df29c6c.50e2df479a8f7626
+ 0000000000000000.0000000000000000.0000000000000000.00000000fdab2f7e
7cd3bee0394973fa.35024b1763a2890a.8c6680277888631b.ea0cf72486ea28ac
10c8702e51203f06.c19d7f8a4a228244.1f569dede011f447.99242d54a88405f5
a9bf899e80fdefd1.6c194b73d1b48043.ca6264df50198b9d.39f6fec51c6cc92c
a64ee462fdab2f7e
-VMOVQ_XMM_MEM64(mem)
+VMOVD_IREGorMEM32_to_XMM(mem)
before
bcf85d16674ff416.a405069a616abf08.12402bbe13643e33.e8d7cf68642d64c8
57c0e4cf7764d421.5de6e29091f5eb56.8fe09b582c3f793f.d702dcf3b9d8ba75
@@ -3880,13 +3880,13 @@
8cd90dfdf70dd43f.79a9a7174c9445e9.7eb61d2556a3565d.94a5c9c49523d004
1bb5a1e153dc073d
after
- bcf85d16674ff416.a405069a616abf08.12402bbe13643e33.d702dcf3b9d8ba75
+ bcf85d16674ff416.a405069a616abf08.12402bbe13643e33.e8d7cf68642d64c8
57c0e4cf7764d421.5de6e29091f5eb56.8fe09b582c3f793f.d702dcf3b9d8ba75
5371f57848f48bcb.30ae19ebab2aae68.bfc3182b3950ed94.f12d86eeeba6ca4f
- 8cd90dfdf70dd43f.79a9a7174c9445e9.7eb61d2556a3565d.94a5c9c49523d004
+ 0000000000000000.0000000000000000.0000000000000000.00000000642d64c8
1bb5a1e153dc073d
-VMOVDQA_GtoE_256(reg)
+VMOVQ_XMM_MEM64(reg)
before
e1ab0bb1c25daca8.dec2a64b9fba6daa.942388800fbfec86.a88426309e446fc7
43d102a07e30fbf1.24f93e4c5c080f37.dd67b9929137dfea.19fbaf3a2d40f5fd
@@ -3896,10 +3896,10 @@
after
e1ab0bb1c25daca8.dec2a64b9fba6daa.942388800fbfec86.a88426309e446fc7
43d102a07e30fbf1.24f93e4c5c080f37.dd67b9929137dfea.19fbaf3a2d40f5fd
+ 9e74821a22e330c4.3c4a50ed4c027913.b0c235b96d8959c3.ace6342e20a3a42d
4ce0878c4a0186cc.0181591b88b4656a.6981f8613f4097ba.3f1032f892773780
- 4ce0878c4a0186cc.0181591b88b4656a.6981f8613f4097ba.3f1032f892773780
ad462484a0ca6b25
-VMOVDQA_GtoE_256(mem)
+VMOVQ_XMM_MEM64(mem)
before
d25486be66a8fc46.ab610d6093173ab6.4f69d3c02e2b9067.64eefef7a5e9d47e
8906d492fe1ca50f.1543110498b0882d.01d03cca5a72b637.fc5544e5380e4eb9
@@ -3907,13 +3907,13 @@
228526b91af6334c.7d598068489ce074.0646c8b9b1a1e1fe.78467d7e5b02e445
136668ff22e878ef
after
- b0288bec873224ad.e7d28ee2f658abde.f5800f2427969205.8f04c599963e3f17
+ d25486be66a8fc46.ab610d6093173ab6.4f69d3c02e2b9067.fc5544e5380e4eb9
8906d492fe1ca50f.1543110498b0882d.01d03cca5a72b637.fc5544e5380e4eb9
b0288bec873224ad.e7d28ee2f658abde.f5800f2427969205.8f04c599963e3f17
228526b91af6334c.7d598068489ce074.0646c8b9b1a1e1fe.78467d7e5b02e445
136668ff22e878ef
-VMOVDQA_GtoE_256(reg)
+VMOVQ_XMM_MEM64(reg)
before
bbb1828a877b39c0.baea21e3d5758e17.3425e3012b07639c.0feee47715a15f4d
ce73c88a27486165.5624f858d4baf33b.6683b4193a267002.ee44dd496fa2c81f
@@ -3923,10 +3923,10 @@
after
bbb1828a877b39c0.baea21e3d5758e17.3425e3012b07639c.0feee47715a15f4d
ce73c88a27486165.5624f858d4baf33b.6683b4193a267002.ee44dd496fa2c81f
+ a7f8356b9dda2c8a.d0fd270232d11ce4.70bdee1c11834251.7d13311bdaaed7a0
a18cc59986bdd8da.06422bcf0cc7c63d.ae1f8d764eac1636.9a295bda72d449fb
- a18cc59986bdd8da.06422bcf0cc7c63d.ae1f8d764eac1636.9a295bda72d449fb
1f50d770541dda5d
-VMOVDQA_GtoE_256(mem)
+VMOVQ_XMM_MEM64(mem)
before
ea5522ca9b9745f2.1a7a74817d7d9f02.d2be7faa7da7ac72.7cf78d938a2d285c
d504b7d5644d47e5.6c103f8d1fa7bead.123f9f7fa17e8cb1.3690eadf6390b370
@@ -3934,13 +3934,13 @@
7f90afaaea9e0097.0f5f16c5d267f23e.597c34c7753e24f7.de33adb55b322811
84d60a17b18888f6
after
- be29117bca4b9c62.f598212a07c77088.a08f073a95562024.3835a1c77564f51e
+ ea5522ca9b9745f2.1a7a74817d7d9f02.d2be7faa7da7ac72.3690eadf6390b370
d504b7d5644d47e5.6c103f8d1fa7bead.123f9f7fa17e8cb1.3690eadf6390b370
be29117bca4b9c62.f598212a07c77088.a08f073a95562024.3835a1c77564f51e
7f90afaaea9e0097.0f5f16c5d267f23e.597c34c7753e24f7.de33adb55b322811
84d60a17b18888f6
-VMOVDQA_GtoE_256(reg)
+VMOVQ_XMM_MEM64(reg)
before
866ab45814f15378.f5050a4ddf512eae.18b11ac91b15807c.1ad0a1125c3f5657
403ba8e31ff9c344.fc53a050c571e3d3.6ada29a17f5c56ee.bd58ca0766677070
@@ -3950,10 +3950,10 @@
after
866ab45814f15378.f5050a4ddf512eae.18b11ac91b15807c.1ad0a1125c3f5657
403ba8e31ff9c344.fc53a050c571e3d3.6ada29a17f5c56ee.bd58ca0766677070
+ 0e94e1266f2d1506.7147eb9fba09db33.632640bb99c9b03f.1fe02b93b0c12f6d
4cc35b8c9f188469.2ead6926d725d1fa.5de05a8206e7c91c.1c3340a0555a4f7b
- 4cc35b8c9f188469.2ead6926d725d1fa.5de05a8206e7c91c.1c3340a0555a4f7b
911f861c723c8bc5
-VMOVDQA_GtoE_256(mem)
+VMOVQ_XMM_MEM64(mem)
before
586e78f22276a078.551212814c474d1a.105196d13ad18353.b55673626142de31
4eed920d82114ac0.87ce02711245acc4.f3ffec8cff1aaa6b.c8d287c746672a29
@@ -3961,13 +3961,13 @@
37ab2fc7c09f4bbd.d3bd7ff355de1bb5.2ca808e31cb14e86.8a0f91d1213c5b74
f2677f4d4d05b61e
after
- 4f68505bad1b44c8.3d4328c98b9edd14.b383e943410c056d.f0a1931d52e1ebb0
+ 586e78f22276a078.551212814c474d1a.105196d13ad18353.c8d287c746672a29
4eed920d82114ac0.87ce02711245acc4.f3ffec8cff1aaa6b.c8d287c746672a29
4f68505bad1b44c8.3d4328c98b9edd14.b383e943410c056d.f0a1931d52e1ebb0
37ab2fc7c09f4bbd.d3bd7ff355de1bb5.2ca808e31cb14e86.8a0f91d1213c5b74
f2677f4d4d05b61e
-VMOVDQA_GtoE_128(reg)
+VMOVDQA_GtoE_256(reg)
before
84f758fe75c73a5d.e282a93dd6aa1bca.a487035c0c92a354.3b3bc556ad1742e2
9d091951330f21db.2cb83caa0c47701c.0eefb0714b45b19d.ba089c8a0f499dac
@@ -3977,10 +3977,10 @@
after
84f758fe75c73a5d.e282a93dd6aa1bca.a487035c0c92a354.3b3bc556ad1742e2
9d091951330f21db.2cb83caa0c47701c.0eefb0714b45b19d.ba089c8a0f499dac
- 0000000000000000.0000000000000000.19c4764bd3da4edb.7b8089e1b943773c
cfe73f89e25d0b46.0d759b144568973e.19c4764bd3da4edb.7b8089e1b943773c
+ cfe73f89e25d0b46.0d759b144568973e.19c4764bd3da4edb.7b8089e1b943773c
75c397dd37226e5a
-VMOVDQA_GtoE_128(mem)
+VMOVDQA_GtoE_256(mem)
before
4f6fb049f8febc97.a14a9d470b7d858a.5c935feb8104e266.73ca87e953d35529
e7524e1115e21c1e.695fd2563b5253bf.ba412a674d62a282.d49db1e2ccfcd2d0
@@ -3988,13 +3988,13 @@
bee80e66d9f305bc.4bd3b3171e4bdaa6.137dcb0202966f49.1fda4195180b1cdb
c1db9f27220a6297
after
- 4f6fb049f8febc97.a14a9d470b7d858a.034b7a76c48f92bf.9a89f0a2dae0007d
+ 1836ef22acda4b1c.8374db220d68b18f.034b7a76c48f92bf.9a89f0a2dae0007d
e7524e1115e21c1e.695fd2563b5253bf.ba412a674d62a282.d49db1e2ccfcd2d0
1836ef22acda4b1c.8374db220d68b18f.034b7a76c48f92bf.9a89f0a2dae0007d
bee80e66d9f305bc.4bd3b3171e4bdaa6.137dcb0202966f49.1fda4195180b1cdb
c1db9f27220a6297
-VMOVDQA_GtoE_128(reg)
+VMOVDQA_GtoE_256(reg)
before
dad906c495680e5c.b53427cab738052b.1dca55a109880cb2.c5a297f92483f54b
c72072d90cb15bd7.d8e6b63b63b50994.55a3c02d6aaa815c.f7875c464663dff2
@@ -4004,10 +4004,10 @@
after
dad906c495680e5c.b53427cab738052b.1dca55a109880cb2.c5a297f92483f54b
c72072d90cb15bd7.d8e6b63b63b50994.55a3c02d6aaa815c.f7875c464663dff2
- 0000000000000000.0000000000000000.662edaf701ce2641.48c2be92f729d2dd
8eb94a177836cb9e.17ab27f092890707.662edaf701ce2641.48c2be92f729d2dd
+ 8eb94a177836cb9e.17ab27f092890707.662edaf701ce2641.48c2be92f729d2dd
1eae5369bf285279
-VMOVDQA_GtoE_128(mem)
+VMOVDQA_GtoE_256(mem)
before
e48bd147f649286a.1fa2ae18a5896542.ea56010d4ef77b69.f877810d6ee9ced2
7524b316b8980edc.f505074146f8924c.599741e548cee174.60d4e0d5c218aab3
@@ -4015,13 +4015,13 @@
67b8933b50f2fcf1.db6489b856578f3f.7f0be47b63e4753c.21f5b4288ce7ec14
3352218b3b9fcbec
after
- e48bd147f649286a.1fa2ae18a5896542.423a64669b19f657.fa8ff3ba97e9f590
+ ac4475c42322c0fa.6a2c52fdf80e8b67.423a64669b19f657.fa8ff3ba97e9f590
7524b316b8980edc.f505074146f8924c.599741e548cee174.60d4e0d5c218aab3
ac4475c42322c0fa.6a2c52fdf80e8b67.423a64669b19f657.fa8ff3ba97e9f590
67b8933b50f2fcf1.db6489b856578f3f.7f0be47b63e4753c.21f5b4288ce7ec14
3352218b3b9fcbec
-VMOVDQA_GtoE_128(reg)
+VMOVDQA_GtoE_256(reg)
before
8bf2354f409ccec4.804c89695d147ced.a4f9aadefd60d881.eed53f10bd3c1c50
8421ece0386a3047.d5ccd4396695fd19.2137b0db88b4a3d9.6966f012c52ca5be
@@ -4031,10 +4031,10 @@
after
8bf2354f409ccec4.804c89695d147ced.a4f9aadefd60d881.eed53f10bd3c1c50
8421ece0386a3047.d5ccd4396695fd19.2137b0db88b4a3d9.6966f012c52ca5be
- 0000000000000000.0000000000000000.a7dd5c0abc6eaf7a.f70845084c054f5a
cd5b33196faa0400.9fbf566edae2f1b3.a7dd5c0abc6eaf7a.f70845084c054f5a
+ cd5b33196faa0400.9fbf566edae2f1b3.a7dd5c0abc6eaf7a.f70845084c054f5a
c2b2e1d60307e8e1
-VMOVDQA_GtoE_128(mem)
+VMOVDQA_GtoE_256(mem)
before
0952c3bfd9d05471.d5febc9ae635ee8e.cccb85ac7dc6dc79.68def9159cec671a
a9b467b1e76e4e38.ee61d897c0c02777.a4f2f93d8b38b71f.4db76ca6d1e59180
@@ -4042,13 +4042,13 @@
65ede65d2157e01b.c791baba0b0b790d.c6c49d035af731be.f324c10ea87a2a4e
6c509cbd832e110d
after
- 0952c3bfd9d05471.d5febc9ae635ee8e.04012d0b214440d2.b2b5b02bf6e66958
+ 7fa449974bec9462.76cd837e98d9ec68.04012d0b214440d2.b2b5b02bf6e66958
a9b467b1e76e4e38.ee61d897c0c02777.a4f2f93d8b38b71f.4db76ca6d1e59180
7fa449974bec9462.76cd837e98d9ec68.04012d0b214440d2.b2b5b02bf6e66958
65ede65d2157e01b.c791baba0b0b790d.c6c49d035af731be.f324c10ea87a2a4e
6c509cbd832e110d
-VMOVDQU_GtoE_128(reg)
+VMOVDQA_GtoE_128(reg)
before
79843ca3228d5a41.385cb9ef84b9ee8e.3ef877b6b4e30911.c707c511535c470e
760e9d2c21234097.d4bd3e3991217ce7.384db8e02fecda21.e496212228803eef
@@ -4061,7 +4061,7 @@
0000000000000000.0000000000000000.20f5b46b0ec22914.ddc767f9d332bd12
b04f92d7b125d758.d8854ea5162c03fe.20f5b46b0ec22914.ddc767f9d332bd12
72014898e1d8bead
-VMOVDQU_GtoE_128(mem)
+VMOVDQA_GtoE_128(mem)
before
92b74de93c6d8f88.a49f1fd17aa9fe1b.f784d29fc7e87514.c8df66a5a9a7204e
19b5f3d8fdfcedd0.f9745d1f1395b4b0.4fa4f80292d955c0.61e88cbb86ed4745
@@ -4075,7 +4075,7 @@
ccb80e40273a4055.32dcdc6327d2b8fe.1a7a1bafe387528c.d986212f79ce1514
70b48864c6803345
-VMOVDQU_GtoE_128(reg)
+VMOVDQA_GtoE_128(reg)
before
6a305327c5c471e1.b0557c91c700aceb.cf071531d93b7e0f.45c80fd2a25de603
21477de313250a96.6b6b7b313ff1959d.3ce7f003cc3cc2a2.1968960dea97d9c2
@@ -4088,7 +4088,7 @@
0000000000000000.0000000000000000.f5f67960e434b4fc.2ccd4a7a8767ccc2
3976def50a6f41f5.d62d180a2481ce07.f5f67960e434b4fc.2ccd4a7a8767ccc2
232b6f851416435d
-VMOVDQU_GtoE_128(mem)
+VMOVDQA_GtoE_128(mem)
before
330a17599a5a0aed.52250d24eb7156f8.3e71af1bca399517.f9bd20c34043d91c
3837bde0363ddaa1.99a08cfd8bbfb6c2.ed5ec72bb84bc9f4.3e6857d94d196d6d
@@ -4102,7 +4102,7 @@
90abf3bb1e168c1f.2025675875744a5e.8f5f66f5d9ae67c3.f69e6acee84ccc55
23c03d85afc01043
-VMOVDQU_GtoE_128(reg)
+VMOVDQA_GtoE_128(reg)
before
fff792a0962cb212.9c897ce6a222e542.19c8bcb4f8f2f688.3b0be6874517490d
e78f6389391bee70.0ce6f376abff3938.b0664f68aaeedd29.9e8fd6c7680a88d4
@@ -4115,7 +4115,7 @@
0000000000000000.0000000000000000.28c2248c088e4f81.f84ff70145c00c88
4c116e7a25b32383.8d489b72bf5bc04b.28c2248c088e4f81.f84ff70145c00c88
a82220d4379ac9cc
-VMOVDQU_GtoE_128(mem)
+VMOVDQA_GtoE_128(mem)
before
7efda904502fd23e.8093a059a6749491.54e6c4b501f16cc1.c0185dd4ed4a5291
58ad0e7fac8ae508.30a63eb753e88edd.f132cc0d388703b9.679ac62571b380c8
@@ -4129,7 +4129,7 @@
84b75d02a0c31455.75afb3a0a21b11dd.190366aaf7e5e0e1.4e4d1492c3bd505e
4716f286ca776914
-VMOVDQA_EtoG_256(reg)
+VMOVDQU_GtoE_128(reg)
before
bd3bf033df0d9ea2.8ea93fe36fb9a831.c13d81037df210e9.5c20f0c6b7c49f69
0e0608069f0d2bb3.0ca0edbef2a63615.f98bad95f4ab8ae3.e51b49a6dcd43823
@@ -4138,11 +4138,11 @@
b438ff18c59e7d3a
after
bd3bf033df0d9ea2.8ea93fe36fb9a831.c13d81037df210e9.5c20f0c6b7c49f69
- 95c53869a5024cf4.d866e37f4495782e.79e631c3a4d4b977.8ec0eb378320683c
- 95c53869a5024cf4.d866e37f4495782e.79e631c3a4d4b977.8ec0eb378320683c
+ 0e0608069f0d2bb3.0ca0edbef2a63615.f98bad95f4ab8ae3.e51b49a6dcd43823
+ 0000000000000000.0000000000000000.9d9b0bf727f9da50.35db5464c7b5ebe0
adc27bca8e793c10.cfc99e1281922aa7.9d9b0bf727f9da50.35db5464c7b5ebe0
b438ff18c59e7d3a
-VMOVDQA_EtoG_256(mem)
+VMOVDQU_GtoE_128(mem)
before
e8a3694198e7d977.b34acd93f5fd38b4.ce939863c6a90aad.c1f4369f1ca5291b
aee70cca5d9cbcc2.04a92a32771a7c8c.af914f5f2fe7d26c.413eaf251d64e183
@@ -4150,13 +4150,13 @@
5b2df2ac2a7c0635.f31bf79f3951ca86.8b58e204da060dc3.c4d47780b44c7fdd
80b8bf2c828ddd26
after
- e8a3694198e7d977.b34acd93f5fd38b4.ce939863c6a90aad.c1f4369f1ca5291b
+ e8a3694198e7d977.b34acd93f5fd38b4.4f8f3ff0d6573f0f.79c470f7c6c23f35
aee70cca5d9cbcc2.04a92a32771a7c8c.af914f5f2fe7d26c.413eaf251d64e183
e0d1669f2fcae248.fa2a8f12af5d4343.4f8f3ff0d6573f0f.79c470f7c6c23f35
- e8a3694198e7d977.b34acd93f5fd38b4.ce939863c6a90aad.c1f4369f1ca5291b
+ 5b2df2ac2a7c0635.f31bf79f3951ca86.8b58e204da060dc3.c4d47780b44c7fdd
80b8bf2c828ddd26
-VMOVDQA_EtoG_256(reg)
+VMOVDQU_GtoE_128(reg)
before
08be4467cd1294bc.fbc72cdd6bbfe6b4.49c65e45b2824d01.3dbab68555fff7b4
b830029d3065e14d.9c6b911e0e9e3bf2.5978c070b67d085f.427f3661634eba0d
@@ -4165,11 +4165,11 @@
db1e96481aba6f43
after
08be4467cd1294bc.fbc72cdd6bbfe6b4.49c65e45b2824d01.3dbab68555fff7b4
- ec5bf63a4815ff83.1be59c5c2e25c41b.7f7d1a8ce0cd364c.7674de8321ff12fa
- ec5bf63a4815ff83.1be59c5c2e25c41b.7f7d1a8ce0cd364c.7674de8321ff12fa
+ b830029d3065e14d.9c6b911e0e9e3bf2.5978c070b67d085f.427f3661634eba0d
+ 0000000000000000.0000000000000000.18216605ccfe1476.b5652ad7aa1fbaa8
ff8a1babb0ab2c0a.5200c881e7603b5a.18216605ccfe1476.b5652ad7aa1fbaa8
db1e96481aba6f43
-VMOVDQA_EtoG_256(mem)
+VMOVDQU_GtoE_128(mem)
before
c46b9fc58fdaedf7.4f0b6d5a05b5a28f.1e89947b565c5ddb.7eb0a248179dde86
4c18c037228df0ef.3728e8b4e2be9ebe.5b4d79349725e6cb.0e75cabf5d35cf2b
@@ -4177,13 +4177,13 @@
a9c03bad18da735c.3e6a4a1ba6ff17c8.98b08298fc4a1ca8.1cd5cafd47811ade
52079a9c244dea46
after
- c46b9fc58fdaedf7.4f0b6d5a05b5a28f.1e89947b565c5ddb.7eb0a248179dde86
+ c46b9fc58fdaedf7.4f0b6d5a05b5a28f.e515f49ac5c59256.24bed8d83952250f
4c18c037228df0ef.3728e8b4e2be9ebe.5b4d79349725e6cb.0e75cabf5d35cf2b
4ff0758bf1de3357.122f8926e4535b42.e515f49ac5c59256.24bed8d83952250f
- c46b9fc58fdaedf7.4f0b6d5a05b5a28f.1e89947b565c5ddb.7eb0a248179dde86
+ a9c03bad18da735c.3e6a4a1ba6ff17c8.98b08298fc4a1ca8.1cd5cafd47811ade
52079a9c244dea46
-VMOVDQA_EtoG_256(reg)
+VMOVDQU_GtoE_128(reg)
before
22a046206b43d2f0.36548c8ab28c6c2a.152629ffc44e0cfc.50e99e1a59bf41ec
e8eccaf5b9ed0f8b.d278e60cdb00daed.f5af213ddbcd7689.e98cc40cf731bd4e
@@ -4192,11 +4192,11 @@
91e64cba72e890e5
after
22a046206b43d2f0.36548c8ab28c6c2a.152629ffc44e0cfc.50e99e1a59bf41ec
- 00362087a9d9dac1.59f8c421b04378d0.38512f438707931c.3e64715af3ab4bfb
- 00362087a9d9dac1.59f8c421b04378d0.38512f438707931c.3e64715af3ab4bfb
+ e8eccaf5b9ed0f8b.d278e60cdb00daed.f5af213ddbcd7689.e98cc40cf731bd4e
+ 0000000000000000.0000000000000000.3c574d7c63889d60.2d3e20f06839a81f
c6cc4642d893723e.a7a0a2b44d6003ff.3c574d7c63889d60.2d3e20f06839a81f
91e64cba72e890e5
-VMOVDQA_EtoG_256(mem)
+VMOVDQU_GtoE_128(mem)
before
462873a42fc3be7a.96f83792e1a611b0.983bfdb0cd6337a7.5b0e79550bdcd102
28d0119bb8d6f00a.cc07efe3609ef4c0.079650034c59cff4.f3c3ae381c906aad
@@ -4204,13 +4204,13 @@
e2819e5ca4d64ac9.dafea539336e7571.d4bdce5bb94b1e2b.f95224d0e746bfd1
21c45c5cd960f1a1
after
- 462873a42fc3be7a.96f83792e1a611b0.983bfdb0cd6337a7.5b0e79550bdcd102
+ 462873a42fc3be7a.96f83792e1a611b0.d27e1798e74d8811.5ec0e8923130a60e
28d0119bb8d6f00a.cc07efe3609ef4c0.079650034c59cff4.f3c3ae381c906aad
12a9a0892b2ee0c0.c4456aa2f207571d.d27e1798e74d8811.5ec0e8923130a60e
- 462873a42fc3be7a.96f83792e1a611b0.983bfdb0cd6337a7.5b0e79550bdcd102
+ e2819e5ca4d64ac9.dafea539336e7571.d4bdce5bb94b1e2b.f95224d0e746bfd1
21c45c5cd960f1a1
-VMOVDQA_EtoG_128(reg)
+VMOVDQA_EtoG_256(reg)
before
30648ea4a40a7a2b.732286ff3edaec50.6a7e9b16be5e8b68.e81ff139df604c6e
837cb613e3ce941a.a059d45e15478082.cf1048a42f64d5af.ec72fd1c7497d005
@@ -4219,11 +4219,11 @@
29016922e982ae7e
after
30648ea4a40a7a2b.732286ff3edaec50.6a7e9b16be5e8b68.e81ff139df604c6e
- 0000000000000000.0000000000000000.6702a84e230b8ff2.bb816cf195fc641d
765ace14333a7c1b.47f205654628c38a.6702a84e230b8ff2.bb816cf195fc641d
+ 765ace14333a7c1b.47f205654628c38a.6702a84e230b8ff2.bb816cf195fc641d
6648d3152fda6eda.42b99300ed8a7096.8d9eb78236dff4dc.3017bca55d9cc4e1
29016922e982ae7e
-VMOVDQA_EtoG_128(mem)
+VMOVDQA_EtoG_256(mem)
before
800bed5654bbdc1f.ad93c2817438a502.6f7afc1b257744cf.9c3172ab036c411a
1301c62cba510bf1.a88796c49de35e40.a800bba20afefb64.f207d435263fb158
@@ -4234,10 +4234,10 @@
800bed5654bbdc1f.ad93c2817438a502.6f7afc1b257744cf.9c3172ab036c411a
1301c62cba510bf1.a88796c49de35e40.a800bba20afefb64.f207d435263fb158
bcaf6f903853f620.b36f4b4b4664d540.cb184c81b928517e.ea6cd98c3ce48241
- 0000000000000000.0000000000000000.6f7afc1b257744cf.9c3172ab036c411a
+ 800bed5654bbdc1f.ad93c2817438a502.6f7afc1b257744cf.9c3172ab036c411a
2f12bd52afd032c6
-VMOVDQA_EtoG_128(reg)
+VMOVDQA_EtoG_256(reg)
before
34eb9398443089ba.c46221b2ebc4f443.694f49d08b1deb33.3b2fd6f8e39ac9f8
4c83fd5c3c923109.daff2348574c7d90.ccde8aa85e6c037f.40c4c66896f963af
@@ -4246,11 +4246,11 @@
d6411397784279ca
after
34eb9398443089ba.c46221b2ebc4f443.694f49d08b1deb33.3b2fd6f8e39ac9f8
- 0000000000000000.0000000000000000.af929c7221c3c93d.9f1c78df832d8b9c
d126f70932816460.7884e41c4b6eb4e9.af929c7221c3c93d.9f1c78df832d8b9c
+ d126f70932816460.7884e41c4b6eb4e9.af929c7221c3c93d.9f1c78df832d8b9c
21207b0ac3895e6b.78bde21ae337537a.6eb77c9c71ad7818.3202684bc541ffec
d6411397784279ca
-VMOVDQA_EtoG_128(mem)
+VMOVDQA_EtoG_256(mem)
before
67a6f3afba3bb563.96bc87cd8a375dd5.b776992f3ab21771.65992491eab74dbd
c2fd867fa43871e3.8d4815bd23169b4b.127b83456cecbcf7.f08492bd266b84d8
@@ -4261,10 +4261,10 @@
67a6f3afba3bb563.96bc87cd8a375dd5.b776992f3ab21771.65992491eab74dbd
c2fd867fa43871e3.8d4815bd23169b4b.127b83456cecbcf7.f08492bd266b84d8
c11248f354456775.630e24462bb25579.63971e4a96f0fd3b.6bc3c18cc4585914
- 0000000000000000.0000000000000000.b776992f3ab21771.65992491eab74dbd
+ 67a6f3afba3bb563.96bc87cd8a375dd5.b776992f3ab21771.65992491eab74dbd
a07052c39006cba1
-VMOVDQA_EtoG_128(reg)
+VMOVDQA_EtoG_256(reg)
before
1376ad03f7e0e14a.1ea6457875c2f481.177cadd3f7532caa.5a4854cd408746a7
e601b9962e2284c5.34bc79601d480253.afba21b0f26fc107.b874e724f832c529
@@ -4273,11 +4273,11 @@
acd7528dfd4080e8
after
1376ad03f7e0e14a.1ea6457875c2f481.177cadd3f7532caa.5a4854cd408746a7
- 0000000000000000.0000000000000000.946404d5cc79c2ca.7de81a1918d7d117
745d72e9d156f1bd.5fc0cb9dfb0f3be8.946404d5cc79c2ca.7de81a1918d7d117
+ 745d72e9d156f1bd.5fc0cb9dfb0f3be8.946404d5cc79c2ca.7de81a1918d7d117
1bd5d4667d0b64df.7b7fb7192a225b6b.23c552af21fc6aa2.856f6a98bb82269d
acd7528dfd4080e8
-VMOVDQA_EtoG_128(mem)
+VMOVDQA_EtoG_256(mem)
before
ceea4ee5fb1d9a23.36b7dc7bceca19d6.64c3bac2c78e1d09.b82808ab8b84f639
c776db8ad123317c.204d84935f214b4f.f6584f83ee5e3eed.afda2034a99ea23b
@@ -4288,10 +4288,10 @@
ceea4ee5fb1d9a23.36b7dc7bceca19d6.64c3bac2c78e1d09.b82808ab8b84f639
c776db8ad123317c.204d84935f214b4f.f6584f83ee5e3eed.afda2034a99ea23b
734573699a60011c.37e4ca19cd9b37f5.0d0cf248b99e7a44.642798b515d5aa56
- 0000000000000000.0000000000000000.64c3bac2c78e1d09.b82808ab8b84f639
+ ceea4ee5fb1d9a23.36b7dc7bceca19d6.64c3bac2c78e1d09.b82808ab8b84f639
78c2955448cbbc81
-VMOVDQU_EtoG_128(reg)
+VMOVDQA_EtoG_128(reg)
before
8fa8134947a23fea.54dfb98676ad3be8.58441e24ad2a2c7b.3afd528eb1a032fa
d458dfe704c70e1a.41415e9cc2d51d6a.1aa623805856adb2.08d208e7167927b1
@@ -4304,7 +4304,7 @@
a31ff79a1dc564be.5118009c716328e5.7938b6fb4fd6d8c7.cbf5bcf48ff3258a
584a56cf2b287e82.5f2e19729f641785.cf47d2022f35e966.5e32eaa13a19ebb2
9f550edb33f73355
-VMOVDQU_EtoG_128(mem)
+VMOVDQA_EtoG_128(mem)
before
6929a58c959aba9e.4f23f9f0cc7c9712.4950270a69e3a776.792073ff94ff1b3a
987c29a27d0d3cb9.e4f6da6b9c4eed19.ea4aa650eaec94e2.d40c966019c1abef
@@ -4318,7 +4318,7 @@
0000000000000000.0000000000000000.4950270a69e3a776.792073ff94ff1b3a
9b48dd0b824ae512
-VMOVDQU_EtoG_128(reg)
+VMOVDQA_EtoG_128(reg)
before
4d81dc30a0614406.195e25746cc0f9b4.ee4bd229392cabb3.ae3f996fd3bfdfcd
7b4a49d4ec2b2d38.74a03b5281ecbed2.93028940db6b4850.c291b0a54a6996e4
@@ -4331,7 +4331,7 @@
81f01e63ff35db53.805caa30a825299f.a1306accb7e34cc1.dab6a32605da5754
bbbe5949770a8b04.185df0fafd76f746.762173396921f3b2.d07befdd1f1edc48
82ac0fb5b540e2ee
-VMOVDQU_EtoG_128(mem)
+VMOVDQA_EtoG_128(mem)
before
ca147e9ce24c246f.8502f5f2f03679f6.1a70899c9aece4f4.6d219ff38eb07bce
8681bb7dc24e60fa.3b07efcb0546e0d6.6062ef039e91abd5.e17ceb66c11d1ec2
@@ -4345,7 +4345,7 @@
0000000000000000.0000000000000000.1a70899c9aece4f4.6d219ff38eb07bce
cba4604eca0b0562
-VMOVDQU_EtoG_128(reg)
+VMOVDQA_EtoG_128(reg)
before
cf6200de4f656f6c.02d61035b1943e84.7d91e2a6074149c0.6960d006201d7a5e
1df7ac43ef5821aa.214a553677e7b4e9.7b912973a656f00e.5bc147b5d2fc04c0
@@ -4358,7 +4358,7 @@
12af5ee8457157c7.ffbed2cd7d6ecf32.31ceb88bed0b3ca6.dffbf9c474481532
08d5143bed3b4c70.79fd04e7de324b8c.fb938d5a79eb6a33.cfdb611f240b69de
082dfbb2fe54bbf1
-VMOVDQU_EtoG_128(mem)
+VMOVDQA_EtoG_128(mem)
before
66bd43691d2cc996.5db7c9a784423d51.69d5656eb741e322.352ea34be582b563
c557b6309da14cfa.6b9f7998a6136515.ac10735023a65421.3be9f6ccce5c5adf
@@ -4372,7 +4372,7 @@
0000000000000000.0000000000000000.69d5656eb741e322.352ea34be582b563
acd837e28bf8bcdf
-VMOVAPD_GtoE_128(reg)
+VMOVDQU_EtoG_128(reg)
before
7a0f57d87e58204a.8157e21f8022f855.8a7846c261b5856e.ff117e4af554134a
dfe2a078f9b70a5f.7c11d65e9e80af6b.1874bb00c523e579.26d415ccc78a3fa3
@@ -4381,11 +4381,11 @@
c58b5ac66acccffb
after
7a0f57d87e58204a.8157e21f8022f855.8a7846c261b5856e.ff117e4af554134a
- dfe2a078f9b70a5f.7c11d65e9e80af6b.1874bb00c523e579.26d415ccc78a3fa3
- 0000000000000000.0000000000000000.224057caeb1b0bf8.2d45079ee6bbe150
+ 0000000000000000.0000000000000000.2cf217debe16a8c3.ecf7c444b953f041
+ 399e0f3099a2b6c9.c4d05f4aaab7891c.2cf217debe16a8c3.ecf7c444b953f041
e2909f6af9a45f35.3560fbcebfd14193.224057caeb1b0bf8.2d45079ee6bbe150
c58b5ac66acccffb
-VMOVAPD_GtoE_128(mem)
+VMOVDQU_EtoG_128(mem)
before
90953aa96294766f.38024b94b549424f.ab8f25d6fadd94fd.56a8762fe6bd4ac6
6a2f2231ea1f92d7.964012196a1d9bc2.0228594e76e43e85.247770794b88a0d6
@@ -4393,13 +4393,13 @@
bb43fae517aa1736.d955dae42e859d65.c2c6d03ea31985a2.fe79e56bc5cb8473
c24459ed115b8956
after
- 90953aa96294766f.38024b94b549424f.16f6142250f4fa59.e8f84113b7094ad7
+ 90953aa96294766f.38024b94b549424f.ab8f25d6fadd94fd.56a8762fe6bd4ac6
6a2f2231ea1f92d7.964012196a1d9bc2.0228594e76e43e85.247770794b88a0d6
2f258e4c1d77de60.5798ed65b4ada53b.16f6142250f4fa59.e8f84113b7094ad7
- bb43fae517aa1736.d955dae42e859d65.c2c6d03ea31985a2.fe79e56bc5cb8473
+ 0000000000000000.0000000000000000.ab8f25d6fadd94fd.56a8762fe6bd4ac6
c24459ed115b8956
-VMOVAPD_GtoE_128(reg)
+VMOVDQU_EtoG_128(reg)
before
90a798033944972d.ea54e3e8f5c4f984.76c2d302742fbfed.e4640b8e8c5d9b8f
c4ec9e1ad612e8a4.9725c341d2cf3f76.8b2cd62c2339477e.579c40ff26cef74a
@@ -4408,11 +4408,11 @@
2dd7954835a30d0a
after
90a798033944972d.ea54e3e8f5c4f984.76c2d302742fbfed.e4640b8e8c5d9b8f
- c4ec9e1ad612e8a4.9725c341d2cf3f76.8b2cd62c2339477e.579c40ff26cef74a
- 0000000000000000.0000000000000000.8e27e84f2a9b776e.9f0989f0df6575db
+ 0000000000000000.0000000000000000.75dfdfccd62e70c5.f73aec7b8e7857ff
+ ba60679f8651b867.a08318dccbd9a63a.75dfdfccd62e70c5.f73aec7b8e7857ff
cd4ff0fce58e4521.e0385da5fbeeeafa.8e27e84f2a9b776e.9f0989f0df6575db
2dd7954835a30d0a
-VMOVAPD_GtoE_128(mem)
+VMOVDQU_EtoG_128(mem)
before
7c6e8b71ad3eddb7.5b04349f8e54c97e.33100f887f18c6e2.3350ef22ba0b9824
679be75663419f0f.bfcd2ff21d30802b.74d9a8717365f81f.c1a6efb0230a0e94
@@ -4420,13 +4420,13 @@
86e7c204f6afeb6f.78c73a5d60577b24.346a840617964847.0307caaceee7ec50
70ab9ef388ddccf5
after
- 7c6e8b71ad3eddb7.5b04349f8e54c97e.815ea64cf1e13add.9274e46400251769
+ 7c6e8b71ad3eddb7.5b04349f8e54c97e.33100f887f18c6e2.3350ef22ba0b9824
679be75663419f0f.bfcd2ff21d30802b.74d9a8717365f81f.c1a6efb0230a0e94
cc2a25e372b8103e.55f4dd632faca8d4.815ea64cf1e13add.9274e46400251769
- 86e7c204f6afeb6f.78c73a5d60577b24.346a840617964847.0307caaceee7ec50
+ ...
[truncated message content] |
|
From: Rich C. <rc...@wi...> - 2013-03-28 05:18:35
|
valgrind revision: 13343
VEX revision: 2704
C compiler: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
GDB: GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:30:16 UTC 2011)
Assembler:
C library: unknown
uname -mrs: Darwin 10.8.0 i386
Vendor version: unknown
Nightly build on macx86 ( Darwin 10.8.0 i386 )
Started at 2013-03-27 23:35:00 CDT
Ended at 2013-03-28 00:18:17 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 511 tests, 151 stderr failures, 4 stdout failures, 3 stderrB failures, 3 stdoutB failures, 1 post failure ==
gdbserver_tests/mchelp (stdoutB)
gdbserver_tests/mchelp (stderrB)
gdbserver_tests/mcinvokeRU (stdoutB)
gdbserver_tests/mcinvokeRU (stderrB)
gdbserver_tests/mcinvokeWS (stdoutB)
gdbserver_tests/mcinvokeWS (stderrB)
memcheck/tests/accounting (stderr)
memcheck/tests/badpoll (stderr)
memcheck/tests/big_blocks_freed_list (stderr)
memcheck/tests/bug287260 (stderr)
memcheck/tests/darwin/aio (stderr)
memcheck/tests/darwin/pth-supp (stderr)
memcheck/tests/darwin/scalar (stderr)
memcheck/tests/deep-backtrace (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/leak-delta (stderr)
memcheck/tests/leak-segv-jmp (stderr)
memcheck/tests/lks (stderr)
memcheck/tests/memcmptest (stderr)
memcheck/tests/mismatches (stderr)
memcheck/tests/null_socket (stdout)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stdout)
memcheck/tests/overlap (stderr)
memcheck/tests/sem (stderr)
memcheck/tests/sendmsg (stderr)
memcheck/tests/strchr (stderr)
memcheck/tests/test-plo-no (stderr)
memcheck/tests/varinfo3 (stderr)
memcheck/tests/varinfo5 (stderr)
memcheck/tests/vbit-test/vbit-test (stderr)
memcheck/tests/vcpu_fnfns (stdout)
memcheck/tests/writev1 (stderr)
massif/tests/big-alloc (post)
massif/tests/pages_as_heap (stderr)
none/tests/allexec32 (stderr)
none/tests/allexec64 (stderr)
none/tests/async-sigs (stderr)
none/tests/cmdline5 (stderr)
none/tests/execve (stderr)
none/tests/faultstatus (stderr)
none/tests/mmap_fcntl_bug (stderr)
none/tests/nodir (stderr)
none/tests/pth_blockedsig (stderr)
none/tests/require-text-symbol-2 (stderr)
none/tests/rlimit64_nofile (stderr)
none/tests/shell_nosuchfile (stderr)
none/tests/x86/cse_fail (stdout)
helgrind/tests/annotate_hbefore (stderr)
helgrind/tests/annotate_rwlock (stderr)
helgrind/tests/annotate_smart_pointer (stderr)
helgrind/tests/cond_init_destroy (stderr)
helgrind/tests/cond_timedwait_invalid (stderr)
helgrind/tests/free_is_write (stderr)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/hg06_readshared (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_cond_destroy_busy (stderr)
helgrind/tests/pth_destroy_cond (stderr)
helgrind/tests/rwlock_race (stderr)
helgrind/tests/rwlock_test (stderr)
helgrind/tests/t2t_laog (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc04_free_lock (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc10_rec_lock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc13_laog1 (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc15_laog_lockdel (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
drd/tests/annotate_barrier (stderr)
drd/tests/annotate_barrier_xml (stderr)
drd/tests/annotate_hb_race (stderr)
drd/tests/annotate_hbefore (stderr)
drd/tests/annotate_ignore_read (stderr)
drd/tests/annotate_ignore_rw (stderr)
drd/tests/annotate_ignore_rw2 (stderr)
drd/tests/annotate_ignore_write (stderr)
drd/tests/annotate_ignore_write2 (stderr)
drd/tests/annotate_order_1 (stderr)
drd/tests/annotate_order_2 (stderr)
drd/tests/annotate_order_3 (stderr)
drd/tests/annotate_rwlock (stderr)
drd/tests/annotate_smart_pointer (stderr)
drd/tests/annotate_smart_pointer2 (stderr)
drd/tests/annotate_spinlock (stderr)
drd/tests/annotate_static (stderr)
drd/tests/atomic_var (stderr)
drd/tests/bug-235681 (stderr)
drd/tests/circular_buffer (stderr)
drd/tests/fp_race (stderr)
drd/tests/fp_race2 (stderr)
drd/tests/fp_race_xml (stderr)
drd/tests/free_is_write (stderr)
drd/tests/free_is_write2 (stderr)
drd/tests/hg01_all_ok (stderr)
drd/tests/hg02_deadlock (stderr)
drd/tests/hg03_inherit (stderr)
drd/tests/hg04_race (stderr)
drd/tests/hg05_race2 (stderr)
drd/tests/hg06_readshared (stderr)
drd/tests/linuxthreads_det (stderr)
drd/tests/monitor_example (stderr)
drd/tests/pth_broadcast (stderr)
drd/tests/pth_cleanup_handler (stderr)
drd/tests/pth_cond_destroy_busy (stderr)
drd/tests/pth_cond_race (stderr)
drd/tests/pth_cond_race2 (stderr)
drd/tests/pth_cond_race3 (stderr)
drd/tests/pth_create_chain (stderr)
drd/tests/pth_detached3 (stderr)
drd/tests/pth_inconsistent_cond_wait (stderr)
drd/tests/pth_once (stderr)
drd/tests/read_and_free_race (stderr)
drd/tests/rwlock_race (stderr)
drd/tests/rwlock_test (stderr)
drd/tests/sem_open (stderr)
drd/tests/sem_open2 (stderr)
drd/tests/sem_open3 (stderr)
drd/tests/sem_open_traced (stderr)
drd/tests/sigalrm (stderr)
drd/tests/tc01_simple_race (stderr)
drd/tests/tc02_simple_tls (stderr)
drd/tests/tc03_re_excl (stderr)
drd/tests/tc05_simple_race (stderr)
drd/tests/tc06_two_races (stderr)
drd/tests/tc07_hbl1 (stderr)
drd/tests/tc08_hbl2 (stderr)
drd/tests/tc09_bad_unlock (stderr)
drd/tests/tc11_XCHG (stderr)
drd/tests/tc16_byterace (stderr)
drd/tests/tc17_sembar (stderr)
drd/tests/tc19_shadowmem (stderr)
drd/tests/tc21_pthonce (stderr)
drd/tests/tc23_bogus_condwait (stderr)
drd/tests/thread_name (stderr)
drd/tests/thread_name_xml (stderr)
drd/tests/threaded-fork (stderr)
drd/tests/unit_bitmap (stderr)
drd/tests/unit_vc (stderr)
=================================================
./valgrind-new/drd/tests/annotate_barrier.stderr.diff
=================================================
--- annotate_barrier.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_barrier.stderr.out 2013-03-28 00:15:23.000000000 -0500
@@ -37,6 +37,117 @@
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
Thread 1:
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Address 0x........ is at offset 8 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Address 0x........ is at offset 8 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_barrier_xml.stderr.diff
=================================================
--- annotate_barrier_xml.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_barrier_xml.stderr.out 2013-03-28 00:15:24.000000000 -0500
@@ -188,7 +188,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
</stack>
<auxwhat>Address 0x........ is at offset 0 from 0x.........</auxwhat>
@@ -258,6 +258,221 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>restore_sem_to_pool</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting store by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_hb_race.stderr.diff
=================================================
--- annotate_hb_race.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_hb_race.stderr.out 2013-03-28 00:15:25.000000000 -0500
@@ -3,6 +3,60 @@
at 0x........: main (annotate_hb_race.c:?)
Allocation context: BSS section of annotate_hb_race
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_hbefore.stderr.diff
=================================================
--- annotate_hbefore.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_hbefore.stderr.out 2013-03-28 00:15:27.000000000 -0500
@@ -1,3 +1,44 @@
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_read.stderr.diff
=================================================
--- annotate_ignore_read.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_ignore_read.stderr.out 2013-03-28 00:15:29.000000000 -0500
@@ -1,6 +1,159 @@
FLAGS [phb=1, fm=0]
test69: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 12 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_ignore_rw.stderr.diff
=================================================
--- annotate_ignore_rw.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_ignore_rw.stderr.out 2013-03-28 00:15:31.000000000 -0500
@@ -4,6 +4,60 @@
Location 0x........ is 0 bytes inside global var "s_c"
declared at annotate_ignore_rw.c:12
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_rw2.stderr.diff
=================================================
--- annotate_ignore_rw2.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_ignore_rw2.stderr.out 2013-03-28 00:15:32.000000000 -0500
@@ -14,6 +14,60 @@
Location 0x........ is 0 bytes inside global var "s_c"
declared at annotate_ignore_rw.c:12
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_write.stderr.diff
=================================================
--- annotate_ignore_write.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_ignore_write.stderr.out 2013-03-28 00:15:33.000000000 -0500
@@ -14,6 +14,60 @@
Location 0x........ is 0 bytes inside global var "s_a"
declared at annotate_ignore_write.c:10
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_write2.stderr.diff
=================================================
--- annotate_ignore_write2.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_ignore_write2.stderr.out 2013-03-28 00:15:34.000000000 -0500
@@ -19,6 +19,60 @@
Location 0x........ is 0 bytes inside global var "s_a"
declared at annotate_ignore_write.c:10
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_1.stderr.diff
=================================================
--- annotate_order_1.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_order_1.stderr.out 2013-03-28 00:15:36.000000000 -0500
@@ -1,6 +1,18 @@
FLAGS [phb=1, fm=0]
test03: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: ThreadPool::~ThreadPool() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: test03::Waiter() (tsan_unittest.cpp:?)
+ by 0x........: test03::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=2
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_2.stderr.diff
=================================================
--- annotate_order_2.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_order_2.stderr.out 2013-03-28 00:15:38.000000000 -0500
@@ -1,6 +1,71 @@
FLAGS [phb=1, fm=0]
test30: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 12 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=47
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_3.stderr.diff
=================================================
--- annotate_order_3.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_order_3.stderr.out 2013-03-28 00:15:39.000000000 -0500
@@ -1,6 +1,71 @@
FLAGS [phb=1, fm=0]
test31: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=48
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_rwlock.stderr.diff
=================================================
--- annotate_rwlock.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_rwlock.stderr.out 2013-03-28 00:15:43.000000000 -0500
@@ -1,4 +1,58 @@
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Address 0x........ is at offset 36 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer.stderr.diff
=================================================
--- annotate_smart_pointer.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_smart_pointer.stderr.out 2013-03-28 00:15:52.000000000 -0500
@@ -1,4 +1,64 @@
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Address 0x........ is at offset 196 from 0x......... Allocation context:
+ at 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer2.stderr.diff
=================================================
--- annotate_smart_pointer2.stderr.exp 2013-03-27 23:57:00.000000000 -0500
+++ annotate_smart_pointer2.stderr.out 2013-03-28 00:15:53.000000000 -0500
@@ -5,9 +5,71 @@
by 0x........: smart_ptr<counter>::operator=(counter*) (annotate_smart_pointer.cpp:?)
by 0x........: main (annotate_smart_pointer.cpp:?)
Address 0x........ is at offset ... from 0x......... Allocation context:
- at 0x........: ...operator new... (vg_replace_malloc.c:...)
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: operator new(unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
by 0x........: main (annotate_smart_pointer.cpp:?)
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Address 0x........ is at offset ... from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer2.stderr.diff-darwin
=================================================
--- annotate_smart_pointer2.stderr.exp-darwin 2013-03-27 23:57:00.000000000 -0500
+++ annotate_smart_pointer2.stderr.out 2013-03-28 00:15:53.000000000 -0500
@@ -9,6 +9,67 @@
by 0x........: operator new(unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
by 0x........: main (annotate_smart_pointer.cpp:?)
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pth...
[truncated message content] |
|
From: Tom H. <to...@co...> - 2013-03-28 04:08:52
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) GDB: Assembler: GNU assembler version 2.19.51.0.14-3.fc11 20090722 C library: GNU C Library stable release version 2.10.2 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2013-03-28 03:41:22 GMT Ended at 2013-03-28 04:08:30 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 630 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) memcheck/tests/vbit-test/vbit-test (stderr) none/tests/amd64/sse4-64 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 630 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 03:55:14.777910772 +0000 --- new.short 2013-03-28 04:08:30.307091879 +0000 *************** *** 8,11 **** ! == 630 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) --- 8,12 ---- ! == 630 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2013-03-28 04:01:10
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2) GDB: Assembler: GNU assembler version 2.20.51.0.2-20.fc13 20091009 C library: GNU C Library stable release version 2.12.2 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 13 (Goddard) Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2013-03-28 03:32:31 GMT Ended at 2013-03-28 04:00:54 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 630 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) helgrind/tests/pth_barrier3 (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 630 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) helgrind/tests/pth_barrier3 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 03:46:41.274033144 +0000 --- new.short 2013-03-28 04:00:54.702117759 +0000 *************** *** 8,12 **** ! == 630 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) helgrind/tests/pth_barrier3 (stderr) --- 8,13 ---- ! == 630 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) helgrind/tests/pth_barrier3 (stderr) |
|
From: Tom H. <to...@co...> - 2013-03-28 03:54:32
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) GDB: GNU gdb (GDB) Fedora (7.2-52.fc14) Assembler: GNU assembler version 2.20.51.0.7-8.fc14 20100318 C library: GNU C Library stable release version 2.13 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 14 (Laughlin) Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2013-03-28 03:23:20 GMT Ended at 2013-03-28 03:54:16 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 649 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 649 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 03:39:24.356992147 +0000 --- new.short 2013-03-28 03:54:16.132080041 +0000 *************** *** 8,10 **** ! == 649 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) --- 8,10 ---- ! == 649 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) *************** *** 12,13 **** --- 12,14 ---- memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) |
|
From: Tom H. <to...@co...> - 2013-03-28 03:46:32
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.1-48.fc15) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2013-03-28 03:13:45 GMT Ended at 2013-03-28 03:46:17 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 03:30:39.164304653 +0000 --- new.short 2013-03-28 03:46:17.650392949 +0000 *************** *** 8,10 **** ! == 651 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) --- 8,10 ---- ! == 651 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) *************** *** 12,13 **** --- 12,14 ---- memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) |
|
From: Tom H. <to...@co...> - 2013-03-28 03:37:08
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.50.20110722-16.fc16) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2013-03-28 03:02:35 GMT Ended at 2013-03-28 03:36:54 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 03:18:12.361873233 +0000 --- new.short 2013-03-28 03:36:54.710935021 +0000 *************** *** 8,10 **** ! == 651 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) --- 8,10 ---- ! == 651 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) *************** *** 12,13 **** --- 12,14 ---- memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) |
|
From: Philippe W. <phi...@sk...> - 2013-03-28 03:35:58
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-36.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.7.2-204.fc18.ppc64 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2013-03-27 20:00:16 PDT Ended at 2013-03-27 20:33:55 PDT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 551 tests, 33 stderr failures, 4 stdout failures, 0 stderrB failures, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/vbit-test/vbit-test (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 551 tests, 32 stderr failures, 4 stdout failures, 0 stderrB failures, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Mar 27 20:17:47 2013 --- new.short Wed Mar 27 20:33:55 2013 *************** *** 8,10 **** ! == 551 tests, 32 stderr failures, 4 stdout failures, 0 stderrB failures, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) --- 8,10 ---- ! == 551 tests, 33 stderr failures, 4 stdout failures, 0 stderrB failures, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) *************** *** 17,18 **** --- 17,19 ---- memcheck/tests/varinfo6 (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) memcheck/tests/wrap8 (stdout) |
|
From: Tom H. <to...@co...> - 2013-03-28 03:23:52
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) GDB: GNU gdb (GDB) Fedora (7.4.50.20120120-54.fc17) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2013-03-28 02:52:03 GMT Ended at 2013-03-28 03:23:35 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 8 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 7 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 03:07:19.062880418 +0000 --- new.short 2013-03-28 03:23:35.607562452 +0000 *************** *** 8,10 **** ! == 651 tests, 7 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) --- 8,10 ---- ! == 651 tests, 8 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) *************** *** 15,16 **** --- 15,17 ---- memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) exp-sgcheck/tests/preen_invars (stdout) |
|
From: Tom H. <to...@co...> - 2013-03-28 03:14:27
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-36.fc18) Assembler: GNU assembler version 2.23.51.0.1-6.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2013-03-28 02:42:22 GMT Ended at 2013-03-28 03:14:09 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 651 tests, 4 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 02:58:09.530353385 +0000 --- new.short 2013-03-28 03:14:09.740646907 +0000 *************** *** 8,10 **** ! == 651 tests, 4 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) --- 8,10 ---- ! == 651 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) *************** *** 12,13 **** --- 12,14 ---- memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) exp-sgcheck/tests/preen_invars (stdout) |
|
From: Rich C. <rc...@wi...> - 2013-03-28 02:55:14
|
valgrind revision: 13343
VEX revision: 2704
C compiler: gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
GDB: GNU gdb (GDB) SUSE (7.5.1-2.1.1)
Assembler: GNU assembler (GNU Binutils; openSUSE 12.3) 2.23.1
C library: GNU C Library (GNU libc) stable release version 2.17 (git c758a6861537)
uname -mrs: Linux 3.7.9-1.1-desktop x86_64
Vendor version: Welcome to openSUSE 12.3 "Dartmouth" Beta 1 - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 3.7.9-1.1-desktop x86_64 )
Started at 2013-03-27 21:30:01 CDT
Ended at 2013-03-27 21:55:02 CDT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 644 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/vbit-test/vbit-test (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 644 tests, 1 stderr failure, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Wed Mar 27 21:42:35 2013
--- new.short Wed Mar 27 21:55:02 2013
***************
*** 8,12 ****
! == 644 tests, 1 stderr failure, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
--- 8,13 ----
! == 644 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
+ memcheck/tests/vbit-test/vbit-test (stderr)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2013-03-27 21:42:39.894587472 -0500
+++ mssnapshot.stderrB.out 2013-03-27 21:46:24.962312289 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-03-27 21:42:40.652566335 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:47:59.530676218 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-03-27 21:42:40.505570434 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:47:59.530676218 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-03-27 21:42:40.006584349 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:47:59.530676218 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-03-27 21:42:40.300576151 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:47:59.530676218 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-03-27 21:42:40.388573697 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:47:59.530676218 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/vbit-test/vbit-test.stderr.diff
=================================================
--- vbit-test.stderr.exp 2013-03-27 21:42:39.982585018 -0500
+++ vbit-test.stderr.out 2013-03-27 21:48:42.717472514 -0500
@@ -0,0 +1 @@
+unknown opcode 5954
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2013-03-27 21:30:16.288336262 -0500
+++ mssnapshot.stderrB.out 2013-03-27 21:33:58.197141613 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-03-27 21:30:17.052314931 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:35:32.145519745 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-03-27 21:30:16.903319091 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:35:32.145519745 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-03-27 21:30:16.381333665 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:35:32.145519745 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-03-27 21:30:16.709324507 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:35:32.145519745 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-03-27 21:30:16.797322050 -0500
+++ origin5-bz2.stderr.out 2013-03-27 21:35:32.145519745 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2013-03-28 02:45:38
|
valgrind revision: 13343 VEX revision: 2704 C compiler: gcc (GCC) 4.8.0 20130320 (Red Hat 4.8.0-0.18) GDB: GNU gdb (GDB) Fedora (7.5.50.20130310-13.fc19) Assembler: GNU assembler version 2.23.52.0.1-9.fc20 20130226 C library: unknown uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 20 (Rawhide) Nightly build on bristol ( x86_64, Fedora 20 ) Started at 2013-03-28 02:23:51 GMT Ended at 2013-03-28 02:45:25 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 578 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vbit-test/vbit-test (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 578 tests, 5 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/strchr (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-03-28 02:34:39.135979700 +0000 --- new.short 2013-03-28 02:45:25.266981736 +0000 *************** *** 8,10 **** ! == 578 tests, 5 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) --- 8,10 ---- ! == 578 tests, 6 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/dw4 (stderr) *************** *** 13,14 **** --- 13,15 ---- memcheck/tests/strchr (stderr) + memcheck/tests/vbit-test/vbit-test (stderr) exp-sgcheck/tests/hackedbz2 (stderr) |
|
From: <sv...@va...> - 2013-03-27 22:15:44
|
sewardj 2013-03-27 22:15:36 +0000 (Wed, 27 Mar 2013)
New Revision: 2704
Log:
Fix some rebasing fallout pertaining to today's AVX2 landing.
Fixes #317463.
Modified files:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c (+3 -2)
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2013-03-27 15:38:47 +00:00 (rev 2703)
+++ trunk/priv/guest_amd64_toIR.c 2013-03-27 22:15:36 +00:00 (rev 2704)
@@ -1715,7 +1715,7 @@
return toBool(op8 == Iop_And8 || op8 == Iop_Or8 || op8 == Iop_Xor8);
}
-/* U-widen 8/16/32/64 bit int expr to 64. */
+/* U-widen 1/8/16/32/64 bit int expr to 64. */
static IRExpr* widenUto64 ( IRExpr* e )
{
switch (typeOfIRExpr(irsb->tyenv,e)) {
@@ -1723,6 +1723,7 @@
case Ity_I32: return unop(Iop_32Uto64, e);
case Ity_I16: return unop(Iop_16Uto64, e);
case Ity_I8: return unop(Iop_8Uto64, e);
+ case Ity_I1: return unop(Iop_1Uto64, e);
default: vpanic("widenUto64");
}
}
@@ -28692,7 +28693,7 @@
IRTemp src1 = newTemp(ty);
IRTemp src2 = newTemp(ty);
IRTemp start = newTemp(Ity_I8);
- IRTemp cond = newTemp(Ity_I8);
+ IRTemp cond = newTemp(Ity_I1);
UChar rm = getUChar(delta);
assign( src2, getIRegV(size,pfx) );
|
|
From: <sv...@va...> - 2013-03-27 21:59:29
|
sewardj 2013-03-27 21:59:21 +0000 (Wed, 27 Mar 2013)
New Revision: 13343
Log:
Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs.
#317461. (Mark Wielaard, mj...@re...)
Modified files:
trunk/configure.in
trunk/none/tests/amd64/avx2-1.vgtest
trunk/none/tests/amd64/bmi.vgtest
trunk/none/tests/amd64/fma.vgtest
Modified: trunk/none/tests/amd64/bmi.vgtest (+1 -1)
===================================================================
--- trunk/none/tests/amd64/bmi.vgtest 2013-03-27 15:39:18 +00:00 (rev 13342)
+++ trunk/none/tests/amd64/bmi.vgtest 2013-03-27 21:59:21 +00:00 (rev 13343)
@@ -1,3 +1,3 @@
prog: bmi
-prereq: ../../../tests/x86_amd64_features amd64-avx
+prereq: test -x bmi && ../../../tests/x86_amd64_features amd64-avx
vgopts: -q
Modified: trunk/configure.in (+2 -2)
===================================================================
--- trunk/configure.in 2013-03-27 15:39:18 +00:00 (rev 13342)
+++ trunk/configure.in 2013-03-27 21:59:21 +00:00 (rev 13343)
@@ -1940,9 +1940,9 @@
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
do { unsigned int h, l;
__asm__ __volatile__(
- "andn %2, %1, %0" : "=r" (h) : "r" (0x1234567), "r" (0x7654321) ); }
+ "andn %2, %1, %0" : "=r" (h) : "r" (0x1234567), "r" (0x7654321) );
__asm__ __volatile__(
- "movl %2, %%edx; mulx %3, %1, %0" : "=r" (h), "=r" (l) : "g" (0x1234567), "g" (0x7654321) : "edx" ); }
+ "movl %2, %%edx; mulx %3, %1, %0" : "=r" (h), "=r" (l) : "g" (0x1234567), "rm" (0x7654321) : "edx" ); }
while (0)
]])], [
ac_have_as_bmi=yes
Modified: trunk/none/tests/amd64/fma.vgtest (+1 -1)
===================================================================
--- trunk/none/tests/amd64/fma.vgtest 2013-03-27 15:39:18 +00:00 (rev 13342)
+++ trunk/none/tests/amd64/fma.vgtest 2013-03-27 21:59:21 +00:00 (rev 13343)
@@ -1,3 +1,3 @@
prog: fma
-prereq: ../../../tests/x86_amd64_features amd64-avx
+prereq: test -x fma && ../../../tests/x86_amd64_features amd64-avx
vgopts: -q
Modified: trunk/none/tests/amd64/avx2-1.vgtest (+1 -1)
===================================================================
--- trunk/none/tests/amd64/avx2-1.vgtest 2013-03-27 15:39:18 +00:00 (rev 13342)
+++ trunk/none/tests/amd64/avx2-1.vgtest 2013-03-27 21:59:21 +00:00 (rev 13343)
@@ -1,3 +1,3 @@
prog: avx2-1
-prereq: ../../../tests/x86_amd64_features amd64-avx
+prereq: test -x avx2-1 && ../../../tests/x86_amd64_features amd64-avx
vgopts: -q
|
|
From: <sv...@va...> - 2013-03-27 15:39:25
|
tom 2013-03-27 15:39:18 +0000 (Wed, 27 Mar 2013)
New Revision: 13342
Log:
Test support for the EQ_UQ SSE FP comparison operation. BZ#317444.
Modified files:
trunk/none/tests/amd64/avx-1.c
Modified: trunk/none/tests/amd64/avx-1.c (+8 -0)
===================================================================
--- trunk/none/tests/amd64/avx-1.c 2013-03-27 12:40:48 +00:00 (rev 13341)
+++ trunk/none/tests/amd64/avx-1.c 2013-03-27 15:39:18 +00:00 (rev 13342)
@@ -212,6 +212,9 @@
GEN_test_RandM(VCMPSD_128_0x7,
"vcmpsd $7, %%xmm6, %%xmm8, %%xmm7",
"vcmpsd $7, (%%rax), %%xmm8, %%xmm7")
+GEN_test_RandM(VCMPSD_128_0x8,
+ "vcmpsd $8, %%xmm6, %%xmm8, %%xmm7",
+ "vcmpsd $8, (%%rax), %%xmm8, %%xmm7")
GEN_test_RandM(VCMPSD_128_0xA,
"vcmpsd $0xA, %%xmm6, %%xmm8, %%xmm7",
"vcmpsd $0xA, (%%rax), %%xmm8, %%xmm7")
@@ -623,6 +626,9 @@
GEN_test_RandM(VCMPSS_128_0x7,
"vcmpss $7, %%xmm6, %%xmm8, %%xmm7",
"vcmpss $7, (%%rax), %%xmm8, %%xmm7")
+GEN_test_RandM(VCMPSS_128_0x8,
+ "vcmpss $8, %%xmm6, %%xmm8, %%xmm7",
+ "vcmpss $8, (%%rax), %%xmm8, %%xmm7")
GEN_test_RandM(VCMPSS_128_0xA,
"vcmpss $0xA, %%xmm6, %%xmm8, %%xmm7",
"vcmpss $0xA, (%%rax), %%xmm8, %%xmm7")
@@ -2205,6 +2211,7 @@
DO_D( VCMPSS_128_0x5 );
DO_D( VCMPSS_128_0x6 );
DO_D( VCMPSS_128_0x7 );
+ DO_D( VCMPSS_128_0x8 );
DO_D( VCMPSS_128_0xA );
DO_D( VCMPSS_128_0xC );
DO_D( VCMPSS_128_0xC );
@@ -2309,6 +2316,7 @@
DO_D( VCMPSD_128_0x5 );
DO_D( VCMPSD_128_0x6 );
DO_D( VCMPSD_128_0x7 );
+ DO_D( VCMPSD_128_0x8 );
DO_D( VCMPSD_128_0xA );
DO_D( VCMPSD_128_0xC );
DO_D( VCMPSD_128_0xD );
|
|
From: <sv...@va...> - 2013-03-27 15:38:57
|
tom 2013-03-27 15:38:47 +0000 (Wed, 27 Mar 2013)
New Revision: 2703
Log:
Add support for the EQ_UQ SSE FP comparison operation. BZ#317444.
Modified files:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c (+1 -1)
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2013-03-27 11:37:33 +00:00 (rev 2702)
+++ trunk/priv/guest_amd64_toIR.c 2013-03-27 15:38:47 +00:00 (rev 2703)
@@ -8753,7 +8753,7 @@
case 0x5: XXX(False, Iop_CmpLT32Fx4, True); break; // NLT_US
case 0x6: XXX(False, Iop_CmpLE32Fx4, True); break; // NLE_US
case 0x7: XXX(False, Iop_CmpUN32Fx4, True); break; // ORD_Q
- // 0x8 EQ_UQ
+ case 0x8: XXX(False, Iop_CmpEQ32Fx4, False); break; // EQ_UQ
case 0x9: XXX(True, Iop_CmpLE32Fx4, True); break; // NGE_US
/* "Enhanced Comparison Predicate[s] for VEX-Encoded [insns] */
case 0xA: XXX(True, Iop_CmpLT32Fx4, True); break; // NGT_US
|
|
From: <sv...@va...> - 2013-03-27 12:41:09
|
sewardj 2013-03-27 12:40:48 +0000 (Wed, 27 Mar 2013)
New Revision: 13341
Log:
Commit Philippe Waroquiers' initial work multithread valgrind (mtV)
to branches/MTV. See #301830.
(Philippe Waroquiers, phi...@sk...)
Added files:
branches/MTV/coregrind/m_lock.c
branches/MTV/coregrind/m_scheduler/sched-lock-rwlock.c
branches/MTV/docs/internals/mtV.txt
branches/MTV/include/priv_atomic_amd64.h
branches/MTV/include/priv_atomic_x86.h
branches/MTV/include/pub_tool_atomic.h
branches/MTV/include/pub_tool_lock.h
branches/MTV/perf/big_parallel_sleepers.c
branches/MTV/perf/big_parallel_sleepers.vgperf
Modified files:
branches/MTV/coregrind/Makefile.am
branches/MTV/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/MTV/coregrind/m_aspacemgr/priv_aspacemgr.h
branches/MTV/coregrind/m_dispatch/dispatch-amd64-linux.S
branches/MTV/coregrind/m_dispatch/dispatch-x86-linux.S
branches/MTV/coregrind/m_gdbserver/m_gdbserver.c
branches/MTV/coregrind/m_libcassert.c
branches/MTV/coregrind/m_main.c
branches/MTV/coregrind/m_scheduler/priv_sched-lock-impl.h
branches/MTV/coregrind/m_scheduler/priv_sched-lock.h
branches/MTV/coregrind/m_scheduler/priv_sema.h
branches/MTV/coregrind/m_scheduler/sched-lock-generic.c
branches/MTV/coregrind/m_scheduler/sched-lock.c
branches/MTV/coregrind/m_scheduler/scheduler.c
branches/MTV/coregrind/m_scheduler/sema.c
branches/MTV/coregrind/m_scheduler/ticket-lock-linux.c
branches/MTV/coregrind/m_signals.c
branches/MTV/coregrind/m_stacks.c
branches/MTV/coregrind/m_syswrap/syswrap-amd64-linux.c
branches/MTV/coregrind/m_syswrap/syswrap-linux.c
branches/MTV/coregrind/m_syswrap/syswrap-main.c
branches/MTV/coregrind/m_syswrap/syswrap-x86-linux.c
branches/MTV/coregrind/m_threadstate.c
branches/MTV/coregrind/m_transtab.c
branches/MTV/coregrind/pub_core_scheduler.h
branches/MTV/coregrind/pub_core_threadstate.h
branches/MTV/gdbserver_tests/sleepers.c
branches/MTV/include/Makefile.am
branches/MTV/memcheck/mc_main.c
branches/MTV/perf/Makefile.am
Modified: branches/MTV/coregrind/m_signals.c (+6 -5)
===================================================================
--- branches/MTV/coregrind/m_signals.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_signals.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -2116,7 +2116,8 @@
/* The thread isn't currently running, make it so before going on */
vg_assert(tst->status == VgTs_WaitSys);
- VG_(acquire_BigLock)(tid, "async_signalhandler");
+ VG_(acquire_BigLock)(tid, VgTs_ReadLock, "async_signalhandler");
+ //mtV? unclear which kind of lock we need here. Normally a readlock I guess.
info->si_code = sanitize_si_code(info->si_code);
@@ -2414,12 +2415,13 @@
void sync_signalhandler_from_kernel ( ThreadId tid,
Int sigNo, vki_siginfo_t *info, struct vki_ucontext *uc )
{
+ ThreadState *tst = VG_(get_ThreadState)(tid);
/* Check to see if some part of Valgrind itself is interested in faults.
The fault catcher should never be set whilst we're in generated code, so
check for that. AFAIK the only use of the catcher right now is
memcheck's leak detector. */
if (fault_catcher) {
- vg_assert(VG_(in_generated_code) == False);
+ vg_assert(tst->in_generated_code == False);
(*fault_catcher)(sigNo, (Addr)info->VKI_SIGINFO_si_addr);
/* If the catcher returns, then it didn't handle the fault,
@@ -2434,14 +2436,13 @@
/* OK, this is a signal we really have to deal with. If it came
from the client's code, then we can jump back into the scheduler
and have it delivered. Otherwise it's a Valgrind bug. */
- ThreadState *tst = VG_(get_ThreadState)(tid);
if (VG_(sigismember)(&tst->sig_mask, sigNo)) {
/* signal is blocked, but they're not allowed to block faults */
VG_(set_default_handler)(sigNo);
}
- if (VG_(in_generated_code)) {
+ if (tst->in_generated_code) {
if (VG_(gdbserver_report_signal) (sigNo, tid)
|| VG_(sigismember)(&tst->sig_mask, sigNo)) {
/* Can't continue; must longjmp back to the scheduler and thus
@@ -2553,7 +2554,7 @@
if (VG_(clo_trace_signals))
VG_(dmsg)("sigvgkill for lwp %d tid %d\n", VG_(gettid)(), tid);
- VG_(acquire_BigLock)(tid, "sigvgkill_handler");
+ VG_(acquire_BigLock)(tid, VgTs_ReadLock, "sigvgkill_handler"); //mtV? see async_signalhandler
vg_assert(signo == VG_SIGVGKILL);
vg_assert(si->si_signo == signo);
Modified: branches/MTV/coregrind/m_scheduler/priv_sema.h (+6 -0)
===================================================================
--- branches/MTV/coregrind/m_scheduler/priv_sema.h 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_scheduler/priv_sema.h 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -34,10 +34,16 @@
/* Not really a semaphore, but use a pipe for a token-passing scheme */
typedef struct {
Int pipe[2];
+ Char sema_char;
Int owner_lwpid; /* who currently has it */
Bool held_as_LL; /* if held, True == held by a _LL call */
} vg_sema_t;
+/* Cycle the sema_char passed through the pipe through 'A' .. 'Z' to make
+ it easier to make sense of strace/truss output - makes it possible
+ to see more clearly the change of ownership of the lock. Need to
+ be careful to reinitialise it at fork() time. */
+
// Nb: this may be OS-specific, but let's not factor it out until we
// implement an OS port for which this isn't ok.
void ML_(sema_init) ( vg_sema_t *sema );
Modified: branches/MTV/coregrind/m_syswrap/syswrap-amd64-linux.c (+5 -1)
===================================================================
--- branches/MTV/coregrind/m_syswrap/syswrap-amd64-linux.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_syswrap/syswrap-amd64-linux.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -57,7 +57,6 @@
#include "priv_syswrap-linux-variants.h" /* decls of linux variant wrappers */
#include "priv_syswrap-main.h"
-
/* ---------------------------------------------------------------------
clone() handling
------------------------------------------------------------------ */
@@ -290,7 +289,12 @@
know that this thread has come into existence. If the clone
fails, we'll send out a ll_exit notification for it at the out:
label below, to clean up. */
+#ifdef SINGLEV
vg_assert(VG_(owns_BigLock_LL)(ptid));
+#else
+ vg_assert(ptst->slk == VgTs_ReadLock);
+ //mtV? or should we acquire the write lock ?
+#endif
VG_TRACK ( pre_thread_ll_create, ptid, ctid );
if (flags & VKI_CLONE_SETTLS) {
Modified: branches/MTV/coregrind/m_aspacemgr/aspacemgr-linux.c (+26 -4)
===================================================================
--- branches/MTV/coregrind/m_aspacemgr/aspacemgr-linux.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_aspacemgr/aspacemgr-linux.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -300,6 +300,8 @@
static NSegment nsegments[VG_N_SEGMENTS];
static Int nsegments_used = 0;
+static Mutex ns_mutex;
+
#define Addr_MIN ((Addr)0)
#define Addr_MAX ((Addr)(-1ULL))
@@ -1196,14 +1198,22 @@
readonly data. */
NSegment const * VG_(am_find_nsegment) ( Addr a )
{
+ // mtV? Well, we are locking the data structure while we search it.
+ // But we return a pointer to it ???
+ // So, what if nsegments[i] is changed afterwards by another thread ?
+ VG_(mutex_lock)(&ns_mutex);
Int i = find_nsegment_idx(a);
aspacem_assert(i >= 0 && i < nsegments_used);
aspacem_assert(nsegments[i].start <= a);
aspacem_assert(a <= nsegments[i].end);
- if (nsegments[i].kind == SkFree)
+ if (nsegments[i].kind == SkFree) {
+ VG_(mutex_unlock)(&ns_mutex);
return NULL;
- else
+ }
+ else {
+ VG_(mutex_unlock)(&ns_mutex);
return &nsegments[i];
+ }
}
@@ -1323,7 +1333,10 @@
Bool VG_(am_is_valid_for_client)( Addr start, SizeT len,
UInt prot )
{
- return is_valid_for_client( start, len, prot, False/*free not OK*/ );
+ VG_(mutex_lock)(&ns_mutex);
+ Bool res = is_valid_for_client( start, len, prot, False/*free not OK*/ );
+ VG_(mutex_unlock)(&ns_mutex);
+ return res;
}
/* Variant of VG_(am_is_valid_for_client) which allows free areas to
@@ -1333,7 +1346,10 @@
Bool VG_(am_is_valid_for_client_or_free_or_resvn)
( Addr start, SizeT len, UInt prot )
{
- return is_valid_for_client( start, len, prot, True/*free is OK*/ );
+ VG_(mutex_lock)(&ns_mutex);
+ Bool res = is_valid_for_client( start, len, prot, True/*free is OK*/ );
+ VG_(mutex_unlock)(&ns_mutex);
+ return res;
}
@@ -1598,6 +1614,8 @@
NSegment seg;
Addr suggested_clstack_top;
+ VG_(mutex_init)(&ns_mutex);
+
aspacem_assert(sizeof(Word) == sizeof(void*));
aspacem_assert(sizeof(Addr) == sizeof(void*));
aspacem_assert(sizeof(SizeT) == sizeof(void*));
@@ -2023,6 +2041,7 @@
NSegment seg;
Bool needDiscard;
+ VG_(mutex_lock)(&ns_mutex);
aspacem_assert(len > 0);
aspacem_assert(VG_IS_PAGE_ALIGNED(a));
aspacem_assert(VG_IS_PAGE_ALIGNED(len));
@@ -2052,6 +2071,7 @@
}
add_segment( &seg );
AM_SANITY_CHECK;
+ VG_(mutex_unlock)(&ns_mutex);
return needDiscard;
}
@@ -2748,11 +2768,13 @@
segment. */
void VG_(am_set_segment_hasT_if_SkFileC_or_SkAnonC)( const NSegment* seg )
{
+ VG_(mutex_lock)(&ns_mutex);
Int i = segAddr_to_index( seg );
aspacem_assert(i >= 0 && i < nsegments_used);
if (nsegments[i].kind == SkAnonC || nsegments[i].kind == SkFileC) {
nsegments[i].hasT = True;
}
+ VG_(mutex_unlock)(&ns_mutex);
}
Modified: branches/MTV/perf/Makefile.am (+5 -1)
===================================================================
--- branches/MTV/perf/Makefile.am 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/perf/Makefile.am 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -6,6 +6,7 @@
EXTRA_DIST = \
bigcode1.vgperf \
bigcode2.vgperf \
+ big_parallel_sleepers.vgperf \
bz2.vgperf \
fbench.vgperf \
ffbench.vgperf \
@@ -18,7 +19,8 @@
test_input_for_tinycc.c
check_PROGRAMS = \
- bigcode bz2 fbench ffbench heap many-loss-records many-xpts sarp tinycc
+ bigcode big_parallel_sleepers bz2 fbench ffbench heap \
+ many-loss-records many-xpts sarp tinycc
AM_CFLAGS += -O $(AM_FLAG_M3264_PRI)
AM_CXXFLAGS += -O $(AM_FLAG_M3264_PRI)
@@ -30,6 +32,8 @@
fbench_CFLAGS = $(AM_CFLAGS) -O2
ffbench_LDADD = -lm
+big_parallel_sleepers_CFLAGS = $(AM_CFLAGS) -lpthread
+
tinycc_CFLAGS = $(AM_CFLAGS) -Wno-shadow -Wno-inline
if HAS_POINTER_SIGN_WARNING
tinycc_CFLAGS += -Wno-pointer-sign
Added: branches/MTV/include/priv_atomic_x86.h (+399 -0)
===================================================================
--- branches/MTV/include/priv_atomic_x86.h 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/include/priv_atomic_x86.h 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -0,0 +1,399 @@
+
+/*--------------------------------------------------------------------*/
+/*--- Atomic primitives for x86. priv_atomic_x86.h ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+ This file is part of Valgrind, a dynamic binary instrumentation
+ framework.
+ Derived from glibc 2.13
+ Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <dr...@re...>, 2002.
+
+ Copyright (C) 2012-2012 Philippe Waroquiers
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __PRIV_ATOMIC_X86_H
+#define __PRIV_ATOMIC_X86_H
+
+#define LOCK_PREFIX "lock;"
+
+
+# define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
+ ({ __typeof (*mem) ret; \
+ __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" \
+ : "=a" (ret), "=m" (*mem) \
+ : "q" (newval), "m" (*mem), "0" (oldval)); \
+ ret; })
+
+# define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
+ ({ __typeof (*mem) ret; \
+ __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" \
+ : "=a" (ret), "=m" (*mem) \
+ : "r" (newval), "m" (*mem), "0" (oldval)); \
+ ret; })
+
+# define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
+ ({ __typeof (*mem) ret; \
+ __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" \
+ : "=a" (ret), "=m" (*mem) \
+ : "r" (newval), "m" (*mem), "0" (oldval)); \
+ ret; })
+
+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
+ ({ __typeof (*mem) ret; \
+ __asm __volatile (LOCK_PREFIX "cmpxchg8b %1" \
+ : "=A" (ret), "=m" (*mem) \
+ : "b" (((unsigned long long int) (newval)) \
+ & 0xffffffff), \
+ "c" (((unsigned long long int) (newval)) >> 32), \
+ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
+ & 0xffffffff), \
+ "d" (((unsigned long long int) (oldval)) >> 32)); \
+ ret; })
+
+
+/* Note that we need no lock prefix. */
+#define atomic_exchange_acq(mem, newvalue) \
+ ({ __typeof (*mem) result; \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile ("xchgb %b0, %1" \
+ : "=q" (result), "=m" (*mem) \
+ : "0" (newvalue), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile ("xchgw %w0, %1" \
+ : "=r" (result), "=m" (*mem) \
+ : "0" (newvalue), "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile ("xchgl %0, %1" \
+ : "=r" (result), "=m" (*mem) \
+ : "0" (newvalue), "m" (*mem)); \
+ else \
+ { \
+ result = 0; \
+ vg_assert (False); \
+ } \
+ result; })
+
+
+#define __arch_exchange_and_add_body(lock, pfx, mem, value) \
+ ({ __typeof (*mem) __result; \
+ __typeof (value) __addval = (value); \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (lock "xaddb %b0, %1" \
+ : "=q" (__result), "=m" (*mem) \
+ : "0" (__addval), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (lock "xaddw %w0, %1" \
+ : "=r" (__result), "=m" (*mem) \
+ : "0" (__addval), "m" (*mem))); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (lock "xaddl %0, %1" \
+ : "=r" (__result), "=m" (*mem) \
+ : "0" (__addval), "m" (*mem)); \
+ else \
+ { \
+ __typeof (mem) __memp = (mem); \
+ __typeof (*mem) __tmpval; \
+ __result = *__memp; \
+ do \
+ __tmpval = __result; \
+ while ((__result = pfx##_compare_and_exchange_val_64_acq \
+ (__memp, __result + __addval, __result)) == __tmpval); \
+ } \
+ __result; })
+
+# define atomic_exchange_and_add(mem, value) \
+ __arch_exchange_and_add_body (LOCK_PREFIX, __arch, mem, value)
+
+#define __arch_add_body(lock, pfx, mem, value) \
+ do { \
+ if (__builtin_constant_p (value) && (value) == 1) \
+ atomic_increment (mem); \
+ else if (__builtin_constant_p (value) && (value) == -1) \
+ atomic_decrement (mem); \
+ else if (sizeof (*mem) == 1) \
+ __asm __volatile (lock "addb %b1, %0" \
+ : "=m" (*mem) \
+ : "iq" (value), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (lock "addw %w1, %0" \
+ : "=m" (*mem) \
+ : "ir" (value), "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (lock "addl %1, %0" \
+ : "=m" (*mem) \
+ : "ir" (value), "m" (*mem)); \
+ else \
+ __sync_add_and_fetch(mem, value); \
+ } while (0)
+#if 0
+//mtV?
+ The below gives compilation problems:
+error: impossible register constraint in ‘asm’
+Waiting for that, we use __sync_add_and_fetch
+To be fixed ...
+ else \
+ { \
+ __typeof (value) __addval = (value); \
+ __typeof (mem) __memp = (mem); \
+ __typeof (*mem) __oldval = *__memp; \
+ __typeof (*mem) __tmpval; \
+ do \
+ __tmpval = __oldval; \
+ while ((__oldval = pfx##_compare_and_exchange_val_64_acq \
+ (__memp, __oldval + __addval, __oldval)) == __tmpval); \
+ }} while (0)
+#endif
+
+
+#define atomic_add(mem, value) \
+ __arch_add_body (LOCK_PREFIX, __arch, mem, value)
+
+
+#define atomic_add_negative(mem, value) \
+ ({ unsigned char __result; \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (LOCK_PREFIX "addb %b2, %0; sets %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "iq" (value), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (LOCK_PREFIX "addw %w2, %0; sets %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "ir" (value), "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (LOCK_PREFIX "addl %2, %0; sets %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "ir" (value), "m" (*mem)); \
+ else \
+ vg_assert (False); \
+ __result; })
+
+
+#define atomic_add_zero(mem, value) \
+ ({ unsigned char __result; \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (LOCK_PREFIX "addb %b2, %0; setz %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "iq" (value), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (LOCK_PREFIX "addw %w2, %0; setz %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "ir" (value), "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (LOCK_PREFIX "addl %2, %0; setz %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "ir" (value), "m" (*mem)); \
+ else \
+ vg_assert (False); \
+ __result; })
+
+
+#define __arch_increment_body(lock, pfx, mem) \
+ do { \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (lock "incb %b0" \
+ : "=m" (*mem) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (lock "incw %w0" \
+ : "=m" (*mem) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (lock "incl %0" \
+ : "=m" (*mem) \
+ : "m" (*mem)); \
+ else \
+ __sync_add_and_fetch(mem, 1); \
+ } while (0)
+
+#if 0
+ //mtV?
+ //????? the below gives asm error on x86 at least ?????
+ /// replacing by __sync_add_and_fetch
+ else \
+ { \
+ __typeof (mem) __memp = (mem); \
+ __typeof (*mem) __oldval = *__memp; \
+ __typeof (*mem) __tmpval; \
+ do \
+ __tmpval = __oldval; \
+ while ((__oldval = pfx##_compare_and_exchange_val_64_acq \
+ (__memp, __oldval + 1, __oldval)) == __tmpval); \
+ }
+#endif
+
+#define atomic_increment(mem) __arch_increment_body (LOCK_PREFIX, __arch, mem)
+
+
+#define atomic_increment_and_test(mem) \
+ ({ unsigned char __result; \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (LOCK_PREFIX "incb %0; sete %b1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (LOCK_PREFIX "incw %0; sete %w1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (LOCK_PREFIX "incl %0; sete %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "m" (*mem)); \
+ else \
+ vg_assert (False); \
+ __result; })
+
+
+#define __arch_decrement_body(lock, pfx, mem) \
+ do { \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (lock "decb %b0" \
+ : "=m" (*mem) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (lock "decw %w0" \
+ : "=m" (*mem) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (lock "decl %0" \
+ : "=m" (*mem) \
+ : "m" (*mem)); \
+ else \
+ { \
+ __typeof (mem) __memp = (mem); \
+ __typeof (*mem) __oldval = *__memp; \
+ __typeof (*mem) __tmpval; \
+ do \
+ __tmpval = __oldval; \
+ while ((__oldval = pfx##_compare_and_exchange_val_64_acq \
+ (__memp, __oldval - 1, __oldval)) == __tmpval); \
+ } \
+ } while (0)
+
+#define atomic_decrement(mem) __arch_decrement_body (LOCK_PREFIX, __arch, mem)
+
+#define atomic_decrement_and_test(mem) \
+ ({ unsigned char __result; \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (LOCK_PREFIX "decb %b0; sete %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (LOCK_PREFIX "decw %w0; sete %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (LOCK_PREFIX "decl %0; sete %1" \
+ : "=m" (*mem), "=qm" (__result) \
+ : "m" (*mem)); \
+ else \
+ vg_assert (False); \
+ __result; })
+
+
+#define atomic_bit_set(mem, bit) \
+ do { \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (LOCK_PREFIX "orb %b2, %0" \
+ : "=m" (*mem) \
+ : "m" (*mem), "iq" (1 << (bit))); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (LOCK_PREFIX "orw %w2, %0" \
+ : "=m" (*mem) \
+ : "m" (*mem), "ir" (1 << (bit))); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (LOCK_PREFIX "orl %2, %0" \
+ : "=m" (*mem) \
+ : "m" (*mem), "ir" (1 << (bit))); \
+ else \
+ vg_assert (False); \
+ } while (0)
+
+
+#define atomic_bit_test_set(mem, bit) \
+ ({ unsigned char __result; \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (LOCK_PREFIX "btsb %3, %1; setc %0" \
+ : "=q" (__result), "=m" (*mem) \
+ : "m" (*mem), "ir" (bit)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (LOCK_PREFIX "btsw %3, %1; setc %0" \
+ : "=q" (__result), "=m" (*mem) \
+ : "m" (*mem), "ir" (bit)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (LOCK_PREFIX "btsl %3, %1; setc %0" \
+ : "=q" (__result), "=m" (*mem) \
+ : "m" (*mem), "ir" (bit)); \
+ else \
+ vg_assert (False); \
+ __result; })
+
+
+#define atomic_delay() asm ("rep; nop")
+
+
+#define __arch_and_body(lock, mem, mask) \
+ do { \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (lock "andb %b1, %0" \
+ : "=m" (*mem) \
+ : "iq" (mask), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (lock "andw %w1, %0" \
+ : "=m" (*mem) \
+ : "ir" (mask), "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (lock "andl %1, %0" \
+ : "=m" (*mem) \
+ : "ir" (mask), "m" (*mem)); \
+ else \
+ vg_assert (False); \
+ } while (0)
+
+
+#define atomic_and(mem, mask) __arch_and_body (LOCK_PREFIX, mem, mask)
+
+#define __arch_or_body(lock, mem, mask) \
+ do { \
+ if (sizeof (*mem) == 1) \
+ __asm __volatile (lock "orb %b1, %0" \
+ : "=m" (*mem) \
+ : "iq" (mask), "m" (*mem)); \
+ else if (sizeof (*mem) == 2) \
+ __asm __volatile (lock "orw %w1, %0" \
+ : "=m" (*mem) \
+ : "ir" (mask), "m" (*mem)); \
+ else if (sizeof (*mem) == 4) \
+ __asm __volatile (lock "orl %1, %0" \
+ : "=m" (*mem) \
+ : "ir" (mask), "m" (*mem)); \
+ else \
+ vg_assert (False); \
+ } while (0)
+
+#define atomic_or(mem, mask) __arch_or_body (LOCK_PREFIX, mem, mask)
+
+#endif /* __PRIV_ATOMIC_X86_H */
+
+/*--------------------------------------------------------------------*/
+/*--- end priv_atomic_x86.h ---*/
+/*--------------------------------------------------------------------*/
Modified: branches/MTV/gdbserver_tests/sleepers.c (+1 -1)
===================================================================
--- branches/MTV/gdbserver_tests/sleepers.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/gdbserver_tests/sleepers.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -132,7 +132,7 @@
pthread_t ebbr, egll, zzzz;
struct spec b, l, p, m;
char *some_mem __attribute__((unused)) = malloc(100);
- setaffinity();
+ if (argc < 6) setaffinity(); // add -p to have parallel sleepers
if (argc > 1)
loops = atoi(argv[1]);
Modified: branches/MTV/coregrind/m_transtab.c (+54 -9)
===================================================================
--- branches/MTV/coregrind/m_transtab.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_transtab.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -44,8 +44,8 @@
#include "pub_core_mallocfree.h" // VG_(out_of_memory_NORETURN)
#include "pub_core_xarray.h"
#include "pub_core_dispatch.h" // For VG_(disp_cp*) addresses
+#include "pub_tool_lock.h"
-
#define DEBUG_TRANSTAB 0
@@ -348,6 +348,20 @@
N_TC_SECTORS. The initial -1 value indicates the TT/TC system is
not yet initialised.
*/
+
+/* translation table search/add/... protected by the below mutex.
+ Why is this mutex needed ?
+ Why can't we just use the Big Lock e.g. in Read mode ?
+ Having the Big Lock in read mode does not provide
+ a safe access to the translation table. A.o., a search in
+ the translation table will modify various "small caches"
+ arrays (such as the order in which sectors are searched.
+ It would be possible to use the Big Lock in write mode.
+ This was even tried. This gave catastrophic performances:
+ more total CPU and longer total elapsed time than the
+ serialised Valgrind. */
+static Mutex tt_mutex;
+
static Sector sectors[N_SECTORS];
static Int youngest_sector = -1;
@@ -673,6 +687,7 @@
{
Int i;
+ VG_(mutex_lock) (&tt_mutex);
/* Search order logic copied from VG_(search_transtab). */
for (i = 0; i < N_SECTORS; i++) {
Int sno = sector_search_order[i];
@@ -700,9 +715,10 @@
/* if this hx entry corresponds to dead host code, we must
tell this code has not been found, as it cannot be patched. */
- if (HostExtent__is_dead (hx, sec))
+ if (HostExtent__is_dead (hx, sec)) {
+ VG_(mutex_unlock) (&tt_mutex);
return False;
-
+ }
vg_assert(sec->tt[tteNo].status == InUse);
/* Can only half check that the found TTEntry contains hcode,
due to not having a length value for the hcode in the
@@ -711,9 +727,11 @@
/* Looks plausible */
*from_sNo = sno;
*from_tteNo = (UInt)tteNo;
+ VG_(mutex_unlock) (&tt_mutex);
return True;
}
}
+ VG_(mutex_unlock) (&tt_mutex);
return False;
}
@@ -783,7 +801,27 @@
}
TTEntry* from_tte = index_tte(from_sNo, from_tteNo);
+ HWord from_offs = (HWord)( (UChar*)from__patch_addr
+ - (UChar*)from_tte->tcptr );
+ vg_assert(from_offs < 100000/* let's say */);
+ /* The chaining might have been done already by another thread.
+ In such a case, don't redo the chaining. */
+ /* Visit all OutEdges owned by from_tte. */
+ UWord n = OutEdgeArr__size(&from_tte->out_edges);
+ UWord i;
+ for (i = 0; i < n; i++) {
+ OutEdge* oe = OutEdgeArr__index(&from_tte->out_edges, i);
+ if (oe->to_sNo == to_sNo && oe->to_tteNo == to_tteNo
+ && oe->from_offs == from_offs) {
+ VG_(debugLog)(1,"transtab",
+ "host code %p already chained"
+ " => no chaining redone\n",
+ from__patch_addr);
+ return;
+ }
+ }
+
/* Get VEX to do the patching itself. We have to hand it off
since it is host-dependent. */
VexInvalRange vir
@@ -808,9 +846,6 @@
ie.from_sNo = from_sNo;
ie.from_tteNo = from_tteNo;
ie.to_fastEP = to_fastEP;
- HWord from_offs = (HWord)( (UChar*)from__patch_addr
- - (UChar*)from_tte->tcptr );
- vg_assert(from_offs < 100000/* let's say */);
ie.from_offs = (UInt)from_offs;
/* This is the new to_ -> from_ backlink to add. */
@@ -1528,6 +1563,7 @@
VG_(printf)("add_to_transtab(entry = 0x%llx, len = %d) ...\n",
entry, code_len);
+ VG_(mutex_lock) (&tt_mutex);
n_in_count++;
n_in_tsize += code_len;
n_in_osize += vge_osize(vge);
@@ -1660,9 +1696,9 @@
/* Note the eclass numbers for this translation. */
upd_eclasses_after_add( §ors[y], i );
+ VG_(mutex_unlock) (&tt_mutex);
}
-
/* Search for the translation of the given guest address. If
requested, a successful search can also cause the fast-caches to be
updated.
@@ -1678,18 +1714,22 @@
vg_assert(init_done);
/* Find the initial probe point just once. It will be the same in
all sectors and avoids multiple expensive % operations. */
- n_full_lookups++;
k = -1;
kstart = HASH_TT(guest_addr);
vg_assert(kstart >= 0 && kstart < N_TTES_PER_SECTOR);
+ VG_(mutex_lock) (&tt_mutex);
+ n_full_lookups++;
+
/* Search in all the sectors,using sector_search_order[] as a
heuristic guide as to what order to visit the sectors. */
for (i = 0; i < N_SECTORS; i++) {
sno = sector_search_order[i];
- if (UNLIKELY(sno == -1))
+ if (UNLIKELY(sno == -1)) {
+ VG_(mutex_unlock) (&tt_mutex);
return False; /* run out of sectors to search */
+ }
k = kstart;
for (j = 0; j < N_TTES_PER_SECTOR; j++) {
@@ -1714,6 +1754,7 @@
sector_search_order[i-1] = sector_search_order[i];
sector_search_order[i] = tmp;
}
+ VG_(mutex_unlock) (&tt_mutex);
return True;
}
if (sectors[sno].tt[k].status == Empty)
@@ -1729,6 +1770,7 @@
}
/* Not found in any sector. */
+ VG_(mutex_unlock) (&tt_mutex);
return False;
}
@@ -2175,6 +2217,8 @@
{
Int i, j, avg_codeszQ;
+ VG_(mutex_init) (&tt_mutex);
+ VG_(mutex_lock)(&tt_mutex);
vg_assert(!init_done);
init_done = True;
@@ -2249,6 +2293,7 @@
N_SECTORS * N_TTES_PER_SECTOR,
N_SECTORS * N_TTES_PER_SECTOR_USABLE,
SECTOR_TT_LIMIT_PERCENT );
+ VG_(mutex_unlock)(&tt_mutex);
}
Modified: branches/MTV/coregrind/m_syswrap/syswrap-linux.c (+8 -1)
===================================================================
--- branches/MTV/coregrind/m_syswrap/syswrap-linux.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_syswrap/syswrap-linux.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -80,7 +80,7 @@
vg_assert(tst->status == VgTs_Init);
/* make sure we get the CPU lock before doing anything significant */
- VG_(acquire_BigLock)(tid, "thread_wrapper(starting new thread)");
+ VG_(acquire_BigLock)(tid, VgTs_WriteLock, "thread_wrapper(starting new thread)");
if (0)
VG_(printf)("thread tid %d started: stack = %p\n",
@@ -424,6 +424,13 @@
VG_(do_atfork_pre)(tid);
+#ifdef SINGLEV
+ vg_assert(VG_(owns_BigLock_LL)(ptid));
+#else
+ vg_assert(VG_(threads)[tid].slk == VgTs_ReadLock);
+ //mtV? or should we rather have the write lock ?
+#endif
+
/* Since this is the fork() form of clone, we don't need all that
VG_(clone) stuff */
#if defined(VGP_x86_linux) \
Modified: branches/MTV/coregrind/m_libcassert.c (+6 -2)
===================================================================
--- branches/MTV/coregrind/m_libcassert.c 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_libcassert.c 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -230,11 +230,15 @@
{
Int i;
VG_(printf)("\nsched status:\n");
+#ifdef SINGLEV
VG_(printf)(" running_tid=%d\n", VG_(get_running_tid)());
+#endif
for (i = 1; i < VG_N_THREADS; i++) {
if (VG_(threads)[i].status == VgTs_Empty) continue;
- VG_(printf)( "\nThread %d: status = %s\n", i,
- VG_(name_of_ThreadStatus)(VG_(threads)[i].status) );
+ VG_(printf)( "\nThread %d: status = %s slk = %s in_gen_code %d\n", i,
+ VG_(name_of_ThreadStatus)(VG_(threads)[i].status),
+ VG_(name_of_SchedLockKind)(VG_(threads)[i].slk),
+ VG_(threads)[i].in_generated_code);
VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
}
VG_(printf)("\n");
Modified: branches/MTV/coregrind/m_dispatch/dispatch-x86-linux.S (+2 -2)
===================================================================
--- branches/MTV/coregrind/m_dispatch/dispatch-x86-linux.S 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/coregrind/m_dispatch/dispatch-x86-linux.S 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -200,7 +200,7 @@
movl OFFSET_x86_EIP(%ebp), %eax
/* stats only */
- addl $1, VG_(stats__n_xindirs_32)
+ lock addl $1, VG_(stats__n_xindirs_32)
/* try a fast lookup in the translation cache */
movl %eax, %ebx /* next guest addr */
@@ -216,7 +216,7 @@
fast_lookup_failed:
/* stats only */
- addl $1, VG_(stats__n_xindir_misses_32)
+ lock addl $1, VG_(stats__n_xindir_misses_32)
movl $VG_TRC_INNER_FASTMISS, %eax
movl $0, %edx
Added: branches/MTV/docs/internals/mtV.txt (+982 -0)
===================================================================
--- branches/MTV/docs/internals/mtV.txt 2013-03-27 11:43:20 +00:00 (rev 13340)
+++ branches/MTV/docs/internals/mtV.txt 2013-03-27 12:40:48 +00:00 (rev 13341)
@@ -0,0 +1,982 @@
+Valgrind supports multi-threaded applications, but schedules
+only one thread at a time. In other words, a multi-threaded application
+running under Valgrind will not benefit from multiple CPUs.
+
+A prototype has been developped of a "really" multi threaded Valgrind
+(mtV). The prototype is made of ugly and/or inefficient
+kludges/trials/...
+Now, you have been warned that you will encounter horrors.
+The only objective of this prototype is to understand the problems of
+doing an mtV, see what are the possible approaches, possible
+performance gains.
+The current state of the patches and/or tests results are maintained
+in bugzilla in bug
+https://bugs.kde.org/show_bug.cgi?id=301830
+
+
+The document starts with a description of the current behaviour and
+structure of Valgrind.
+It then contains a description of the prototype developped,
+the techniques used, the problems still opened.
+The document below has some sections.
+Section title starts with a #.
+The first section is some general information, which might
+be skipped by most V developpers.
+
+
+# The 3 Valgrind "layers":
+==========================
+ ------------------------------------------------------------------------
+ | | |
+ | TOOL "runtime code" | "instrument function" |
+ ------------------------------------------------------------------------
+ | |
+ | GUEST JIT code |
+ | (generated/instrumented code) |
+ --------------------------------------------------------------------
+ | |
+ | CORE layer |
+ --------------------------------------------------------------------
+
+
+ CORE layer : this contains the V framework & modules
+ used to support the TOOL code.
+ TOOL layer : made of two big parts.
+ 1. The instrument function is called by the CORE layer.
+ It instruments the code of the executable running
+ under V small blocks at a time, producing
+ "translated and instrumented" small pieces of JIT code.
+ These pieces of JIT codes are called by the scheduler
+ contained in the CORE layer.
+ 2. the TOOL "runtime code" (C helper functions and data
+ structures needed by the GUEST JIT code).
+ For example, for memcheck, it contains the data
+ structures to track the allocated and freed memory.
+ GUEST layer : contains GUEST JIT : this is the process guest code
+ translated and instrumented by the TOOL instrument function.
+
+
+ The typical control flow is:
+
+ 1. CORE layer calls the "instrument function", producing
+ instrumented GUEST JIT code
+
+ 2. CORE layer calls the GUEST JIT generated code.
+
+ 3. the GUEST JIT code runs. It will typically do many calls to
+ the tool runtime code.
+
+ Note: the none tool is special : the "instrument function"
+ does not do any code transformation. The none tool has no
+ runtime code.
+
+ The tool runtime code can itself do calls to the CORE layer.
+
+ Example:
+ the guest process code is: char *s;
+ s = malloc (10);
+ strcpy(s, "abc");
+ (*fnptr)();
+ The following sequence will happen:
+ 1. CORE will decode the guest process code.
+ 2. CORE will call the TOOL function to instrument this decoded code
+ For memcheck, the instrumented code will be made of:
+ a call to the memcheck malloc replacement function
+ (this replacement function is part of memcheck runtime code,
+ it a.o. tracks the allocated memory to allow leak search).
+ an assignment of the result of the malloc replacement to s
+ a call to a tool C helper to indicate that s (the ptr) is now
+ initialized
+ a call to the function strcpy
+ a (dynamic) call to the function pointed to by fnptr.
+ 3. CORE will translate the instrumented code to executable code (JIT)
+ and will store this code in a data structure (the translation table).
+ Basically, the translation table is a mapping between a guest code
+ address and the corresponding translated JIT code.
+ 4. CORE scheduler will call the JIT code (the just translated piece of
+ code)
+ 5. the JIT code does the following:
+ call the tool malloc replacement function, which does:
+ call the CORE code to allocate a block of memory
+ (10 bytes + some admin overhead).
+ call the CORE code to compute (and store) a stack trace of
+ the guest code call stack.
+ call the CORE code to store in an hash table
+ the address of the allocated block
+ + the stack trace reference
+ maintain in a memcheck data structure that the 10 bytes are
+ accessible but not initialized.
+ the JIT code should normally call strcpy. Because strcpy
+ is not translated yet, the call code is exiting to the scheduler.
+ So, the JIT code executes a return, giving back the control to
+ the CORE scheduler
+ 6. the scheduler will translate the strcpy function (generating a new
+ piece of instrumented JIT code) and add it in the translation table.
+ Possibly, the table is full. Then the old translations have to be
+ removed from the table.
+ 7. The scheduler then calls the new JIT code
+ The JIT code will execute the strcpy instrumented JIT code
+ (this code will typically do multiple calls to the tool runtime
+ code to indicate that the 4 first bytes pointed to by s are now
+ initialized).
+ 8. The JIT code will search in the translation table for the
+ translated piece of code corresponding to *fnptr.
+ If existing, it is called.
+ Otherwise, control is given back to scheduler for instrumentation.
+
+
+For a typical tool and guest application being executed, most of the
+time is spent in GUEST JIT code, in the TOOL runtime code and in
+the CORE code. It is deemed that the time spent in TOOL instrument
+function is not a major part : usually, a translated piece of code
+is executed often.
+
+If we have an application containing multiple threads, there is no
+(to be more precise, almost no) parallel execution : at any moment
+in time, there is maximum one thread which "really" executes some code.
+This thread can be busy either in the CORE layer (possibly calling
+the TOOL instrument function), or can be busy in GUEST JIT code
+or in the TOOL runtime code.
+
+This "single thread busy" model is needed because neither the CORE
+layer, nor the TOOL layer (runtime or instrument) are re-entrant.
+These 3 layers are containing global variables/data structures/...
+which can only be used by one thread at a time.
+
+To ensure thread-safety of this non-reentrant code, V uses the very
+simple approach of "single thread busy". The "single thread busy" is
+ensured by the "Big Lock".
+
+A thread must acquire the Big Lock before it executes CORE or GUEST or
+TOOL code. When a thread acquires the Big Lock, it becomes THE running
+thread.
+
+The running thread releases the Big Lock after it has executed a certain
+quantity of GUEST code. Releasing the Big lock will allow another thread
+to run during some time.
+
+The other threads (ready to run) are all blocked, trying
+to acquire the Big Lock. One of these threads will acquire the Big Lock
+and start to execute some code. Typically, it will start to execute
+GUEST JIT code. But it might also start to execute CORE code because
+some guest code has to be instrumented.
+
+If the running thread executing GUEST JIT code has to execute a
+syscall (e.g. reading data on a socket), the running thread must
+release the Big Lock : if this thread would not release the Big Lock
+before doing a syscall, then the whole application will be blocked
+waiting for this thread to finish its syscall.
+
+In other words, the only real parallelism provided by Valgrind is
+between one thread doing some CPU in CORE/GUEST/TOOL
+and all other threads doing a system call called by GUEST JIT code.
+
+This is a very low level of parallelism. If an application does
+an intensive usage of threads, the typically slowdown factor
+of the V tool (e.g. 5 to 20 for memcheck) will be multiplied
+by the serial execution of the CORE/GUEST/TOOL code.
+
+The objective of the prototype is to determine how to best increase
+the parallelism of Valgrind.
+
+# the non-thread safe code
+==========================
+To increase the performance, we want to have multiple
+threads running in parallel (e.g. executing the code of the example).
+For this, the Big Lock must be removed and replaced by other
+techniques : in all the above steps, global data structures are used
+that will be corrupted by parallel access : almost all the steps are
+not thread safe if the Big Lock is removed.
+Typically, for the translation part, the following are not thread safe :
+ the VEX lib (used by the CORE and tool instrument function)
+ the tool instrument function itself
+ the CORE translation framework
+ ...
+
+At runtime (executing JIT code), e.g. the following are not thread safe
+ the CORE scheduler
+ the memcheck C helpers
+ memcheck malloc replacement
+ memcheck V and A bits C helpers
+ the CORE malloc/free
+ the CORE aspacemgr (used e.g. by the CORE malloc/free)
+ ...
+
+At many places in the code, we have statistical counters
+to help understand the behaviour/performance of V.
+(e.g. CORE malloc is counting how many bytes have been malloc-ed).
+These counters are all non-thread safe.
+
+The guest code might or might not be thread safe (e.g. might contain
+race condition). Such non thread safe guest code is not a problem
+for our objective, as such non thread safety will only corrupt the
+guest process data structure (the developper of the guest code might
+use helgrind to search for such non thread safe code).
+
+However, currently, even thread-safe guest code can result in non
+thread safe JIT code. For example, two threads executing
+at the same time a call to a not yet translated function (e.g. strcpy)
+will corrupt the JIT code (t-chaining).
+
+Making all the above thread safe can be done using various techniques:
+ using thread local storage instead of global variables
+ using mutex locks
+ using read/write locks
+ using atomic instructions
+ (e.g. for statistical counters)
+ using lock-less algorithms
+ (e.g. to maintain data structures without
+ using locks. Such lock-less algorithms are
+ based on atomic instructions)
+ Note: mutex can be implemented using atomic instructions and
+ OS syscalls (e.g. based on futex). If there is no contention,
+ the perf. of mutex based approach will be very probably similar
+ (or even maybe better?) than a lock-less algorithm.
+ Lock-less algorithms might however help either to increase
+ the throughput or to avoid difficulties such as deadlocks.
+
+The prototype has explored some of the above techniques.
+Some "testing" (ha ha) has been done. See # testing below.
+
+At this stage, only the thread safe aspect of CORE and JIT layer
+was looked at for the prototype. Nothing has been done to look
+at the tool runtime layer.
+
+# prototype
+===========
+
+The very first version of the prototype was based on the following
+idea (looking somewhat wrong a posteriori):
+ When a thread executes guest code, it has to use some data
+ structures (e.g. the translation table, the JIT code itself, ...).
+ These structures can't be protected by a mutex, otherwise
+ we are back to stage 1: no parallelism.
+ So, let's transform the Big Lock into a rwlock.
+ Before executing guest code, a thread must acquire
+ the Big Lock in read mode.
+ Before doing any modifications to any data structure, the
+ thread must acquire the Big Lock in write mode.
+
+So, the Big Lock was transformed into a rwlock by using
+low level "semaphores". These semaphores are the
+same as the current trunk scheduler "big lock", i.e. implemented
+using a pipe. !!! Fair scheduler has not been looked at.
+The rwlock implemented on top of these semaphores is not
+efficient as it implies several read/write syscall
+to acquire/release the lock. Really
+
+With this, a bunch of changes were needed to avoid assertions
+being raised. A.o.:
+ * the concept of THE lock owner disappears
+ so this cannot be checked anymore
+ * the concept of THE running thread disappears similarly
+ * the concept of a global 'in generated code' disappears
+ * a bunch of failing asserts have been #ifdef-ed or commented.
+
+After fixing the above, the 4 threads were able to run in parallel.
+One observe the following on the "big_parallel_sleepers" test:
+ * during +- 40 seconds, about 125% CPU is used
+ * after that, jump to 400%.
+ Interpretation of this: making the translations and storing them
+ in the transtab is still very serialized by the Big Lock.
+ Once all the code is translated, full speed is possible.
+ See also the "duplicate t-chaining" below.
+
+
+helgrind (trunk) was then used in a setup "outer trunk helgrind/inner
+none tool prototype" to find race conditions.
+
+A bunch of such race conditions were found.
+Typically:
+ * race conditions in statistical counters
+ * ... need to retrieve and document more of these changes done.
+
+There are some tricky races as some actions looks like they are just
+reading some data, but in fact they do modifications to global
+variables. E.g. all the functions which are maintaining a small static
+local cache will write to the local cache. Typical example in the
+aspacemgr or in the transtab.
+The transtab (VG_(tt_fast)) is the worst case because:
+ 1. it is used a lot
+ 2. it is used by the asm dispatch code.
+=> using a rw lock for this might not be an ideal solution.
+See # tt_fast below for another suggested approach.
+Currently the VG_(tt_fast) race condition is not fixed
+in the prototype.
+The other data structures related to translation tables were
+first tried to be protected the following way:
+ Before having to search or modify the translation table,
+ the Big Lock has to be acquired in W mode.
+ So, if a thread had the Big Lock in R mode, it
+ was reacquiring it in W mode (by releasing and re-acquiring).
+ Really not efficient, the effect of this was really bad:
+ The max CPU usage dropped from 400% till 140%.
+ Worse, the total elapsed time to run the test was
+ bigger than with the V trunk.
+
+The conclusion of this was : a (reasonable) mtV cannot be based
+purely on a RW Big Lock.
+
+* So, started to make a pub_tool_lock.h and m_lock.c module.
+ (currently only contains a mutex, based on atomic instructions
+ and futex syscall). It should at least be completed with
+ a rwlock. Maybe also spin locks ?
+ Some constraints for this module:
+ * it should be initialisable very early in the startup sequence
+ (as e.g. aspacemgr will need it. Even maybe DebugLog might
+ need locks).
+
+ The m_lock.c is derived from (lgpl 2.1) NPTL glibc 2.13 code.
+ Atomic instructions for x86 and amd64 were also copied from
+ the NPTL pthread lib and slightly transformed.
+ Basically, removed the 'catomic*' kind of actions, which are
+ optimisations done referencing a global pthread NPTL var
+ to "skip" the LOCK prefix when there is only one thread.
+ !!! There is one asm statement in priv_atomic_x86.h
+ giving a compile/assembly error.
+ Replaced by __sync_add_and_fetch temporarily. This should
+ be fixed.
+ !!! the fair scheduler should be rewritten based on the
+ atomic instructions rather than the __sync.. and __builtin
+ so that it will be available everywhere.
+ !!! need to see if all 32 bits platforms are supporting
+ an atomic increment of a 64 bit counter. Might either not
+ be supported or cause problems like the x86 compile error above.
+ Then these will have to be emulated. This might all be
+ costly so we might have to avoid some of the 64 bits statistical
+ counters.
+
+* The above efficient futex based mutex was used to protect
+ the translation table. With this, many race condiions
+ disappeared. CPU usage back to 400%.
+
+* VG_(unknown_SP_update) is a perf. critical function.
+ This function contains a piece of non thread safe code
+ for detecting stack changes. This code has been
+ disabled waiting for a proper solution.
+ A possible approach is to use TLS : the current_stack
+ global variable would become a 'per thread' variable.
+ See # TLS below for the trial of thread local storage.
+
+* aspacemgr locking: race condition detected e.g. between
+ VG_(am_find_nsegment)
+ and a mmap syscall, calling VG_(am_notify_client_mmap)
+ => a mutex was added in aspacemgr, protecting at least
+ the race between these 2 functions.
+ However, it is far to be clear that the aspacemgr is
+ "safe" with that. Effectively, VG_(am_find_nsegment)
+ returns a pointer to an element of the segment array.
+ So, if another thread is modifying the entry in the
+ array once the first thread has got an access to it,
+ then what ? It looks however that VG_(am_find_nsegment)
+ is used for "small durations". But still it is not
+ clear this is a "clean thread safe interface".
+ It is unclear exactly what and how should be protected
+ in the aspace mgr. Protecting all the public interface
+ of aspacemgr could be done (need to avoid recursive locking,
+ as pub_tool_lock.h does not detect that). Howeve, unclear
+ if this is good enough (or not).
+
+* When doing the trial of protecting aspacemgr globally,
+ deadlock obtained due to recursive locking.
+ => one might need to make "safe" locks (currently,
+ m_lock.c does not verify non-recursive locking).
+ Also, if we do plenty of fine grained locking everywhere,
+ deadlocks might be difficult to avoid.
+ Lock-free algorithms might help to avoid these.
+ See # Lock free algorithms below.
+
+* Need to avoid "duplicate t-chaining".
+ Got an assert failure in VEX, as the place to t-chain did not
+ contain the expected bytes. This was created by two threads
+ detecting at the same time that a t-chaining is to be done.
+ Then, even if Write Locked one after each other, the 2nd
+ thread would assert as the expected bytes to replace
+ for t-chain are not there anymore.
+ So, in the t-chaining protected critical section, there
+ is a verification if the t-chaining has not been done
+ in the meantime.
+ This causes a really bizarre perf impact (search for really bizarre
+ in the # Performance measurements) :
+ running 150 iterations with 4 parallel threads is total less cpu
+ than in serial. But running only 2 iterations is significantly slower
+ in parallel than serial.
+ The most probable explanation: I suppose there is some useless work
+ done e.g. during translation which consumes CPU : a thread detects it
+ must do t-chaining" : it exits to the scheduler, takes the write big
+ lock, detects that this t-chaining has already be done by another
+ thread and so has done all this work for nothing.
+ This hypothesis is confirmed when giving -d.
+ This causes plenty of traces:
+ --22919:1:transtab host code 0x40537438F already chained => no chaining redone
+ But by which miracle are the parallel threads "recuperating" this cpu burned
+ for nothing later on when doing more iterations ?
+
+ Whatever: a possible solution might be to have VEX provide an
+ efficient way to check that the current ip of the thread has
+ been already chained. Then a "already done t-chaining" would only
+ cost an exit to the C scheduler, and a few "VEX" if-s.
+ This condition looks easy to implement in VEX.
+ Is it safe ? I believe yes:
+ At least VEX can detect that the t-chaining has been done
+ already (or rather that the place is not t-chainable anymore).
+ I suppose just a "!" on this condition would do it :
+ if a place has to be chained, then it contains (for x86)
+ BA <4 bytes value == disp_cp_chain_me_EXPECTED>
+ FF D2
+ otherwise it contains something different.
+
+ ??? is it so clear that this will avoid burning cpu : when a thread
+ exits to C, it will try to acquire the big lock to do t-chaining,
+ but will not be able till all threads go out of the JIT code
+ either due to need of t-chaining or due to QUANTUM expired).
+ If all exits due to QUANTUM expired, our thread will get
+ the big lock, do the t-chaining and all is well.
+ But if the other threads have to do the same t-chaining,
+ they will all exits, see that the t-chaining is not done,
+ and then queue to acquire the write big lock.
+ One will get it, do the t-chaining, then all others will one
+ by one get the write lock, and see the t-chaining is done.
+ Threads have quite some chance to get to the same not
+ done t-chaining if they all execute the same code.
+
+ ??? or even isn't it that the translation table and
+ the rd/wr big lock protecting it is just not scalable :
+ whenever there are some threads which are executing
+ JITted code not yet translated and/or t-chained, there
+ is a high level of contention, causing a lot of
+ lock/unlock, consuming user and sys cpu ?
+
+
+# tt_fast "xor" approach
+========================
+(the tt_fast race condition has not been solved yet.
+Here is a suggested very elegant approach. But is
+this really working ?)
+[after a lot of discussion, it became clear that this does
+not work. There is a small probability of a wrong
+value being read. See at the end of the section the
+failing case and probability analysis]
+
+tt_fast is used (read only) by the asm dispatcher.
+tt_fast is accessed for every 'dynamic' call/jump/...
+(the 'static' call/jump/... are resolved using translation
+chaining).
+tt_fast is modified either when a new translation is
+done or when an already translated piece of code is
+found in the translation cache.
+In other words, one see that even if tt_fast+translation
+table is logically only read, it is also modified by a search.
+
+http://www.cis.uab.edu/hyatt/hashing.html
+describes a technique which (I believe) would allow to use
+tt_fast without locking and without atomic instruction,
+with very few changes in the asm dispatcher.
+
+Basically, the idea of the paper applied on tt_fast would be:
+ tt_fast is an array of pair (G, H)
+ where G is a guest code address and H is the address
+ of the JIT translation of G.
+ (G, H) is stored at a position in tt_fast obtained by
+ "hashing" G (basically, shifting and masking some bits of G).
+If we have a pair (G1,H1) and (G2,H2) which have the same
+hash value, and these pairs are inserted (or modified)
+in parallel, a third thread reading this table might get
+one of the following 4 pairs:
+ (G1,H1) (good)
+ (G2,H2) (good)
+ (G1,H2) (bad)
+ (G2,H1) (bad)
+The idea is that the asm dispatcher would detect the
+bad cases, and then just fall back to the normal
+search (exiting the asm dispatcher to do a full search
+in the translation table).
+To differentiate the good from the bad (without an ugly lock :),
+the idea is to store in tt_fast the following:
+ (G xor H, H)
+Then when searching for G1, one does the following:
+ ...
[truncated message content] |
|
From: <sv...@va...> - 2013-03-27 11:43:26
|
sewardj 2013-03-27 11:43:20 +0000 (Wed, 27 Mar 2013)
New Revision: 13340
Log:
Build system and hwcaps fixes pertaining to #305728, which added
support for AVX2, BMI1, BMI2 and FMA instructions.
(Jakub Jelinek, ja...@re...)
Modified files:
trunk/Makefile.vex.am
trunk/configure.in
trunk/coregrind/m_machine.c
Modified: trunk/coregrind/m_machine.c (+18 -6)
===================================================================
--- trunk/coregrind/m_machine.c 2013-03-27 11:42:05 +00:00 (rev 13339)
+++ trunk/coregrind/m_machine.c 2013-03-27 11:43:20 +00:00 (rev 13340)
@@ -767,9 +767,9 @@
#elif defined(VGA_amd64)
{ Bool have_sse3, have_cx8, have_cx16;
- Bool have_lzcnt, have_avx /*, have_fma*/;
+ Bool have_lzcnt, have_avx, have_bmi, have_avx2;
Bool have_rdtscp;
- UInt eax, ebx, ecx, edx, max_extended;
+ UInt eax, ebx, ecx, edx, max_basic, max_extended;
HChar vstr[13];
vstr[0] = 0;
@@ -778,7 +778,8 @@
return False;
VG_(cpuid)(0, 0, &eax, &ebx, &ecx, &edx);
- if (eax < 1)
+ max_basic = eax;
+ if (max_basic < 1)
/* we can't ask for cpuid(x) for x > 0. Give up. */
return False;
@@ -835,13 +836,13 @@
/* on amd64 we tolerate older cpus, which don't have cmpxchg16b */
have_cx16 = (ecx & (1<<13)) != 0; /* True => have cmpxchg16b */
- /* Figure out if this is an AMD that can do LZCNT. */
+ /* Figure out if this CPU can do LZCNT. */
have_lzcnt = False;
- if (0 == VG_(strcmp)(vstr, "AuthenticAMD")
- && max_extended >= 0x80000001) {
+ if (max_extended >= 0x80000001) {
VG_(cpuid)(0x80000001, 0, &eax, &ebx, &ecx, &edx);
have_lzcnt = (ecx & (1<<5)) != 0; /* True => have LZCNT */
}
+
/* Can we do RDTSCP? */
have_rdtscp = False;
if (max_extended >= 0x80000001) {
@@ -849,11 +850,22 @@
have_rdtscp = (edx & (1<<27)) != 0; /* True => have RDTSVCP */
}
+ /* Check for BMI1 and AVX2. */
+ have_bmi = False;
+ have_avx2 = False;
+ if (max_basic >= 7) {
+ VG_(cpuid)(7, 0, &eax, &ebx, &ecx, &edx);
+ have_bmi = (ebx & (1<<3)) != 0; /* True => have BMI1 */
+ have_avx2 = have_avx && ((ebx & (1<<5)) != 0); /* True => have AVX2 */
+ }
+
va = VexArchAMD64;
vai.hwcaps = (have_sse3 ? VEX_HWCAPS_AMD64_SSE3 : 0)
| (have_cx16 ? VEX_HWCAPS_AMD64_CX16 : 0)
| (have_lzcnt ? VEX_HWCAPS_AMD64_LZCNT : 0)
| (have_avx ? VEX_HWCAPS_AMD64_AVX : 0)
+ | (have_bmi ? VEX_HWCAPS_AMD64_BMI : 0)
+ | (have_avx2 ? VEX_HWCAPS_AMD64_AVX2 : 0)
| (have_rdtscp ? VEX_HWCAPS_AMD64_RDTSCP : 0);
VG_(machine_get_cache_info)(&vai);
Modified: trunk/configure.in (+71 -0)
===================================================================
--- trunk/configure.in 2013-03-27 11:42:05 +00:00 (rev 13339)
+++ trunk/configure.in 2013-03-27 11:43:20 +00:00 (rev 13340)
@@ -1909,6 +1909,77 @@
AM_CONDITIONAL(BUILD_AVX_TESTS, test x$ac_have_as_avx = xyes)
+# does the x86/amd64 assembler understand AVX2 instructions?
+# Note, this doesn't generate a C-level symbol. It generates a
+# automake-level symbol (BUILD_AVX2_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler speaks AVX2])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ do { long long int x;
+ __asm__ __volatile__(
+ "vpsravd (%%rsp), %%ymm8, %%ymm7" : : : "xmm7", "xmm8" );
+ __asm__ __volatile__(
+ "vpaddb %%ymm6,%%ymm7,%%ymm8" : : : "xmm6","xmm7","xmm8"); }
+ while (0)
+]])], [
+ac_have_as_avx2=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_avx2=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_AVX2_TESTS, test x$ac_have_as_avx2 = xyes)
+
+
+# does the x86/amd64 assembler understand BMI1 and BMI2 instructions?
+# Note, this doesn't generate a C-level symbol. It generates a
+# automake-level symbol (BUILD_BMI_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler speaks BMI1 and BMI2])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ do { unsigned int h, l;
+ __asm__ __volatile__(
+ "andn %2, %1, %0" : "=r" (h) : "r" (0x1234567), "r" (0x7654321) ); }
+ __asm__ __volatile__(
+ "movl %2, %%edx; mulx %3, %1, %0" : "=r" (h), "=r" (l) : "g" (0x1234567), "g" (0x7654321) : "edx" ); }
+ while (0)
+]])], [
+ac_have_as_bmi=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_bmi=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_BMI_TESTS, test x$ac_have_as_bmi = xyes)
+
+
+# does the x86/amd64 assembler understand FMA instructions?
+# Note, this doesn't generate a C-level symbol. It generates a
+# automake-level symbol (BUILD_FMA_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler speaks FMA])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ do { unsigned int h, l;
+ __asm__ __volatile__(
+ "vfmadd132ps (%%rsp), %%ymm8, %%ymm7" : : : "xmm7", "xmm8" );
+ __asm__ __volatile__(
+ "vfnmsub231sd (%%rsp), %%xmm8, %%xmm7" : : : "xmm7", "xmm8" );
+ __asm__ __volatile__(
+ "vfmsubadd213pd (%%rsp), %%xmm8, %%xmm7" : : : "xmm7", "xmm8" ); }
+ while (0)
+]])], [
+ac_have_as_fma=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_fma=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_FMA_TESTS, test x$ac_have_as_fma = xyes)
+
+
# does the x86/amd64 assembler understand MOVBE?
# Note, this doesn't generate a C-level symbol. It generates a
# automake-level symbol (BUILD_MOVBE_TESTS), used in test Makefile.am's
Modified: trunk/Makefile.vex.am (+4 -0)
===================================================================
--- trunk/Makefile.vex.am 2013-03-27 11:42:05 +00:00 (rev 13339)
+++ trunk/Makefile.vex.am 2013-03-27 11:43:20 +00:00 (rev 13340)
@@ -46,6 +46,8 @@
priv/host_generic_regs.h \
priv/host_generic_simd64.h \
priv/host_generic_simd128.h \
+ priv/host_generic_simd256.h \
+ priv/host_generic_maddf.h \
priv/host_x86_defs.h \
priv/host_amd64_defs.h \
priv/host_ppc_defs.h \
@@ -117,6 +119,8 @@
priv/host_generic_regs.c \
priv/host_generic_simd64.c \
priv/host_generic_simd128.c \
+ priv/host_generic_simd256.c \
+ priv/host_generic_maddf.c \
priv/host_generic_reg_alloc2.c \
priv/host_x86_defs.c \
priv/host_x86_isel.c \
|
|
From: <sv...@va...> - 2013-03-27 11:42:16
|
sewardj 2013-03-27 11:42:05 +0000 (Wed, 27 Mar 2013)
New Revision: 13339
Log:
Testcase additions pertaining to #305728, which added support for
AVX2, BMI1, BMI2 and FMA instructions.
(Jakub Jelinek, ja...@re...)
Added files:
trunk/none/tests/amd64/avx2-1.c
trunk/none/tests/amd64/avx2-1.stderr.exp
trunk/none/tests/amd64/avx2-1.stdout.exp
trunk/none/tests/amd64/avx2-1.vgtest
trunk/none/tests/amd64/bmi.c
trunk/none/tests/amd64/bmi.stderr.exp
trunk/none/tests/amd64/bmi.stdout.exp
trunk/none/tests/amd64/bmi.vgtest
trunk/none/tests/amd64/fma.c
trunk/none/tests/amd64/fma.stderr.exp
trunk/none/tests/amd64/fma.stdout.exp
trunk/none/tests/amd64/fma.vgtest
Modified files:
trunk/none/tests/amd64/Makefile.am
trunk/none/tests/amd64/avx-1.c
trunk/none/tests/amd64/avx-1.stdout.exp
Added: trunk/none/tests/amd64/bmi.vgtest (+3 -0)
===================================================================
--- trunk/none/tests/amd64/bmi.vgtest 2013-03-27 11:40:02 +00:00 (rev 13338)
+++ trunk/none/tests/amd64/bmi.vgtest 2013-03-27 11:42:05 +00:00 (rev 13339)
@@ -0,0 +1,3 @@
+prog: bmi
+prereq: ../../../tests/x86_amd64_features amd64-avx
+vgopts: -q
Added: trunk/none/tests/amd64/fma.stdout.exp (+1 -0)
===================================================================
--- trunk/none/tests/amd64/fma.stdout.exp 2013-03-27 11:40:02 +00:00 (rev 13338)
+++ trunk/none/tests/amd64/fma.stdout.exp 2013-03-27 11:42:05 +00:00 (rev 13339)
@@ -0,0 +1 @@
+Testing successful
Added: trunk/none/tests/amd64/fma.c (+1431 -0)
===================================================================
--- trunk/none/tests/amd64/fma.c 2013-03-27 11:40:02 +00:00 (rev 13338)
+++ trunk/none/tests/amd64/fma.c 2013-03-27 11:42:05 +00:00 (rev 13339)
@@ -0,0 +1,1431 @@
+#include <stdio.h>
+#include <string.h>
+
+#define N 64
+struct float_test {
+ float x[N], y[N], z[N], expected[N], res[N];
+} ft __attribute__((aligned (32)));
+
+struct double_test {
+ double x[N], y[N], z[N], expected[N], res[N];
+} dt __attribute__((aligned (32)));
+
+float plus_zero, plus_infty, minus_infty, nan_value;
+
+static int testf( float x, float y )
+{
+ unsigned int a, b;
+ memcpy( &a, &x, sizeof (a) );
+ memcpy( &b, &y, sizeof (b) );
+ if ((a & 0x7fc00000U) == 0x7fc00000U)
+ return (b & 0x7fc00000U) != 0x7fc00000U;
+ return memcmp( &a, &b, sizeof (a) ) != 0;
+}
+
+static int test_fmaf( void )
+{
+ int res = 0, i, j;
+ float w;
+ for (i = 0; i < N; i++) {
+ int thisres = 0;
+ __asm __volatile__ ("vfmadd132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmadd132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "m" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmadd213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmadd213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "m" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmadd231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "x" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmadd231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "m" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ if (thisres)
+ printf( "Failure 1 %d %a %a\n", i, w, ft.expected[i] );
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vfnmsub132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmsub132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "m" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmsub213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmsub213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "m" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmsub231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "x" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmsub231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "m" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ if (thisres)
+ printf( "Failure 2 %d %a %a\n", i, w, ft.expected[i] );
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i++) {
+ int thisres = 0;
+ __asm __volatile__ ("vfmsub132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmsub132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "m" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmsub213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmsub213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "m" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmsub231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "x" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ __asm __volatile__ ("vfmsub231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "m" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( w, ft.expected[i] );
+ if (thisres)
+ printf( "Failure 3 %d %a %a\n", i, w, ft.expected[i] );
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vfnmadd132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmadd132ss %2, %3, %0" : "=x" (w) : "0" (ft.x[i]), "m" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmadd213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "x" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmadd213ss %3, %2, %0" : "=x" (w) : "0" (ft.x[i]), "x" (ft.y[i]), "m" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmadd231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "x" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ __asm __volatile__ ("vfnmadd231ss %2, %1, %0" : "=x" (w) : "x" (ft.x[i]), "m" (ft.y[i]), "0" (ft.z[i]));
+ thisres |= testf( -w, ft.expected[i] );
+ if (thisres)
+ printf( "Failure 4 %d %a %a\n", i, w, ft.expected[i] );
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 4) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%3), %%xmm8;"
+ "vfmadd132ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm8;"
+ "vfmadd132ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm7; vmovaps (%2), %%xmm8;"
+ "vfmadd213ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm8;"
+ "vfmadd213ps (%3), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%1), %%xmm8;"
+ "vfmadd231ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%1), %%xmm8;"
+ "vfmadd231ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 5 %d", i );
+ for (j = 0; j < 4; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%3), %%xmm8;"
+ "vfnmsub132ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm8;"
+ "vfnmsub132ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm7; vmovaps (%2), %%xmm8;"
+ "vfnmsub213ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm8;"
+ "vfnmsub213ps (%3), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%1), %%xmm8;"
+ "vfnmsub231ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%1), %%xmm8;"
+ "vfnmsub231ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 6 %d", i );
+ for (j = 0; j < 4; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 4) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%3), %%xmm8;"
+ "vfmsub132ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm8;"
+ "vfmsub132ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm7; vmovaps (%2), %%xmm8;"
+ "vfmsub213ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm8;"
+ "vfmsub213ps (%3), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%1), %%xmm8;"
+ "vfmsub231ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%1), %%xmm8;"
+ "vfmsub231ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 7 %d", i );
+ for (j = 0; j < 4; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%3), %%xmm8;"
+ "vfnmadd132ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm8;"
+ "vfnmadd132ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm7; vmovaps (%2), %%xmm8;"
+ "vfnmadd213ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm8;"
+ "vfnmadd213ps (%3), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%1), %%xmm8;"
+ "vfnmadd231ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%1), %%xmm8;"
+ "vfnmadd231ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 8 %d", i );
+ for (j = 0; j < 4; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 1; i < N; i += 2)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 4) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%3), %%xmm8;"
+ "vfmaddsub132ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm8;"
+ "vfmaddsub132ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm7; vmovaps (%2), %%xmm8;"
+ "vfmaddsub213ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm8;"
+ "vfmaddsub213ps (%3), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%1), %%xmm8;"
+ "vfmaddsub231ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%1), %%xmm8;"
+ "vfmaddsub231ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 9 %d", i );
+ for (j = 0; j < 4; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 4) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%3), %%xmm8;"
+ "vfmsubadd132ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm8;"
+ "vfmsubadd132ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%3), %%xmm7; vmovaps (%2), %%xmm8;"
+ "vfmsubadd213ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%xmm9; vmovaps (%2), %%xmm8;"
+ "vfmsubadd213ps (%3), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%2), %%xmm7; vmovaps (%1), %%xmm8;"
+ "vfmsubadd231ps %%xmm7, %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%xmm9; vmovaps (%1), %%xmm8;"
+ "vfmsubadd231ps (%2), %%xmm8, %%xmm9;"
+ "vmovaps %%xmm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 4; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 10 %d", i );
+ for (j = 0; j < 4; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 1; i < N; i += 2)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 8) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%3), %%ymm8;"
+ "vfmadd132ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm8;"
+ "vfmadd132ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm7; vmovaps (%2), %%ymm8;"
+ "vfmadd213ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm8;"
+ "vfmadd213ps (%3), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%1), %%ymm8;"
+ "vfmadd231ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%1), %%ymm8;"
+ "vfmadd231ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 11 %d", i );
+ for (j = 0; j < 8; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%3), %%ymm8;"
+ "vfnmsub132ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm8;"
+ "vfnmsub132ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm7; vmovaps (%2), %%ymm8;"
+ "vfnmsub213ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm8;"
+ "vfnmsub213ps (%3), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%1), %%ymm8;"
+ "vfnmsub231ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%1), %%ymm8;"
+ "vfnmsub231ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 12 %d", i );
+ for (j = 0; j < 8; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 8) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%3), %%ymm8;"
+ "vfmsub132ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm8;"
+ "vfmsub132ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm7; vmovaps (%2), %%ymm8;"
+ "vfmsub213ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm8;"
+ "vfmsub213ps (%3), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%1), %%ymm8;"
+ "vfmsub231ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%1), %%ymm8;"
+ "vfmsub231ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 13 %d", i );
+ for (j = 0; j < 8; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%3), %%ymm8;"
+ "vfnmadd132ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm8;"
+ "vfnmadd132ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm7; vmovaps (%2), %%ymm8;"
+ "vfnmadd213ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm8;"
+ "vfnmadd213ps (%3), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%1), %%ymm8;"
+ "vfnmadd231ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%1), %%ymm8;"
+ "vfnmadd231ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( -ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 14 %d", i );
+ for (j = 0; j < 8; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 1; i < N; i += 2)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 8) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%3), %%ymm8;"
+ "vfmaddsub132ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm8;"
+ "vfmaddsub132ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm7; vmovaps (%2), %%ymm8;"
+ "vfmaddsub213ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm8;"
+ "vfmaddsub213ps (%3), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%1), %%ymm8;"
+ "vfmaddsub231ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%1), %%ymm8;"
+ "vfmaddsub231ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 15 %d", i );
+ for (j = 0; j < 8; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ ft.z[i] = -ft.z[i];
+ for (i = 0; i < N; i += 8) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%3), %%ymm8;"
+ "vfmsubadd132ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm8;"
+ "vfmsubadd132ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%3), %%ymm7; vmovaps (%2), %%ymm8;"
+ "vfmsubadd213ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%1), %%ymm9; vmovaps (%2), %%ymm8;"
+ "vfmsubadd213ps (%3), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%2), %%ymm7; vmovaps (%1), %%ymm8;"
+ "vfmsubadd231ps %%ymm7, %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ __asm __volatile__ ("vmovaps (%3), %%ymm9; vmovaps (%1), %%ymm8;"
+ "vfmsubadd231ps (%2), %%ymm8, %%ymm9;"
+ "vmovaps %%ymm9, (%0)" : : "r" (&ft.res[i]), "r" (&ft.x[i]),
+ "r" (&ft.y[i]), "r" (&ft.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 8; j++)
+ thisres |= testf( ft.res[i+j], ft.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 16 %d", i );
+ for (j = 0; j < 8; j++)
+ printf( " %a %a", ft.res[i+j], ft.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 1; i < N; i += 2)
+ ft.z[i] = -ft.z[i];
+ return res;
+}
+
+static int test( double x, double y )
+{
+ unsigned long long a, b;
+ memcpy( &a, &x, sizeof (a) );
+ memcpy( &b, &y, sizeof (b) );
+ if ((a & 0x7ff8000000000000ULL) == 0x7ff8000000000000ULL)
+ return (b & 0x7ff8000000000000ULL) != 0x7ff8000000000000ULL;
+ return memcmp( &a, &b, sizeof (a) ) != 0;
+}
+
+static int test_fma( void )
+{
+ int res = 0, i, j;
+ double w;
+ for (i = 0; i < N; i++) {
+ int thisres = 0;
+ __asm __volatile__ ("vfmadd132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmadd132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "m" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmadd213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmadd213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "m" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmadd231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "x" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmadd231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "m" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ if (thisres)
+ printf( "Failure 1 %d %a %a\n", i, w, dt.expected[i] );
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vfnmsub132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmsub132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "m" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmsub213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmsub213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "m" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmsub231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "x" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmsub231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "m" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ if (thisres)
+ printf( "Failure 2 %d %a %a\n", i, w, dt.expected[i] );
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ dt.z[i] = -dt.z[i];
+ for (i = 0; i < N; i++) {
+ int thisres = 0;
+ __asm __volatile__ ("vfmsub132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmsub132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "m" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmsub213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmsub213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "m" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmsub231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "x" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ __asm __volatile__ ("vfmsub231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "m" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( w, dt.expected[i] );
+ if (thisres)
+ printf( "Failure 3 %d %a %a\n", i, w, dt.expected[i] );
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vfnmadd132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmadd132sd %2, %3, %0" : "=x" (w) : "0" (dt.x[i]), "m" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmadd213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "x" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmadd213sd %3, %2, %0" : "=x" (w) : "0" (dt.x[i]), "x" (dt.y[i]), "m" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmadd231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "x" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ __asm __volatile__ ("vfnmadd231sd %2, %1, %0" : "=x" (w) : "x" (dt.x[i]), "m" (dt.y[i]), "0" (dt.z[i]));
+ thisres |= test( -w, dt.expected[i] );
+ if (thisres)
+ printf( "Failure 4 %d %a %a\n", i, w, dt.expected[i] );
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ dt.z[i] = -dt.z[i];
+ for (i = 0; i < N; i += 2) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%3), %%xmm8;"
+ "vfmadd132pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm8;"
+ "vfmadd132pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm7; vmovapd (%2), %%xmm8;"
+ "vfmadd213pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm8;"
+ "vfmadd213pd (%3), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%1), %%xmm8;"
+ "vfmadd231pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%1), %%xmm8;"
+ "vfmadd231pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 5 %d", i );
+ for (j = 0; j < 2; j++)
+ printf( " %a %a", dt.res[i+j], dt.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%3), %%xmm8;"
+ "vfnmsub132pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm8;"
+ "vfnmsub132pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm7; vmovapd (%2), %%xmm8;"
+ "vfnmsub213pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm8;"
+ "vfnmsub213pd (%3), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%1), %%xmm8;"
+ "vfnmsub231pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%1), %%xmm8;"
+ "vfnmsub231pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 6 %d", i );
+ for (j = 0; j < 2; j++)
+ printf( " %a %a", dt.res[i+j], dt.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 0; i < N; i++)
+ dt.z[i] = -dt.z[i];
+ for (i = 0; i < N; i += 2) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%3), %%xmm8;"
+ "vfmsub132pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm8;"
+ "vfmsub132pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm7; vmovapd (%2), %%xmm8;"
+ "vfmsub213pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm8;"
+ "vfmsub213pd (%3), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%1), %%xmm8;"
+ "vfmsub231pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%1), %%xmm8;"
+ "vfmsub231pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 7 %d", i );
+ for (j = 0; j < 2; j++)
+ printf( " %a %a", dt.res[i+j], dt.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ thisres = 0;
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%3), %%xmm8;"
+ "vfnmadd132pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm8;"
+ "vfnmadd132pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm7; vmovapd (%2), %%xmm8;"
+ "vfnmadd213pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm8;"
+ "vfnmadd213pd (%3), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%1), %%xmm8;"
+ "vfnmadd231pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%3), %%xmm9; vmovapd (%1), %%xmm8;"
+ "vfnmadd231pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( -dt.res[i+j], dt.expected[i+j] );
+ if (thisres) {
+ printf( "Failure 8 %d", i );
+ for (j = 0; j < 2; j++)
+ printf( " %a %a", dt.res[i+j], dt.expected[i+j] );
+ printf( "\n" );
+ }
+ res |= thisres;
+ }
+ for (i = 1; i < N; i += 2)
+ dt.z[i] = -dt.z[i];
+ for (i = 0; i < N; i += 2) {
+ int thisres = 0;
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm7; vmovapd (%3), %%xmm8;"
+ "vfmaddsub132pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm8;"
+ "vfmaddsub132pd (%2), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%3), %%xmm7; vmovapd (%2), %%xmm8;"
+ "vfmaddsub213pd %%xmm7, %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "r" (&dt.y[i]), "r" (&dt.z[i]) : "xmm7", "xmm8", "xmm9");
+ for (j = 0; j < 2; j++)
+ thisres |= test( dt.res[i+j], dt.expected[i+j] );
+ __asm __volatile__ ("vmovapd (%1), %%xmm9; vmovapd (%2), %%xmm8;"
+ "vfmaddsub213pd (%3), %%xmm8, %%xmm9;"
+ "vmovapd %%xmm9, (%0)" : : "r" (&dt.res[i]), "r" (&dt.x[i]),
+ "...
[truncated message content] |
|
From: <sv...@va...> - 2013-03-27 11:40:09
|
sewardj 2013-03-27 11:40:02 +0000 (Wed, 27 Mar 2013)
New Revision: 13338
Log:
Memcheck fixes for new IR ops introduced by r2702 (which added support
for AVX2, BMI1, BMI2 and FMA instructions). Part of #305728.
(Jakub Jelinek, ja...@re...)
Modified files:
trunk/memcheck/mc_translate.c
Modified: trunk/memcheck/mc_translate.c (+132 -0)
===================================================================
--- trunk/memcheck/mc_translate.c 2013-03-26 13:57:48 +00:00 (rev 13337)
+++ trunk/memcheck/mc_translate.c 2013-03-27 11:40:02 +00:00 (rev 13338)
@@ -627,6 +627,7 @@
case Ity_I64: return mkUifU64(mce, a1, a2);
case Ity_I128: return mkUifU128(mce, a1, a2);
case Ity_V128: return mkUifUV128(mce, a1, a2);
+ case Ity_V256: return mkUifUV256(mce, a1, a2);
default:
VG_(printf)("\n"); ppIRType(vty); VG_(printf)("\n");
VG_(tool_panic)("memcheck:mkUifU");
@@ -872,6 +873,13 @@
tmp1 = assignNew('V', mce, Ity_I64, unop(Iop_1Sto64, tmp1));
tmp1 = assignNew('V', mce, Ity_I128, binop(Iop_64HLto128, tmp1, tmp1));
return tmp1;
+ case Ity_V256:
+ tmp1 = assignNew('V', mce, Ity_I64, unop(Iop_1Sto64, tmp1));
+ tmp1 = assignNew('V', mce, Ity_V128, binop(Iop_64HLtoV128,
+ tmp1, tmp1));
+ tmp1 = assignNew('V', mce, Ity_V256, binop(Iop_V128HLtoV256,
+ tmp1, tmp1));
+ return tmp1;
default:
ppIRType(dst_ty);
VG_(tool_panic)("mkPCastTo(2)");
@@ -2024,11 +2032,21 @@
return assignNew('V', mce, Ity_I64, unop(Iop_CmpNEZ32x2, at));
}
+static IRAtom* mkPCast16x16 ( MCEnv* mce, IRAtom* at )
+{
+ return assignNew('V', mce, Ity_V256, unop(Iop_CmpNEZ16x16, at));
+}
+
static IRAtom* mkPCast16x4 ( MCEnv* mce, IRAtom* at )
{
return assignNew('V', mce, Ity_I64, unop(Iop_CmpNEZ16x4, at));
}
+static IRAtom* mkPCast8x32 ( MCEnv* mce, IRAtom* at )
+{
+ return assignNew('V', mce, Ity_V256, unop(Iop_CmpNEZ8x32, at));
+}
+
static IRAtom* mkPCast8x8 ( MCEnv* mce, IRAtom* at )
{
return assignNew('V', mce, Ity_I64, unop(Iop_CmpNEZ8x8, at));
@@ -2433,6 +2451,44 @@
/* Simple ... UifU the args and per-lane pessimise the results. */
+/* --- V256-bit versions --- */
+
+static
+IRAtom* binary8Ix32 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
+{
+ IRAtom* at;
+ at = mkUifUV256(mce, vatom1, vatom2);
+ at = mkPCast8x32(mce, at);
+ return at;
+}
+
+static
+IRAtom* binary16Ix16 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
+{
+ IRAtom* at;
+ at = mkUifUV256(mce, vatom1, vatom2);
+ at = mkPCast16x16(mce, at);
+ return at;
+}
+
+static
+IRAtom* binary32Ix8 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
+{
+ IRAtom* at;
+ at = mkUifUV256(mce, vatom1, vatom2);
+ at = mkPCast32x8(mce, at);
+ return at;
+}
+
+static
+IRAtom* binary64Ix4 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
+{
+ IRAtom* at;
+ at = mkUifUV256(mce, vatom1, vatom2);
+ at = mkPCast64x4(mce, at);
+ return at;
+}
+
/* --- V128-bit versions --- */
static
@@ -3697,6 +3753,82 @@
case Iop_XorV256:
return mkUifUV256(mce, vatom1, vatom2);
+ /* V256-bit SIMD */
+
+ case Iop_ShrN16x16:
+ case Iop_ShrN32x8:
+ case Iop_ShrN64x4:
+ case Iop_SarN16x16:
+ case Iop_SarN32x8:
+ case Iop_ShlN16x16:
+ case Iop_ShlN32x8:
+ case Iop_ShlN64x4:
+ /* Same scheme as with all other shifts. Note: 22 Oct 05:
+ this is wrong now, scalar shifts are done properly lazily.
+ Vector shifts should be fixed too. */
+ complainIfUndefined(mce, atom2);
+ return assignNew('V', mce, Ity_V256, binop(op, vatom1, atom2));
+
+ case Iop_QSub8Ux32:
+ case Iop_QSub8Sx32:
+ case Iop_Sub8x32:
+ case Iop_Min8Ux32:
+ case Iop_Min8Sx32:
+ case Iop_Max8Ux32:
+ case Iop_Max8Sx32:
+ case Iop_CmpGT8Sx32:
+ case Iop_CmpEQ8x32:
+ case Iop_Avg8Ux32:
+ case Iop_QAdd8Ux32:
+ case Iop_QAdd8Sx32:
+ case Iop_Add8x32:
+ return binary8Ix32(mce, vatom1, vatom2);
+
+ case Iop_QSub16Ux16:
+ case Iop_QSub16Sx16:
+ case Iop_Sub16x16:
+ case Iop_Mul16x16:
+ case Iop_MulHi16Sx16:
+ case Iop_MulHi16Ux16:
+ case Iop_Min16Sx16:
+ case Iop_Min16Ux16:
+ case Iop_Max16Sx16:
+ case Iop_Max16Ux16:
+ case Iop_CmpGT16Sx16:
+ case Iop_CmpEQ16x16:
+ case Iop_Avg16Ux16:
+ case Iop_QAdd16Ux16:
+ case Iop_QAdd16Sx16:
+ case Iop_Add16x16:
+ return binary16Ix16(mce, vatom1, vatom2);
+
+ case Iop_Sub32x8:
+ case Iop_CmpGT32Sx8:
+ case Iop_CmpEQ32x8:
+ case Iop_Add32x8:
+ case Iop_Max32Ux8:
+ case Iop_Max32Sx8:
+ case Iop_Min32Ux8:
+ case Iop_Min32Sx8:
+ case Iop_Mul32x8:
+ return binary32Ix8(mce, vatom1, vatom2);
+
+ case Iop_Sub64x4:
+ case Iop_Add64x4:
+ case Iop_CmpEQ64x4:
+ case Iop_CmpGT64Sx4:
+ return binary64Ix4(mce, vatom1, vatom2);
+
+ /* Perm32x8: rearrange values in left arg using steering values
+ from right arg. So rearrange the vbits in the same way but
+ pessimise wrt steering values. */
+ case Iop_Perm32x8:
+ return mkUifUV256(
+ mce,
+ assignNew('V', mce, Ity_V256, binop(op, vatom1, atom2)),
+ mkPCast32x8(mce, vatom2)
+ );
+
default:
ppIROp(op);
VG_(tool_panic)("memcheck:expr2vbits_Binop");
|
|
From: <sv...@va...> - 2013-03-27 11:37:50
|
sewardj 2013-03-27 11:37:33 +0000 (Wed, 27 Mar 2013)
New Revision: 2702
Log:
AMD64: Add support for AVX2, BMI1, BMI2 and FMA instructions (VEX side).
Fixes #305728. (Jakub Jelinek, ja...@re...)
Added files:
trunk/priv/host_generic_maddf.c
trunk/priv/host_generic_maddf.h
trunk/priv/host_generic_simd256.c
trunk/priv/host_generic_simd256.h
Modified files:
trunk/priv/guest_amd64_defs.h
trunk/priv/guest_amd64_helpers.c
trunk/priv/guest_amd64_toIR.c
trunk/priv/host_amd64_isel.c
trunk/priv/ir_defs.c
trunk/priv/main_main.c
trunk/pub/libvex.h
trunk/pub/libvex_basictypes.h
trunk/pub/libvex_ir.h
Modified: trunk/priv/ir_defs.c (+90 -0)
===================================================================
--- trunk/priv/ir_defs.c 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/ir_defs.c 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -1036,6 +1036,68 @@
case Iop_NotV256: vex_printf("NotV256"); return;
case Iop_CmpNEZ64x4: vex_printf("CmpNEZ64x4"); return;
case Iop_CmpNEZ32x8: vex_printf("CmpNEZ32x8"); return;
+ case Iop_CmpNEZ16x16: vex_printf("CmpNEZ16x16"); return;
+ case Iop_CmpNEZ8x32: vex_printf("CmpNEZ8x32"); return;
+
+ case Iop_Add8x32: vex_printf("Add8x32"); return;
+ case Iop_Add16x16: vex_printf("Add16x16"); return;
+ case Iop_Add32x8: vex_printf("Add32x8"); return;
+ case Iop_Add64x4: vex_printf("Add64x4"); return;
+ case Iop_Sub8x32: vex_printf("Sub8x32"); return;
+ case Iop_Sub16x16: vex_printf("Sub16x16"); return;
+ case Iop_Sub32x8: vex_printf("Sub32x8"); return;
+ case Iop_Sub64x4: vex_printf("Sub64x4"); return;
+ case Iop_QAdd8Ux32: vex_printf("QAdd8Ux32"); return;
+ case Iop_QAdd16Ux16: vex_printf("QAdd16Ux16"); return;
+ case Iop_QAdd8Sx32: vex_printf("QAdd8Sx32"); return;
+ case Iop_QAdd16Sx16: vex_printf("QAdd16Sx16"); return;
+ case Iop_QSub8Ux32: vex_printf("QSub8Ux32"); return;
+ case Iop_QSub16Ux16: vex_printf("QSub16Ux16"); return;
+ case Iop_QSub8Sx32: vex_printf("QSub8Sx32"); return;
+ case Iop_QSub16Sx16: vex_printf("QSub16Sx16"); return;
+
+ case Iop_Mul16x16: vex_printf("Mul16x16"); return;
+ case Iop_Mul32x8: vex_printf("Mul32x8"); return;
+ case Iop_MulHi16Ux16: vex_printf("MulHi16Ux16"); return;
+ case Iop_MulHi16Sx16: vex_printf("MulHi16Sx16"); return;
+
+ case Iop_Avg8Ux32: vex_printf("Avg8Ux32"); return;
+ case Iop_Avg16Ux16: vex_printf("Avg16Ux16"); return;
+
+ case Iop_Max8Sx32: vex_printf("Max8Sx32"); return;
+ case Iop_Max16Sx16: vex_printf("Max16Sx16"); return;
+ case Iop_Max32Sx8: vex_printf("Max32Sx8"); return;
+ case Iop_Max8Ux32: vex_printf("Max8Ux32"); return;
+ case Iop_Max16Ux16: vex_printf("Max16Ux16"); return;
+ case Iop_Max32Ux8: vex_printf("Max32Ux8"); return;
+
+ case Iop_Min8Sx32: vex_printf("Min8Sx32"); return;
+ case Iop_Min16Sx16: vex_printf("Min16Sx16"); return;
+ case Iop_Min32Sx8: vex_printf("Min32Sx8"); return;
+ case Iop_Min8Ux32: vex_printf("Min8Ux32"); return;
+ case Iop_Min16Ux16: vex_printf("Min16Ux16"); return;
+ case Iop_Min32Ux8: vex_printf("Min32Ux8"); return;
+
+ case Iop_CmpEQ8x32: vex_printf("CmpEQ8x32"); return;
+ case Iop_CmpEQ16x16: vex_printf("CmpEQ16x16"); return;
+ case Iop_CmpEQ32x8: vex_printf("CmpEQ32x8"); return;
+ case Iop_CmpEQ64x4: vex_printf("CmpEQ64x4"); return;
+ case Iop_CmpGT8Sx32: vex_printf("CmpGT8Sx32"); return;
+ case Iop_CmpGT16Sx16: vex_printf("CmpGT16Sx16"); return;
+ case Iop_CmpGT32Sx8: vex_printf("CmpGT32Sx8"); return;
+ case Iop_CmpGT64Sx4: vex_printf("CmpGT64Sx4"); return;
+
+ case Iop_ShlN16x16: vex_printf("ShlN16x16"); return;
+ case Iop_ShlN32x8: vex_printf("ShlN32x8"); return;
+ case Iop_ShlN64x4: vex_printf("ShlN64x4"); return;
+ case Iop_ShrN16x16: vex_printf("ShrN16x16"); return;
+ case Iop_ShrN32x8: vex_printf("ShrN32x8"); return;
+ case Iop_ShrN64x4: vex_printf("ShrN64x4"); return;
+ case Iop_SarN16x16: vex_printf("SarN16x16"); return;
+ case Iop_SarN32x8: vex_printf("SarN32x8"); return;
+
+ case Iop_Perm32x8: vex_printf("Perm32x8"); return;
+
default: vpanic("ppIROp(1)");
}
@@ -3001,6 +3063,26 @@
case Iop_XorV256:
case Iop_Max32Fx8: case Iop_Min32Fx8:
case Iop_Max64Fx4: case Iop_Min64Fx4:
+ case Iop_Add8x32: case Iop_Add16x16:
+ case Iop_Add32x8: case Iop_Add64x4:
+ case Iop_Sub8x32: case Iop_Sub16x16:
+ case Iop_Sub32x8: case Iop_Sub64x4:
+ case Iop_Mul16x16: case Iop_Mul32x8:
+ case Iop_MulHi16Ux16: case Iop_MulHi16Sx16:
+ case Iop_Avg8Ux32: case Iop_Avg16Ux16:
+ case Iop_Max8Sx32: case Iop_Max16Sx16: case Iop_Max32Sx8:
+ case Iop_Max8Ux32: case Iop_Max16Ux16: case Iop_Max32Ux8:
+ case Iop_Min8Sx32: case Iop_Min16Sx16: case Iop_Min32Sx8:
+ case Iop_Min8Ux32: case Iop_Min16Ux16: case Iop_Min32Ux8:
+ case Iop_CmpEQ8x32: case Iop_CmpEQ16x16:
+ case Iop_CmpEQ32x8: case Iop_CmpEQ64x4:
+ case Iop_CmpGT8Sx32: case Iop_CmpGT16Sx16:
+ case Iop_CmpGT32Sx8: case Iop_CmpGT64Sx4:
+ case Iop_QAdd8Ux32: case Iop_QAdd16Ux16:
+ case Iop_QAdd8Sx32: case Iop_QAdd16Sx16:
+ case Iop_QSub8Ux32: case Iop_QSub16Ux16:
+ case Iop_QSub8Sx32: case Iop_QSub16Sx16:
+ case Iop_Perm32x8:
BINARY(Ity_V256,Ity_V256, Ity_V256);
case Iop_V256toV128_1: case Iop_V256toV128_0:
@@ -3014,9 +3096,17 @@
case Iop_Sqrt32Fx8:
case Iop_Sqrt64Fx4:
case Iop_Recip32Fx8:
+ case Iop_CmpNEZ8x32: case Iop_CmpNEZ16x16:
case Iop_CmpNEZ64x4: case Iop_CmpNEZ32x8:
UNARY(Ity_V256, Ity_V256);
+ case Iop_ShlN16x16: case Iop_ShlN32x8:
+ case Iop_ShlN64x4:
+ case Iop_ShrN16x16: case Iop_ShrN32x8:
+ case Iop_ShrN64x4:
+ case Iop_SarN16x16: case Iop_SarN32x8:
+ BINARY(Ity_V256,Ity_I8, Ity_V256);
+
default:
ppIROp(op);
vpanic("typeOfPrimop");
Added: trunk/priv/host_generic_simd256.h (+55 -0)
===================================================================
--- trunk/priv/host_generic_simd256.h 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/host_generic_simd256.h 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -0,0 +1,55 @@
+
+/*---------------------------------------------------------------*/
+/*--- begin host_generic_simd256.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+ This file is part of Valgrind, a dynamic binary instrumentation
+ framework.
+
+ Copyright (C) 2012 OpenWorks GbR
+ in...@op...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Generic helper functions for doing 256-bit SIMD arithmetic in cases
+ where the instruction selectors cannot generate code in-line.
+ These are purely back-end entities and cannot be seen/referenced
+ as clean helper functions from IR.
+
+ These will get called from generated code and therefore should be
+ well behaved -- no floating point or mmx insns, just straight
+ integer code.
+
+ Each function implements the correspondingly-named IR primop.
+*/
+
+#ifndef __VEX_HOST_GENERIC_SIMD256_H
+#define __VEX_HOST_GENERIC_SIMD256_H
+
+#include "libvex_basictypes.h"
+
+extern VEX_REGPARM(3)
+ void h_generic_calc_Perm32x8 ( /*OUT*/V256*, V256*, V256* );
+
+#endif /* ndef __VEX_HOST_GENERIC_SIMD256_H */
+
+/*---------------------------------------------------------------*/
+/*--- end host_generic_simd256.h ---*/
+/*---------------------------------------------------------------*/
Added: trunk/priv/host_generic_simd256.c (+57 -0)
===================================================================
--- trunk/priv/host_generic_simd256.c 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/host_generic_simd256.c 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -0,0 +1,57 @@
+
+/*---------------------------------------------------------------*/
+/*--- begin host_generic_simd256.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+ This file is part of Valgrind, a dynamic binary instrumentation
+ framework.
+
+ Copyright (C) 2012 OpenWorks GbR
+ in...@op...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Generic helper functions for doing 256-bit SIMD arithmetic in cases
+ where the instruction selectors cannot generate code in-line.
+ These are purely back-end entities and cannot be seen/referenced
+ from IR. */
+
+#include "libvex_basictypes.h"
+#include "host_generic_simd256.h"
+
+
+void VEX_REGPARM(3)
+ h_generic_calc_Perm32x8 ( /*OUT*/V256* res,
+ V256* argL, V256* argR )
+{
+ res->w32[0] = argL->w32[ argR->w32[0] & 7 ];
+ res->w32[1] = argL->w32[ argR->w32[1] & 7 ];
+ res->w32[2] = argL->w32[ argR->w32[2] & 7 ];
+ res->w32[3] = argL->w32[ argR->w32[3] & 7 ];
+ res->w32[4] = argL->w32[ argR->w32[4] & 7 ];
+ res->w32[5] = argL->w32[ argR->w32[5] & 7 ];
+ res->w32[6] = argL->w32[ argR->w32[6] & 7 ];
+ res->w32[7] = argL->w32[ argR->w32[7] & 7 ];
+}
+
+
+/*---------------------------------------------------------------*/
+/*--- end host_generic_simd256.c ---*/
+/*---------------------------------------------------------------*/
Added: trunk/priv/host_generic_maddf.h (+48 -0)
===================================================================
--- trunk/priv/host_generic_maddf.h 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/host_generic_maddf.h 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -0,0 +1,48 @@
+
+/*---------------------------------------------------------------*/
+/*--- begin host_generic_maddf.h ---*/
+/*---------------------------------------------------------------*/
+
+/*
+ Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <ja...@re...>, 2010.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>.
+*/
+
+/* Generic helper functions for doing FMA, i.e. compute x * y + z
+ as ternary operation.
+ These are purely back-end entities and cannot be seen/referenced
+ from IR. */
+
+#ifndef __VEX_HOST_GENERIC_MADDF_H
+#define __VEX_HOST_GENERIC_MADDF_H
+
+#include "libvex_basictypes.h"
+
+extern VEX_REGPARM(3)
+ void h_generic_calc_MAddF32 ( /*OUT*/Float*, Float*, Float*, Float* );
+
+extern VEX_REGPARM(3)
+ void h_generic_calc_MAddF64 ( /*OUT*/Double*, Double*, Double*,
+ Double* );
+
+#endif /* ndef __VEX_HOST_GENERIC_MADDF_H */
+
+/*---------------------------------------------------------------*/
+/*--- end host_generic_maddf.h --*/
+/*---------------------------------------------------------------*/
Added: trunk/priv/host_generic_maddf.c (+320 -0)
===================================================================
--- trunk/priv/host_generic_maddf.c 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/host_generic_maddf.c 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -0,0 +1,320 @@
+
+/*---------------------------------------------------------------*/
+/*--- begin host_generic_maddf.c ---*/
+/*---------------------------------------------------------------*/
+
+/*
+ Compute x * y + z as ternary operation.
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <ja...@re...>, 2010.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>.
+*/
+
+/* Generic helper functions for doing FMA, i.e. compute x * y + z
+ as ternary operation.
+ These are purely back-end entities and cannot be seen/referenced
+ from IR. */
+
+#include "libvex_basictypes.h"
+#include "host_generic_maddf.h"
+#include "main_util.h"
+
+/* This implementation relies on Double being more than twice as
+ precise as Float and uses rounding to odd in order to avoid problems
+ with double rounding.
+ See a paper by Boldo and Melquiond:
+ http://www.lri.fr/~melquion/doc/08-tc.pdf */
+
+#define FORCE_EVAL(X) __asm __volatile__ ("" : : "m" (X))
+
+#if defined(__x86_64__) && defined(__SSE2_MATH__)
+# define ENV_TYPE unsigned int
+/* Save current rounding mode into ENV, hold exceptions, set rounding
+ mode to rounding toward zero. */
+# define ROUNDTOZERO(env) \
+ do { \
+ unsigned int mxcsr; \
+ __asm __volatile__ ("stmxcsr %0" : "=m" (mxcsr)); \
+ (env) = mxcsr; \
+ mxcsr = (mxcsr | 0x7f80) & ~0x3f; \
+ __asm __volatile__ ("ldmxcsr %0" : : "m" (mxcsr));\
+ } while (0)
+/* Restore exceptions from ENV, return if inexact exception has been raised
+ since ROUNDTOZERO. */
+# define RESET_TESTINEXACT(env) \
+ ({ \
+ unsigned int mxcsr, ret; \
+ __asm __volatile__ ("stmxcsr %0" : "=m" (mxcsr)); \
+ ret = (mxcsr >> 5) & 1; \
+ mxcsr = (mxcsr & 0x3d) | (env); \
+ __asm __volatile__ ("ldmxcsr %0" : : "m" (mxcsr));\
+ ret; \
+ })
+/* Return if inexact exception has been raised since ROUNDTOZERO. */
+# define TESTINEXACT() \
+ ({ \
+ unsigned int mxcsr; \
+ __asm __volatile__ ("stmxcsr %0" : "=m" (mxcsr)); \
+ (mxcsr >> 5) & 1; \
+ })
+#endif
+
+#define DBL_MANT_DIG 53
+#define IEEE754_DOUBLE_BIAS 0x3ff
+
+union vg_ieee754_double {
+ Double d;
+
+ /* This is the IEEE 754 double-precision format. */
+ struct {
+#ifdef VKI_BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ unsigned int mantissa0:20;
+ unsigned int mantissa1:32;
+#else
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+#endif
+ } ieee;
+};
+
+void VEX_REGPARM(3)
+ h_generic_calc_MAddF32 ( /*OUT*/Float* res,
+ Float* argX, Float* argY, Float* argZ )
+{
+#ifndef ENV_TYPE
+ /* Lame fallback implementation. */
+ *res = *argX * *argY + *argZ;
+#else
+ ENV_TYPE env;
+ /* Multiplication is always exact. */
+ Double temp = (Double) *argX * (Double) *argY;
+ union vg_ieee754_double u;
+
+ ROUNDTOZERO (env);
+
+ /* Perform addition with round to odd. */
+ u.d = temp + (Double) *argZ;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ FORCE_EVAL (u.d);
+
+ /* Reset rounding mode and test for inexact simultaneously. */
+ int j = RESET_TESTINEXACT (env);
+
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff)
+ u.ieee.mantissa1 |= j;
+
+ /* And finally truncation with round to nearest. */
+ *res = (Float) u.d;
+#endif
+}
+
+
+void VEX_REGPARM(3)
+ h_generic_calc_MAddF64 ( /*OUT*/Double* res,
+ Double* argX, Double* argY, Double* argZ )
+{
+#ifndef ENV_TYPE
+ /* Lame fallback implementation. */
+ *res = *argX * *argY + *argZ;
+#else
+ Double x = *argX, y = *argY, z = *argZ;
+ union vg_ieee754_double u, v, w;
+ int adjust = 0;
+ u.d = x;
+ v.d = y;
+ w.d = z;
+ if (UNLIKELY (u.ieee.exponent + v.ieee.exponent
+ >= 0x7ff + IEEE754_DOUBLE_BIAS - DBL_MANT_DIG)
+ || UNLIKELY (u.ieee.exponent >= 0x7ff - DBL_MANT_DIG)
+ || UNLIKELY (v.ieee.exponent >= 0x7ff - DBL_MANT_DIG)
+ || UNLIKELY (w.ieee.exponent >= 0x7ff - DBL_MANT_DIG)
+ || UNLIKELY (u.ieee.exponent + v.ieee.exponent
+ <= IEEE754_DOUBLE_BIAS + DBL_MANT_DIG)) {
+ /* If z is Inf, but x and y are finite, the result should be
+ z rather than NaN. */
+ if (w.ieee.exponent == 0x7ff
+ && u.ieee.exponent != 0x7ff
+ && v.ieee.exponent != 0x7ff) {
+ *res = (z + x) + y;
+ return;
+ }
+ /* If x or y or z is Inf/NaN, or if fma will certainly overflow,
+ or if x * y is less than half of DBL_DENORM_MIN,
+ compute as x * y + z. */
+ if (u.ieee.exponent == 0x7ff
+ || v.ieee.exponent == 0x7ff
+ || w.ieee.exponent == 0x7ff
+ || u.ieee.exponent + v.ieee.exponent > 0x7ff + IEEE754_DOUBLE_BIAS
+ || u.ieee.exponent + v.ieee.exponent
+ < IEEE754_DOUBLE_BIAS - DBL_MANT_DIG - 2) {
+ *res = x * y + z;
+ return;
+ }
+ if (u.ieee.exponent + v.ieee.exponent
+ >= 0x7ff + IEEE754_DOUBLE_BIAS - DBL_MANT_DIG) {
+ /* Compute 1p-53 times smaller result and multiply
+ at the end. */
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent -= DBL_MANT_DIG;
+ else
+ v.ieee.exponent -= DBL_MANT_DIG;
+ /* If x + y exponent is very large and z exponent is very small,
+ it doesn't matter if we don't adjust it. */
+ if (w.ieee.exponent > DBL_MANT_DIG)
+ w.ieee.exponent -= DBL_MANT_DIG;
+ adjust = 1;
+ } else if (w.ieee.exponent >= 0x7ff - DBL_MANT_DIG) {
+ /* Similarly.
+ If z exponent is very large and x and y exponents are
+ very small, it doesn't matter if we don't adjust it. */
+ if (u.ieee.exponent > v.ieee.exponent) {
+ if (u.ieee.exponent > DBL_MANT_DIG)
+ u.ieee.exponent -= DBL_MANT_DIG;
+ } else if (v.ieee.exponent > DBL_MANT_DIG)
+ v.ieee.exponent -= DBL_MANT_DIG;
+ w.ieee.exponent -= DBL_MANT_DIG;
+ adjust = 1;
+ } else if (u.ieee.exponent >= 0x7ff - DBL_MANT_DIG) {
+ u.ieee.exponent -= DBL_MANT_DIG;
+ if (v.ieee.exponent)
+ v.ieee.exponent += DBL_MANT_DIG;
+ else
+ v.d *= 0x1p53;
+ } else if (v.ieee.exponent >= 0x7ff - DBL_MANT_DIG) {
+ v.ieee.exponent -= DBL_MANT_DIG;
+ if (u.ieee.exponent)
+ u.ieee.exponent += DBL_MANT_DIG;
+ else
+ u.d *= 0x1p53;
+ } else /* if (u.ieee.exponent + v.ieee.exponent
+ <= IEEE754_DOUBLE_BIAS + DBL_MANT_DIG) */ {
+ if (u.ieee.exponent > v.ieee.exponent)
+ u.ieee.exponent += 2 * DBL_MANT_DIG;
+ else
+ v.ieee.exponent += 2 * DBL_MANT_DIG;
+ if (w.ieee.exponent <= 4 * DBL_MANT_DIG + 4) {
+ if (w.ieee.exponent)
+ w.ieee.exponent += 2 * DBL_MANT_DIG;
+ else
+ w.d *= 0x1p106;
+ adjust = -1;
+ }
+ /* Otherwise x * y should just affect inexact
+ and nothing else. */
+ }
+ x = u.d;
+ y = v.d;
+ z = w.d;
+ }
+ /* Multiplication m1 + m2 = x * y using Dekker's algorithm. */
+# define C ((1 << (DBL_MANT_DIG + 1) / 2) + 1)
+ Double x1 = x * C;
+ Double y1 = y * C;
+ Double m1 = x * y;
+ x1 = (x - x1) + x1;
+ y1 = (y - y1) + y1;
+ Double x2 = x - x1;
+ Double y2 = y - y1;
+ Double m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2;
+# undef C
+
+ /* Addition a1 + a2 = z + m1 using Knuth's algorithm. */
+ Double a1 = z + m1;
+ Double t1 = a1 - z;
+ Double t2 = a1 - t1;
+ t1 = m1 - t1;
+ t2 = z - t2;
+ Double a2 = t1 + t2;
+
+ ENV_TYPE env;
+ ROUNDTOZERO (env);
+
+ /* Perform m2 + a2 addition with round to odd. */
+ u.d = a2 + m2;
+
+ if (UNLIKELY (adjust < 0)) {
+ if ((u.ieee.mantissa1 & 1) == 0)
+ u.ieee.mantissa1 |= TESTINEXACT ();
+ v.d = a1 + u.d;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ FORCE_EVAL (v.d);
+ }
+
+ /* Reset rounding mode and test for inexact simultaneously. */
+ int j = RESET_TESTINEXACT (env) != 0;
+
+ if (LIKELY (adjust == 0)) {
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff)
+ u.ieee.mantissa1 |= j;
+ /* Result is a1 + u.d. */
+ *res = a1 + u.d;
+ } else if (LIKELY (adjust > 0)) {
+ if ((u.ieee.mantissa1 & 1) == 0 && u.ieee.exponent != 0x7ff)
+ u.ieee.mantissa1 |= j;
+ /* Result is a1 + u.d, scaled up. */
+ *res = (a1 + u.d) * 0x1p53;
+ } else {
+ /* If a1 + u.d is exact, the only rounding happens during
+ scaling down. */
+ if (j == 0) {
+ *res = v.d * 0x1p-106;
+ return;
+ }
+ /* If result rounded to zero is not subnormal, no double
+ rounding will occur. */
+ if (v.ieee.exponent > 106) {
+ *res = (a1 + u.d) * 0x1p-106;
+ return;
+ }
+ /* If v.d * 0x1p-106 with round to zero is a subnormal above
+ or equal to DBL_MIN / 2, then v.d * 0x1p-106 shifts mantissa
+ down just by 1 bit, which means v.ieee.mantissa1 |= j would
+ change the round bit, not sticky or guard bit.
+ v.d * 0x1p-106 never normalizes by shifting up,
+ so round bit plus sticky bit should be already enough
+ for proper rounding. */
+ if (v.ieee.exponent == 106) {
+ /* v.ieee.mantissa1 & 2 is LSB bit of the result before rounding,
+ v.ieee.mantissa1 & 1 is the round bit and j is our sticky
+ bit. In round-to-nearest 001 rounds down like 00,
+ 011 rounds up, even though 01 rounds down (thus we need
+ to adjust), 101 rounds down like 10 and 111 rounds up
+ like 11. */
+ if ((v.ieee.mantissa1 & 3) == 1) {
+ v.d *= 0x1p-106;
+ if (v.ieee.negative)
+ *res = v.d - 0x1p-1074;
+ else
+ *res = v.d + 0x1p-1074;
+ } else
+ *res = v.d * 0x1p-106;
+ return;
+ }
+ v.ieee.mantissa1 |= j;
+ *res = v.d * 0x1p-106;
+ return;
+ }
+#endif
+}
+
+/*---------------------------------------------------------------*/
+/*--- end host_generic_maddf.c --*/
+/*---------------------------------------------------------------*/
Modified: trunk/priv/host_amd64_isel.c (+356 -1)
===================================================================
--- trunk/priv/host_amd64_isel.c 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/host_amd64_isel.c 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -43,6 +43,8 @@
#include "host_generic_regs.h"
#include "host_generic_simd64.h"
#include "host_generic_simd128.h"
+#include "host_generic_simd256.h"
+#include "host_generic_maddf.h"
#include "host_amd64_defs.h"
@@ -2531,6 +2533,73 @@
return dst;
}
+ if (e->tag == Iex_Unop && e->Iex.Unop.op == Iop_NegF32) {
+ /* Sigh ... very rough code. Could do much better. */
+ /* Get the 128-bit literal 00---0 10---0 into a register
+ and xor it with the value to be negated. */
+ HReg r1 = newVRegI(env);
+ HReg dst = newVRegV(env);
+ HReg tmp = newVRegV(env);
+ HReg src = iselFltExpr(env, e->Iex.Unop.arg);
+ AMD64AMode* rsp0 = AMD64AMode_IR(0, hregAMD64_RSP());
+ addInstr(env, mk_vMOVsd_RR(src,tmp));
+ addInstr(env, AMD64Instr_Push(AMD64RMI_Imm(0)));
+ addInstr(env, AMD64Instr_Imm64( 1ULL<<31, r1 ));
+ addInstr(env, AMD64Instr_Push(AMD64RMI_Reg(r1)));
+ addInstr(env, AMD64Instr_SseLdSt(True, 16, dst, rsp0));
+ addInstr(env, AMD64Instr_SseReRg(Asse_XOR, tmp, dst));
+ add_to_rsp(env, 16);
+ return dst;
+ }
+
+ if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_MAddF32) {
+ IRQop *qop = e->Iex.Qop.details;
+ HReg dst = newVRegV(env);
+ HReg argX = iselFltExpr(env, qop->arg2);
+ HReg argY = iselFltExpr(env, qop->arg3);
+ HReg argZ = iselFltExpr(env, qop->arg4);
+ /* XXXROUNDINGFIXME */
+ /* set roundingmode here */
+ /* subq $16, %rsp -- make a space*/
+ sub_from_rsp(env, 16);
+ /* Prepare 4 arg regs:
+ leaq 0(%rsp), %rdi
+ leaq 4(%rsp), %rsi
+ leaq 8(%rsp), %rdx
+ leaq 12(%rsp), %rcx
+ */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(0, hregAMD64_RSP()),
+ hregAMD64_RDI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(4, hregAMD64_RSP()),
+ hregAMD64_RSI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(8, hregAMD64_RSP()),
+ hregAMD64_RDX()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(12, hregAMD64_RSP()),
+ hregAMD64_RCX()));
+ /* Store the three args, at (%rsi), (%rdx) and (%rcx):
+ movss %argX, 0(%rsi)
+ movss %argY, 0(%rdx)
+ movss %argZ, 0(%rcx)
+ */
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 4, argX,
+ AMD64AMode_IR(0, hregAMD64_RSI())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 4, argY,
+ AMD64AMode_IR(0, hregAMD64_RDX())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 4, argZ,
+ AMD64AMode_IR(0, hregAMD64_RCX())));
+ /* call the helper */
+ addInstr(env, AMD64Instr_Call( Acc_ALWAYS,
+ (ULong)(HWord)h_generic_calc_MAddF32,
+ 4, RetLocNone ));
+ /* fetch the result from memory, using %r_argp, which the
+ register allocator will keep alive across the call. */
+ addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 4, dst,
+ AMD64AMode_IR(0, hregAMD64_RSP())));
+ /* and finally, clear the space */
+ add_to_rsp(env, 16);
+ return dst;
+ }
+
ppIRExpr(e);
vpanic("iselFltExpr_wrk");
}
@@ -2662,6 +2731,54 @@
}
}
+ if (e->tag == Iex_Qop && e->Iex.Qop.details->op == Iop_MAddF64) {
+ IRQop *qop = e->Iex.Qop.details;
+ HReg dst = newVRegV(env);
+ HReg argX = iselDblExpr(env, qop->arg2);
+ HReg argY = iselDblExpr(env, qop->arg3);
+ HReg argZ = iselDblExpr(env, qop->arg4);
+ /* XXXROUNDINGFIXME */
+ /* set roundingmode here */
+ /* subq $32, %rsp -- make a space*/
+ sub_from_rsp(env, 32);
+ /* Prepare 4 arg regs:
+ leaq 0(%rsp), %rdi
+ leaq 8(%rsp), %rsi
+ leaq 16(%rsp), %rdx
+ leaq 24(%rsp), %rcx
+ */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(0, hregAMD64_RSP()),
+ hregAMD64_RDI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(8, hregAMD64_RSP()),
+ hregAMD64_RSI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(16, hregAMD64_RSP()),
+ hregAMD64_RDX()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(24, hregAMD64_RSP()),
+ hregAMD64_RCX()));
+ /* Store the three args, at (%rsi), (%rdx) and (%rcx):
+ movsd %argX, 0(%rsi)
+ movsd %argY, 0(%rdx)
+ movsd %argZ, 0(%rcx)
+ */
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 8, argX,
+ AMD64AMode_IR(0, hregAMD64_RSI())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 8, argY,
+ AMD64AMode_IR(0, hregAMD64_RDX())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 8, argZ,
+ AMD64AMode_IR(0, hregAMD64_RCX())));
+ /* call the helper */
+ addInstr(env, AMD64Instr_Call( Acc_ALWAYS,
+ (ULong)(HWord)h_generic_calc_MAddF64,
+ 4, RetLocNone ));
+ /* fetch the result from memory, using %r_argp, which the
+ register allocator will keep alive across the call. */
+ addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 8, dst,
+ AMD64AMode_IR(0, hregAMD64_RSP())));
+ /* and finally, clear the space */
+ add_to_rsp(env, 32);
+ return dst;
+ }
+
if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_RoundF64toInt) {
AMD64AMode* m8_rsp = AMD64AMode_IR(-8, hregAMD64_RSP());
HReg arg = iselDblExpr(env, e->Iex.Binop.arg2);
@@ -3478,6 +3595,7 @@
static void iselDVecExpr_wrk ( /*OUT*/HReg* rHi, /*OUT*/HReg* rLo,
ISelEnv* env, IRExpr* e )
{
+ HWord fn = 0; /* address of helper fn, if required */
vassert(e);
IRType ty = typeOfIRExpr(env->type_env,e);
vassert(ty == Ity_V256);
@@ -3599,6 +3717,8 @@
}
case Iop_CmpNEZ32x8: op = Asse_CMPEQ32; goto do_CmpNEZ_vector;
+ case Iop_CmpNEZ16x16: op = Asse_CMPEQ16; goto do_CmpNEZ_vector;
+ case Iop_CmpNEZ8x32: op = Asse_CMPEQ8; goto do_CmpNEZ_vector;
do_CmpNEZ_vector:
{
HReg argHi, argLo;
@@ -3673,6 +3793,37 @@
case Iop_AndV256: op = Asse_AND; goto do_SseReRg;
case Iop_OrV256: op = Asse_OR; goto do_SseReRg;
case Iop_XorV256: op = Asse_XOR; goto do_SseReRg;
+ case Iop_Add8x32: op = Asse_ADD8; goto do_SseReRg;
+ case Iop_Add16x16: op = Asse_ADD16; goto do_SseReRg;
+ case Iop_Add32x8: op = Asse_ADD32; goto do_SseReRg;
+ case Iop_Add64x4: op = Asse_ADD64; goto do_SseReRg;
+ case Iop_QAdd8Sx32: op = Asse_QADD8S; goto do_SseReRg;
+ case Iop_QAdd16Sx16: op = Asse_QADD16S; goto do_SseReRg;
+ case Iop_QAdd8Ux32: op = Asse_QADD8U; goto do_SseReRg;
+ case Iop_QAdd16Ux16: op = Asse_QADD16U; goto do_SseReRg;
+ case Iop_Avg8Ux32: op = Asse_AVG8U; goto do_SseReRg;
+ case Iop_Avg16Ux16: op = Asse_AVG16U; goto do_SseReRg;
+ case Iop_CmpEQ8x32: op = Asse_CMPEQ8; goto do_SseReRg;
+ case Iop_CmpEQ16x16: op = Asse_CMPEQ16; goto do_SseReRg;
+ case Iop_CmpEQ32x8: op = Asse_CMPEQ32; goto do_SseReRg;
+ case Iop_CmpGT8Sx32: op = Asse_CMPGT8S; goto do_SseReRg;
+ case Iop_CmpGT16Sx16: op = Asse_CMPGT16S; goto do_SseReRg;
+ case Iop_CmpGT32Sx8: op = Asse_CMPGT32S; goto do_SseReRg;
+ case Iop_Max16Sx16: op = Asse_MAX16S; goto do_SseReRg;
+ case Iop_Max8Ux32: op = Asse_MAX8U; goto do_SseReRg;
+ case Iop_Min16Sx16: op = Asse_MIN16S; goto do_SseReRg;
+ case Iop_Min8Ux32: op = Asse_MIN8U; goto do_SseReRg;
+ case Iop_MulHi16Ux16: op = Asse_MULHI16U; goto do_SseReRg;
+ case Iop_MulHi16Sx16: op = Asse_MULHI16S; goto do_SseReRg;
+ case Iop_Mul16x16: op = Asse_MUL16; goto do_SseReRg;
+ case Iop_Sub8x32: op = Asse_SUB8; goto do_SseReRg;
+ case Iop_Sub16x16: op = Asse_SUB16; goto do_SseReRg;
+ case Iop_Sub32x8: op = Asse_SUB32; goto do_SseReRg;
+ case Iop_Sub64x4: op = Asse_SUB64; goto do_SseReRg;
+ case Iop_QSub8Sx32: op = Asse_QSUB8S; goto do_SseReRg;
+ case Iop_QSub16Sx16: op = Asse_QSUB16S; goto do_SseReRg;
+ case Iop_QSub8Ux32: op = Asse_QSUB8U; goto do_SseReRg;
+ case Iop_QSub16Ux16: op = Asse_QSUB16U; goto do_SseReRg;
do_SseReRg:
{
HReg argLhi, argLlo, argRhi, argRlo;
@@ -3689,12 +3840,198 @@
return;
}
+ case Iop_ShlN16x16: op = Asse_SHL16; goto do_SseShift;
+ case Iop_ShlN32x8: op = Asse_SHL32; goto do_SseShift;
+ case Iop_ShlN64x4: op = Asse_SHL64; goto do_SseShift;
+ case Iop_SarN16x16: op = Asse_SAR16; goto do_SseShift;
+ case Iop_SarN32x8: op = Asse_SAR32; goto do_SseShift;
+ case Iop_ShrN16x16: op = Asse_SHR16; goto do_SseShift;
+ case Iop_ShrN32x8: op = Asse_SHR32; goto do_SseShift;
+ case Iop_ShrN64x4: op = Asse_SHR64; goto do_SseShift;
+ do_SseShift: {
+ HReg gregHi, gregLo;
+ iselDVecExpr(&gregHi, &gregLo, env, e->Iex.Binop.arg1);
+ AMD64RMI* rmi = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
+ AMD64AMode* rsp0 = AMD64AMode_IR(0, hregAMD64_RSP());
+ HReg ereg = newVRegV(env);
+ HReg dstHi = newVRegV(env);
+ HReg dstLo = newVRegV(env);
+ addInstr(env, AMD64Instr_Push(AMD64RMI_Imm(0)));
+ addInstr(env, AMD64Instr_Push(rmi));
+ addInstr(env, AMD64Instr_SseLdSt(True/*load*/, 16, ereg, rsp0));
+ addInstr(env, mk_vMOVsd_RR(gregHi, dstHi));
+ addInstr(env, AMD64Instr_SseReRg(op, ereg, dstHi));
+ addInstr(env, mk_vMOVsd_RR(gregLo, dstLo));
+ addInstr(env, AMD64Instr_SseReRg(op, ereg, dstLo));
+ add_to_rsp(env, 16);
+ *rHi = dstHi;
+ *rLo = dstLo;
+ return;
+ }
+
case Iop_V128HLtoV256: {
*rHi = iselVecExpr(env, e->Iex.Binop.arg1);
*rLo = iselVecExpr(env, e->Iex.Binop.arg2);
return;
}
+ case Iop_Mul32x8: fn = (HWord)h_generic_calc_Mul32x4;
+ goto do_SseAssistedBinary;
+ case Iop_Max32Sx8: fn = (HWord)h_generic_calc_Max32Sx4;
+ goto do_SseAssistedBinary;
+ case Iop_Min32Sx8: fn = (HWord)h_generic_calc_Min32Sx4;
+ goto do_SseAssistedBinary;
+ case Iop_Max32Ux8: fn = (HWord)h_generic_calc_Max32Ux4;
+ goto do_SseAssistedBinary;
+ case Iop_Min32Ux8: fn = (HWord)h_generic_calc_Min32Ux4;
+ goto do_SseAssistedBinary;
+ case Iop_Max16Ux16: fn = (HWord)h_generic_calc_Max16Ux8;
+ goto do_SseAssistedBinary;
+ case Iop_Min16Ux16: fn = (HWord)h_generic_calc_Min16Ux8;
+ goto do_SseAssistedBinary;
+ case Iop_Max8Sx32: fn = (HWord)h_generic_calc_Max8Sx16;
+ goto do_SseAssistedBinary;
+ case Iop_Min8Sx32: fn = (HWord)h_generic_calc_Min8Sx16;
+ goto do_SseAssistedBinary;
+ case Iop_CmpEQ64x4: fn = (HWord)h_generic_calc_CmpEQ64x2;
+ goto do_SseAssistedBinary;
+ case Iop_CmpGT64Sx4: fn = (HWord)h_generic_calc_CmpGT64Sx2;
+ goto do_SseAssistedBinary;
+ do_SseAssistedBinary: {
+ /* RRRufff! RRRufff code is what we're generating here. Oh
+ well. */
+ vassert(fn != 0);
+ HReg dstHi = newVRegV(env);
+ HReg dstLo = newVRegV(env);
+ HReg argLhi, argLlo, argRhi, argRlo;
+ iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
+ iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
+ HReg argp = newVRegI(env);
+ /* subq $160, %rsp -- make a space*/
+ sub_from_rsp(env, 160);
+ /* leaq 48(%rsp), %r_argp -- point into it */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(48, hregAMD64_RSP()),
+ argp));
+ /* andq $-16, %r_argp -- 16-align the pointer */
+ addInstr(env, AMD64Instr_Alu64R(Aalu_AND,
+ AMD64RMI_Imm( ~(UInt)15 ),
+ argp));
+ /* Prepare 3 arg regs:
+ leaq 0(%r_argp), %rdi
+ leaq 16(%r_argp), %rsi
+ leaq 32(%r_argp), %rdx
+ */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(0, argp),
+ hregAMD64_RDI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(16, argp),
+ hregAMD64_RSI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(32, argp),
+ hregAMD64_RDX()));
+ /* Store the two high args, at (%rsi) and (%rdx):
+ movupd %argLhi, 0(%rsi)
+ movupd %argRhi, 0(%rdx)
+ */
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argLhi,
+ AMD64AMode_IR(0, hregAMD64_RSI())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argRhi,
+ AMD64AMode_IR(0, hregAMD64_RDX())));
+ /* Store the two low args, at 48(%rsi) and 48(%rdx):
+ movupd %argLlo, 48(%rsi)
+ movupd %argRlo, 48(%rdx)
+ */
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argLlo,
+ AMD64AMode_IR(48, hregAMD64_RSI())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argRlo,
+ AMD64AMode_IR(48, hregAMD64_RDX())));
+ /* call the helper */
+ addInstr(env, AMD64Instr_Call( Acc_ALWAYS, (ULong)fn, 3, RetLocNone ));
+ /* Prepare 3 arg regs:
+ leaq 48(%r_argp), %rdi
+ leaq 64(%r_argp), %rsi
+ leaq 80(%r_argp), %rdx
+ */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(48, argp),
+ hregAMD64_RDI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(64, argp),
+ hregAMD64_RSI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(80, argp),
+ hregAMD64_RDX()));
+ /* call the helper */
+ addInstr(env, AMD64Instr_Call( Acc_ALWAYS, (ULong)fn, 3, RetLocNone ));
+ /* fetch the result from memory, using %r_argp, which the
+ register allocator will keep alive across the call. */
+ addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 16, dstHi,
+ AMD64AMode_IR(0, argp)));
+ addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 16, dstLo,
+ AMD64AMode_IR(48, argp)));
+ /* and finally, clear the space */
+ add_to_rsp(env, 160);
+ *rHi = dstHi;
+ *rLo = dstLo;
+ return;
+ }
+
+ case Iop_Perm32x8: fn = (HWord)h_generic_calc_Perm32x8;
+ goto do_SseAssistedBinary256;
+ do_SseAssistedBinary256: {
+ /* RRRufff! RRRufff code is what we're generating here. Oh
+ well. */
+ vassert(fn != 0);
+ HReg dstHi = newVRegV(env);
+ HReg dstLo = newVRegV(env);
+ HReg argLhi, argLlo, argRhi, argRlo;
+ iselDVecExpr(&argLhi, &argLlo, env, e->Iex.Binop.arg1);
+ iselDVecExpr(&argRhi, &argRlo, env, e->Iex.Binop.arg2);
+ HReg argp = newVRegI(env);
+ /* subq $160, %rsp -- make a space*/
+ sub_from_rsp(env, 160);
+ /* leaq 48(%rsp), %r_argp -- point into it */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(48, hregAMD64_RSP()),
+ argp));
+ /* andq $-16, %r_argp -- 16-align the pointer */
+ addInstr(env, AMD64Instr_Alu64R(Aalu_AND,
+ AMD64RMI_Imm( ~(UInt)15 ),
+ argp));
+ /* Prepare 3 arg regs:
+ leaq 0(%r_argp), %rdi
+ leaq 32(%r_argp), %rsi
+ leaq 64(%r_argp), %rdx
+ */
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(0, argp),
+ hregAMD64_RDI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(32, argp),
+ hregAMD64_RSI()));
+ addInstr(env, AMD64Instr_Lea64(AMD64AMode_IR(64, argp),
+ hregAMD64_RDX()));
+ /* Store the two args, at (%rsi) and (%rdx):
+ movupd %argLlo, 0(%rsi)
+ movupd %argLhi, 16(%rsi)
+ movupd %argRlo, 0(%rdx)
+ movupd %argRhi, 16(%rdx)
+ */
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argLlo,
+ AMD64AMode_IR(0, hregAMD64_RSI())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argLhi,
+ AMD64AMode_IR(16, hregAMD64_RSI())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argRlo,
+ AMD64AMode_IR(0, hregAMD64_RDX())));
+ addInstr(env, AMD64Instr_SseLdSt(False/*!isLoad*/, 16, argRhi,
+ AMD64AMode_IR(16, hregAMD64_RDX())));
+ /* call the helper */
+ addInstr(env, AMD64Instr_Call( Acc_ALWAYS, (ULong)fn, 3, RetLocNone ));
+ /* fetch the result from memory, using %r_argp, which the
+ register allocator will keep alive across the call. */
+ addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 16, dstLo,
+ AMD64AMode_IR(0, argp)));
+ addInstr(env, AMD64Instr_SseLdSt(True/*isLoad*/, 16, dstHi,
+ AMD64AMode_IR(16, argp)));
+ /* and finally, clear the space */
+ add_to_rsp(env, 160);
+ *rHi = dstHi;
+ *rLo = dstLo;
+ return;
+ }
+
default:
break;
} /* switch (e->Iex.Binop.op) */
@@ -3725,6 +4062,22 @@
return;
}
+ if (e->tag == Iex_ITE) {
+ HReg r1Hi, r1Lo, r0Hi, r0Lo;
+ iselDVecExpr(&r1Hi, &r1Lo, env, e->Iex.ITE.iftrue);
+ iselDVecExpr(&r0Hi, &r0Lo, env, e->Iex.ITE.iffalse);
+ HReg dstHi = newVRegV(env);
+ HReg dstLo = newVRegV(env);
+ addInstr(env, mk_vMOVsd_RR(r1Hi,dstHi));
+ addInstr(env, mk_vMOVsd_RR(r1Lo,dstLo));
+ AMD64CondCode cc = iselCondCode(env, e->Iex.ITE.cond);
+ addInstr(env, AMD64Instr_SseCMov(cc ^ 1, r0Hi, dstHi));
+ addInstr(env, AMD64Instr_SseCMov(cc ^ 1, r0Lo, dstLo));
+ *rHi = dstHi;
+ *rLo = dstLo;
+ return;
+ }
+
//avx_fail:
vex_printf("iselDVecExpr (amd64, subarch = %s): can't reduce\n",
LibVEX_ppVexHwCaps(VexArchAMD64, env->hwcaps));
@@ -4303,7 +4656,9 @@
| VEX_HWCAPS_AMD64_CX16
| VEX_HWCAPS_AMD64_LZCNT
| VEX_HWCAPS_AMD64_AVX
- | VEX_HWCAPS_AMD64_RDTSCP)));
+ | VEX_HWCAPS_AMD64_RDTSCP
+ | VEX_HWCAPS_AMD64_BMI
+ | VEX_HWCAPS_AMD64_AVX2)));
/* Make up an initial environment to use. */
env = LibVEX_Alloc(sizeof(ISelEnv));
Modified: trunk/pub/libvex_ir.h (+28 -1)
===================================================================
--- trunk/pub/libvex_ir.h 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/pub/libvex_ir.h 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -1514,8 +1514,35 @@
Iop_NotV256,
/* MISC (vector integer cmp != 0) */
- Iop_CmpNEZ32x8, Iop_CmpNEZ64x4,
+ Iop_CmpNEZ8x32, Iop_CmpNEZ16x16, Iop_CmpNEZ32x8, Iop_CmpNEZ64x4,
+ Iop_Add8x32, Iop_Add16x16, Iop_Add32x8, Iop_Add64x4,
+ Iop_Sub8x32, Iop_Sub16x16, Iop_Sub32x8, Iop_Sub64x4,
+
+ Iop_CmpEQ8x32, Iop_CmpEQ16x16, Iop_CmpEQ32x8, Iop_CmpEQ64x4,
+ Iop_CmpGT8Sx32, Iop_CmpGT16Sx16, Iop_CmpGT32Sx8, Iop_CmpGT64Sx4,
+
+ Iop_ShlN16x16, Iop_ShlN32x8, Iop_ShlN64x4,
+ Iop_ShrN16x16, Iop_ShrN32x8, Iop_ShrN64x4,
+ Iop_SarN16x16, Iop_SarN32x8,
+
+ Iop_Max8Sx32, Iop_Max16Sx16, Iop_Max32Sx8,
+ Iop_Max8Ux32, Iop_Max16Ux16, Iop_Max32Ux8,
+ Iop_Min8Sx32, Iop_Min16Sx16, Iop_Min32Sx8,
+ Iop_Min8Ux32, Iop_Min16Ux16, Iop_Min32Ux8,
+
+ Iop_Mul16x16, Iop_Mul32x8,
+ Iop_MulHi16Ux16, Iop_MulHi16Sx16,
+
+ Iop_QAdd8Ux32, Iop_QAdd16Ux16,
+ Iop_QAdd8Sx32, Iop_QAdd16Sx16,
+ Iop_QSub8Ux32, Iop_QSub16Ux16,
+ Iop_QSub8Sx32, Iop_QSub16Sx16,
+
+ Iop_Avg8Ux32, Iop_Avg16Ux16,
+
+ Iop_Perm32x8,
+
/* ------------------ 256-bit SIMD FP. ------------------ */
Iop_Add64Fx4,
Iop_Sub64Fx4,
Modified: trunk/pub/libvex.h (+7 -5)
===================================================================
--- trunk/pub/libvex.h 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/pub/libvex.h 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -79,11 +79,13 @@
/* amd64: baseline capability is SSE2, with cmpxchg8b but not
cmpxchg16b. */
-#define VEX_HWCAPS_AMD64_SSE3 (1<<5) /* SSE3 support */
-#define VEX_HWCAPS_AMD64_CX16 (1<<6) /* cmpxchg16b support */
-#define VEX_HWCAPS_AMD64_LZCNT (1<<7) /* SSE4a LZCNT insn */
-#define VEX_HWCAPS_AMD64_AVX (1<<8) /* AVX instructions */
-#define VEX_HWCAPS_AMD64_RDTSCP (1<<9) /* RDTSCP instruction */
+#define VEX_HWCAPS_AMD64_SSE3 (1<<5) /* SSE3 support */
+#define VEX_HWCAPS_AMD64_CX16 (1<<6) /* cmpxchg16b support */
+#define VEX_HWCAPS_AMD64_LZCNT (1<<7) /* SSE4a LZCNT insn */
+#define VEX_HWCAPS_AMD64_AVX (1<<8) /* AVX instructions */
+#define VEX_HWCAPS_AMD64_RDTSCP (1<<9) /* RDTSCP instruction */
+#define VEX_HWCAPS_AMD64_BMI (1<<10) /* BMI1 instructions */
+#define VEX_HWCAPS_AMD64_AVX2 (1<<11) /* AVX2 instructions */
/* ppc32: baseline capability is integer only */
#define VEX_HWCAPS_PPC32_F (1<<8) /* basic (non-optional) FP */
Modified: trunk/pub/libvex_basictypes.h (+10 -0)
===================================================================
--- trunk/pub/libvex_basictypes.h 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/pub/libvex_basictypes.h 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -75,6 +75,16 @@
}
V128;
+/* A union for doing 256-bit vector primitives conveniently. */
+typedef
+ union {
+ UChar w8[32];
+ UShort w16[16];
+ UInt w32[8];
+ ULong w64[4];
+ }
+ V256;
+
/* Floating point. */
typedef float Float; /* IEEE754 single-precision (32-bit) value */
typedef double Double; /* IEEE754 double-precision (64-bit) value */
Modified: trunk/priv/guest_amd64_toIR.c (+3983 -26)
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2013-03-26 13:53:18 +00:00 (rev 2701)
+++ trunk/priv/guest_amd64_toIR.c 2013-03-27 11:37:33 +00:00 (rev 2702)
@@ -1290,6 +1290,38 @@
}
+static
+IRExpr* getIRegV ( Int sz, Prefix pfx )
+{
+ if (sz == 4) {
+ sz = 8;
+ return unop(Iop_64to32,
+ IRExpr_Get( offsetIReg( sz, getVexNvvvv(pfx), False ),
+ szToITy(sz) ));
+ } else {
+ return IRExpr_Get( offsetIReg( sz, getVexNvvvv(pfx), False ),
+ szToITy(sz) );
+ }
+}
+
+static
+void putIRegV ( Int sz, Prefix pfx, IRExpr* e )
+{
+ vassert(typeOfIRExpr(irsb->tyenv,e) == szToITy(sz));
+ if (sz == 4) {
+ e = unop(Iop_32Uto64,e);
+ }
+ stmt( IRStmt_Put( offsetIReg( sz, getVexNvvvv(pfx), False ), e ) );
+}
+
+static
+const HChar* nameIRegV ( Int sz, Prefix pfx )
+{
+ return nameIReg( sz, getVexNvvvv(pfx), False );
+}
+
+
+
/* Produce the guest state offset for a reference to the 'e' register
field in a modrm byte, taking into account REX (or its absence),
and the size of the access. eregOfRexRM will assert if mod_reg_rm
@@ -2677,6 +2709,88 @@
}
+/* Similarly for VSIB addressing. This returns just the addend,
+ and fills in *rI and *vscale with the register number of the vector
+ index and its multiplicand. */
+static
+IRTemp disAVSIBMode ( /*OUT*/Int* len,
+ VexAbiInfo* vbi, Prefix pfx, Long delta,
+ /*OUT*/HChar* buf, /*OUT*/UInt* rI,
+ IRType ty, /*OUT*/Int* vscale )
+{
+ UChar mod_reg_rm = getUChar(delta);
+ const HChar *vindex;
+
+ *len = 0;
+ *rI = 0;
+ *vscale = 0;
+ buf[0] = (UChar)0;
+ if ((mod_reg_rm & 7) != 4 || epartIsReg(mod_reg_rm))
+ return IRTemp_INVALID;
+
+ UChar sib = getUChar(delta+1);
+ UChar scale = toUChar((sib >> 6) & 3);
+ UChar index_r = toUChar((sib >> 3) & 7);
+ UChar base_r = toUChar(sib & 7);
+ Long d = 0;
+ /* correct since #(R13) == 8 + #(RBP) */
+ Bool base_is_BPor13 = toBool(base_r == R_RBP);
+ delta += 2;
+ *len = 2;
+
+ *rI = index_r | (getRexX(pfx) << 3);
+ if (ty == Ity_V128)
+ vindex = nameXMMReg(*rI);
+ else
+ vindex = nameYMMReg(*rI);
+ *vscale = 1<<scale;
+
+ switch (mod_reg_rm >> 6) {
+ case 0:
+ if (base_is_BPor13) {
+ d = getSDisp32(delta);
+ *len += 4;
+ if (scale == 0) {
+ DIS(buf, "%s%lld(,%s)", segRegTxt(pfx), d, vindex);
+ } else {
+ DIS(buf, "%s%lld(,%s,%d)", segRegTxt(pfx), d, vindex, 1<<scale);
+ }
+ return disAMode_copy2tmp( mkU64(d) );
+ } else {
+ if (scale == 0) {
+ DIS(buf, "%s(%s,%s)", segRegTxt(pfx),
+ nameIRegRexB(8,pfx,base_r), vindex);
+ } else {
+ DIS(buf, "%s(%s,%s,%d)", segRegTxt(pfx),
+ nameIRegRexB(8,pfx,base_r), vindex, 1<<scale);
+ }
+ }
+ break;
+ case 1:
+ d = getSDisp8(delta);
+ *len += 1;
+ goto have_disp;
+ case 2:
+ d = getSDisp32(delta);
+ *len += 4;
+ have_disp:
+ if (scale == 0) {
+ DIS(buf, "%s%lld(%s,%s)", segRegTxt(pfx), d,
+ nameIRegRexB(8,pfx,base_r), vindex);
+ } else {
+ DIS(buf, "%s%lld(%s,%s,%d)", segRegTxt(pfx), d,
+ nameIRegRexB(8,pfx,base_r), vindex, 1<<scale);
+ }
+ break;
+ }
+
+ if (!d)
+ return disAMode_copy2tmp( getIRegRexB(8,pfx,base_r) );
+ return disAMode_copy2tmp( binop(Iop_Add64, getIRegRexB(8,pfx,base_r),
+ mkU64(d)) );
+}
+
+
/* Figure out the number of (insn-stream) bytes constituting the amode
beginning at delta. Is useful for getting hold of literals beyond
the end of the amode before it has been disassembled. */
@@ -2822,7 +2936,7 @@
&& offsetIRegG(size,pfx,rm) == offsetIRegE(size,pfx,rm)) {
if (False && op8 == Iop_Sub8)
vex_printf("vex amd64->IR: sbb %%r,%%r optimisation(1)\n");
- putIRegG(size,pfx,rm, mkU(ty,0));
+ putIRegG(size,pfx,rm, mkU(ty,0));
}
assign( dst0, getIRegG(size,pfx,rm) );
@@ -3734,7 +3848,7 @@
/* Write the result back, if non-BT. */
if (gregLO3ofRM(modrm) != 4 /* BT */) {
if (epartIsReg(modrm)) {
- putIRegE(sz, pfx, modrm, narrowTo(ty, mkexpr(t2m)));
+ putIRegE(sz, pfx, modrm, narrowTo(ty, mkexpr(t2m)));
} else {
if (pfx & PFX_LOCK) {
casLE( mkexpr(t_addr),
@@ -3931,7 +4045,7 @@
} else {
addr = disAMode ( &len, vbi, pfx, delta, dis_buf,
/* we have to inform disAMode of any immediate
- bytes used */
+ bytes used */
gregLO3ofRM(modrm)==0/*TEST*/
? imin(4,sz)
: 0
@@ -4212,9 +4326,9 @@
putIReg64(R_RSP, mkexpr(t2) );
storeLE( mkexpr(t2), mkexpr(t3) );
break;
- } else {
+ } else {
goto unhandled; /* awaiting test case */
- }
+ }
default:
unhandled:
*decode_OK = False;
@@ -4673,6 +4787,34 @@
}
+/* Generate an IR sequence to do a count-trailing-zeroes operation on
+ the supplied IRTemp, and return a new IRTemp holding the result.
+ 'ty' may be Ity_I16, Ity_I32 or Ity_I64 only. In the case where
+ the argument is zero, return the number of bits in the word (the
+ natural semantics). */
+static IRTemp gen_TZCNT ( IRType ty, IRTemp src )
+{
+ vassert(ty == Ity_I64 || ty == Ity_I32 || ty == Ity_I16);
+
+ IRTemp src64 = newTemp(Ity_I64);
+ assign(src64, widenUto64( mkexpr(src) ));
+
+ // Ctz64 has undefined semantics when its input is zero, so
+ // special-case around that.
+ IRTemp res64 = newTemp(Ity_I64);
+ assign(res64,
+ IRExpr_ITE(
+ binop(Iop_CmpEQ64, mkexpr(src64), mkU64(0)),
+ mkU64(8 * sizeofIRType(ty)),
+ unop(Iop_Ctz64, mkexpr(src64))
+ ));
+
+ IRTemp res = newTemp(ty);
+ assign(res, narrowTo(ty, mkexpr(res64)));
+ return res;
+}
+
+
/*------------------------------------------------------------*/
/*--- ---*/
/*--- x87 FLOATING POINT INSTRUCTIONS ---*/
@@ -5248,7 +5390,7 @@
issue. If needed, side-exit to the next insn,
reporting the warning, so that Valgrind's dispatcher
sees the warning. */
- assign(ew, unop(Iop_64to32,mkexpr(w64)) );
+ assign(ew, unop(Iop_64to32,mkexpr(w64)) );
put_emwarn( mkexpr(ew) );
stmt(
IRStmt_Exit(
@@ -7512,7 +7654,7 @@
binop(Iop_16HLto32, mkexpr(esrc), mkexpr(gsrc)),
binop(Iop_16HLto32, mkexpr(gsrc), mkexpr(gsrc))
));
- /* result formed by shifting [esrc'gsrc'gsrc'gsrc] */
+ /* result formed by shifting [esrc'gsrc'gsrc'gsrc] */
assign( res64,
binop(Iop_Shr64,
binop(Iop_Shl64, mkexpr(tmp64), mkexpr(tmpSH)),
@@ -8142,8 +8284,7 @@
putIRegG(sz, pfx, rm, mkexpr(tmpd));
putIRegE(sz, pfx, rm, mkexpr(tmpt1));
DIP("xadd%c %s, %s\n",
- nameISize(sz), nameIRegG(sz,pfx,rm),
- nameIRegE(sz,pfx,rm));
+ nameISize(sz), nameIRegG(sz,pfx,rm), nameIRegE(sz,pfx,rm));
*decode_ok = True;
return 1+delta0;
}
@@ -8570,7 +8711,7 @@
}
putXMMReg( gregOfRexRM(pfx,rm),
eLeft ? binop(op, epart, gpart)
- : binop(op, gpart, epart) );
+ : binop(op, gpart, epart) );
return delta;
}
@@ -8743,7 +8884,7 @@
? unop( Iop_64UtoV128, loadLE(Ity_I64, mkexpr(addr)))
: /*sz==4*/
unop( Iop_32UtoV128, loadLE(Ity_I32, mkexpr(addr)))
- )
+ )
);
delta += alen+1;
DIP("%s $%d,%s,%s\n", opname,
@@ -9267,6 +9408,31 @@
return math_PABS_XMM(aa, 1);
}
+/* YMM version of math_PABS_XMM. */
+static IRTemp math_PABS_YMM ( IRTemp aa, Int laneszB )
+{
+ IRTemp res = newTemp(Ity_V256);
+ IRTemp aaHi = IRTemp_INVALID;
+ IRTemp aaLo = IRTemp_INVALID;
+ breakupV256toV128s(aa, &aaHi, &aaLo);
+ assign(res, binop(Iop_V128HLtoV256,
+ mkexpr(math_PABS_XMM(aaHi, laneszB)),
+ mkexpr(math_PABS_XMM(aaLo, laneszB))));
+ return res;
+}
+
+static IRTemp math_PABS_YMM_pap4 ( IRTemp aa ) {
+ return math_PABS_YMM(aa, 4);
+}
+
+static IRTemp math_PABS_YMM_pap2 ( IRTemp aa ) {
+ return math_PABS_YMM(aa, 2);
+}
+
+static IRTemp math_PABS_YMM_pap1 ( IRTemp aa ) {
+ return math_PABS_YMM(aa, 1);
+}
+
static IRExpr* dis_PALIGNR_XMM_helper ( IRTemp hi64,
IRTemp lo64, Long byteShift )
{
@@ -9634,6 +9800,47 @@
}
+static Long dis_PSHUFD_32x8 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
+{
+ Int order;
+ Int alen = 0;
+ HChar dis_buf[50];
+ IRTemp sV = newTemp(Ity_V256);
+ UChar modrm = getUChar(delta);
+ IRTemp addr = IRTemp_INVALID;
+ UInt rG = gregOfRexRM(pfx,modrm);
+ if (epartIsReg(modrm)) {
+ UInt rE = eregOfRexRM(pfx,modrm);
+ assign( sV, getYMMReg(rE) );
+ order = (Int)getUChar(delta+1);
+ delta += 1+1;
+ DIP("vpshufd $%d,%s,%s\n", order, nameYMMReg(rE), nameYMMReg(rG));
+ } else {
+ addr = disAMode ( &alen, vbi, pfx, delta, dis_buf,
+ 1/*byte after the amode*/ );
+ assign( sV, loadLE(Ity_V256, mkexpr(addr)) );
+ order = (Int)getUChar(delta+alen);
+ delta += alen+1;
+ DIP("vpshufd $%d,%s,%s\n", order, dis_buf, nameYMMReg(rG));
+ }
+
+ IRTemp s[8];
+ s[7] = s[6] = s[5] = s[4] = s[3] = s[2] = s[1] = s[0] = IRTemp_INVALID;
+ breakupV256to32s( sV, &s[7], &s[6], &s[5], &s[4],
+ &s[3], &s[2], &s[1], &s[0] );
+
+ putYMMReg( rG, mkV256from32s( s[4 + ((order>>6)&3)],
+ s[4 + ((order>>4)&3)],
+ s[4 + ((order>>2)&3)],
+ s[4 + ((order>>0)&3)],
+ s[0 + ((order>>6)&3)],
+ s[0 + ((order>>4)&3)],
+ s[0 + ((order>>2)&3)],
+ s[0 + ((order>>0)&3)] ) );
+ return delta;
+}
+
+
static IRTemp math_PSRLDQ ( IRTemp sV, Int imm )
{
IRTemp dV = newTemp(Ity_V128);
@@ -10280,6 +10487,28 @@
}
+static Long dis_PMOVMSKB_256 ( VexAbiInfo* vbi, Prefix pfx,
+ Long delta )
+{
+ UChar modrm = getUChar(delta);
+ vassert(epartIsReg(modrm)); /* ensured by caller */
+ UInt rE = eregOfRexRM(pfx,modrm);
+ UInt rG = gregOfRexRM(pfx,modrm);
+ IRTemp t0 = newTemp(Ity_V128);
+ IRTemp t1 = newTemp(Ity_V128);
+ IRTemp t2 = newTemp(Ity_I16);
+ IRTemp t3 = newTemp(Ity_I16);
+ assign(t0, getYMMRegLane128(rE, 0));
+ assign(t1, getYMMRegLane128(rE, 1));
+ assign(t2, unop(Iop_GetMSBs8x16, mkexpr(t0)));
+ assign(t3, unop(Iop_GetMSBs8x16, mkexpr(t1)));
+ putIReg32(rG, binop(Iop_16HLto32, mkexpr(t3), mkexpr(t2)));
+ DIP("vpmovmskb %s,%s\n", nameYMMReg(rE), nameIReg32(rG));
+ delta += 1;
+ return delta;
+}
+
+
/* FIXME: why not just use InterleaveLO / InterleaveHI? I think the
relevant ops are "xIsH ? InterleaveHI32x4 : InterleaveLO32x4". */
/* Does the maths for 128 bit versions of UNPCKLPS and UNPCKHPS */
@@ -10542,6 +10771,22 @@
}
+static IRTemp math_PMULUDQ_256 ( IRTemp sV, IRTemp dV )
+{
+ /* This is a really poor translation -- could be improved if
+ performance critical */
+ IRTemp sHi, sLo, dHi, dLo;
+ sHi = sLo = dHi = dLo = IRTemp_INVALID;
+ breakupV256toV128s( dV, &dHi, &dLo);
+ breakupV256toV128s( sV, &sHi, &sLo);
+...
[truncated message content] |
|
From: Rich C. <rc...@wi...> - 2013-03-27 06:13:43
|
valgrind revision: VEX revision: C compiler: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) (dot 1) GDB: GNU gdb 6.3.50-20050815 (Apple version gdb-1346) (Fri Sep 18 20:40:51 UTC 2009) Assembler: C library: unknown uname -mrs: Darwin 10.8.0 i386 Vendor version: unknown Nightly build on macamd64 ( Darwin 10.8.0 i386 ) Started at 2013-03-27 00:35:01 CDT Ended at 2013-03-27 01:13:23 CDT Results differ from 24 hours ago Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2013-03-27T00:35:01} valgrind-new && svn update -r {2013-03-27T00:35:01} valgrind-new/VEX + eval 'svn co svn://svn.valgrind.org/valgrind/trunk -r {2013-03-27T00:35:01} valgrind-new && svn update -r {2013-03-27T00:35:01} valgrind-new/VEX' ++ svn co svn://svn.valgrind.org/valgrind/trunk -r '{2013-03-27T00:35:01}' valgrind-new svn: Can't connect to host 'svn.valgrind.org': Operation timed out ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 558 tests, 96 stderr failures, 17 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/accounting (stderr) memcheck/tests/amd64/insn-pcmpistri (stderr) memcheck/tests/amd64/more_x87_fp (stdout) memcheck/tests/badpoll (stderr) memcheck/tests/big_blocks_freed_list (stderr) memcheck/tests/bug287260 (stderr) memcheck/tests/darwin/aio (stderr) memcheck/tests/darwin/pth-supp (stderr) memcheck/tests/darwin/scalar (stderr) memcheck/tests/darwin/scalar_nocancel (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/leak-segv-jmp (stderr) memcheck/tests/lks (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stdout) memcheck/tests/overlap (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/sem (stderr) memcheck/tests/sendmsg (stderr) memcheck/tests/strchr (stderr) memcheck/tests/test-plo-no (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/vbit-test/vbit-test (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/writev1 (stderr) massif/tests/pages_as_heap (stderr) none/tests/allexec32 (stdout) none/tests/allexec32 (stderr) none/tests/allexec64 (stdout) none/tests/allexec64 (stderr) none/tests/amd64/bug137714-amd64 (stdout) none/tests/amd64/bug137714-amd64 (stderr) none/tests/amd64/bug156404-amd64 (stdout) none/tests/amd64/bug156404-amd64 (stderr) none/tests/amd64/fcmovnu (stdout) none/tests/amd64/fcmovnu (stderr) none/tests/amd64/fxtract (stdout) none/tests/amd64/fxtract (stderr) none/tests/amd64/jrcxz (stdout) none/tests/amd64/jrcxz (stderr) none/tests/amd64/looper (stdout) none/tests/amd64/looper (stderr) none/tests/amd64/loopnel (stdout) none/tests/amd64/loopnel (stderr) none/tests/amd64/shrld (stdout) none/tests/amd64/shrld (stderr) none/tests/amd64/slahf-amd64 (stdout) none/tests/amd64/slahf-amd64 (stderr) none/tests/async-sigs (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/manythreads (stdout) none/tests/manythreads (stderr) none/tests/mmap_fcntl_bug (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_exit (stderr) none/tests/require-text-symbol-2 (stderr) none/tests/rlimit64_nofile (stderr) none/tests/syscall-restart1 (stderr) none/tests/thread-exits (stdout) none/tests/thread-exits (stderr) none/tests/x86/cse_fail (stdout) none/tests/x86/cse_fail (stderr) helgrind/tests/annotate_hbefore (stderr) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/annotate_smart_pointer (stderr) helgrind/tests/cond_init_destroy (stderr) helgrind/tests/cond_timedwait_invalid (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (stderr) helgrind/tests/t2t_laog (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc15_laog_lockdel (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) drd/tests/annotate_barrier_xml (stderr) drd/tests/hg03_inherit (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Mar 27 01:12:08 2013 --- new.short Wed Mar 27 01:13:23 2013 *************** *** 1,123 **** ! Checking out valgrind source tree ... done ! Configuring valgrind ... done ! Building valgrind ... done ! Running regression tests ... failed ! Regression test results follow ! ! == 558 tests, 96 stderr failures, 17 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == ! memcheck/tests/accounting (stderr) ! memcheck/tests/amd64/insn-pcmpistri (stderr) ! memcheck/tests/amd64/more_x87_fp (stdout) ! memcheck/tests/badpoll (stderr) ! memcheck/tests/big_blocks_freed_list (stderr) ! memcheck/tests/bug287260 (stderr) ! memcheck/tests/darwin/aio (stderr) ! memcheck/tests/darwin/pth-supp (stderr) ! memcheck/tests/darwin/scalar (stderr) ! memcheck/tests/darwin/scalar_nocancel (stderr) ! memcheck/tests/err_disable4 (stderr) ! memcheck/tests/leak-segv-jmp (stderr) ! memcheck/tests/lks (stderr) ! memcheck/tests/memcmptest (stderr) ! memcheck/tests/mismatches (stderr) ! memcheck/tests/origin5-bz2 (stderr) ! memcheck/tests/overlap (stdout) ! memcheck/tests/overlap (stderr) ! memcheck/tests/post-syscall (stderr) ! memcheck/tests/sem (stderr) ! memcheck/tests/sendmsg (stderr) ! memcheck/tests/strchr (stderr) ! memcheck/tests/test-plo-no (stderr) ! memcheck/tests/varinfo3 (stderr) ! memcheck/tests/varinfo5 (stderr) ! memcheck/tests/vbit-test/vbit-test (stderr) ! memcheck/tests/vcpu_fnfns (stdout) ! memcheck/tests/writev1 (stderr) ! massif/tests/pages_as_heap (stderr) ! none/tests/allexec32 (stdout) ! none/tests/allexec32 (stderr) ! none/tests/allexec64 (stdout) ! none/tests/allexec64 (stderr) ! none/tests/amd64/bug137714-amd64 (stdout) ! none/tests/amd64/bug137714-amd64 (stderr) ! none/tests/amd64/bug156404-amd64 (stdout) ! none/tests/amd64/bug156404-amd64 (stderr) ! none/tests/amd64/fcmovnu (stdout) ! none/tests/amd64/fcmovnu (stderr) ! none/tests/amd64/fxtract (stdout) ! none/tests/amd64/fxtract (stderr) ! none/tests/amd64/jrcxz (stdout) ! none/tests/amd64/jrcxz (stderr) ! none/tests/amd64/looper (stdout) ! none/tests/amd64/looper (stderr) ! none/tests/amd64/loopnel (stdout) ! none/tests/amd64/loopnel (stderr) ! none/tests/amd64/shrld (stdout) ! none/tests/amd64/shrld (stderr) ! none/tests/amd64/slahf-amd64 (stdout) ! none/tests/amd64/slahf-amd64 (stderr) ! none/tests/async-sigs (stderr) ! none/tests/execve (stderr) ! none/tests/faultstatus (stderr) ! none/tests/fdleak_cmsg (stderr) ! none/tests/manythreads (stdout) ! none/tests/manythreads (stderr) ! none/tests/mmap_fcntl_bug (stderr) ! none/tests/pth_blockedsig (stderr) ! none/tests/pth_exit (stderr) ! none/tests/require-text-symbol-2 (stderr) ! none/tests/rlimit64_nofile (stderr) ! none/tests/syscall-restart1 (stderr) ! none/tests/thread-exits (stdout) ! none/tests/thread-exits (stderr) ! none/tests/x86/cse_fail (stdout) ! none/tests/x86/cse_fail (stderr) ! helgrind/tests/annotate_hbefore (stderr) ! helgrind/tests/annotate_rwlock (stderr) ! helgrind/tests/annotate_smart_pointer (stderr) ! helgrind/tests/cond_init_destroy (stderr) ! helgrind/tests/cond_timedwait_invalid (stderr) ! helgrind/tests/free_is_write (stderr) ! helgrind/tests/hg01_all_ok (stderr) ! helgrind/tests/hg02_deadlock (stderr) ! helgrind/tests/hg03_inherit (stderr) ! helgrind/tests/hg04_race (stderr) ! helgrind/tests/hg05_race2 (stderr) ! helgrind/tests/hg06_readshared (stderr) ! helgrind/tests/locked_vs_unlocked1_fwd (stderr) ! helgrind/tests/locked_vs_unlocked1_rev (stderr) ! helgrind/tests/locked_vs_unlocked2 (stderr) ! helgrind/tests/locked_vs_unlocked3 (stderr) ! helgrind/tests/pth_cond_destroy_busy (stderr) ! helgrind/tests/pth_destroy_cond (stderr) ! helgrind/tests/rwlock_race (stderr) ! helgrind/tests/rwlock_test (stderr) ! helgrind/tests/t2t_laog (stderr) ! helgrind/tests/tc01_simple_race (stderr) ! helgrind/tests/tc02_simple_tls (stderr) ! helgrind/tests/tc03_re_excl (stderr) ! helgrind/tests/tc04_free_lock (stderr) ! helgrind/tests/tc05_simple_race (stderr) ! helgrind/tests/tc06_two_races (stderr) ! helgrind/tests/tc06_two_races_xml (stderr) ! helgrind/tests/tc07_hbl1 (stderr) ! helgrind/tests/tc08_hbl2 (stderr) ! helgrind/tests/tc09_bad_unlock (stderr) ! helgrind/tests/tc10_rec_lock (stderr) ! helgrind/tests/tc11_XCHG (stderr) ! helgrind/tests/tc12_rwl_trivial (stderr) ! helgrind/tests/tc13_laog1 (stderr) ! helgrind/tests/tc14_laog_dinphils (stderr) ! helgrind/tests/tc15_laog_lockdel (stderr) ! helgrind/tests/tc16_byterace (stderr) ! helgrind/tests/tc17_sembar (stderr) ! helgrind/tests/tc18_semabuse (stderr) ! helgrind/tests/tc19_shadowmem (stderr) ! helgrind/tests/tc21_pthonce (stderr) ! helgrind/tests/tc23_bogus_condwait (stderr) ! helgrind/tests/tc24_nonzero_sem (stderr) ! drd/tests/annotate_barrier_xml (stderr) ! drd/tests/hg03_inherit (stderr) --- 1,9 ---- ! Checking out valgrind source tree ... failed ! Last 20 lines of verbose log follow echo + Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2013-03-27T00:35:01} valgrind-new && svn update -r {2013-03-27T00:35:01} valgrind-new/VEX + + eval 'svn co svn://svn.valgrind.org/valgrind/trunk -r {2013-03-27T00:35:01} valgrind-new && svn update -r {2013-03-27T00:35:01} valgrind-new/VEX' + ++ svn co svn://svn.valgrind.org/valgrind/trunk -r '{2013-03-27T00:35:01}' valgrind-new + svn: Can't connect to host 'svn.valgrind.org': Operation timed out ================================================= ./valgrind-old/drd/tests/annotate_barrier_xml.stderr.diff ================================================= --- annotate_barrier_xml.stderr.exp 2013-03-27 00:35:39.000000000 -0500 +++ annotate_barrier_xml.stderr.out 2013-03-27 01:09:21.000000000 -0500 @@ -188,7 +188,7 @@ <frame> <ip>0x........</ip> <obj>...</obj> - <fn>start_thread</fn> + <fn>_pthread_start</fn> </frame> </stack> <auxwhat>Address 0x........ is at offset 0 from 0x.........</auxwhat> ================================================= ./valgrind-old/drd/tests/hg03_inherit.stderr.diff ================================================= --- hg03_inherit.stderr.exp 2013-03-27 00:35:39.000000000 -0500 +++ hg03_inherit.stderr.out 2013-03-27 01:10:16.000000000 -0500 @@ -12,5 +12,10 @@ Location 0x........ is 0 bytes inside shared[1], a global variable declared at hg03_inherit.c:11 +Conflicting load by thread 3 at 0x........ size 4 + at 0x........: ??? + by 0x........: _pthread_free_pthread_onstack (in /...libc...) +Allocation context: Data section of /usr/lib/libSystem.B.dylib -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) + +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) ================================================= ./valgrind-old/helgrind/tests/annotate_hbefore.stderr.diff ================================================= --- annotate_hbefore.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ annotate_hbefore.stderr.out 2013-03-27 01:07:48.000000000 -0500 @@ -0,0 +1,704 @@ +---Thread-Announcement------------------------------------------ + +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + +Thread #x was created + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_hbefore.c:333) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_hbefore.c:333) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_hbefore.c:333) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_hbefore.c:333) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_hbefore.c:333) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_hbefore.c:334) + +This conflicts with a previous read of size 4 by thread #x +Locks held: none + ... + <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/annotate_rwlock.stderr.diff ================================================= --- annotate_rwlock.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ annotate_rwlock.stderr.out 2013-03-27 01:07:50.000000000 -0500 @@ -1,17 +1,132 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) by 0x........: main (annotate_rwlock.c:164) +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_rwlock.c:164) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_rwlock.c:164) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_rwlock.c:164) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_rwlock.c:164) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (annotate_rwlock.c:164) + +This conflicts with a previous read of size 4 by thread #x +Locks held: none + ... <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/annotate_smart_pointer.stderr.diff ================================================= --- annotate_smart_pointer.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ annotate_smart_pointer.stderr.out 2013-03-27 01:07:53.000000000 -0500 @@ -1,4 +1,958 @@ +---Thread-Announcement------------------------------------------ + +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + +Thread #x was created + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145) + by 0x........: main (annotate_smart_pointer.cpp:319) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145) + by 0x........: main (annotate_smart_pointer.cpp:319) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145) + by 0x........: main (annotate_smart_pointer.cpp:319) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145) + by 0x........: main (annotate_smart_pointer.cpp:319) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145) + by 0x........: main (annotate_smart_pointer.cpp:319) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/cond_init_destroy.stderr.diff ================================================= --- cond_init_destroy.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ cond_init_destroy.stderr.out 2013-03-27 01:07:54.000000000 -0500 @@ -1,3 +1,27 @@ +---Thread-Announcement------------------------------------------ -ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + + +ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) ================================================= ./valgrind-old/helgrind/tests/cond_timedwait_invalid.stderr.diff ================================================= --- cond_timedwait_invalid.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ cond_timedwait_invalid.stderr.out 2013-03-27 01:07:55.000000000 -0500 @@ -5,11 +5,31 @@ ---------------------------------------------------------------- +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + Thread #x's call to pthread_cond_timedwait failed with error code 22 (EINVAL: Invalid argument) at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) - by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) + by 0x........: pthread_cond_timedwait (hg_intercepts.c:...) by 0x........: main (cond_timedwait_invalid.c:22) -ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0) ================================================= ./valgrind-old/helgrind/tests/free_is_write.stderr.diff ================================================= --- free_is_write.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ free_is_write.stderr.out 2013-03-27 01:07:56.000000000 -0500 @@ -1,16 +1,192 @@ +---Thread-Announcement------------------------------------------ + +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + Start. ---Thread-Announcement------------------------------------------ Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) by 0x........: main (free_is_write.c:32) ----Thread-Announcement------------------------------------------ +---------------------------------------------------------------- -Thread #x is the program's root thread +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (free_is_write.c:32) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (free_is_write.c:32) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (free_is_write.c:32) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (free_is_write.c:32) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_join_WRK (hg_intercepts.c:...) + by 0x........: pthread_join* (hg_intercepts.c:...) + by 0x........: main (free_is_write.c:39) <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/hg01_all_ok.stderr.diff ================================================= --- hg01_all_ok.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ hg01_all_ok.stderr.out 2013-03-27 01:07:57.000000000 -0500 @@ -1,3 +1,990 @@ +---Thread-Announcement------------------------------------------ -ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + +Thread #x was created + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg01_all_ok.c:25) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg01_all_ok.c:25) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg01_all_ok.c:25) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg01_all_ok.c:25) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg01_all_ok.c:25) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg01_all_ok.c:26) + +This conflicts with a previous read of size 4 by thread #x +Locks held: none <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/hg02_deadlock.stderr.diff ================================================= --- hg02_deadlock.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ hg02_deadlock.stderr.out 2013-03-27 01:07:58.000000000 -0500 @@ -1,14 +1,275 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + +Thread #x was created + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg02_deadlock.c:35) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg02_deadlock.c:35) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg02_deadlock.c:35) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg02_deadlock.c:35) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg02_deadlock.c:35) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg02_deadlock.c:36) + +This conflicts with a previous read of size 4 by thread #x +Locks held: none + ... <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/hg03_inherit.stderr.diff ================================================= --- hg03_inherit.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ hg03_inherit.stderr.out 2013-03-27 01:08:01.000000000 -0500 @@ -1,15 +1,508 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg03_inherit.c:44) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg03_inherit.c:44) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg03_inherit.c:44) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg03_inherit.c:44) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg03_inherit.c:44) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg03_inherit.c:46) + +This conflicts with a previous read of size 4 by thread #x +Locks held: none <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/hg04_race.stderr.diff ================================================= --- hg04_race.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ hg04_race.stderr.out 2013-03-27 01:08:03.000000000 -0500 @@ -1,19 +1,238 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg04_race.c:19) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg04_race.c:19) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg04_race.c:19) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg04_race.c:19) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg04_race.c:19) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/hg05_race2.stderr.diff ================================================= --- hg05_race2.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ hg05_race2.stderr.out 2013-03-27 01:08:05.000000000 -0500 @@ -1,19 +1,238 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg05_race2.c:27) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg05_race2.c:27) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg05_race2.c:27) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg05_race2.c:27) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg05_race2.c:27) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/hg06_readshared.stderr.diff ================================================= --- hg06_readshared.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ hg06_readshared.stderr.out 2013-03-27 01:08:06.000000000 -0500 @@ -1,3 +1,755 @@ +---Thread-Announcement------------------------------------------ -ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + +Thread #x was created + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg06_readshared.c:24) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg06_readshared.c:24) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg06_readshared.c:24) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg06_readshared.c:24) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg06_readshared.c:24) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (hg06_readshared.c:25) + +This conflicts with a previous read of size 4 by thread #x +Locks held: none <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff ================================================= --- locked_vs_unlocked1_fwd.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ locked_vs_unlocked1_fwd.stderr.out 2013-03-27 01:08:07.000000000 -0500 @@ -1,18 +1,241 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) <truncated beyond 100 lines> ================================================= ./valgrind-old/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff ================================================= --- locked_vs_unlocked1_rev.stderr.exp 2013-03-27 00:35:17.000000000 -0500 +++ locked_vs_unlocked1_rev.stderr.out 2013-03-27 01:08:09.000000000 -0500 @@ -1,18 +1,237 @@ ---Thread-Announcement------------------------------------------ +Thread #x is the program's root thread + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_lock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_lock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x unlocked an invalid lock at 0x........ + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---------------------------------------------------------------- + +Thread #x's call to pthread_mutex_unlock failed + with error code 22 (EINVAL: Invalid argument) + at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) + ... + +---Thread-Announcement------------------------------------------ + Thread #x was created ... by 0x........: pthread_create_WRK (hg_intercepts.c:...) - by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during read of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during write of size 1 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 1 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during write of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) + +---------------------------------------------------------------- + +Possible data race during read of size 4 at 0x........ by thread #x +Locks held: none + ... + +This conflicts with a previous write of size 4 by thread #x +Locks held: none + ... + by 0x........: pthread_create_WRK (hg_intercepts.c:...) + by 0x........: pthread_create (hg_intercepts.c:...) + by 0x........: main (locked_vs_unlocked1.c:29) <truncated... [truncated message content] |
|
From: Rich C. <rc...@wi...> - 2013-03-27 05:17:43
|
valgrind revision: 13337
VEX revision: 2701
C compiler: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
GDB: GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:30:16 UTC 2011)
Assembler:
C library: unknown
uname -mrs: Darwin 10.8.0 i386
Vendor version: unknown
Nightly build on macx86 ( Darwin 10.8.0 i386 )
Started at 2013-03-26 23:35:00 CDT
Ended at 2013-03-27 00:17:25 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 511 tests, 151 stderr failures, 4 stdout failures, 3 stderrB failures, 3 stdoutB failures, 1 post failure ==
gdbserver_tests/mchelp (stdoutB)
gdbserver_tests/mchelp (stderrB)
gdbserver_tests/mcinvokeRU (stdoutB)
gdbserver_tests/mcinvokeRU (stderrB)
gdbserver_tests/mcinvokeWS (stdoutB)
gdbserver_tests/mcinvokeWS (stderrB)
memcheck/tests/accounting (stderr)
memcheck/tests/badpoll (stderr)
memcheck/tests/big_blocks_freed_list (stderr)
memcheck/tests/bug287260 (stderr)
memcheck/tests/darwin/aio (stderr)
memcheck/tests/darwin/pth-supp (stderr)
memcheck/tests/darwin/scalar (stderr)
memcheck/tests/deep-backtrace (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/leak-delta (stderr)
memcheck/tests/leak-segv-jmp (stderr)
memcheck/tests/lks (stderr)
memcheck/tests/memcmptest (stderr)
memcheck/tests/mismatches (stderr)
memcheck/tests/null_socket (stdout)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stdout)
memcheck/tests/overlap (stderr)
memcheck/tests/sem (stderr)
memcheck/tests/sendmsg (stderr)
memcheck/tests/strchr (stderr)
memcheck/tests/test-plo-no (stderr)
memcheck/tests/varinfo3 (stderr)
memcheck/tests/varinfo5 (stderr)
memcheck/tests/vbit-test/vbit-test (stderr)
memcheck/tests/vcpu_fnfns (stdout)
memcheck/tests/writev1 (stderr)
massif/tests/big-alloc (post)
massif/tests/pages_as_heap (stderr)
none/tests/allexec32 (stderr)
none/tests/allexec64 (stderr)
none/tests/async-sigs (stderr)
none/tests/cmdline5 (stderr)
none/tests/execve (stderr)
none/tests/faultstatus (stderr)
none/tests/mmap_fcntl_bug (stderr)
none/tests/nodir (stderr)
none/tests/pth_blockedsig (stderr)
none/tests/require-text-symbol-2 (stderr)
none/tests/rlimit64_nofile (stderr)
none/tests/shell_nosuchfile (stderr)
none/tests/x86/cse_fail (stdout)
helgrind/tests/annotate_hbefore (stderr)
helgrind/tests/annotate_rwlock (stderr)
helgrind/tests/annotate_smart_pointer (stderr)
helgrind/tests/cond_init_destroy (stderr)
helgrind/tests/cond_timedwait_invalid (stderr)
helgrind/tests/free_is_write (stderr)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/hg06_readshared (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_cond_destroy_busy (stderr)
helgrind/tests/pth_destroy_cond (stderr)
helgrind/tests/rwlock_race (stderr)
helgrind/tests/rwlock_test (stderr)
helgrind/tests/t2t_laog (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc04_free_lock (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc10_rec_lock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc13_laog1 (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc15_laog_lockdel (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
drd/tests/annotate_barrier (stderr)
drd/tests/annotate_barrier_xml (stderr)
drd/tests/annotate_hb_race (stderr)
drd/tests/annotate_hbefore (stderr)
drd/tests/annotate_ignore_read (stderr)
drd/tests/annotate_ignore_rw (stderr)
drd/tests/annotate_ignore_rw2 (stderr)
drd/tests/annotate_ignore_write (stderr)
drd/tests/annotate_ignore_write2 (stderr)
drd/tests/annotate_order_1 (stderr)
drd/tests/annotate_order_2 (stderr)
drd/tests/annotate_order_3 (stderr)
drd/tests/annotate_rwlock (stderr)
drd/tests/annotate_smart_pointer (stderr)
drd/tests/annotate_smart_pointer2 (stderr)
drd/tests/annotate_spinlock (stderr)
drd/tests/annotate_static (stderr)
drd/tests/atomic_var (stderr)
drd/tests/bug-235681 (stderr)
drd/tests/circular_buffer (stderr)
drd/tests/fp_race (stderr)
drd/tests/fp_race2 (stderr)
drd/tests/fp_race_xml (stderr)
drd/tests/free_is_write (stderr)
drd/tests/free_is_write2 (stderr)
drd/tests/hg01_all_ok (stderr)
drd/tests/hg02_deadlock (stderr)
drd/tests/hg03_inherit (stderr)
drd/tests/hg04_race (stderr)
drd/tests/hg05_race2 (stderr)
drd/tests/hg06_readshared (stderr)
drd/tests/linuxthreads_det (stderr)
drd/tests/monitor_example (stderr)
drd/tests/pth_broadcast (stderr)
drd/tests/pth_cleanup_handler (stderr)
drd/tests/pth_cond_destroy_busy (stderr)
drd/tests/pth_cond_race (stderr)
drd/tests/pth_cond_race2 (stderr)
drd/tests/pth_cond_race3 (stderr)
drd/tests/pth_create_chain (stderr)
drd/tests/pth_detached3 (stderr)
drd/tests/pth_inconsistent_cond_wait (stderr)
drd/tests/pth_once (stderr)
drd/tests/read_and_free_race (stderr)
drd/tests/rwlock_race (stderr)
drd/tests/rwlock_test (stderr)
drd/tests/sem_open (stderr)
drd/tests/sem_open2 (stderr)
drd/tests/sem_open3 (stderr)
drd/tests/sem_open_traced (stderr)
drd/tests/sigalrm (stderr)
drd/tests/tc01_simple_race (stderr)
drd/tests/tc02_simple_tls (stderr)
drd/tests/tc03_re_excl (stderr)
drd/tests/tc05_simple_race (stderr)
drd/tests/tc06_two_races (stderr)
drd/tests/tc07_hbl1 (stderr)
drd/tests/tc08_hbl2 (stderr)
drd/tests/tc09_bad_unlock (stderr)
drd/tests/tc11_XCHG (stderr)
drd/tests/tc16_byterace (stderr)
drd/tests/tc17_sembar (stderr)
drd/tests/tc19_shadowmem (stderr)
drd/tests/tc21_pthonce (stderr)
drd/tests/tc23_bogus_condwait (stderr)
drd/tests/thread_name (stderr)
drd/tests/thread_name_xml (stderr)
drd/tests/threaded-fork (stderr)
drd/tests/unit_bitmap (stderr)
drd/tests/unit_vc (stderr)
=================================================
./valgrind-new/drd/tests/annotate_barrier.stderr.diff
=================================================
--- annotate_barrier.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_barrier.stderr.out 2013-03-27 00:14:32.000000000 -0500
@@ -37,6 +37,117 @@
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
Thread 1:
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_barrier_xml.stderr.diff
=================================================
--- annotate_barrier_xml.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_barrier_xml.stderr.out 2013-03-27 00:14:33.000000000 -0500
@@ -188,7 +188,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
</stack>
<auxwhat>Address 0x........ is at offset 0 from 0x.........</auxwhat>
@@ -258,6 +258,549 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>new_sem_from_pool</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>new_sem_from_pool</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$UNIX2003</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_join$*</fn>
+ <dir>...</dir>
+ <file>drd_pthread_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Allocation context: Data section of /usr/lib/libSystem.B.dylib</auxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>ConflictingAccess</kind>
+ <what>Conflicting load by thread 1 at 0x........ size 4</what>
+ <stack>
<truncated beyond 100 lines>
=================================================
./valgrind-new/drd/tests/annotate_hb_race.stderr.diff
=================================================
--- annotate_hb_race.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_hb_race.stderr.out 2013-03-27 00:14:34.000000000 -0500
@@ -3,6 +3,60 @@
at 0x........: main (annotate_hb_race.c:?)
Allocation context: BSS section of annotate_hb_race
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hb_race.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_hbefore.stderr.diff
=================================================
--- annotate_hbefore.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_hbefore.stderr.out 2013-03-27 00:14:36.000000000 -0500
@@ -1,3 +1,44 @@
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_hbefore.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_read.stderr.diff
=================================================
--- annotate_ignore_read.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_ignore_read.stderr.out 2013-03-27 00:14:38.000000000 -0500
@@ -1,6 +1,88 @@
FLAGS [phb=1, fm=0]
test69: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 12 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test69::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=30
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_rw.stderr.diff
=================================================
--- annotate_ignore_rw.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_ignore_rw.stderr.out 2013-03-27 00:14:40.000000000 -0500
@@ -4,6 +4,60 @@
Location 0x........ is 0 bytes inside global var "s_c"
declared at annotate_ignore_rw.c:12
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_rw2.stderr.diff
=================================================
--- annotate_ignore_rw2.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_ignore_rw2.stderr.out 2013-03-27 00:14:42.000000000 -0500
@@ -14,6 +14,60 @@
Location 0x........ is 0 bytes inside global var "s_c"
declared at annotate_ignore_rw.c:12
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_rw.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_write.stderr.diff
=================================================
--- annotate_ignore_write.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_ignore_write.stderr.out 2013-03-27 00:14:43.000000000 -0500
@@ -14,6 +14,60 @@
Location 0x........ is 0 bytes inside global var "s_a"
declared at annotate_ignore_write.c:10
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_ignore_write2.stderr.diff
=================================================
--- annotate_ignore_write2.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_ignore_write2.stderr.out 2013-03-27 00:14:44.000000000 -0500
@@ -19,6 +19,60 @@
Location 0x........ is 0 bytes inside global var "s_a"
declared at annotate_ignore_write.c:10
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread 1 at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Address 0x........ is at offset 0 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread 1 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_ignore_write.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_1.stderr.diff
=================================================
--- annotate_order_1.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_order_1.stderr.out 2013-03-27 00:14:45.000000000 -0500
@@ -1,6 +1,18 @@
FLAGS [phb=1, fm=0]
test03: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: ThreadPool::~ThreadPool() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: test03::Waiter() (tsan_unittest.cpp:?)
+ by 0x........: test03::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=2
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_2.stderr.diff
=================================================
--- annotate_order_2.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_order_2.stderr.out 2013-03-27 00:14:47.000000000 -0500
@@ -1,6 +1,88 @@
FLAGS [phb=1, fm=0]
test30: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 12 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test30::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=47
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_order_3.stderr.diff
=================================================
--- annotate_order_3.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_order_3.stderr.out 2013-03-27 00:14:48.000000000 -0500
@@ -1,6 +1,71 @@
FLAGS [phb=1, fm=0]
test31: negative
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Address 0x........ is at offset 4 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: MyThread::Join() (tsan_thread_wrappers_pthread.h:?)
+ by 0x........: MyThreadArray::Join() (tsan_unittest.cpp:?)
+ by 0x........: test31::Run() (tsan_unittest.cpp:?)
+ by 0x........: Test::Run() (tsan_unittest.cpp:?)
+ by 0x........: main (tsan_unittest.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
GLOB=48
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_rwlock.stderr.diff
=================================================
--- annotate_rwlock.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_rwlock.stderr.out 2013-03-27 00:14:53.000000000 -0500
@@ -1,4 +1,58 @@
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Address 0x........ is at offset 36 from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: main (annotate_rwlock.c:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Finished.
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer.stderr.diff
=================================================
--- annotate_smart_pointer.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_smart_pointer.stderr.out 2013-03-27 00:15:01.000000000 -0500
@@ -1,4 +1,64 @@
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Address 0x........ is at offset 196 from 0x......... Allocation context:
+ at 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer2.stderr.diff
=================================================
--- annotate_smart_pointer2.stderr.exp 2013-03-26 23:56:40.000000000 -0500
+++ annotate_smart_pointer2.stderr.out 2013-03-27 00:15:02.000000000 -0500
@@ -5,9 +5,71 @@
by 0x........: smart_ptr<counter>::operator=(counter*) (annotate_smart_pointer.cpp:?)
by 0x........: main (annotate_smart_pointer.cpp:?)
Address 0x........ is at offset ... from 0x......... Allocation context:
- at 0x........: ...operator new... (vg_replace_malloc.c:...)
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: operator new(unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
by 0x........: main (annotate_smart_pointer.cpp:?)
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting store by thread x at 0x........ size 4
+ at 0x........: restore_sem_to_pool (in /...libc...)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Address 0x........ is at offset ... from 0x......... Allocation context:
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: _pthread_exit (in /...libc...)
+ by 0x........: thread_start (in /...libc...)
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer2.stderr.diff-darwin
=================================================
--- annotate_smart_pointer2.stderr.exp-darwin 2013-03-26 23:56:40.000000000 -0500
+++ annotate_smart_pointer2.stderr.out 2013-03-27 00:15:02.000000000 -0500
@@ -9,6 +9,67 @@
by 0x........: operator new(unsigned long) (in /usr/lib/libstdc++.6.0.9.dylib)
by 0x........: main (annotate_smart_pointer.cpp:?)
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_pointer.cpp:?)
+ by 0x........: main (annotate_smart_pointer.cpp:?)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
+
+Conflicting load by thread x at 0x........ size 4
+ at 0x........: ???
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join (drd_pthread_intercepts.c:?)
+ by 0x........: Thread::Join() (annotate_smart_p...
[truncated message content] |
|
From: Tom H. <to...@co...> - 2013-03-27 04:07:44
|
valgrind revision: 13337 VEX revision: 2701 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) GDB: Assembler: GNU assembler version 2.19.51.0.14-3.fc11 20090722 C library: GNU C Library stable release version 2.10.2 uname -mrs: Linux 3.7.1-5.fc18.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2013-03-27 03:41:32 GMT Ended at 2013-03-27 04:07:22 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 630 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) |