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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
(6) |
|
2
(4) |
3
(9) |
4
(11) |
5
(16) |
6
(6) |
7
(1) |
8
(11) |
|
9
(11) |
10
(6) |
11
(10) |
12
(23) |
13
(23) |
14
(6) |
15
(10) |
|
16
(5) |
17
(13) |
18
(9) |
19
(4) |
20
(6) |
21
(16) |
22
(3) |
|
23
(5) |
24
(7) |
25
(6) |
26
(4) |
27
(8) |
28
|
29
(3) |
|
30
(2) |
31
(17) |
|
|
|
|
|
|
From: <sv...@va...> - 2015-08-17 08:21:02
|
Author: sewardj
Date: Mon Aug 17 09:20:55 2015
New Revision: 3176
Log:
Implement VCVT.{S,U}32.F32, S[n], S[n], #imm. Fixes 342783.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Mon Aug 17 09:20:55 2015
@@ -14338,6 +14338,11 @@
UInt size = bSX == 0 ? 16 : 32;
Int frac_bits = size - ((imm4 << 1) | bI);
UInt d = dp_op ? ((bD << 4) | Vd) : ((Vd << 1) | bD);
+
+ IRExpr* rm = mkU32(Irrm_NEAREST);
+ IRTemp scale = newTemp(Ity_F64);
+ assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
+
if (frac_bits >= 1 && frac_bits <= 32 && !to_fixed && !dp_op
&& size == 32) {
/* VCVT.F32.{S,U}32 S[d], S[d], #frac_bits */
@@ -14349,9 +14354,6 @@
assign(src32, unop(Iop_ReinterpF32asI32, getFReg(d)));
IRExpr* as_F64 = unop( unsyned ? Iop_I32UtoF64 : Iop_I32StoF64,
mkexpr(src32 ) );
- IRTemp scale = newTemp(Ity_F64);
- assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
- IRExpr* rm = mkU32(Irrm_NEAREST);
IRExpr* resF64 = triop(Iop_DivF64,
rm, as_F64,
triop(Iop_AddF64, rm, mkexpr(scale),
@@ -14371,9 +14373,6 @@
assign(src32, unop(Iop_64to32, getDRegI64(d)));
IRExpr* as_F64 = unop( unsyned ? Iop_I32UtoF64 : Iop_I32StoF64,
mkexpr(src32 ) );
- IRTemp scale = newTemp(Ity_F64);
- assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
- IRExpr* rm = mkU32(Irrm_NEAREST);
IRExpr* resF64 = triop(Iop_DivF64,
rm, as_F64,
triop(Iop_AddF64, rm, mkexpr(scale),
@@ -14388,10 +14387,7 @@
/* VCVT.{S,U}32.F64 D[d], D[d], #frac_bits */
IRTemp srcF64 = newTemp(Ity_F64);
assign(srcF64, getDReg(d));
- IRTemp scale = newTemp(Ity_F64);
- assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
IRTemp scaledF64 = newTemp(Ity_F64);
- IRExpr* rm = mkU32(Irrm_NEAREST);
assign(scaledF64, triop(Iop_MulF64,
rm, mkexpr(srcF64),
triop(Iop_AddF64, rm, mkexpr(scale),
@@ -14403,6 +14399,29 @@
mkexpr(rmode), mkexpr(scaledF64)));
putDRegI64(d, unop(unsyned ? Iop_32Uto64 : Iop_32Sto64,
mkexpr(asI32)), condT);
+
+ DIP("vcvt.%c32.f64, d%u, d%u, #%d\n",
+ unsyned ? 'u' : 's', d, d, frac_bits);
+ goto decode_success_vfp;
+ }
+ if (frac_bits >= 1 && frac_bits <= 32 && to_fixed && !dp_op
+ && size == 32) {
+ /* VCVT.{S,U}32.F32 S[d], S[d], #frac_bits */
+ IRTemp srcF32 = newTemp(Ity_F32);
+ assign(srcF32, getFReg(d));
+ IRTemp scaledF64 = newTemp(Ity_F64);
+ assign(scaledF64, triop(Iop_MulF64,
+ rm, unop(Iop_F32toF64, mkexpr(srcF32)),
+ triop(Iop_AddF64, rm, mkexpr(scale),
+ mkexpr(scale))));
+ IRTemp rmode = newTemp(Ity_I32);
+ assign(rmode, mkU32(Irrm_ZERO)); // as per the spec
+ IRTemp asI32 = newTemp(Ity_I32);
+ assign(asI32, binop(unsyned ? Iop_F64toI32U : Iop_F64toI32S,
+ mkexpr(rmode), mkexpr(scaledF64)));
+ putFReg(d, unop(Iop_ReinterpI32asF32, mkexpr(asI32)), condT);
+ DIP("vcvt.%c32.f32, d%u, d%u, #%d\n",
+ unsyned ? 'u' : 's', d, d, frac_bits);
goto decode_success_vfp;
}
/* fall through */
|
|
From: Ivo R. <ivo...@gm...> - 2015-08-17 08:12:09
|
Please could you review proposed patch for bug: 351386 Cannot run ld.so.1 under Valgrind (https://bugs.kde.org/show_bug.cgi?id=351386) and my findings posted there? Although the changes are Solaris specific, they touch area shared with Linux so I'd rather double check. Thanks, I. |
|
From: <sv...@va...> - 2015-08-17 07:29:17
|
Author: sewardj
Date: Mon Aug 17 08:29:07 2015
New Revision: 3175
Log:
Loosen guarding conditions on "mov.w Reg, Reg" so as to allow
reading or writing of SP. Fixes #335618.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Mon Aug 17 08:29:07 2015
@@ -19848,11 +19848,14 @@
/* ------------ (T?) MVN{S}.W Rd, Rn, {shift} ------------ */
if ((INSN0(15,0) & 0xFFCF) == 0xEA4F
&& INSN1(15,15) == 0) {
- UInt rD = INSN1(11,8);
- UInt rN = INSN1(3,0);
- if (!isBadRegT(rD) && !isBadRegT(rN)) {
- UInt bS = INSN0(4,4);
- UInt isMVN = INSN0(5,5);
+ UInt rD = INSN1(11,8);
+ UInt rN = INSN1(3,0);
+ UInt bS = INSN0(4,4);
+ UInt isMVN = INSN0(5,5);
+ Bool regsOK = (bS || isMVN)
+ ? (!isBadRegT(rD) && !isBadRegT(rN))
+ : (rD != 15 && rN != 15 && (rD != 13 || rN != 13));
+ if (regsOK) {
UInt imm5 = (INSN1(14,12) << 2) | INSN1(7,6);
UInt how = INSN1(5,4);
|
|
From: <sv...@va...> - 2015-08-16 17:23:57
|
Author: sewardj
Date: Sun Aug 16 18:23:50 2015
New Revision: 15558
Log:
arm32: make sure we actually generate real 64-bit loads/stores for the
64 bit tests, rather than two 32 bit transactions.
Modified:
trunk/memcheck/tests/sh-mem-random.c
Modified: trunk/memcheck/tests/sh-mem-random.c
==============================================================================
--- trunk/memcheck/tests/sh-mem-random.c (original)
+++ trunk/memcheck/tests/sh-mem-random.c Sun Aug 16 18:23:50 2015
@@ -102,7 +102,10 @@
return 0xFF & (randomU4() >> 13);
}
-#define N_BYTES 300000
+// NB! 300000 is really not enough to shake out all failures.
+// Increasing it by a factor of 256 is, but makes the test take
+// the best part of an hour.
+#define N_BYTES (300000 /* * 256 */)
#define N_EVENTS (5 * N_BYTES)
@@ -188,6 +191,16 @@
"emms"
: : "r"(arr+dst), "r"(arr+src) : "memory"
);
+#elif defined(__linux__) && defined(__arm__) && !defined(__aarch64__)
+ /* On arm32, many compilers generate a 64-bit float move
+ using two 32 bit integer registers, which completely
+ defeats this test. Hence force a 64-bit NEON load and
+ store. I guess this will break the build on non-NEON
+ capable targets. */
+ __asm__ __volatile__ (
+ "vld1.64 {d7},[%0] ; vst1.64 {d7},[%1] "
+ : : "r"(arr+src), "r"(arr+dst) : "d7","memory"
+ );
#else
/* Straightforward. On amd64, this gives a load/store of
the bottom half of an xmm register. On ppc32/64 this
|
|
From: <sv...@va...> - 2015-08-16 12:18:33
|
Author: sewardj
Date: Sun Aug 16 13:18:26 2015
New Revision: 15557
Log:
Enable building of ARMv8 crypto instruction tests, having finally
figured out what the relevant gcc flag is.
Modified:
trunk/none/tests/arm64/Makefile.am
trunk/none/tests/arm64/fp_and_simd.c
Modified: trunk/none/tests/arm64/Makefile.am
==============================================================================
--- trunk/none/tests/arm64/Makefile.am (original)
+++ trunk/none/tests/arm64/Makefile.am Sun Aug 16 13:18:26 2015
@@ -22,6 +22,7 @@
allexec_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@
+fp_and_simd_CFLAGS = $(AM_CFLAGS) -march=armv8-a+crypto
integer_CFLAGS = $(AM_CFLAGS) -g -O0 -DTEST_BFM=0
fp_and_simd_LDADD = -lm
Modified: trunk/none/tests/arm64/fp_and_simd.c
==============================================================================
--- trunk/none/tests/arm64/fp_and_simd.c (original)
+++ trunk/none/tests/arm64/fp_and_simd.c Sun Aug 16 13:18:26 2015
@@ -4527,23 +4527,23 @@
// GNU assembler (GNU Binutils) 2.24.0.20140311 Linaro 2014.03
// cannot be persuaded to accept those instructions (AFAICT).
-//GEN_TWOVEC_TEST(aesd_16b_16b, "aesd v6.16b, v27.16b", 6, 27)
-//GEN_TWOVEC_TEST(aese_16b_16b, "aese v6.16b, v27.16b", 6, 27)
-//GEN_TWOVEC_TEST(aesimc_16b_16b, "aesimc v6.16b, v27.16b", 6, 27)
-//GEN_TWOVEC_TEST(aesmc_16b_16b, "aesmc v6.16b, v27.16b", 6, 27)
-//
-//GEN_THREEVEC_TEST(sha1c_q_s_4s, "sha1c q29, s28, v27.4s", 29,28,27)
-//GEN_TWOVEC_TEST(sha1h_s_s, "sha1h s6, s27", 6, 27)
-//GEN_THREEVEC_TEST(sha1m_q_s_4s, "sha1m q29, s28, v27.4s", 29,28,27)
-//GEN_THREEVEC_TEST(sha1p_q_s_4s, "sha1p q29, s28, v27.4s", 29,28,27)
-//GEN_THREEVEC_TEST(sha1su0_4s_4s_4s, "sha1su0 v29.4s, v28.4s, v27.4s", 29,28,27)
-//GEN_TWOVEC_TEST(sha1su1_4s_4s, "sha1su1 v6.4s, v27.4s", 6, 27)
-//
-//GEN_THREEVEC_TEST(sha256h2_q_q_4s, "sha256h2 q29, q28, v27.4s", 29,28,27)
-//GEN_THREEVEC_TEST(sha256h_q_q_4s, "sha256h q29, q28, v27.4s", 29,28,27)
-//GEN_TWOVEC_TEST(sha256su0_4s_4s, "sha256su0 v6.4s, v27.4s", 6, 27)
-//GEN_THREEVEC_TEST(sha256su1_4s_4s_4s, "sha256su1 v29.4s, v28.4s, v27.4s",
-// 29,28,27)
+GEN_TWOVEC_TEST(aesd_16b_16b, "aesd v6.16b, v27.16b", 6, 27)
+GEN_TWOVEC_TEST(aese_16b_16b, "aese v6.16b, v27.16b", 6, 27)
+GEN_TWOVEC_TEST(aesimc_16b_16b, "aesimc v6.16b, v27.16b", 6, 27)
+GEN_TWOVEC_TEST(aesmc_16b_16b, "aesmc v6.16b, v27.16b", 6, 27)
+
+GEN_THREEVEC_TEST(sha1c_q_s_4s, "sha1c q29, s28, v27.4s", 29,28,27)
+GEN_TWOVEC_TEST(sha1h_s_s, "sha1h s6, s27", 6, 27)
+GEN_THREEVEC_TEST(sha1m_q_s_4s, "sha1m q29, s28, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(sha1p_q_s_4s, "sha1p q29, s28, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(sha1su0_4s_4s_4s, "sha1su0 v29.4s, v28.4s, v27.4s", 29,28,27)
+GEN_TWOVEC_TEST(sha1su1_4s_4s, "sha1su1 v6.4s, v27.4s", 6, 27)
+
+GEN_THREEVEC_TEST(sha256h2_q_q_4s, "sha256h2 q29, q28, v27.4s", 29,28,27)
+GEN_THREEVEC_TEST(sha256h_q_q_4s, "sha256h q29, q28, v27.4s", 29,28,27)
+GEN_TWOVEC_TEST(sha256su0_4s_4s, "sha256su0 v6.4s, v27.4s", 6, 27)
+GEN_THREEVEC_TEST(sha256su1_4s_4s_4s, "sha256su1 v29.4s, v28.4s, v27.4s",
+ 29,28,27)
/* ---------------------------------------------------------------- */
@@ -7385,18 +7385,14 @@
// ======================== CRYPTO ========================
- // These tests are believed to be correct but are disabled because
- // GNU assembler (GNU Binutils) 2.24.0.20140311 Linaro 2014.03
- // cannot be persuaded to accept those instructions (AFAICT).
-
// aesd 16b (aes single round decryption)
// aese 16b (aes single round encryption)
// aesimc 16b (aes inverse mix columns)
// aesmc 16b (aes mix columns)
- //if (0) test_aesd_16b_16b(TyNONE);
- //if (0) test_aese_16b_16b(TyNONE);
- //if (0) test_aesimc_16b_16b(TyNONE);
- //if (0) test_aesmc_16b_16b(TyNONE);
+ if (0) test_aesd_16b_16b(TyNONE);
+ if (0) test_aese_16b_16b(TyNONE);
+ if (0) test_aesimc_16b_16b(TyNONE);
+ if (0) test_aesmc_16b_16b(TyNONE);
// sha1c q_s_4s
// sha1h s_s
@@ -7404,21 +7400,21 @@
// sha1p q_s_4s
// sha1su0 4s_4s_4s
// sha1su1 4s_4s
- //if (0) test_sha1c_q_s_4s(TyNONE);
- //if (0) test_sha1h_s_s(TyNONE);
- //if (0) test_sha1m_q_s_4s(TyNONE);
- //if (0) test_sha1p_q_s_4s(TyNONE);
- //if (0) test_sha1su0_4s_4s_4s(TyNONE);
- //if (0) test_sha1su1_4s_4s(TyNONE);
+ if (0) test_sha1c_q_s_4s(TyNONE);
+ if (0) test_sha1h_s_s(TyNONE);
+ if (0) test_sha1m_q_s_4s(TyNONE);
+ if (0) test_sha1p_q_s_4s(TyNONE);
+ if (0) test_sha1su0_4s_4s_4s(TyNONE);
+ if (0) test_sha1su1_4s_4s(TyNONE);
// sha256h2 q_q_4s
// sha256h q_q_4s
// sha256su0 4s_4s
// sha256su1 4s_4s_4s
- //if (0) test_sha256h2_q_q_4s(TyNONE);
- //if (0) test_sha256h_q_q_4s(TyNONE);
- //if (0) test_sha256su0_4s_4s(TyNONE);
- //if (0) test_sha256su1_4s_4s_4s(TyNONE);
+ if (0) test_sha256h2_q_q_4s(TyNONE);
+ if (0) test_sha256h_q_q_4s(TyNONE);
+ if (0) test_sha256su0_4s_4s(TyNONE);
+ if (0) test_sha256su1_4s_4s_4s(TyNONE);
return 0;
}
|
|
From: <sv...@va...> - 2015-08-16 11:54:45
|
Author: sewardj
Date: Sun Aug 16 12:54:38 2015
New Revision: 15556
Log:
Fix format string confusion that was somehow related to r15510.
Modified:
trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-arm64-linux.c Sun Aug 16 12:54:38 2015
@@ -442,7 +442,7 @@
SysRes r;
PRINT("sys_mmap ( %#lx, %lu, %lu, %#lx, %lu, %lu )",
- ARG1, (ULong)ARG2, ARG3, ARG4, ARG5, ARG6 );
+ ARG1, ARG2, ARG3, ARG4, ARG5, ARG6 );
PRE_REG_READ6(long, "mmap",
unsigned long, start, unsigned long, length,
unsigned long, prot, unsigned long, flags,
|
|
From: <sv...@va...> - 2015-08-16 11:46:25
|
Author: sewardj
Date: Sun Aug 16 12:46:16 2015
New Revision: 15555
Log:
Add test cases for PRFM (register). Pertains to #345177.
Modified:
trunk/none/tests/arm64/memory.c
trunk/none/tests/arm64/memory.stdout.exp
Modified: trunk/none/tests/arm64/memory.c
==============================================================================
--- trunk/none/tests/arm64/memory.c (original)
+++ trunk/none/tests/arm64/memory.c Sun Aug 16 12:46:16 2015
@@ -1591,6 +1591,23 @@
MEM_TEST("prfm pldl1keep, [x5, #40]", 12, -4);
MEM_TEST("prfm pstl3strm, [x5, #56]", 12, -4);
+////////////////////////////////////////////////////////////////
+printf("PRFM (register)\n");
+
+MEM_TEST("prfm pldl1keep, [x5,x6]", 12, -4);
+MEM_TEST("prfm pldl1strm, [x5,x6, lsl #3]", 12, -4);
+MEM_TEST("prfm pldl2keep, [x5,w6,uxtw #0]", 12, 4);
+MEM_TEST("prfm pldl2strm, [x5,w6,uxtw #3]", 12, 4);
+MEM_TEST("prfm pldl3keep, [x5,w6,sxtw #0]", 12, 4);
+MEM_TEST("prfm pldl3strm, [x5,w6,sxtw #3]", 12, -4);
+
+MEM_TEST("prfm pstl1keep, [x5,x6]", 12, -4);
+MEM_TEST("prfm pstl1strm, [x5,x6, lsl #3]", 12, -4);
+MEM_TEST("prfm pstl2keep, [x5,w6,uxtw #0]", 12, 4);
+MEM_TEST("prfm pstl2strm, [x5,w6,uxtw #3]", 12, 4);
+MEM_TEST("prfm pstl3keep, [x5,w6,sxtw #0]", 12, 4);
+MEM_TEST("prfm pstl3strm, [x5,w6,sxtw #3]", 12, -4);
+
} /* end of test_memory2() */
////////////////////////////////////////////////////////////////
Modified: trunk/none/tests/arm64/memory.stdout.exp
==============================================================================
--- trunk/none/tests/arm64/memory.stdout.exp (original)
+++ trunk/none/tests/arm64/memory.stdout.exp Sun Aug 16 12:46:16 2015
@@ -25897,3 +25897,364 @@
0 x5 (sub, base reg)
0 x6 (sub, index reg)
+PRFM (register)
+prfm pldl1keep, [x5,x6] with x5 = middle_of_block+12, x6=-4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pldl1strm, [x5,x6, lsl #3] with x5 = middle_of_block+12, x6=-4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pldl2keep, [x5,w6,uxtw #0] with x5 = middle_of_block+12, x6=4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pldl2strm, [x5,w6,uxtw #3] with x5 = middle_of_block+12, x6=4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pldl3keep, [x5,w6,sxtw #0] with x5 = middle_of_block+12, x6=4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pldl3strm, [x5,w6,sxtw #3] with x5 = middle_of_block+12, x6=-4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pstl1keep, [x5,x6] with x5 = middle_of_block+12, x6=-4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pstl1strm, [x5,x6, lsl #3] with x5 = middle_of_block+12, x6=-4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pstl2keep, [x5,w6,uxtw #0] with x5 = middle_of_block+12, x6=4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pstl2strm, [x5,w6,uxtw #3] with x5 = middle_of_block+12, x6=4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pstl3keep, [x5,w6,sxtw #0] with x5 = middle_of_block+12, x6=4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
+prfm pstl3strm, [x5,w6,sxtw #3] with x5 = middle_of_block+12, x6=-4
+ [ 0] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 16] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 32] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 48] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 64] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 80] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [ 96] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [112] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [128] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [144] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [160] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [176] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [192] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [208] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [224] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ [240] .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+ 0000000000000000 x13 (xor, xfer intreg #1)
+ 0000000000000000 x23 (xor, xfer intreg #2)
+ 0000000000000000 v17.d[0] (xor, xfer vecreg #1)
+ 0000000000000000 v17.d[1] (xor, xfer vecreg #1)
+ 0000000000000000 v18.d[0] (xor, xfer vecreg #2)
+ 0000000000000000 v18.d[1] (xor, xfer vecreg #2)
+ 0000000000000000 v19.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v19.d[1] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[0] (xor, xfer vecreg #3)
+ 0000000000000000 v20.d[1] (xor, xfer vecreg #3)
+ 0 x5 (sub, base reg)
+ 0 x6 (sub, index reg)
+
|
|
From: <sv...@va...> - 2015-08-16 11:44:37
|
Author: sewardj
Date: Sun Aug 16 12:44:30 2015
New Revision: 3174
Log:
Implement PRFM (register). Fixes #345177.
Modified:
trunk/priv/guest_arm64_toIR.c
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Sun Aug 16 12:44:30 2015
@@ -6411,6 +6411,22 @@
return True;
}
+ /* ------------------ PRFM (register) ------------------ */
+ /* 31 29 22 20 15 12 11 9 4
+ 11 1110001 01 Rm opt S 10 Rn Rt PRFM pfrop=Rt, [Xn|SP, R<m>{ext/sh}]
+ */
+ if (INSN(31,21) == BITS11(1,1,1,1,1,0,0,0,1,0,1)
+ && INSN(11,10) == BITS2(1,0)) {
+ HChar dis_buf[64];
+ UInt tt = INSN(4,0);
+ IRTemp ea = gen_indexed_EA(dis_buf, insn, True/*to/from int regs*/);
+ if (ea != IRTemp_INVALID) {
+ /* No actual code to generate. */
+ DIP("prfm prfop=%u, %s\n", tt, dis_buf);
+ return True;
+ }
+ }
+
vex_printf("ARM64 front end: load_store\n");
return False;
# undef INSN
|
|
From: <sv...@va...> - 2015-08-15 19:51:47
|
Author: iraisr
Date: Sat Aug 15 20:51:35 2015
New Revision: 15554
Log:
Update script solaris/build_solaris_package to take into account
SVN version control software used by Valgrind.
n-i-bz
Modified:
trunk/solaris/build_solaris_package
trunk/solaris/valgrind.p5m
Modified: trunk/solaris/build_solaris_package
==============================================================================
--- trunk/solaris/build_solaris_package (original)
+++ trunk/solaris/build_solaris_package Sat Aug 15 20:51:35 2015
@@ -1,8 +1,8 @@
#!/usr/bin/ksh
#
-# Builds a Solaris IPS package called "valgrind" from the project sources.
-# Sources are cloned and updated to the tag found in solaris/valgrind.p5m
-# IPS manifest.
+# Builds a Solaris IPS package called "valgrind" from the source
+# directory. The Valgrind and VEX revisions are taken from that
+# source directory and written to solaris/valgrind.p5m IPS manifest.
#
# Requires the following packages to be installed on Solaris 11:
# - data/xml-common (install first before any docbook ones!)
@@ -22,15 +22,15 @@
# - pkgrepo set -s $repo_uri publisher/prefix=valgrind
#
-TMPDIR=/var/tmp/valgrind-solaris-build
+TMPDIR=/var/tmp/valgrind-build
SRCDIR=$TMPDIR/sources
INSTALLDIR=$TMPDIR/install
-PROJECT_URL=https://bitbucket.org/iraisr/valgrind-solaris
IPS_MANIFEST=solaris/valgrind.p5m
usage() {
echo "Usage:"
- echo "build_solaris_package -s repo_uri [-r lint_repo_uri]"
+ echo "build_solaris_package -p source_dir -s repo_uri [-r lint_repo_uri]"
+ echo "\t-p source_dir contains working copy of the Valgrind sources"
echo "\t-s repo_uri publishes to the repository located at the given URI"
echo "\t or file system path"
echo "\t-r lint_repo_uri location of lint reference repository"
@@ -40,7 +40,7 @@
msg=$1
echo "\n$msg"
- echo "Additional information could be found in directory $TMPDIR"
+ echo "Additional information could be found in directory $TMPDIR."
exit 1
}
@@ -50,73 +50,77 @@
create_dirs() {
mkdir -p $TMPDIR
- (( $? != 0 )) && fail "Failed to create directory $TMPDIR"
+ (( $? != 0 )) && fail "Failed to create directory $TMPDIR."
mkdir -p $INSTALLDIR
- (( $? != 0 )) && fail "Failed to create directory $INSTALLDIR"
+ (( $? != 0 )) && fail "Failed to create directory $INSTALLDIR."
}
-clone_sources() {
- printf "Cloning valgrind-solaris sources... "
- hg --quiet clone --insecure $PROJECT_URL $SRCDIR 2> $TMPDIR/hg-clone.log.stderr
- (( $? != 0 )) && fail "Failed to clone repo from $PROJECT_URL"
+export_sources() {
+ printf "Exporting sources... "
+ svn export --quiet --ignore-externals $source_directory $SRCDIR \
+ 2> $TMPDIR/svn-export-valgrind.log.stderr
+ (( $? != 0 )) && fail "Failed to export working copy from $source_directory."
+ svn export --quiet --ignore-externals $source_directory/VEX $SRCDIR/VEX \
+ 2> $TMPDIR/svn-export-vex.log.stderr
+ (( $? != 0 )) && fail "Failed to export working copy from $source_directory/VEX."
printf "done.\n"
}
-update_sources_to_revision() {
- cd $SRCDIR
- tag=$( grep "pkg.fmri" $IPS_MANIFEST | tr -s ' ' | \
- sed -e 's/^.*developer\/debug\/valgrind@.*,//' )
- [[ -z $tag ]] && fail "Failed to find revision tag in $IPS_MANIFEST"
+modify_ips_manifest() {
+ valgrind_rev=$( svn info $source_directory | grep Revision | sed -e 's/Revision: //' )
+ vex_rev=$( svn info $source_directory/VEX | grep Revision | sed -e 's/Revision: //' )
- printf "Updating cloned sources to revision tag $tag... "
- hg --quiet update -r $tag
- (( $? != 0 )) && fail "Failed to update cloned sources to tag $tag"
- printf "done.\n"
+ [[ -z $valgrind_rev ]] && fail "Failed to find Valgrind revision."
+ [[ -z $vex_rev ]] && fail "Failed to find VEX revision."
+
+ echo "Valgrind revision: $valgrind_rev, VEX revision $vex_rev."
+
+ sed -i -e "s/VVVVV-XXXX/${valgrind_rev}-${vex_rev}/" $SRCDIR/$IPS_MANIFEST
}
run_autogen() {
printf "Creating autotools support files... "
./autogen.sh > $TMPDIR/autogen.log.stdout 2> $TMPDIR/autogen.log.stderr
- (( $? != 0 )) && fail "Failed to generate autotools support files"
+ (( $? != 0 )) && fail "Failed to generate autotools support files."
printf "done.\n"
}
run_configure() {
printf "Running configure... "
./configure CC='gcc -m64' CXX='g++ -m64' --prefix=/usr > $TMPDIR/configure.log
- (( $? != 0 )) && fail "Failed to run configure"
+ (( $? != 0 )) && fail "Failed to run configure."
printf "done.\n"
}
run_make_docs() {
printf "Making docs... "
make --directory=docs html-docs > $TMPDIR/make-docs.log.stdout 2> $TMPDIR/make-docs.log.stderr
- (( $? != 0 )) && fail "Failed to make html-docs"
+ (( $? != 0 )) && fail "Failed to make html-docs."
printf "done.\n"
}
run_make_man_pages() {
printf "Making man pages... "
make --directory=docs man-pages > $TMPDIR/make-man-pages.log.stdout 2> $TMPDIR/make-man-pages.log.stderr
- (( $? != 0 )) && fail "Failed to make man-pages"
+ (( $? != 0 )) && fail "Failed to make man-pages."
printf "done.\n"
}
run_make() {
printf "Running make... "
make --quiet > $TMPDIR/make.log
- (( $? != 0 )) && fail "Failed to run make"
+ (( $? != 0 )) && fail "Failed to run make."
printf "done.\n"
}
run_make_install() {
printf "Running 'make install'... "
make --quiet install DESTDIR=$INSTALLDIR > $TMPDIR/make-install.log
- (( $? != 0 )) && fail "Failed to run 'make install'"
+ (( $? != 0 )) && fail "Failed to run 'make install'."
cp AUTHORS COPYING* NEWS NEWS.old README* $INSTALLDIR/usr/share/doc/valgrind
- (( $? != 0 )) && fail "Failed to copy additional files to $INSTALLDIR"
+ (( $? != 0 )) && fail "Failed to copy additional files to $INSTALLDIR."
printf "done.\n"
}
@@ -124,25 +128,28 @@
run_pkglint() {
printf "Running pkglint... "
pkglint -c $TMPDIR/lint-cache -r $lint_repo_uri $SRCDIR/$IPS_MANIFEST > $TMPDIR/pkglint.log
- (( $? != 0 )) && fail "pkglint failed"
+ (( $? != 0 )) && fail "pkglint failed."
printf "done.\n"
}
publish_package() {
printf "Publishing package... "
pkgsend publish -s $repo_uri -d $INSTALLDIR $SRCDIR/solaris/valgrind.p5m > $TMPDIR/pkgsend.log
- (( $? != 0 )) && fail "Failed to publish the package"
+ (( $? != 0 )) && fail "Failed to publish the package."
printf "done.\n"
}
-while getopts "r:s:" args; do
+while getopts "p:r:s:" args; do
case $args in
- s)
- repo_uri=$OPTARG
+ p)
+ source_directory=$OPTARG
;;
r)
lint_repo_uri=$OPTARG
;;
+ s)
+ repo_uri=$OPTARG
+ ;;
*)
usage
exit 1
@@ -150,6 +157,12 @@
esac
done
+if [[ -z $source_directory ]]; then
+ echo "No source directory specified.\n"
+ usage
+ exit 1
+fi
+
if [[ -z $repo_uri ]]; then
echo "No repo_uri specified.\n"
usage
@@ -165,7 +178,7 @@
else
lint_repo_uri=$( echo "$publisher" | cut -d ' ' -f 5 )
fi
- [[ -z $lint_repo_uri ]] && fail "Failed to determine solaris IPS publisher"
+ [[ -z $lint_repo_uri ]] && fail "Failed to determine solaris IPS publisher."
echo "lint_repo_uri determined as $lint_repo_uri"
fi
@@ -174,8 +187,8 @@
create_dirs
cd $TMPDIR
-clone_sources
-update_sources_to_revision
+export_sources
+modify_ips_manifest
cd $SRCDIR
run_autogen
run_configure
Modified: trunk/solaris/valgrind.p5m
==============================================================================
--- trunk/solaris/valgrind.p5m (original)
+++ trunk/solaris/valgrind.p5m Sat Aug 15 20:51:35 2015
@@ -1,10 +1,10 @@
-set name=pkg.fmri value=developer/debug/valgrind@3.11.0,1508
+set name=pkg.fmri value=developer/debug/valgrind@3.11.0,VVVVV-XXXX
set name=pkg.description value="valgrind: instrumentation framework and tools to detect memory and threading problems"
set name=pkg.summary value="Valgrind is an award-winning instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools. Currently x86 (32-bit) and amd64 (64-bit) platforms are supported."
set name=variant.arch value=i386
set name=info.classification value="org.opensolaris.category.2008:Development/System"
set name=info.upstream-url value=https://bitbucket.org/iraisr/valgrind-solaris
-set name=info.source-url value=https://bitbucket.org/iraisr/valgrind-solaris/get/r1508.tar.bz2
+set name=info.source-url value=http://valgrind.org/
# Contents:
dir path=usr/bin owner=root group=bin mode=0755
|
|
From: <sv...@va...> - 2015-08-15 12:21:51
|
Author: rhyskidd
Date: Sat Aug 15 13:21:42 2015
New Revision: 15553
Log:
Increase test coverage on OS X, by re-enabling the none/tests/amd64/avx2-1 regression test.
n-i-bz
(Unfortunately I don’t have right here the hw support, but build environment works)
$ perl tests/vg_regtest none/tests/amd64/avx2-1
avx2-1: (skipping, prereq failed: test -x avx2-1 && ../../../tests/x86_amd64_features amd64-avx)
== 0 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
On OS X 10.10
Before:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
After:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
Modified:
trunk/none/tests/amd64/Makefile.am
trunk/none/tests/amd64/avx2-1.c
Modified: trunk/none/tests/amd64/Makefile.am
==============================================================================
--- trunk/none/tests/amd64/Makefile.am (original)
+++ trunk/none/tests/amd64/Makefile.am Sat Aug 15 13:21:42 2015
@@ -110,6 +110,11 @@
check_PROGRAMS += avx-1
endif
endif
+if BUILD_AVX2_TESTS
+if !COMPILER_IS_ICC
+ check_PROGRAMS += avx2-1
+endif
+endif
if BUILD_SSSE3_TESTS
check_PROGRAMS += ssse3_misaligned
endif
@@ -152,11 +157,6 @@
if BUILD_LOOPNEL_TESTS
check_PROGRAMS += loopnel
endif
-if BUILD_AVX2_TESTS
-if !COMPILER_IS_ICC
- check_PROGRAMS += avx2-1
-endif
-endif
endif
AM_CFLAGS += @FLAG_M64@
Modified: trunk/none/tests/amd64/avx2-1.c
==============================================================================
--- trunk/none/tests/amd64/avx2-1.c (original)
+++ trunk/none/tests/amd64/avx2-1.c Sat Aug 15 13:21:42 2015
@@ -9,7 +9,11 @@
typedef unsigned long int UWord;
typedef unsigned long long int ULong;
+#if defined(VGO_darwin)
UChar randArray[1027] __attribute__((used));
+#else
+UChar _randArray[1027] __attribute__((used));
+#endif
#define IS_32_ALIGNED(_ptr) (0 == (0x1F & (UWord)(_ptr)))
@@ -975,7 +979,7 @@
"vpslld $25, %%xmm7, %%xmm8;"
"vpsrld $25, %%xmm8, %%xmm8;"
"vblendvps %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherdps %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -983,7 +987,7 @@
"vpslld $25, %%ymm7, %%ymm8;"
"vpsrld $25, %%ymm8, %%ymm8;"
"vblendvps %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherdps %%ymm6, 3(%%r14,%%ymm8,4), %%ymm9;"
"xorl %%r14d, %%r14d")
@@ -993,7 +997,7 @@
"vpmovsxdq %%xmm6, %%xmm9;"
"vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherqps %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1003,7 +1007,7 @@
"vpmovsxdq %%xmm6, %%ymm9;"
"vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherqps %%xmm6, 3(%%r14,%%ymm8,4), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1013,7 +1017,7 @@
"vpmovsxdq %%xmm6, %%xmm9;"
"vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%xmm8, %%xmm8;"
"vpbroadcastq %%xmm7, %%xmm7;"
@@ -1029,7 +1033,7 @@
"vpmovsxdq %%xmm6, %%ymm9;"
"vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%ymm8, %%ymm8;"
"vpbroadcastq %%xmm7, %%ymm7;"
@@ -1045,7 +1049,7 @@
"vshufps $13, %%xmm6, %%xmm6, %%xmm9;"
"vblendvps %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherdpd %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1056,7 +1060,7 @@
"vshufps $221, %%ymm9, %%ymm6, %%ymm9;"
"vblendvps %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherdpd %%ymm6, 3(%%r14,%%xmm8,8), %%ymm9;"
"xorl %%r14d, %%r14d")
@@ -1064,7 +1068,7 @@
"vpsllq $58, %%xmm7, %%xmm8;"
"vpsrlq $58, %%xmm8, %%xmm8;"
"vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherqpd %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1072,7 +1076,7 @@
"vpsllq $58, %%ymm7, %%ymm8;"
"vpsrlq $58, %%ymm8, %%ymm8;"
"vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vgatherqpd %%ymm6, 3(%%r14,%%ymm8,8), %%ymm9;"
"xorl %%r14d, %%r14d")
@@ -1080,7 +1084,7 @@
"vpsllq $58, %%xmm7, %%xmm8;"
"vpsrlq $58, %%xmm8, %%xmm8;"
"vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%xmm8, %%xmm8;"
"vpbroadcastq %%xmm7, %%xmm7;"
@@ -1094,7 +1098,7 @@
"vpsllq $58, %%ymm7, %%ymm8;"
"vpsrlq $58, %%ymm8, %%ymm8;"
"vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%ymm8, %%ymm8;"
"vpbroadcastq %%xmm7, %%ymm7;"
@@ -1108,7 +1112,7 @@
"vpslld $25, %%xmm7, %%xmm8;"
"vpsrld $25, %%xmm8, %%xmm8;"
"vblendvps %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherdd %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1116,7 +1120,7 @@
"vpslld $25, %%ymm7, %%ymm8;"
"vpsrld $25, %%ymm8, %%ymm8;"
"vblendvps %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherdd %%ymm6, 3(%%r14,%%ymm8,4), %%ymm9;"
"xorl %%r14d, %%r14d")
@@ -1126,7 +1130,7 @@
"vpmovsxdq %%xmm6, %%xmm9;"
"vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherqd %%xmm6, 3(%%r14,%%xmm8,4), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1136,7 +1140,7 @@
"vpmovsxdq %%xmm6, %%ymm9;"
"vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherqd %%xmm6, 3(%%r14,%%ymm8,4), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1146,7 +1150,7 @@
"vpmovsxdq %%xmm6, %%xmm9;"
"vblendvpd %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%xmm8, %%xmm8;"
"vpbroadcastq %%xmm7, %%xmm7;"
@@ -1162,7 +1166,7 @@
"vpmovsxdq %%xmm6, %%ymm9;"
"vblendvpd %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%ymm8, %%ymm8;"
"vpbroadcastq %%xmm7, %%ymm7;"
@@ -1178,7 +1182,7 @@
"vshufps $13, %%xmm6, %%xmm6, %%xmm9;"
"vblendvps %%xmm9, %%xmm8, %%xmm7, %%xmm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherdq %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1189,7 +1193,7 @@
"vshufps $221, %%ymm9, %%ymm6, %%ymm9;"
"vblendvps %%ymm9, %%ymm8, %%ymm7, %%ymm8;"
"vmovdqa 96(%0), %%ymm9;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherdq %%ymm6, 3(%%r14,%%xmm8,8), %%ymm9;"
"xorl %%r14d, %%r14d")
@@ -1197,7 +1201,7 @@
"vpsllq $58, %%xmm7, %%xmm8;"
"vpsrlq $58, %%xmm8, %%xmm8;"
"vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherqq %%xmm6, 3(%%r14,%%xmm8,8), %%xmm9;"
"xorl %%r14d, %%r14d")
@@ -1205,7 +1209,7 @@
"vpsllq $58, %%ymm7, %%ymm8;"
"vpsrlq $58, %%ymm8, %%ymm8;"
"vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vpgatherqq %%ymm6, 3(%%r14,%%ymm8,8), %%ymm9;"
"xorl %%r14d, %%r14d")
@@ -1213,7 +1217,7 @@
"vpsllq $58, %%xmm7, %%xmm8;"
"vpsrlq $58, %%xmm8, %%xmm8;"
"vblendvpd %%xmm6, %%xmm8, %%xmm7, %%xmm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%xmm8, %%xmm8;"
"vpbroadcastq %%xmm7, %%xmm7;"
@@ -1227,7 +1231,7 @@
"vpsllq $58, %%ymm7, %%ymm8;"
"vpsrlq $58, %%ymm8, %%ymm8;"
"vblendvpd %%ymm6, %%ymm8, %%ymm7, %%ymm8;"
- "leaq randArray(%%rip), %%r14;"
+ "leaq _randArray(%%rip), %%r14;"
"vmovq %%r14, %%xmm7;"
"vpsllq $2, %%ymm8, %%ymm8;"
"vpbroadcastq %%xmm7, %%ymm7;"
@@ -1466,7 +1470,11 @@
DO_D( VPMASKMOVD_256_StoreForm );
DO_D( VPMASKMOVQ_128_StoreForm );
DO_D( VPMASKMOVQ_256_StoreForm );
+#if defined(VGO_darwin)
{ int i; for (i = 0; i < sizeof(randArray); i++) randArray[i] = randUChar(); }
+#else
+ { int i; for (i = 0; i < sizeof(_randArray); i++) _randArray[i] = randUChar(); }
+#endif
DO_D( VGATHERDPS_128 );
DO_D( VGATHERDPS_256 );
DO_D( VGATHERQPS_128_1 );
|
|
From: <sv...@va...> - 2015-08-15 11:40:34
|
Author: rhyskidd
Date: Sat Aug 15 12:40:27 2015
New Revision: 15552
Log:
Preliminary OS X memalign() shim work, although this specific regression test remains guarded due to clang build issues with _randArray.
Modified:
trunk/none/tests/amd64/avx2-1.c
Modified: trunk/none/tests/amd64/avx2-1.c
==============================================================================
--- trunk/none/tests/amd64/avx2-1.c (original)
+++ trunk/none/tests/amd64/avx2-1.c Sat Aug 15 12:40:27 2015
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
-#include <malloc.h>
+#include "tests/malloc.h"
typedef unsigned char UChar;
typedef unsigned int UInt;
@@ -65,7 +65,7 @@
\
__attribute__ ((noinline)) static void test_##_name ( void ) \
{ \
- Block* b = memalign(32, sizeof(Block)); \
+ Block* b = memalign32(sizeof(Block)); \
randBlock(b); \
printf("%s(reg)\n", #_name); \
showBlock("before", b); \
|
|
From: <sv...@va...> - 2015-08-15 11:16:43
|
Author: rhyskidd
Date: Sat Aug 15 12:16:35 2015
New Revision: 15551
Log:
Increase test coverage on OS X, by re-enabling the memcheck/tests/amd64/xsave-avx regression tests with a handy memalign() shim.
n-i-bz
(Unfortunately I don’t have right here the hw support, but build environment works)
$ perl tests/vg_regtest memcheck/tests/amd64/xsave-avx
xsave-avx: (skipping, prereq failed: test -x xsave-avx && ../../../tests/x86_amd64_features amd64-avx)
== 0 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
On OS X 10.10
Before:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
After:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
Modified:
trunk/memcheck/tests/amd64/Makefile.am
trunk/memcheck/tests/amd64/xsave-avx.c
trunk/tests/malloc.h
Modified: trunk/memcheck/tests/amd64/Makefile.am
==============================================================================
--- trunk/memcheck/tests/amd64/Makefile.am (original)
+++ trunk/memcheck/tests/amd64/Makefile.am Sat Aug 15 12:16:35 2015
@@ -46,10 +46,7 @@
sse_memory \
xor-undef-amd64
if BUILD_AVX_TESTS
- check_PROGRAMS += sh-mem-vec256
-if !VGCONF_OS_IS_DARWIN
- check_PROGRAMS += xsave-avx
-endif
+ check_PROGRAMS += sh-mem-vec256 xsave-avx
endif
if HAVE_ASM_CONSTRAINT_P
check_PROGRAMS += insn-pcmpistri
Modified: trunk/memcheck/tests/amd64/xsave-avx.c
==============================================================================
--- trunk/memcheck/tests/amd64/xsave-avx.c (original)
+++ trunk/memcheck/tests/amd64/xsave-avx.c Sat Aug 15 12:16:35 2015
@@ -54,9 +54,9 @@
return dest;
}
-static void* memalign_zeroed(size_t alignment, size_t size)
+static void* memalign_zeroed64(size_t size)
{
- char* p = memalign(alignment, size);
+ char* p = memalign64(size);
if (p && size > 0) {
my_memset(p, 0, size);
}
@@ -203,7 +203,7 @@
UInt rfbm;
for (rfbm = 0; rfbm <= 7; rfbm++) {
- UChar* saved_img = memalign_zeroed(64, XSAVE_AREA_SIZE);
+ UChar* saved_img = memalign_zeroed64(XSAVE_AREA_SIZE);
my_memset(saved_img, 0xAA, XSAVE_AREA_SIZE);
saved_img[512] = 0;
@@ -236,7 +236,7 @@
neither zero nor the data to be loaded. We choose to use 0x55
where possible. */
- UChar* fives = memalign_zeroed(64, XSAVE_AREA_SIZE);
+ UChar* fives = memalign_zeroed64(XSAVE_AREA_SIZE);
my_memset(fives, 0x55, XSAVE_AREA_SIZE);
/* Set MXCSR so that the insn doesn't fault */
fives[24] = 0x80;
@@ -259,7 +259,7 @@
fives[4/*FTW*/] = 0xFF;
/* (1) (see comment in loop below) */
- UChar* standard_test_data = memalign_zeroed(64, XSAVE_AREA_SIZE);
+ UChar* standard_test_data = memalign_zeroed64(XSAVE_AREA_SIZE);
do_setup_then_xsave(standard_test_data, 7);
UInt xstate_bv, rfbm;
@@ -283,12 +283,12 @@
/* (3a). We can't use |standard_test_data| directly, since we
need to put in the required |xstate_bv| value. So make a
copy and modify that instead. */
- UChar* img_to_restore_from = memalign_zeroed(64, XSAVE_AREA_SIZE);
+ UChar* img_to_restore_from = memalign_zeroed64(XSAVE_AREA_SIZE);
my_memcpy(img_to_restore_from, standard_test_data, XSAVE_AREA_SIZE);
img_to_restore_from[512] = xstate_bv;
/* (4a) */
- UChar* saved_img = memalign_zeroed(64, XSAVE_AREA_SIZE);
+ UChar* saved_img = memalign_zeroed64(XSAVE_AREA_SIZE);
my_memset(saved_img, 0xAA, XSAVE_AREA_SIZE);
saved_img[512] = 0;
Modified: trunk/tests/malloc.h
==============================================================================
--- trunk/tests/malloc.h (original)
+++ trunk/tests/malloc.h Sat Aug 15 12:16:35 2015
@@ -41,3 +41,19 @@
return x;
}
+// Allocates a 64-aligned block. Asserts if the allocation fails.
+__attribute__((unused))
+static void* memalign64(size_t szB)
+{
+ void* x;
+#if defined(VGO_darwin)
+ // Darwin lacks memalign
+ posix_memalign((void **)&x, 64, szB);
+#else
+ x = memalign(64, szB);
+#endif
+ assert(x);
+ assert(0 == ((64-1) & (unsigned long)x));
+ return x;
+}
+
|
|
From: <sv...@va...> - 2015-08-15 11:04:11
|
Author: rhyskidd
Date: Sat Aug 15 12:04:02 2015
New Revision: 15550
Log:
Increase test coverage on OS X, by re-enabling the none/tests/amd64/avx-1 regression tests with a handy memalign() shim.
n-i-bz
(Unfortunately I don’t have right here the hw support, but build environment works)
$ perl tests/vg_regtest none/tests/amd64/avx-1
avx-1: (skipping, prereq failed: test -x avx-1 && ../../../tests/x86_amd64_features amd64-avx)
== 0 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
On OS X 10.10
Before:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
After:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
Modified:
trunk/none/tests/amd64/Makefile.am
trunk/none/tests/amd64/avx-1.c
Modified: trunk/none/tests/amd64/Makefile.am
==============================================================================
--- trunk/none/tests/amd64/Makefile.am (original)
+++ trunk/none/tests/amd64/Makefile.am Sat Aug 15 12:04:02 2015
@@ -105,6 +105,11 @@
if BUILD_ADDR32_TESTS
check_PROGRAMS += asorep
endif
+if BUILD_AVX_TESTS
+if BUILD_VPCLMULQDQ_TESTS
+ check_PROGRAMS += avx-1
+endif
+endif
if BUILD_SSSE3_TESTS
check_PROGRAMS += ssse3_misaligned
endif
@@ -147,11 +152,6 @@
if BUILD_LOOPNEL_TESTS
check_PROGRAMS += loopnel
endif
-if BUILD_AVX_TESTS
-if BUILD_VPCLMULQDQ_TESTS
- check_PROGRAMS += avx-1
-endif
-endif
if BUILD_AVX2_TESTS
if !COMPILER_IS_ICC
check_PROGRAMS += avx2-1
Modified: trunk/none/tests/amd64/avx-1.c
==============================================================================
--- trunk/none/tests/amd64/avx-1.c (original)
+++ trunk/none/tests/amd64/avx-1.c Sat Aug 15 12:04:02 2015
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
-#include <malloc.h>
+#include "tests/malloc.h"
typedef unsigned char UChar;
typedef unsigned int UInt;
@@ -63,7 +63,7 @@
\
__attribute__ ((noinline)) static void test_##_name ( void ) \
{ \
- Block* b = memalign(32, sizeof(Block)); \
+ Block* b = memalign32(sizeof(Block)); \
randBlock(b); \
printf("%s(reg)\n", #_name); \
showBlock("before", b); \
|
Author: rhyskidd
Date: Sat Aug 15 11:47:55 2015
New Revision: 15549
Log:
Increase test coverage on OS X, by re-enabling the none/tests/*/movbe regression tests with a handy memalign() shim.
n-i-bz
$ perl tests/vg_regtest none/tests/x86/movbe none/tests/amd64/movbe
movbe: valgrind -q ./movbe
movbe: valgrind -q ./movbe
== 2 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
On OS X 10.10
Before:
== 592 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
After:
== 594 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
Modified:
trunk/none/tests/amd64/Makefile.am
trunk/none/tests/amd64/movbe.c
trunk/none/tests/x86/Makefile.am
trunk/none/tests/x86/movbe.c
trunk/tests/malloc.h
Modified: trunk/none/tests/amd64/Makefile.am
==============================================================================
--- trunk/none/tests/amd64/Makefile.am (original)
+++ trunk/none/tests/amd64/Makefile.am Sat Aug 15 11:47:55 2015
@@ -111,6 +111,9 @@
if BUILD_LZCNT_TESTS
check_PROGRAMS += lzcnt64
endif
+if BUILD_MOVBE_TESTS
+ check_PROGRAMS += movbe
+endif
if BUILD_SSE42_TESTS
check_PROGRAMS += \
pcmpstr64 pcmpxstrx64 sse4-64 crc32 aes \
@@ -144,9 +147,6 @@
if BUILD_LOOPNEL_TESTS
check_PROGRAMS += loopnel
endif
-if BUILD_MOVBE_TESTS
- check_PROGRAMS += movbe
-endif
if BUILD_AVX_TESTS
if BUILD_VPCLMULQDQ_TESTS
check_PROGRAMS += avx-1
Modified: trunk/none/tests/amd64/movbe.c
==============================================================================
--- trunk/none/tests/amd64/movbe.c (original)
+++ trunk/none/tests/amd64/movbe.c Sat Aug 15 11:47:55 2015
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
-#include <malloc.h>
+#include "tests/malloc.h"
typedef unsigned char UChar;
typedef unsigned int UInt;
@@ -43,7 +43,7 @@
\
__attribute__ ((noinline)) static void test_##_name ( void ) \
{ \
- Block* b = memalign(32, sizeof(Block)); \
+ Block* b = memalign32(sizeof(Block)); \
randBlock(b); \
printf("%s\n", #_name); \
showBlock("before", b); \
Modified: trunk/none/tests/x86/Makefile.am
==============================================================================
--- trunk/none/tests/x86/Makefile.am (original)
+++ trunk/none/tests/x86/Makefile.am Sat Aug 15 11:47:55 2015
@@ -119,10 +119,10 @@
if BUILD_LZCNT_TESTS
check_PROGRAMS += lzcnt32
endif
-if !VGCONF_OS_IS_DARWIN
if BUILD_MOVBE_TESTS
- check_PROGRAMS += movbe
+ check_PROGRAMS += movbe
endif
+if !VGCONF_OS_IS_DARWIN
if !SOLARIS_SUN_STUDIO_AS
# Sun Studio assembler fails to assemble the bound instruction
check_PROGRAMS += faultstatus
Modified: trunk/none/tests/x86/movbe.c
==============================================================================
--- trunk/none/tests/x86/movbe.c (original)
+++ trunk/none/tests/x86/movbe.c Sat Aug 15 11:47:55 2015
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
-#include <malloc.h>
+#include "tests/malloc.h"
typedef unsigned char UChar;
typedef unsigned int UInt;
@@ -43,7 +43,7 @@
\
__attribute__ ((noinline)) static void test_##_name ( void ) \
{ \
- Block* b = memalign(32, sizeof(Block)); \
+ Block* b = memalign32(sizeof(Block)); \
randBlock(b); \
printf("%s\n", #_name); \
showBlock("before", b); \
Modified: trunk/tests/malloc.h
==============================================================================
--- trunk/tests/malloc.h (original)
+++ trunk/tests/malloc.h Sat Aug 15 11:47:55 2015
@@ -23,5 +23,21 @@
assert(x);
assert(0 == ((16-1) & (unsigned long)x));
return x;
-}
+}
+
+// Allocates a 32-aligned block. Asserts if the allocation fails.
+__attribute__((unused))
+static void* memalign32(size_t szB)
+{
+ void* x;
+#if defined(VGO_darwin)
+ // Darwin lacks memalign
+ posix_memalign((void **)&x, 32, szB);
+#else
+ x = memalign(32, szB);
+#endif
+ assert(x);
+ assert(0 == ((32-1) & (unsigned long)x));
+ return x;
+}
|
|
From: <sv...@va...> - 2015-08-15 08:55:22
|
Author: rhyskidd
Date: Sat Aug 15 09:55:14 2015
New Revision: 15548
Log:
Plumb through memalign16() rather than having four implementations of the same code. n-i-bz.
Modified:
trunk/none/tests/amd64/sse4-64.c
trunk/none/tests/arm64/fp_and_simd.c
trunk/none/tests/arm64/memory.c
Modified: trunk/none/tests/amd64/sse4-64.c
==============================================================================
--- trunk/none/tests/amd64/sse4-64.c (original)
+++ trunk/none/tests/amd64/sse4-64.c Sat Aug 15 09:55:14 2015
@@ -12,35 +12,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
-//#include "tests/malloc.h" // reenable when reintegrated
+#include "tests/malloc.h"
#include <string.h>
-
-// rmme when reintegrated
-// Allocates a 16-aligned block. Asserts if the allocation fails.
-#ifdef VGO_darwin
-#include <stdlib.h>
-#else
-#include <malloc.h>
-#endif
-__attribute__((unused))
-static void* memalign16(size_t szB)
-{
- void* x;
-#if defined(VGO_darwin)
- // Darwin lacks memalign, but its malloc is always 16-aligned anyway.
- x = malloc(szB);
-#else
- x = memalign(16, szB);
-#endif
- assert(x);
- assert(0 == ((16-1) & (unsigned long)x));
- return x;
-}
-
-
-
typedef unsigned char V128[16];
typedef unsigned int UInt;
typedef signed int Int;
Modified: trunk/none/tests/arm64/fp_and_simd.c
==============================================================================
--- trunk/none/tests/arm64/fp_and_simd.c (original)
+++ trunk/none/tests/arm64/fp_and_simd.c Sat Aug 15 09:55:14 2015
@@ -3,6 +3,7 @@
#include <assert.h>
#include <malloc.h> // memalign
#include <string.h> // memset
+#include "tests/malloc.h"
#include <math.h> // isnormal
typedef unsigned char UChar;
@@ -92,16 +93,6 @@
}
}
-__attribute__((unused))
-static void* memalign16(size_t szB)
-{
- void* x;
- x = memalign(16, szB);
- assert(x);
- assert(0 == ((16-1) & (unsigned long)x));
- return x;
-}
-
static ULong dup4x16 ( UInt x )
{
ULong r = x & 0xF;
Modified: trunk/none/tests/arm64/memory.c
==============================================================================
--- trunk/none/tests/arm64/memory.c (original)
+++ trunk/none/tests/arm64/memory.c Sat Aug 15 09:55:14 2015
@@ -6,6 +6,7 @@
#include <stdio.h>
#include <malloc.h> // memalign
#include <string.h> // memset
+#include "tests/malloc.h"
#include <assert.h>
typedef unsigned char UChar;
@@ -20,16 +21,6 @@
#define False ((Bool)0)
#define True ((Bool)1)
-__attribute__((noinline))
-static void* memalign16(size_t szB)
-{
- void* x;
- x = memalign(16, szB);
- assert(x);
- assert(0 == ((16-1) & (unsigned long)x));
- return x;
-}
-
static inline UChar randUChar ( void )
{
static UInt seed = 80021;
|
|
From: <sv...@va...> - 2015-08-15 07:40:12
|
Author: rhyskidd
Date: Sat Aug 15 08:40:06 2015
New Revision: 15547
Log:
Update for VEX r3173.
Modified:
trunk/NEWS
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Sat Aug 15 08:40:06 2015
@@ -290,6 +290,7 @@
349874 Fix typos in source code
349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so)
349941 di_notify_mmap might create wrong start/size DebugInfoMapping
+350062 vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X
350202 Add limited param to 'monitor block_list'
350809 Fix none/tests/async-sigs for Solaris
350811 Remove reference to --db-attach which has been removed.
|
|
From: <sv...@va...> - 2015-08-15 07:39:35
|
Author: rhyskidd
Date: Sat Aug 15 08:39:27 2015
New Revision: 3173
Log:
vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X
bz#350062
On OS X 10.10
Before:
== 592 tests, 216 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
After:
== 592 tests, 215 stderr failures, 9 stdout failures, 0 stderrB failures, 0 stdoutB failures, 30 post failures ==
Modified:
trunk/priv/guest_x86_toIR.c
Modified: trunk/priv/guest_x86_toIR.c
==============================================================================
--- trunk/priv/guest_x86_toIR.c (original)
+++ trunk/priv/guest_x86_toIR.c Sat Aug 15 08:39:27 2015
@@ -12885,7 +12885,7 @@
*/
if (sz == 2
&& insn[0] == 0x0F && insn[1] == 0x3A
- && (/*insn[2] == 0x0B || */insn[2] == 0x0A)) {
+ && (insn[2] == 0x0B || insn[2] == 0x0A)) {
Bool isD = insn[2] == 0x0B;
IRTemp src = newTemp(isD ? Ity_F64 : Ity_F32);
|
|
From: <sv...@va...> - 2015-08-15 07:07:09
|
Author: rhyskidd
Date: Sat Aug 15 08:06:57 2015
New Revision: 15546
Log:
Add regression test for bz#350062 - vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X.
Added:
trunk/none/tests/x86-darwin/bug350062.c
trunk/none/tests/x86-darwin/bug350062.stderr.exp
trunk/none/tests/x86-darwin/bug350062.vgtest
Modified:
trunk/none/tests/x86-darwin/ (props changed)
trunk/none/tests/x86-darwin/Makefile.am
Modified: trunk/none/tests/x86-darwin/Makefile.am
==============================================================================
--- trunk/none/tests/x86-darwin/Makefile.am (original)
+++ trunk/none/tests/x86-darwin/Makefile.am Sat Aug 15 08:06:57 2015
@@ -5,10 +5,12 @@
filter_stderr
EXTRA_DIST = \
- bug341419.vgtest bug341419.stderr.exp
+ bug341419.vgtest bug341419.stderr.exp \
+ bug350062.vgtest bug350062.stderr.exp
check_PROGRAMS = \
- bug341419
+ bug341419 \
+ bug350062
AM_CFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE)
AM_CXXFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE)
Added: trunk/none/tests/x86-darwin/bug350062.c
==============================================================================
--- trunk/none/tests/x86-darwin/bug350062.c (added)
+++ trunk/none/tests/x86-darwin/bug350062.c Sat Aug 15 08:06:57 2015
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+// Refer https://bugs.kde.org/show_bug.cgi?id=350062
+
+int main(int argc, char **argv)
+{
+ double x = 1.1;
+ double i = floor(x);
+
+ (void)i;
+
+ fprintf(stderr, "PASS\n");
+ return 0;
+}
Added: trunk/none/tests/x86-darwin/bug350062.stderr.exp
==============================================================================
--- trunk/none/tests/x86-darwin/bug350062.stderr.exp (added)
+++ trunk/none/tests/x86-darwin/bug350062.stderr.exp Sat Aug 15 08:06:57 2015
@@ -0,0 +1 @@
+PASS
Added: trunk/none/tests/x86-darwin/bug350062.vgtest
==============================================================================
--- trunk/none/tests/x86-darwin/bug350062.vgtest (added)
+++ trunk/none/tests/x86-darwin/bug350062.vgtest Sat Aug 15 08:06:57 2015
@@ -0,0 +1,3 @@
+prog: bug350062
+vgopts: -q
+cleanup: rm -f vgcore.*
|
|
From: <sv...@va...> - 2015-08-14 20:50:21
|
Author: iraisr
Date: Fri Aug 14 21:50:11 2015
New Revision: 15545
Log:
Newer Solaris has added /proc/self/cmdline and /proc/<pid>/cmdline.
Add support for it in the syswrap machinery and test it more thoroughly.
n-i-bz
Added:
trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-with-cmdline
trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-without-cmdline
trunk/none/tests/solaris/proc-cmdline-exe.vgtest
Modified:
trunk/configure.ac
trunk/coregrind/m_main.c
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/none/tests/procfs-non-linux.vgtest
trunk/none/tests/solaris/Makefile.am
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Fri Aug 14 21:50:11 2015
@@ -2676,6 +2676,23 @@
CFLAGS="$save_CFLAGS"
+# Solaris-specific check determining if /proc/self/cmdline
+# or /proc/<pid>/cmdline is supported.
+#
+# C-level symbol: SOLARIS_PROC_CMDLINE
+# Automake-level symbol: SOLARIS_PROC_CMDLINE
+#
+AC_CHECK_FILE([/proc/self/cmdline],
+[
+solaris_proc_cmdline=yes
+AC_DEFINE([SOLARIS_PROC_CMDLINE], 1,
+ [Define to 1 if you have /proc/self/cmdline.])
+], [
+solaris_proc_cmdline=no
+])
+AM_CONDITIONAL(SOLARIS_PROC_CMDLINE, test x$solaris_proc_cmdline = xyes)
+
+
# Solaris-specific check determining default platform for the Valgrind launcher.
# Used in case the launcher cannot select platform by looking at the client
# image (for example because the executable is a shell script).
@@ -3346,6 +3363,7 @@
else
AM_CONDITIONAL(SOLARIS_SUN_STUDIO_AS, false)
AM_CONDITIONAL(SOLARIS_XPG_SYMBOLS_PRESENT, false)
+AM_CONDITIONAL(SOLARIS_PROC_CMDLINE, false)
AM_CONDITIONAL(SOLARIS_OLD_SYSCALLS, false)
AM_CONDITIONAL(SOLARIS_LWP_SIGQUEUE_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_LWP_SIGQUEUE_SYSCALL_TAKES_PID, false)
Modified: trunk/coregrind/m_main.c
==============================================================================
--- trunk/coregrind/m_main.c (original)
+++ trunk/coregrind/m_main.c Fri Aug 14 21:50:11 2015
@@ -1983,8 +1983,8 @@
HChar buf2[VG_(mkstemp_fullname_bufsz)(sizeof buf - 1)];
Int fd, r;
-#if defined(VGO_linux)
- /* Fake /proc/<pid>/cmdline only on Linux. */
+#if defined(VGO_linux) || defined(SOLARIS_PROC_CMDLINE)
+ /* Fake /proc/<pid>/cmdline only on Linux and Solaris if supported. */
HChar nul[1];
const HChar* exename;
@@ -2007,8 +2007,8 @@
}
/* Don't bother to seek the file back to the start; instead do
- it every time a copy of it is given out (by PRE(sys_open)).
- That is probably more robust across fork() etc. */
+ it every time a copy of it is given out (by PRE(sys_open) or
+ PRE(sys_openat)). That is probably more robust across fork() etc. */
/* Now delete it, but hang on to the fd. */
r = VG_(unlink)( buf2 );
@@ -2016,7 +2016,7 @@
VG_(err_config_error)("Can't delete client cmdline file in %s\n", buf2);
VG_(cl_cmdline_fd) = fd;
-#endif // defined(VGO_linux)
+#endif // defined(VGO_linux) || defined(SOLARIS_PROC_CMDLINE)
/* Fake /proc/<pid>/auxv on both Linux and Solaris. */
VG_(debugLog)(1, "main", "Create fake /proc/<pid>/auxv\n");
Modified: trunk/coregrind/m_syswrap/syswrap-solaris.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-solaris.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-solaris.c Fri Aug 14 21:50:11 2015
@@ -1590,7 +1590,7 @@
if (!VG_STREQ(filename, name) && !VG_STREQ(filename, "/proc/self/psinfo"))
return False;
- /* use original arguments to open or openat */
+ /* Use original arguments to open() or openat(). */
SysRes sres;
#if defined(SOLARIS_OLD_SYSCALLS)
if (use_openat)
@@ -1650,6 +1650,35 @@
return True;
}
+#if defined(SOLARIS_PROC_CMDLINE)
+/* Handles the case where the open is of /proc/self/cmdline or
+ /proc/<pid>/cmdline. Just give it a copy of VG_(cl_cmdline_fd) for the
+ fake file we cooked up at startup (in m_main). Also, seek the
+ cloned fd back to the start. */
+static Bool handle_cmdline_open(SyscallStatus *status, const HChar *filename)
+{
+ if (!ML_(safe_to_deref)((const void *) filename, 1))
+ return False;
+
+ HChar name[VKI_PATH_MAX]; // large enough
+ VG_(sprintf)(name, "/proc/%d/cmdline", VG_(getpid)());
+
+ if (!VG_STREQ(filename, name) && !VG_STREQ(filename, "/proc/self/cmdline"))
+ return False;
+
+ SysRes sres = VG_(dup)(VG_(cl_cmdline_fd));
+ SET_STATUS_from_SysRes(sres);
+ if (!sr_isError(sres)) {
+ OffT off = VG_(lseek)(sr_Res(sres), 0, VKI_SEEK_SET);
+ if (off < 0)
+ SET_STATUS_Failure(VKI_EMFILE);
+ }
+
+ return True;
+}
+#endif /* SOLARIS_PROC_CMDLINE */
+
+
#if defined(SOLARIS_OLD_SYSCALLS)
PRE(sys_open)
{
@@ -3820,13 +3849,18 @@
return;
}
- if (ML_(handle_auxv_open)(status, (const HChar*)ARG2, ARG3))
+ if (ML_(handle_auxv_open)(status, (const HChar *) ARG2, ARG3))
return;
- if (handle_psinfo_open(status, True /*use_openat*/, (const HChar*)ARG2,
+ if (handle_psinfo_open(status, True /*use_openat*/, (const HChar *) ARG2,
fd, ARG3, ARG4))
return;
+#if defined(SOLARIS_PROC_CMDLINE)
+ if (handle_cmdline_open(status, (const HChar *) ARG2))
+ return;
+#endif /* SOLARIS_PROC_CMDLINE */
+
*flags |= SfMayBlock;
}
@@ -7820,7 +7854,7 @@
"entity_name->rpr_answertype)", r->rpr_answertype);
}
break;
- #if (SOLARIS_REPCACHE_PROTOCOL_VERSION >= 25)
+#if (SOLARIS_REPCACHE_PROTOCOL_VERSION >= 25)
case VKI_REP_PROTOCOL_ENTITY_GET_ROOT:
{
struct vki_rep_protocol_entity_root *r =
@@ -7831,7 +7865,7 @@
"entity_root->rpr_outid)", r->rpr_outid);
}
break;
- #endif /* SOLARIS_REPCACHE_PROTOCOL_VERSION >= 25 */
+#endif /* SOLARIS_REPCACHE_PROTOCOL_VERSION >= 25 */
case VKI_REP_PROTOCOL_ENTITY_GET:
{
struct vki_rep_protocol_entity_get *r =
Modified: trunk/none/tests/procfs-non-linux.vgtest
==============================================================================
--- trunk/none/tests/procfs-non-linux.vgtest (original)
+++ trunk/none/tests/procfs-non-linux.vgtest Fri Aug 14 21:50:11 2015
@@ -1,3 +1,6 @@
-prereq: [ $(uname) != Linux ]
+# For Linux, there is 'procfs-linux'.
+# For Solaris, there is Solaris-specific 'solaris/proc-cmdline-exe'.
+#
+prereq: ! ../../tests/os_test linux && ! ../../tests/os_test solaris
prog: procfs-cmdline-exe
stderr_filter: filter_stderr
Modified: trunk/none/tests/solaris/Makefile.am
==============================================================================
--- trunk/none/tests/solaris/Makefile.am (original)
+++ trunk/none/tests/solaris/Makefile.am Fri Aug 14 21:50:11 2015
@@ -18,6 +18,8 @@
proc_aout.stderr.exp proc_aout.stdout.exp proc_aout.vgtest \
proc_auxv.stderr.exp proc_auxv.stdout.exp proc_auxv.vgtest \
proc_auxv_multiple.stderr.exp proc_auxv_multiple.stdout.exp proc_auxv_multiple.vgtest \
+ proc-cmdline-exe.stderr.exp-with-cmdline proc-cmdline-exe.stderr.exp-without-cmdline \
+ proc-cmdline-exe.vgtest \
proc_psinfo.stderr.exp proc_psinfo.stdout.exp proc_psinfo.vgtest \
posix_spawn.stderr.exp posix_spawn.stdout.exp posix_spawn.vgtest \
pthread-stack.stderr.exp pthread-stack.vgtest \
Added: trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-with-cmdline
==============================================================================
--- trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-with-cmdline (added)
+++ trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-with-cmdline Fri Aug 14 21:50:11 2015
@@ -0,0 +1,10 @@
+
+/proc/self/cmdline:
+./../procfs-cmdline-exe\0arg1\0arg 2\0arg3\0
+/proc/<pid>/cmdline:
+./../procfs-cmdline-exe\0arg1\0arg 2\0arg3\0
+readlink: No such file or directory
+readlink: No such file or directory
+readlinkat: No such file or directory
+readlinkat: No such file or directory
+
Added: trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-without-cmdline
==============================================================================
--- trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-without-cmdline (added)
+++ trunk/none/tests/solaris/proc-cmdline-exe.stderr.exp-without-cmdline Fri Aug 14 21:50:11 2015
@@ -0,0 +1,10 @@
+
+/proc/self/cmdline:
+open(): No such file or directory
+/proc/<pid>/cmdline:
+open(): No such file or directory
+readlink: No such file or directory
+readlink: No such file or directory
+readlinkat: No such file or directory
+readlinkat: No such file or directory
+
Added: trunk/none/tests/solaris/proc-cmdline-exe.vgtest
==============================================================================
--- trunk/none/tests/solaris/proc-cmdline-exe.vgtest (added)
+++ trunk/none/tests/solaris/proc-cmdline-exe.vgtest Fri Aug 14 21:50:11 2015
@@ -0,0 +1,3 @@
+prog: ../procfs-cmdline-exe
+args: arg1 "arg 2" arg3
+stderr_filter: filter_stderr
|
|
From: Ivo R. <ivo...@gm...> - 2015-08-14 17:17:02
|
2015-08-13 11:55 GMT+02:00 Julian Seward <js...@ac...>: > On 13/08/15 08:23, Ivo Raisr wrote: > > However I see the following failure: > > perl tests/vg_regtest none/tests/amd64/xacq_xrel > > I'm not sure why that would have failed as a result of this change. > But anyway. Looking at that test, I think the inline assembly has > always been wrong. It mentions rdx twice but doesn't mention rbx at > all; it should mention each exactly once. > > Can you try the diff below and see if you get the same results > natively and on V ? In both cases I now get (on Linux) > > result for 'cmpxchg8b' is 55667788bbaa9988 > Thank you for providing a fix for this test case. Indeed, it is not caused by the recent change in AVX xsave/xrstor. Now the test case passes successfully. I. |
|
From: <sv...@va...> - 2015-08-14 09:02:55
|
Author: sewardj
Date: Fri Aug 14 10:02:46 2015
New Revision: 15544
Log:
Bug 348345 - Assertion fails for negative lineno
(in ML_(addLineInfo))
Patch from Jim Garrison (ji...@ga...)
Modified:
trunk/coregrind/m_debuginfo/storage.c
Modified: trunk/coregrind/m_debuginfo/storage.c
==============================================================================
--- trunk/coregrind/m_debuginfo/storage.c (original)
+++ trunk/coregrind/m_debuginfo/storage.c Fri Aug 14 10:02:46 2015
@@ -537,7 +537,18 @@
return;
}
- vg_assert(lineno >= 0);
+ if (lineno < 0) {
+ static Bool complained = False;
+ if (!complained) {
+ complained = True;
+ VG_(message)(Vg_UserMsg,
+ "warning: ignoring line info entry with "
+ "negative line number (%d)\n", lineno);
+ VG_(message)(Vg_UserMsg,
+ "(Nb: this message is only shown once)\n");
+ }
+ return;
+ }
if (lineno > MAX_LINENO) {
static Bool complained = False;
if (!complained) {
|
|
From: <sv...@va...> - 2015-08-14 08:29:56
|
Author: sewardj
Date: Fri Aug 14 09:29:49 2015
New Revision: 15543
Log:
Update.
Modified:
trunk/NEWS
trunk/docs/internals/3_10_BUGSTATUS.txt
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Aug 14 09:29:49 2015
@@ -154,6 +154,7 @@
339288 support Cavium Octeon MIPS specific BBIT*32 instructions
339442 Fix testsuite build failure on OS X 10.9
339542 Enable compilation with Intel's ICC compiler
+339563 The DVB demux DMX_STOP ioctl doesn't have a wrapper
339636 Use fxsave64 and fxrstor64 mnemonics instead of old-school rex64 prefix
339688 Mac-specific ASM does not support .version directive (cpuid,
tronical and pushfpopf tests)
@@ -162,6 +163,7 @@
339780 Fix known uninitialised read in pthread_rwlock_init() on Mac OS X 10.9
339789 Fix none/tests/execve test on Mac OS X 10.9
339808 Fix none/tests/rlimit64_nofile test on Mac OS X 10.9
+339820 vex amd64->IR: 0x66 0xF 0x3A 0x63 0xA 0x42 0x74 0x9 (pcmpistri $0x42)
340115 Fix none/tests/cmdline[1|2] tests on systems which define TMPDIR
340430 Fix some grammatical weirdness in the manual.
341238 Recognize GCC5/DWARFv5 DW_LANG constants (Go, C11, C++11, C++14)
@@ -237,6 +239,7 @@
345079 Fix build problems in VEX/useful/test_main.c
345126 Incorrect handling of VIDIOC_G_AUDIO and G_AUDOUT
345215 Performance improvements for the register allocator
+345338 TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux
345394 Fix memcheck/tests/strchr on OS X
345637 Fix memcheck/tests/sendmsg on OS X
345695 Add POWERPC support for AT_DCACHESIZE and HWCAP2
@@ -272,10 +275,12 @@
348247 jno jumps wrongly when overflow is not set
348269 Improve mmap MAP_HUGETLB support.
348565 Fix detection of command line option availability for clang
+348574 vex amd64->IR pcmpistri SSE4.2 unsupported (pcmpistri $0x18)
348728 Fix broken check for VIDIOC_G_ENC_INDEX
348748 Fix redundant condition
348890 Fix clang warning about unsupported --param inline-unit-growth=900
348949 Bogus "ERROR: --ignore-ranges: suspiciously large range"
+349034 Add Lustre ioctls LL_IOC_GROUP_LOCK and LL_IOC_GROUP_UNLOCK
349086 Fix UNKNOWN task message [id 3406, to mach_task_self(),
reply 0x........] (task_set_info)
349087 Fix UNKNOWN task message [id 3410, to mach_task_self(),
Modified: trunk/docs/internals/3_10_BUGSTATUS.txt
==============================================================================
--- trunk/docs/internals/3_10_BUGSTATUS.txt (original)
+++ trunk/docs/internals/3_10_BUGSTATUS.txt Fri Aug 14 09:29:49 2015
@@ -5,23 +5,17 @@
=== VEX/amd64 ==========================================================
339596 vex amd64->IR: 0x8F 0xE8 0x78 0xCD 0xC1 0x4 0xC5 0xF9
- XOP/FMA -- should take
-
-339820 vex amd64->IR: 0x66 0xF 0x3A 0x63 0xA 0x42 0x74 0x9
- (pcmpistrix $0x42, (%rdx), %xmm1)
- Should fix. Reported against 3.8.1 -- still valid?
+ XOP/FMA -- should take, but not before 3.11 release
340469 vex amd64->IR: unhandled instruction bytes: 0x66 0xA7
Not clear what's going on here
+ Probably legit, but low impact (few users)
342988 INT 80 not recognised on amd64
+ Probably legit, but low impact (few users)
-347885 unhandled instruction bytes: 0xD6 0xF 0x84 0x1B (SALC amd64)
-
-348574 vex amd64->IR pcmpistri SSE4.2 instruction is unsupported
-
-349304 vex amd64->IR: 0xF 0x33 0x89 0x45 0xFC 0x89 0x55 0xF8
- rdpmc?
+349304 vex amd64->IR: 0xF 0x33 0x89 0x45 0xFC 0x89 0x55 0xF8 (rdpmc)
+ Is going to be difficult to do
=== VEX/arm ============================================================
@@ -115,45 +109,42 @@
=== Syscalls/ioctls ====================================================
339424 Full support of KVM ioctl
- In progress -- maybe can be closed?
-
-339563 The DVB demux DMX_STOP ioctl doesn't have a wrapper
- has patch
+ In progress -- maybe can be closed? QUERIED
341537 POST(sys_io_getevents) shouldn't check iocb or iovec
- unclear whether really valid or not
+ Hard to fix (inter-syscall dependencies)
-342009 Error with valgrind on setcap file on 32bits (only) system
- == 335143
+335143 Capabilities not supported
+ == 342009
possibly unfixable
342040 Valgrind mishandles clone with CLONE_VFORK | CLONE_VM that clones
to a different stack
+ Nothing happened so far
342809 mremap fails when protection is enabled
+ Possibly to do with huge pages (is it == 348269 ?)
343099 Linux setns syscall wrapper missing, unhandled syscall: 308
HAS PATCH. Check that mayBlock is enabled.
-344886 V should not try to extend a sigaltstack
-
345077 linux syscall execveat support (linux 3.19)
-
-345338 TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux
- has patch
+ QUERIED -- how critical is it?
345414 WARNING: unhandled syscall: 317 (sys_seccomp)
+ Requires investigation
348616 Wine/valgrind: Warning: noted but unhandled ioctl 0x5390 with
no size/direction hints. (DVD_READ_STRUCT)
-
-349034 Add Lustre ioctls LL_IOC_GROUP_LOCK and LL_IOC_GROUP_UNLOCK
+ (from AustinE)
349952 Valgrind terminates process upon a call to remap_file_pages
350228 Unhandled ioctl 0x6458 (i965/mesa)
+ (from AustinE)
351029 factor our m_sigframe functions
+ (wishlist)
=== Debuginfo reader ===================================================
@@ -399,9 +390,6 @@
349790 Clean up of the hardware capability checking utilities.
-350321 3 (gdbserver) stdoutB failures, 8 stderr failures during `make regtest`
- Very likely INVALID
-
350491 Handling of nested scripts
Bizarre
|
|
From: <sv...@va...> - 2015-08-14 08:17:44
|
Author: sewardj
Date: Fri Aug 14 09:17:37 2015
New Revision: 15542
Log:
345338 - TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux
Patch from Martin Ling (mar...@ea...)
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-amd64-linux.h
trunk/include/vki/vki-arm-linux.h
trunk/include/vki/vki-arm64-linux.h
trunk/include/vki/vki-linux.h
trunk/include/vki/vki-ppc32-linux.h
trunk/include/vki/vki-ppc64-linux.h
trunk/include/vki/vki-s390x-linux.h
trunk/include/vki/vki-x86-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Fri Aug 14 09:17:37 2015
@@ -8354,6 +8354,18 @@
break;
}
+ /* Serial */
+ case VKI_TIOCGSERIAL: {
+ struct vki_serial_struct *data = (struct vki_serial_struct *)ARG3;
+ PRE_MEM_WRITE("ioctl(VKI_TIOCGSERIAL)", (Addr)data, sizeof(*data));
+ break;
+ }
+ case VKI_TIOCSSERIAL: {
+ struct vki_serial_struct *data = (struct vki_serial_struct *)ARG3;
+ PRE_MEM_READ("ioctl(VKI_TIOCSSERIAL)", (Addr)data, sizeof(*data));
+ break;
+ }
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
@@ -10239,6 +10251,15 @@
case VKI_MEDIA_IOC_SETUP_LINK:
break;
+ /* Serial */
+ case VKI_TIOCGSERIAL: {
+ struct vki_serial_struct *data = (struct vki_serial_struct *)ARG3;
+ POST_MEM_WRITE((Addr)data, sizeof(*data));
+ break;
+ }
+ case VKI_TIOCSSERIAL:
+ break;
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
Modified: trunk/include/vki/vki-amd64-linux.h
==============================================================================
--- trunk/include/vki/vki-amd64-linux.h (original)
+++ trunk/include/vki/vki-amd64-linux.h Fri Aug 14 09:17:37 2015
@@ -691,6 +691,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-arm-linux.h
==============================================================================
--- trunk/include/vki/vki-arm-linux.h (original)
+++ trunk/include/vki/vki-arm-linux.h Fri Aug 14 09:17:37 2015
@@ -901,6 +901,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-arm64-linux.h
==============================================================================
--- trunk/include/vki/vki-arm64-linux.h (original)
+++ trunk/include/vki/vki-arm64-linux.h Fri Aug 14 09:17:37 2015
@@ -684,6 +684,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Fri Aug 14 09:17:37 2015
@@ -4666,6 +4666,31 @@
//----------------------------------------------------------------------
#define VKI_BINPRM_BUF_SIZE 128
+//----------------------------------------------------------------------
+// From linux-3.19.0/include/linux/serial.h
+//----------------------------------------------------------------------
+
+struct vki_serial_struct {
+ int type;
+ int line;
+ unsigned int port;
+ int irq;
+ int flags;
+ int xmit_fifo_size;
+ int custom_divisor;
+ int baud_base;
+ unsigned short close_delay;
+ char io_type;
+ char reserved_char[1];
+ int hub6;
+ unsigned short closing_wait; /* time to wait before closing */
+ unsigned short closing_wait2; /* no longer used... */
+ unsigned char *iomem_base;
+ unsigned short iomem_reg_shift;
+ unsigned int port_high;
+ unsigned long iomap_base; /* cookie passed into ioremap */
+};
+
#endif // __VKI_LINUX_H
/*--------------------------------------------------------------------*/
Modified: trunk/include/vki/vki-ppc32-linux.h
==============================================================================
--- trunk/include/vki/vki-ppc32-linux.h (original)
+++ trunk/include/vki/vki-ppc32-linux.h Fri Aug 14 09:17:37 2015
@@ -626,8 +626,8 @@
//#define VKI_TIOCSSOFTCAR 0x541A
#define VKI_TIOCLINUX 0x541C
//#define VKI_TIOCCONS 0x541D
-//#define VKI_TIOCGSERIAL 0x541E
-//#define VKI_TIOCSSERIAL 0x541F
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
//#define VKI_TIOCPKT 0x5420
//# define VKI_TIOCPKT_DATA 0
//# define VKI_TIOCPKT_FLUSHREAD 1
Modified: trunk/include/vki/vki-ppc64-linux.h
==============================================================================
--- trunk/include/vki/vki-ppc64-linux.h (original)
+++ trunk/include/vki/vki-ppc64-linux.h Fri Aug 14 09:17:37 2015
@@ -795,6 +795,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/arch/powerpc/include/uapi/asm/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// end
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-s390x-linux.h
==============================================================================
--- trunk/include/vki/vki-s390x-linux.h (original)
+++ trunk/include/vki/vki-s390x-linux.h Fri Aug 14 09:17:37 2015
@@ -976,6 +976,13 @@
#define VKI_ENOSYS 38 /* Function not implemented */
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
+//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
#endif // __VKI_S390X_LINUX_H
/*--------------------------------------------------------------------*/
Modified: trunk/include/vki/vki-x86-linux.h
==============================================================================
--- trunk/include/vki/vki-x86-linux.h (original)
+++ trunk/include/vki/vki-x86-linux.h Fri Aug 14 09:17:37 2015
@@ -907,6 +907,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
|
|
From: <sv...@va...> - 2015-08-14 08:05:44
|
Author: sewardj
Date: Fri Aug 14 09:05:35 2015
New Revision: 15541
Log:
Bug 349034 - Add Lustre ioctls LL_IOC_GROUP_LOCK and LL_IOC_GROUP_UNLOCK
Patch from Frank Zago (fz...@cr...)
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Fri Aug 14 09:05:35 2015
@@ -5550,6 +5550,10 @@
/* InfiniBand */
case VKI_IB_USER_MAD_ENABLE_PKEY:
+ /* Lustre */
+ case VKI_LL_IOC_GROUP_LOCK:
+ case VKI_LL_IOC_GROUP_UNLOCK:
+
/* V4L2 */
case VKI_V4L2_LOG_STATUS:
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Fri Aug 14 09:05:35 2015
@@ -3692,6 +3692,10 @@
//----------------------------------------------------------------------
// From Lustre's lustre/include/lustre/lustre_user.h
//----------------------------------------------------------------------
+#define VKI_LL_IOC_GROUP_LOCK \
+ _VKI_IOW('f', 158, long)
+#define VKI_LL_IOC_GROUP_UNLOCK \
+ _VKI_IOW('f', 159, long)
#define VKI_LL_IOC_GETPARENT \
_VKI_IOWR('f', 249, struct vki_getparent)
|
Author: philippe
Date: Thu Aug 13 23:49:32 2015
New Revision: 15540
Log:
Fix 350202 - Add limited param to 'monitor block_list'
Modified:
trunk/NEWS
trunk/docs/internals/3_10_BUGSTATUS.txt
trunk/gdbserver_tests/mchelp.stdoutB.exp
trunk/memcheck/docs/mc-manual.xml
trunk/memcheck/mc_include.h
trunk/memcheck/mc_leakcheck.c
trunk/memcheck/mc_main.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Thu Aug 13 23:49:32 2015
@@ -20,6 +20,9 @@
get_vbits (in particular on little endian computers) when you need to
associate byte data value with their corresponding validity bits.
+ - The 'block_list' monitor command now accepts an optional argument
+ 'limited <max_blocks>' to control the nr of block addresses printed.
+
* Massif:
- New monitor command 'all_snapshots <filename>' that dumps all snapshots
taken so far.
@@ -282,6 +285,7 @@
349874 Fix typos in source code
349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so)
349941 di_notify_mmap might create wrong start/size DebugInfoMapping
+350202 Add limited param to 'monitor block_list'
350809 Fix none/tests/async-sigs for Solaris
350811 Remove reference to --db-attach which has been removed.
350813 Use handwritten memcheck assembly helpers on x86/Solaris in addition to {arm,x86}-linux
Modified: trunk/docs/internals/3_10_BUGSTATUS.txt
==============================================================================
--- trunk/docs/internals/3_10_BUGSTATUS.txt (original)
+++ trunk/docs/internals/3_10_BUGSTATUS.txt Thu Aug 13 23:49:32 2015
@@ -364,8 +364,6 @@
348358 describe should show info about main stack guard page
-350202 Add limited param to 'monitor block_list'
-
=== Output =============================================================
339405 Adds ability to invoke a script in order to determine a
Modified: trunk/gdbserver_tests/mchelp.stdoutB.exp
==============================================================================
--- trunk/gdbserver_tests/mchelp.stdoutB.exp (original)
+++ trunk/gdbserver_tests/mchelp.stdoutB.exp Thu Aug 13 23:49:32 2015
@@ -41,8 +41,9 @@
leak_check summary any
leak_check full kinds indirect,possible
leak_check full reachable any limited 100
- block_list <loss_record_nr>
+ block_list <loss_record_nr> [unlimited*|limited <max_blocks>]
after a leak search, shows the list of blocks of <loss_record_nr>
+ * = defaults
who_points_at <addr> [<len>]
shows places pointing inside <len> (default 1) bytes at <addr>
(with len 1, only shows "start pointers" pointing exactly to <addr>,
@@ -105,8 +106,9 @@
leak_check summary any
leak_check full kinds indirect,possible
leak_check full reachable any limited 100
- block_list <loss_record_nr>
+ block_list <loss_record_nr> [unlimited*|limited <max_blocks>]
after a leak search, shows the list of blocks of <loss_record_nr>
+ * = defaults
who_points_at <addr> [<len>]
shows places pointing inside <len> (default 1) bytes at <addr>
(with len 1, only shows "start pointers" pointing exactly to <addr>,
Modified: trunk/memcheck/docs/mc-manual.xml
==============================================================================
--- trunk/memcheck/docs/mc-manual.xml (original)
+++ trunk/memcheck/docs/mc-manual.xml Thu Aug 13 23:49:32 2015
@@ -1886,8 +1886,12 @@
</listitem>
<listitem>
- <para><varname>block_list <loss_record_nr> </varname>
- shows the list of blocks belonging to <loss_record_nr>.
+ <para><varname>block_list <loss_record_nr>
+ [unlimited*|limited <max_blocks>]</varname>
+ shows the list of blocks belonging to <loss_record_nr>.
+ The nr of blocks to print can be controlled using the
+ <varname>limited</varname> argument followed by the maximum nr
+ of blocks to output.
</para>
<para> A leak search merges the allocated blocks in loss records :
Modified: trunk/memcheck/mc_include.h
==============================================================================
--- trunk/memcheck/mc_include.h (original)
+++ trunk/memcheck/mc_include.h Thu Aug 13 23:49:32 2015
@@ -461,9 +461,10 @@
extern LeakCheckDeltaMode MC_(detect_memory_leaks_last_delta_mode);
// prints the list of blocks corresponding to the given loss_record_nr.
+// (up to maximum max_blocks)
// Returns True if loss_record_nr identifies a correct loss record from last
// leak search, returns False otherwise.
-Bool MC_(print_block_list) ( UInt loss_record_nr);
+Bool MC_(print_block_list) ( UInt loss_record_nr, UInt max_blocks);
// Prints the addresses/registers/... at which a pointer to
// the given range [address, address+szB[ is found.
Modified: trunk/memcheck/mc_leakcheck.c
==============================================================================
--- trunk/memcheck/mc_leakcheck.c (original)
+++ trunk/memcheck/mc_leakcheck.c Thu Aug 13 23:49:32 2015
@@ -1507,14 +1507,15 @@
}
// print recursively all indirectly leaked blocks collected in clique.
-static void print_clique (Int clique, UInt level)
+// Printing stops when *remaining reaches 0.
+static void print_clique (Int clique, UInt level, UInt *remaining)
{
Int ind;
UInt i, n_lossrecords;
n_lossrecords = VG_(OSetGen_Size)(lr_table);
- for (ind = 0; ind < lc_n_chunks; ind++) {
+ for (ind = 0; ind < lc_n_chunks && *remaining > 0; ind++) {
LC_Extra* ind_ex = &(lc_extras)[ind];
if (ind_ex->state == IndirectLeak
&& ind_ex->IorC.clique == (SizeT) clique) {
@@ -1533,19 +1534,21 @@
VG_(umsg)("%p[%lu] indirect loss record %u\n",
(void *)ind_ch->data, (SizeT)ind_ch->szB,
lr_i+1); // lr_i+1 for user numbering.
+ (*remaining)--;
if (lr_i >= n_lossrecords)
VG_(umsg)
("error: no indirect loss record found for %p[%lu]?????\n",
(void *)ind_ch->data, (SizeT)ind_ch->szB);
- print_clique(ind, level+1);
+ print_clique(ind, level+1, remaining);
}
}
}
-Bool MC_(print_block_list) ( UInt loss_record_nr)
+Bool MC_(print_block_list) ( UInt loss_record_nr, UInt max_blocks)
{
UInt i, n_lossrecords;
LossRecord* lr;
+ UInt remaining = max_blocks;
if (lr_table == NULL || lc_chunks == NULL || lc_extras == NULL) {
VG_(umsg)("Can't print block list : no valid leak search result\n");
@@ -1569,7 +1572,7 @@
MC_(pp_LossRecord)(loss_record_nr+1, n_lossrecords, lr);
// Match the chunks with loss records.
- for (i = 0; i < lc_n_chunks; i++) {
+ for (i = 0; i < lc_n_chunks && remaining > 0; i++) {
MC_Chunk* ch = lc_chunks[i];
LC_Extra* ex = &(lc_extras)[i];
LossRecord* old_lr;
@@ -1584,6 +1587,7 @@
if (old_lr == lr_array[loss_record_nr]) {
VG_(umsg)("%p[%lu]\n",
(void *)ch->data, (SizeT)ch->szB);
+ remaining--;
if (ex->state != Reachable) {
// We can print the clique in all states, except Reachable.
// In Unreached state, lc_chunk[i] is the clique leader.
@@ -1591,7 +1595,7 @@
// which was later collected in another clique.
// For Possible, lc_chunk[i] might be the top of a clique
// or an intermediate clique.
- print_clique(i, 1);
+ print_clique(i, 1, &remaining);
}
}
} else {
Modified: trunk/memcheck/mc_main.c
==============================================================================
--- trunk/memcheck/mc_main.c (original)
+++ trunk/memcheck/mc_main.c Thu Aug 13 23:49:32 2015
@@ -6038,8 +6038,9 @@
" leak_check summary any\n"
" leak_check full kinds indirect,possible\n"
" leak_check full reachable any limited 100\n"
-" block_list <loss_record_nr>\n"
+" block_list <loss_record_nr> [unlimited*|limited <max_blocks>]\n"
" after a leak search, shows the list of blocks of <loss_record_nr>\n"
+" * = defaults\n"
" who_points_at <addr> [<len>]\n"
" shows places pointing inside <len> (default 1) bytes at <addr>\n"
" (with len 1, only shows \"start pointers\" pointing exactly to <addr>,\n"
@@ -6322,16 +6323,53 @@
case 5: { /* block_list */
HChar* wl;
HChar *endptr;
+ HChar *the_end;
UInt lr_nr = 0;
+
wl = VG_(strtok_r) (NULL, " ", &ssaveptr);
if (wl != NULL)
lr_nr = VG_(strtoull10) (wl, &endptr);
if (wl == NULL || *endptr != '\0') {
VG_(gdb_printf) ("malformed or missing integer\n");
} else {
+ UInt limit_blocks;
+ Int int_value;
+
+ wl = VG_(strtok_r) (NULL, " ", &ssaveptr);
+ if (wl != NULL) {
+ switch (VG_(keyword_id) ("unlimited limited ",
+ wl, kwd_report_all)) {
+ case -2: return True;
+ case -1: return True;
+ case 0: /* unlimited */
+ limit_blocks = 999999999; break;
+ case 1: /* limited */
+ wcmd = VG_(strtok_r) (NULL, " ", &ssaveptr);
+ if (wcmd == NULL) {
+ VG_(gdb_printf) ("missing integer value\n");
+ return True;
+ }
+ int_value = VG_(strtoll10) (wcmd, &the_end);
+ if (*the_end != '\0') {
+ VG_(gdb_printf) ("malformed integer value\n");
+ return True;
+ }
+ if (int_value <= 0) {
+ VG_(gdb_printf) ("max_blocks must be >= 1,"
+ " got %d\n", int_value);
+ return True;
+ }
+ limit_blocks = (UInt) int_value;
+ break;
+ default:
+ tl_assert (0);
+ }
+ } else {
+ limit_blocks = 999999999;
+ }
/* lr_nr-1 as what is shown to the user is 1 more than the index
in lr_array. */
- if (lr_nr == 0 || ! MC_(print_block_list) (lr_nr-1))
+ if (lr_nr == 0 || ! MC_(print_block_list) (lr_nr-1, limit_blocks))
VG_(gdb_printf) ("invalid loss record nr\n");
}
return True;
|