You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(17) |
2
(10) |
3
(5) |
|
4
(12) |
5
(12) |
6
(15) |
7
(17) |
8
(13) |
9
(18) |
10
(10) |
|
11
|
12
(2) |
13
(20) |
14
(16) |
15
(17) |
16
(19) |
17
(17) |
|
18
(14) |
19
(12) |
20
|
21
(5) |
22
(12) |
23
(10) |
24
(1) |
|
25
|
26
(2) |
27
|
28
(2) |
29
|
30
(1) |
31
(2) |
|
From: <sv...@va...> - 2014-05-06 21:54:17
|
Author: philippe
Date: Tue May 6 21:54:09 2014
New Revision: 13939
Log:
Fix two warnings of unusued variable or variable set but not used
Modified:
trunk/helgrind/hg_addrdescr.c
trunk/helgrind/hg_main.c
Modified: trunk/helgrind/hg_addrdescr.c
==============================================================================
--- trunk/helgrind/hg_addrdescr.c (original)
+++ trunk/helgrind/hg_addrdescr.c Tue May 6 21:54:09 2014
@@ -145,10 +145,9 @@
static void void_printf(const HChar *format, ...)
{
- UInt ret;
va_list vargs;
va_start(vargs, format);
- ret = VG_(vprintf)(format, vargs);
+ VG_(vprintf)(format, vargs);
va_end(vargs);
}
Modified: trunk/helgrind/hg_main.c
==============================================================================
--- trunk/helgrind/hg_main.c (original)
+++ trunk/helgrind/hg_main.c Tue May 6 21:54:09 2014
@@ -4753,7 +4753,6 @@
/* return True if request recognised, False otherwise */
static Bool handle_gdb_monitor_command (ThreadId tid, HChar *req)
{
- UWord ret = 0;
HChar* wcmd;
HChar s[VG_(strlen(req))]; /* copy for strtok_r */
HChar *ssaveptr;
@@ -4776,7 +4775,6 @@
print_monitor_help();
return True;
case 1: /* info */
- ret = 1;
wcmd = VG_(strtok_r) (NULL, " ", &ssaveptr);
switch (kwdid = VG_(keyword_id)
("locks",
|
|
From: <sv...@va...> - 2014-05-06 20:16:07
|
Author: philippe
Date: Tue May 6 20:15:55 2014
New Revision: 13938
Log:
For the following c program:
main(int argc)
{
typedef
struct {
int before_name;
char name[argc];
int after_name;
}
namet;
namet n;
}
compiled with gcc 4.7.4, the trunk --read-var-info=yes gives:
parse_type_DIE: confused by:
<2><51>: DW_TAG_structure_type
DW_AT_decl_file : 1
DW_AT_decl_line : 4
DW_AT_sibling : <83>
This is because that dwarf entry defines a struct with no size.
This happens when the struct has a VLA array in the middle
of a struct. This is a C gcc extension, and is a standard
feature of Ada.
The proper solution would be to have the size calculated at runtime,
using the gnat extensions or dwarf entries (to be generated by
the compiler).
The patch fixes this problem by defining the size of such structure
as 1 byte.
Another approach tried was to put the max possible size.
This had the disadvantage that any address on the stack was seen
as belonging to this variable.
This allows the description to work for the 1st byte of the variable
but cannot properly describe the 2nd and following bytes :
(gdb) p &n
$9 = (namet *) 0xbefbc070
(gdb) mo c d 0xbefbc070
Address 0xBEFBC070 len 1 not defined:
Uninitialised value at 0xBEFBC070
==1396== Location 0xbefbc070 is 0 bytes inside n.before_name,
==1396== declared at crec.c:10, in frame #0 of thread 1
(gdb) mo c d 0xbefbc071
Address 0xBEFBC071 len 1 not defined:
Uninitialised value at 0xBEFBC071
==1396== Address 0xbefbc071 is on thread 1's stack
(gdb)
A possible refinement would be to use a huge size but have the
logic of variable description understanding this and describing
all between this var and hte next var on the stack as being
in the VLA variable.
In the meantime, the size 1 avoids --read-var-info=yes to fail.
Also, the 'goto bad_DIE' have been replaced by a macro
goto_bad_DIE that ensures the line nr at which the bad DIE has
been detected is reported in the error msg.
This makes it easier to understand what is the problem.
Modified:
trunk/NEWS
trunk/coregrind/m_debuginfo/readdwarf3.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Tue May 6 20:15:55 2014
@@ -44,6 +44,9 @@
by increasing the value.
See user manual for details.
+* Support for --read-var-info=yes has been improved
+ to handle Ada and C struct containing VLA.
+
* ==================== FIXED BUGS ====================
The following bugs have been fixed or resolved. Note that "n-i-bz"
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
==============================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c (original)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c Tue May 6 20:15:55 2014
@@ -1638,6 +1638,12 @@
/* We're done! The rest of it is not interesting. */
}
+__attribute__((noinline))
+static void bad_DIE_confusion(int linenr)
+{
+ VG_(printf)("\nparse_var_DIE(%d): confused by:\n", linenr);
+}
+#define goto_bad_DIE do {bad_DIE_confusion(__LINE__); goto bad_DIE;} while (0)
__attribute__((noinline))
static void parse_var_DIE (
@@ -1770,7 +1776,7 @@
} else {
if (0) VG_(printf)("I got hlo %d hhi1 %d hrange %d\n",
(Int)have_lo, (Int)have_hi1, (Int)have_range);
- goto bad_DIE;
+ goto_bad_DIE;
}
}
@@ -1856,7 +1862,7 @@
*/
/* Ignore (seems safe than pushing a single byte range) */
} else
- goto bad_DIE;
+ goto_bad_DIE;
}
if (dtag == DW_TAG_variable || dtag == DW_TAG_formal_parameter) {
@@ -1969,7 +1975,7 @@
"warning: parse_var_DIE: non-global variable "
"outside DW_TAG_subprogram\n");
}
- /* goto bad_DIE; */
+ /* goto_bad_DIE; */
/* This seems to happen a lot. Just ignore it -- if,
when we come to evaluation of the location (guarded)
expression, it requires a frame base value, and
@@ -2123,7 +2129,6 @@
bad_DIE:
set_position_of_Cursor( c_die, saved_die_c_offset );
set_position_of_Cursor( c_abbv, saved_abbv_c_offset );
- VG_(printf)("\nparse_var_DIE: confused by:\n");
posn = uncook_die( cc, posn, &debug_types_flag, &alt_flag );
VG_(printf)(" <%d><%lx>: %s", level, posn, ML_(pp_DW_TAG)( dtag ) );
if (debug_types_flag) {
@@ -2339,7 +2344,7 @@
if (attr != DW_AT_language)
continue;
if (cts.szB <= 0)
- goto bad_DIE;
+ goto_bad_DIE;
switch (cts.u.val) {
case DW_LANG_C89: case DW_LANG_C:
case DW_LANG_C_plus_plus: case DW_LANG_ObjC:
@@ -2359,7 +2364,7 @@
case DW_LANG_Mips_Assembler:
parser->language = '?'; break;
default:
- goto bad_DIE;
+ goto_bad_DIE;
}
}
}
@@ -2397,7 +2402,7 @@
case DW_ATE_complex_float:
typeE.Te.TyBase.enc = 'C'; break;
default:
- goto bad_DIE;
+ goto_bad_DIE;
}
}
}
@@ -2420,7 +2425,7 @@
&& typeE.Te.TyBase.enc != 'S'
&& typeE.Te.TyBase.enc != 'F'
&& typeE.Te.TyBase.enc != 'C'))
- goto bad_DIE;
+ goto_bad_DIE;
/* Last minute hack: if we see this
<1><515>: DW_TAG_base_type
DW_AT_byte_size : 0
@@ -2493,7 +2498,7 @@
}
/* Do we have something that looks sane? */
if (typeE.Te.TyPorR.szB != sizeof(UWord))
- goto bad_DIE;
+ goto_bad_DIE;
else
goto acquire_Type;
}
@@ -2545,7 +2550,7 @@
that will put such an enumeration_type into a .debug_types
unit which should only contain complete types.) */
&& (parser->language != 'A' && !is_decl)) {
- goto bad_DIE;
+ goto_bad_DIE;
}
/* On't stack! */
@@ -2604,13 +2609,13 @@
}
/* Do we have something that looks sane? */
if (atomE.Te.Atom.name == NULL)
- goto bad_DIE;
+ goto_bad_DIE;
/* Do we have a plausible parent? */
- if (typestack_is_empty(parser)) goto bad_DIE;
+ if (typestack_is_empty(parser)) goto_bad_DIE;
vg_assert(ML_(TyEnt__is_type)(&parser->qparentE[parser->sp]));
vg_assert(parser->qparentE[parser->sp].cuOff != D3_INVALID_CUOFF);
- if (level != parser->qlevel[parser->sp]+1) goto bad_DIE;
- if (parser->qparentE[parser->sp].tag != Te_TyEnum) goto bad_DIE;
+ if (level != parser->qlevel[parser->sp]+1) goto_bad_DIE;
+ if (parser->qparentE[parser->sp].tag != Te_TyEnum) goto_bad_DIE;
/* Record this child in the parent */
vg_assert(parser->qparentE[parser->sp].Te.TyEnum.atomRs);
VG_(addToXA)( parser->qparentE[parser->sp].Te.TyEnum.atomRs,
@@ -2693,16 +2698,25 @@
}
if ((!is_decl) /* && (!is_spec) */) {
/* this is the common, ordinary case */
- if ((!have_szB) /* we must know the size */
- /* But the name can be present, or not */)
- goto bad_DIE;
+ /* The name can be present, or not */
+ if (!have_szB) {
+ /* We must know the size.
+ But in Ada, record with discriminants might have no size.
+ But in C, VLA in the middle of a struct (gcc extension)
+ might have no size.
+ Instead, some GNAT dwarf extensions and/or dwarf entries
+ allow to calculate the struct size at runtime.
+ We cannot do that (yet?) so, the temporary kludge is to use
+ a small size. */
+ typeE.Te.TyStOrUn.szB = 1;
+ }
/* On't stack! */
typestack_push( cc, parser, td3, &typeE, level );
goto acquire_Type;
}
else {
/* don't know how to handle any other variants just now */
- goto bad_DIE;
+ goto_bad_DIE;
}
}
@@ -2747,11 +2761,11 @@
}
}
/* Do we have a plausible parent? */
- if (typestack_is_empty(parser)) goto bad_DIE;
+ if (typestack_is_empty(parser)) goto_bad_DIE;
vg_assert(ML_(TyEnt__is_type)(&parser->qparentE[parser->sp]));
vg_assert(parser->qparentE[parser->sp].cuOff != D3_INVALID_CUOFF);
- if (level != parser->qlevel[parser->sp]+1) goto bad_DIE;
- if (parser->qparentE[parser->sp].tag != Te_TyStOrUn) goto bad_DIE;
+ if (level != parser->qlevel[parser->sp]+1) goto_bad_DIE;
+ if (parser->qparentE[parser->sp].tag != Te_TyStOrUn) goto_bad_DIE;
/* Do we have something that looks sane? If this a member of a
struct, we must have a location expression; but if a member
of a union that is irrelevant (D3 spec sec 5.6.6). We ought
@@ -2766,7 +2780,7 @@
"<anon_field>" );
vg_assert(fieldE.Te.Field.name);
if (fieldE.Te.Field.typeR == D3_INVALID_CUOFF)
- goto bad_DIE;
+ goto_bad_DIE;
if (fieldE.Te.Field.nLoc) {
if (!parent_is_struct) {
/* If this is a union type, pretend we haven't seen the data
@@ -2813,7 +2827,7 @@
}
}
if (typeE.Te.TyArray.typeR == D3_INVALID_CUOFF)
- goto bad_DIE;
+ goto_bad_DIE;
/* On't stack! */
typestack_push( cc, parser, td3, &typeE, level );
goto acquire_Type;
@@ -2863,11 +2877,11 @@
(not being used to describe the bounds of a containing array
type) */
/* Do we have a plausible parent? */
- if (typestack_is_empty(parser)) goto bad_DIE;
+ if (typestack_is_empty(parser)) goto_bad_DIE;
vg_assert(ML_(TyEnt__is_type)(&parser->qparentE[parser->sp]));
vg_assert(parser->qparentE[parser->sp].cuOff != D3_INVALID_CUOFF);
- if (level != parser->qlevel[parser->sp]+1) goto bad_DIE;
- if (parser->qparentE[parser->sp].tag != Te_TyArray) goto bad_DIE;
+ if (level != parser->qlevel[parser->sp]+1) goto_bad_DIE;
+ if (parser->qparentE[parser->sp].tag != Te_TyArray) goto_bad_DIE;
/* Figure out if we have a definite range or not */
if (have_lower && have_upper && (!have_count)) {
@@ -2895,7 +2909,7 @@
boundE.Te.Bound.boundU = 0;
} else {
/* FIXME: handle more cases */
- goto bad_DIE;
+ goto_bad_DIE;
}
/* Record this bound in the parent */
@@ -2982,7 +2996,7 @@
if (have_ty == 1 || have_ty == 0)
goto acquire_Type;
else
- goto bad_DIE;
+ goto_bad_DIE;
}
/*
@@ -3051,7 +3065,6 @@
bad_DIE:
set_position_of_Cursor( c_die, saved_die_c_offset );
set_position_of_Cursor( c_abbv, saved_abbv_c_offset );
- VG_(printf)("\nparse_type_DIE: confused by:\n");
posn = uncook_die( cc, posn, &debug_types_flag, &alt_flag );
VG_(printf)(" <%d><%lx>: %s", level, posn, ML_(pp_DW_TAG)( dtag ) );
if (debug_types_flag) {
|
|
From: Carl E. L. <ce...@li...> - 2014-05-06 20:09:39
|
Julian: I created buzilla https://bugs.kde.org/show_bug.cgi?id=334384 for starting to push the Power PC LE support. This first patch touches about 41 files adding the needed #if defined(VGA_ppc64le) as needed to the files. It doesn't contain any additional functional changes. The functional changes are added in the second patch which touches an additional 30 or so files. I figured it was best to get the simple file changes out of the way first. Since the patch touches a lot of non ppc specific files, we are asking for some additional review of the patch. Hopefully it will be fairly easy and straight forward. Please let me know what you think of it. Thanks Carl Love |
|
From: <sv...@va...> - 2014-05-06 14:46:54
|
Author: sewardj
Date: Tue May 6 14:46:44 2014
New Revision: 13937
Log:
Fill in some SIMD integer test cases.
Modified:
trunk/none/tests/arm64/fp_and_simd.c
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 Tue May 6 14:46:44 2014
@@ -203,7 +203,8 @@
/* Generate a test that involves two vector regs,
- with no bias as towards which is input or output. */
+ with no bias as towards which is input or output.
+ It's OK to use x10 as scratch.*/
#define GEN_TWOVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO) \
__attribute__((noinline)) \
static void test_##TESTNAME ( LaneTy ty ) { \
@@ -221,7 +222,8 @@
INSN " ; " \
"str q"#VECREG1NO", [%0, #32] ; " \
"str q"#VECREG2NO", [%0, #48] ; " \
- : : "r"(&block[0]) : "memory", "v"#VECREG1NO, "v"#VECREG2NO \
+ : : "r"(&block[0]) \
+ : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "x10" \
); \
printf(INSN " "); \
showV128(&block[0]); printf(" "); \
@@ -1338,6 +1340,146 @@
GEN_TWOVEC_TEST(cmlt_zero_16b_16b, "cmlt v5.16b, v22.16b, #0", 5, 22)
GEN_TWOVEC_TEST(cmlt_zero_8b_8b, "cmlt v5.8b, v22.8b, #0", 5, 22)
+GEN_TWOVEC_TEST(abs_d_d, "abs d22, d23", 22, 23)
+GEN_TWOVEC_TEST(neg_d_d, "neg d22, d23", 22, 23)
+
+GEN_UNARY_TEST(abs, 2d, 2d)
+GEN_UNARY_TEST(abs, 4s, 4s)
+GEN_UNARY_TEST(abs, 2s, 2s)
+GEN_UNARY_TEST(abs, 8h, 8h)
+GEN_UNARY_TEST(abs, 4h, 4h)
+GEN_UNARY_TEST(abs, 16b, 16b)
+GEN_UNARY_TEST(abs, 8b, 8b)
+
+GEN_BINARY_TEST(addhn, 2s, 2d, 2d)
+GEN_BINARY_TEST(addhn2, 4s, 2d, 2d)
+GEN_BINARY_TEST(addhn, 4h, 4s, 4s)
+GEN_BINARY_TEST(addhn2, 8h, 4s, 4s)
+GEN_BINARY_TEST(addhn, 8b, 8h, 8h)
+GEN_BINARY_TEST(addhn2, 16b, 8h, 8h)
+GEN_BINARY_TEST(subhn, 2s, 2d, 2d)
+GEN_BINARY_TEST(subhn2, 4s, 2d, 2d)
+GEN_BINARY_TEST(subhn, 4h, 4s, 4s)
+GEN_BINARY_TEST(subhn2, 8h, 4s, 4s)
+GEN_BINARY_TEST(subhn, 8b, 8h, 8h)
+GEN_BINARY_TEST(subhn2, 16b, 8h, 8h)
+GEN_BINARY_TEST(raddhn, 2s, 2d, 2d)
+GEN_BINARY_TEST(raddhn2, 4s, 2d, 2d)
+GEN_BINARY_TEST(raddhn, 4h, 4s, 4s)
+GEN_BINARY_TEST(raddhn2, 8h, 4s, 4s)
+GEN_BINARY_TEST(raddhn, 8b, 8h, 8h)
+GEN_BINARY_TEST(raddhn2, 16b, 8h, 8h)
+GEN_BINARY_TEST(rsubhn, 2s, 2d, 2d)
+GEN_BINARY_TEST(rsubhn2, 4s, 2d, 2d)
+GEN_BINARY_TEST(rsubhn, 4h, 4s, 4s)
+GEN_BINARY_TEST(rsubhn2, 8h, 4s, 4s)
+GEN_BINARY_TEST(rsubhn, 8b, 8h, 8h)
+GEN_BINARY_TEST(rsubhn2, 16b, 8h, 8h)
+
+GEN_TWOVEC_TEST(addp_d_2d, "addp d22, v23.2d", 22, 23)
+
+GEN_BINARY_TEST(addp, 2d, 2d, 2d)
+GEN_BINARY_TEST(addp, 4s, 4s, 4s)
+GEN_BINARY_TEST(addp, 2s, 2s, 2s)
+GEN_BINARY_TEST(addp, 8h, 8h, 8h)
+GEN_BINARY_TEST(addp, 4h, 4h, 4h)
+GEN_BINARY_TEST(addp, 16b, 16b, 16b)
+GEN_BINARY_TEST(addp, 8b, 8b, 8b)
+
+GEN_TWOVEC_TEST(addv_s_4s, "addv s22, v23.4s", 22, 23)
+GEN_TWOVEC_TEST(addv_h_8h, "addv h22, v23.8h", 22, 23)
+GEN_TWOVEC_TEST(addv_h_4h, "addv h22, v23.4h", 22, 23)
+GEN_TWOVEC_TEST(addv_b_16b, "addv b22, v23.16b", 22, 23)
+GEN_TWOVEC_TEST(addv_b_8b, "addv b22, v23.8b", 22, 23)
+
+/* overkill -- don't need two vecs, only one */
+GEN_TWOVEC_TEST(orr_8h_0x5A_lsl0, "orr v22.8h, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(orr_8h_0xA5_lsl8, "orr v22.8h, #0xA5, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(orr_4h_0x5A_lsl0, "orr v22.4h, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(orr_4h_0xA5_lsl8, "orr v22.4h, #0xA5, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(orr_4s_0x5A_lsl0, "orr v22.4s, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(orr_4s_0x6B_lsl8, "orr v22.4s, #0x6B, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(orr_4s_0x49_lsl16, "orr v22.4s, #0x49, LSL #16", 22, 23)
+GEN_TWOVEC_TEST(orr_4s_0x3D_lsl24, "orr v22.4s, #0x3D, LSL #24", 22, 23)
+GEN_TWOVEC_TEST(orr_2s_0x5A_lsl0, "orr v22.2s, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(orr_2s_0x6B_lsl8, "orr v22.2s, #0x6B, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(orr_2s_0x49_lsl16, "orr v22.2s, #0x49, LSL #16", 22, 23)
+GEN_TWOVEC_TEST(orr_2s_0x3D_lsl24, "orr v22.2s, #0x3D, LSL #24", 22, 23)
+GEN_TWOVEC_TEST(bic_8h_0x5A_lsl0, "bic v22.8h, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(bic_8h_0xA5_lsl8, "bic v22.8h, #0xA5, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(bic_4h_0x5A_lsl0, "bic v22.4h, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(bic_4h_0xA5_lsl8, "bic v22.4h, #0xA5, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(bic_4s_0x5A_lsl0, "bic v22.4s, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(bic_4s_0x6B_lsl8, "bic v22.4s, #0x6B, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(bic_4s_0x49_lsl16, "bic v22.4s, #0x49, LSL #16", 22, 23)
+GEN_TWOVEC_TEST(bic_4s_0x3D_lsl24, "bic v22.4s, #0x3D, LSL #24", 22, 23)
+GEN_TWOVEC_TEST(bic_2s_0x5A_lsl0, "bic v22.2s, #0x5A, LSL #0", 22, 23)
+GEN_TWOVEC_TEST(bic_2s_0x6B_lsl8, "bic v22.2s, #0x6B, LSL #8", 22, 23)
+GEN_TWOVEC_TEST(bic_2s_0x49_lsl16, "bic v22.2s, #0x49, LSL #16", 22, 23)
+GEN_TWOVEC_TEST(bic_2s_0x3D_lsl24, "bic v22.2s, #0x3D, LSL #24", 22, 23)
+
+GEN_UNARY_TEST(cls, 4s, 4s)
+GEN_UNARY_TEST(cls, 2s, 2s)
+GEN_UNARY_TEST(cls, 8h, 8h)
+GEN_UNARY_TEST(cls, 4h, 4h)
+GEN_UNARY_TEST(cls, 16b, 16b)
+GEN_UNARY_TEST(cls, 8b, 8b)
+
+GEN_UNARY_TEST(clz, 4s, 4s)
+GEN_UNARY_TEST(clz, 2s, 2s)
+GEN_UNARY_TEST(clz, 8h, 8h)
+GEN_UNARY_TEST(clz, 4h, 4h)
+GEN_UNARY_TEST(clz, 16b, 16b)
+GEN_UNARY_TEST(clz, 8b, 8b)
+
+GEN_THREEVEC_TEST(cmeq_d_d_d, "cmeq d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(cmge_d_d_d, "cmge d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(cmgt_d_d_d, "cmgt d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(cmhi_d_d_d, "cmhi d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(cmhs_d_d_d, "cmhs d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(cmtst_d_d_d, "cmtst d2, d11, d29", 2, 11, 29)
+
+GEN_TWOVEC_TEST(cmeq_zero_d_d, "cmeq d2, d11, #0", 2, 11)
+GEN_TWOVEC_TEST(cmge_zero_d_d, "cmge d2, d11, #0", 2, 11)
+GEN_TWOVEC_TEST(cmgt_zero_d_d, "cmgt d2, d11, #0", 2, 11)
+GEN_TWOVEC_TEST(cmle_zero_d_d, "cmle d2, d11, #0", 2, 11)
+GEN_TWOVEC_TEST(cmlt_zero_d_d, "cmlt d2, d11, #0", 2, 11)
+
+GEN_UNARY_TEST(cnt, 16b, 16b)
+GEN_UNARY_TEST(cnt, 8b, 8b)
+
+GEN_TWOVEC_TEST(dup_d_d0, "dup d22, v23.d[0]", 22, 23)
+GEN_TWOVEC_TEST(dup_d_d1, "dup d22, v23.d[1]", 22, 23)
+GEN_TWOVEC_TEST(dup_s_s0, "dup s22, v23.s[0]", 22, 23)
+GEN_TWOVEC_TEST(dup_s_s3, "dup s22, v23.s[3]", 22, 23)
+GEN_TWOVEC_TEST(dup_h_h0, "dup h22, v23.h[0]", 22, 23)
+GEN_TWOVEC_TEST(dup_h_h6, "dup h22, v23.h[6]", 22, 23)
+GEN_TWOVEC_TEST(dup_b_b0, "dup b0, v23.b[0]", 22, 23)
+GEN_TWOVEC_TEST(dup_b_b13, "dup b13, v23.b[13]", 22, 23)
+
+GEN_TWOVEC_TEST(dup_2d_d0, "dup v9.2d, v17.d[0]", 9, 17)
+GEN_TWOVEC_TEST(dup_2d_d1, "dup v9.2d, v17.d[1]", 9, 17)
+GEN_TWOVEC_TEST(dup_4s_s0, "dup v9.4s, v17.s[0]", 9, 17)
+GEN_TWOVEC_TEST(dup_4s_s3, "dup v9.4s, v17.s[3]", 9, 17)
+GEN_TWOVEC_TEST(dup_2s_s0, "dup v9.2s, v17.s[0]", 9, 17)
+GEN_TWOVEC_TEST(dup_2s_s2, "dup v9.2s, v17.s[2]", 9, 17)
+GEN_TWOVEC_TEST(dup_8h_h0, "dup v9.8h, v17.h[0]", 9, 17)
+GEN_TWOVEC_TEST(dup_8h_h6, "dup v9.8h, v17.h[6]", 9, 17)
+GEN_TWOVEC_TEST(dup_4h_h1, "dup v9.4h, v17.h[1]", 9, 17)
+GEN_TWOVEC_TEST(dup_4h_h5, "dup v9.4h, v17.h[5]", 9, 17)
+GEN_TWOVEC_TEST(dup_16b_b2, "dup v9.16b, v17.b[2]", 9, 17)
+GEN_TWOVEC_TEST(dup_16b_b12, "dup v9.16b, v17.b[12]", 9, 17)
+GEN_TWOVEC_TEST(dup_8b_b3, "dup v9.8b, v17.b[3]", 9, 17)
+GEN_TWOVEC_TEST(dup_8b_b13, "dup v9.8b, v17.b[13]", 9, 17)
+
+GEN_TWOVEC_TEST(dup_2d_x, "mov x10, v17.d[0]; dup v9.2d, x10", 9, 17)
+GEN_TWOVEC_TEST(dup_4s_w, "mov x10, v17.d[0]; dup v9.4s, w10", 9, 17)
+GEN_TWOVEC_TEST(dup_2s_w, "mov x10, v17.d[0]; dup v9.2s, w10", 9, 17)
+GEN_TWOVEC_TEST(dup_8h_w, "mov x10, v17.d[0]; dup v9.8h, w10", 9, 17)
+GEN_TWOVEC_TEST(dup_4h_w, "mov x10, v17.d[0]; dup v9.4h, w10", 9, 17)
+GEN_TWOVEC_TEST(dup_16b_w, "mov x10, v17.d[0]; dup v9.16b, w10", 9, 17)
+GEN_TWOVEC_TEST(dup_8b_w, "mov x10, v17.d[0]; dup v9.8b, w10", 9, 17)
+
/* ---------------------------------------------------------------- */
/* -- main() -- */
@@ -1671,9 +1813,18 @@
// abs d
// neg d
+ test_abs_d_d(TyD);
+ test_neg_d_d(TyD);
// abs 2d,4s,2s,8h,4h,16b,8b
// neg 2d,4s,2s,8h,4h,16b,8b
+ test_abs_2d_2d(TyD);
+ test_abs_4s_4s(TyS);
+ test_abs_2s_2s(TyS);
+ test_abs_8h_8h(TyH);
+ test_abs_4h_4h(TyH);
+ test_abs_16b_16b(TyB);
+ test_abs_8b_8b(TyB);
test_neg_2d_2d(TyD);
test_neg_4s_4s(TyS);
test_neg_2s_2s(TyS);
@@ -1708,13 +1859,52 @@
// subhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
// raddhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
// rsubhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
+ test_addhn_2s_2d_2d(TyD);
+ test_addhn2_4s_2d_2d(TyD);
+ test_addhn_4h_4s_4s(TyS);
+ test_addhn2_8h_4s_4s(TyS);
+ test_addhn_8b_8h_8h(TyH);
+ test_addhn2_16b_8h_8h(TyH);
+ test_subhn_2s_2d_2d(TyD);
+ test_subhn2_4s_2d_2d(TyD);
+ test_subhn_4h_4s_4s(TyS);
+ test_subhn2_8h_4s_4s(TyS);
+ test_subhn_8b_8h_8h(TyH);
+ test_subhn2_16b_8h_8h(TyH);
+ test_raddhn_2s_2d_2d(TyD);
+ test_raddhn2_4s_2d_2d(TyD);
+ test_raddhn_4h_4s_4s(TyS);
+ test_raddhn2_8h_4s_4s(TyS);
+ test_raddhn_8b_8h_8h(TyH);
+ test_raddhn2_16b_8h_8h(TyH);
+ test_rsubhn_2s_2d_2d(TyD);
+ test_rsubhn2_4s_2d_2d(TyD);
+ test_rsubhn_4h_4s_4s(TyS);
+ test_rsubhn2_8h_4s_4s(TyS);
+ test_rsubhn_8b_8h_8h(TyH);
+ test_rsubhn2_16b_8h_8h(TyH);
// addp d (add pairs, across)
+ test_addp_d_2d(TyD);
+
// addp 2d,4s,2s,8h,4h,16b,8b
+ test_addp_2d_2d_2d(TyD);
+ test_addp_4s_4s_4s(TyS);
+ test_addp_2s_2s_2s(TyS);
+ test_addp_8h_8h_8h(TyH);
+ test_addp_4h_4h_4h(TyH);
+ test_addp_16b_16b_16b(TyB);
+ test_addp_8b_8b_8b(TyB);
+
// addv 4s,8h,4h,16b,18b (reduce across vector)
+ test_addv_s_4s(TyS);
+ test_addv_h_8h(TyH);
+ test_addv_h_4h(TyH);
+ test_addv_b_16b(TyB);
+ test_addv_b_8b(TyB);
// and 16b,8b
- // bic 16b,8b (vector,reg) (bit clear)
+ // bic 16b,8b
// orn 16b,8b
// orr 16b,8b
test_and_16b_16b_16b(TyB);
@@ -1730,7 +1920,31 @@
// orr 4s,2s #imm8, LSL #0, 8, 16 or 24
// bic 8h,4h #imm8, LSL #0 or 8
// bic 4s,2s #imm8, LSL #0, 8, 16 or 24
- // also movi, mvni
+ // also movi, mvni (INCOMPLETE?)
+ test_orr_8h_0x5A_lsl0(TyH);
+ test_orr_8h_0xA5_lsl8(TyH);
+ test_orr_4h_0x5A_lsl0(TyH);
+ test_orr_4h_0xA5_lsl8(TyH);
+ test_orr_4s_0x5A_lsl0(TyH);
+ test_orr_4s_0x6B_lsl8(TyH);
+ test_orr_4s_0x49_lsl16(TyH);
+ test_orr_4s_0x3D_lsl24(TyH);
+ test_orr_2s_0x5A_lsl0(TyH);
+ test_orr_2s_0x6B_lsl8(TyH);
+ test_orr_2s_0x49_lsl16(TyH);
+ test_orr_2s_0x3D_lsl24(TyH);
+ test_bic_8h_0x5A_lsl0(TyH);
+ test_bic_8h_0xA5_lsl8(TyH);
+ test_bic_4h_0x5A_lsl0(TyH);
+ test_bic_4h_0xA5_lsl8(TyH);
+ test_bic_4s_0x5A_lsl0(TyH);
+ test_bic_4s_0x6B_lsl8(TyH);
+ test_bic_4s_0x49_lsl16(TyH);
+ test_bic_4s_0x3D_lsl24(TyH);
+ test_bic_2s_0x5A_lsl0(TyH);
+ test_bic_2s_0x6B_lsl8(TyH);
+ test_bic_2s_0x49_lsl16(TyH);
+ test_bic_2s_0x3D_lsl24(TyH);
// bif 16b,8b (vector) (bit insert if false)
// bit 16b,8b (vector) (bit insert if true)
@@ -1747,6 +1961,18 @@
// cls 4s,2s,8h,4h,16b,8b (count leading sign bits)
// clz 4s,2s,8h,4h,16b,8b (count leading zero bits)
+ test_cls_4s_4s(TyS);
+ test_cls_2s_2s(TyS);
+ test_cls_8h_8h(TyH);
+ test_cls_4h_4h(TyH);
+ test_cls_16b_16b(TyB);
+ test_cls_8b_8b(TyB);
+ test_clz_4s_4s(TyS);
+ test_clz_2s_2s(TyS);
+ test_clz_8h_8h(TyH);
+ test_clz_4h_4h(TyH);
+ test_clz_16b_16b(TyB);
+ test_clz_8b_8b(TyB);
// cmeq d
// cmge d
@@ -1754,6 +1980,12 @@
// cmhi d
// cmhs d
// cmtst d
+ test_cmeq_d_d_d(TyD);
+ test_cmge_d_d_d(TyD);
+ test_cmgt_d_d_d(TyD);
+ test_cmhi_d_d_d(TyD);
+ test_cmhs_d_d_d(TyD);
+ test_cmtst_d_d_d(TyD);
// cmeq 2d,4s,2s,8h,4h,16b,8b
// cmge 2d,4s,2s,8h,4h,16b,8b
@@ -1809,6 +2041,11 @@
// cmgt_z d
// cmle_z d
// cmlt_z d
+ test_cmeq_zero_d_d(TyD);
+ test_cmge_zero_d_d(TyD);
+ test_cmgt_zero_d_d(TyD);
+ test_cmle_zero_d_d(TyD);
+ test_cmlt_zero_d_d(TyD);
// cmeq_z 2d,4s,2s,8h,4h,16b,8b
// cmge_z 2d,4s,2s,8h,4h,16b,8b
@@ -1852,10 +2089,43 @@
test_cmlt_zero_8b_8b(TyB);
// cnt 16b,8b (population count per byte)
+ test_cnt_16b_16b(TyB);
+ test_cnt_8b_8b(TyB);
// dup d,s,h,b (vec elem to scalar)
+ test_dup_d_d0(TyD);
+ test_dup_d_d1(TyD);
+ test_dup_s_s0(TyS);
+ test_dup_s_s3(TyS);
+ test_dup_h_h0(TyH);
+ test_dup_h_h6(TyH);
+ test_dup_b_b0(TyB);
+ test_dup_b_b13(TyB);
+
// dup 2d,4s,2s,8h,4h,16b,8b (vec elem to vector)
+ test_dup_2d_d0(TyD);
+ test_dup_2d_d1(TyD);
+ test_dup_4s_s0(TyS);
+ test_dup_4s_s3(TyS);
+ test_dup_2s_s0(TyS);
+ test_dup_2s_s2(TyS);
+ test_dup_8h_h0(TyH);
+ test_dup_8h_h6(TyH);
+ test_dup_4h_h1(TyH);
+ test_dup_4h_h5(TyH);
+ test_dup_16b_b2(TyB);
+ test_dup_16b_b12(TyB);
+ test_dup_8b_b3(TyB);
+ test_dup_8b_b13(TyB);
+
// dup 2d,4s,2s,8h,4h,16b,8b (general reg to vector)
+ test_dup_2d_x(TyD);
+ test_dup_4s_w(TyS);
+ test_dup_2s_w(TyS);
+ test_dup_8h_w(TyH);
+ test_dup_4h_w(TyH);
+ test_dup_16b_w(TyB);
+ test_dup_8b_w(TyB);
// ext 16b,8b,#imm4 (concat 2 vectors, then slice)
|
|
From: <sv...@va...> - 2014-05-06 09:30:43
|
Author: sewardj
Date: Tue May 6 09:30:29 2014
New Revision: 13936
Log:
Big reorganisation:
* add lane type descriptors, to be used by the random data
generators -- as-yet unused
* move existing tests into new groupings, and rename some of
them to be more consistent with the new notation.
Modified:
trunk/none/tests/arm64/fp_and_simd.c
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 Tue May 6 09:30:29 2014
@@ -17,8 +17,11 @@
#define True ((Bool)1)
-#define ITERS 10
+#define ITERS 1
+typedef
+ enum { TySF=1234, TyDF, TyB, TyH, TyS, TyD, TyNONE }
+ LaneTy;
union _V128 {
UChar u8[16];
@@ -37,7 +40,7 @@
return (seed >> 17) & 0xFF;
}
-static ULong randULong ( void )
+static ULong randULong ( LaneTy ty )
{
Int i;
ULong r = 0;
@@ -50,7 +53,7 @@
/* Generates a random V128. Ensures that that it contains normalised
FP numbers when viewed as either F32x4 or F64x2, so that it is
reasonable to use in FP test cases. */
-static void randV128 ( V128* v )
+static void randV128 ( /*OUT*/V128* v, LaneTy ty )
{
static UInt nCalls = 0, nIters = 0;
Int i;
@@ -86,6 +89,188 @@
}
+/* ---------------------------------------------------------------- */
+/* -- Test functions -- */
+/* ---------------------------------------------------------------- */
+
+/* Note this also sets the destination register to a known value (0x55..55)
+ since it can sometimes be an input to the instruction too. */
+#define GEN_UNARY_TEST(INSN,SUFFIXD,SUFFIXN) \
+ __attribute__((noinline)) \
+ static void test_##INSN##_##SUFFIXD##_##SUFFIXN ( LaneTy ty ) { \
+ Int i; \
+ for (i = 0; i < ITERS; i++) { \
+ V128 block[2]; \
+ memset(block, 0x55, sizeof(block)); \
+ randV128(&block[0], ty); \
+ randV128(&block[1], ty); \
+ __asm__ __volatile__( \
+ "ldr q7, [%0, #0] ; " \
+ "ldr q8, [%0, #16] ; " \
+ #INSN " v8." #SUFFIXD ", v7." #SUFFIXN " ; " \
+ "str q8, [%0, #16] " \
+ : : "r"(&block[0]) : "memory", "v7", "v8" \
+ ); \
+ printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN); \
+ showV128(&block[0]); printf(" "); \
+ showV128(&block[1]); printf("\n"); \
+ } \
+ }
+
+
+/* Note this also sets the destination register to a known value (0x55..55)
+ since it can sometimes be an input to the instruction too. */
+#define GEN_BINARY_TEST(INSN,SUFFIXD,SUFFIXN,SUFFIXM) \
+ __attribute__((noinline)) \
+ static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##SUFFIXM ( LaneTy ty ) { \
+ Int i; \
+ for (i = 0; i < ITERS; i++) { \
+ V128 block[3]; \
+ memset(block, 0x55, sizeof(block)); \
+ randV128(&block[0], ty); \
+ randV128(&block[1], ty); \
+ randV128(&block[2], ty); \
+ __asm__ __volatile__( \
+ "ldr q7, [%0, #0] ; " \
+ "ldr q8, [%0, #16] ; " \
+ "ldr q9, [%0, #32] ; " \
+ #INSN " v9." #SUFFIXD ", v7." #SUFFIXN ", v8." #SUFFIXM " ; " \
+ "str q9, [%0, #32] " \
+ : : "r"(&block[0]) : "memory", "v7", "v8", "v9" \
+ ); \
+ printf(#INSN " v9." #SUFFIXD \
+ ", v7." #SUFFIXN ", v8." #SUFFIXM " "); \
+ showV128(&block[0]); printf(" "); \
+ showV128(&block[1]); printf(" "); \
+ showV128(&block[2]); printf("\n"); \
+ } \
+ }
+
+
+/* Note this also sets the destination register to a known value (0x55..55)
+ since it can sometimes be an input to the instruction too. */
+#define GEN_SHIFT_TEST(INSN,SUFFIXD,SUFFIXN,AMOUNT) \
+ __attribute__((noinline)) \
+ static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##AMOUNT ( LaneTy ty ) { \
+ Int i; \
+ for (i = 0; i < ITERS; i++) { \
+ V128 block[2]; \
+ memset(block, 0x55, sizeof(block)); \
+ randV128(&block[0], ty); \
+ randV128(&block[1], ty); \
+ __asm__ __volatile__( \
+ "ldr q7, [%0, #0] ; " \
+ "ldr q8, [%0, #16] ; " \
+ #INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " ; " \
+ "str q8, [%0, #16] " \
+ : : "r"(&block[0]) : "memory", "v7", "v8" \
+ ); \
+ printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " "); \
+ showV128(&block[0]); printf(" "); \
+ showV128(&block[1]); printf("\n"); \
+ } \
+ }
+
+
+/* Generate a test that involves one integer reg and one vector reg,
+ with no bias as towards which is input or output. */
+#define GEN_ONEINT_ONEVEC_TEST(TESTNAME,INSN,INTREGNO,VECREGNO) \
+ __attribute__((noinline)) \
+ static void test_##TESTNAME ( LaneTy ty ) { \
+ Int i; \
+ for (i = 0; i < ITERS; i++) { \
+ V128 block[4]; \
+ memset(block, 0x55, sizeof(block)); \
+ randV128(&block[0], ty); \
+ randV128(&block[1], ty); \
+ randV128(&block[2], ty); \
+ randV128(&block[3], ty); \
+ __asm__ __volatile__( \
+ "ldr q"#VECREGNO", [%0, #0] ; " \
+ "ldr x"#INTREGNO", [%0, #16] ; " \
+ INSN " ; " \
+ "str q"#VECREGNO", [%0, #32] ; " \
+ "str x"#INTREGNO", [%0, #48] ; " \
+ : : "r"(&block[0]) : "memory", "v"#VECREGNO, "x"#INTREGNO \
+ ); \
+ printf(INSN " "); \
+ showV128(&block[0]); printf(" "); \
+ showV128(&block[1]); printf(" "); \
+ showV128(&block[2]); printf(" "); \
+ showV128(&block[3]); printf("\n"); \
+ } \
+ }
+
+
+/* Generate a test that involves two vector regs,
+ with no bias as towards which is input or output. */
+#define GEN_TWOVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO) \
+ __attribute__((noinline)) \
+ static void test_##TESTNAME ( LaneTy ty ) { \
+ Int i; \
+ for (i = 0; i < ITERS; i++) { \
+ V128 block[4]; \
+ memset(block, 0x55, sizeof(block)); \
+ randV128(&block[0], ty); \
+ randV128(&block[1], ty); \
+ randV128(&block[2], ty); \
+ randV128(&block[3], ty); \
+ __asm__ __volatile__( \
+ "ldr q"#VECREG1NO", [%0, #0] ; " \
+ "ldr q"#VECREG2NO", [%0, #16] ; " \
+ INSN " ; " \
+ "str q"#VECREG1NO", [%0, #32] ; " \
+ "str q"#VECREG2NO", [%0, #48] ; " \
+ : : "r"(&block[0]) : "memory", "v"#VECREG1NO, "v"#VECREG2NO \
+ ); \
+ printf(INSN " "); \
+ showV128(&block[0]); printf(" "); \
+ showV128(&block[1]); printf(" "); \
+ showV128(&block[2]); printf(" "); \
+ showV128(&block[3]); printf("\n"); \
+ } \
+ }
+
+
+/* Generate a test that involves three vector regs,
+ with no bias as towards which is input or output. It's also OK
+ to use v16, v17, v18 as scratch. */
+#define GEN_THREEVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO,VECREG3NO) \
+ __attribute__((noinline)) \
+ static void test_##TESTNAME ( LaneTy ty ) { \
+ Int i; \
+ for (i = 0; i < ITERS; i++) { \
+ V128 block[6]; \
+ memset(block, 0x55, sizeof(block)); \
+ randV128(&block[0], ty); \
+ randV128(&block[1], ty); \
+ randV128(&block[2], ty); \
+ randV128(&block[3], ty); \
+ randV128(&block[4], ty); \
+ randV128(&block[5], ty); \
+ __asm__ __volatile__( \
+ "ldr q"#VECREG1NO", [%0, #0] ; " \
+ "ldr q"#VECREG2NO", [%0, #16] ; " \
+ "ldr q"#VECREG3NO", [%0, #32] ; " \
+ INSN " ; " \
+ "str q"#VECREG1NO", [%0, #48] ; " \
+ "str q"#VECREG2NO", [%0, #64] ; " \
+ "str q"#VECREG3NO", [%0, #80] ; " \
+ : : "r"(&block[0]) \
+ : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO, \
+ "v16", "v17", "v18" \
+ ); \
+ printf(INSN " "); \
+ showV128(&block[0]); printf(" "); \
+ showV128(&block[1]); printf(" "); \
+ showV128(&block[2]); printf(" "); \
+ showV128(&block[3]); printf(" "); \
+ showV128(&block[4]); printf(" "); \
+ showV128(&block[5]); printf("\n"); \
+ } \
+ }
+
+
void test_UMINV ( void )
{
int i;
@@ -95,8 +280,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyS);
+ randV128(&block[1], TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"uminv s8, v7.4s ; "
@@ -112,8 +297,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"uminv h8, v7.8h ; "
@@ -129,8 +314,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"uminv h8, v7.4h ; "
@@ -146,8 +331,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"uminv b8, v7.16b ; "
@@ -163,8 +348,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"uminv b8, v7.8b ; "
@@ -188,8 +373,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyS);
+ randV128(&block[1], TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"umaxv s8, v7.4s ; "
@@ -205,8 +390,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"umaxv h8, v7.8h ; "
@@ -222,8 +407,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"umaxv h8, v7.4h ; "
@@ -239,8 +424,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"umaxv b8, v7.16b ; "
@@ -256,8 +441,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"umaxv b8, v7.8b ; "
@@ -279,7 +464,7 @@
/* -- D[0..1] -- */
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyD);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -292,7 +477,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyD);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -307,7 +492,7 @@
/* -- S[0..3] -- */
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -320,7 +505,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -333,7 +518,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -346,7 +531,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -361,7 +546,7 @@
/* -- H[0..7] -- */
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -374,7 +559,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -387,7 +572,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -400,7 +585,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -413,7 +598,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -426,7 +611,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -439,7 +624,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -452,7 +637,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -467,7 +652,7 @@
/* -- B[0,15] -- */
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -480,7 +665,7 @@
showV128(&block[2]); printf("\n");
memset(&block, 0x55, sizeof(block));
- block[1].u64[0] = randULong();
+ block[1].u64[0] = randULong(TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"ldr x19, [%0, #16] ; "
@@ -504,8 +689,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyS);
+ randV128(&block[1], TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"sminv s8, v7.4s ; "
@@ -521,8 +706,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"sminv h8, v7.8h ; "
@@ -538,8 +723,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"sminv h8, v7.4h ; "
@@ -555,8 +740,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"sminv b8, v7.16b ; "
@@ -572,8 +757,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"sminv b8, v7.8b ; "
@@ -597,8 +782,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyS);
+ randV128(&block[1], TyS);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"smaxv s8, v7.4s ; "
@@ -614,8 +799,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"smaxv h8, v7.8h ; "
@@ -631,8 +816,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyH);
+ randV128(&block[1], TyH);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"smaxv h8, v7.4h ; "
@@ -648,8 +833,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"smaxv b8, v7.16b ; "
@@ -665,8 +850,8 @@
for (i = 0; i < 10; i++) {
memset(&block, 0x55, sizeof(block));
- randV128(&block[0]);
- randV128(&block[1]);
+ randV128(&block[0], TyB);
+ randV128(&block[1], TyB);
__asm__ __volatile__(
"ldr q7, [%0, #0] ; "
"smaxv b8, v7.8b ; "
@@ -680,215 +865,143 @@
}
-/* Note this also sets the destination register to a known value (0x55..55)
- since it can sometimes be an input to the instruction too. */
-#define GEN_BINARY_TEST(INSN,SUFFIX) \
- __attribute__((noinline)) \
- static void test_##INSN##_##SUFFIX ( void ) { \
- Int i; \
- for (i = 0; i < ITERS; i++) { \
- V128 block[3]; \
- memset(block, 0x55, sizeof(block)); \
- randV128(&block[0]); \
- randV128(&block[1]); \
- randV128(&block[2]); \
- __asm__ __volatile__( \
- "ldr q7, [%0, #0] ; " \
- "ldr q8, [%0, #16] ; " \
- "ldr q9, [%0, #32] ; " \
- #INSN " v9." #SUFFIX ", v7." #SUFFIX ", v8." #SUFFIX " ; " \
- "str q9, [%0, #32] " \
- : : "r"(&block[0]) : "memory", "v7", "v8", "v9" \
- ); \
- printf(#INSN " v9." #SUFFIX ", v7." #SUFFIX ", v8." #SUFFIX " "); \
- showV128(&block[0]); printf(" "); \
- showV128(&block[1]); printf(" "); \
- showV128(&block[2]); printf("\n"); \
- } \
- }
-
-
-/* Note this also sets the destination register to a known value (0x55..55)
- since it can sometimes be an input to the instruction too. */
-#define GEN_SHIFT_TEST(INSN,SUFFIXD,SUFFIXN,AMOUNT) \
- __attribute__((noinline)) \
- static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##AMOUNT ( void ) { \
- Int i; \
- for (i = 0; i < ITERS; i++) { \
- V128 block[2]; \
- memset(block, 0x55, sizeof(block)); \
- randV128(&block[0]); \
- randV128(&block[1]); \
- __asm__ __volatile__( \
- "ldr q7, [%0, #0] ; " \
- "ldr q8, [%0, #16] ; " \
- #INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " ; " \
- "str q8, [%0, #16] " \
- : : "r"(&block[0]) : "memory", "v7", "v8" \
- ); \
- printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " "); \
- showV128(&block[0]); printf(" "); \
- showV128(&block[1]); printf("\n"); \
- } \
- }
-
-/* Note this also sets the destination register to a known value (0x55..55)
- since it can sometimes be an input to the instruction too. */
-#define GEN_UNARY_TEST(INSN,SUFFIXD,SUFFIXN) \
- __attribute__((noinline)) \
- static void test_##INSN##_##SUFFIXD##_##SUFFIXN ( void ) { \
- Int i; \
- for (i = 0; i < ITERS; i++) { \
- V128 block[2]; \
- memset(block, 0x55, sizeof(block)); \
- randV128(&block[0]); \
- randV128(&block[1]); \
- __asm__ __volatile__( \
- "ldr q7, [%0, #0] ; " \
- "ldr q8, [%0, #16] ; " \
- #INSN " v8." #SUFFIXD ", v7." #SUFFIXN " ; " \
- "str q8, [%0, #16] " \
- : : "r"(&block[0]) : "memory", "v7", "v8" \
- ); \
- printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN); \
- showV128(&block[0]); printf(" "); \
- showV128(&block[1]); printf("\n"); \
- } \
- }
-
-GEN_BINARY_TEST(umax, 4s)
-GEN_BINARY_TEST(umax, 8h)
-GEN_BINARY_TEST(umax, 4h)
-GEN_BINARY_TEST(umax, 16b)
-GEN_BINARY_TEST(umax, 8b)
-
-GEN_BINARY_TEST(umin, 4s)
-GEN_BINARY_TEST(umin, 8h)
-GEN_BINARY_TEST(umin, 4h)
-GEN_BINARY_TEST(umin, 16b)
-GEN_BINARY_TEST(umin, 8b)
-
-GEN_BINARY_TEST(smax, 4s)
-GEN_BINARY_TEST(smax, 8h)
-GEN_BINARY_TEST(smax, 4h)
-GEN_BINARY_TEST(smax, 16b)
-GEN_BINARY_TEST(smax, 8b)
-
-GEN_BINARY_TEST(smin, 4s)
-GEN_BINARY_TEST(smin, 8h)
-GEN_BINARY_TEST(smin, 4h)
-GEN_BINARY_TEST(smin, 16b)
-GEN_BINARY_TEST(smin, 8b)
-
-GEN_BINARY_TEST(add, 2d)
-GEN_BINARY_TEST(add, 4s)
-GEN_BINARY_TEST(add, 2s)
-GEN_BINARY_TEST(add, 8h)
-GEN_BINARY_TEST(add, 4h)
-GEN_BINARY_TEST(add, 16b)
-GEN_BINARY_TEST(add, 8b)
-
-GEN_BINARY_TEST(sub, 2d)
-GEN_BINARY_TEST(sub, 4s)
-GEN_BINARY_TEST(sub, 2s)
-GEN_BINARY_TEST(sub, 8h)
-GEN_BINARY_TEST(sub, 4h)
-GEN_BINARY_TEST(sub, 16b)
-GEN_BINARY_TEST(sub, 8b)
-
-GEN_BINARY_TEST(mul, 4s)
-GEN_BINARY_TEST(mul, 2s)
-GEN_BINARY_TEST(mul, 8h)
-GEN_BINARY_TEST(mul, 4h)
-GEN_BINARY_TEST(mul, 16b)
-GEN_BINARY_TEST(mul, 8b)
-
-GEN_BINARY_TEST(mla, 4s)
-GEN_BINARY_TEST(mla, 2s)
-GEN_BINARY_TEST(mla, 8h)
-GEN_BINARY_TEST(mla, 4h)
-GEN_BINARY_TEST(mla, 16b)
-GEN_BINARY_TEST(mla, 8b)
-
-GEN_BINARY_TEST(mls, 4s)
-GEN_BINARY_TEST(mls, 2s)
-GEN_BINARY_TEST(mls, 8h)
-GEN_BINARY_TEST(mls, 4h)
-GEN_BINARY_TEST(mls, 16b)
-GEN_BINARY_TEST(mls, 8b)
-
-GEN_BINARY_TEST(and, 16b)
-GEN_BINARY_TEST(and, 8b)
-
-GEN_BINARY_TEST(bic, 16b)
-GEN_BINARY_TEST(bic, 8b)
-
-GEN_BINARY_TEST(orr, 16b)
-GEN_BINARY_TEST(orr, 8b)
-
-GEN_BINARY_TEST(orn, 16b)
-GEN_BINARY_TEST(orn, 8b)
-
-GEN_BINARY_TEST(eor, 16b)
-GEN_BINARY_TEST(eor, 8b)
-
-GEN_BINARY_TEST(bsl, 16b)
-GEN_BINARY_TEST(bsl, 8b)
-
-GEN_BINARY_TEST(bit, 16b)
-GEN_BINARY_TEST(bit, 8b)
-
-GEN_BINARY_TEST(bif, 16b)
-GEN_BINARY_TEST(bif, 8b)
-
-GEN_BINARY_TEST(cmeq, 2d)
-GEN_BINARY_TEST(cmeq, 4s)
-GEN_BINARY_TEST(cmeq, 2s)
-GEN_BINARY_TEST(cmeq, 8h)
-GEN_BINARY_TEST(cmeq, 4h)
-GEN_BINARY_TEST(cmeq, 16b)
-GEN_BINARY_TEST(cmeq, 8b)
-
-GEN_BINARY_TEST(cmtst, 2d)
-GEN_BINARY_TEST(cmtst, 4s)
-GEN_BINARY_TEST(cmtst, 2s)
-GEN_BINARY_TEST(cmtst, 8h)
-GEN_BINARY_TEST(cmtst, 4h)
-GEN_BINARY_TEST(cmtst, 16b)
-GEN_BINARY_TEST(cmtst, 8b)
-
-GEN_BINARY_TEST(cmhi, 2d)
-GEN_BINARY_TEST(cmhi, 4s)
-GEN_BINARY_TEST(cmhi, 2s)
-GEN_BINARY_TEST(cmhi, 8h)
-GEN_BINARY_TEST(cmhi, 4h)
-GEN_BINARY_TEST(cmhi, 16b)
-GEN_BINARY_TEST(cmhi, 8b)
-
-GEN_BINARY_TEST(cmgt, 2d)
-GEN_BINARY_TEST(cmgt, 4s)
-GEN_BINARY_TEST(cmgt, 2s)
-GEN_BINARY_TEST(cmgt, 8h)
-GEN_BINARY_TEST(cmgt, 4h)
-GEN_BINARY_TEST(cmgt, 16b)
-GEN_BINARY_TEST(cmgt, 8b)
-
-GEN_BINARY_TEST(cmhs, 2d)
-GEN_BINARY_TEST(cmhs, 4s)
-GEN_BINARY_TEST(cmhs, 2s)
-GEN_BINARY_TEST(cmhs, 8h)
-GEN_BINARY_TEST(cmhs, 4h)
-GEN_BINARY_TEST(cmhs, 16b)
-GEN_BINARY_TEST(cmhs, 8b)
-
-GEN_BINARY_TEST(cmge, 2d)
-GEN_BINARY_TEST(cmge, 4s)
-GEN_BINARY_TEST(cmge, 2s)
-GEN_BINARY_TEST(cmge, 8h)
-GEN_BINARY_TEST(cmge, 4h)
-GEN_BINARY_TEST(cmge, 16b)
-GEN_BINARY_TEST(cmge, 8b)
+GEN_BINARY_TEST(umax, 4s, 4s, 4s)
+GEN_BINARY_TEST(umax, 2s, 2s, 2s)
+GEN_BINARY_TEST(umax, 8h, 8h, 8h)
+GEN_BINARY_TEST(umax, 4h, 4h, 4h)
+GEN_BINARY_TEST(umax, 16b, 16b, 16b)
+GEN_BINARY_TEST(umax, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(umin, 4s, 4s, 4s)
+GEN_BINARY_TEST(umin, 2s, 2s, 2s)
+GEN_BINARY_TEST(umin, 8h, 8h, 8h)
+GEN_BINARY_TEST(umin, 4h, 4h, 4h)
+GEN_BINARY_TEST(umin, 16b, 16b, 16b)
+GEN_BINARY_TEST(umin, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(smax, 4s, 4s, 4s)
+GEN_BINARY_TEST(smax, 2s, 2s, 2s)
+GEN_BINARY_TEST(smax, 8h, 8h, 8h)
+GEN_BINARY_TEST(smax, 4h, 4h, 4h)
+GEN_BINARY_TEST(smax, 16b, 16b, 16b)
+GEN_BINARY_TEST(smax, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(smin, 4s, 4s, 4s)
+GEN_BINARY_TEST(smin, 2s, 2s, 2s)
+GEN_BINARY_TEST(smin, 8h, 8h, 8h)
+GEN_BINARY_TEST(smin, 4h, 4h, 4h)
+GEN_BINARY_TEST(smin, 16b, 16b, 16b)
+GEN_BINARY_TEST(smin, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(add, 2d, 2d, 2d)
+GEN_BINARY_TEST(add, 4s, 4s, 4s)
+GEN_BINARY_TEST(add, 2s, 2s, 2s)
+GEN_BINARY_TEST(add, 8h, 8h, 8h)
+GEN_BINARY_TEST(add, 4h, 4h, 4h)
+GEN_BINARY_TEST(add, 16b, 16b, 16b)
+GEN_BINARY_TEST(add, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(sub, 2d, 2d, 2d)
+GEN_BINARY_TEST(sub, 4s, 4s, 4s)
+GEN_BINARY_TEST(sub, 2s, 2s, 2s)
+GEN_BINARY_TEST(sub, 8h, 8h, 8h)
+GEN_BINARY_TEST(sub, 4h, 4h, 4h)
+GEN_BINARY_TEST(sub, 16b, 16b, 16b)
+GEN_BINARY_TEST(sub, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(mul, 4s, 4s, 4s)
+GEN_BINARY_TEST(mul, 2s, 2s, 2s)
+GEN_BINARY_TEST(mul, 8h, 8h, 8h)
+GEN_BINARY_TEST(mul, 4h, 4h, 4h)
+GEN_BINARY_TEST(mul, 16b, 16b, 16b)
+GEN_BINARY_TEST(mul, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(mla, 4s, 4s, 4s)
+GEN_BINARY_TEST(mla, 2s, 2s, 2s)
+GEN_BINARY_TEST(mla, 8h, 8h, 8h)
+GEN_BINARY_TEST(mla, 4h, 4h, 4h)
+GEN_BINARY_TEST(mla, 16b, 16b, 16b)
+GEN_BINARY_TEST(mla, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(mls, 4s, 4s, 4s)
+GEN_BINARY_TEST(mls, 2s, 2s, 2s)
+GEN_BINARY_TEST(mls, 8h, 8h, 8h)
+GEN_BINARY_TEST(mls, 4h, 4h, 4h)
+GEN_BINARY_TEST(mls, 16b, 16b, 16b)
+GEN_BINARY_TEST(mls, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(and, 16b, 16b, 16b)
+GEN_BINARY_TEST(and, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(bic, 16b, 16b, 16b)
+GEN_BINARY_TEST(bic, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(orr, 16b, 16b, 16b)
+GEN_BINARY_TEST(orr, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(orn, 16b, 16b, 16b)
+GEN_BINARY_TEST(orn, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(eor, 16b, 16b, 16b)
+GEN_BINARY_TEST(eor, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(bsl, 16b, 16b, 16b)
+GEN_BINARY_TEST(bsl, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(bit, 16b, 16b, 16b)
+GEN_BINARY_TEST(bit, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(bif, 16b, 16b, 16b)
+GEN_BINARY_TEST(bif, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(cmeq, 2d, 2d, 2d)
+GEN_BINARY_TEST(cmeq, 4s, 4s, 4s)
+GEN_BINARY_TEST(cmeq, 2s, 2s, 2s)
+GEN_BINARY_TEST(cmeq, 8h, 8h, 8h)
+GEN_BINARY_TEST(cmeq, 4h, 4h, 4h)
+GEN_BINARY_TEST(cmeq, 16b, 16b, 16b)
+GEN_BINARY_TEST(cmeq, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(cmtst, 2d, 2d, 2d)
+GEN_BINARY_TEST(cmtst, 4s, 4s, 4s)
+GEN_BINARY_TEST(cmtst, 2s, 2s, 2s)
+GEN_BINARY_TEST(cmtst, 8h, 8h, 8h)
+GEN_BINARY_TEST(cmtst, 4h, 4h, 4h)
+GEN_BINARY_TEST(cmtst, 16b, 16b, 16b)
+GEN_BINARY_TEST(cmtst, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(cmhi, 2d, 2d, 2d)
+GEN_BINARY_TEST(cmhi, 4s, 4s, 4s)
+GEN_BINARY_TEST(cmhi, 2s, 2s, 2s)
+GEN_BINARY_TEST(cmhi, 8h, 8h, 8h)
+GEN_BINARY_TEST(cmhi, 4h, 4h, 4h)
+GEN_BINARY_TEST(cmhi, 16b, 16b, 16b)
+GEN_BINARY_TEST(cmhi, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(cmgt, 2d, 2d, 2d)
+GEN_BINARY_TEST(cmgt, 4s, 4s, 4s)
+GEN_BINARY_TEST(cmgt, 2s, 2s, 2s)
+GEN_BINARY_TEST(cmgt, 8h, 8h, 8h)
+GEN_BINARY_TEST(cmgt, 4h, 4h, 4h)
+GEN_BINARY_TEST(cmgt, 16b, 16b, 16b)
+GEN_BINARY_TEST(cmgt, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(cmhs, 2d, 2d, 2d)
+GEN_BINARY_TEST(cmhs, 4s, 4s, 4s)
+GEN_BINARY_TEST(cmhs, 2s, 2s, 2s)
+GEN_BINARY_TEST(cmhs, 8h, 8h, 8h)
+GEN_BINARY_TEST(cmhs, 4h, 4h, 4h)
+GEN_BINARY_TEST(cmhs, 16b, 16b, 16b)
+GEN_BINARY_TEST(cmhs, 8b, 8b, 8b)
+
+GEN_BINARY_TEST(cmge, 2d, 2d, 2d)
+GEN_BINARY_TEST(cmge, 4s, 4s, 4s)
+GEN_BINARY_TEST(cmge, 2s, 2s, 2s)
+GEN_BINARY_TEST(cmge, 8h, 8h, 8h)
+GEN_BINARY_TEST(cmge, 4h, 4h, 4h)
+GEN_BINARY_TEST(cmge, 16b, 16b, 16b)
+GEN_BINARY_TEST(cmge, 8b, 8b, 8b)
GEN_SHIFT_TEST(ushr, 2d, 2d, 1)
GEN_SHIFT_TEST(ushr, 2d, 2d, 13)
@@ -975,213 +1088,118 @@
GEN_UNARY_TEST(xtn, 8b, 8h)
GEN_UNARY_TEST(xtn2, 16b, 8h)
+GEN_ONEINT_ONEVEC_TEST(umov_x_d0, "umov x9, v10.d[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_x_d1, "umov x9, v10.d[1]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_w_s0, "umov w9, v10.s[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_w_s3, "umov w9, v10.s[3]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_w_h0, "umov w9, v10.h[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_w_h7, "umov w9, v10.h[7]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_w_b0, "umov w9, v10.b[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(umov_w_b15, "umov w9, v10.b[15]", 9, 10)
+
+GEN_ONEINT_ONEVEC_TEST(smov_x_s0, "smov x9, v10.s[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_x_s3, "smov x9, v10.s[3]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_x_h0, "smov x9, v10.h[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_x_h7, "smov x9, v10.h[7]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_w_h0, "smov w9, v10.h[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_w_h7, "smov w9, v10.h[7]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_x_b0, "smov x9, v10.b[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_x_b15, "smov x9, v10.b[15]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_w_b0, "smov w9, v10.b[0]", 9, 10)
+GEN_ONEINT_ONEVEC_TEST(smov_w_b15, "smov w9, v10.b[15]", 9, 10)
-/* Generate a test that involves one integer reg and one vector reg,
- with no bias as towards which is input or output. */
-#define GEN_ONEINT_ONEVEC_TEST(TESTNAME,INSN,INTREGNO,VECREGNO) \
- __attribute__((noinline)) \
- static void test_##TESTNAME ( void ) { \
- Int i; \
- for (i = 0; i < ITERS; i++) { \
- V128 block[4]; \
- memset(block, 0x55, sizeof(block)); \
- randV128(&block[0]); \
- randV128(&block[1]); \
- randV128(&block[2]); \
- randV128(&block[3]); \
- __asm__ __volatile__( \
- "ldr q"#VECREGNO", [%0, #0] ; " \
- "ldr x"#INTREGNO", [%0, #16] ; " \
- INSN " ; " \
- "str q"#VECREGNO", [%0, #32] ; " \
- "str x"#INTREGNO", [%0, #48] ; " \
- : : "r"(&block[0]) : "memory", "v"#VECREGNO, "x"#INTREGNO \
- ); \
- printf(INSN " "); \
- showV128(&block[0]); printf(" "); \
- showV128(&block[1]); printf(" "); \
- showV128(&block[2]); printf(" "); \
- showV128(&block[3]); printf("\n"); \
- } \
- }
+GEN_TWOVEC_TEST(fcvtn_2s_2d, "fcvtn v22.2s, v23.2d", 22, 23)
+GEN_TWOVEC_TEST(fcvtn_4s_2d, "fcvtn2 v22.4s, v23.2d", 22, 23)
-GEN_ONEINT_ONEVEC_TEST(umov_01, "umov x9, v10.d[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_02, "umov x9, v10.d[1]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_03, "umov w9, v10.s[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_04, "umov w9, v10.s[3]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_05, "umov w9, v10.h[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_06, "umov w9, v10.h[7]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_07, "umov w9, v10.b[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(umov_08, "umov w9, v10.b[15]", 9, 10)
-
-GEN_ONEINT_ONEVEC_TEST(smov_01, "smov x9, v10.s[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_02, "smov x9, v10.s[3]", 9, 10)
-
-GEN_ONEINT_ONEVEC_TEST(smov_03, "smov x9, v10.h[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_04, "smov x9, v10.h[7]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_05, "smov w9, v10.h[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_06, "smov w9, v10.h[7]", 9, 10)
-
-GEN_ONEINT_ONEVEC_TEST(smov_07, "smov x9, v10.b[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_08, "smov x9, v10.b[15]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_09, "smov w9, v10.b[0]", 9, 10)
-GEN_ONEINT_ONEVEC_TEST(smov_10, "smov w9, v10.b[15]", 9, 10)
+GEN_UNARY_TEST(neg, 2d, 2d)
+GEN_UNARY_TEST(neg, 4s, 4s)
+GEN_UNARY_TEST(neg, 2s, 2s)
+GEN_UNARY_TEST(neg, 8h, 8h)
+GEN_UNARY_TEST(neg, 4h, 4h)
+GEN_UNARY_TEST(neg, 16b, 16b)
+GEN_UNARY_TEST(neg, 8b, 8b)
-/* Generate a test that involves two vector regs,
- with no bias as towards which is input or output. */
-#define GEN_TWOVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO) \
- __attribute__((noinline)) \
- static void test_##TESTNAME ( void ) { \
- Int i; \
- for (i = 0; i < ITERS; i++) { \
- V128 block[4]; \
- memset(block, 0x55, sizeof(block)); \
- randV128(&block[0]); \
- randV128(&block[1]); \
- randV128(&block[2]); \
- randV128(&block[3]); \
- __asm__ __volatile__( \
- "ldr q"#VECREG1NO", [%0, #0] ; " \
- "ldr q"#VECREG2NO", [%0, #16] ; " \
- INSN " ; " \
- "str q"#VECREG1NO", [%0, #32] ; " \
- "str q"#VECREG2NO", [%0, #48] ; " \
- : : "r"(&block[0]) : "memory", "v"#VECREG1NO, "v"#VECREG2NO \
- ); \
- printf(INSN " "); \
- showV128(&block[0]); printf(" "); \
- showV128(&block[1]); printf(" "); \
- showV128(&block[2]); printf(" "); \
- showV128(&block[3]); printf("\n"); \
- } \
- }
-
-GEN_TWOVEC_TEST(fcvtn_01, "fcvtn v22.2s, v23.2d", 22, 23)
-GEN_TWOVEC_TEST(fcvtn_02, "fcvtn2 v22.4s, v23.2d", 22, 23)
-
-GEN_UNARY_TEST(neg, 2d, 2d)
-GEN_UNARY_TEST(neg, 4s, 4s)
-GEN_UNARY_TEST(neg, 2s, 2s)
-GEN_UNARY_TEST(neg, 8h, 8h)
-GEN_UNARY_TEST(neg, 4h, 4h)
-GEN_UNARY_TEST(neg, 16b, 16b)
-GEN_UNARY_TEST(neg, 8b, 8b)
-GEN_BINARY_TEST(fadd, 2d)
-GEN_BINARY_TEST(fadd, 4s)
-GEN_BINARY_TEST(fadd, 2s)
-GEN_BINARY_TEST(fsub, 2d)
-GEN_BINARY_TEST(fsub, 4s)
-GEN_BINARY_TEST(fsub, 2s)
-GEN_BINARY_TEST(fmul, 2d)
-GEN_BINARY_TEST(fmul, 4s)
-GEN_BINARY_TEST(fmul, 2s)
-GEN_BINARY_TEST(fdiv, 2d)
-GEN_BINARY_TEST(fdiv, 4s)
-GEN_BINARY_TEST(fdiv, 2s)
-GEN_BINARY_TEST(fmla, 2d)
-GEN_BINARY_TEST(fmla, 4s)
-GEN_BINARY_TEST(fmla, 2s)
-GEN_BINARY_TEST(fmls, 2d)
-GEN_BINARY_TEST(fmls, 4s)
-GEN_BINARY_TEST(fmls, 2s)
-GEN_BINARY_TEST(fabd, 2d)
-GEN_BINARY_TEST(fabd, 4s)
-GEN_BINARY_TEST(fabd, 2s)
-
-/* Generate a test that involves three vector regs,
- with no bias as towards which is input or output. It's also OK
- to use v16, v17, v18 as scratch. */
-#define GEN_THREEVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO,VECREG3NO) \
- __attribute__((noinline)) \
- static void test_##TESTNAME ( void ) { \
- Int i; \
- for (i = 0; i < ITERS; i++) { \
- V128 block[6]; \
- memset(block, 0x55, sizeof(block)); \
- randV128(&block[0]); \
- randV128(&block[1]); \
- randV128(&block[2]); \
- randV128(&block[3]); \
- randV128(&block[4]); \
- randV128(&block[5]); \
- __asm__ __volatile__( \
- "ldr q"#VECREG1NO", [%0, #0] ; " \
- "ldr q"#VECREG2NO", [%0, #16] ; " \
- "ldr q"#VECREG3NO", [%0, #32] ; " \
- INSN " ; " \
- "str q"#VECREG1NO", [%0, #48] ; " \
- "str q"#VECREG2NO", [%0, #64] ; " \
- "str q"#VECREG3NO", [%0, #80] ; " \
- : : "r"(&block[0]) \
- : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO, \
- "v16", "v17", "v18" \
- ); \
- printf(INSN " "); \
- showV128(&block[0]); printf(" "); \
- showV128(&block[1]); printf(" "); \
- showV128(&block[2]); printf(" "); \
- showV128(&block[3]); printf(" "); \
- showV128(&block[4]); printf(" "); \
- showV128(&block[5]); printf("\n"); \
- } \
- }
+GEN_BINARY_TEST(fadd, 2d, 2d, 2d)
+GEN_BINARY_TEST(fadd, 4s, 4s, 4s)
+GEN_BINARY_TEST(fadd, 2s, 2s, 2s)
+GEN_BINARY_TEST(fsub, 2d, 2d, 2d)
+GEN_BINARY_TEST(fsub, 4s, 4s, 4s)
+GEN_BINARY_TEST(fsub, 2s, 2s, 2s)
+GEN_BINARY_TEST(fmul, 2d, 2d, 2d)
+GEN_BINARY_TEST(fmul, 4s, 4s, 4s)
+GEN_BINARY_TEST(fmul, 2s, 2s, 2s)
+GEN_BINARY_TEST(fdiv, 2d, 2d, 2d)
+GEN_BINARY_TEST(fdiv, 4s, 4s, 4s)
+GEN_BINARY_TEST(fdiv, 2s, 2s, 2s)
+GEN_BINARY_TEST(fmla, 2d, 2d, 2d)
+GEN_BINARY_TEST(fmla, 4s, 4s, 4s)
+GEN_BINARY_TEST(fmla, 2s, 2s, 2s)
+GEN_BINARY_TEST(fmls, 2d, 2d, 2d)
+GEN_BINARY_TEST(fmls, 4s, 4s, 4s)
+GEN_BINARY_TEST(fmls, 2s, 2s, 2s)
+GEN_BINARY_TEST(fabd, 2d, 2d, 2d)
+GEN_BINARY_TEST(fabd, 4s, 4s, 4s)
+GEN_BINARY_TEST(fabd, 2s, 2s, 2s)
GEN_THREEVEC_TEST(add_d_d_d, "add d21, d22, d23", 21, 22, 23)
GEN_THREEVEC_TEST(sub_d_d_d, "sub d21, d22, d23", 21, 22, 23)
/* overkill -- don't need two vecs, only one */
-GEN_TWOVEC_TEST(fmov_scalar_imm_01, "fmov d22, #0.125", 22, 23)
-GEN_TWOVEC_TEST(fmov_scalar_imm_02, "fmov d22, #-4.0", 22, 23)
-GEN_TWOVEC_TEST(fmov_scalar_imm_03, "fmov d22, #1.0", 22, 23)
-GEN_TWOVEC_TEST(fmov_scalar_imm_04, "fmov s22, #0.125", 22, 23)
-GEN_TWOVEC_TEST(fmov_scalar_imm_05, "fmov s22, #-4.0", 22, 23)
-GEN_TWOVEC_TEST(fmov_scalar_imm_06, "fmov s22, #-1.0", 22, 23)
-
-GEN_ONEINT_ONEVEC_TEST(fmov_gen_01, "fmov s7, w15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(fmov_gen_02, "fmov d7, x15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(fmov_gen_03, "fmov v7.d[1], x15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(fmov_gen_04, "fmov w15, s7", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(fmov_gen_05, "fmov x15, d7", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(fmov_gen_06, "fmov x15, v7.d[1]", 15, 7)
-
-GEN_TWOVEC_TEST(movi_vector_imm_01, "fmov d22, #0.125", 22, 23)
-GEN_TWOVEC_TEST(movi_vector_imm_02, "fmov d22, #-4.0", 22, 23)
-GEN_TWOVEC_TEST(movi_vector_imm_03, "fmov d22, #1.0", 22, 23)
-GEN_TWOVEC_TEST(movi_vector_imm_04, "fmov v22.2d, #0.125", 22, 23)
-GEN_TWOVEC_TEST(movi_vector_imm_05, "fmov v22.2d, #-4.0", 22, 23)
-GEN_TWOVEC_TEST(movi_vector_imm_06, "fmov v22.2d, #1.0", 22, 23)
-
-GEN_ONEINT_ONEVEC_TEST(sucvtf_01, "scvtf s7, w15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_02, "scvtf d7, w15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_03, "scvtf s7, x15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_04, "scvtf d7, x15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_05, "ucvtf s7, w15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_06, "ucvtf d7, w15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_07, "ucvtf s7, x15", 15, 7)
-GEN_ONEINT_ONEVEC_TEST(sucvtf_08, "ucvtf d7, x15", 15, 7)
-
-GEN_THREEVEC_TEST(fadd_d, "fadd d2, d11, d29", 2, 11, 29)
-GEN_THREEVEC_TEST(fadd_s, "fadd s2, s11, s29", 2, 11, 29)
-GEN_THREEVEC_TEST(fsub_d, "fsub d2, d11, d29", 2, 11, 29)
-GEN_THREEVEC_TEST(fsub_s, "fsub s2, s11, s29", 2, 11, 29)
-GEN_THREEVEC_TEST(fmul_d, "fmul d2, d11, d29", 2, 11, 29)
-GEN_THREEVEC_TEST(fmul_s, "fmul s2, s11, s29", 2, 11, 29)
-GEN_THREEVEC_TEST(fdiv_d, "fdiv d2, d11, d29", 2, 11, 29)
-GEN_THREEVEC_TEST(fdiv_s, "fdiv s2, s11, s29", 2, 11, 29)
-GEN_THREEVEC_TEST(fnmul_d, "fnmul d2, d11, d29", 2, 11, 29)
-GEN_THREEVEC_TEST(fnmul_s, "fnmul s2, s11, s29", 2, 11, 29)
-
-GEN_THREEVEC_TEST(fabd_d, "fabd d2, d11, d29", 2, 11, 29)
-GEN_THREEVEC_TEST(fabd_s, "fabd s2, s11, s29", 2, 11, 29)
-
-GEN_TWOVEC_TEST(fmov_d, "fmov d22, d23", 22, 23)
-GEN_TWOVEC_TEST(fmov_s, "fmov s22, s23", 22, 23)
-GEN_TWOVEC_TEST(fabs_d, "fabs d22, d23", 22, 23)
-GEN_TWOVEC_TEST(fabs_s, "fabs s22, s23", 22, 23)
-GEN_TWOVEC_TEST(fneg_d, "fneg d22, d23", 22, 23)
-GEN_TWOVEC_TEST(fneg_s, "fneg s22, s23", 22, 23)
-GEN_TWOVEC_TEST(fsqrt_d, "fsqrt d22, d23", 22, 23)
-GEN_TWOVEC_TEST(fsqrt_s, "fsqrt s22, s23", 22, 23)
+GEN_TWOVEC_TEST(fmov_d_imm_01, "fmov d22, #0.125", 22, 23)
+GEN_TWOVEC_TEST(fmov_d_imm_02, "fmov d22, #-4.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_d_imm_03, "fmov d22, #1.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_s_imm_01, "fmov s22, #0.125", 22, 23)
+GEN_TWOVEC_TEST(fmov_s_imm_02, "fmov s22, #-4.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_s_imm_03, "fmov s22, #-1.0", 22, 23)
+
+GEN_ONEINT_ONEVEC_TEST(fmov_s_w, "fmov s7, w15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(fmov_d_x, "fmov d7, x15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(fmov_d1_x, "fmov v7.d[1], x15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(fmov_w_s, "fmov w15, s7", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(fmov_x_d, "fmov x15, d7", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(fmov_x_d1, "fmov x15, v7.d[1]", 15, 7)
+
+GEN_TWOVEC_TEST(fmov_2d_imm_01, "fmov v22.2d, #0.125", 22, 23)
+GEN_TWOVEC_TEST(fmov_2d_imm_02, "fmov v22.2d, #-4.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_2d_imm_03, "fmov v22.2d, #1.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_4s_imm_01, "fmov v22.4s, #0.125", 22, 23)
+GEN_TWOVEC_TEST(fmov_4s_imm_02, "fmov v22.4s, #-4.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_4s_imm_03, "fmov v22.4s, #1.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_2s_imm_01, "fmov v22.2s, #0.125", 22, 23)
+GEN_TWOVEC_TEST(fmov_2s_imm_02, "fmov v22.2s, #-4.0", 22, 23)
+GEN_TWOVEC_TEST(fmov_2s_imm_03, "fmov v22.2s, #1.0", 22, 23)
+
+GEN_ONEINT_ONEVEC_TEST(scvtf_s_w, "scvtf s7, w15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(scvtf_d_w, "scvtf d7, w15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(scvtf_s_x, "scvtf s7, x15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(scvtf_d_x, "scvtf d7, x15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(ucvtf_s_w, "ucvtf s7, w15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(ucvtf_d_w, "ucvtf d7, w15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(ucvtf_s_x, "ucvtf s7, x15", 15, 7)
+GEN_ONEINT_ONEVEC_TEST(ucvtf_d_x, "ucvtf d7, x15", 15, 7)
+
+GEN_THREEVEC_TEST(fadd_d_d_d, "fadd d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(fadd_s_s_s, "fadd s2, s11, s29", 2, 11, 29)
+GEN_THREEVEC_TEST(fsub_d_d_d, "fsub d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(fsub_s_s_s, "fsub s2, s11, s29", 2, 11, 29)
+GEN_THREEVEC_TEST(fmul_d_d_d, "fmul d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(fmul_s_s_s, "fmul s2, s11, s29", 2, 11, 29)
+GEN_THREEVEC_TEST(fdiv_d_d_d, "fdiv d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(fdiv_s_s_s, "fdiv s2, s11, s29", 2, 11, 29)
+GEN_THREEVEC_TEST(fnmul_d_d_d, "fnmul d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(fnmul_s_s_s, "fnmul s2, s11, s29", 2, 11, 29)
+
+GEN_THREEVEC_TEST(fabd_d_d_d, "fabd d2, d11, d29", 2, 11, 29)
+GEN_THREEVEC_TEST(fabd_s_s_s, "fabd s2, s11, s29", 2, 11, 29)
+
+GEN_TWOVEC_TEST(fmov_d_d, "fmov d22, d23", 22, 23)
+GEN_TWOVEC_TEST(fmov_s_s, "fmov s22, s23", 22, 23)
+GEN_TWOVEC_TEST(fabs_d_d, "fabs d22, d23", 22, 23)
+GEN_TWOVEC_TEST(fabs_s_s, "fabs s22, s23", 22, 23)
+GEN_TWOVEC_TEST(fneg_d_d, "fneg d22, d23", 22, 23)
+GEN_TWOVEC_TEST(fneg_s_s, "fneg s22, s23", 22, 23)
+GEN_TWOVEC_TEST(fsqrt_d_d, "fsqrt d22, d23", 22, 23)
+GEN_TWOVEC_TEST(fsqrt_s_s, "fsqrt s22, s23", 22, 23)
GEN_UNARY_TEST(fneg, 2d, 2d)
GEN_UNARY_TEST(fneg, 4s, 4s)
@@ -1190,21 +1208,21 @@
GEN_UNARY_TEST(fabs, 4s, 4s)
GEN_UNARY_TEST(fabs, 2s, 2s)
-GEN_BINARY_TEST(fcmeq, 2d)
-GEN_BINARY_TEST(fcmeq, 4s)
-GEN_BINARY_TEST(fcmeq, 2s)
-GEN_BINARY_TEST(fcmge, 2d)
-GEN_BINARY_TEST(fcmge, 4s)
-GEN_BINARY_TEST(fcmge, 2s)
-GEN_BINARY_TEST(fcmgt, 2d)
-GEN_BINARY_TEST(fcmgt, 4s)
-GEN_BINARY_TEST(fcmgt, 2s)
-GEN_BINARY_TEST(facge, 2d)
-GEN_BINARY_TEST(facge, 4s)
-GEN_BINARY_TEST(facge, 2s)
-GEN_BINARY_TEST(facgt, 2d)
-GEN_BINARY_TEST(facgt, 4s)
-GEN_BINARY_TEST(facgt, 2s)
+GEN_BINARY_TEST(fcmeq, 2d, 2d, 2d)
+GEN_BINARY_TEST(fcmeq, 4s, 4s, 4s)
+GEN_BINARY_TEST(fcmeq, 2s, 2s, 2s)
+GEN_BINARY_TEST(fcmge, 2d, 2d, 2d)
+GEN_BINARY_TEST(fcmge, 4s, 4s, 4s)
+GEN_BINARY_TEST(fcmge, 2s, 2s, 2s)
+GEN_BINARY_TEST(fcmgt, 2d, 2d, 2d)
+GEN_BINARY_TEST(fcmgt, 4s, 4s, 4s)
+GEN_BINARY_TEST(fcmgt, 2s, 2s, 2s)
+GEN_BINARY_TEST(facge, 2d, 2d, 2d)
+GEN_BINARY_TEST(facge, 4s, 4s, 4s)
+GEN_BINARY_TEST(facge, 2s, 2s, 2s)
+GEN_BINARY_TEST(facgt, 2d, 2d, 2d)
+GEN_BINARY_TEST(facgt, 4s, 4s, 4s)
+GEN_BINARY_TEST(facgt, 2s, 2s, 2s)
// Uses v15 as the first table entry
GEN_THREEVEC_TEST(
@@ -1280,515 +1298,1084 @@
"tbx v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b",
21, 15, 23)
-GEN_TWOVEC_TEST(cmge_zero_2d, "cmge v5.2d, v22.2d, #0", 5, 22)
-GEN_TWOVEC_TEST(cmge_zero_4s, "cmge v5.4s, v22.4s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmge_zero_2s, "cmge v5.2s, v22.2s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmge_zero_8h, "cmge v5.8h, v22.8h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmge_zero_4h, "cmge v5.4h, v22.4h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmge_zero_16b, "cmge v5.16b, v22.16b, #0", 5, 22)
-GEN_TWOVEC_TEST(cmge_zero_8b, "cmge v5.8b, v22.8b, #0", 5, 22)
-
-GEN_TWOVEC_TEST(cmgt_zero_2d, "cmgt v5.2d, v22.2d, #0", 5, 22)
-GEN_TWOVEC_TEST(cmgt_zero_4s, "cmgt v5.4s, v22.4s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmgt_zero_2s, "cmgt v5.2s, v22.2s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmgt_zero_8h, "cmgt v5.8h, v22.8h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmgt_zero_4h, "cmgt v5.4h, v22.4h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmgt_zero_16b, "cmgt v5.16b, v22.16b, #0", 5, 22)
-GEN_TWOVEC_TEST(cmgt_zero_8b, "cmgt v5.8b, v22.8b, #0", 5, 22)
-
-GEN_TWOVEC_TEST(cmle_zero_2d, "cmle v5.2d, v22.2d, #0", 5, 22)
-GEN_TWOVEC_TEST(cmle_zero_4s, "cmle v5.4s, v22.4s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmle_zero_2s, "cmle v5.2s, v22.2s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmle_zero_8h, "cmle v5.8h, v22.8h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmle_zero_4h, "cmle v5.4h, v22.4h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmle_zero_16b, "cmle v5.16b, v22.16b, #0", 5, 22)
-GEN_TWOVEC_TEST(cmle_zero_8b, "cmle v5.8b, v22.8b, #0", 5, 22)
-
-GEN_TWOVEC_TEST(cmeq_zero_2d, "cmeq v5.2d, v22.2d, #0", 5, 22)
-GEN_TWOVEC_TEST(cmeq_zero_4s, "cmeq v5.4s, v22.4s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmeq_zero_2s, "cmeq v5.2s, v22.2s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmeq_zero_8h, "cmeq v5.8h, v22.8h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmeq_zero_4h, "cmeq v5.4h, v22.4h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmeq_zero_16b, "cmeq v5.16b, v22.16b, #0", 5, 22)
-GEN_TWOVEC_TEST(cmeq_zero_8b, "cmeq v5.8b, v22.8b, #0", 5, 22)
-
-GEN_TWOVEC_TEST(cmlt_zero_2d, "cmlt v5.2d, v22.2d, #0", 5, 22)
-GEN_TWOVEC_TEST(cmlt_zero_4s, "cmlt v5.4s, v22.4s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmlt_zero_2s, "cmlt v5.2s, v22.2s, #0", 5, 22)
-GEN_TWOVEC_TEST(cmlt_zero_8h, "cmlt v5.8h, v22.8h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmlt_zero_4h, "cmlt v5.4h, v22.4h, #0", 5, 22)
-GEN_TWOVEC_TEST(cmlt_zero_16b, "cmlt v5.16b, v22.16b, #0", 5, 22)
-GEN_TWOVEC_TEST(cmlt_zero_8b, "cmlt v5.8b, v22.8b, #0", 5, 22)
-
+GEN_TWOVEC_TEST(cmge_zero_2d_2d, "cmge v5.2d, v22.2d, #0", 5, 22)
+GEN_TWOVEC_TEST(cmge_zero_4s_4s, "cmge v5.4s, v22.4s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmge_zero_2s_2s, "cmge v5.2s, v22.2s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmge_zero_8h_8h, "cmge v5.8h, v22.8h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmge_zero_4h_4h, "cmge v5.4h, v22.4h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmge_zero_16b_16b, "cmge v5.16b, v22.16b, #0", 5, 22)
+GEN_TWOVEC_TEST(cmge_zero_8b_8b, "cmge v5.8b, v22.8b, #0", 5, 22)
+
+GEN_TWOVEC_TEST(cmgt_zero_2d_2d, "cmgt v5.2d, v22.2d, #0", 5, 22)
+GEN_TWOVEC_TEST(cmgt_zero_4s_4s, "cmgt v5.4s, v22.4s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmgt_zero_2s_2s, "cmgt v5.2s, v22.2s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmgt_zero_8h_8h, "cmgt v5.8h, v22.8h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmgt_zero_4h_4h, "cmgt v5.4h, v22.4h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmgt_zero_16b_16b, "cmgt v5.16b, v22.16b, #0", 5, 22)
+GEN_TWOVEC_TEST(cmgt_zero_8b_8b, "cmgt v5.8b, v22.8b, #0", 5, 22)
+
+GEN_TWOVEC_TEST(cmle_zero_2d_2d, "cmle v5.2d, v22.2d, #0", 5, 22)
+GEN_TWOVEC_TEST(cmle_zero_4s_4s, "cmle v5.4s, v22.4s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmle_zero_2s_2s, "cmle v5.2s, v22.2s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmle_zero_8h_8h, "cmle v5.8h, v22.8h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmle_zero_4h_4h, "cmle v5.4h, v22.4h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmle_zero_16b_16b, "cmle v5.16b, v22.16b, #0", 5, 22)
+GEN_TWOVEC_TEST(cmle_zero_8b_8b, "cmle v5.8b, v22.8b, #0", 5, 22)
+
+GEN_TWOVEC_TEST(cmeq_zero_2d_2d, "cmeq v5.2d, v22.2d, #0", 5, 22)
+GEN_TWOVEC_TEST(cmeq_zero_4s_4s, "cmeq v5.4s, v22.4s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmeq_zero_2s_2s, "cmeq v5.2s, v22.2s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmeq_zero_8h_8h, "cmeq v5.8h, v22.8h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmeq_zero_4h_4h, "cmeq v5.4h, v22.4h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmeq_zero_16b_16b, "cmeq v5.16b, v22.16b, #0", 5, 22)
+GEN_TWOVEC_TEST(cmeq_zero_8b_8b, "cmeq v5.8b, v22.8b, #0", 5, 22)
+
+GEN_TWOVEC_TEST(cmlt_zero_2d_2d, "cmlt v5.2d, v22.2d, #0", 5, 22)
+GEN_TWOVEC_TEST(cmlt_zero_4s_4s, "cmlt v5.4s, v22.4s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmlt_zero_2s_2s, "cmlt v5.2s, v22.2s, #0", 5, 22)
+GEN_TWOVEC_TEST(cmlt_zero_8h_8h, "cmlt v5.8h, v22.8h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmlt_zero_4h_4h, "cmlt v5.4h, v22.4h, #0", 5, 22)
+GEN_TWOVEC_TEST(cmlt_zero_16b_16b, "cmlt v5.16b, v22.16b, #0", 5, 22)
+GEN_TWOVEC_TEST(cmlt_zero_8b_8b, "cmlt v5.8b, v22.8b, #0", 5, 22)
+
+
+/* ---------------------------------------------------------------- */
+/* -- main() -- */
+/* ---------------------------------------------------------------- */
-
-/* IMPORTANT: keep the tests in here in the same order as the
- implementations are in guest_arm64_toIR.c. */
int main ( void )
{
assert(sizeof(V128) == 16);
- printf("BEGIN: FMOV (general)\n");
- test_fmov_gen_01();
- test_fmov_gen_02();
- test_fmov_gen_03();
- test_fmov_gen_04();
- test_fmov_gen_05();
- test_fmov_gen_06();
- printf("END: FMOV (general)\n\n");
-
- printf("BEGIN: FMOV (scalar, immediate)\n");
- test_fmov_scalar_imm_01();
- test_fmov_scalar_imm_02();
- test_fmov_scalar_imm_03();
- test_fmov_scalar_imm_04();
- test_fmov_scalar_imm_05();
- test_fmov_scalar_imm_06();
- printf("END: FMOV (scalar, immediate)\n\n");
-
- printf("BEGIN: {FMOV,MOVI} (vector, immediate)\n");
- test_movi_vector_imm_01();
- test_movi_vector_imm_02();
- test_movi_vector_imm_03();
- test_movi_vector_imm_04();
- test_movi_vector_imm_05();
- test_movi_vector_imm_06();
- printf("END: {FMOV,MOVI} (vector, immediate)\n\n");
-
- printf("BEGIN: {S,U}CVTF (scalar, integer)\n");
- test_sucvtf_01();
- test_sucvtf_02();
- test_sucvtf_03();
- test_sucvtf_04();
- test_sucvtf_05();
- test_sucvtf_06();
- test_sucvtf_07();
- test_sucvtf_08();
- printf("END: {S,U}CVTF (scalar, integer)\n\n");
-
- printf("BEGIN: F{ADD,SUB,MUL,DIV,NMUL} (scalar)\n");
- test_fadd_d();
- test_fadd_s();
- test_fsub_d();
- test_fsub_s();
- test_fmul_d();
- test_fmul_s();
- test_fdiv_d();
- test_fdiv_s();
- test_fnmul_d();
- test_fnmul_s();
- printf("END: F{ADD,SUB,MUL,DIV,NMUL} (scalar)\n\n");
-
- printf("BEGIN: F{MOV,ABS,NEG,SQRT} D/D or S/S\n");
- test_fmov_d();
- test_fmov_s();
- test_fabs_d();
- test_fabs_s();
- test_fneg_d();
- test_fneg_s();
- test_fsqrt_d();
- test_fsqrt_s();
- printf("END: F{MOV,ABS,NEG,SQRT} D/D or S/S\n\n");
-
- printf("BEGIN: F{ABS,NEG} (vector)\n");
- test_fabs_2d_2d();
- test_fabs_4s_4s();
- test_fabs_2s_2s();
- test_fneg_2d_2d();
- test_fneg_4s_4s();
- test_fneg_2s_2s();
- printf("END: F{ABS,NEG} (vector)\n\n");
-
- printf("FCMP,FCMPE MISSING\n\n");
-
- printf("F{N}M{ADD,SUB} MISSING\n\n");
-
- printf("FCVT{N,P,M,Z}{S,U} (scalar, integer) MISSING\n\n");
-
- printf("FRINT{I,M,P,Z} (scalar) MISSING\n\n");
-
- printf("FCVT (scalar) MISSING\n\n");
-
- printf("BEGIN: FABD (scalar) MISSING\n");
- test_fabd_d();
- test_fabd_s();
- printf("END: FABD (scalar) MISSING\n\n");
-
- printf("{S,U}CVTF (vector, integer) MISSING\n\n");
-
- printf("BEGIN: F{ADD,SUB,MUL,DIV,MLA,MLS,ABD} (vector)\n");
- test_fadd_2d();
- test_fadd_4s();
- test_fadd_2s();
- test_fsub_2d();
- test_fsub_4s();
- test_fsub_2s();
- test_fmul_2d();
- test_fmul_4s();
- test_fmul_2s();
- test_fdiv_2d();
- test_fdiv_4s();
- test_fdiv_2s();
- test_fmla_2d();
- test_fmla_4s();
- test_fmla_2s();
- test_fmls_2d();
- test_fmls_4s();
- test_fmls_2s();
- test_fabd_2d();
- test_fabd_4s();
- test_fabd_2s();
- printf("END: F{ADD,SUB,MUL,DIV,MLA,MLS,ABD} (vector)\n\n");
-
- printf("BEGIN: FCM{EQ,GE,GT}, FAC{GE,GT} (vector)\n");
- test_fcmeq_2d();
- test_fcmeq_4s();
- test_fcmeq_2s();
- test_fcmge_2d();
- test_fcmge_4s();
- test_fcmge_2s();
- test_fcmgt_2d();
- test_fcmgt_4s();
- test_fcmgt_2s();
- test_facge_2d();
- test_facge_4s();
- test_facge_2s();
- test_facgt_2d();
- test_facgt_4s();
- test_facgt_2s();
- printf("END: FCM{EQ,GE,GT}, FAC{GE,GT} (vector)\n");
-
- printf("BEGIN: FCVTN (MISSING 16F <- 32F cases)\n");
- test_fcvtn_01();
- test_fcvtn_02();
- printf("END: FCVTN (MISSING 16F <- 32F cases)\n\n");
-
- printf("BEGIN: ADD/SUB (vector)\n");
- test_add_2d();
- test_add_4s();
- test_add_2s();
- test_add_8h();
- test_add_4h();
- test_add_16b();
- test_add_8b();
- test_sub_2d();
- test_sub_4s();
- test_sub_2s();
- test_sub_8h();
- test_sub_4h();
- test_sub_16b();
- test_sub_8b();
- printf("END: ADD/SUB (vector)\n\n");
-
- printf("BEGIN: ADD/SUB (scalar)\n");
- test_add_d_d_d();
- test_sub_d_d_d();
- printf("END: ADD/SUB (scalar)\n\n");
-
- printf("BEGIN: MUL/PMUL/MLA/MLS (vector)\n");
- test_mul_4s();
- test_mul_2s();
- test_mul_8h();
- test_mul_4h();
- test_mul_16b();
- test_mul_8b();
- test_mla_4s();
- test_mla_2s();
- test_mla_8h();
- test_mla_4h();
- test_mla_16b();
- test_mla_8b();
- test_mls_4s();
- test_mls_2s();
- test_mls_8h();
- test_mls_4h();
- test_mls_16b();
- test_mls_8b();
- printf("END: MUL/PMUL/MLA/MLS (vector) (MISSING PMUL)\n\n");
-
- printf("BEGIN: {S,U}{MIN,MAX} (vector)\n");
- test_umax_4s();
- test_umax_8h();
- test_umax_4h();
- test_umax_16b();
- test_umax_8b();
- test_umin_4s();
- test_umin_8h();
- test_umin_4h();
- test_umin_16b();
- test_umin_8b();
- test_smax_4s();
- test_smax_8h();
- test_smax_4h();
- test_smax_16b();
- test_smax_8b();
- test_smin_4s();
- test_smin_8h();
- test_smin_4h();
- test_smin_16b();
- test_smin_8b();
- printf("END: {S,U}{MIN,MAX} (vector)\n\n");
+ // ======================== FP ========================
- printf("BEGIN: {S,U}{MIN,MAX}V\n");
- test_UMINV();
- test_UMAXV();
- test_SMINV();
- test_SMAXV();
- printf("END: {S,U}{MIN,MAX}V\n\n");
+ // fabs d,s
+ // fabs 2d,4s,2s
+ test_fabs_d_d(TyDF);
+ test_fabs_s_s(TySF);
+ test_fabs_2d_2d(TyDF);
+ test_fabs_4s_4s(TySF);
+ test_fabs_2s_2s(TyDF);
+ test_fneg_2d_2d(TySF);
+ test_fneg_4s_4s(TyDF);
+ test_fneg_2s_2s(TySF);
+
+ // fneg d,s
+ // fneg 2d,4s,2s
+ test_fneg_d_d(TyDF);
+ test_fneg_s_s(TySF);
+
+ // fsqrt d,s
+ // fsqrt 2d,4s,2s
+ test_fsqrt_d_d(TyDF);
+ test_fsqrt_s_s(TySF);
+
+ // fadd d,s
+ // fsub d,s
+ test_fadd_d_d_d(TyDF);
+ test_fadd_s_s_s(TySF);
+ test_fsub_d_d_d(TyDF);
+ test_fsub_s_s_s(TySF);
+
+ // fadd 2d,4s,2s
+ // fsub 2d,4s,2s
+ test_fadd_2d_2d_2d(TyDF);
+ test_fadd_4s_4s_4s(TySF);
+ test_fadd_2s_2s_2s(TySF);
+ test_fsub_2d_2d_2d(TyDF);
+ test_fsub_4s_4s_4s(TySF);
+ test_fsub_2s_2s_2s(TySF);
+
+ // fabd d,s
+ // fabd 2d,4s,2s
+ test_fabd_d_d_d(TyDF);
+ test_fabd_s_s_s(TySF);
+ test_fabd_2d_2d_2d(TyDF);
+ test_fabd_4s_4s_4s(TySF);
+ test_fabd_2s_2s_2s(TySF);
+
+ // faddp d,s (floating add pair)
+ // faddp 2d,4s,2s
+
+ // fccmp d,s (floating point conditional quiet compare)
+ // fccmpe d,s (floating point conditional signaling compare)
+
+ // fcmeq d,s
+ // fcmge d,s
+ // fcmgt d,s
+ // facgt d,s (floating abs compare GE)
+ // facge d,s (floating abs compare GE)
+
+ // fcmeq 2d,4s,2s
+ // fcmge 2d,4s,2s
+ // fcmgt 2d,4s,2s
+ // facge 2d,4s,2s
+ // facgt 2d,4s,2s
+ test_fcmeq_2d_2d_2d(TyDF);
+ test_fcmeq_4s_4s_4s(TySF);
+ test_fcmeq_2s_2s_2s(TySF);
+ test_fcmge_2d_2d_2d(TyDF);
+ test_fcmge_4s_4s_4s(TySF);
+ test_fcmge_2s_2s_2s(TySF);
+ test_fcmgt_2d_2d_2d(TyDF);
+ test_fcmgt_4s_4s_4s(TySF);
+ test_fcmgt_2s_2s_2s(TySF);
+ test_facge_2d_2d_2d(TyDF);
+ test_facge_4s_4s_4s(TySF);
+ test_facge_2s_2s_2s(TySF);
+ test_facgt_2d_2d_2d(TyDF);
+ test_facgt_4s_4s_4s(TySF);
+ test_facgt_2s_2s_2s(TySF);
+
+ // fcmeq_z d,s
+ // fcmge_z d,s
+ // fcmgt_z d,s
+ // fcmle_z d,s
+ // fcmlt_z d,s
+
+ // fcmeq_z 2d,4s,2s
+ // fcmge_z 2d,4s,2s
+ // fcmgt_z 2d,4s,2s
+ // fcmle_z 2d,4s,2s
+ // fcmlt_z 2d,4s,2s
+
+ // fcmp_z d,s
+ // fcmpe_z d,s
+ // fcmp d,s (floating point quiet, set flags)
+ // fcmpe d,s (floating point signaling, set flags)
+
+ // fcsel d,s (fp cond select)
+
+ // fdiv d,s
+ // fdiv 2d,4s,2s
+ test_fdiv_d_d_d(TyDF);
+ test_fdiv_s_s_s(TySF);
+ test_fdiv_2d_2d_2d(TyDF);
+ test_fdiv_4s_4s_4s(TySF);
+ test_fdiv_2s_2s_2s(TySF);
+
+ // fmadd d,s
+ // fnmadd d,s
+ // fmsub d,s
+ // fnmsub d,s
+
+ // fnmul d,s
+ test_fnmul_d_d_d(TyDF);
+ test_fnmul_s_s_s(TySF);
+
+ // fmax d,s
+ // fmin d,s
+ // fmaxnm d,s ("max number")
+ // fminnm d,s
+
+ // fmax 2d,4s,2s
+ // fmin 2d,4s,2s
+ // fmaxnm 2d,4s,2s
+ // fminnm 2d,4s,2s
+
+ // fmaxnmp d_2d,s_2s ("max number pairwise")
+ // fminnmp d_2d,s_2s
+
+ // fmaxnmp 2d,4s,2s
+ // fminnmp 2d,4s,2s
+
+ // fmaxnmv s_4s (maxnum across vector)
+ // fminnmv s_4s
+
+ // fmaxp d_2d,s_2s (max of a pair)
+ // fminp d_2d,s_2s (max of a pair)
+
+ // fmaxp 2d,4s,2s (max pairwise)
+ // fminp 2d,4s,2s
+
+ // fmaxv s_4s (max across vector)
+ // fminv s_4s
+
+ // fmla 2d,4s,2s
+ // fmls 2d,4s,2s
+ test_fmla_2d_2d_2d(TyDF);
+ test_fmla_4s_4s_4s(TySF);
+ test_fmla_2s_2s_2s(TySF);
+ test_fmls_2d_2d_2d(TyDF);
+ test_fmls_4s_4s_4s(TySF);
+ test_fmls_2s_2s_2s(TySF);
+
+ // fmla d_d_d[],s_s_s[] (by element)
+ // fmls d_d_d[],s_s_s[] (by element)
+
+ // fmla 2d_2d_d[],4s_4s_s[],2s_2s_s[]
+ // fmls 2d_2d_d[],4s_4s_s[],2s_2s_s[]
+
+ // fmov 2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group)
+ // INCOMPLETE
+ test_fmov_2d_imm_01(TyD);
+ test_fmov_2d_imm_02(TyD);
+ test_fmov_2d_imm_03(TyD);
+ if (0) test_fmov_4s_imm_01(TyS);
+ if (0) test_fmov_4s_imm_02(TyS);
+ if (0) test_fmov_4s_imm_03(TyS);
+ if (0) test_fmov_2s_imm_01(TyS);
+ if (0) test_fmov_2s_imm_02(TyS);
+ if (0) test_fmov_2s_imm_03(TyS);
+
+ // fmov d_d,s_s
+ test_fmov_d_d(TyDF);
+ test_fmov_s_s(TySF);
+
+ // fmov s_w,w_s,d_x,d[1]_x,x_d,x_d[1]
+ test_fmov_s_w(TyS);
+ test_fmov_d_x(TyD);
+ test_fmov_d1_x(TyD);
+ test_fmov_w_s(TyS);
+ test_fmov_x_d(TyD);
+ test_fmov_x_d1(TyD);
+
+ // fmov d,s #imm
+ test_fmov_d_imm_01(TyNONE);
+ test_fmov_d_imm_02(TyNONE);
+ test_fmov_d_imm_03(TyNONE);
+ test_fmov_s_imm_01(TyNONE);
+ test_fmov_s_imm_02(TyNONE);
+ test_fmov_s_imm_03(TyNONE);
+
+ // fmul d_d_d[],s_s_s[]
+ // fmul 2d_2d_d[],4s_4s_s[],2s_2s_s[]
+
+ // fmul 2d,4s,2s
+ // fmul d,s
+ test_fmul_d_d_d(TyDF);
+ test_fmul_s_s_s(TySF);
+ test_fmul_2d_2d_2d(TyDF);
+ test_fmul_4s_4s_4s(TySF);
+ test_fmul_2s_2s_2s(TySF);
+
+ // fmulx d_d_d[],s_s_s[]
+ // fmulx 2d_2d_d[],4s_4s_s[],2s_2s_s[]
+
+ // fmulx d,s
+ // fmulx 2d,4s,2s
+
+ // frecpe d,s (recip estimate)
+ // frecpe 2d,4s,2s
+
+ // frecps d,s (recip step)
+ // frecps 2d,4s,2s
+
+ // frecpx d,s (recip exponent)
+
+ // frinta d,s
+ // frinti d,s
+ // frintm d,s
+ // frintn d,s
+ // frintp d,s
+ // frintx d,s
+ // frintz d,s
+
+ // frinta 2d,4s,2s (round to integral, nearest away)
+ // frinti 2d,4s,2s (round to integral, per FPCR)
+ // frintm 2d,4s,2s (round to integral, minus inf)
+ // frintn 2d,4s,2s (round to integral, nearest, to even)
+ // frintp 2d,4s,2s (round to integral, plus inf)
+ // frintx 2d,4s,2s (round to integral exact, per FPCR)
+ // frintz 2d,4s,2s (round to integral, zero)
+
+ // frsqrte d,s (est)
+ // frsqrte 2d,4s,2s
+
+ // frsqrts d,s (step)
+ // frsqrts 2d,4s,2s
+
+ // ======================== CONV ========================
+
+ // fcvt s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar)
+
+ // fcvtl{2} 4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form)
+
+ // fcvtn{2} 4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form)
+ // INCOMPLETE
+ test_fcvtn_2s_2d(TyDF);
+ test_fcvtn_4s_2d(TyDF);
+
+ // fcvtas d,s (fcvt to signed int, nearest, ties away)
+ // fcvtau d,s (fcvt to unsigned int, nearest, ties away)
+ //...
[truncated message content] |
|
From: Philippe W. <phi...@sk...> - 2014-05-06 05:11:13
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.8.8-202.fc18.ppc64p7 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2014-05-05 20:00:21 PDT Ended at 2014-05-05 22:07:58 PDT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 578 tests, 32 stderr failures, 3 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 578 tests, 36 stderr failures, 7 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/jm-vmx (stderr) none/tests/ppc32/test_isa_2_06_part2 (stdout) none/tests/ppc32/test_isa_2_06_part2 (stderr) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/jm-vmx (stderr) none/tests/ppc64/test_isa_2_06_part2 (stdout) none/tests/ppc64/test_isa_2_06_part2 (stderr) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon May 5 20:44:11 2014 --- new.short Mon May 5 21:14:06 2014 *************** *** 8,10 **** ! == 578 tests, 36 stderr failures, 7 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) --- 8,10 ---- ! == 578 tests, 32 stderr failures, 3 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) *************** *** 18,27 **** massif/tests/deep-D (post) - none/tests/ppc32/jm-vmx (stdout) - none/tests/ppc32/jm-vmx (stderr) - none/tests/ppc32/test_isa_2_06_part2 (stdout) - none/tests/ppc32/test_isa_2_06_part2 (stderr) - none/tests/ppc64/jm-vmx (stdout) - none/tests/ppc64/jm-vmx (stderr) - none/tests/ppc64/test_isa_2_06_part2 (stdout) - none/tests/ppc64/test_isa_2_06_part2 (stderr) helgrind/tests/annotate_rwlock (stderr) --- 18,19 ---- --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=3 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.22s no: 1.6s ( 7.1x, -----) me: 2.8s (12.8x, -----) ca:18.0s (81.8x, -----) he: 1.7s ( 7.9x, -----) ca: 5.3s (24.2x, -----) dr: 1.7s ( 7.8x, -----) ma: 2.1s ( 9.7x, -----) bigcode1 valgrind-old:0.22s no: 1.6s ( 7.1x, -0.6%) me: 2.9s (13.0x, -1.8%) ca:18.5s (84.2x, -2.9%) he: 1.8s ( 8.0x, -0.6%) ca: 5.3s (24.3x, -0.6%) dr: 1.7s ( 7.6x, 2.3%) ma: 2.1s ( 9.6x, 1.4%) -- bigcode2 -- bigcode2 valgrind-new:0.23s no: 1.5s ( 6.7x, -----) me: 2.9s (12.7x, -----) ca:18.2s (79.3x, -----) he: 2.1s ( 9.1x, -----) ca: 5.4s (23.4x, -----) dr: 1.8s ( 8.0x, -----) ma: 2.1s ( 9.2x, -----) bigcode2 valgrind-old:0.23s no: 1.5s ( 6.6x, 0.7%) me: 3.1s (13.7x, -7.5%) ca:18.6s (81.0x, -2.1%) he: 2.1s ( 9.1x, 0.0%) ca: 5.5s (23.8x, -1.7%) dr: 1.8s ( 8.0x, -0.5%) ma: 2.1s ( 9.2x, 0.0%) -- bz2 -- bz2 valgrind-new:0.73s no: 4.6s ( 6.3x, -----) me:11.2s (15.3x, -----) ca:25.9s (35.4x, -----) he:14.7s (20.1x, -----) ca:24.5s (33.6x, -----) dr:19.2s (26.3x, -----) ma: 4.7s ( 6.4x, -----) bz2 valgrind-old:0.73s no: 4.6s ( 6.2x, 0.2%) me:11.7s (16.0x, -4.4%) ca:26.4s (36.2x, -2.1%) he:14.7s (20.2x, -0.6%) ca:24.3s (33.2x, 0.9%) dr:18.9s (26.0x, 1.1%) ma: 4.8s ( 6.5x, -2.8%) -- fbench -- fbench valgrind-new:0.34s no: 2.1s ( 6.2x, -----) me: 5.2s (15.4x, -----) ca: 8.5s (25.1x, -----) he: 5.2s (15.4x, -----) ca: 7.4s (21.9x, -----) dr: 4.8s (14.3x, -----) ma: 2.2s ( 6.4x, -----) fbench valgrind-old:0.34s no: 2.1s ( 6.2x, -1.0%) me: 5.3s (15.6x, -1.1%) ca: 8.6s (25.3x, -0.9%) he: 5.2s (15.4x, 0.4%) ca: 7.5s (21.9x, -0.3%) dr: 5.0s (14.8x, -3.5%) ma: 2.2s ( 6.6x, -3.7%) -- ffbench -- ffbench valgrind-new:0.44s no: 1.3s ( 3.0x, -----) me: 2.4s ( 5.5x, -----) ca: 2.5s ( 5.7x, -----) he: 7.2s (16.4x, -----) ca: 7.2s (16.2x, -----) dr: 4.9s (11.1x, -----) ma: 1.0s ( 2.3x, -----) ffbench valgrind-old:0.44s no: 1.3s ( 3.0x, -0.8%) me: 2.5s ( 5.6x, -1.2%) ca: 2.5s ( 5.8x, -2.0%) he: 7.4s (16.8x, -2.8%) ca: 6.9s (15.7x, 3.5%) dr: 5.0s (11.3x, -1.2%) ma: 1.0s ( 2.3x, -1.0%) -- heap -- heap valgrind-new:0.41s no: 2.4s ( 5.9x, -----) me: 9.8s (23.8x, -----) ca:13.2s (32.2x, -----) he:11.9s (29.1x, -----) ca:12.1s (29.4x, -----) dr: 8.6s (21.0x, -----) ma: 8.7s (21.3x, -----) heap valgrind-old:0.41s no: 2.5s ( 6.0x, -0.8%) me: 9.7s (23.5x, 1.2%) ca:13.5s (32.9x, -2.2%) he:11.9s (29.1x, 0.2%) ca:12.2s (29.7x, -0.9%) dr: 8.4s (20.5x, 2.4%) ma: 8.7s (21.2x, 0.5%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.43s no: 2.6s ( 6.0x, -----) me:13.7s (31.8x, -----) ca:14.3s (33.2x, -----) he:13.2s (30.7x, -----) ca:13.1s (30.5x, -----) dr: 9.5s (22.0x, -----) ma: 8.9s (20.8x, -----) heap_pdb4 valgrind-old:0.43s no: 2.6s ( 6.0x, 0.8%) me:13.6s (31.6x, 0.5%) ca:14.4s (33.5x, -0.8%) he:13.4s (31.1x, -1.3%) ca:13.2s (30.7x, -0.4%) dr: 9.4s (21.8x, 0.8%) ma: 8.8s (20.6x, 1.0%) -- many-loss-records -- many-loss-records valgrind-new:0.03s no: 0.5s (17.3x, -----) me: 2.2s (72.3x, -----) ca: 1.9s (62.7x, -----) he: 1.8s (60.7x, -----) ca: 1.9s (62.0x, -----) dr: 1.6s (53.7x, -----) ma: 1.6s (52.0x, -----) many-loss-records valgrind-old:0.03s no: 0.5s (17.7x, -1.9%) me: 2.1s (71.3x, 1.4%) ca: 1.9s (65.0x, -3.7%) he: 1.8s (60.0x, 1.1%) ca: 1.9s (62.0x, 0.0%) dr: 1.6s (52.0x, 3.1%) ma: 1.6s (52.3x, -0.6%) -- many-xpts -- many-xpts valgrind-new:0.07s no: 0.7s (10.6x, -----) me: 3.4s (48.3x, -----) ca: 4.7s (67.0x, -----) he: 4.9s (69.6x, -----) ca: 2.9s (41.3x, -----) dr: 2.3s (33.4x, -----) ma: 2.3s (32.3x, -----) many-xpts valgrind-old:0.07s no: 0.7s (10.4x, 1.4%) me: 3.3s (47.7x, 1.2%) ca: 4.8s (67.9x, -1.3%) he: 4.8s (69.0x, 0.8%) ca: 2.9s (41.0x, 0.7%) dr: 2.3s (32.7x, 2.1%) ma: 2.3s (32.4x, -0.4%) -- sarp -- sarp valgrind-new:0.02s no: 0.4s (20.0x, -----) me: 3.0s (151.5x, -----) ca: 3.0s (149.0x, -----) he:11.2s (558.5x, -----) ca: 1.7s (86.5x, -----) dr: 1.1s (54.5x, -----) ma: 0.4s (20.5x, -----) sarp valgrind-old:0.02s no: 0.4s (20.0x, 0.0%) me: 3.0s (152.0x, -0.3%) ca: 2.9s (147.0x, 1.3%) he:11.0s (549.5x, 1.6%) ca: 1.7s (85.5x, 1.2%) dr: 1.1s (54.0x, 0.9%) ma: 0.4s (21.0x, -2.4%) -- tinycc -- tinycc valgrind-new:0.27s no: 3.0s (11.0x, -----) me:13.8s (51.2x, -----) ca:17.5s (64.9x, -----) he:19.2s (71.3x, -----) ca:15.7s (58.3x, -----) dr:12.1s (44.6x, -----) ma: 3.8s (14.1x, -----) tinycc valgrind-old:0.27s no: 3.0s (11.0x, 0.0%) me:13.8s (51.0x, 0.4%) ca:17.7s (65.4x, -0.7%) he:19.0s (70.4x, 1.2%) ca:15.7s (58.0x, 0.5%) dr:12.1s (44.7x, -0.2%) ma: 3.8s (14.1x, -0.3%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 53m52.463s user 52m23.704s sys 0m20.509s |
|
From: Christian B. <bor...@de...> - 2014-05-06 04:12:32
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.5.1-0.7.29) Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.23.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.101-0.15-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP3 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP3 gcc 4.3.4 on z196 (s390x) ) Started at 2014-05-06 03:45:01 CEST Ended at 2014-05-06 06:12:20 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 645 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_cond_destroy_busy (stderr) --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=3 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.22s no: 4.3s (19.5x, -----) me: 6.7s (30.6x, -----) ca:26.4s (120.1x, -----) he: 5.0s (22.9x, -----) ca: 9.1s (41.5x, -----) dr: 5.2s (23.5x, -----) ma: 4.7s (21.4x, -----) bigcode1 valgrind-old:0.22s no: 4.3s (19.5x, -0.2%) me: 6.7s (30.6x, 0.1%) ca:26.4s (120.0x, 0.1%) he: 5.0s (22.9x, 0.0%) ca: 9.1s (41.4x, 0.3%) dr: 5.2s (23.5x, 0.0%) ma: 4.7s (21.3x, 0.2%) -- bigcode2 -- bigcode2 valgrind-new:0.24s no: 7.2s (29.8x, -----) me:13.7s (57.0x, -----) ca:39.6s (165.0x, -----) he:10.0s (41.8x, -----) ca:14.2s (59.3x, -----) dr: 9.3s (38.7x, -----) ma: 8.1s (33.7x, -----) bigcode2 valgrind-old:0.24s no: 7.2s (30.0x, -0.6%) me:13.6s (56.6x, 0.6%) ca:39.6s (164.9x, 0.1%) he:10.0s (41.8x, -0.1%) ca:14.2s (59.0x, 0.5%) dr: 9.3s (38.7x, 0.0%) ma: 8.1s (33.7x, 0.1%) -- bz2 -- bz2 valgrind-new:0.70s no: 5.0s ( 7.1x, -----) me:12.5s (17.9x, -----) ca:30.8s (43.9x, -----) he:19.7s (28.1x, -----) ca:34.4s (49.1x, -----) dr:29.5s (42.1x, -----) ma: 3.6s ( 5.2x, -----) bz2 valgrind-old:0.70s no: 5.0s ( 7.1x, 0.0%) me:12.5s (17.9x, 0.0%) ca:30.7s (43.9x, 0.1%) he:19.7s (28.1x, 0.0%) ca:34.3s (49.0x, 0.3%) dr:29.4s (42.1x, 0.1%) ma: 3.6s ( 5.2x, 0.0%) -- fbench -- fbench valgrind-new:0.41s no: 1.6s ( 3.9x, -----) me: 4.2s (10.2x, -----) ca: 9.3s (22.8x, -----) he: 6.3s (15.5x, -----) ca: 7.2s (17.6x, -----) dr: 5.5s (13.3x, -----) ma: 1.7s ( 4.1x, -----) fbench valgrind-old:0.41s no: 1.6s ( 3.9x, -0.6%) me: 4.2s (10.2x, 0.5%) ca: 9.3s (22.7x, 0.5%) he: 6.3s (15.4x, 0.6%) ca: 7.2s (17.5x, 0.7%) dr: 5.5s (13.3x, 0.0%) ma: 1.7s ( 4.1x, 0.6%) -- ffbench -- ffbench valgrind-new:0.20s no: 1.0s ( 5.2x, -----) me: 3.0s (14.8x, -----) ca: 3.0s (15.1x, -----) he:44.1s (220.5x, -----) ca: 9.6s (48.1x, -----) dr: 6.8s (34.2x, -----) ma: 1.0s ( 4.8x, -----) ffbench valgrind-old:0.20s no: 1.0s ( 5.2x, 0.0%) me: 3.0s (14.8x, 0.0%) ca: 3.0s (15.1x, -0.3%) he:44.0s (220.2x, 0.2%) ca: 9.6s (48.1x, 0.1%) dr: 6.8s (34.1x, 0.1%) ma: 1.0s ( 4.8x, 0.0%) -- heap -- heap valgrind-new:0.23s no: 1.8s ( 7.7x, -----) me: 8.7s (37.7x, -----) ca:13.1s (57.0x, -----) he:12.9s (56.3x, -----) ca:11.2s (48.7x, -----) dr: 7.8s (33.8x, -----) ma: 7.9s (34.2x, -----) heap valgrind-old:0.23s no: 1.8s ( 7.7x, 0.0%) me: 8.6s (37.6x, 0.2%) ca:13.1s (56.8x, 0.3%) he:13.0s (56.4x, -0.2%) ca:11.2s (48.6x, 0.2%) dr: 7.8s (33.7x, 0.3%) ma: 7.9s (34.2x, 0.0%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.22s no: 1.9s ( 8.9x, -----) me:12.7s (57.8x, -----) ca:14.3s (64.9x, -----) he:14.3s (65.1x, -----) ca:12.4s (56.3x, -----) dr: 8.4s (38.2x, -----) ma: 8.0s (36.1x, -----) heap_pdb4 valgrind-old:0.22s no: 2.0s ( 8.9x, -0.5%) me:12.7s (57.6x, 0.3%) ca:14.2s (64.8x, 0.2%) he:14.4s (65.5x, -0.6%) ca:12.3s (56.1x, 0.4%) dr: 8.5s (38.5x, -0.8%) ma: 8.0s (36.2x, -0.1%) -- many-loss-records -- many-loss-records valgrind-new:0.02s no: 0.5s (23.5x, -----) me: 2.0s (102.5x, -----) ca: 1.9s (96.5x, -----) he: 2.2s (109.0x, -----) ca: 1.9s (95.5x, -----) dr: 1.7s (85.0x, -----) ma: 1.6s (81.5x, -----) many-loss-records valgrind-old:0.02s no: 0.5s (23.5x, 0.0%) me: 2.0s (102.5x, 0.0%) ca: 1.9s (96.5x, 0.0%) he: 2.2s (109.0x, 0.0%) ca: 1.9s (95.5x, 0.0%) dr: 1.7s (85.0x, 0.0%) ma: 1.6s (81.5x, 0.0%) -- many-xpts -- many-xpts valgrind-new:0.07s no: 0.6s ( 8.6x, -----) me: 3.1s (44.4x, -----) ca:371.2s (5302.6x, -----) he: 6.7s (95.9x, -----) ca: 2.8s (39.9x, -----) dr: 2.5s (36.0x, -----) ma: 2.6s (36.9x, -----) many-xpts valgrind-old:0.07s no: 0.6s ( 8.6x, 0.0%) me: 3.1s (44.4x, 0.0%) ca:374.7s (5352.6x, -0.9%) he: 6.7s (96.0x, -0.1%) ca: 2.8s (39.7x, 0.4%) dr: 2.5s (36.0x, 0.0%) ma: 2.6s (36.9x, 0.0%) -- sarp -- sarp valgrind-new:0.03s no: 0.6s (19.0x, -----) me: 3.5s (116.3x, -----) ca: 3.2s (107.0x, -----) he:18.1s (604.3x, -----) ca: 2.0s (68.3x, -----) dr: 1.4s (45.0x, -----) ma: 0.5s (16.3x, -----) sarp valgrind-old:0.03s no: 0.6s (18.7x, 1.8%) me: 3.5s (116.0x, 0.3%) ca: 3.2s (107.0x, 0.0%) he:18.1s (604.7x, -0.1%) ca: 2.0s (68.3x, 0.0%) dr: 1.4s (45.0x, 0.0%) ma: 0.5s (16.3x, 0.0%) -- tinycc -- tinycc valgrind-new:0.22s no: 2.7s (12.1x, -----) me:14.5s (65.7x, -----) ca:30.0s (136.2x, -----) he:28.1s (127.6x, -----) ca:21.3s (96.9x, -----) dr:20.3s (92.1x, -----) ma: 4.0s (18.0x, -----) tinycc valgrind-old:0.22s no: 2.7s (12.1x, 0.4%) me:14.3s (65.0x, 1.0%) ca:29.9s (136.1x, 0.1%) he:28.1s (127.7x, -0.0%) ca:21.3s (96.8x, 0.1%) dr:20.3s (92.2x, -0.0%) ma: 4.0s (18.0x, 0.0%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 110m24.231s user 109m37.269s sys 0m40.782s |
|
From: Tom H. <to...@co...> - 2014-05-06 03:32:45
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) GDB: Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.13.10-200.fc20.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2014-05-06 03:51:11 BST Ended at 2014-05-06 04:32:26 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 649 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Rich C. <rc...@wi...> - 2014-05-06 03:01:40
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] GDB: GNU gdb (GDB) SUSE (7.5.1-2.1.1) Assembler: GNU assembler (GNU Binutils; openSUSE 12.3) 2.23.1 C library: GNU C Library (GNU libc) stable release version 2.17 (git c758a6861537) uname -mrs: Linux 3.7.9-1.1-desktop x86_64 Vendor version: Welcome to openSUSE 12.3 "Dartmouth" Beta 1 - Kernel %r (%t). Nightly build on ultra ( gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] Linux 3.7.9-1.1-desktop x86_64 ) Started at 2014-05-05 21:30:01 CDT Ended at 2014-05-05 22:01:27 CDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 671 tests, 0 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures == gdbserver_tests/mssnapshot (stderrB) ================================================= ./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff ================================================= --- mssnapshot.stderrB.exp 2014-05-05 21:46:22.151262767 -0500 +++ mssnapshot.stderrB.out 2014-05-05 21:50:28.672405581 -0500 @@ -1,5 +1,11 @@ relaying data between gdb and process .... +Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2 +Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158" vgdb-error value changed from 0 to 999999 +Missing separate debuginfo for /lib64/libpthread.so.0 +Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef" +Missing separate debuginfo for /lib64/libc.so.6 +Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7" general valgrind monitor commands: help [debug] : monitor command help. With debug: + debugging commands v.wait [<ms>] : sleep <ms> (default 0) then continue ================================================= ./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff ================================================= --- mssnapshot.stderrB.exp 2014-05-05 21:30:52.663237001 -0500 +++ mssnapshot.stderrB.out 2014-05-05 21:34:51.218502081 -0500 @@ -1,5 +1,11 @@ relaying data between gdb and process .... +Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2 +Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158" vgdb-error value changed from 0 to 999999 +Missing separate debuginfo for /lib64/libpthread.so.0 +Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef" +Missing separate debuginfo for /lib64/libc.so.6 +Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7" general valgrind monitor commands: help [debug] : monitor command help. With debug: + debugging commands v.wait [<ms>] : sleep <ms> (default 0) then continue |
|
From: Tom H. <to...@co...> - 2014-05-06 02:48:26
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.1-48.fc15) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.13.10-200.fc20.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2014-05-06 03:12:42 BST Ended at 2014-05-06 03:48:13 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 678 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Tom H. <to...@co...> - 2014-05-06 02:40:54
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.50.20110722-16.fc16) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.13.10-200.fc20.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2014-05-06 03:01:52 BST Ended at 2014-05-06 03:40:40 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 678 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Rich C. <rc...@wi...> - 2014-05-06 02:32:19
|
valgrind revision: 13935
VEX revision: 2853
C compiler: gcc (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
GDB: GNU gdb (GDB; openSUSE Factory) 7.6.50.20130731-cvs
Assembler: GNU assembler (GNU Binutils; openSUSE Factory) 2.23.2
C library: GNU C Library (GNU libc) stable release version 2.18 (git )
uname -mrs: Linux 3.11.4-3-desktop x86_64
Vendor version: Welcome to openSUSE 13.1 "Bottle" Beta 1 - Kernel %r (%t).
Nightly build on rodan ( Linux 3.11.4-3-desktop x86_64 )
Started at 2014-05-05 19:22:01 CDT
Ended at 2014-05-05 21:32:06 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 592 tests, 5 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/threadname (stderr)
memcheck/tests/threadname_xml (stderr)
exp-sgcheck/tests/hackedbz2 (stderr)
=================================================
./valgrind-new/exp-sgcheck/tests/hackedbz2.stderr.diff-glibc28-amd64
=================================================
--- hackedbz2.stderr.exp-glibc28-amd64 2014-05-05 20:26:10.276063076 -0500
+++ hackedbz2.stderr.out 2014-05-05 21:30:47.282038101 -0500
@@ -1,7 +1,6 @@
Invalid read of size 1
- at 0x........: vex_strlen (hackedbz2.c:1006)
- by 0x........: add_to_myprintf_buf (hackedbz2.c:1284)
+ at 0x........: add_to_myprintf_buf (hackedbz2.c:1006)
by 0x........: vex_printf (hackedbz2.c:1155)
by 0x........: BZ2_compressBlock (hackedbz2.c:4039)
by 0x........: handle_compress (hackedbz2.c:4761)
=================================================
./valgrind-new/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2014-05-05 20:26:48.847510522 -0500
+++ err_disable3.stderr.out 2014-05-05 20:48:45.926789238 -0500
@@ -10,8 +10,6 @@
Thread 2:
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
- by 0x........: child_fn (err_disable3.c:31)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-new/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2014-05-05 20:26:53.337562609 -0500
+++ err_disable4.stderr.out 2014-05-05 20:48:50.234839213 -0500
@@ -1501,8 +1501,6 @@
Thread x:
Invalid read of size 1
at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
=================================================
./valgrind-new/memcheck/tests/threadname.stderr.diff
=================================================
--- threadname.stderr.exp 2014-05-05 20:26:51.240538282 -0500
+++ threadname.stderr.out 2014-05-05 20:54:42.588926680 -0500
@@ -9,36 +9,12 @@
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_0 (threadname.c:53)
- ...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:15)
by 0x........: child_fn_0 (threadname.c:53)
...
-Thread 3 try1:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
- Address 0x........ is 0 bytes after a block of size 3 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
-
-Thread 4 012345678901234:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
- Address 0x........ is 0 bytes after a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
-
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
=================================================
./valgrind-new/memcheck/tests/threadname_xml.stderr.diff
=================================================
--- threadname_xml.stderr.exp 2014-05-05 20:26:52.554553525 -0500
+++ threadname_xml.stderr.out 2014-05-05 20:54:44.613950171 -0500
@@ -94,14 +94,6 @@
<file>threadname.c</file>
<line>...</line>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_0</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
</stack>
<auxwhat>Address 0x........ is 0 bytes after a block of size 2 alloc'd</auxwhat>
<stack>
@@ -135,112 +127,6 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
- <threadname>try1</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 3 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>malloc</fn>
- <dir>...</dir>
- <file>vg_replace_malloc.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
-</error>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <threadname>012345678901234</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_2</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 4 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-sgcheck/tests/hackedbz2.stderr.diff-glibc28-amd64
=================================================
--- hackedbz2.stderr.exp-glibc28-amd64 2014-05-05 19:23:02.569123960 -0500
+++ hackedbz2.stderr.out 2014-05-05 20:24:40.768024742 -0500
@@ -1,7 +1,6 @@
Invalid read of size 1
- at 0x........: vex_strlen (hackedbz2.c:1006)
- by 0x........: add_to_myprintf_buf (hackedbz2.c:1284)
+ at 0x........: add_to_myprintf_buf (hackedbz2.c:1006)
by 0x........: vex_printf (hackedbz2.c:1155)
by 0x........: BZ2_compressBlock (hackedbz2.c:4039)
by 0x........: handle_compress (hackedbz2.c:4761)
=================================================
./valgrind-old/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2014-05-05 19:22:35.033804538 -0500
+++ err_disable3.stderr.out 2014-05-05 19:42:45.893851063 -0500
@@ -10,8 +10,6 @@
Thread 2:
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
- by 0x........: child_fn (err_disable3.c:31)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-old/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2014-05-05 19:22:47.587950172 -0500
+++ err_disable4.stderr.out 2014-05-05 19:42:50.085899692 -0500
@@ -1501,8 +1501,6 @@
Thread x:
Invalid read of size 1
at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- ...
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
=================================================
./valgrind-old/memcheck/tests/threadname.stderr.diff
=================================================
--- threadname.stderr.exp 2014-05-05 19:22:28.190725155 -0500
+++ threadname.stderr.out 2014-05-05 19:48:43.668001405 -0500
@@ -9,36 +9,12 @@
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_0 (threadname.c:53)
- ...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:15)
by 0x........: child_fn_0 (threadname.c:53)
...
-Thread 3 try1:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
- Address 0x........ is 0 bytes after a block of size 3 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_1 (threadname.c:38)
- ...
-
-Thread 4 012345678901234:
-Invalid write of size 1
- at 0x........: bad_things (threadname.c:16)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
- Address 0x........ is 0 bytes after a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: bad_things (threadname.c:15)
- by 0x........: child_fn_2 (threadname.c:26)
- ...
-
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:16)
=================================================
./valgrind-old/memcheck/tests/threadname_xml.stderr.diff
=================================================
--- threadname_xml.stderr.exp 2014-05-05 19:22:48.795964185 -0500
+++ threadname_xml.stderr.out 2014-05-05 19:48:45.737025406 -0500
@@ -94,14 +94,6 @@
<file>threadname.c</file>
<line>...</line>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_0</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
</stack>
<auxwhat>Address 0x........ is 0 bytes after a block of size 2 alloc'd</auxwhat>
<stack>
@@ -135,112 +127,6 @@
<error>
<unique>0x........</unique>
<tid>...</tid>
- <threadname>try1</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 3 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>malloc</fn>
- <dir>...</dir>
- <file>vg_replace_malloc.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_1</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
-</error>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <threadname>012345678901234</threadname>
- <kind>InvalidWrite</kind>
- <what>Invalid write of size 1</what>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>bad_things</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>child_fn_2</fn>
- <dir>...</dir>
- <file>threadname.c</file>
- <line>...</line>
- </frame>
- </stack>
- <auxwhat>Address 0x........ is 0 bytes after a block of size 4 alloc'd</auxwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2014-05-06 02:30:02
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) GDB: GNU gdb (GDB) Fedora (7.4.50.20120120-54.fc17) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.13.10-200.fc20.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2014-05-06 02:51:02 BST Ended at 2014-05-06 03:29:48 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 678 tests, 4 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 678 tests, 5 stderr failures, 2 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) none/tests/fdleak_ipv4 (stdout) none/tests/fdleak_ipv4 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2014-05-06 03:10:23.713944146 +0100 --- new.short 2014-05-06 03:29:48.485721534 +0100 *************** *** 8,10 **** ! == 678 tests, 5 stderr failures, 2 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) --- 8,10 ---- ! == 678 tests, 4 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) *************** *** 12,15 **** gdbserver_tests/mcmain_pic (stderr) - none/tests/fdleak_ipv4 (stdout) - none/tests/fdleak_ipv4 (stderr) exp-sgcheck/tests/preen_invars (stdout) --- 12,13 ---- |
|
From: Tom H. <to...@co...> - 2014-05-06 02:23:48
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora 7.5.1-42.fc18 Assembler: GNU assembler version 2.23.51.0.1-10.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.13.10-200.fc20.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2014-05-06 02:41:12 BST Ended at 2014-05-06 03:23:35 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 678 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2014-05-06 02:10:57
|
valgrind revision: 13935 VEX revision: 2853 C compiler: gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7) GDB: GNU gdb (GDB) Fedora 7.6.1-46.fc19 Assembler: GNU assembler version 2.23.52.0.1-9.fc19 20130226 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.13.10-200.fc20.x86_64 x86_64 Vendor version: Fedora release 19 (Schrödingerâs Cat) Nightly build on bristol ( x86_64, Fedora 19 (Schrödingerâs Cat) ) Started at 2014-05-06 02:31:30 BST Ended at 2014-05-06 03:10:37 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 678 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == none/tests/fdleak_ipv4 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 678 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/hackedbz2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2014-05-06 02:50:53.331761341 +0100 --- new.short 2014-05-06 03:10:37.145719862 +0100 *************** *** 8,10 **** ! == 678 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/hackedbz2 (stderr) --- 8,11 ---- ! == 678 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == ! none/tests/fdleak_ipv4 (stderr) exp-sgcheck/tests/hackedbz2 (stderr) |