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
(83) |
Oct
(89) |
Nov
(97) |
Dec
(30) |
2024 |
Jan
(25) |
Feb
(73) |
Mar
(76) |
Apr
(122) |
May
(46) |
Jun
(44) |
Jul
(27) |
Aug
(30) |
Sep
(33) |
Oct
(67) |
Nov
(91) |
Dec
(70) |
2025 |
Jan
(44) |
Feb
(36) |
Mar
(85) |
Apr
(100) |
May
(138) |
Jun
(55) |
Jul
(107) |
Aug
(60) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Mark W. <ma...@so...> - 2024-06-10 12:27:35
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=f5d1c336e9276dd5947ef94c9831d9d53673b75b commit f5d1c336e9276dd5947ef94c9831d9d53673b75b Author: Paul Floyd <pj...@wa...> Date: Thu May 9 21:01:52 2024 +0200 aarch64 frinta and frinta vector instructions The initial fix for Bug 484426 only corrected frinta and frintn scalar instructions. This adds support for the vector variants. (cherry picked from commit 7b66a5b58219ac1a4865da8e371edbdb8d765f32) Diff: --- NEWS | 1 + VEX/priv/guest_arm64_toIR.c | 47 ++++++++----- none/tests/arm64/frinta_frintn.cpp | 141 +++++++++++++++++++++++++++++++++++++ 3 files changed, 171 insertions(+), 18 deletions(-) diff --git a/NEWS b/NEWS index b65f920667..adb52169dd 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,7 @@ The following bugs have been fixed or resolved on this branch. 486180 [MIPS] 'VexGuestArchState' has no member named 'guest_IP_AT_SYSCALL' 486293 memccpy false positives 486569 linux inotify_init syscall wrapper missing POST entry in syscall_table +n-i-bz aarch64 frinta and frinta vector instructions To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index c7e395b4b6..27d945d632 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -13821,46 +13821,57 @@ Bool dis_AdvSIMD_two_reg_misc(/*MB_OUT*/DisResult* dres, UInt insn) /* -------- 1,1x,11000 (apparently unassigned) (7) -------- */ /* -------- 1,1x,11001 FRINTI 2d_2d, 4s_4s, 2s_2s (8) -------- */ /* rm plan: - FRINTN: tieeven -- !! FIXME KLUDGED !! + FRINTN: tieeven FRINTM: -inf FRINTP: +inf FRINTZ: zero - FRINTA: tieaway -- !! FIXME KLUDGED !! + FRINTA: tieaway FRINTX: per FPCR + "exact = TRUE" FRINTI: per FPCR */ Bool isD = (size & 1) == 1; if (bitQ == 0 && isD) return False; // implied 1d case - IRTemp irrmRM = mk_get_IR_rounding_mode(); - - UChar ch = '?'; - IRTemp irrm = newTemp(Ity_I32); + UChar ch = '?'; + IROp op = isD ? Iop_RoundF64toInt : Iop_RoundF32toInt; + Bool isBinop = True; + IRExpr* irrmE = NULL; switch (ix) { - case 1: ch = 'n'; assign(irrm, mkU32(Irrm_NEAREST)); break; - case 2: ch = 'm'; assign(irrm, mkU32(Irrm_NegINF)); break; - case 3: ch = 'p'; assign(irrm, mkU32(Irrm_PosINF)); break; - case 4: ch = 'z'; assign(irrm, mkU32(Irrm_ZERO)); break; + case 1: ch = 'n'; isBinop = False; op = isD ? Iop_RoundF64toIntE : Iop_RoundF32toIntE; break; + case 2: ch = 'm'; irrmE = mkU32(Irrm_NegINF); break; + case 3: ch = 'p'; irrmE = mkU32(Irrm_PosINF); break; + case 4: ch = 'z'; irrmE = mkU32(Irrm_ZERO); break; // The following is a kludge. Should be: Irrm_NEAREST_TIE_AWAY_0 - case 5: ch = 'a'; assign(irrm, mkU32(Irrm_NEAREST)); break; + case 5: ch = 'a'; isBinop = False; op = isD ? Iop_RoundF64toIntA0 : Iop_RoundF32toIntA0; break; // I am unsure about the following, due to the "integral exact" // description in the manual. What does it mean? (frintx, that is) - case 6: ch = 'x'; assign(irrm, mkexpr(irrmRM)); break; - case 8: ch = 'i'; assign(irrm, mkexpr(irrmRM)); break; + case 6: ch = 'x'; irrmE = mkexpr(mk_get_IR_rounding_mode()); break; + case 8: ch = 'i'; irrmE = mkexpr(mk_get_IR_rounding_mode()); break; default: vassert(0); } - IROp opRND = isD ? Iop_RoundF64toInt : Iop_RoundF32toInt; if (isD) { for (UInt i = 0; i < 2; i++) { - putQRegLane(dd, i, binop(opRND, mkexpr(irrm), - getQRegLane(nn, i, Ity_F64))); + if (isBinop) { + IRTemp irrm = newTemp(Ity_I32); + assign(irrm, irrmE); + putQRegLane(dd, i, binop(op, mkexpr(irrm), + getQRegLane(nn, i, Ity_F64))); + } else { + putQRegLane(dd, i, unop(op, getQRegLane(nn, i, Ity_F64))); + } } } else { UInt n = bitQ==1 ? 4 : 2; for (UInt i = 0; i < n; i++) { - putQRegLane(dd, i, binop(opRND, mkexpr(irrm), - getQRegLane(nn, i, Ity_F32))); + if (isBinop) { + IRTemp irrm = newTemp(Ity_I32); + assign(irrm, irrmE); + putQRegLane(dd, i, binop(op, mkexpr(irrm), + getQRegLane(nn, i, Ity_F32))); + } else { + putQRegLane(dd, i, unop(op, getQRegLane(nn, i, Ity_F32))); + } } if (bitQ == 0) putQRegLane(dd, 1, mkU64(0)); // zero out lanes 2 and 3 diff --git a/none/tests/arm64/frinta_frintn.cpp b/none/tests/arm64/frinta_frintn.cpp index 8e13761eb9..c0803688f6 100644 --- a/none/tests/arm64/frinta_frintn.cpp +++ b/none/tests/arm64/frinta_frintn.cpp @@ -36,6 +36,55 @@ void test_frinta(T input, T expected) } } +template<typename T> +void test_frinta_fullvec(T* input, T* expected) +{ + T result[2*sizeof(double)/sizeof(T)]; + T* rp = result; + if constexpr (std::is_same_v<double, T> == true) + { + __asm__ __volatile__( + "ldr q23, [%1];\n" + "frinta v22.2d, v23.2d;\n" + "str q22, [%0];\n" + : "+rm" (rp) + : "r" (input) + : "memory", "v22", "v23"); + assert(result[0] == expected[0]); + assert(result[1] == expected[1]); + } + else + { + __asm__ __volatile__( + "ldr q23, [%1];\n" + "frinta v22.4s, v23.4s;\n" + "str q22, [%0];\n" + : "+rm" (rp) + : "r" (input) + : "memory", "v22", "v23"); + assert(result[0] == expected[0]); + assert(result[1] == expected[1]); + assert(result[2] == expected[2]); + assert(result[3] == expected[3]); + } +} + +void test_frinta_halfvec(float* input, float* expected) +{ + float result[2]; + float* rp = result; + __asm__ __volatile__( + "ldr d23, [%1];\n" + "frinta v22.2s, v23.2s;\n" + "str d22, [%0];\n" + : "+rm" (rp) + : "r" (input) + : "memory", "v22", "v23"); + assert(result[0] == expected[0]); + assert(result[1] == expected[1]); +} + + template<typename T> void test_frintn(T input, T expected) { @@ -66,6 +115,54 @@ void test_frintn(T input, T expected) } } +template<typename T> +void test_frintn_fullvec(T* input, T* expected) +{ + T result[2*sizeof(double)/sizeof(T)]; + T* rp = result; + if constexpr (std::is_same_v<double, T> == true) + { + __asm__ __volatile__( + "ldr q23, [%1];\n" + "frintn v22.2d, v23.2d;\n" + "str q22, [%0];\n" + : "+rm" (rp) + : "r" (input) + : "memory", "v22", "v23"); + assert(result[0] == expected[0]); + assert(result[1] == expected[1]); + } + else + { + __asm__ __volatile__( + "ldr q23, [%1];\n" + "frintn v22.4s, v23.4s;\n" + "str q22, [%0];\n" + : "+rm" (rp) + : "r" (input) + : "memory", "v22", "v23"); + assert(result[0] == expected[0]); + assert(result[1] == expected[1]); + assert(result[2] == expected[2]); + assert(result[3] == expected[3]); + } +} + +void test_frintn_halfvec(float* input, float* expected) +{ + float result[2]; + float* rp = result; + __asm__ __volatile__( + "ldr d23, [%1];\n" + "frintn v22.2s, v23.2s;\n" + "str d22, [%0];\n" + : "+rm" (rp) + : "r" (input) + : "memory", "v22", "v23"); + assert(result[0] == expected[0]); + assert(result[1] == expected[1]); +} + int main() { // round "away from zero" @@ -78,6 +175,36 @@ int main() test_frinta(-1.5F, -2.0F); test_frinta(-2.5F, -3.0F); + double in1[] = {1.5, 1.5}; + double out1[] = {2.0, 2,0}; + test_frinta_fullvec(in1, out1); + double in2[] = {2.5, 2.5}; + double out2[] = {3.0, 3,0}; + test_frinta_fullvec(in2, out2); + double in3[] = {-1.5, -1.5}; + double out3[] = {-2.0, -2,0}; + test_frinta_fullvec(in3, out3); + double in4[] = {-2.5, -2.5}; + double out4[] = {-3.0, -3,0}; + test_frinta_fullvec(in4, out4); + + float in1f[] = {1.5F, 1.5F, 1.5F, 1.5F}; + float out1f[] = {2.0F, 2.0F, 2.0F, 2.0F}; + test_frinta_fullvec(in1f, out1f); + test_frinta_halfvec(in1f, out1f); + float in2f[] = {2.5F, 2.5F, 2.5F, 2.5F}; + float out2f[] = {3.0F, 3.0F, 3.0F, 3.0F}; + test_frinta_fullvec(in2f, out2f); + test_frinta_halfvec(in2f, out2f); + float in3f[] = {-1.5F, -1.5F, -1.5F, -1.5F}; + float out3f[] = {-2.0F, -2.0F, -2.0F, -2.0F}; + test_frinta_fullvec(in3f, out3f); + test_frinta_halfvec(in3f, out3f); + float in4f[] = {-2.5F, -2.5F, -2.5F, -2.5F}; + float out4f[] = {-3.0F, -3.0F, -3.0F, -3.0F}; + test_frinta_fullvec(in4f, out4f); + test_frinta_halfvec(in4f, out4f); + // round "to even" test_frintn(1.5, 2.0); test_frintn(2.5, 2.0); @@ -87,5 +214,19 @@ int main() test_frintn(2.5F, 2.0F); test_frintn(-1.5F, -2.0F); test_frintn(-2.5F, -2.0F); + + test_frintn_fullvec(in1, out1); + test_frintn_fullvec(in2, out1); + test_frintn_fullvec(in3, out3); + test_frintn_fullvec(in4, out3); + + test_frintn_fullvec(in1f, out1f); + test_frintn_halfvec(in1f, out1f); + test_frintn_fullvec(in2f, out1f); + test_frintn_halfvec(in2f, out1f); + test_frintn_fullvec(in3f, out3f); + test_frintn_halfvec(in3f, out3f); + test_frintn_fullvec(in4f, out3f); + test_frintn_halfvec(in4f, out3f); } |
From: Mark W. <ma...@so...> - 2024-06-10 12:27:30
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=14141bb4a6ea528b4c0b9295aa64348f7a675735 commit 14141bb4a6ea528b4c0b9295aa64348f7a675735 Author: Paul Floyd <pj...@wa...> Date: Wed May 1 09:24:14 2024 +0200 Bug 486293 - memccpy false positives (cherry picked from commit 805c020c6e5161966e6eb0099ebe937a510cea9e) Diff: --- NEWS | 1 + memcheck/tests/memccpy2.c | 20 ++++++++++++++++++++ memcheck/tests/memccpy2.stderr.exp | 4 ++-- shared/vg_replace_strmem.c | 4 ++-- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index c40e00cce4..f674191a28 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,7 @@ Branch 3.23 The following bugs have been fixed or resolved on this branch. 486180 [MIPS] 'VexGuestArchState' has no member named 'guest_IP_AT_SYSCALL' +486293 memccpy false positives To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/memcheck/tests/memccpy2.c b/memcheck/tests/memccpy2.c index a5a1dfc9f0..9473245817 100644 --- a/memcheck/tests/memccpy2.c +++ b/memcheck/tests/memccpy2.c @@ -1,6 +1,8 @@ #include <ctype.h> #include <stdio.h> #include <string.h> +#include <assert.h> +#include <stdlib.h> int main(void) { @@ -9,5 +11,23 @@ int main(void) memccpy(astring+10, astring, '#', len-10); sprintf(astring, "this is a string # with something to seek"); memccpy(astring, astring+10, '#', len); + + sprintf(astring, "this is a string # with something to seek"); + /* + * space is earlier than len, no overlap + * "this " gets copied (up to and including the first ' ') + * and it overwrites the destination starting with the 's' of "string" + * so res will point to the 'g' of "string" + */ + char* res = memccpy(astring+10, astring, ' ', len-10); + assert(res && *res == 'g'); + sprintf(astring, "this is a string # with something to seek"); + /* length is 0, nothing copied, returns NULL */ + res = memccpy(astring, "abcdefhhijklmnopqrstuvwxy", 'z', 0); + assert(NULL == res); + /* 'z' not found so 20 bytes copied, returns NULL */ + res = memccpy(astring, "abcdefhhijklmnopqrstuvwxy", 'z', 20); + assert(NULL == res); + free(astring); } diff --git a/memcheck/tests/memccpy2.stderr.exp b/memcheck/tests/memccpy2.stderr.exp index 0132ef06c5..240ce925c1 100644 --- a/memcheck/tests/memccpy2.stderr.exp +++ b/memcheck/tests/memccpy2.stderr.exp @@ -1,8 +1,8 @@ Source and destination overlap in memccpy(0x........, 0x........, 31) at 0x........: memccpy (vg_replace_strmem.c:...) - by 0x........: main (memccpy2.c:9) + by 0x........: main (memccpy2.c:11) Source and destination overlap in memccpy(0x........, 0x........, 41) at 0x........: memccpy (vg_replace_strmem.c:...) - by 0x........: main (memccpy2.c:11) + by 0x........: main (memccpy2.c:13) diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c index 737abbf678..ae13a2a5f8 100644 --- a/shared/vg_replace_strmem.c +++ b/shared/vg_replace_strmem.c @@ -2364,9 +2364,9 @@ static inline void my_exit ( int x ) \ while (i-- > 0) \ if ((*d++ = *s++) == x) { \ - SizeT srclen = (i < len) ? i : len; \ + SizeT srclen = len - i; \ RECORD_COPY(srclen); \ - if (is_overlap(dst, src, srclen, srclen)) \ + if (is_overlap(dst, src, len, srclen)) \ RECORD_OVERLAP_ERROR("memccpy", dst, src, len); \ return d; \ } \ |
From: Mark W. <ma...@so...> - 2024-06-10 12:27:24
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=2e26af756d69c53026bf2d6d61589f754796340d commit 2e26af756d69c53026bf2d6d61589f754796340d Author: Paul Floyd <pj...@wa...> Date: Sat Apr 27 13:07:07 2024 +0200 486180 [MIPS] 'VexGuestArchState' has no member named 'guest_IP_AT_SYSCALL' (cherry picked from commit 7214886886bce9029f325214156c02dcfff760d5) Diff: --- NEWS | 2 ++ VEX/priv/guest_mips_helpers.c | 4 ++++ VEX/pub/libvex_guest_mips32.h | 6 +++--- VEX/pub/libvex_guest_mips64.h | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 8bdd3753f7..c40e00cce4 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ Branch 3.23 The following bugs have been fixed or resolved on this branch. +486180 [MIPS] 'VexGuestArchState' has no member named 'guest_IP_AT_SYSCALL' + To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX where XXXXXX is the bug number as listed above. diff --git a/VEX/priv/guest_mips_helpers.c b/VEX/priv/guest_mips_helpers.c index 74cfb9c34c..79197378cc 100644 --- a/VEX/priv/guest_mips_helpers.c +++ b/VEX/priv/guest_mips_helpers.c @@ -187,6 +187,8 @@ void LibVEX_GuestMIPS32_initialise( /*OUT*/ VexGuestMIPS32State * vex_state) vex_state->guest_w1.w64[1] = 0; vex_state->guest_w2.w64[0] = 0; vex_state->guest_w2.w64[1] = 0; + + vex_state->guest_IP_AT_SYSCALL = 0; } void LibVEX_GuestMIPS64_initialise ( /*OUT*/ VexGuestMIPS64State * vex_state ) @@ -294,6 +296,8 @@ void LibVEX_GuestMIPS64_initialise ( /*OUT*/ VexGuestMIPS64State * vex_state ) vex_state->guest_LLaddr = 0xFFFFFFFFFFFFFFFFULL; vex_state->guest_LLdata = 0; + vex_state->guest_IP_AT_SYSCALL = 0; + vex_state->guest_MSACSR = 0; } diff --git a/VEX/pub/libvex_guest_mips32.h b/VEX/pub/libvex_guest_mips32.h index 214f63cdbe..e769819d75 100644 --- a/VEX/pub/libvex_guest_mips32.h +++ b/VEX/pub/libvex_guest_mips32.h @@ -188,10 +188,10 @@ typedef /* 1016 */ UInt guest_MSACSR; - /* 1020 */ UInt _padding3; + /* 1020 */ UInt guest_IP_AT_SYSCALL; - /* 1020 */ ULong guest_LLdata64; - /* 1028 */ ULong _padding4; + /* 1024 */ ULong guest_LLdata64; + /* 1032 */ ULong _padding3; } VexGuestMIPS32State; /*---------------------------------------------------------------*/ /*--- Utility functions for MIPS32 guest stuff. ---*/ diff --git a/VEX/pub/libvex_guest_mips64.h b/VEX/pub/libvex_guest_mips64.h index 657fe6fa33..a953f0ab86 100644 --- a/VEX/pub/libvex_guest_mips64.h +++ b/VEX/pub/libvex_guest_mips64.h @@ -184,6 +184,8 @@ typedef /* 1144 */ UInt guest_MSACSR; /* 1148 */ UInt _padding2; + /* 1152 */ ULong guest_IP_AT_SYSCALL; + /* 1160 */ ULong _padding3; } VexGuestMIPS64State; |
From: Paul F. <pa...@so...> - 2024-06-10 06:05:19
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=b6b5f53043b33859e2f7f587ea88d8ea3365397a commit b6b5f53043b33859e2f7f587ea88d8ea3365397a Author: Paul Floyd <pj...@wa...> Date: Mon Jun 10 07:14:40 2024 +0200 FreeBSD: fixes for version 14.1 There were several leftovers from when I split FREEBSD_14 into 14_0 and 14_1 versions. sys_break doesn't exist on arm64 There's a really annoying conditional jump error in a static copy of strlen in ld-elf.so.1. We can't redirect the strlen, so I've added a suppression. But it messes up test cases that use -s to count errors. Finally, FreeBSD 14.1 has removed a few old FreeBSD 7 syscalls. Diff: --- .gitignore | 1 + configure.ac | 2 + coregrind/m_syswrap/priv_syswrap-freebsd.h | 8 +- coregrind/m_syswrap/syswrap-arm64-freebsd.c | 10 + coregrind/m_syswrap/syswrap-freebsd.c | 15 +- coregrind/vg_preloaded.c | 2 +- include/vki/vki-scnums-freebsd.h | 4 +- memcheck/tests/Makefile.am | 4 +- memcheck/tests/filter_supp.in | 10 + memcheck/tests/freebsd/Makefile.am | 1 + memcheck/tests/freebsd/scalar.c | 14 +- memcheck/tests/freebsd/scalar.stderr.exp-arm64_2 | 5365 +++++++++++++++++++++ memcheck/tests/realloc_size_zero_again_no.vgtest | 2 + memcheck/tests/realloc_size_zero_again_yes.vgtest | 2 + memcheck/tests/varinfo5.stderr.exp-freebsd2 | 191 + 15 files changed, 5617 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 3bdbe1042d..e80b1dda89 100644 --- a/.gitignore +++ b/.gitignore @@ -848,6 +848,7 @@ /memcheck/tests/*.stdout.out /memcheck/tests/filter_dw4 /memcheck/tests/filter_overlaperror +/memcheck/tests/filter_supp /memcheck/tests/.deps /memcheck/tests/accounting /memcheck/tests/addressable diff --git a/configure.ac b/configure.ac index 20ff73e59b..b11d1f26d4 100755 --- a/configure.ac +++ b/configure.ac @@ -5760,6 +5760,8 @@ AC_CONFIG_FILES([memcheck/tests/filter_dw4], [chmod +x memcheck/tests/filter_dw4]) AC_CONFIG_FILES([memcheck/tests/filter_overlaperror], [chmod +x memcheck/tests/filter_overlaperror]) +AC_CONFIG_FILES([memcheck/tests/filter_supp], + [chmod +x memcheck/tests/filter_supp]) AC_CONFIG_FILES([memcheck/tests/x86/filter_pushfpopf], [chmod +x memcheck/tests/x86/filter_pushfpopf]) AC_CONFIG_FILES([gdbserver_tests/filter_gdb], diff --git a/coregrind/m_syswrap/priv_syswrap-freebsd.h b/coregrind/m_syswrap/priv_syswrap-freebsd.h index 9efba45661..fc29f1c8af 100644 --- a/coregrind/m_syswrap/priv_syswrap-freebsd.h +++ b/coregrind/m_syswrap/priv_syswrap-freebsd.h @@ -60,7 +60,11 @@ DECL_TEMPLATE(freebsd, sys_fork) // 2 // generic mknod 14 // generic chmod 15 // generic chown 16 +#if defined(VGP_arm64_freebsd) +DECL_TEMPLATE(freebsd, sys_brk) // 17 +#else // generic brk 17 +#endif DECL_TEMPLATE(freebsd, sys_mount) // 21 DECL_TEMPLATE(freebsd, sys_unmount) // 22 DECL_TEMPLATE(freebsd, sys_ptrace) // 26 @@ -556,7 +560,7 @@ DECL_TEMPLATE(freebsd, sys_aio_readv) // 579 #if (FREEBSD_VERS >= FREEBSD_13_1) -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) // there was a hole in the numbering DECL_TEMPLATE(freebsd, sys_fspacectl) // 580 #endif @@ -569,7 +573,7 @@ DECL_TEMPLATE(freebsd, sys_kqueuex) // 583 DECL_TEMPLATE(freebsd, sys_membarrier) // 584 #endif -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) DECL_TEMPLATE(freebsd, sys_timerfd_create) // 585 DECL_TEMPLATE(freebsd, sys_timerfd_gettime) // 586 DECL_TEMPLATE(freebsd, sys_timerfd_settime) // 587 diff --git a/coregrind/m_syswrap/syswrap-arm64-freebsd.c b/coregrind/m_syswrap/syswrap-arm64-freebsd.c index 391c8b31a9..7d3d3a330e 100644 --- a/coregrind/m_syswrap/syswrap-arm64-freebsd.c +++ b/coregrind/m_syswrap/syswrap-arm64-freebsd.c @@ -148,6 +148,16 @@ PRE(sys_sysarch) POST(sys_sysarch) {} +// SYS_brk 17 +// void *break(char *nsize); +PRE(sys_brk) +{ + PRINT("sys_brk ( %#" FMT_REGWORD "x )", ARG1); + // same name as generic rather than the same name as + // FreeBSD syscalls.master + PRE_REG_READ1(void*, "brk", char*, end_data_segment); +} + // SYS_clock_getcpuclockid2 247 // no manpage for this, from syscalls.master // int clock_getcpuclockid2(id_t id, int which, _Out_ clockid_t *clock_id); diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c index a5d0cc7c69..426fa60154 100644 --- a/coregrind/m_syswrap/syswrap-freebsd.c +++ b/coregrind/m_syswrap/syswrap-freebsd.c @@ -7044,7 +7044,7 @@ POST(sys_aio_readv) #if (FREEBSD_VERS >= FREEBSD_13_1) -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) // SYS_fspacectl 580 // int fspacectl(int fd, int cmd, const struct spacectl_range *rqsr, int flags, // struct spacectl_range *rmsr); @@ -7113,7 +7113,7 @@ PRE(sys_membarrier) #endif -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) // SYS_timerfd_create 585 // int timerfd_create(int clockid, int flags); @@ -7216,8 +7216,7 @@ PRE(sys_kcmp) #endif // FREEBSD_14_1 - -#endif // FREEBSD_14 +#endif // FREEBSD_14_0 #undef PRE #undef POST @@ -7244,7 +7243,11 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_chmod, sys_chmod), // 15 GENX_(__NR_chown, sys_chown), // 16 +#if defined(VGP_arm64_freebsd) + BSDX_(__NR_break, sys_brk), // 17 +#else GENX_(__NR_break, sys_brk), // 17 +#endif // freebsd 4 getfsstat 18 // 4.3 lseek 19 @@ -7937,7 +7940,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { #if (FREEBSD_VERS >= FREEBSD_13_1) -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) BSDXY(__NR_fspacectl, sys_fspacectl), // 580 #endif // unimpl __NR_sched_getcpu 581 @@ -7948,7 +7951,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { BSDXY(__NR_kqueuex, sys_kqueuex), // 583 BSDX_(__NR_membarrier, sys_membarrier), // 584 #endif -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) BSDXY(__NR_timerfd_create, sys_timerfd_create), // 585 BSDXY(__NR_timerfd_settime, sys_timerfd_settime), // 586 BSDXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 587 diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c index 1c727966f3..711df8d8d4 100644 --- a/coregrind/vg_preloaded.c +++ b/coregrind/vg_preloaded.c @@ -238,7 +238,7 @@ void VG_REPLACE_FUNCTION_ZU(libSystemZdZaZddylib, arc4random_addrandom)(unsigned #elif defined(VGO_freebsd) -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void); void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void) diff --git a/include/vki/vki-scnums-freebsd.h b/include/vki/vki-scnums-freebsd.h index f9ec98ab1c..66f1a3717f 100644 --- a/include/vki/vki-scnums-freebsd.h +++ b/include/vki/vki-scnums-freebsd.h @@ -668,7 +668,7 @@ #if (FREEBSD_VERS >= FREEBSD_13_1) -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) #define __NR_fspacectl 580 #endif #define __NR_sched_getcpu 581 @@ -683,7 +683,7 @@ #endif -#if (FREEBSD_VERS >= FREEBSD_14) +#if (FREEBSD_VERS >= FREEBSD_14_0) #define __NR_timerfd_create 585 #define __NR_timerfd_gettime 586 #define __NR_timerfd_settime 587 diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 0c3bb60551..67d4e69306 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -92,7 +92,8 @@ dist_noinst_SCRIPTS = \ noinst_SCRIPTS = \ filter_dw4 \ filter_overlaperror \ - filter_stderr + filter_stderr \ + filter_supp noinst_HEADERS = leak.h @@ -432,6 +433,7 @@ EXTRA_DIST = \ varinfo5.vgtest varinfo5.stdout.exp varinfo5.stderr.exp \ varinfo5.stderr.exp-ppc64 \ varinfo5.stderr.exp-freebsd \ + varinfo5.stderr.exp-freebsd2 \ varinfo6.vgtest varinfo6.stdout.exp varinfo6.stderr.exp \ varinfo6.stderr.exp-ppc64 \ varinforestrict.vgtest varinforestrict.stderr.exp \ diff --git a/memcheck/tests/filter_supp.in b/memcheck/tests/filter_supp.in new file mode 100755 index 0000000000..7a245ae22b --- /dev/null +++ b/memcheck/tests/filter_supp.in @@ -0,0 +1,10 @@ +#! /bin/sh +# @configure_input@ + +SED=@SED@ + +./filter_stderr "$@" | + +$SED 'N;/^used_suppression/M{/^used_suppression/d;$!N;d};P;D' + +exit 0 diff --git a/memcheck/tests/freebsd/Makefile.am b/memcheck/tests/freebsd/Makefile.am index 3c89d23402..3656be0edd 100644 --- a/memcheck/tests/freebsd/Makefile.am +++ b/memcheck/tests/freebsd/Makefile.am @@ -91,6 +91,7 @@ EXTRA_DIST = \ scalar.h scalar.vgtest \ scalar.stderr.exp \ scalar.stderr.exp-arm64 \ + scalar.stderr.exp-arm64_2 \ scalar.stderr.exp-x86 \ scalar_abort2.vgtest \ scalar_13_plus.vgtest \ diff --git a/memcheck/tests/freebsd/scalar.c b/memcheck/tests/freebsd/scalar.c index ebbffae2a7..67c47e133d 100644 --- a/memcheck/tests/freebsd/scalar.c +++ b/memcheck/tests/freebsd/scalar.c @@ -104,7 +104,12 @@ int main(void) /* break 17 */ GO(SYS_break, "1s 1m"); - SY(SYS_break, x0+1); SUCC; + SY(SYS_break, x0+1); +#if defined(VGP_arm64_freebsd) + FAILx(ENOSYS); +#else + SUCC; +#endif /* freebsd4 getfsstat 18 */ @@ -800,12 +805,14 @@ int main(void) SY(SYS_poll, &fds, 1, 1); SUCC; } +#if (FREEBSD_VERS <= FREEBSD_14_0) /* SYS_freebsd7___semctl 220 */ GO(SYS_freebsd7___semctl, "(IPC_STAT) 4s 1m"); SY(SYS_freebsd7___semctl, x0, x0, x0+IPC_STAT, x0+1); FAIL; GO(SYS_freebsd7___semctl, "(bogus cmd) 3s 0m"); SY(SYS_freebsd7___semctl, x0, x0, x0-1, x0+1); FAIL; +#endif /* SYS_semget 221 */ GO(SYS_semget, "3s 0m"); @@ -817,12 +824,14 @@ int main(void) /* unimpl semconfig 223 */ +#if (FREEBSD_VERS <= FREEBSD_14_0) /* SYS_freebsd7_msgctl 224 */ GO(SYS_freebsd7_msgctl, "(set) 3s 1m"); SY(SYS_freebsd7_msgctl, x0, x0+1, x0); FAIL; GO(SYS_freebsd7_msgctl, "(stat) 3s 1m"); SY(SYS_freebsd7_msgctl, x0, x0+2, x0); FAIL; +#endif /* SYS_msgget 225 */ GO(SYS_msgget, "2s 0m"); @@ -840,13 +849,14 @@ int main(void) GO(SYS_shmat, "3s 0m"); SY(SYS_shmat, x0, x0, x0); FAIL; +#if (FREEBSD_VERS <= FREEBSD_14_0) /* SYS_freebsd7_shmctl 229 */ GO(SYS_freebsd7_shmctl, "3s 0m"); SY(SYS_freebsd7_shmctl, x0, x0, x0); FAIL; GO(SYS_freebsd7_shmctl, "(bogus cmd) 3s 0m"); SY(SYS_freebsd7_shmctl, x0, x0-1, x0+1); FAIL; - +#endif /* SYS_shmdt 230 */ GO(SYS_shmdt, "1s 0m"); diff --git a/memcheck/tests/freebsd/scalar.stderr.exp-arm64_2 b/memcheck/tests/freebsd/scalar.stderr.exp-arm64_2 new file mode 100644 index 0000000000..5ac5a583f4 --- /dev/null +++ b/memcheck/tests/freebsd/scalar.stderr.exp-arm64_2 @@ -0,0 +1,5365 @@ +--------------------------------------------------------- + 1: SYS_exit below +--------------------------------------------------------- +--------------------------------------------------------- + 2: SYS_fork other +--------------------------------------------------------- +--------------------------------------------------------- + 3: SYS_read 1+3s 0m +--------------------------------------------------------- +Syscall param (syscallno) contains uninitialised byte(s) + ... + +Syscall param read(buf) contains uninitialised byte(s) + ... + +Syscall param read(count) contains uninitialised byte(s) + ... + +Syscall param read(buf) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 4: SYS_write 3s 1m +--------------------------------------------------------- +Syscall param write(fd) contains uninitialised byte(s) + ... + +Syscall param write(buf) contains uninitialised byte(s) + ... + +Syscall param write(count) contains uninitialised byte(s) + ... + +Syscall param write(buf) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 5: SYS_open (2-args) 2s 1m +--------------------------------------------------------- +Syscall param open(filename) contains uninitialised byte(s) + ... + +Syscall param open(flags) contains uninitialised byte(s) + ... + +Syscall param open(filename) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 5: SYS_open (3-args) 1s 0m +--------------------------------------------------------- +Syscall param open(mode) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 6: SYS_close 1s 0m +--------------------------------------------------------- +Syscall param close(fd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 7: SYS_wait4 4s 2m +--------------------------------------------------------- +Syscall param wait4(pid) contains uninitialised byte(s) + ... + +Syscall param wait4(status) contains uninitialised byte(s) + ... + +Syscall param wait4(options) contains uninitialised byte(s) + ... + +Syscall param wait4(rusage) contains uninitialised byte(s) + ... + +Syscall param wait4(status) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param wait4(rusage) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 9: SYS_link 2s 2m +--------------------------------------------------------- +Syscall param link(oldpath) contains uninitialised byte(s) + ... + +Syscall param link(newpath) contains uninitialised byte(s) + ... + +Syscall param link(oldpath) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param link(newpath) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 10: SYS_unlink 1s 1m +--------------------------------------------------------- +Syscall param unlink(pathname) contains uninitialised byte(s) + ... + +Syscall param unlink(pathname) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 12: SYS_chdir 1s 1m +--------------------------------------------------------- +Syscall param chdir(path) contains uninitialised byte(s) + ... + +Syscall param chdir(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 13: SYS_fchdir 1s 0m +--------------------------------------------------------- +Syscall param fchdir(fd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 14: SYS_freebsd11_mknod 3s 1m +--------------------------------------------------------- +Syscall param mknod(pathname) contains uninitialised byte(s) + ... + +Syscall param mknod(mode) contains uninitialised byte(s) + ... + +Syscall param mknod(dev) contains uninitialised byte(s) + ... + +Syscall param mknod(pathname) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 15: SYS_chmod 2s 1m +--------------------------------------------------------- +Syscall param chmod(path) contains uninitialised byte(s) + ... + +Syscall param chmod(mode) contains uninitialised byte(s) + ... + +Syscall param chmod(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 16: SYS_chown 3s 1m +--------------------------------------------------------- +Syscall param chown(path) contains uninitialised byte(s) + ... + +Syscall param chown(owner) contains uninitialised byte(s) + ... + +Syscall param chown(group) contains uninitialised byte(s) + ... + +Syscall param chown(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 17: SYS_break 1s 1m +--------------------------------------------------------- +Syscall param brk(end_data_segment) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 20: SYS_getpid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 21: SYS_mount 4s 2m +--------------------------------------------------------- +Syscall param mount(type) contains uninitialised byte(s) + ... + +Syscall param mount(dir) contains uninitialised byte(s) + ... + +Syscall param mount(flags) contains uninitialised byte(s) + ... + +Syscall param mount(data) contains uninitialised byte(s) + ... + +Syscall param mount(type) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param mount(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 22: SYS_unmount 2s 1m +--------------------------------------------------------- +Syscall param unmount(dir) contains uninitialised byte(s) + ... + +Syscall param unmount(flags) contains uninitialised byte(s) + ... + +Syscall param unmount(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 23: SYS_setuid 1s 0m +--------------------------------------------------------- +Syscall param setuid(uid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 24: SYS_getuid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 25: SYS_geteuid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 26: SYS_ptrace 4s 0m +--------------------------------------------------------- +Syscall param ptrace(request) contains uninitialised byte(s) + ... + +Syscall param ptrace(pid) contains uninitialised byte(s) + ... + +Syscall param ptrace(addr) contains uninitialised byte(s) + ... + +Syscall param ptrace(data) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 27: SYS_recvmsg 3s 0m +--------------------------------------------------------- +Syscall param recvmsg(s) contains uninitialised byte(s) + ... + +Syscall param recvmsg(msg) contains uninitialised byte(s) + ... + +Syscall param recvmsg(flags) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 28: SYS_sendmsg 3s 0m +--------------------------------------------------------- +Syscall param sendmsg(s) contains uninitialised byte(s) + ... + +Syscall param sendmsg(msg) contains uninitialised byte(s) + ... + +Syscall param sendmsg(flags) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 29: SYS_recvfrom 6+1s 0m +--------------------------------------------------------- +Syscall param recvfrom(s) contains uninitialised byte(s) + ... + +Syscall param recvfrom(buf) contains uninitialised byte(s) + ... + +Syscall param recvfrom(len) contains uninitialised byte(s) + ... + +Syscall param recvfrom(flags) contains uninitialised byte(s) + ... + +Syscall param recvfrom(from) contains uninitialised byte(s) + ... + +Syscall param recvfrom(fromlen) contains uninitialised byte(s) + ... + +Syscall param socketcall.recvfrom(buf) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param socketcall.recvfrom(fromlen_in) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 30: SYS_accept 3+1s 0m +--------------------------------------------------------- +Syscall param accept(s) contains uninitialised byte(s) + ... + +Syscall param accept(addr) contains uninitialised byte(s) + ... + +Syscall param accept(*addrlen) contains uninitialised byte(s) + ... + +Syscall param socketcall.accept(addrlen_in) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 31: SYS_getpeername 3s 1m +--------------------------------------------------------- +Syscall param getpeername(s) contains uninitialised byte(s) + ... + +Syscall param getpeername(name) contains uninitialised byte(s) + ... + +Syscall param getpeername(namelen) contains uninitialised byte(s) + ... + +Syscall param socketcall.getpeername(namelen_in) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 32: SYS_getsockname 3s 1m +--------------------------------------------------------- +Syscall param getsockname(s) contains uninitialised byte(s) + ... + +Syscall param getsockname(name) contains uninitialised byte(s) + ... + +Syscall param getsockname(namelen) contains uninitialised byte(s) + ... + +Syscall param socketcall.getsockname(namelen_in) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 25: SYS_geteuid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 34: SYS_chflags 2s 1m +--------------------------------------------------------- +Syscall param chflags(path) contains uninitialised byte(s) + ... + +Syscall param chflags(flags) contains uninitialised byte(s) + ... + +Syscall param chflags(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 35: SYS_fchflags 2s 0m +--------------------------------------------------------- +Syscall param fchflags(fd) contains uninitialised byte(s) + ... + +Syscall param fchflags(flags) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 36: SYS_sync 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 37: SYS_kill 2s 0m +--------------------------------------------------------- +Syscall param kill(pid) contains uninitialised byte(s) + ... + +Syscall param kill(signal) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 39: SYS_getppid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 41: SYS_dup 1s 0m +--------------------------------------------------------- +Syscall param dup(oldfd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 43: SYS_getegid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 44: SYS_profil ni +--------------------------------------------------------- +--------------------------------------------------------- + 45: SYS_ktrace ni +--------------------------------------------------------- +--------------------------------------------------------- + 47: SYS_getgid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 49: SYS_getlogin 2s 1m +--------------------------------------------------------- +Syscall param getlogin(buf) contains uninitialised byte(s) + ... + +Syscall param getlogin(len) contains uninitialised byte(s) + ... + +Syscall param getlogin(name) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 50: SYS_setlogin 1s 1m +--------------------------------------------------------- +Syscall param setlogin(buf) contains uninitialised byte(s) + ... + +Syscall param setlogin(buf) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 51: SYS_acct 1s 1m +--------------------------------------------------------- +Syscall param acct(filename) contains uninitialised byte(s) + ... + +Syscall param acct(filename) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 53: SYS_sigaltstack 2s 2m +--------------------------------------------------------- +Syscall param sigaltstack(ss) contains uninitialised byte(s) + ... + +Syscall param sigaltstack(oss) contains uninitialised byte(s) + ... + +Syscall param sigaltstack(ss) points to unaddressable byte(s) + ... + Address 0x........ is on thread 1's stack + +Syscall param sigaltstack(oss) points to unaddressable byte(s) + ... + Address 0x........ is on thread 1's stack + +--------------------------------------------------------- + 54: SYS_ioctl 3s 1m +--------------------------------------------------------- +Syscall param ioctl(fd) contains uninitialised byte(s) + ... + + +More than 100 errors detected. Subsequent errors +will still be recorded, but in less detail than before. +Syscall param ioctl(request) contains uninitialised byte(s) + ... + +Syscall param ioctl(arg) contains uninitialised byte(s) + ... + +Syscall param ioctl(generic) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 56: SYS_revoke 1s 1m +--------------------------------------------------------- +Syscall param revoke(path) contains uninitialised byte(s) + ... + +Syscall param revoke(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 57: SYS_symlink 2s 2m +--------------------------------------------------------- +Syscall param symlink(oldpath) contains uninitialised byte(s) + ... + +Syscall param symlink(newpath) contains uninitialised byte(s) + ... + +Syscall param symlink(oldpath) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param symlink(newpath) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 58: SYS_readlink 3s 2m +--------------------------------------------------------- +Syscall param readlink(path) contains uninitialised byte(s) + ... + +Syscall param readlink(buf) contains uninitialised byte(s) + ... + +Syscall param readlink(bufsiz) contains uninitialised byte(s) + ... + +Syscall param readlink(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param readlink(buf) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 59: SYS_execve 3s 1m +--------------------------------------------------------- +Syscall param execve(filename) contains uninitialised byte(s) + ... + +Syscall param execve(argv) contains uninitialised byte(s) + ... + +Syscall param execve(envp) contains uninitialised byte(s) + ... + +Syscall param execve(filename) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param execve(argv) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 60: SYS_umask 1s 0m +--------------------------------------------------------- +Syscall param umask(mask) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 61: SYS_chroot 1s 1m +--------------------------------------------------------- +Syscall param chroot(path) contains uninitialised byte(s) + ... + +Syscall param chroot(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 65: SYS_msync 3s 1m +--------------------------------------------------------- +Syscall param msync(start) contains uninitialised byte(s) + ... + +Syscall param msync(length) contains uninitialised byte(s) + ... + +Syscall param msync(flags) contains uninitialised byte(s) + ... + +Syscall param msync(start) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 66: SYS_vfork other +--------------------------------------------------------- +--------------------------------------------------------- + 69: SYS_sbrk 1s 1m +--------------------------------------------------------- +Syscall param sbrk(incr) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 73: SYS_munmap 2s 0m +--------------------------------------------------------- +Syscall param munmap(start) contains uninitialised byte(s) + ... + +Syscall param munmap(length) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 74: SYS_mprotect 3s 0m +--------------------------------------------------------- +Syscall param mprotect(addr) contains uninitialised byte(s) + ... + +Syscall param mprotect(len) contains uninitialised byte(s) + ... + +Syscall param mprotect(prot) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 75: SYS_madvise 3s 0m +--------------------------------------------------------- +Syscall param madvise(start) contains uninitialised byte(s) + ... + +Syscall param madvise(length) contains uninitialised byte(s) + ... + +Syscall param madvise(advice) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 78: SYS_mincore 3s 1m +--------------------------------------------------------- +Syscall param mincore(start) contains uninitialised byte(s) + ... + +Syscall param mincore(length) contains uninitialised byte(s) + ... + +Syscall param mincore(vec) contains uninitialised byte(s) + ... + +Syscall param mincore(vec) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 79: SYS_getgroups 2s 1m +--------------------------------------------------------- +Syscall param getgroups(size) contains uninitialised byte(s) + ... + +Syscall param getgroups(list) contains uninitialised byte(s) + ... + +Syscall param getgroups(list) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 80: SYS_setgroups 2s 1m +--------------------------------------------------------- +Syscall param setgroups(size) contains uninitialised byte(s) + ... + +Syscall param setgroups(list) contains uninitialised byte(s) + ... + +Syscall param setgroups(list) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 81: SYS_getpgrp 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 82: SYS_setpgid 2s 0m +--------------------------------------------------------- +Syscall param setpgid(pid) contains uninitialised byte(s) + ... + +Syscall param setpgid(pgid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 83: SYS_setitimer 3s 2m +--------------------------------------------------------- +Syscall param setitimer(which) contains uninitialised byte(s) + ... + +Syscall param setitimer(value) contains uninitialised byte(s) + ... + +Syscall param setitimer(ovalue) contains uninitialised byte(s) + ... + +Syscall param setitimer(&value->it_interval) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setitimer(&value->it_value) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setitimer(&ovalue->it_interval) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param setitimer(&ovalue->it_value) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 85: SYS_swapon 1s 1m +--------------------------------------------------------- +Syscall param swapon(special) contains uninitialised byte(s) + ... + +Syscall param swapon(special) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 86: SYS_getitimer 2s 1m +--------------------------------------------------------- +Syscall param getitimer(which) contains uninitialised byte(s) + ... + +Syscall param getitimer(value) contains uninitialised byte(s) + ... + +Syscall param getitimer(&value->it_interval) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getitimer(&value->it_value) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 89: SYS_getdtablesize 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- + 90: SYS_dup2 2s 0m +--------------------------------------------------------- +Syscall param dup2(oldfd) contains uninitialised byte(s) + ... + +Syscall param dup2(newfd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 92: SYS_fcntl (GETFD) 2s 0m +--------------------------------------------------------- +Syscall param fcntl(fd) contains uninitialised byte(s) + ... + +Syscall param fcntl(cmd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 92: SYS_fcntl (DUPFD) 1s 0m +--------------------------------------------------------- +Syscall param fcntl(arg) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 93: SYS_select 5s 4m +--------------------------------------------------------- +Syscall param select(n) contains uninitialised byte(s) + ... + +Syscall param select(readfds) contains uninitialised byte(s) + ... + +Syscall param select(writefds) contains uninitialised byte(s) + ... + +Syscall param select(exceptfds) contains uninitialised byte(s) + ... + +Syscall param select(timeout) contains uninitialised byte(s) + ... + +Syscall param select(readfds) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param select(writefds) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param select(exceptfds) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param select(timeout) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- + 95: SYS_fsync 1s 0m +--------------------------------------------------------- +Syscall param fsync(fd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 96: SYS_setpriority 3s 0m +--------------------------------------------------------- +Syscall param setpriority(which) contains uninitialised byte(s) + ... + +Syscall param setpriority(who) contains uninitialised byte(s) + ... + +Syscall param setpriority(prio) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 97: SYS_socket 3s 0m +--------------------------------------------------------- +Syscall param socket(domain) contains uninitialised byte(s) + ... + +Syscall param socket(type) contains uninitialised byte(s) + ... + +Syscall param socket(protocol) contains uninitialised byte(s) + ... + +--------------------------------------------------------- + 98: SYS_connect 3s 0m +--------------------------------------------------------- +Syscall param connect(s) contains uninitialised byte(s) + ... + +Syscall param connect(name) contains uninitialised byte(s) + ... + +Syscall param connect(namelen) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +100: SYS_getpriority 2s 0m +--------------------------------------------------------- +Syscall param getpriority(which) contains uninitialised byte(s) + ... + +Syscall param getpriority(who) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +104: SYS_bind 3s 0m +--------------------------------------------------------- +Syscall param bind(s) contains uninitialised byte(s) + ... + +Syscall param bind(addr) contains uninitialised byte(s) + ... + +Syscall param bind(addrlen) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +105: SYS_setsockopt 5s 0m +--------------------------------------------------------- +Syscall param setsockopt(s) contains uninitialised byte(s) + ... + +Syscall param setsockopt(level) contains uninitialised byte(s) + ... + +Syscall param setsockopt(optname) contains uninitialised byte(s) + ... + +Syscall param setsockopt(optval) contains uninitialised byte(s) + ... + +Syscall param setsockopt(optlen) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +106: SYS_listen 2s 0m +--------------------------------------------------------- +Syscall param listen(s) contains uninitialised byte(s) + ... + +Syscall param listen(backlog) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +116: SYS_gettimeofday 2s 2m +--------------------------------------------------------- +Syscall param gettimeofday(tv) contains uninitialised byte(s) + ... + +Syscall param gettimeofday(tz) contains uninitialised byte(s) + ... + +Syscall param gettimeofday(tv) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param gettimeofday(tz) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +117: SYS_getrusage 2s 1m +--------------------------------------------------------- +Syscall param getrusage(who) contains uninitialised byte(s) + ... + +Syscall param getrusage(usage) contains uninitialised byte(s) + ... + +Syscall param getrusage(usage) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +105: SYS_setsockopt 5s 1m +--------------------------------------------------------- +Syscall param setsockopt(s) contains uninitialised byte(s) + ... + +Syscall param setsockopt(level) contains uninitialised byte(s) + ... + +Syscall param setsockopt(optname) contains uninitialised byte(s) + ... + +Syscall param setsockopt(optval) contains uninitialised byte(s) + ... + +Syscall param setsockopt(optlen) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +120: SYS_readv 3s 1m +--------------------------------------------------------- +Syscall param readv(fd) contains uninitialised byte(s) + ... + +Syscall param readv(vector) contains uninitialised byte(s) + ... + +Syscall param readv(count) contains uninitialised byte(s) + ... + +Syscall param readv(vector) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +121: SYS_writev 3s 1m +--------------------------------------------------------- +Syscall param writev(fd) contains uninitialised byte(s) + ... + +Syscall param writev(vector) contains uninitialised byte(s) + ... + +Syscall param writev(count) contains uninitialised byte(s) + ... + +Syscall param writev(vector) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +122: SYS_settimeofday 2s 2m +--------------------------------------------------------- +Syscall param settimeofday(tv) contains uninitialised byte(s) + ... + +Syscall param settimeofday(tz) contains uninitialised byte(s) + ... + +Syscall param settimeofday(tv) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param settimeofday(tz) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +123: SYS_fchown 3s 0m +--------------------------------------------------------- +Syscall param fchown(fd) contains uninitialised byte(s) + ... + +Syscall param fchown(owner) contains uninitialised byte(s) + ... + +Syscall param fchown(group) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +124: SYS_fchmod 2s 0m +--------------------------------------------------------- +Syscall param fchmod(fildes) contains uninitialised byte(s) + ... + +Syscall param fchmod(mode) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +126: SYS_setreuid 2s 0m +--------------------------------------------------------- +Syscall param setreuid(ruid) contains uninitialised byte(s) + ... + +Syscall param setreuid(euid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +127: SYS_setregid 2s 0m +--------------------------------------------------------- +Syscall param setregid(rgid) contains uninitialised byte(s) + ... + +Syscall param setregid(egid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +128: SYS_rename 2s 2m +--------------------------------------------------------- +Syscall param rename(oldpath) contains uninitialised byte(s) + ... + +Syscall param rename(newpath) contains uninitialised byte(s) + ... + +Syscall param rename(oldpath) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param rename(newpath) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +131: SYS_flock 2s 0m +--------------------------------------------------------- +Syscall param flock(fd) contains uninitialised byte(s) + ... + +Syscall param flock(operation) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +132: SYS_mkfifo 2s 1m +--------------------------------------------------------- +Syscall param mkfifo(path) contains uninitialised byte(s) + ... + +Syscall param mkfifo(mode) contains uninitialised byte(s) + ... + +Syscall param mkfifo(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +133: SYS_sendto 6s 0m +--------------------------------------------------------- +Syscall param sendto(s) contains uninitialised byte(s) + ... + +Syscall param sendto(msg) contains uninitialised byte(s) + ... + +Syscall param sendto(len) contains uninitialised byte(s) + ... + +Syscall param sendto(flags) contains uninitialised byte(s) + ... + +Syscall param sendto(to) contains uninitialised byte(s) + ... + +Syscall param sendto(tolen) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +135: SYS_socketpair 4s 1m +--------------------------------------------------------- +Syscall param socketpair(domain) contains uninitialised byte(s) + ... + +Syscall param socketpair(type) contains uninitialised byte(s) + ... + +Syscall param socketpair(protocol) contains uninitialised byte(s) + ... + +Syscall param socketpair(sv) contains uninitialised byte(s) + ... + +Syscall param socketcall.socketpair(sv) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +136: SYS_mkdir 2s 1m +--------------------------------------------------------- +Syscall param mkdir(pathname) contains uninitialised byte(s) + ... + +Syscall param mkdir(mode) contains uninitialised byte(s) + ... + +Syscall param mkdir(pathname) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +137: SYS_rmdir 1s 1m +--------------------------------------------------------- +Syscall param rmdir(pathname) contains uninitialised byte(s) + ... + +Syscall param rmdir(pathname) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +138: SYS_utimes 2s 2m +--------------------------------------------------------- +Syscall param utimes(filename) contains uninitialised byte(s) + ... + +Syscall param utimes(tvp) contains uninitialised byte(s) + ... + +Syscall param utimes(filename) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param utimes(tvp[0]) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param utimes(tvp[1]) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +140: SYS_adjtime 2s 1m +--------------------------------------------------------- +Syscall param adjtime(delta) contains uninitialised byte(s) + ... + +Syscall param adjtime(olddelta) contains uninitialised byte(s) + ... + +Syscall param adjtime(delta) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +147: SYS_setsid 0s 0m +--------------------------------------------------------- +--------------------------------------------------------- +148: SYS_quotactl (Q_QUOTAOFF) 2s 0m +--------------------------------------------------------- +Syscall param quotactl(path) contains uninitialised byte(s) + ... + +Syscall param quotactl(cmd) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +148: SYS_quotactl (Q_QUOTAON) 4s 2m +--------------------------------------------------------- +Syscall param quotactl(path) contains uninitialised byte(s) + ... + +Syscall param quotactl(cmd) contains uninitialised byte(s) + ... + +Syscall param quotactl(id) contains uninitialised byte(s) + ... + +Syscall param quotactl(addr) contains uninitialised byte(s) + ... + +Syscall param quotactl(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +160: SYS_lgetfh 2s 2m +--------------------------------------------------------- +Syscall param lgetfh(path) contains uninitialised byte(s) + ... + +Syscall param lgetfh(fhp) contains uninitialised byte(s) + ... + +Syscall param lgetfh(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lgetfh(fhp) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +161: SYS_getfh 2s 2m +--------------------------------------------------------- +Syscall param getfh(path) contains uninitialised byte(s) + ... + +Syscall param getfh(fhp) contains uninitialised byte(s) + ... + +Syscall param getfh(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getfh(fhp) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +166: SYS_rtprio (GET) 3s 1m +--------------------------------------------------------- +Syscall param rtprio(function) contains uninitialised byte(s) + ... + +Syscall param rtprio(pid) contains uninitialised byte(s) + ... + +Syscall param rtprio(rtp) contains uninitialised byte(s) + ... + +Syscall param rtprio(rtp#lookup) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +166: SYS_rtprio (SET) 3s 1m +--------------------------------------------------------- +Syscall param rtprio(function) contains uninitialised byte(s) + ... + +Syscall param rtprio(pid) contains uninitialised byte(s) + ... + +Syscall param rtprio(rtp) contains uninitialised byte(s) + ... + +Syscall param rtprio(rtp#set) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +175: SYS_setfib 1s 0m +--------------------------------------------------------- +Syscall param setfib(fib) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +181: SYS_setgid 1s 0m +--------------------------------------------------------- +Syscall param setgid(gid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +182: SYS_setegid 1s 0m +--------------------------------------------------------- +Syscall param setegid(gid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +183: SYS_seteuid 1s 0m +--------------------------------------------------------- +Syscall param seteuid(uid) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +188: SYS_freebsd11_stat 2s 2m +--------------------------------------------------------- +Syscall param stat(path) contains uninitialised byte(s) + ... + +Syscall param stat(sb) contains uninitialised byte(s) + ... + +Syscall param stat(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param stat(sb) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +189: SYS_freebsd11_fstat 2s 1m +--------------------------------------------------------- +Syscall param fstat(fd) contains uninitialised byte(s) + ... + +Syscall param fstat(sb) contains uninitialised byte(s) + ... + +Syscall param fstat(sb) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +190: SYS_freebsd11_lstat 2s 2m +--------------------------------------------------------- +Syscall param lstat(path) contains uninitialised byte(s) + ... + +Syscall param lstat(sb) contains uninitialised byte(s) + ... + +Syscall param lstat(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param lstat(sb) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +191: SYS_pathconf 2s 1m +--------------------------------------------------------- +Syscall param pathconf(path) contains uninitialised byte(s) + ... + +Syscall param pathconf(name) contains uninitialised byte(s) + ... + +Syscall param pathconf(path) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +192: SYS_fpathconf 2s 0m +--------------------------------------------------------- +Syscall param fpathconf(fd) contains uninitialised byte(s) + ... + +Syscall param fpathconf(name) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +194: SYS_getrlimit 2s 1m +--------------------------------------------------------- +Syscall param getrlimit(resource) contains uninitialised byte(s) + ... + +Syscall param getrlimit(rlim) contains uninitialised byte(s) + ... + +Syscall param getrlimit(rlim) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +195: SYS_setrlimit 2s 1m +--------------------------------------------------------- +Syscall param setrlimit(resource) contains uninitialised byte(s) + ... + +Syscall param setrlimit(rlim) contains uninitialised byte(s) + ... + +Syscall param setrlimit(rlim) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +196:SYS_freebsd11_getdirentries 4s 2m +--------------------------------------------------------- +Syscall param getdirentries(fd) contains uninitialised byte(s) + ... + +Syscall param getdirentries(buf) contains uninitialised byte(s) + ... + +Syscall param getdirentries(nbytes) contains uninitialised byte(s) + ... + +Syscall param getdirentries(basep) contains uninitialised byte(s) + ... + +Syscall param getdirentries(buf) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param getdirentries(basep) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +202: SYS___sysctl (getoldlen) 3s 2m +--------------------------------------------------------- +Syscall param __sysctl(name) contains uninitialised byte(s) + ... + +Syscall param __sysctl(namelen) contains uninitialised byte(s) + ... + +Syscall param __sysctl(oldlenp) contains uninitialised byte(s) + ... + +Syscall param __sysctl(newlen) contains uninitialised byte(s) + ... + +Syscall param sysctl(name) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param sysctl(oldlenp) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +202: SYS___sysctl (getold) 4s 2m +--------------------------------------------------------- +Syscall param __sysctl(name) contains uninitialised byte(s) + ... + +Syscall param __sysctl(namelen) contains uninitialised byte(s) + ... + +Syscall param __sysctl(oldp) contains uninitialised byte(s) + ... + +Syscall param __sysctl(oldlenp) contains uninitialised byte(s) + ... + +Syscall param __sysctl(newlen) contains uninitialised byte(s) + ... + +Syscall param sysctl(name) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param sysctl(oldlenp) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Warning: Bad oldlenp address 0x........ in sysctl +--------------------------------------------------------- +202: SYS___sysctl (putnew) 4s 2m +--------------------------------------------------------- +Syscall param __sysctl(name) contains uninitialised byte(s) + ... + +Syscall param __sysctl(namelen) contains uninitialised byte(s) + ... + +Syscall param __sysctl(newp) contains uninitialised byte(s) + ... + +Syscall param __sysctl(newlen) contains uninitialised byte(s) + ... + +Syscall param sysctl(name) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +Syscall param sysctl(newp) points to unaddressable byte(s) + ... + Address 0x........ is not stack'd, malloc'd or (recently) free'd + +--------------------------------------------------------- +203: SYS_mlock 2s 0m +--------------------------------------------------------- +Syscall param mlock(addr) contains uninitialised byte(s) + ... + +Syscall param mlock(len) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +204: SYS_munlock 2s 0m +--------------------------------------------------------- +Syscall param munlock(addr) contains uninitialised byte(s) + ... + +Syscall param munlock(len) contains uninitialised byte(s) + ... + +--------------------------------------------------------- +205: SYS_undelete 1s 1m +--------------------------------------------------------- +Syscall param undelete(path) contains uninitialised byte(s) + ... + +Syscall param undelete(path) points to unaddressable byte(s) + ... + Ad... [truncated message content] |
From: Paul F. <pa...@so...> - 2024-06-10 05:26:15
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=f7b3193152d16f9b2d508197500eac3039dd9fb7 commit f7b3193152d16f9b2d508197500eac3039dd9fb7 Author: Paul Floyd <pj...@wa...> Date: Mon Jun 10 07:24:47 2024 +0200 FreeBSD syscall: mostly cosmetic update to the unused sbrk syscall Diff: --- coregrind/m_syswrap/syswrap-freebsd.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c index 730e1de3f0..a5d0cc7c69 100644 --- a/coregrind/m_syswrap/syswrap-freebsd.c +++ b/coregrind/m_syswrap/syswrap-freebsd.c @@ -1255,11 +1255,18 @@ PRE(sys_vfork) } // SYS_sbrk 69 -// void * sbrk(intptr_t incr); +// int sbrk(int incr); PRE(sys_sbrk) { PRINT("sys_sbrk ( %#" FMT_REGWORD "x )",ARG1); - PRE_REG_READ1(void*, "sbrk", vki_intptr_t, incr); + PRE_REG_READ1(int, "sbrk", int, incr); + + // removed in FreeBSD 15 + // prior to that it just returned EOPNOTSUPP + // with a comment "Not yet implemented" + + // libc sbrk doesn't call this, it calls __sys_break + // which maps to sys_brk } // SYS_freebsd11_vadvise 72 |
From: Paul F. <pa...@so...> - 2024-06-09 15:14:40
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=7a36fd14666ea4016ce8821d376df2cc98619499 commit 7a36fd14666ea4016ce8821d376df2cc98619499 Author: Paul Floyd <pj...@wa...> Date: Sun Jun 9 17:13:42 2024 +0200 FreeBSD regtest: add filter for FreeBSD 14.1 conditional error Diff: --- memcheck/tests/freebsd/Makefile.am | 3 ++- memcheck/tests/freebsd/aligned_allocs_supp.vgtest | 1 + memcheck/tests/freebsd/filter_supp | 7 +++++++ memcheck/tests/freebsd/memalign_supp.vgtest | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/memcheck/tests/freebsd/Makefile.am b/memcheck/tests/freebsd/Makefile.am index dc1817f397..3c89d23402 100644 --- a/memcheck/tests/freebsd/Makefile.am +++ b/memcheck/tests/freebsd/Makefile.am @@ -3,7 +3,8 @@ include $(top_srcdir)/Makefile.tool-tests.am dist_noinst_SCRIPTS = filter_stderr filter_pts dump_stdout filter_sigwait \ filter_scalar filter_realpathat filter_fstat filter_eventfd2 \ - toucher1 toucher2 filter_getfsstat filter_context filter_frame + toucher1 toucher2 filter_getfsstat filter_context filter_frame \ + filter_supp EXTRA_DIST = \ access.vgtest \ diff --git a/memcheck/tests/freebsd/aligned_allocs_supp.vgtest b/memcheck/tests/freebsd/aligned_allocs_supp.vgtest index b6cb69bc24..59a919ae39 100644 --- a/memcheck/tests/freebsd/aligned_allocs_supp.vgtest +++ b/memcheck/tests/freebsd/aligned_allocs_supp.vgtest @@ -1,4 +1,5 @@ prog: errno_aligned_allocs vgopts: --suppressions=aligned_allocs_supp.supp -s +stderr_filter: filter_supp diff --git a/memcheck/tests/freebsd/filter_supp b/memcheck/tests/freebsd/filter_supp new file mode 100755 index 0000000000..30388b9bb1 --- /dev/null +++ b/memcheck/tests/freebsd/filter_supp @@ -0,0 +1,7 @@ +#! /bin/sh + +../filter_stderr "$@" | + +gsed '/MEMCHECK-RTLD-COND/d' + +exit 0 diff --git a/memcheck/tests/freebsd/memalign_supp.vgtest b/memcheck/tests/freebsd/memalign_supp.vgtest index 5955fb1429..352109cee0 100644 --- a/memcheck/tests/freebsd/memalign_supp.vgtest +++ b/memcheck/tests/freebsd/memalign_supp.vgtest @@ -1,2 +1,3 @@ prog: memalign vgopts: -s --suppressions=memalign_supp.supp +stderr_filter: filter_supp |
From: Paul F. <pa...@so...> - 2024-06-05 19:03:05
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=d66d3ab3017582ee41c459b812f695af405da44c commit d66d3ab3017582ee41c459b812f695af405da44c Author: Paul Floyd <pj...@wa...> Date: Wed Jun 5 21:01:22 2024 +0200 Bug 487993 - Alignment error when using Eigen with Valgrind and -m32 Not tested on Solaris, but I think that x86 is more or less unused on that platform these days. Diff: --- .gitignore | 1 + NEWS | 1 + coregrind/pub_core_mallocfree.h | 6 +++--- memcheck/tests/x86/Makefile.am | 6 ++++++ memcheck/tests/x86/bug487993.cpp | 20 ++++++++++++++++++++ memcheck/tests/x86/bug487993.stderr.exp | 0 memcheck/tests/x86/bug487993.vgtest | 3 +++ 7 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2736719bad..3bdbe1042d 100644 --- a/.gitignore +++ b/.gitignore @@ -1330,6 +1330,7 @@ /memcheck/tests/x86/Makefile.in /memcheck/tests/x86/bug133694 /memcheck/tests/x86/bug152022 +/memcheck/tests/x86/bug487993 /memcheck/tests/x86/espindola2 /memcheck/tests/x86/fpeflags /memcheck/tests/x86/fprem diff --git a/NEWS b/NEWS index 92e669e311..4d7a97c9d7 100644 --- a/NEWS +++ b/NEWS @@ -39,6 +39,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 'guest_IP_AT_SYSCALL' 486293 memccpy false positives 486569 linux inotify_init syscall wrapper missing POST entry in syscall_table +487993 Alignment error when using Eigen with Valgrind and -m32 488026 Use of `sizeof` instead of `strlen To see details of a given bug, visit diff --git a/coregrind/pub_core_mallocfree.h b/coregrind/pub_core_mallocfree.h index bbde837e2c..6f0cd293bf 100644 --- a/coregrind/pub_core_mallocfree.h +++ b/coregrind/pub_core_mallocfree.h @@ -61,8 +61,7 @@ typedef Int ArenaId; // This is both the minimum payload size of a malloc'd block, and its // minimum alignment. Must be a power of 2 greater than 4, and should be // greater than 8. -#if defined(VGP_x86_linux) || \ - defined(VGP_arm_linux) || \ +#if defined(VGP_arm_linux) || \ defined(VGP_mips32_linux) || \ (defined(VGP_mips64_linux) && defined(VGABI_N32)) || \ defined(VGP_nanomips_linux) || \ @@ -72,7 +71,8 @@ typedef Int ArenaId; // for any AltiVec- or SSE-related type. This matches the Darwin libc. // Also, use 16 bytes for any PPC variant, since 16 is required to make // Altiveccery work right. -#elif defined(VGP_amd64_linux) || \ +#elif defined(VGP_x86_linux) || \ + defined(VGP_amd64_linux) || \ defined(VGP_ppc32_linux) || \ defined(VGP_ppc64be_linux) || \ defined(VGP_ppc64le_linux) || \ diff --git a/memcheck/tests/x86/Makefile.am b/memcheck/tests/x86/Makefile.am index dc93c85b96..6d0d6a1983 100644 --- a/memcheck/tests/x86/Makefile.am +++ b/memcheck/tests/x86/Makefile.am @@ -9,6 +9,7 @@ INSN_TESTS = insn_basic insn_fpu insn_cmov insn_mmx insn_mmxext insn_sse insn_ss EXTRA_DIST = \ bug152022.vgtest bug152022.stderr.exp bug152022.stdout.exp \ + bug487993.vgtest bug487993.stderr.exp \ espindola2.vgtest espindola2.stderr.exp \ fpeflags.stderr.exp fpeflags.vgtest \ fxsave.vgtest fxsave.stdout.exp fxsave.stderr.exp \ @@ -53,6 +54,11 @@ AM_CFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE) AM_CXXFLAGS += @FLAG_M32@ $(FLAG_MMMX) $(FLAG_MSSE) AM_CCASFLAGS += @FLAG_M32@ +if HAVE_CXX17 +check_PROGRAMS += bug487993 +bug487993_SOURCES = bug487993.cpp +bug487993_CXXFLAGS = ${AM_CXXFLAGS} -std=c++17 +endif # fpeflags must use these flags -- bug only occurred with them. fpeflags_CFLAGS = $(AM_CFLAGS) -march=i686 diff --git a/memcheck/tests/x86/bug487993.cpp b/memcheck/tests/x86/bug487993.cpp new file mode 100644 index 0000000000..27f43d306c --- /dev/null +++ b/memcheck/tests/x86/bug487993.cpp @@ -0,0 +1,20 @@ +// the original issue ocurred with Eigen3 +// this is roughly the same using a simple struct +// +#include <cassert> +#include <memory> +//#include <iostream> + +struct Test +{ + alignas(16) double array[16]; +}; + +int main() +{ + std::unique_ptr<Test> test = std::make_unique<Test>(); + //std::cerr << "test " << test.get() << ' ' << (reinterpret_cast<size_t>(test.get()) & 0xfUL) << '\n'; + assert((reinterpret_cast<size_t>(test.get()) & 0xfUL) == 0); +} + + diff --git a/memcheck/tests/x86/bug487993.stderr.exp b/memcheck/tests/x86/bug487993.stderr.exp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/memcheck/tests/x86/bug487993.vgtest b/memcheck/tests/x86/bug487993.vgtest new file mode 100644 index 0000000000..ca5db1515d --- /dev/null +++ b/memcheck/tests/x86/bug487993.vgtest @@ -0,0 +1,3 @@ +prereq: test -e bug487993 +prog: bug487993 +vgopts: -q |
From: Mark W. <ma...@kl...> - 2024-06-05 16:45:25
|
Sourceware infrastructure community updates for Q2 2024 A summary of news about Sourceware, the Free Software hosting project for core toolchain and developer tools, from the last 3 months. - Ongoing rDNS email issue - Aging inactive users policy - Sourceware hosts are not affected by the latest xz backdoor - Sourceware infrastructure security vision - Upgraded server2 - Sourceware @ Conservancy - Year One - Sourceware Open Office hours = Ongoing rDNS email issue There are currently issues with rDNS for sourceware.org, cygwin.com, gcc.gnu.org and lists.dwarfstd.org which cause email delays for some people in Europe. If you find something like: Client host rejected: cannot find your hostname, [8.43.85.97] in your mail.logs you are affected. Lumen [CenturyLink, Level3] reports they have isolated this issue to their Frankfurt, DE facility but do not have an ETR at this time. If you have trouble receiving emails over smtp because of this issue note that https://inbox.sourceware.org provides public mailinglists through http, imap, nntp and makes it possible to git clone whole archives. You can get the latest updates from the fediverse: https://fosstodon.org/@sourceware = Aging inactive users policy We started on the "aging inactive users" process by sending emails to the first batch of users without any activity in the last year and disabled accounts that really weren't active (putting them in the emeritus group) https://inbox.sourceware.org/overseers/ZhQ...@el.../T/ Various people already replied saying it was OK to disable their account. But we also noticed that some of the account contact information is no longer valid. Please keep your account details up to date so that we always have a way of contacting you. Please see the account management page on how to set your current email address: https://sourceware.org/sourceware/accountinfo.html = Sourceware hosts are not affected by the latest xz backdoor Sourceware hosts are not affected by the latest xz backdoor. We have reset the builder.sourceware.org containers of debian-testing, fedora-rawhide and opensuse-tumbleweed. These containers however didn't have ssh installed, were running on isolated VMs on separate machines from our main hosts, snapshots and backup servers. = Sourceware infrastructure security vision During Q2 2024 we held various open office and public email discussions with the community and made plans for Sourceware and all the hosted projects. https://inbox.sourceware.org/202...@gn.../ https://inbox.sourceware.org/libc-alpha/ZiV8e8Xm4GFGbQ2E@debian/T/ https://inbox.sourceware.org/libc-alpha/202...@re.../T/ After the xz-backdoor incident obviously a lot of discussions focused on various security aspects. As Sourceware Project Leadership Committee we turned those ideas into concrete plans. https://sourceware.org/sourceware-security-vision.html The Sourceware infrastructure security vision explains what Sourceware is, the mission, how the organization works, the secure Sourceware project goals and plans. This includes not just infrastructure services updates, but also the secure software development framework projects use and secure supply chain issues. We are currently working with Conservancy staff on funding proposals for these plans. = Upgraded server2 server2.sourceware.org now has 512GB RAM, thanks Red Hat. = Sourceware @ Conservancy - Year One https://inbox.sourceware.org/202...@gn... https://fosstodon.org/@sourceware/112526024910398811 Communications (lots, also on the fediverse), New and updated services (snapshots server, email, public-inbox, cgit), Security (CVEs, git signing, autoregen builders, aging inactive users, secure supply chain), New and upgraded hardware (thanks Red Hat OSUOSL StarFive), Finances (we spend hundreds and raised thousands of dollars), Next year plans (more, bigger and isolated), Conclusion (Five Stars, Would Recommend). = Sourceware Open Office hours Every second Friday of the month is the Sourceware Overseers Open Office hour in #overseers on irc.libera.chat from 16:00 till 17:00 UTC. Note this is a new time! Please feel free to drop by with any Sourceware services and hosting questions. Of course you are welcome to drop into the #overseers channel at any time and we can also be reached through email and bugzilla: https://sourceware.org/mission.html#organization If you aren't already and want to keep up to date on Sourceware infrastructure services then please also subscribe to the overseers mailinglist. https://sourceware.org/mailman/listinfo/overseers The Sourceware Project Leadership Committee also meets once a month to discuss all community input. The committee will set priorities and decide how to spend any funds, negotiate with hardware and service partners, create budgets together with the Conservancy, or decide when a new fundraising campaign is needed. The current committee is Frank Ch. Eigler, Christopher Faylor, Ian Kelling, Ian Lance Taylor, Tom Tromey, Jon Turney, Mark J. Wielaard and Elena Zannoni. |
From: Paul F. <pa...@so...> - 2024-06-05 06:56:10
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=d691c75e9445d88d24b1a5595e37a991c87c298c commit d691c75e9445d88d24b1a5595e37a991c87c298c Author: Paul Floyd <pj...@wa...> Date: Wed Jun 5 08:54:16 2024 +0200 FreeBSD and Darwin: apply same fix as Bug 488026 Diff: --- NEWS | 1 + coregrind/m_initimg/initimg-darwin.c | 2 +- coregrind/m_initimg/initimg-freebsd.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 290d609286..92e669e311 100644 --- a/NEWS +++ b/NEWS @@ -39,6 +39,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 'guest_IP_AT_SYSCALL' 486293 memccpy false positives 486569 linux inotify_init syscall wrapper missing POST entry in syscall_table +488026 Use of `sizeof` instead of `strlen To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/coregrind/m_initimg/initimg-darwin.c b/coregrind/m_initimg/initimg-darwin.c index 564d2fdaa7..7bac7dc0d1 100644 --- a/coregrind/m_initimg/initimg-darwin.c +++ b/coregrind/m_initimg/initimg-darwin.c @@ -134,7 +134,7 @@ static HChar** setup_client_env ( HChar** origenv, const HChar* toolname) paths. We might not need the space for vgpreload_<tool>.so, but it doesn't hurt to over-allocate briefly. The 16s are just cautious slop. */ - Int preload_core_path_len = vglib_len + sizeof(preload_core) + Int preload_core_path_len = vglib_len + VG_(strlen)(preload_core) + sizeof(VG_PLATFORM) + 16; Int preload_tool_path_len = vglib_len + VG_(strlen)(toolname) + sizeof(VG_PLATFORM) + 16; diff --git a/coregrind/m_initimg/initimg-freebsd.c b/coregrind/m_initimg/initimg-freebsd.c index 8c2c6b0e8e..a78875ac28 100644 --- a/coregrind/m_initimg/initimg-freebsd.c +++ b/coregrind/m_initimg/initimg-freebsd.c @@ -145,7 +145,7 @@ static HChar** setup_client_env ( HChar** origenv, const HChar* toolname) paths. We might not need the space for vgpreload_<tool>.so, but it doesn't hurt to over-allocate briefly. The 16s are just cautious slop. */ - Int preload_core_path_len = vglib_len + sizeof(preload_core) + Int preload_core_path_len = vglib_len + VG_(strlen)(preload_core) + sizeof(VG_PLATFORM) + 16; Int preload_tool_path_len = vglib_len + VG_(strlen)(toolname) + sizeof(VG_PLATFORM) + 16; |
From: Paul F. <pa...@so...> - 2024-06-05 06:20:10
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=ecd6d353a5ec2fd12665947235186ab014b629e8 commit ecd6d353a5ec2fd12665947235186ab014b629e8 Author: Ethiraric <eth...@gm...> Date: Tue Jun 4 18:37:48 2024 +0200 coregrind: fix allocation length The `sizeof(preload_core)` here evaluates the size of a pointer rather than the string behind it (unlike for `VG_PLATFORM` which is a macro). Diff: --- coregrind/m_initimg/initimg-linux.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index c2101b15f1..5359189bf6 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -143,7 +143,7 @@ static HChar** setup_client_env ( HChar** origenv, const HChar* toolname, Bool u paths. We might not need the space for vgpreload_<tool>.so, but it doesn't hurt to over-allocate briefly. The 16s are just cautious slop. */ - Int preload_core_path_len = vglib_len + sizeof(preload_core) + Int preload_core_path_len = vglib_len + VG_(strlen)(preload_core) + sizeof(VG_PLATFORM) + 16; Int preload_tool_path_len = vglib_len + VG_(strlen)(toolname) + sizeof(VG_PLATFORM) + 16; |
From: Paul F. <pa...@so...> - 2024-06-04 10:50:26
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=a015ad2e0db40076b4841220c7ab6d6853798936 commit a015ad2e0db40076b4841220c7ab6d6853798936 Author: Paul Floyd <pj...@wa...> Date: Tue Jun 4 12:49:33 2024 +0200 Linux regtest: reallocarray needs malloc.h Seen on Rocky 8.9 Diff: --- memcheck/tests/amd64-linux/reallocarray.c | 1 + memcheck/tests/amd64-linux/reallocarray.stderr.exp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/memcheck/tests/amd64-linux/reallocarray.c b/memcheck/tests/amd64-linux/reallocarray.c index 8765ca4997..ce63b80100 100644 --- a/memcheck/tests/amd64-linux/reallocarray.c +++ b/memcheck/tests/amd64-linux/reallocarray.c @@ -2,6 +2,7 @@ #include <assert.h> #include <errno.h> #include <stdint.h> +#include <malloc.h> #include "../../memcheck.h" int main(void) diff --git a/memcheck/tests/amd64-linux/reallocarray.stderr.exp b/memcheck/tests/amd64-linux/reallocarray.stderr.exp index a1c8439cc9..20a1c4e8b4 100644 --- a/memcheck/tests/amd64-linux/reallocarray.stderr.exp +++ b/memcheck/tests/amd64-linux/reallocarray.stderr.exp @@ -12,19 +12,19 @@ To see them, rerun with: --leak-check=full --show-leak-kinds=all realloc() with size 0 at 0x........: reallocarray (vg_replace_malloc.c:...) - by 0x........: main (reallocarray.c:13) + by 0x........: main (reallocarray.c:14) Address 0x........ is 0 bytes inside a block of size 40 alloc'd at 0x........: reallocarray (vg_replace_malloc.c:...) - by 0x........: main (reallocarray.c:11) + by 0x........: main (reallocarray.c:12) All heap blocks were freed -- no leaks are possible realloc() with size 0 at 0x........: reallocarray (vg_replace_malloc.c:...) - by 0x........: main (reallocarray.c:16) + by 0x........: main (reallocarray.c:17) Address 0x........ is 0 bytes inside a block of size 10 alloc'd at 0x........: malloc (vg_replace_malloc.c:...) - by 0x........: main (reallocarray.c:15) + by 0x........: main (reallocarray.c:16) All heap blocks were freed -- no leaks are possible |
From: Paul F. <pa...@so...> - 2024-06-02 10:06:51
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=faa8c52746e24ad04209d06f4e02aff1f345045a commit faa8c52746e24ad04209d06f4e02aff1f345045a Author: Paul Floyd <pj...@wa...> Date: Sun Jun 2 12:06:18 2024 +0200 README_DEVELOPERS: fix a couple of typos Diff: --- README_DEVELOPERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README_DEVELOPERS b/README_DEVELOPERS index 71581bd865..449ad6581b 100644 --- a/README_DEVELOPERS +++ b/README_DEVELOPERS @@ -116,9 +116,9 @@ top level directory. See AC_CHECK_FUNCS and the various blocks starting with AC_MSG_CHECKING. In the test directory, modify Makefile.am. Add to EXTRA_DIST the .vgtest, -A .stderr.exp and .stderr.out files. Add any filters to dist_noinst_SCRIPTS. +.stderr.exp and .stderr.out files. Add any filters to dist_noinst_SCRIPTS. Add the test executable name to check_PROGRAMS. Try to respect the -formatting and alphabetical ordering of the Makefile.am, For simple C files that is +formatting and alphabetical ordering of the Makefile.am. For simple C files that is sufficient. If you needed to add a feature test to configure.ac then you should use the same condition to add the executable name to check_PROGRAMS. If the executable uses C++ you need to add exename_SOURCES. If the executable needs |
From: LATHUILIERE B. <bru...@ed...> - 2024-05-28 17:15:41
|
Hi, With a recent documentation commit (many thanks to Paul Floyd), I discovered the "make post-regtest-checks" command. It helps me to clean up the verrou tool a bit. But I still have problems with 3 functions that are accessible in the headers coregrind/pub_core_* but not in the corresponding pub_tool_*. I have temporarily added the function signatures in the verrou source, but this is clearly not a long-term solution. The three functions are: 1) extern Bool VG_(get_fnname_raw) ( DiEpoch ep, Addr a, const HChar** buf ); Since this function does exactly what I need (decide if an IRSB is instrumented (or not) based on the mangled symbol name), I wonder if it would be possible to consider this function to be tool accessible? 2) extern Bool VG_(resolve_filename) ( Int fd, const HChar** buf ); I use this function in the function vr_post_syscall (second parameter of VG_(needs_syscall_wrapper) ). I use this function to get the canonical name of the file corresponding to the syscall OPEN_AT. Do you know if I can do this only with pub_tool function? 3) extern Bool VG_(ok_to_discard_translations); In the vr_post_syscall function I need to call an instrumentation stop/start for a write syscall. As in the callgrind tool, the stop/start process implies discard_translation. To be authorized I need to shortcup protection with an ugly wrapper: VG_(ok_to_discard_translations)=True; // I call the stop/start function with a VG_(discard_translation_safely) VG_(ok_to_discard_translations)=False; In practice it seems to work, but I do not know if I have missed any corner cases. I would like to know if discard_translation is valid for: - write syscall (to know if what I'm doing now is valid) - all syscall (to know if the wrapping can be done in syswrap-main.c around VG_TDICT_CALL(tool_post_syscall,...) and VG_TDICT_CALL(tool_pre_syscall,...) ) The calls to Function 2 and 3 come from a part of verrou that deals with interaction between IO and verrou function (usually called by client_request). In practice, this means I'm able to execute a client request when a line of stdout (or a file) matches a user-defined pattern. This part needs to be cleaned up (I hope to be able to do this this year). I was planning to do something specific to the verrou tool to avoid unnecessary abstraction, but if other tools are interested in interaction between IO and client requests, it might be the time to discuss and design something generic in the core. If you have ideas for new functionality that could be achieved with this feature, it might help me to convince my boss to spend time on this. Again, if no one else is interested in this feature, it will probably be easier to keep it in verrou and to solve my 3 header problems. Regards, Bruno Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis à l'intention exclusive des destinataires et les informations qui y figurent sont strictement confidentielles. Toute utilisation de ce Message non conforme à sa destination, toute diffusion ou toute publication totale ou partielle, est interdite sauf autorisation expresse. Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de votre système, ainsi que toutes ses copies, et de n'en garder aucune trace sur quelque support que ce soit. Nous vous remercions également d'en avertir immédiatement l'expéditeur par retour du message. Il est impossible de garantir que les communications par messagerie électronique arrivent en temps utile, sont sécurisées ou dénuées de toute erreur ou virus. ____________________________________________________ This message and any attachments (the 'Message') are intended solely for the addressees. The information contained in this Message is confidential. Any use of information contained in this Message not in accord with its purpose, any dissemination or disclosure, either whole or partial, is prohibited except formal approval. If you are not the addressee, you may not copy, forward, disclose or use any part of it. If you have received this message in error, please delete it and all copies from your system and notify the sender immediately by return message. E-mail communication cannot be guaranteed to be timely secure, error or virus-free. |
From: Paul F. <pa...@so...> - 2024-05-28 17:00:54
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=4063859b4478fbb299b7ad58855ce9ed37a57aae commit 4063859b4478fbb299b7ad58855ce9ed37a57aae Author: Paul Floyd <pj...@wa...> Date: Sun May 26 07:46:33 2024 +0200 arm64 regtest: improve dc_cvax test Make sure that the buffer used for dc zva is the right size. Turn on the dc cvap and dc cvadp tests, resorting to .byte arrays. Diff: --- none/tests/arm64/dc_cvax.c | 57 +++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/none/tests/arm64/dc_cvax.c b/none/tests/arm64/dc_cvax.c index 79674ce593..768f7592e3 100644 --- a/none/tests/arm64/dc_cvax.c +++ b/none/tests/arm64/dc_cvax.c @@ -1,30 +1,39 @@ #include <assert.h> #include <string.h> +#include <stdlib.h> +#include <stdio.h> -int main() +int main(void) { - char buf[64] __attribute__((aligned(64))); - unsigned long check_dc_zva; - unsigned long check_dc_cvap; - memset(buf, 0xAA, 64); - asm volatile("mrs %0, dczid_el0" : "=r" (check_dc_zva)); - asm volatile("dc cvac, %0" :: "r" (buf)); - asm volatile("dc cvau, %0" :: "r" (buf)); - asm volatile("mrs %0, id_aa64isar1_el1" : "=r" (check_dc_cvap)); - /* Not sure if GCC supports this syntax */ - /* - if (check_dc_cvap & 0x3) { - asm volatile(".arch_extension ccpp;dc cvap, %0" :: "r" (buf)); - } - if (check_dc_cvap & 0x2) { - asm volatile(".arch_extension ccdp;dc cvadp, %0" :: "r" (buf)); - } - */ - asm volatile("dc civac, %0" :: "r" (buf)); - // and while I'm at it - if (!(check_dc_zva & 0x10)) { - asm volatile("dc zva, %0" :: "r" (buf)); - assert(buf[0] == 0); - assert(buf[63] == 0); + char buf[64] __attribute__((aligned(64))); + unsigned long check_dc_zva; + unsigned long check_dc_cvap; + memset(buf, 0xAA, 64); + asm volatile("mrs %0, dczid_el0" : "=r" (check_dc_zva)); + asm volatile("dc cvac, %0" :: "r" (buf)); + asm volatile("dc cvau, %0" :: "r" (buf)); + asm volatile("mrs %0, id_aa64isar1_el1" : "=r" (check_dc_cvap)); + if (check_dc_cvap & 0x3) { + asm volatile("add x8, sp, #0x40\n" + ".inst 0xd50b7c28\n"); + } + if (check_dc_cvap & 0x2) { + asm volatile("add x8, sp, #0x40\n" + ".inst 0xd50b7c28"); + } + asm volatile("dc civac, %0" :: "r" (buf)); + if (!(check_dc_zva & 0x10)) { + size_t buf_size = (1U << ((check_dc_zva & 0xf) + 2)); + //printf("lg 2 word count %lu byte count %zu\n", check_dc_zva & 0xfUL, buf_size); + char* var_buf; + if (posix_memalign((void**)&var_buf, buf_size, buf_size) == 0) { + asm volatile("dc zva, %0" :: "r" (var_buf)); + assert(var_buf[0] == 0); + assert(var_buf[buf_size - 1] == 0); + free(var_buf); + } else { + perror("posix_memalign failed:"); + exit(1); + } } } |
From: Paul F. <pa...@so...> - 2024-05-28 16:57:00
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=790abdf7d3f3df0c968605b68ca765310689b7ce commit 790abdf7d3f3df0c968605b68ca765310689b7ce Author: Jesus Checa <jc...@re...> Date: Sat May 25 12:40:30 2024 +0200 Bug 453044 - gbserver_tests failures in aarch64 Diff: --- NEWS | 1 + gdbserver_tests/filter_gdb.in | 1 + 2 files changed, 2 insertions(+) diff --git a/NEWS b/NEWS index cc47dd0656..290d609286 100644 --- a/NEWS +++ b/NEWS @@ -34,6 +34,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 392146 aarch64: unhandled instruction 0xD5380001 (MRS rT, midr_el1) 412377 SIGILL on cache flushes on arm64 447989 Support Armv8.2 SHA-512 instructions +453044 gbserver_tests failures in aarch64 486180 [Valgrind][MIPS] 'VexGuestArchState' has no member named 'guest_IP_AT_SYSCALL' 486293 memccpy false positives diff --git a/gdbserver_tests/filter_gdb.in b/gdbserver_tests/filter_gdb.in index 39af075194..0f964e223f 100755 --- a/gdbserver_tests/filter_gdb.in +++ b/gdbserver_tests/filter_gdb.in @@ -156,6 +156,7 @@ s/in _select ()/in syscall .../ /sysv\/linux\/generic\/select.c/d /return SYSCALL_CANCEL /d /r = SYSCALL_CANCEL /d +/result = SYSCALL_CANCEL /d # a more specialised system call select stack trace part # (on 32 bits, we have an int_80, on 64 bits, directly select) |
From: Paul F. <pa...@so...> - 2024-05-22 06:17:25
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=aa52ac4e5801529e42f0328cba239725acde6016 commit aa52ac4e5801529e42f0328cba239725acde6016 Author: Paul Floyd <pj...@wa...> Date: Wed May 22 08:16:19 2024 +0200 arm64 cleanup, part 1 Mainly typos but also fix a potential assert in get_cache_info. Diff: --- NEWS | 1 + VEX/priv/guest_arm64_toIR.c | 11 +++++------ coregrind/m_cache.c | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index d10e75a091..cc47dd0656 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 0x66 0xF 0x3A 0x2 377966 arm64 unhandled instruction dc zva392146 aarch64: unhandled instruction 0xD5380001 (MRS rT, midr_el1) +392146 aarch64: unhandled instruction 0xD5380001 (MRS rT, midr_el1) 412377 SIGILL on cache flushes on arm64 447989 Support Armv8.2 SHA-512 instructions 486180 [Valgrind][MIPS] 'VexGuestArchState' has no member named diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index 758b397042..c3957bf58b 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -7569,7 +7569,7 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, return True; } /* ---- Case for MPIDR_EL1 (RO) ---- - Instead of returing a fake regiser, we use the same + Instead of returing a fake register, we use the same value as does the kernel emulation. 0xD53800 101 Rt MRS rT, mpidr_el1 */ @@ -7580,7 +7580,7 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, return True; } /* ---- Case for REVDIR_EL1 (RO) ---- - Instead of emulating the regiser, we just return the same + Instead of emulating the register, we just return the same value as does the kernel emulation. 0xD53800 110 Rt MRS rT, revdir_el1 */ @@ -7591,7 +7591,7 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, return True; } /* ---- Case for ID_AA64PFR0_EL1 (RO) ---- - Instead of returing a fake regiser, we use the same + Instead of returing a fake register, we use the same value as does the kernel emulation. We set deprecate half precission floating-point to normal floating-point support. We set all other values to zero. @@ -7726,7 +7726,7 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, return True; } /* ---- Case for ID_AA64MMFR0_EL1 (RO) ---- - Instead of returing a fake regiser, we use the same + Instead of returing a fake register, we use the same value as does the kernel emulation. 0xD53807 000 Rt MRS rT, id_aa64mmfr0_el1 */ @@ -7748,7 +7748,7 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn, return True; } /* ---- Case for ID_AA64MMFR1_EL1 (RO) ---- - Instead of returing a fake regiser, we use the same + Instead of returing a fake register, we use the same value as does the kernel emulation. Set VHE and HAFDBS to not implemented. 0xD53807 001 Rt MRS rT, id_aa64mmfr1_el1 @@ -14110,7 +14110,6 @@ Bool dis_AdvSIMD_two_reg_misc(/*MB_OUT*/DisResult* dres, UInt insn) case 2: ch = 'm'; irrmE = mkU32(Irrm_NegINF); break; case 3: ch = 'p'; irrmE = mkU32(Irrm_PosINF); break; case 4: ch = 'z'; irrmE = mkU32(Irrm_ZERO); break; - // The following is a kludge. Should be: Irrm_NEAREST_TIE_AWAY_0 case 5: ch = 'a'; isBinop = False; op = isD ? Iop_RoundF64toIntA0 : Iop_RoundF32toIntA0; break; // I am unsure about the following, due to the "integral exact" // description in the manual. What does it mean? (frintx, that is) diff --git a/coregrind/m_cache.c b/coregrind/m_cache.c index 2b32660c44..565aa41767 100644 --- a/coregrind/m_cache.c +++ b/coregrind/m_cache.c @@ -546,6 +546,7 @@ get_cache_info(VexArchInfo *vai) #if defined(VGA_arm64) unsigned long val; asm volatile("mrs %0, dczid_el0" : "=r" (val)); + val &= 0xf; // The ARM manual says that 4 bits are used but 9 is the maximum vg_assert(val <= 9); vai->arm64_cache_block_size = val; |
From: Paul F. <pa...@so...> - 2024-05-22 06:02:35
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=60fca88acc9311fbd910f852f0761110a21cd7e8 commit 60fca88acc9311fbd910f852f0761110a21cd7e8 Author: Paul Floyd <pj...@wa...> Date: Wed May 22 08:01:40 2024 +0200 arm64 regtest: add a configure check that the compiler accepts sha3. Diff: --- configure.ac | 17 +++++++++++++++++ none/tests/arm64/Makefile.am | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 879215007c..20ff73e59b 100755 --- a/configure.ac +++ b/configure.ac @@ -5618,6 +5618,23 @@ AC_MSG_RESULT([no]) AM_CONDITIONAL(HAVE_THRD_CREATE, test x$ac_cxx_have_thrd_create = xyes) +# Check arm64 sha3 +safe_CFLAGS=$CFLAGS +CFLAGS="${CFLAGS} -march=armv8.2-a+sha3" +AC_MSG_CHECKING([for sha3]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ + return 0; +]])], +[ +ac_have_sha3=yes +AC_MSG_RESULT([yes]) +], [ +ac_have_sha3=no +AC_MSG_RESULT([no]) +]) + +AM_CONDITIONAL(HAVE_SHA3, test x$ac_have_sha3 = xyes) +CFLAGS=$safe_CFLAGS #---------------------------------------------------------------------------- # Ok. We're done checking. diff --git a/none/tests/arm64/Makefile.am b/none/tests/arm64/Makefile.am index 296000d391..071cce0057 100644 --- a/none/tests/arm64/Makefile.am +++ b/none/tests/arm64/Makefile.am @@ -45,7 +45,11 @@ if BUILD_ARMV81_TESTS endif if BUILD_ARMV82_TESTS - check_PROGRAMS += fp_and_simd_v82 sha512_v82 + check_PROGRAMS += fp_and_simd_v82 +endif + +if HAVE_SHA3 + check_PROGRAMS += sha512_v82 endif if HAVE_CXX17 |
From: Paul F. <pa...@so...> - 2024-05-22 05:37:10
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=22730282bf240afa7d1215615be9c50eedf49d5a commit 22730282bf240afa7d1215615be9c50eedf49d5a Author: Paul Floyd <pj...@wa...> Date: Wed May 22 07:34:34 2024 +0200 FreeBSD: synthesize AT_HWCAP on arm64 Not used on amd64. Less hardware variation? Diff: --- coregrind/m_initimg/initimg-freebsd.c | 25 +++++++++++- include/vki/vki-arm64-freebsd.h | 67 +++++++++++++++++++++++++++----- none/tests/freebsd/auxv.stderr.exp-arm64 | 2 +- 3 files changed, 82 insertions(+), 12 deletions(-) diff --git a/coregrind/m_initimg/initimg-freebsd.c b/coregrind/m_initimg/initimg-freebsd.c index 53dbf7961f..8c2c6b0e8e 100644 --- a/coregrind/m_initimg/initimg-freebsd.c +++ b/coregrind/m_initimg/initimg-freebsd.c @@ -713,12 +713,35 @@ static Addr setup_client_stack(const void* init_sp, case VKI_AT_CANARYLEN: #if (FREEBSD_VERS >= FREEBSD_11) - // FreeBSD 11+ also have HWCAP and HWCAP2 case VKI_AT_EHDRFLAGS: #endif /* All these are pointerless, so we don't need to do anything about them. */ break; +#if defined(VGP_arm64_freebsd) + // FreeBSD 11+ also have HWCAP and HWCAP2 + // but they aren't used on amd64 + case VKI_AT_HWCAP: +#define ARM64_SUPPORTED_HWCAP (VKI_HWCAP_ATOMICS \ + | VKI_HWCAP_AES \ + | VKI_HWCAP_PMULL \ + | VKI_HWCAP_SHA1 \ + | VKI_HWCAP_SHA2 \ + | VKI_HWCAP_SHA512 \ + | VKI_HWCAP_CRC32 \ + | VKI_HWCAP_ASIMDRDM \ + | VKI_HWCAP_FP \ + | VKI_HWCAP_ASIMD \ + | VKI_HWCAP_ASIMDDP) + auxv->u.a_val &= ARM64_SUPPORTED_HWCAP; + break; +#undef ARM64_SUPPORTED_HWCAP + // not yet + /* + case VKI_AT_HWCAP2: + break; + */ +#endif case VKI_AT_EXECPATH: auxv->u.a_ptr = copy_str(&strtab, resolved_name); diff --git a/include/vki/vki-arm64-freebsd.h b/include/vki/vki-arm64-freebsd.h index 32e81db1e1..e535fe7fee 100644 --- a/include/vki/vki-arm64-freebsd.h +++ b/include/vki/vki-arm64-freebsd.h @@ -70,16 +70,6 @@ typedef struct { // Used by PTRACE and coredump-elf.h */ //---------------------------------------------------------------------- -/* -struct vki_reg { - vki_uint64_t x[30]; - vki_uint64_t lr; - vki_uint64_t sp; - vki_uint64_t elr; - vki_uint64_t spsr; -}; -*/ - struct vki_dbreg { vki_uint8_t db_debug_ver; vki_uint8_t db_nbkpts; @@ -177,4 +167,61 @@ struct vki_vdso_timehands { VKI_VDSO_TIMEHANDS_MD }; +//---------------------------------------------------------------------- +// machine/elf.h +//---------------------------------------------------------------------- + +#define VKI_HWCAP_FP 0x00000001 +#define VKI_HWCAP_ASIMD 0x00000002 +#define VKI_HWCAP_EVTSTRM 0x00000004 +#define VKI_HWCAP_AES 0x00000008 +#define VKI_HWCAP_PMULL 0x00000010 +#define VKI_HWCAP_SHA1 0x00000020 +#define VKI_HWCAP_SHA2 0x00000040 +#define VKI_HWCAP_CRC32 0x00000080 +#define VKI_HWCAP_ATOMICS 0x00000100 +#define VKI_HWCAP_FPHP 0x00000200 +#define VKI_HWCAP_ASIMDHP 0x00000400 +#define VKI_HWCAP_CPUID 0x00000800 +#define VKI_HWCAP_ASIMDRDM 0x00001000 +#define VKI_HWCAP_JSCVT 0x00002000 +#define VKI_HWCAP_FCMA 0x00004000 +#define VKI_HWCAP_LRCPC 0x00008000 +#define VKI_HWCAP_DCPOP 0x00010000 +#define VKI_HWCAP_SHA3 0x00020000 +#define VKI_HWCAP_SM3 0x00040000 +#define VKI_HWCAP_SM4 0x00080000 +#define VKI_HWCAP_ASIMDDP 0x00100000 +#define VKI_HWCAP_SHA512 0x00200000 +#define VKI_HWCAP_SVE 0x00400000 +#define VKI_HWCAP_ASIMDFHM 0x00800000 +#define VKI_HWCAP_DIT 0x01000000 +#define VKI_HWCAP_USCAT 0x02000000 +#define VKI_HWCAP_ILRCPC 0x04000000 +#define VKI_HWCAP_FLAGM 0x08000000 +#define VKI_HWCAP_SSBS 0x10000000 +#define VKI_HWCAP_SB 0x20000000 +#define VKI_HWCAP_PACA 0x40000000 +#define VKI_HWCAP_PACG 0x80000000 + +#define VKI_HWCAP2_DCPODP 0x00000001 +#define VKI_HWCAP2_SVE2 0x00000002 +#define VKI_HWCAP2_SVEAES 0x00000004 +#define VKI_HWCAP2_SVEPMULL 0x00000008 +#define VKI_HWCAP2_SVEBITPERM 0x00000010 +#define VKI_HWCAP2_SVESHA3 0x00000020 +#define VKI_HWCAP2_SVESM4 0x00000040 +#define VKI_HWCAP2_FLAGM2 0x00000080 +#define VKI_HWCAP2_FRINT 0x00000100 +#define VKI_HWCAP2_SVEI8MM 0x00000200 +#define VKI_HWCAP2_SVEF32MM 0x00000400 +#define VKI_HWCAP2_SVEF64MM 0x00000800 +#define VKI_HWCAP2_SVEBF16 0x00001000 +#define VKI_HWCAP2_I8MM 0x00002000 +#define VKI_HWCAP2_BF16 0x00004000 +#define VKI_HWCAP2_DGH 0x00008000 +#define VKI_HWCAP2_RNG 0x00010000 +#define VKI_HWCAP2_BTI 0x00020000 + + #endif /* VKI_ARM64_FREEBSD_H */ diff --git a/none/tests/freebsd/auxv.stderr.exp-arm64 b/none/tests/freebsd/auxv.stderr.exp-arm64 index 949e740d4f..738a284dcb 100644 --- a/none/tests/freebsd/auxv.stderr.exp-arm64 +++ b/none/tests/freebsd/auxv.stderr.exp-arm64 @@ -16,7 +16,7 @@ val: AT_PAGESIZES int: 20 ptr: 0x........ val: AT_PAGESIZESLEN int: 21 ptr: 0x........ val: AT_IGNORE int: 01 ptr: 0x........ val: AT_STACKPROT int: 23 ptr: 0x........ -val: AT_IGNORE int: 01 ptr: 0x........ +val: AT_HWCAP int: 25 ptr: 0x........ val: AT_IGNORE int: 01 ptr: 0x........ val: AT_IGNORE int: 01 ptr: 0x........ val: AT_ARGC int: 28 ptr: 0x........ |
From: Paul F. <pa...@so...> - 2024-05-20 19:59:23
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=f84375c0363337a6dede85f5a6c9dd826cd23e71 commit f84375c0363337a6dede85f5a6c9dd826cd23e71 Author: Paul Floyd <pj...@wa...> Date: Mon May 20 19:58:21 2024 +0000 FreeBSD regtest: add filters for syscall macro wrappers Seen on FreeBSD 15. Diff: --- gdbserver_tests/filter_gdb.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gdbserver_tests/filter_gdb.in b/gdbserver_tests/filter_gdb.in index 4118063f6b..39af075194 100755 --- a/gdbserver_tests/filter_gdb.in +++ b/gdbserver_tests/filter_gdb.in @@ -48,6 +48,10 @@ s/^\[?1034hReading symbols/Reading symbols/ # errors get produced by GDB /\(rtld_start.S\|kill.S\|_exit.S\|_select.S\): No such file or directory/d +# FreeBSD syscall wrapper macros +/PSEUDO(select)/d +/RSYSCALL(kill)/d + # Remove some Suse package manager messages /^Try: zypper install -C/d |
From: Paul F. <pa...@so...> - 2024-05-20 19:22:09
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=3a6b11a3594c7524caff8a9f34928434e8c4a60e commit 3a6b11a3594c7524caff8a9f34928434e8c4a60e Author: Paul Floyd <pj...@wa...> Date: Mon May 20 21:19:57 2024 +0200 Add Bug 447989 to NEWS Diff: --- NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS b/NEWS index f6ed179952..d10e75a091 100644 --- a/NEWS +++ b/NEWS @@ -32,6 +32,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 377966 arm64 unhandled instruction dc zva392146 aarch64: unhandled instruction 0xD5380001 (MRS rT, midr_el1) 412377 SIGILL on cache flushes on arm64 +447989 Support Armv8.2 SHA-512 instructions 486180 [Valgrind][MIPS] 'VexGuestArchState' has no member named 'guest_IP_AT_SYSCALL' 486293 memccpy false positives |
From: Paul F. <pa...@so...> - 2024-05-20 19:19:00
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=5bf987891972478376e816fefea2d9abac3cb4fe commit 5bf987891972478376e816fefea2d9abac3cb4fe Author: David Benjamin <dav...@go...> Date: Wed Jan 5 00:22:30 2022 -0500 Add support for Armv8.2 SHA-512 instructions Fixes https://bugs.kde.org/show_bug.cgi?id=447989 Diff: --- .gitignore | 1 + VEX/priv/guest_arm64_defs.h | 13 ++ VEX/priv/guest_arm64_helpers.c | 74 +++++++- VEX/priv/guest_arm64_toIR.c | 144 +++++++++++++++- coregrind/m_initimg/initimg-linux.c | 1 + none/tests/arm64/Makefile.am | 10 +- none/tests/arm64/sha512_v82.c | 298 +++++++++++++++++++++++++++++++++ none/tests/arm64/sha512_v82.stderr.exp | 0 none/tests/arm64/sha512_v82.stdout.exp | 135 +++++++++++++++ none/tests/arm64/sha512_v82.vgtest | 3 + 10 files changed, 670 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 232059dae7..2736719bad 100644 --- a/.gitignore +++ b/.gitignore @@ -1817,6 +1817,7 @@ /none/tests/arm64/memory_test /none/tests/arm64/simd_dotprod /none/tests/arm64/simd_v81 +/none/tests/arm64/sha512_v82 # /none/tests/darwin/ /none/tests/darwin/*.dSYM diff --git a/VEX/priv/guest_arm64_defs.h b/VEX/priv/guest_arm64_defs.h index 241dd36bab..a83a4d9a7f 100644 --- a/VEX/priv/guest_arm64_defs.h +++ b/VEX/priv/guest_arm64_defs.h @@ -175,6 +175,19 @@ extern void arm64g_dirtyhelper_SHA256SU1 ( /*OUT*/V128* res, ULong dHi, ULong dLo, ULong nHi, ULong nLo, ULong mHi, ULong mLo ); +extern +void arm64g_dirtyhelper_SHA512H2 ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo, ULong mHi, ULong mLo ); +extern +void arm64g_dirtyhelper_SHA512H ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo, ULong mHi, ULong mLo ); +extern +void arm64g_dirtyhelper_SHA512SU0 ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo ); +extern +void arm64g_dirtyhelper_SHA512SU1 ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo, + ULong mHi, ULong mLo ); /*---------------------------------------------------------*/ diff --git a/VEX/priv/guest_arm64_helpers.c b/VEX/priv/guest_arm64_helpers.c index 0db067d203..d75798b2b4 100644 --- a/VEX/priv/guest_arm64_helpers.c +++ b/VEX/priv/guest_arm64_helpers.c @@ -928,11 +928,6 @@ ULong arm64g_dirtyhelper_MRS_ID_AA64ISAR0_EL1 ( void ) // 10 // 109876543210 w &= 0xF000F0FFFFFF; - /* Degredate SHA2 from b0010 to b0001*/ - if ( (w >> 12) & 0x2 ) { - w ^= (0x2 << 12); - w |= (0x1 << 12); - } return w; # else @@ -1227,6 +1222,11 @@ static inline UInt ROR32 ( UInt x, UInt sh ) { return (x >> sh) | (x << (32 - sh)); } +static inline ULong ROR64 ( ULong x, ULong sh ) { + vassert(sh > 0 && sh < 64); + return (x >> sh) | (x << (64 - sh)); +} + static inline UInt SHAchoose ( UInt x, UInt y, UInt z ) { return ((y ^ z) & x) ^ z; } @@ -1460,6 +1460,70 @@ void arm64g_dirtyhelper_SHA256SU1 ( /*OUT*/V128* res, ULong dHi, ULong dLo, } } +/* CALLED FROM GENERATED CODE */ +void arm64g_dirtyhelper_SHA512H2 ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo, ULong mHi, ULong mLo ) +{ + vassert(nHi == 0); + ULong X = nLo; + V128 Y; Y.w64[1] = mHi; Y.w64[0] = mLo; + V128 W; W.w64[1] = dHi; W.w64[0] = dLo; + ULong NSigma0 = ROR64(Y.w64[0], 28) ^ ROR64(Y.w64[0], 34) + ^ ROR64(Y.w64[0], 39); + res->w64[1] = (X & Y.w64[1]) ^ (X & Y.w64[0]) ^ (Y.w64[1] & Y.w64[0]); + res->w64[1] += NSigma0 + W.w64[1]; + NSigma0 = ROR64(res->w64[1], 28) ^ ROR64(res->w64[1], 34) + ^ ROR64(res->w64[1], 39); + res->w64[0] = (res->w64[1] & Y.w64[0]) ^ (res->w64[1] & Y.w64[1]) + ^ (Y.w64[0] & Y.w64[1]); + res->w64[0] += NSigma0 + W.w64[0]; +} + +/* CALLED FROM GENERATED CODE */ +void arm64g_dirtyhelper_SHA512H ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo, ULong mHi, ULong mLo ) +{ + V128 X; X.w64[1] = nHi; X.w64[0] = nLo; + V128 Y; Y.w64[1] = mHi; Y.w64[0] = mLo; + V128 W; W.w64[1] = dHi; W.w64[0] = dLo; + ULong MSigma1 = ROR64(Y.w64[1], 14) ^ ROR64(Y.w64[1], 18) + ^ ROR64(Y.w64[1], 41); + res->w64[1] = (Y.w64[1] & X.w64[0]) ^ (~Y.w64[1] & X.w64[1]); + res->w64[1] += MSigma1 + W.w64[1]; + ULong tmp = res->w64[1] + Y.w64[0]; + MSigma1 = ROR64(tmp, 14) ^ ROR64(tmp, 18) ^ ROR64(tmp, 41); + res->w64[0] = (tmp & Y.w64[1]) ^ (~tmp & X.w64[0]); + res->w64[0] += MSigma1 + W.w64[0]; +} + +/* CALLED FROM GENERATED CODE */ +void arm64g_dirtyhelper_SHA512SU0 ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo ) + +{ + vassert(nHi == 0); + ULong X = nLo; + V128 W; W.w64[1] = dHi; W.w64[0] = dLo; + ULong sig0 = ROR64(W.w64[1], 1) ^ ROR64(W.w64[1], 8) ^ (W.w64[1] >> 7); + res->w64[0] = W.w64[0] + sig0; + sig0 = ROR64(X, 1) ^ ROR64(X, 8) ^ (X >> 7); + res->w64[1] = W.w64[1] + sig0; +} + +/* CALLED FROM GENERATED CODE */ +void arm64g_dirtyhelper_SHA512SU1 ( /*OUT*/V128* res, ULong dHi, ULong dLo, + ULong nHi, ULong nLo, + ULong mHi, ULong mLo ) +{ + V128 X; X.w64[1] = nHi; X.w64[0] = nLo; + V128 Y; Y.w64[1] = mHi; Y.w64[0] = mLo; + V128 W; W.w64[1] = dHi; W.w64[0] = dLo; + ULong sig1 = ROR64(X.w64[1], 19) ^ ROR64(X.w64[1], 61) ^ (X.w64[1] >> 6); + res->w64[1] = W.w64[1] + sig1 + Y.w64[1]; + sig1 = ROR64(X.w64[0], 19) ^ ROR64(X.w64[0], 61) ^ (X.w64[0] >> 6); + res->w64[0] = W.w64[0] + sig1 + Y.w64[0]; +} + /*---------------------------------------------------------------*/ /*--- Flag-helpers translation-time function specialisers. ---*/ diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index 062c0b3aac..758b397042 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -14806,7 +14806,7 @@ Bool dis_AdvSIMD_crypto_aes(/*MB_OUT*/DisResult* dres, UInt insn) static Bool dis_AdvSIMD_crypto_three_reg_sha(/*MB_OUT*/DisResult* dres, UInt insn) { - /* 31 28 23 21 20 15 14 11 9 4 + /* 31 27 23 21 20 15 14 11 9 4 0101 1110 sz 0 m 0 opc 00 n d Decode fields are: sz,opc */ @@ -14910,7 +14910,7 @@ Bool dis_AdvSIMD_crypto_three_reg_sha(/*MB_OUT*/DisResult* dres, UInt insn) static Bool dis_AdvSIMD_crypto_two_reg_sha(/*MB_OUT*/DisResult* dres, UInt insn) { - /* 31 28 23 21 16 11 9 4 + /* 31 27 23 21 16 11 9 4 0101 1110 sz 10100 opc 10 n d Decode fields are: sz,opc */ @@ -15000,6 +15000,142 @@ Bool dis_AdvSIMD_crypto_two_reg_sha(/*MB_OUT*/DisResult* dres, UInt insn) } +static +Bool dis_AdvSIMD_crypto_three_reg_sha512(/*MB_OUT*/DisResult* dres, UInt insn) +{ + /* 31 27 23 20 15 14 13 11 9 4 + 1100 1110 011 m 1 o 00 opc n d + Decode fields are: o,opc + */ +# define INSN(_bMax,_bMin) SLICE_UInt(insn, (_bMax), (_bMin)) + if (INSN(31,21) != BITS11(1,1,0,0,1,1,1,0,0,1,1) || INSN(15,15) != 1 + || INSN(13,12) != BITS2(0,0)) { + return False; + } + UInt mm = INSN(20,16); + UInt bitO = INSN(14,14); + UInt opc = INSN(11,10); + UInt nn = INSN(9,5); + UInt dd = INSN(4,0); + if (bitO == 0 && opc <= BITS2(1,0)) { + /* -------- 0,00 SHA512H Qd, Qn, Vm.2D -------- */ + /* -------- 0,01 SHA512H2 Qd, Qn, Vm.2D -------- */ + /* -------- 0,10 SHA512SU1 Vd.2D, Vn.2D, Vm.2D -------- */ + vassert(opc < 3); + const HChar* inames[3] = { "sha512h", "sha512h2", "sha512su1" }; + void(*helpers[3])(V128*,ULong,ULong,ULong,ULong,ULong,ULong) + = { &arm64g_dirtyhelper_SHA512H, &arm64g_dirtyhelper_SHA512H2, + &arm64g_dirtyhelper_SHA512SU1 }; + const HChar* hnames[3] + = { "arm64g_dirtyhelper_SHA512H", "arm64g_dirtyhelper_SHA512H2", + "arm64g_dirtyhelper_SHA512SU1" }; + IRTemp vD = newTemp(Ity_V128); + IRTemp vN = newTemp(Ity_V128); + IRTemp vM = newTemp(Ity_V128); + IRTemp vDhi = newTemp(Ity_I64); + IRTemp vDlo = newTemp(Ity_I64); + IRTemp vNhi = newTemp(Ity_I64); + IRTemp vNlo = newTemp(Ity_I64); + IRTemp vMhi = newTemp(Ity_I64); + IRTemp vMlo = newTemp(Ity_I64); + assign(vD, getQReg128(dd)); + assign(vN, getQReg128(nn)); + assign(vM, getQReg128(mm)); + assign(vDhi, unop(Iop_V128HIto64, mkexpr(vD))); + assign(vDlo, unop(Iop_V128to64, mkexpr(vD))); + /* vNhi is initialized below. */ + assign(vNlo, unop(Iop_V128to64, mkexpr(vN))); + assign(vMhi, unop(Iop_V128HIto64, mkexpr(vM))); + assign(vMlo, unop(Iop_V128to64, mkexpr(vM))); + /* SHA512H2 does not use the upper half of the N register. Mask it off so + that Memcheck doesn't complain unnecessarily. */ + switch (opc) { + case BITS2(0,1): + assign(vNhi, mkU64(0)); + break; + case BITS2(0,0): case BITS2(1,0): + assign(vNhi, unop(Iop_V128HIto64, mkexpr(vN))); + break; + default: + vassert(0); + } + IRTemp res = newTemp(Ity_V128); + IRDirty* di + = unsafeIRDirty_1_N( res, 0/*regparms*/, hnames[opc], helpers[opc], + mkIRExprVec_7( + IRExpr_VECRET(), + mkexpr(vDhi), mkexpr(vDlo), mkexpr(vNhi), + mkexpr(vNlo), mkexpr(vMhi), mkexpr(vMlo))); + stmt(IRStmt_Dirty(di)); + putQReg128(dd, mkexpr(res)); + switch (opc) { + case BITS2(0,0): case BITS2(0,1): + DIP("%s q%u, q%u, v%u.2d\n", inames[opc], dd, nn, mm); + break; + case BITS2(1,0): + DIP("%s v%u.2d, v%u.2d, v%u.2d\n", inames[opc], dd, nn, mm); + break; + default: + vassert(0); + } + return True; + } + + return False; +# undef INSN +} + + +static +Bool dis_AdvSIMD_crypto_two_reg_sha512(/*MB_OUT*/DisResult* dres, UInt insn) +{ + /* 31 27 23 19 15 11 9 4 + 1100 1110 1100 0000 1000 opc n d + Decode fields are: opc + */ +# define INSN(_bMax,_bMin) SLICE_UInt(insn, (_bMax), (_bMin)) + if (INSN(31,20) != BITS12(1,1,0,0,1,1,1,0,1,1,0,0) + || INSN(19,12) != BITS8(0,0,0,0,1,0,0,0)) { + return False; + } + UInt opc = INSN(11,10); + UInt nn = INSN(9,5); + UInt dd = INSN(4,0); + if (opc == BITS2(0,0)) { + /* -------- 00 SHA512SU0 Vd.2D, Vn.2D -------- */ + IRTemp vD = newTemp(Ity_V128); + IRTemp vN = newTemp(Ity_V128); + IRTemp vDhi = newTemp(Ity_I64); + IRTemp vDlo = newTemp(Ity_I64); + IRTemp vNhi = newTemp(Ity_I64); + IRTemp vNlo = newTemp(Ity_I64); + assign(vD, getQReg128(dd)); + assign(vN, getQReg128(nn)); + /* SHA512SU0 ignores the upper half of the N register. Mask it off, so + that Memcheck doesn't complain unnecessarily. */ + assign(vDhi, unop(Iop_V128HIto64, mkexpr(vD))); + assign(vDlo, unop(Iop_V128to64, mkexpr(vD))); + assign(vNhi, mkU64(0)); + assign(vNlo, unop(Iop_V128to64, mkexpr(vN))); + IRTemp res = newTemp(Ity_V128); + IRDirty* di = unsafeIRDirty_1_N( res, 0/*regparms*/, + "arm64g_dirtyhelper_SHA512SU0", + &arm64g_dirtyhelper_SHA512SU0, + mkIRExprVec_5( + IRExpr_VECRET(), + mkexpr(vDhi), mkexpr(vDlo), + mkexpr(vNhi), mkexpr(vNlo)) ); + stmt(IRStmt_Dirty(di)); + putQReg128(dd, mkexpr(res)); + DIP("sha512su0 v%u.2d, v%u.2d\n", dd, nn); + return True; + } + + return False; +# undef INSN +} + + static Bool dis_AdvSIMD_fp_compare(/*MB_OUT*/DisResult* dres, UInt insn) { @@ -16135,6 +16271,10 @@ Bool dis_ARM64_simd_and_fp(/*MB_OUT*/DisResult* dres, UInt insn, if (UNLIKELY(ok)) return True; ok = dis_AdvSIMD_crypto_two_reg_sha(dres, insn); if (UNLIKELY(ok)) return True; + ok = dis_AdvSIMD_crypto_three_reg_sha512(dres, insn); + if (UNLIKELY(ok)) return True; + ok = dis_AdvSIMD_crypto_two_reg_sha512(dres, insn); + if (UNLIKELY(ok)) return True; ok = dis_AdvSIMD_fp_compare(dres, insn); if (UNLIKELY(ok)) return True; ok = dis_AdvSIMD_fp_conditional_compare(dres, insn, archinfo, sigill_diag); diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 5f35637d75..c2101b15f1 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -734,6 +734,7 @@ Addr setup_client_stack( void* init_sp, | VKI_HWCAP_PMULL \ | VKI_HWCAP_SHA1 \ | VKI_HWCAP_SHA2 \ + | VKI_HWCAP_SHA512 \ | VKI_HWCAP_CRC32 \ | VKI_HWCAP_FP \ | VKI_HWCAP_ASIMD \ diff --git a/none/tests/arm64/Makefile.am b/none/tests/arm64/Makefile.am index 1f5d95107b..296000d391 100644 --- a/none/tests/arm64/Makefile.am +++ b/none/tests/arm64/Makefile.am @@ -22,7 +22,8 @@ EXTRA_DIST = \ ldxp_stxp_basisimpl.stdout.exp ldxp_stxp_basisimpl.stderr.exp \ ldxp_stxp_basisimpl.vgtest \ ldxp_stxp_fallbackimpl.stdout.exp ldxp_stxp_fallbackimpl.stderr.exp \ - ldxp_stxp_fallbackimpl.vgtest + ldxp_stxp_fallbackimpl.vgtest sha512_v82.stdout.exp sha512_v82.stderr.exp \ + sha512_v82.vgtest check_PROGRAMS = \ allexec \ @@ -44,7 +45,7 @@ if BUILD_ARMV81_TESTS endif if BUILD_ARMV82_TESTS - check_PROGRAMS += fp_and_simd_v82 + check_PROGRAMS += fp_and_simd_v82 sha512_v82 endif if HAVE_CXX17 @@ -70,13 +71,18 @@ simd_v81_CFLAGS = $(AM_CFLAGS) -march=armv8.1-a+crypto simd_dotprod_CFLAGS = $(AM_CFLAGS) -march=armv8.2-a+dotprod fp_and_simd_CFLAGS = $(AM_CFLAGS) -march=armv8-a+crypto fp_and_simd_v82_CFLAGS = $(AM_CFLAGS) -march=armv8.2-a+fp16+crypto +# SHA-512 is not part of SHA-3, either as an algorithm or in Arm features, but +# GCC lumps SHA-512 and SHA-3 extensions together as "sha3". +sha512_v82_CFLAGS = $(AM_CFLAGS) -march=armv8.2-a+sha3 frinta_frintn_SOURCES = frinta_frintn.cpp frinta_frintn_CXXFLAGS = ${AM_CXXFLAGS} -std=c++17 integer_CFLAGS = $(AM_CFLAGS) -g -O0 -DTEST_BFM=0 fp_and_simd_SOURCES = fp_and_simd.c simd.h simd.c fp_and_simd_v82_SOURCES = fp_and_simd_v82.c simd.h simd.c +sha512_v82_SOURCES = sha512_v82.c simd.h simd.c fp_and_simd_LDADD = -lm simd_v81_LDADD = -lm fp_and_simd_v82_LDADD = -lm +sha512_v82_LDADD = -lm diff --git a/none/tests/arm64/sha512_v82.c b/none/tests/arm64/sha512_v82.c new file mode 100644 index 0000000000..8f74022f62 --- /dev/null +++ b/none/tests/arm64/sha512_v82.c @@ -0,0 +1,298 @@ + +#include <stdio.h> +#include <assert.h> +#include "simd.h" + +/* ---------------------------------------------------------------- */ +/* -- Tests, in the same order that they appear in main() -- */ +/* -- The full list of instructions tested appear at the end of -- */ +/* -- this file. -- */ +/* ---------------------------------------------------------------- */ + +// SHA512H <Qd>, <Qn>, <Vm>.2D + +GEN_THREEVEC_TEST(sha512h_00_01_02, "sha512h q0, q1, v2.2d", 0, 1, 2) +GEN_THREEVEC_TEST(sha512h_01_02_03, "sha512h q1, q2, v3.2d", 1, 2, 3) +GEN_THREEVEC_TEST(sha512h_02_03_04, "sha512h q2, q3, v4.2d", 2, 3, 4) +GEN_THREEVEC_TEST(sha512h_03_04_05, "sha512h q3, q4, v5.2d", 3, 4, 5) +GEN_THREEVEC_TEST(sha512h_04_05_06, "sha512h q4, q5, v6.2d", 4, 5, 6) +GEN_THREEVEC_TEST(sha512h_05_06_07, "sha512h q5, q6, v7.2d", 5, 6, 7) +GEN_THREEVEC_TEST(sha512h_06_07_08, "sha512h q6, q7, v8.2d", 6, 7, 8) +GEN_THREEVEC_TEST(sha512h_07_08_09, "sha512h q7, q8, v9.2d", 7, 8, 9) +GEN_THREEVEC_TEST(sha512h_08_09_10, "sha512h q8, q9, v10.2d", 8, 9, 10) +GEN_THREEVEC_TEST(sha512h_09_10_11, "sha512h q9, q10, v11.2d", 9, 10, 11) +GEN_THREEVEC_TEST(sha512h_10_11_12, "sha512h q10, q11, v12.2d", 10, 11, 12) +GEN_THREEVEC_TEST(sha512h_11_12_13, "sha512h q11, q12, v13.2d", 11, 12, 13) +GEN_THREEVEC_TEST(sha512h_12_13_14, "sha512h q12, q13, v14.2d", 12, 13, 14) +GEN_THREEVEC_TEST(sha512h_13_14_15, "sha512h q13, q14, v15.2d", 13, 14, 15) +GEN_THREEVEC_TEST(sha512h_14_15_16, "sha512h q14, q15, v16.2d", 14, 15, 16) +GEN_THREEVEC_TEST(sha512h_15_16_17, "sha512h q15, q16, v17.2d", 15, 16, 17) +GEN_THREEVEC_TEST(sha512h_16_17_18, "sha512h q16, q17, v18.2d", 16, 17, 18) +GEN_THREEVEC_TEST(sha512h_17_18_19, "sha512h q17, q18, v19.2d", 17, 18, 19) +GEN_THREEVEC_TEST(sha512h_18_19_20, "sha512h q18, q19, v20.2d", 18, 19, 20) +GEN_THREEVEC_TEST(sha512h_19_20_21, "sha512h q19, q20, v21.2d", 19, 20, 21) +GEN_THREEVEC_TEST(sha512h_20_21_22, "sha512h q20, q21, v22.2d", 20, 21, 22) +GEN_THREEVEC_TEST(sha512h_21_22_23, "sha512h q21, q22, v23.2d", 21, 22, 23) +GEN_THREEVEC_TEST(sha512h_22_23_24, "sha512h q22, q23, v24.2d", 22, 23, 24) +GEN_THREEVEC_TEST(sha512h_23_24_25, "sha512h q23, q24, v25.2d", 23, 24, 25) +GEN_THREEVEC_TEST(sha512h_24_25_26, "sha512h q24, q25, v26.2d", 24, 25, 26) +GEN_THREEVEC_TEST(sha512h_25_26_27, "sha512h q25, q26, v27.2d", 25, 26, 27) +GEN_THREEVEC_TEST(sha512h_26_27_28, "sha512h q26, q27, v28.2d", 26, 27, 28) +GEN_THREEVEC_TEST(sha512h_27_28_29, "sha512h q27, q28, v29.2d", 27, 28, 29) +GEN_THREEVEC_TEST(sha512h_28_29_30, "sha512h q28, q29, v30.2d", 28, 29, 30) +GEN_THREEVEC_TEST(sha512h_29_30_31, "sha512h q29, q30, v31.2d", 29, 30, 31) + +// SHA512H2 <Qd>, <Qn>, <Vm>.2D + +GEN_THREEVEC_TEST(sha512h2_00_01_02, "sha512h2 q0, q1, v2.2d", 0, 1, 2) +GEN_THREEVEC_TEST(sha512h2_01_02_03, "sha512h2 q1, q2, v3.2d", 1, 2, 3) +GEN_THREEVEC_TEST(sha512h2_02_03_04, "sha512h2 q2, q3, v4.2d", 2, 3, 4) +GEN_THREEVEC_TEST(sha512h2_03_04_05, "sha512h2 q3, q4, v5.2d", 3, 4, 5) +GEN_THREEVEC_TEST(sha512h2_04_05_06, "sha512h2 q4, q5, v6.2d", 4, 5, 6) +GEN_THREEVEC_TEST(sha512h2_05_06_07, "sha512h2 q5, q6, v7.2d", 5, 6, 7) +GEN_THREEVEC_TEST(sha512h2_06_07_08, "sha512h2 q6, q7, v8.2d", 6, 7, 8) +GEN_THREEVEC_TEST(sha512h2_07_08_09, "sha512h2 q7, q8, v9.2d", 7, 8, 9) +GEN_THREEVEC_TEST(sha512h2_08_09_10, "sha512h2 q8, q9, v10.2d", 8, 9, 10) +GEN_THREEVEC_TEST(sha512h2_09_10_11, "sha512h2 q9, q10, v11.2d", 9, 10, 11) +GEN_THREEVEC_TEST(sha512h2_10_11_12, "sha512h2 q10, q11, v12.2d", 10, 11, 12) +GEN_THREEVEC_TEST(sha512h2_11_12_13, "sha512h2 q11, q12, v13.2d", 11, 12, 13) +GEN_THREEVEC_TEST(sha512h2_12_13_14, "sha512h2 q12, q13, v14.2d", 12, 13, 14) +GEN_THREEVEC_TEST(sha512h2_13_14_15, "sha512h2 q13, q14, v15.2d", 13, 14, 15) +GEN_THREEVEC_TEST(sha512h2_14_15_16, "sha512h2 q14, q15, v16.2d", 14, 15, 16) +GEN_THREEVEC_TEST(sha512h2_15_16_17, "sha512h2 q15, q16, v17.2d", 15, 16, 17) +GEN_THREEVEC_TEST(sha512h2_16_17_18, "sha512h2 q16, q17, v18.2d", 16, 17, 18) +GEN_THREEVEC_TEST(sha512h2_17_18_19, "sha512h2 q17, q18, v19.2d", 17, 18, 19) +GEN_THREEVEC_TEST(sha512h2_18_19_20, "sha512h2 q18, q19, v20.2d", 18, 19, 20) +GEN_THREEVEC_TEST(sha512h2_19_20_21, "sha512h2 q19, q20, v21.2d", 19, 20, 21) +GEN_THREEVEC_TEST(sha512h2_20_21_22, "sha512h2 q20, q21, v22.2d", 20, 21, 22) +GEN_THREEVEC_TEST(sha512h2_21_22_23, "sha512h2 q21, q22, v23.2d", 21, 22, 23) +GEN_THREEVEC_TEST(sha512h2_22_23_24, "sha512h2 q22, q23, v24.2d", 22, 23, 24) +GEN_THREEVEC_TEST(sha512h2_23_24_25, "sha512h2 q23, q24, v25.2d", 23, 24, 25) +GEN_THREEVEC_TEST(sha512h2_24_25_26, "sha512h2 q24, q25, v26.2d", 24, 25, 26) +GEN_THREEVEC_TEST(sha512h2_25_26_27, "sha512h2 q25, q26, v27.2d", 25, 26, 27) +GEN_THREEVEC_TEST(sha512h2_26_27_28, "sha512h2 q26, q27, v28.2d", 26, 27, 28) +GEN_THREEVEC_TEST(sha512h2_27_28_29, "sha512h2 q27, q28, v29.2d", 27, 28, 29) +GEN_THREEVEC_TEST(sha512h2_28_29_30, "sha512h2 q28, q29, v30.2d", 28, 29, 30) +GEN_THREEVEC_TEST(sha512h2_29_30_31, "sha512h2 q29, q30, v31.2d", 29, 30, 31) + +// SHA512SU0 <Vd>.2D, <Vn>.2D + +GEN_TWOVEC_TEST(sha512su0_00_01, "sha512su0 v0.2d, v1.2d", 0, 1) +GEN_TWOVEC_TEST(sha512su0_01_02, "sha512su0 v1.2d, v2.2d", 1, 2) +GEN_TWOVEC_TEST(sha512su0_02_03, "sha512su0 v2.2d, v3.2d", 2, 3) +GEN_TWOVEC_TEST(sha512su0_03_04, "sha512su0 v3.2d, v4.2d", 3, 4) +GEN_TWOVEC_TEST(sha512su0_04_05, "sha512su0 v4.2d, v5.2d", 4, 5) +GEN_TWOVEC_TEST(sha512su0_05_06, "sha512su0 v5.2d, v6.2d", 5, 6) +GEN_TWOVEC_TEST(sha512su0_06_07, "sha512su0 v6.2d, v7.2d", 6, 7) +GEN_TWOVEC_TEST(sha512su0_07_08, "sha512su0 v7.2d, v8.2d", 7, 8) +GEN_TWOVEC_TEST(sha512su0_08_09, "sha512su0 v8.2d, v9.2d", 8, 9) +GEN_TWOVEC_TEST(sha512su0_09_10, "sha512su0 v9.2d, v10.2d", 9, 10) +GEN_TWOVEC_TEST(sha512su0_10_11, "sha512su0 v10.2d, v11.2d", 10, 11) +GEN_TWOVEC_TEST(sha512su0_11_12, "sha512su0 v11.2d, v12.2d", 11, 12) +GEN_TWOVEC_TEST(sha512su0_12_13, "sha512su0 v12.2d, v13.2d", 12, 13) +GEN_TWOVEC_TEST(sha512su0_13_14, "sha512su0 v13.2d, v14.2d", 13, 14) +GEN_TWOVEC_TEST(sha512su0_14_15, "sha512su0 v14.2d, v15.2d", 14, 15) +GEN_TWOVEC_TEST(sha512su0_15_16, "sha512su0 v15.2d, v16.2d", 15, 16) +GEN_TWOVEC_TEST(sha512su0_16_17, "sha512su0 v16.2d, v17.2d", 16, 17) +GEN_TWOVEC_TEST(sha512su0_17_18, "sha512su0 v17.2d, v18.2d", 17, 18) +GEN_TWOVEC_TEST(sha512su0_18_19, "sha512su0 v18.2d, v19.2d", 18, 19) +GEN_TWOVEC_TEST(sha512su0_19_20, "sha512su0 v19.2d, v20.2d", 19, 20) +GEN_TWOVEC_TEST(sha512su0_20_21, "sha512su0 v20.2d, v21.2d", 20, 21) +GEN_TWOVEC_TEST(sha512su0_21_22, "sha512su0 v21.2d, v22.2d", 21, 22) +GEN_TWOVEC_TEST(sha512su0_22_23, "sha512su0 v22.2d, v23.2d", 22, 23) +GEN_TWOVEC_TEST(sha512su0_23_24, "sha512su0 v23.2d, v24.2d", 23, 24) +GEN_TWOVEC_TEST(sha512su0_24_25, "sha512su0 v24.2d, v25.2d", 24, 25) +GEN_TWOVEC_TEST(sha512su0_25_26, "sha512su0 v25.2d, v26.2d", 25, 26) +GEN_TWOVEC_TEST(sha512su0_26_27, "sha512su0 v26.2d, v27.2d", 26, 27) +GEN_TWOVEC_TEST(sha512su0_27_28, "sha512su0 v27.2d, v28.2d", 27, 28) +GEN_TWOVEC_TEST(sha512su0_28_29, "sha512su0 v28.2d, v29.2d", 28, 29) +GEN_TWOVEC_TEST(sha512su0_29_30, "sha512su0 v29.2d, v30.2d", 29, 30) +GEN_TWOVEC_TEST(sha512su0_30_31, "sha512su0 v30.2d, v31.2d", 30, 31) + +// SHA512SU1 <Vd>.2D, <Vn>.2D, <Vm>.2D + +GEN_THREEVEC_TEST(sha512su1_00_01_02, "sha512su1 v0.2d, v1.2d, v2.2d", 0, 1, 2) +GEN_THREEVEC_TEST(sha512su1_01_02_03, "sha512su1 v1.2d, v2.2d, v3.2d", 1, 2, 3) +GEN_THREEVEC_TEST(sha512su1_02_03_04, "sha512su1 v2.2d, v3.2d, v4.2d", 2, 3, 4) +GEN_THREEVEC_TEST(sha512su1_03_04_05, "sha512su1 v3.2d, v4.2d, v5.2d", 3, 4, 5) +GEN_THREEVEC_TEST(sha512su1_04_05_06, "sha512su1 v4.2d, v5.2d, v6.2d", 4, 5, 6) +GEN_THREEVEC_TEST(sha512su1_05_06_07, "sha512su1 v5.2d, v6.2d, v7.2d", 5, 6, 7) +GEN_THREEVEC_TEST(sha512su1_06_07_08, "sha512su1 v6.2d, v7.2d, v8.2d", 6, 7, 8) +GEN_THREEVEC_TEST(sha512su1_07_08_09, "sha512su1 v7.2d, v8.2d, v9.2d", 7, 8, 9) +GEN_THREEVEC_TEST(sha512su1_08_09_10, "sha512su1 v8.2d, v9.2d, v10.2d", 8, 9, 10) +GEN_THREEVEC_TEST(sha512su1_09_10_11, "sha512su1 v9.2d, v10.2d, v11.2d", 9, 10, 11) +GEN_THREEVEC_TEST(sha512su1_10_11_12, "sha512su1 v10.2d, v11.2d, v12.2d", 10, 11, 12) +GEN_THREEVEC_TEST(sha512su1_11_12_13, "sha512su1 v11.2d, v12.2d, v13.2d", 11, 12, 13) +GEN_THREEVEC_TEST(sha512su1_12_13_14, "sha512su1 v12.2d, v13.2d, v14.2d", 12, 13, 14) +GEN_THREEVEC_TEST(sha512su1_13_14_15, "sha512su1 v13.2d, v14.2d, v15.2d", 13, 14, 15) +GEN_THREEVEC_TEST(sha512su1_14_15_16, "sha512su1 v14.2d, v15.2d, v16.2d", 14, 15, 16) +GEN_THREEVEC_TEST(sha512su1_15_16_17, "sha512su1 v15.2d, v16.2d, v17.2d", 15, 16, 17) +GEN_THREEVEC_TEST(sha512su1_16_17_18, "sha512su1 v16.2d, v17.2d, v18.2d", 16, 17, 18) +GEN_THREEVEC_TEST(sha512su1_17_18_19, "sha512su1 v17.2d, v18.2d, v19.2d", 17, 18, 19) +GEN_THREEVEC_TEST(sha512su1_18_19_20, "sha512su1 v18.2d, v19.2d, v20.2d", 18, 19, 20) +GEN_THREEVEC_TEST(sha512su1_19_20_21, "sha512su1 v19.2d, v20.2d, v21.2d", 19, 20, 21) +GEN_THREEVEC_TEST(sha512su1_20_21_22, "sha512su1 v20.2d, v21.2d, v22.2d", 20, 21, 22) +GEN_THREEVEC_TEST(sha512su1_21_22_23, "sha512su1 v21.2d, v22.2d, v23.2d", 21, 22, 23) +GEN_THREEVEC_TEST(sha512su1_22_23_24, "sha512su1 v22.2d, v23.2d, v24.2d", 22, 23, 24) +GEN_THREEVEC_TEST(sha512su1_23_24_25, "sha512su1 v23.2d, v24.2d, v25.2d", 23, 24, 25) +GEN_THREEVEC_TEST(sha512su1_24_25_26, "sha512su1 v24.2d, v25.2d, v26.2d", 24, 25, 26) +GEN_THREEVEC_TEST(sha512su1_25_26_27, "sha512su1 v25.2d, v26.2d, v27.2d", 25, 26, 27) +GEN_THREEVEC_TEST(sha512su1_26_27_28, "sha512su1 v26.2d, v27.2d, v28.2d", 26, 27, 28) +GEN_THREEVEC_TEST(sha512su1_27_28_29, "sha512su1 v27.2d, v28.2d, v29.2d", 27, 28, 29) +GEN_THREEVEC_TEST(sha512su1_28_29_30, "sha512su1 v28.2d, v29.2d, v30.2d", 28, 29, 30) +GEN_THREEVEC_TEST(sha512su1_29_30_31, "sha512su1 v29.2d, v30.2d, v31.2d", 29, 30, 31) + +/* ---------------------------------------------------------------- */ +/* -- main() -- */ +/* ---------------------------------------------------------------- */ + +int main ( void ) +{ + assert(sizeof(V128) == 16); + + printf("\nSHA512H <Qd>, <Qn>, <Vm>.2D\n\n"); + + if (1) test_sha512h_00_01_02(TyD); + if (1) test_sha512h_01_02_03(TyD); + if (1) test_sha512h_02_03_04(TyD); + if (1) test_sha512h_03_04_05(TyD); + if (1) test_sha512h_04_05_06(TyD); + if (1) test_sha512h_05_06_07(TyD); + if (1) test_sha512h_06_07_08(TyD); + if (1) test_sha512h_07_08_09(TyD); + if (1) test_sha512h_08_09_10(TyD); + if (1) test_sha512h_09_10_11(TyD); + if (1) test_sha512h_10_11_12(TyD); + if (1) test_sha512h_11_12_13(TyD); + if (1) test_sha512h_12_13_14(TyD); + if (1) test_sha512h_13_14_15(TyD); + if (1) test_sha512h_14_15_16(TyD); + if (1) test_sha512h_15_16_17(TyD); + if (1) test_sha512h_16_17_18(TyD); + if (1) test_sha512h_17_18_19(TyD); + if (1) test_sha512h_18_19_20(TyD); + if (1) test_sha512h_19_20_21(TyD); + if (1) test_sha512h_20_21_22(TyD); + if (1) test_sha512h_21_22_23(TyD); + if (1) test_sha512h_22_23_24(TyD); + if (1) test_sha512h_23_24_25(TyD); + if (1) test_sha512h_24_25_26(TyD); + if (1) test_sha512h_25_26_27(TyD); + if (1) test_sha512h_26_27_28(TyD); + if (1) test_sha512h_27_28_29(TyD); + if (1) test_sha512h_28_29_30(TyD); + if (1) test_sha512h_29_30_31(TyD); + + printf("\nSHA512H2 <Qd>, <Qn>, <Vm>.2D\n\n"); + + if (1) test_sha512h2_00_01_02(TyD); + if (1) test_sha512h2_01_02_03(TyD); + if (1) test_sha512h2_02_03_04(TyD); + if (1) test_sha512h2_03_04_05(TyD); + if (1) test_sha512h2_04_05_06(TyD); + if (1) test_sha512h2_05_06_07(TyD); + if (1) test_sha512h2_06_07_08(TyD); + if (1) test_sha512h2_07_08_09(TyD); + if (1) test_sha512h2_08_09_10(TyD); + if (1) test_sha512h2_09_10_11(TyD); + if (1) test_sha512h2_10_11_12(TyD); + if (1) test_sha512h2_11_12_13(TyD); + if (1) test_sha512h2_12_13_14(TyD); + if (1) test_sha512h2_13_14_15(TyD); + if (1) test_sha512h2_14_15_16(TyD); + if (1) test_sha512h2_15_16_17(TyD); + if (1) test_sha512h2_16_17_18(TyD); + if (1) test_sha512h2_17_18_19(TyD); + if (1) test_sha512h2_18_19_20(TyD); + if (1) test_sha512h2_19_20_21(TyD); + if (1) test_sha512h2_20_21_22(TyD); + if (1) test_sha512h2_21_22_23(TyD); + if (1) test_sha512h2_22_23_24(TyD); + if (1) test_sha512h2_23_24_25(TyD); + if (1) test_sha512h2_24_25_26(TyD); + if (1) test_sha512h2_25_26_27(TyD); + if (1) test_sha512h2_26_27_28(TyD); + if (1) test_sha512h2_27_28_29(TyD); + if (1) test_sha512h2_28_29_30(TyD); + if (1) test_sha512h2_29_30_31(TyD); + + printf("\nSHA512SU0 <Vd>.2D, <Vn>.2D\n\n"); + + if (1) test_sha512su0_00_01(TyD); + if (1) test_sha512su0_01_02(TyD); + if (1) test_sha512su0_02_03(TyD); + if (1) test_sha512su0_03_04(TyD); + if (1) test_sha512su0_04_05(TyD); + if (1) test_sha512su0_05_06(TyD); + if (1) test_sha512su0_06_07(TyD); + if (1) test_sha512su0_07_08(TyD); + if (1) test_sha512su0_08_09(TyD); + if (1) test_sha512su0_09_10(TyD); + if (1) test_sha512su0_10_11(TyD); + if (1) test_sha512su0_11_12(TyD); + if (1) test_sha512su0_12_13(TyD); + if (1) test_sha512su0_13_14(TyD); + if (1) test_sha512su0_14_15(TyD); + if (1) test_sha512su0_15_16(TyD); + if (1) test_sha512su0_16_17(TyD); + if (1) test_sha512su0_17_18(TyD); + if (1) test_sha512su0_18_19(TyD); + if (1) test_sha512su0_19_20(TyD); + if (1) test_sha512su0_20_21(TyD); + if (1) test_sha512su0_21_22(TyD); + if (1) test_sha512su0_22_23(TyD); + if (1) test_sha512su0_23_24(TyD); + if (1) test_sha512su0_24_25(TyD); + if (1) test_sha512su0_25_26(TyD); + if (1) test_sha512su0_26_27(TyD); + if (1) test_sha512su0_27_28(TyD); + if (1) test_sha512su0_28_29(TyD); + if (1) test_sha512su0_29_30(TyD); + if (1) test_sha512su0_30_31(TyD); + + printf("\nSHA512SU1 <Vd>.2D, <Vn>.2D, <Vm>.2D\n\n"); + + if (1) test_sha512su1_00_01_02(TyD); + if (1) test_sha512su1_01_02_03(TyD); + if (1) test_sha512su1_02_03_04(TyD); + if (1) test_sha512su1_03_04_05(TyD); + if (1) test_sha512su1_04_05_06(TyD); + if (1) test_sha512su1_05_06_07(TyD); + if (1) test_sha512su1_06_07_08(TyD); + if (1) test_sha512su1_07_08_09(TyD); + if (1) test_sha512su1_08_09_10(TyD); + if (1) test_sha512su1_09_10_11(TyD); + if (1) test_sha512su1_10_11_12(TyD); + if (1) test_sha512su1_11_12_13(TyD); + if (1) test_sha512su1_12_13_14(TyD); + if (1) test_sha512su1_13_14_15(TyD); + if (1) test_sha512su1_14_15_16(TyD); + if (1) test_sha512su1_15_16_17(TyD); + if (1) test_sha512su1_16_17_18(TyD); + if (1) test_sha512su1_17_18_19(TyD); + if (1) test_sha512su1_18_19_20(TyD); + if (1) test_sha512su1_19_20_21(TyD); + if (1) test_sha512su1_20_21_22(TyD); + if (1) test_sha512su1_21_22_23(TyD); + if (1) test_sha512su1_22_23_24(TyD); + if (1) test_sha512su1_23_24_25(TyD); + if (1) test_sha512su1_24_25_26(TyD); + if (1) test_sha512su1_25_26_27(TyD); + if (1) test_sha512su1_26_27_28(TyD); + if (1) test_sha512su1_27_28_29(TyD); + if (1) test_sha512su1_28_29_30(TyD); + if (1) test_sha512su1_29_30_31(TyD); + + return 0; +} + +/* ---------------------------------------------------------------- */ +/* -- List of instructions tested in order of execution. -- */ +/* -- Useful strings when searching for blocks of test cases. -- */ +/* ---------------------------------------------------------------- */ +/* + SHA512H <Qd>, <Qn>, <Vm>.2D SHA512 Hash update part 1 + SHA512H2 <Qd>, <Qn>, <Vm>.2D SHA512 Hash update part 2 + SHA512SU0 <Vd>.2D, <Vn>.2D SHA512 Schedule Update 0 + SHA512SU1 <Vd>.2D, <Vn>.2D, <Vm>.2D SHA512 Schedule Update 1 +*/ diff --git a/none/tests/arm64/sha512_v82.stderr.exp b/none/tests/arm64/sha512_v82.stderr.exp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/none/tests/arm64/sha512_v82.stdout.exp b/none/tests/arm64/sha512_v82.stdout.exp new file mode 100644 index 0000000000..920b671ec2 --- /dev/null +++ b/none/tests/arm64/sha512_v82.stdout.exp @@ -0,0 +1,135 @@ + +SHA512H <Qd>, <Qn>, <Vm>.2D + +sha512h q0, q1, v2.2d 5175e39d19c9ca1e98f24a4984175700 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 65c157bb2742444527af4f5e54907bd4 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 fpsr=00000000 +sha512h q1, q2, v3.2d 5ff85bc9535c191fd3a727d1a705f65d d8bc5c6dee699597398e0039cf03663d d182c916cebc2e17cfaff39be272ef40 b2745cbfdf9418ef5c8653a0b8c34f29 d8bc5c6dee699597398e0039cf03663d d182c916cebc2e17cfaff39be272ef40 fpsr=00000000 +sha512h q2, q3, v4.2d 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 f0350ca70523e0e45ba1ec54e87d39b3 2bc47dae37d3aafdb7990a2e959c7ada 019963bf7459630b8d69483df7e8c6a9 f0350ca70523e0e45ba1ec54e87d39b3 fpsr=00000000 +sha512h q3, q4, v5.2d 63483da65c8c49d096084deb9ed0411e a81b6e33c572a86aacf29b0f395c98b4 61c82534e9bf6f37c9e25f72d82e582b 0980099290174acc65af9c7a5daac588 a81b6e33c572a86aacf29b0f395c98b4 61c82534e9bf6f37c9e25f72d82e582b fpsr=00000000 +sha512h q4, q5, v6.2d 36b2a38dcef18acf0e0f01a829ba3c66 65ce6d498492e7e796df010bf4b23b84 c5e48064a393c8e947a34273c10a3c47 bf4dbfa6c8ed0f4094b62487aabdb208 65ce6d498492e7e796df010bf4b23b84 c5e48064a393c8e947a34273c10a3c47 fpsr=00000000 +sha512h q5, q6, v7.2d 05a5c205c3659f388e17b17da2acb976 8b5fccbef0e1e256bc563e0c775bfaed 048612e51a468e36c51cdd8f87e12ab4 7ede50a38a78f61e5d9275ad3452041e 8b5fccbef0e1e256bc563e0c775bfaed 048612e51a468e36c51cdd8f87e12ab4 fpsr=00000000 +sha512h q6, q7, v8.2d 6489eab2c96df363d52c4330a7aae391 14575775bc3a12029d8e66ea90352a18 f9754842f9c9ba28f82a63b15c68b274 a8e5817fc509015dcdd3daa0de48e801 14575775bc3a12029d8e66ea90352a18 f9754842f9c9ba28f82a63b15c68b274 fpsr=00000000 +sha512h q7, q8, v9.2d 837be65197abe2686b1fba2604afb8d5 fbc4208894fdc0f55f706da71bf2425f 4e92f1b240a122141a366d352714867e 9cc4c17a9d2b81310369321a073198b0 fbc4208894fdc0f55f706da71bf2425f 4e92f1b240a122141a366d352714867e fpsr=00000000 +sha512h q8, q9, v10.2d ac82c1007a7d3cd8f54b130cdaa89cef 627bb6e12d1f6d4651ef145cb9b83843 02dd0e32eecfc5fa2c3ffa1aebe6a4d2 0d5461f3aa5bd3297ba3286f254821a0 627bb6e12d1f6d4651ef145cb9b83843 02dd0e32eecfc5fa2c3ffa1aebe6a4d2 fpsr=00000000 +sha512h q9, q10, v11.2d 0088596389c893fd879d51d4c5c764db 47086cc3da642fa7130d662777beb4a9 16559ec50352a3d92d460a61a5dd0f6f 98a974fe552da7fd7d7813d76248edfb 47086cc3da642fa7130d662777beb4a9 16559ec50352a3d92d460a61a5dd0f6f fpsr=00000000 +sha512h q10, q11, v12.2d 9432a2e46543b956b819f459105730e9 5da3cfd6aea6558e0c28728e28dc3c9c d2b3c4044ef23fb2e22093a48a9d2e0b 145376374691a788a1161985662bf97b 5da3cfd6aea6558e0c28728e28dc3c9c d2b3c4044ef23fb2e22093a48a9d2e0b fpsr=00000000 +sha512h q11, q12, v13.2d 1755377e9a786f014a6592749579b0f4 5f2619b1a20662f012305efa0acd1475 7acb193b9abab2f9e1917689e3f6bf86 29103900a322a93aa16a9089d623d35d 5f2619b1a20662f012305efa0acd1475 7acb193b9abab2f9e1917689e3f6bf86 fpsr=00000000 +sha512h q12, q13, v14.2d fa99500fef6024ba39dce32c239cf309 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 cdab1f3dab84001b37c2de5ddb4631c2 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 fpsr=00000000 +sha512h q13, q14, v15.2d bc70c3b3ef84644b6295f64a4ce61473 e8c72e865de41295f2db8f44cbbf37e2 f34428d9c8833f5b78fb29445f3bc8d7 15914258d2148e49dcc054dd3c6a1b55 e8c72e865de41295f2db8f44cbbf37e2 f34428d9c8833f5b78fb29445f3bc8d7 fpsr=00000000 +sha512h q14, q15, v16.2d ac8dd5bbc503330eb9dd5dab8e212ab7 4e94ec120b386f523bfcd80321664d3e db43c391c6b69f3af17a6312e7c28d9a e029424f32006b1ea2feca46cf7ff89e 4e94ec120b386f523bfcd80321664d3e db43c391c6b69f3af17a6312e7c28d9a fpsr=00000000 +sha512h q15, q16, v17.2d df411d2ee2e7467c38bb69a6e1e9a617 6f9f902235982fa010fd4e94e9c808f5 9e477892854b43e0beafe48541dc8da0 e757e10d60e10b1f9d3ae390642fc8b2 6f9f902235982fa010fd4e94e9c808f5 9e477892854b43e0beafe48541dc8da0 fpsr=00000000 +sha512h q16, q17, v18.2d ef56701db49bea4ce52e79ce9700a7f7 200d17261638b12a2a6a07863ec28077 31005fb9ada2074bf63a63fedcb4d29c 4f8c50e6bfc6f87ebcb84d013930a111 200d17261638b12a2a6a07863ec28077 31005fb9ada2074bf63a63fedcb4d29c fpsr=00000000 +sha512h q17, q18, v19.2d 139832afee423c3d6930e0fad3ba39c4 4969e55289753f038f7980d1535979e5 80c745ef729f1792ccd7e987538166e1 4919c028d941eb3738ea15f007fbb6a2 4969e55289753f038f7980d1535979e5 80c745ef729f1792ccd7e987538166e1 fpsr=00000000 +sha512h q18, q19, v20.2d e309aef8a605af130821eb96e737777e b5a9377eb31749ef710cf757885d2728 1f1030333fb8fa4b2feb05cb92ed4f4d 62d44e5217748bd48fcdbda9272d123c b5a9377eb31749ef710cf757885d2728 1f1030333fb8fa4b2feb05cb92ed4f4d fpsr=00000000 +sha512h q19, q20, v21.2d bc36ca100a4a3a7d5127ba1c529aa0bf 9f043af6a1aed58f1ee978efa4b054d2 76f140aa4182b4e706a17746411ab40c 87a10c31cc2f7f1164c9324f18462cc1 9f043af6a1aed58f1ee978efa4b054d2 76f140aa4182b4e706a17746411ab40c fpsr=00000000 +sha512h q20, q21, v22.2d 61cd123e19cf1e2bb001f1161e946f5c d5f13a9ab645e140698bec649583f5aa 5e86033374552e23ce8e2455e0205c58 967fd2154d7f52cd5f51fde1092ee9e9 d5f13a9ab645e140698bec649583f5aa 5e86033374552e23ce8e2455e0205c58 fpsr=00000000 +sha512h q21, q22, v23.2d 0760c299b42e1fdcc2e9e9cf82c7aff8 f76b8d9773b81b24de24e0a879648e11 7af177f11da748fc8b9145fe16d0390f efcbd21e2b6f843bd5b646fd3f7a714e f76b8d9773b81b24de24e0a879648e11 7af177f11da748fc8b9145fe16d0390f fpsr=00000000 +sha512h q22, q23, v24.2d c50f1401e45b82d3086a7a39a1e6217d b79cd058188318692112ca1cf9f1dd31 5842cbfee0f72e2ade18612787bc73e3 f9017aab6574b9b88cec7750672ca10c b79cd058188318692112ca1cf9f1dd31 5842cbfee0f72e2ade18612787bc73e3 fpsr=00000000 +sha512h q23, q24, v25.2d 761b274ac4c4f0c7f31ed81010c417bc 1541139c8b1cd0d1a11d81326f4e7880 30c9028972f8733d11f7fa4450de2529 2fa72b8f8431d56591186a97a427f8b6 1541139c8b1cd0d1a11d81326f4e7880 30c9028972f8733d11f7fa4450de2529 fpsr=00000000 +sha512h q24, q25, v26.2d 35e7926e777aa43f56470887bfdd3daf b2ed4ecc1e172df2d3a0a41fce854ae7 0e1d55b9c001d4c793aee0cffbdea09a e3959be4b5a08ce301de1c99e1a2d013 b2ed4ecc1e172df2d3a0a41fce854ae7 0e1d55b9c001d4c793aee0cffbdea09a fpsr=00000000 +sha512h q25, q26, v27.2d f0fdf0aee1dda4e888e2774acbc13287 f30110c432a534d0478d5d7e053a4e0c 9c86e5cb54c594021c25022200a7415e 2923fded370f8f0d8192f3e455eb8843 f30110c432a534d0478d5d7e053a4e0c 9c86e5cb54c594021c25022200a7415e fpsr=00000000 +sha512h q26, q27, v28.2d b168a24af5479e7bc9f1d5f8e2de4bd3 894d9fe1f98d1aa0861ef69cf4e34e11 f2789356f1fb0d2b99885af4db13d1b7 992409fbeaa604d7d8260347a2bfc9a9 894d9fe1f98d1aa0861ef69cf4e34e11 f2789356f1fb0d2b99885af4db13d1b7 fpsr=00000000 +sha512h q27, q28, v29.2d 07121ecd88441b7dd2cc3eca9347d80f 6e1d4703bf5de53fd97270f257c73303 c501b4c64209aa2e0719232dba0b82d5 9340342530e39b0ead736c2ae3a33fdd 6e1d4703bf5de53fd97270f257c73303 c501b4c64209aa2e0719232dba0b82d5 fpsr=00000000 +sha512h q28, q29, v30.2d 462deabeada6093241150c7a1a4df892 89ad76dc21a1f8f15acd7ad9f991bada 2a1f00ed91e9071d79112f6f64f5079c fd567810ac403088da34c3ef79caeeba 89ad76dc21a1f8f15acd7ad9f991bada 2a1f00ed91e9071d79112f6f64f5079c fpsr=00000000 +sha512h q29, q30, v31.2d e76fcc086aeb0414a9cd126c0869c6a0 6fa194a173e020c0ede3baf27b7b85bb 8514e93e478d067a5a4ac156a6cb98bf 9e68fc5182482e71683912e7dd89c530 6fa194a173e020c0ede3baf27b7b85bb 8514e93e478d067a5a4ac156a6cb98bf fpsr=00000000 + +SHA512H2 <Qd>, <Qn>, <Vm>.2D + +sha512h2 q0, q1, v2.2d a20cab554a62dd2468a718ec4422710c b330aadc8a7cbfaf26fbc229d962e2d7 c3ca90f22dec084fa9bca1cab4fdc2ba bd91ccc14d45ed9d17d4c315ff13d668 b330aadc8a7cbfaf26fbc229d962e2d7 c3ca90f22dec084fa9bca1cab4fdc2ba fpsr=00000000 +sha512h2 q1, q2, v3.2d 45738ec585d726b8f4ecb95e02f1d179 af5de4ddb013d258a082f55bbf17ae91 5df79fd3324f914fb79f41ec172107e2 ab01e27cce5b9eb4e43839350cc5c5f6 af5de4ddb013d258a082f55bbf17ae91 5df79fd3324f914fb79f41ec172107e2 fpsr=00000000 +sha512h2 q2, q3, v4.2d 57d0e8a18b5417adc6b295b85f1c3056 e70216ec5cbcf49e8a09cb539549408a 182fa58322b1219295b48e6f81658922 1901b358c7c3c5aedc1b69052d670c34 e70216ec5cbcf49e8a09cb539549408a 182fa58322b1219295b48e6f81658922 fpsr=00000000 +sha512h2 q3, q4, v5.2d d52f1cc78e47c9e383314ed9438203c8 aaba95edd88623fc68d5d5d393ccbadd 3b947b8f0a536415b779aada6ea680b0 d621fec8d4389ebd219306f2fdf0593f aaba95edd88623fc68d5d5d393ccbadd 3b947b8f0a536415b779aada6ea680b0 fpsr=00000000 +sha512h2 q4, q5, v6.2d b71315802c502c586d5043a8665c8797 d4eaedef93c21b55bdb0c6ce36392d36 8cf3c5a6e236ba0ab0c81fb7053f6b55 70b6ee7f1e61c410fdfc06eaa436a359 d4eaedef93c21b55bdb0c6ce36392d36 8cf3c5a6e236ba0ab0c81fb7053f6b55 fpsr=00000000 +sha512h2 q5, q6, v7.2d 4f80e2044f3a41cb6610e404623f3cac 45a92ebc1d99f6f68da34afe4ed3935a 0b0b9f6018e987aeba97106bb88dbd45 8c8d9cdeb4a5c59a4abce3b479d0741f 45a92ebc1d99f6f68da34afe4ed3935a 0b0b9f6018e987aeba97106bb88dbd45 fpsr=00000000 +sha512h2 q6, q7, v8.2d 1eca927d6d5eee012a6fe8ae3cfe5e6a 22d9446284e6ae8126fc5ee9b286181e 6ed9d5a9ea9b388090ffb3373b81451b 5e4b6c9d04c726f3c09607303d1a072b 22d9446284e6ae8126fc5ee9b286181e 6ed9d5a9ea9b388090ffb3373b81451b fpsr=00000000 +sha512h2 q7, q8, v9.2d dc2316810c4e5ddd66c8f02281b3c8f2 b6d3ebd9407ecd6355d7239077cddd8e 1854ddf6d8b991ce01deaf4923243fc0 d6c681e11d9addc9d48fdc5825e09a24 b6d3ebd9407ecd6355d7239077cddd8e 1854ddf6d8b991ce01deaf4923243fc0 fpsr=00000000 +sha512h2 q8, q9, v10.2d ee7d691b146130944d3d038a0b69312c 4df433720fd7245dafacd5bdced9cd88 685c54d57186f6e2a353dba0ead5df70 70176a39fbe6fbc560f62d8ddec388d1 4df433720fd7245dafacd5bdced9cd88 685c54d57186f6e2a353dba0ead5df70 fpsr=00000000 +sha512h2 q9, q10, v11.2d 5c979f40cdc58392364fbbe21b8d12fc 2d16a827667197b8d187cbb340606850 d04b750405c33deba68d8a6feefdf8d2 f8e4735776dddbd545a49f46ddfaee13 2d16a827667197b8d187cbb340606850 d04b750405c33deba68d8a6feefdf8d2 fpsr=00000000 +sha512h2 q10, q11, v12.2d 2af3bd4b509e6608a513cfe482162be8 6f8ae74d5f7960b4a01933ef595f6af1 ab09c2f3335970becb4d15989216cc28 0aca2d653b9255846e13bf605b2e49e4 6f8ae74d5f7960b4a01933ef595f6af1 ab09c2f3335970becb4d15989216cc28 fpsr=00000000 +sha512h2 q11, q12, v13.2d b8d75a9620326a7d927f8ecd4a783d65 e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 2f9ca92156b455ba1e5ced346be0302e e3761d8b97fa553a6508ac365a886f48 470818041ac5e9b218db305838ff3248 fpsr=00000000 +randV128: 256 calls, 353 iters +sha512h2 q12, q13, v14.2d ed8854faa096b85e32ad5a2818eb39be 85484a52397b894a4f49b178e95f7a8a 764f859cf68f4679dab3699f129680a9 1fbc7e4e2165204c93b64e58af89bdb4 85484a52397b894a4f49b178e95f7a8a 764f859cf68f4679dab3699f129680a9 fpsr=00000000 +sha512h2 q13, q14, v15.2d 92478e7f987ac472db7137e460cce35a b16fe6d6a518c184b9abfaffa9c65e42 45aeabe876d3472e35c647934c948f3a 04eb73eeaacf77fbbc70d87049285f8a b16fe6d6a518c184b9abfaffa9c65e42 45aeabe876d3472e35c647934c948f3a fpsr=00000000 +sha512h2 q14, q15, v16.2d 6597ea0af6727713e0401415c692d5dd 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e 790651e0c65ac05cdf45d54693a41cd0 3795df08065206478d94b3ff795f1228 6c7f80e89ebd80a5e34bca20163ac21e fpsr=00000000 +sha512h2 q15, q16, v17.2d 190c026f4f4108bb97f152ac79a338e2 b87fb552d02120cc96fce910c815b7b5 a29325444ec512a939c5af18dc96719b 9bdd58b6802e4d8923b597220e3ef25f b87fb552d02120cc96fce910c815b7b5 a29325444ec512a939c5af18dc96719b fpsr=00000000 +sha512h2 q16, q17, v18.2d ba6d23fbddcfb6e48aa9987b39e47961 c38dbdaccabb5bcc988bec41d1f55876 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 8808f403fddc316e73420952f75f61a6 c38dbdaccabb5bcc988bec41d1f55876 c34a8a359bcdfb7cf3d1cf04bdfd4aa3 fpsr=00000000 +sha512h2 q17, q18, v19.2d 2f76953322c0b8926a280fa06b4f801c 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 522e79080542cec37a47c370e1e2792e 4a5c32cf23cea86930f00f8bcd9f5fac 8da998f88c8b32a6eaf8d1b431daa560 fpsr=00000000 +sha512h2 q18, q19, v20.2d 8a8cc509a7178875c1b1aa5552bf7b54 313cbec68670df4e1ab8e17b2178e568 bafa353551a2546746b48a7dd8000fc0 b2f66672f2a0ba2be7ee9e10b81dac36 313cbec68670df4e1ab8e17b2178e568 bafa353551a2546746b48a7dd8000fc0 fpsr=00000000 +sha512h2 q19, q20, v21.2d 16da21aeefac01e48b55d9bb9a9e8466 ef3804f7e2035f7c3d1ff6252d13375a 0a452b2c674cbddfcbf508515b068b9e 664e61f08eeceed30203128b05a44ffc ef3804f7e2035f7c3d1ff6252d13375a 0a452b2c674cbddfcbf508515b068b9e fpsr=00000000 +sha512h2 q20, q21, v22.2d ddb98a28084c634f63bfc3013161828e 94e09c4d7a2fb98594259c37dc0df227 393d14b564cbe1d0c0b48a0655b1d345 30c9498b4dbb4284b2be59ef7fe49e97 94e09c4d7a2fb98594259c37dc0df227 393d14b564cbe1d0c0b48a0655b1d345 fpsr=00000000 +sha512h2 q21, q22, v23.2d e6246ae1a4f77a426cd3657964fa47a9 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 551c2c415bde9ec21a8989f4be091dcd 2daf41013f9df44bce0cec2fcc6d1cbd 442729db00c06ec7a888afd71cbfd9a5 fpsr=00000000 +sha512h2 q22, q23, v24.2d 0cd7c78555e44c4138f5b60885c215db 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e 8dbe4ba15c4f21cc196b4ca135b19413 53a7ab02214be64e702ec38c9cf9ec6a 2e1c9d0c8757ad8f43446bb26e18386e fpsr=00000000 +sha512h2 q23, q24, v25.2d bafd469c03bb81a72d0fa3c734a93060 b6a224a9b26dfb35eb12d4ad50bc53dc e9dd4c503b8c78011defefc04a5c2f46 dc9e5b4b3416d51624efbc89c240cc3d b6a224a9b26dfb35eb12d4ad50bc53dc e9dd4c503b8c78011defefc04a5c2f46 fpsr=00000000 +sha512h2 q24, q25, v26.2d f6d81f33742433f2cc7dd6bb9c2cca19 53ca44aebd31b5254262bdc16b771596 b0e63d866320c355ed98b4a9e8d6e4c1 7c45359c00d150a4fe63091790b829aa 53ca44aebd31b5254262bdc16b771596 b0e63d866320c355ed98b4a9e8d6e4c1 fpsr=00000000 +sha512h2 q25, q26, v27.2d 02471f026197d9cd943b5e67093fabba 3d42e9e6e5cb90a60fca48c537bd2658 95de8b5fc46113474bc49f812043d857 60839f99462842f1d7846d300079175e 3d42e9e6e5cb90a60fca48c537bd2658 95de8b5fc46113474bc49f812043d857 fpsr=00000000 +sha512h2 q26, q27, v28.2d b0100d870c73d98e7631228f404d2c47 17a2fb4c94dd7be88c072223439e5525 83e142978babb4d3a4113b879f7ed584 531d408ef9928402340229447dbd2316 17a2fb4c94dd7be88c072223439e5525 83e142978babb4d3a4113b879f7ed584 fpsr=00000000 +sha512h2 q27, q28, v29.2d f502195aa1a15db4a2a879a23d7c0ae2 2c2526cce3d22e428611c200d10412f6 168aaa5db77c1eb35895b6ea59c26bf2 ea795cb26eb4a118117c89276a4fa547 2c2526cce3d22e428611c200d10412f6 168aaa5db77c1eb35895b6ea59c26bf2 fpsr=00000000 +sha512h2 q28, q29, v30.2d a0538e824a418418f0b95884e5242620 312ce5ddc92aa7904e2af939ce90c5a5 996a0d80bdc2740e452737c8cbeddc2b 0b2f3a11efb357589cef5efdd535ac18 312ce5ddc92aa7904e2af939ce90c5a5 996a0d80bdc2740e452737c8cbeddc2b fpsr=00000000 +sha512h2 q29, q30, v31.2d db3648af097836cf4a5aca5a97e15cd2 643e888b037969929732973d033b649a 1438844d02a38f5943215d8ac5f35818 ee298eee1f87505c343036a200539371 643e888b037969929732973d033b649a 1438844d02a38f5943215d8ac5f35818 fpsr=00000000 + +SHA512SU0 <Vd>.2D, <Vn>.2D + +sha512su0 v0.2d, v1.2d e3b7188215a149fe53ac1abaaba25024 c5af844c56a6d2d3c616893fedf747e7 e8f89786cc6f0439e2ab702338909749 c5af844c56a6d2d3c616893fedf747e7 fpsr=00000000 +sha512su0 v1.2d, v2.2d 957f97690fcf998c647b85644dc3143d 078c20e1106551b53bb68b07cdad1dcc 67173587fe50134c2b7bd0718abab0a9 078c20e1106551b53bb68b07cdad1dcc fpsr=00000000 +sha512su0 v2.2d, v3.2d 87bf3870c9d1b02630e6b13676282f82 8ed3ed6fa5a46224d78477c55858ae69 0b79efebad966eec953e0ea76bdada45 8ed3ed6fa5a46224d78477c55858ae69 fpsr=00000000 +sha512su0 v3.2d, v4.2d f76b95fa6844fb06cbc7d36dc1d5402f 650eb2968b4fd6a0532863cf4c4877ad fbccdf3e6035de54487449b0fc6ff0bd 650eb2968b4fd6a0532863cf4c4877ad fpsr=00000000 +sha512su0 v4.2d, v5.2d d8dc6e794dd364af37b3aa17a4931751 3fad6a0b2cb3893654bc5db73e9c4e61 a48058b693e0e89179bafda5d1d2df4b 3fad6a0b2cb3893654bc5db73e9c4e61 fpsr=00000000 +sha512su0 v5.2d, v6.2d 7490935e9f4d651fe1890b76e4653ab7 df175852ed423e44ab2d4b1812a6898d cdfc65afc0b2147b875f0391906c9fd7 df175852ed423e44ab2d4b1812a6898d fpsr=00000000 +sha512su0 v6.2d, v7.2d b9c7d9eb61d469d49e0a48b8c8011cc8 b59e4ea568df2b44ca89f0846cae958b 28e33c3f1cb7234f2733ed5855496518 b59e4ea568df2b44ca89f0846cae958b fpsr=00000000 +sha512su0 v7.2d, v8.2d 27e28a572897658ef2a6d6ae590f40fd 2ebbabf3470db8782ccb8833608433b6 c7f322d90e7afb1d90403963c6414c66 2ebbabf3470db8782ccb8833608433b6 fpsr=00000000 +sha512su0 v8.2d, v9.2d e7f00989302dba7246518421715669c6 b6badcdef8a78c420365b8d34bfc9c8a 73a77c2a00500652472198ff749d15bd b6badcdef8a78c420365b8d34bfc9c8a fpsr=00000000 +sha512su0 v9.2d, v10.2d dea946e0b179bef5361cb20c2785c541 2ffdc2c55b0f87032db762c30b75b069 de56afa7722105d951540ac7a0f51afa 2ffdc2c55b0f87032db762c30b75b069 fpsr=00000000 +sha512su0 v10.2d, v11.2d ed6e1ebb8cda5175a26641cf5aff34ce 77e43d084fa5891a8b20646381504fb2 e37b7158f106287e24e6ff4d65f77b17 77e43d084fa5891a8b20646381504fb2 fpsr=00000000 +sha512su0 v11.2d, v12.2d f49e747ba1b053546a8f11cbec2196ce 9bfcc47ec746943556f6272c5eb0f887 211e7e7afd6c009e99e1aa6d485c902d 9bfcc47ec746943556f6272c5eb0f887 fpsr=00000000 +sha512su0 v12.2d, v13.2d f71b72246ed821cc62b7f4350fa9ad03 fac199e95780c0368c621d512005ca47 77c11ab3d23b0d49194c88b96b892587 fac199e95780c0368c621d512005ca47 fpsr=00000000 +sha512su0 v13.2d, v14.2d 81e19ba751200b054e9e031d71f33fe9 5bdb13e5665fd76eee30ba9cd9b572f2 060ba8291ad071f31310f29cb356a588 5bdb13e5665fd76eee30ba9cd9b572f2 fpsr=00000000 +sha512su0 v14.2d, v15.2d de05200cbf652c8e4966c11a56eab69e 3f0f2ce5b8203000a06e5a6e5dc91ac6 75dcbfe65b6802da29c76080a15defd0 3f0f2ce5b8203000a06e5a6e5dc91ac6 fpsr=00000000 +sha512su0 v15.2d, v16.2d a5d2c97f7788bae1eca9a838c108ae44 748db6b4df58784ca3da435209d5ce30 05dc18ec6a79542b1eb0bc1cfb657303 748db6b4df58784ca3da435209d5ce30 fpsr=00000000 +sha512su0 v16.2d, v17.2d a936258b9666b4d4f37549976fb022ff c32cf63309e402406e9f5a58ac1a54d1 1032324e565fb96974d59242c73a14b6 c32cf63309e402406e9f5a58ac1a54d1 fpsr=00000000 +sha512su0 v17.2d, v18.2d ec6d05a4b6a1a4cd9e88325743eb11d5 0937b3956de6fb929444b197ac07cce3 150b9abe259992f1d88a6833fa764260 0937b3956de6fb929444b197ac07cce3 fpsr=00000000 +sha512su0 v18.2d, v19.2d 4fd84b29b99a6b2dcd4345d71d165b24 270ecc3cebbd43a2f727286eebfe18c9 83634879805d797a577f9320c31df64f 270ecc3cebbd43a2f727286eebfe18c9 fpsr=00000000 +sha512su0 v19.2d, v20.2d 692a2afdae04a39e34e7a802b90e2f84 52bffb790361bc8206a61431e6f4cfcd b7830b224f561e54df1613048afe8baf 52bffb790361bc8206a61431e6f4cfcd fpsr=00000000 +sha512su0 v20.2d, v21.2d f70c3901ccb48a72302032998e011bb2 5015078bc002b309470f1546d9dbad27 7b5ad49e743c44d638bf3b657210b459 5015078bc002b309470f1546d9dbad27 fpsr=00000000 +sha512su0 v21.2d, v22.2d 9a04d2f816626c2c2f38a8db40b290ab 8dd9540466eef7d359b0d13fcfb80416 d4378ce4bdef36338fe50ce643be214d 8dd9540466eef7d359b0d13fcfb80416 fpsr=00000000 +sha512su0 v22.2d, v23.2d 03485ea08590e93c07700db0637e8eb7 23fa3e4706acddf45d393078afc3b5d8 f9c4320d63a2876e4512056406c5545c 23fa3e4706acddf45d393078afc3b5d8 fpsr=00000000 +sha512su0 v23.2d, v24.2d a6a3c9f2c2e8f683fbfe73fd132e3739 15a929c7b1735a67b7d0887be445bb91 f1d3ff9840f709874db874a089617993 15a929c7b1735a67b7d0887be445bb91 fpsr=00000000 +sha512su0 v24.2d, v25.2d e266a78d90ffdc91cea49ae5c06573d8 e5bad9f874f6c1ee4d9b6cfdcd38bc65 a581c35971caf4872fba93141f346205 e5bad9f874f6c1ee4d9b6cfdcd38bc65 fpsr=00000000 +sha512su0 v25.2d, v26.2d 1c7493622cfa2597b6855d5cd44e174a 868b2e22d97fdd69760648ac6426460c 540dc1f1f3b96f63cfa43161845633ef 868b2e22d97fdd69760648ac6426460c fpsr=00000000 +sha512su0 v26.2d, v27.2d 08eb890f505a9fef0fb2dc303e71375e 58f31949403befabe5870936cd45f720 5cd8968f8e4fd5787b1fd44cf84ed7b5 58f31949403befabe5870936cd45f720 fpsr=00000000 +sha512su0 v27.2d, v28.2d 29fec9e82973b95bac8519f59f2d04ab d592cd65355229e856a34b7132ed6522 33a90a4d33953e997c0a81a3cbef4d11 d592cd65355229e856a34b7132ed6522 fpsr=00000000 +sha512su0 v28.2d, v29.2d 89dc3ea5a31f12c364df0e25357e07d6 913d502c107e9cd06a3eec76b56ecb74 cb7d73b56487e9aa6b53893674e8b02c 913d502c107e9cd06a3eec76b56ecb74 fpsr=00000000 +sha512su0 v29.2d, v30.2d 55324c696b018a9ded9a32b2b658bb9d d6f4419831d4c3802458c320b8e9ef36 7972d53ea8bf58472500a392c496836e d6f4419831d4c3802458c320b8e9ef36 fpsr=00000000 +sha512su0 v30.2d, v31.2d 19f3d7116d5971d5d234977794db61d6 6ecc3a09dfbd048cc8dc260bdc0b4323 e02b4e815fbb2e292c08976919f6b54e 6ecc3a09dfbd048cc8dc260bdc0b4323 fpsr=00000000 + +SHA512SU1 <Vd>.2D, <Vn>.2D, <Vm>.2D + +sha512su1 v0.2d, v1.2d, v2.2d 0937e4909fe80ce02f87a429eb5f081f 45af4ec7c2a821574df11effc5645bbb de016364cdeb46445e3dde9f39ff175e 0f7f6ba65166a58e738ddd051d46d395 45af4ec7c2a821574df11effc5645bbb de016364cdeb46445e3dde9f39ff175e fpsr=00000000 +sha512su1 v1.2d, v2.2d, v3.2d 10a112344c596d04e61bbedf67380ca3 5df6d73059dd837e3e8527449ee9f43b b1cff9f1b4ddbe2322a9c22776ff3042 211fb586d6a491ebd319ca702013d2b9 5df6d73059dd837e3e8527449ee9f43b b1cff9f1b4ddbe2322a9c22776ff3042 fpsr=00000000 +sha512su1 v2.2d, v3.2d, v4.2d f7579b2891a813446e1bdf8d327099a8 51c6f6af2a1de39526bc45f7a76187ef 1378cc285014632fa05bf3836f7b0267 3dd26bec144f04da13fd0d8e0f1ae999 51c6f6af2a1de39526bc45f7a76187ef 1378cc285014632fa05bf3836f7b0267 fpsr=00000000 +sha512su1 v3.2d, v4.2d, v5.2d 30ff3e8365b8b6c1363c54f62d3ffa9d baa85b3de501ef210e4d83f18c6ed012 f209069ea7d3e520baedeb496f09ca07 0d5494f8e2895df29981a889b182cf01 baa85b3de501ef210e4d83f18c6ed012 f209069ea7d3e520baedeb496f09ca07 fpsr=00000000 +randV128: 512 calls, 699 iters +sha512su1 v4.2d, v5.2d, v6.2d 919b29bf2bfec2c5dd3bb51ccef7f987 ae2d4071b09e34d197ade8b4986d6b05 ebd55f51b7352d94362d6f4fc8df6c3a 32b90c5acd71d8a625ba656043f3e44e ae2d4071b09e34d197ade8b4986d6b05 ebd55f51b7352d94362d6f4fc8df6c3a fpsr=00000000 +sha512su1 v5.2d, v6.2d, v7.2d 9511ad90107c4aa99c0bee255989da0e 30796011b79f7a8390a6a371c6291371 4c8b686f3a23b6d93a12e81f605f5002 4df7990220c7a0827b38895bdc273114 30796011b79f7a8390a6a371c6291371 4c8b686f3a23b6d93a12e81f605f5002 fpsr=00000000 +sha512su1 v6.2d, v7.2d, v8.2d b2aa237461d97084eb06887153eff01a cfa6ab954bb50e5bd22fb34754a219c5 c89783ffad7ef35a4cf4eb6ba0f602c9 5b026764ed4c736f0909128f43109fc0 cfa6ab954bb50e5bd22fb34754a219c5 c89783ffad7ef35a4cf4eb6ba0f602c9 fpsr=00000000 +sha512su1 v7.2d, v8.2d, v9.2d 0a0edcee4d2cc878ef855eb65c10d628 ee30cd29d94c9218e8bf66df043a1230 0f7c166980b896167145c55bed24b56c fa08ab144289f83464eafa86fa5124dc ee30cd29d94c9218e8bf66df043a1230 0f7c166980b896167145c55bed24b56c fpsr=00000000 +sha512su1 v8.2d, v9.2d, v10.2d 0be77b318842c856059940783863e7a8 94463cd1c7914d221e876212d6c92a13 0a97cbc7ac5e30f57b7629851fcfdef3 a043f3eef0af0e1d5212d8cb6983f584 94463cd1c7914d221e876212d6c92a13 0a97cbc7ac5e30f57b7629851fcfdef3 fpsr=00000000 +sha512su1 v9.2d, v10.2d, v11.2d a8fb004a32b8ef7bf67abbd38dacaf39 7bcc8918719010b51f8d0a9a2b9cdad6 392f0631401ae5027aa91a00bcc34007 bfc7dc19ef39a058d87078dedf8bcfe8 7bcc8918719010b51f8d0a9a2b9cdad6 392f0631401ae5027aa91a00bcc34007 fpsr=00000000 +sha512su1 v10.2d, v11.2d, v12.2d 455d9993e4a5f1b876795aaf7a3a6332 768d72ee82413c1cef651c6c49c9b9c3 ee9c3c004c1c753e762819b5269b0613 c62c0202371f9b513c4e7f63fdbccb06 768d72ee82413c1cef651c6c49c9b9c3 ee9c3c004c1c753e762819b5269b0613 fpsr=00000000 +sha512su1 v11.2d, v12.2d, v13.2d 1a8f772c44efeda7ba0881e4f45d0ce7 50fd4f567ac722fc2fbc3120de9c6479 f376b669ae2ce35a2a57a09a50746818 70fc332719559532d6307eb5368ebe8a 50fd4f567ac722fc2fbc3120de9c6479 f376b669ae2ce35a2a57a09a50746818 fpsr=00000000 +sha512su1 v12.2d, v13.2d, v14.2d 091a1f4f5923c556de8f49b6eb14daf9 95a02171b9c06a425dbdc3e2025a96a7 2ad99232f0910c210fd806e54e5e51f5 d6138b3e567f35fcacb354445c14cc19 95a02171b9c06a425dbdc3e2025a96a7 2ad99232f0910c210fd806e54e5e51f5 fpsr=00000000 +sha512su1 v13.2d, v14.2d, v15.2d 8836d1131b62cd0b48d36e5b73435f30 a664346538d4b1f3206a46c70c8cf676 539af0a5cbcde8d1860844ed2dee1843 835808edbbfb301c6bf90e76d1bed96c a664346538d4b1f3206a46c70c8cf676 539af0a5cbcde8d1860844ed2dee1843 fpsr=00000000 +sha512su1 v14.2d, v15.2d, v16.2d f0c7891470a9c6d97711cd0105a75eff 2c00565c14c9b5e0cc4528dc9099beba 3ec6594828ea00ce852ad4015bd9be35 859c98967668d2f6530bacd1b5151e73 2c00565c14c9b5e0cc4528dc9099beba 3ec6594828ea00ce852ad4015bd9be35 fpsr=00000000 +sha512su1 v15.2d, v16.2d, v17.2d a9732d8eebbc9fc3ac524f46d3d3415d c3a505c0b746521e41604a20d37f8abb ab54e2e2e2e9a17df5c4cddac86ba5d7 292d72d7e6fde0969d67d523ae3498d3 c3a505c0b746521e41604a20d37f8abb ab54e2e2e2e9a17df5c4cddac86ba5d7 fpsr=00000000 +sha512su1 v16.2d, v17.2d, v18.2d 0aefbd68c882e0ba8688124d9a8034e6 4f3e6b0b450ee14a3f6391173f4b1584 c2d574b34771ed36d20bf7d72a1e1546 72ac1a2dd7f72766f1e58b369925b1ca 4f3e6b0b450ee14a3f6391173f4b1584 c2d574b34771ed36d20bf7d72a1e1546 fpsr=00000000 +sha512su1 v17.2d, v18.2d, v19.2d b166e8214114a950baae5dda57a6295a 4030f30c48c120052fffdbd7daec0268 b803f91594cef4691ed025b60377507f 8df2d4df3f2f2b6bd88aa7bece8ed1ee 4030f30c48c120052fffdbd7daec0268 b803f91594cef4691ed025b60377507f fpsr=00000000 +sha512su1 v18.2d, v19.2d, v20.2d b70b87ec21fcaee0ded12dca0df26a17 70b1ce7f93297a1aeff889594c121bf4 5ad5737c833dcb8d47245f373bad281c bcf0f63c040301cb64fac2115e2b507d 70b1ce7f93297a1aeff889594c121bf4 5ad5737c833dcb8d47245f373bad281c fpsr=00000000 +sha512su1 v19.2d, v20.2d, v21.2d b17280fe8bd0af2574688c737559b274 48dac018701d2c9c4cc5301c44b8009d 4467de8de308363b05d28a171d1a294d d8414265280303b3e144544585454840 48dac018701d2c9c4cc5301c44b8009d 4467de8de308363b05d28a171d1a294d fpsr=00000000 +sha512su1 v20.2d, v21.2d, v22.2d 25ee34ff9e689545c592399af877a248 df912f8374159df2f7085589b343d21f d99d3da4e6e56fdba00fc29a5d63c6e3 4bd4d5fc0ddadc83277f70300c3e130a df912f8374159df2f7085589b343d21f d99d3da4e6e56fdba00fc29a5d63c6e3 fpsr=00000000 +sha512su1 v21.2d, v22.2d, v23.2d 080a18b62fb42368e72cafe0fab6f109 3a5ee3fa671d74b80b650cfe693570ed 7695b11f8084e96131699e77ba13900a fb292cecbd41a9b90daea104c65b20a0 3a5ee3fa671d74b80b650cfe693570ed 7695b11f8084e96131699e77ba13900a fpsr=00000000 +sha512su1 v22.2d, v23.2d, v24.2d 6ebcc4c757e84ee401f6228492d84a9b 0ce747ec936710ebfbe70be75829395f a213d785a320168623013c4543e7646a 95e56034bc90eee120f39b3394153424 0ce747ec936710ebfbe70be75829395f a213d785a320168623013c4543e7646a fpsr=00000000 +sha512su1 v23.2d, v24.2d, v25.2d 70ed65e99385444d9a5ced2c189f1b19 1a7dfb643cd5dcc0d64fc13628a521a2 c208da666ec923c9a6447b2b73612f52 9b146fd3cb7f9eff55b4d4d3f1ada6ef 1a7dfb643cd5dcc0d64fc13628a521a2 c208da666ec923c9a6447b2b73612f52 fpsr=00000000 +sha512su1 v24.2d, v25.2d, v26.2d 9ca3dd0d0d8957f8464ca0f2311c20b5 b3a2b91de06daeb55b71d1649acc2190 c74ecb80347fdbee7379c440a7ec3e28 8e009d0c65d8b3001897ac42572f0e3a b3a2b91de06daeb55b71d1649acc2190 c74ecb80347fdbee7379c440a7ec3e28 fpsr=00000000 +sha512su1 v25.2d, v26.2d, v27.2d 51564476d333c3e117b48545ea003632 5685816295ab54170b8338fe141e7250 dbd8609b86ba8d162d9b0d5f9d85c79b 0d239cd3f10eb056d7cd5d08c7422797 5685816295ab54170b8338fe141e7250 dbd8609b86ba8d162d9b0d5f9d85c79b fpsr=00000000 +sha512su1 v26.2d, v27.2d, v28.2d e19a660dfbf22d561be6f39a2c0cfb30 7a7b4e2ba2eb89d3b39f1de9625c24b1 603563102a8d410ebd081fb5bb3711d3 e4d9bc48f6920345f38fb89f3c198657 7a7b4e2ba2eb89d3b39f1de9625c24b1 603563102a8d410ebd081fb5bb3711d3 fpsr=00000000 +sha512su1 v27.2d, v28.2d, v29.2d 3926cc5df566ae80e65d3af1a217a5e8 bad46a21352852c83b9f9256ee33f7ac 4c7d311058224c9e16e48416217a378f 63b51569ee5b0cc9a0292a959bff8cf0 bad46a21352852c83b9f9256ee33f7ac 4c7d311058224c9e16e48416217a378f fpsr=00000000 +sha512su1 v28.2d, v29.2d, v30.2d 7b408c9b2067aa17b9a984144ef62b49 f81b4f5fe03bec2401c8b1f90f4166de 3d6c48c6356e0b2329e52f65977e5676 776b5e226d8a27ca062820b06e7d9442 f81b4f5fe03bec2401c8b1f90f4166de 3d6c48c6356e0b2329e52f65977e5676 fpsr=00000000 +sha512su1 v29.2d, v30.2d, v31.2d 4d48924e39cfc662eba41ed5c4688066 199d84f3ea7b26753196e4203c5c9b3d 61076702b3356dd0a94456d89e10168e 5694ec1019f3d6b0b3ff5252210a4302 199d84f3ea7b26753196e4203c5c9b3d 61076702b3356dd0a94456d89e10168e fpsr=00000000 diff --git a/none/tests/arm64/sha512_v82.vgtest b/none/tests/arm64/sha512_v82.vgtest new file mode 100644 index 0000000000..eb32cbe12f --- /dev/null +++ b/none/tests/arm64/sha512_v82.vgtest @@ -0,0 +1,3 @@ +prog: sha512_v82 +prereq: test -x sha512_v82 && ../../../tests/arm64_features sha512 +vgopts: -q |
From: Paul F. <pa...@so...> - 2024-05-18 15:35:16
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=af38165fb766a79eb954f3c12c74c7c37c9ac6e9 commit af38165fb766a79eb954f3c12c74c7c37c9ac6e9 Author: David Benjamin <dav...@go...> Date: Thu May 16 10:12:59 2024 -0400 Extract common arm64 SIMD helpers into a single header This was copy-pasted between two files and, with the number of extensions in aarch64, will likely need to be in many more. As the header file defines a bunch of static, mutable state, some functions needed to be moved to a separate .c file, to avoid weird behaviors from C's textual inclusion model. This also required refreshing fp_and_simd's expected output. The fp_and_simd and fp_and_simd_v82 copies of randV128 produced slightly different output because fp_and_simd_v82 also checked for valid f16s. Deduplicating the code means we now apply that across the board. NB: The fp_and_simd expected output was synthesized from what valgrind thought the correct output was, *not* running the executable directly. Valgrind does not seem to actually match a real Arm machine. This divergence already existed before this commit. The divergence is in the fmla, fcvtxn, and fcvtxn2 instructions. Looking at the corresponding code in guest_arm64_toIR.c, I see various comments discussion how they don't quite round correctly, so I'm guessing this is a known bug. For now, as before this commit, I've generated the test expectations based on the bug. Diff: --- none/tests/arm64/Makefile.am | 3 + none/tests/arm64/fp_and_simd.c | 480 +- none/tests/arm64/fp_and_simd.stdout.exp | 34816 +++++++++++++++--------------- none/tests/arm64/fp_and_simd_v82.c | 2125 +- none/tests/arm64/simd.c | 186 + none/tests/arm64/simd.h | 374 + 6 files changed, 17973 insertions(+), 20011 deletions(-) diff --git a/none/tests/arm64/Makefile.am b/none/tests/arm64/Makefile.am index 5cf3c4e19e..1f5d95107b 100644 --- a/none/tests/arm64/Makefile.am +++ b/none/tests/arm64/Makefile.am @@ -74,6 +74,9 @@ frinta_frintn_SOURCES = frinta_frintn.cpp frinta_frintn_CXXFLAGS = ${AM_CXXFLAGS} -std=c++17 integer_CFLAGS = $(AM_CFLAGS) -g -O0 -DTEST_BFM=0 +fp_and_simd_SOURCES = fp_and_simd.c simd.h simd.c +fp_and_simd_v82_SOURCES = fp_and_simd_v82.c simd.h simd.c + fp_and_simd_LDADD = -lm simd_v81_LDADD = -lm fp_and_simd_v82_LDADD = -lm diff --git a/none/tests/arm64/fp_and_simd.c b/none/tests/arm64/fp_and_simd.c index 55964442a5..49ece1c772 100644 --- a/none/tests/arm64/fp_and_simd.c +++ b/none/tests/arm64/fp_and_simd.c @@ -1,486 +1,8 @@ #include <stdio.h> #include <assert.h> -#include <malloc.h> // memalign #include <string.h> // memset -#include "tests/malloc.h" -#include <math.h> // isnormal - -typedef unsigned char UChar; -typedef unsigned short int UShort; -typedef unsigned int UInt; -typedef signed int Int; -typedef unsigned char UChar; -typedef unsigned long long int ULong; -typedef signed long long int Long; -typedef double Double; -typedef float Float; - -typedef unsigned char Bool; -#define False ((Bool)0) -#define True ((Bool)1) - - -#define ITERS 1 - -typedef - enum { TyHF=1234, TySF, TyDF, TyB, TyH, TyS, TyD, TyNONE } - LaneTy; - -union _V128 { - UChar u8[16]; - UShort u16[8]; - UInt u32[4]; - ULong u64[2]; - Float f32[4]; - Double f64[2]; -}; -typedef union _V128 V128; - -static inline UChar randUChar ( void ) -{ - static UInt seed = 80021; - seed = 1103515245 * seed + 12345; - return (seed >> 17) & 0xFF; -} - -static ULong randULong ( LaneTy ty ) -{ - Int i; - ULong r = 0; - for (i = 0; i < 8; i++) { - r = (r << 8) | (ULong)(0xFF & randUChar()); - } - return r; -} - -/* 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 ( /*OUT*/V128* v, LaneTy ty ) -{ - static UInt nCalls = 0, nIters = 0; - Int i; - nCalls++; - while (1) { - nIters++; - for (i = 0; i < 16; i++) { - v->u8[i] = randUChar(); - } - if (isnormal(v->f32[0]) && isnormal(v->f32[1]) && isnormal(v->f32[2]) - && isnormal(v->f32[3]) && isnormal(v->f64[0]) && isnormal(v->f64[1])) - break; - } - if (0 == (nCalls & 0xFF)) - printf("randV128: %u calls, %u iters\n", nCalls, nIters); -} - -static void showV128 ( V128* v ) -{ - Int i; - for (i = 15; i >= 0; i--) - printf("%02x", (Int)v->u8[i]); -} - -static void showBlock ( const char* msg, V128* block, Int nBlock ) -{ - Int i; - printf("%s\n", msg); - for (i = 0; i < nBlock; i++) { - printf(" "); - showV128(&block[i]); - printf("\n"); - } -} - -static ULong dup4x16 ( UInt x ) -{ - ULong r = x & 0xF; - r |= (r << 4); - r |= (r << 8); - r |= (r << 16); - r |= (r << 32); - return r; -} - -// Generate a random double-precision number. About 1 time in 2, -// instead return a special value (+/- Inf, +/-Nan, denorm). -// This ensures that many of the groups of 4 calls here will -// return a special value. - -static Double special_values[10]; -static Bool special_values_initted = False; - -static __attribute__((noinline)) -Double negate ( Double d ) { return -d; } -static __attribute__((noinline)) -Double divf64 ( Double x, Double y ) { return x/y; } - -static __attribute__((noinline)) -Double plusZero ( void ) { return 0.0; } -static __attribute__((noinline)) -Double minusZero ( void ) { return negate(plusZero()); } - -static __attribute__((noinline)) -Double plusOne ( void ) { return 1.0; } -static __attribute__((noinline)) -Double minusOne ( void ) { return negate(plusOne()); } - -static __attribute__((noinline)) -Double plusInf ( void ) { return 1.0 / 0.0; } -static __attribute__((noinline)) -Double minusInf ( void ) { return negate(plusInf()); } - -static __attribute__((noinline)) -Double plusNaN ( void ) { return divf64(plusInf(),plusInf()); } -static __attribute__((noinline)) -Double minusNaN ( void ) { return negate(plusNaN()); } - -static __attribute__((noinline)) -Double plusDenorm ( void ) { return 1.23e-315 / 1e3; } -static __attribute__((noinline)) -Double minusDenorm ( void ) { return negate(plusDenorm()); } - - -static void ensure_special_values_initted ( void ) -{ - if (special_values_initted) return; - special_values[0] = plusZero(); - special_values[1] = minusZero(); - special_values[2] = plusOne(); - special_values[3] = minusOne(); - special_values[4] = plusInf(); - special_values[5] = minusInf(); - special_values[6] = plusNaN(); - special_values[7] = minusNaN(); - special_values[8] = plusDenorm(); - special_values[9] = minusDenorm(); - special_values_initted = True; - int i; - printf("\n"); - for (i = 0; i < 10; i++) { - printf("special value %d = %e\n", i, special_values[i]); - } - printf("\n"); -} - -static Double randDouble ( void ) -{ - ensure_special_values_initted(); - UChar c = randUChar(); - if (c >= 128) { - // return a normal number most of the time. - // 0 .. 2^63-1 - ULong u64 = randULong(TyDF); - // -2^62 .. 2^62-1 - Long s64 = (Long)u64; - // -2^55 .. 2^55-1 - s64 >>= (62-55); - // and now as a float - return (Double)s64; - } - c = randUChar() % 10; - return special_values[c]; -} - -static Float randFloat ( void ) -{ - ensure_special_values_initted(); - UChar c = randUChar(); - if (c >= 128) { - // return a normal number most of the time. - // 0 .. 2^63-1 - ULong u64 = randULong(TyDF); - // -2^62 .. 2^62-1 - Long s64 = (Long)u64; - // -2^25 .. 2^25-1 - s64 >>= (62-25); - // and now as a float - return (Float)s64; - } - c = randUChar() % 10; - return special_values[c]; -} - -void randBlock_Doubles ( V128* block, Int nBlock ) -{ - Int i; - for (i = 0; i < nBlock; i++) { - block[i].f64[0] = randDouble(); - block[i].f64[1] = randDouble(); - } -} - -void randBlock_Floats ( V128* block, Int nBlock ) -{ - Int i; - for (i = 0; i < nBlock; i++) { - block[i].f32[0] = randFloat(); - block[i].f32[1] = randFloat(); - block[i].f32[2] = randFloat(); - block[i].f32[3] = randFloat(); - } -} - - -/* ---------------------------------------------------------------- */ -/* -- Parameterisable test macros -- */ -/* ---------------------------------------------------------------- */ - -#define DO50(_action) \ - do { \ - Int _qq; for (_qq = 0; _qq < 50; _qq++) { _action ; } \ - } while (0) - - -/* 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+1]; \ - memset(block, 0x55, sizeof(block)); \ - randV128(&block[0], ty); \ - randV128(&block[1], ty); \ - __asm__ __volatile__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "ldr q7, [%0, #0] ; " \ - "ldr q8, [%0, #16] ; " \ - #INSN " v8." #SUFFIXD ", v7." #SUFFIXN " ; " \ - "str q8, [%0, #16] ; " \ - "mrs x30, fpsr ; str x30, [%0, #32] " \ - : : "r"(&block[0]) : "memory", "v7", "v8", "x30" \ - ); \ - printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN); \ - UInt fpsr = 0xFFFFFF60 & block[2].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - - -/* 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+1]; \ - memset(block, 0x55, sizeof(block)); \ - randV128(&block[0], ty); \ - randV128(&block[1], ty); \ - randV128(&block[2], ty); \ - __asm__ __volatile__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "ldr q7, [%0, #0] ; " \ - "ldr q8, [%0, #16] ; " \ - "ldr q9, [%0, #32] ; " \ - #INSN " v9." #SUFFIXD ", v7." #SUFFIXN ", v8." #SUFFIXM " ; " \ - "str q9, [%0, #32] ; " \ - "mrs x30, fpsr ; str x30, [%0, #48] " \ - : : "r"(&block[0]) : "memory", "v7", "v8", "v9", "x30" \ - ); \ - printf(#INSN " v9." #SUFFIXD \ - ", v7." #SUFFIXN ", v8." #SUFFIXM " "); \ - UInt fpsr = 0xFFFFFF60 & block[3].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" "); \ - showV128(&block[2]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - - -/* 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+1]; \ - memset(block, 0x55, sizeof(block)); \ - randV128(&block[0], ty); \ - randV128(&block[1], ty); \ - __asm__ __volatile__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "ldr q7, [%0, #0] ; " \ - "ldr q8, [%0, #16] ; " \ - #INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " ; " \ - "str q8, [%0, #16] ; " \ - "mrs x30, fpsr ; str x30, [%0, #32] " \ - : : "r"(&block[0]) : "memory", "v7", "v8", "x30" \ - ); \ - printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " "); \ - UInt fpsr = 0xFFFFFF60 & block[2].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - - -/* 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; \ - assert(INTREGNO != 30); \ - for (i = 0; i < ITERS; i++) { \ - V128 block[4+1]; \ - memset(block, 0x55, sizeof(block)); \ - randV128(&block[0], ty); \ - randV128(&block[1], ty); \ - randV128(&block[2], ty); \ - randV128(&block[3], ty); \ - __asm__ __volatile__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "ldr q"#VECREGNO", [%0, #0] ; " \ - "ldr x"#INTREGNO", [%0, #16] ; " \ - INSN " ; " \ - "str q"#VECREGNO", [%0, #32] ; " \ - "str x"#INTREGNO", [%0, #48] ; " \ - "mrs x30, fpsr ; str x30, [%0, #64] " \ - : : "r"(&block[0]) : "memory", "v"#VECREGNO, "x"#INTREGNO, "x30" \ - ); \ - printf(INSN " "); \ - UInt fpsr = 0xFFFFFF60 & block[4].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" "); \ - showV128(&block[2]); printf(" "); \ - showV128(&block[3]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - - -/* Generate a test that involves two vector regs, - 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 ) { \ - Int i; \ - for (i = 0; i < ITERS; i++) { \ - V128 block[4+1]; \ - memset(block, 0x55, sizeof(block)); \ - randV128(&block[0], ty); \ - randV128(&block[1], ty); \ - randV128(&block[2], ty); \ - randV128(&block[3], ty); \ - __asm__ __volatile__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "ldr q"#VECREG1NO", [%0, #0] ; " \ - "ldr q"#VECREG2NO", [%0, #16] ; " \ - INSN " ; " \ - "str q"#VECREG1NO", [%0, #32] ; " \ - "str q"#VECREG2NO", [%0, #48] ; " \ - "mrs x30, fpsr ; str x30, [%0, #64] " \ - : : "r"(&block[0]) \ - : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "x10", "x30" \ - ); \ - printf(INSN " "); \ - UInt fpsr = 0xFFFFFF60 & block[4].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" "); \ - showV128(&block[2]); printf(" "); \ - showV128(&block[3]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - - -/* 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+1]; \ - 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__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "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] ; " \ - "mrs x30, fpsr ; str x30, [%0, #96] " \ - : : "r"(&block[0]) \ - : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO, \ - "v16", "v17", "v18", "x30" \ - ); \ - printf(INSN " "); \ - UInt fpsr = 0xFFFFFF60 & block[6].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" "); \ - showV128(&block[2]); printf(" "); \ - showV128(&block[3]); printf(" "); \ - showV128(&block[4]); printf(" "); \ - showV128(&block[5]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - - -/* Generate a test that involves four 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_FOURVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO, \ - VECREG3NO,VECREG4NO) \ - __attribute__((noinline)) \ - static void test_##TESTNAME ( LaneTy ty ) { \ - Int i; \ - for (i = 0; i < ITERS; i++) { \ - V128 block[8+1]; \ - 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); \ - randV128(&block[6], ty); \ - randV128(&block[7], ty); \ - __asm__ __volatile__( \ - "mov x30, #0 ; msr fpsr, x30 ; " \ - "ldr q"#VECREG1NO", [%0, #0] ; " \ - "ldr q"#VECREG2NO", [%0, #16] ; " \ - "ldr q"#VECREG3NO", [%0, #32] ; " \ - "ldr q"#VECREG4NO", [%0, #48] ; " \ - INSN " ; " \ - "str q"#VECREG1NO", [%0, #64] ; " \ - "str q"#VECREG2NO", [%0, #80] ; " \ - "str q"#VECREG3NO", [%0, #96] ; " \ - "str q"#VECREG4NO", [%0, #112] ; " \ - "mrs x30, fpsr ; str x30, [%0, #128] " \ - : : "r"(&block[0]) \ - : "memory", "v"#VECREG1NO, "v"#VECREG2NO, \ - "v"#VECREG3NO, "v"#VECREG4NO, \ - "v16", "v17", "v18", "x30" \ - ); \ - printf(INSN " "); \ - UInt fpsr = 0xFFFFFF60 & block[8].u32[0]; \ - showV128(&block[0]); printf(" "); \ - showV128(&block[1]); printf(" "); \ - showV128(&block[2]); printf(" "); \ - showV128(&block[3]); printf(" "); \ - showV128(&block[4]); printf(" "); \ - showV128(&block[5]); printf(" "); \ - showV128(&block[6]); printf(" "); \ - showV128(&block[7]); printf(" fpsr=%08x\n", fpsr); \ - } \ - } - +#include "simd.h" /* ---------------------------------------------------------------- */ /* -- Test functions and non-parameterisable test macros -- */ diff --git a/none/tests/arm64/fp_and_simd.stdout.exp b/none/tests/arm64/fp_and_simd.stdout.exp index 7d5ae31e6c..aba3ed295e 100644 --- a/none/tests/arm64/fp_and_simd.stdout.exp +++ b/none/tests/arm64/fp_and_simd.stdout.exp @@ -1,38 +1,38 @@ -fabs d22, d23 5175e39d19c9ca1e98f24a4984175700 7d6528c5fa956a0d69c3e9a6af27d13b 000000000000000069c3e9a6af27d13b 7d6528c5fa956a0d69c3e9a6af27d13b fpsr=00000000 -fabs s22, s23 19a348215c3a67fd399182c2dbcc2d38 065d77195d623e6b842adc6450659e17 00000000000000000000000050659e17 065d77195d623e6b842adc6450659e17 fpsr=00000000 -fabs v22.2d, v23.2d f9dd4a29f8c093db56b01a12b0ca1583 5ff85bc9535c191fd3a727d1a705f65d 5ff85bc9535c191f53a727d1a705f65d 5ff85bc9535c191fd3a727d1a705f65d fpsr=00000000 -fabs v22.4s, v23.4s d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e 6897b5363be4da8a369dab4f1465b86e 6897b536bbe4da8a369dab4f9465b86e fpsr=00000000 -fabs v22.2s, v23.2s 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 00000000000000000d69483d77e8c6a9 019963bf7459630b8d69483df7e8c6a9 fpsr=00000000 -fneg d22, d23 e98ebd1ca893312a54cae7d5e13dfe91 0a5f45c55f1c9202b76ddefcb0ebfe6e 0000000000000000376ddefcb0ebfe6e 0a5f45c55f1c9202b76ddefcb0ebfe6e fpsr=00000000 -fneg s22, s23 e9b5f3f66b2e58c121a6c3476d21f1e5 63483da65c8c49d096084deb9ed0411e 0000000000000000000000001ed0411e 63483da65c8c49d096084deb9ed0411e fpsr=00000000 -fneg v22.2d, v23.2d 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 6cb42ac54b0966d4889b756aa3f77018 ecb42ac54b0966d4089b756aa3f77018 fpsr=00000000 -fneg v22.4s, v23.4s 8404eb7f0cf4ca6fee8536da9dbf68bc ff6f850f2c57ea2a2c810e6dc1a1833d 7f6f850fac57ea2aac810e6d41a1833d ff6f850f2c57ea2a2c810e6dc1a1833d fpsr=00000000 -fneg v22.2s, v23.2s 36b2a38dcef18acf0e0f01a829ba3c66 f078b65e01737fd22bfa8f668c8b14f4 0000000000000000abfa8f660c8b14f4 f078b65e01737fd22bfa8f668c8b14f4 fpsr=00000000 -fsqrt d22, d23 c5e48064a393c8e947a34273c10a3c47 6ec34f98a2199d3c810bdacfab80ee3d 00000000000000007ff8000000000000 6ec34f98a2199d3c810bdacfab80ee3d fpsr=00000000 -fsqrt s22, s23 b984aed62671e865e6f21d40fc7bc013 5d0f926ce1157eaa95c45b338afcb3df 0000000000000000000000007fc00000 5d0f926ce1157eaa95c45b338afcb3df fpsr=00000000 -fsqrt v22.2d, v23.2d acb722146c6cbfa9ea4a022e1d3d7dbb 048612e51a468e36c51cdd8f87e12ab4 223a93d504b215df7ff8000000000000 048612e51a468e36c51cdd8f87e12ab4 fpsr=00000000 -fsqrt v22.4s, v23.4s 80ddba7e53e42d123208cf9b04b0569c 4288ae612c0dad40f0733f448390351b 410444f635be71e37fc000007fc00000 4288ae612c0dad40f0733f448390351b fpsr=00000000 -fsqrt v22.2s, v23.2s 14575775bc3a12029d8e66ea90352a18 f9754842f9c9ba28f82a63b15c68b274 00000000000000007fc000004df41212 f9754842f9c9ba28f82a63b15c68b274 fpsr=00000000 -fadd d2, d11, d29 4784d95987cd4ed80c3ca578a32bd88e 08aebee85fda964fbba02737f3c98220 837be65197abe2686b1fba2604afb8d5 00000000000000006b1fba2604afb8d5 08aebee85fda964fbba02737f3c98220 837be65197abe2686b1fba2604afb8d5 fpsr=00000000 -fadd s2, s11, s29 0aaa836b194e242cc5fc3ae904033357 8ca3e752c306df00caab752f630ff07e 0e780c65c22b4ab8778d9ed6d9eb46ea 000000000000000000000000630ff061 8ca3e752c306df00caab752f630ff07e 0e780c65c22b4ab8778d9ed6d9eb46ea fpsr=00000000 -fsub d2, d11, d29 61ff7d4df3b6ca8131f01866bd76c58f 02dd0e32eecfc5fa2c3ffa1aebe6a4d2 69505d14b27d9d16f25b26e0042fa9fa 0000000000000000725b26e0042fa9fa 02dd0e32eecfc5fa2c3ffa1aebe6a4d2 69505d14b27d9d16f25b26e0042fa9fa fpsr=00000000 -fsub s2, s11, s29 0088596389c893fd879d51d4c5c764db 1e61c5ec52f79c6015e3c8dc7e9273bf 47086cc3da642fa7130d662777beb4a9 0000000000000000000000007e9270c4 1e61c5ec52f79c6015e3c8dc7e9273bf 47086cc3da642fa7130d662777beb4a9 fpsr=00000000 -fadd v9.2d, v7.2d, v8.2d 9a49ac115048d4c4f987fa170d3ce4dd 9432a2e46543b956b819f459105730e9 9a49ac115048d4c4f987fa170d3ce4dd fpsr=00000000 -fadd v9.4s, v7.4s, v8.4s d2b3c4044ef23fb2e22093a48a9d2e0b adddf0eb4808f06704c857e949cc0fac d2b3c4044ef243fae22093a449cc0fac fpsr=00000000 -fadd v9.2s, v7.2s, v8.2s e4450ababbfae0f9bc3127138b19183c 1755377e9a786f014a6592749579b0f4 00000000000000004a6592749579b0fe fpsr=00000000 -fsub v9.2d, v7.2d, v8.2d d70f7fb13667914c413cead25e27ac14 7acb193b9abab2f9e1917689e3f6bf86 facb193b9abab2f961917689e3f6bf86 fpsr=00000000 -fsub v9.4s, v7.4s, v8.4s 918107c43ea20cc00420edac31a0d599 5cce191e65591384ff4cb613013cc685 dcce191ee55913847f4cb61331a0d599 fpsr=00000000 -fsub v9.2s, v7.2s, v8.2s da6c63303173ecc97e1e22cf15bd5c2f 24509983fc3bcc36baf7e45e9fa43077 00000000000000007e1e22cf1fa43083 fpsr=00000000 -fabd d2, d11, d29 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 f6f2b14fbb3184b2141625713239066f 0000000000000000141625713239066f 17a0dc273ba9f8030a52741849e54740 f6f2b14fbb3184b2141625713239066f fpsr=00000000 -fabd s2, s11, s29 e8c72e865de41295f2db8f44cbbf37e2 fcd015ff8f2e73a3a0fae06860b606c7 f34428d9c8833f5b78fb29445f3bc8d7 000000000000000000000000609e8dac fcd015ff8f2e73a3a0fae06860b606c7 f34428d9c8833f5b78fb29445f3bc8d7 fpsr=00000000 -fabd v9.2d, v7.2d, v8.2d f9da7f07e00794eb00b0940ba5e08516 be625608d5abd787f5c90ee73af5d7c0 79da7f07e00794eb75c90ee73af5d7c0 fpsr=00000000 -fabd v9.4s, v7.4s, v8.4s ddb5cd8016d27d057796e0861576e44f 4e94ec120b386f523bfcd80321664d3e 5db5cd8016d27d047796e08621664d3d fpsr=00000000 -fabd v9.2s, v7.2s, v8.2s 3d3cc0784c2f856363d9810079bbabd9 125934a781e479d33d431279cce48fce 000000000000000063d9810079bbabd9 fpsr=00000000 -faddp d2, v23.2d df411d2ee2e7467c38bb69a6e1e9a617 6f9f902235982fa010fd4e94e9c808f5 00000000000000006f9f902235982fa0 6f9f902235982fa010fd4e94e9c808f5 fpsr=00000000 -faddp s2, v23.2s acb9433f079dacacabeb000208c90296 20162517609f0f22a1a7a4c9c0a51f6b 000000000000000000000000c0a51f6b 20162517609f0f22a1a7a4c9c0a51f6b fpsr=00000000 -faddp v2.2d, v23.2d, v11.2d 200d17261638b12a2a6a07863ec28077 31005fb9ada2074bf63a63fedcb4d29c 3f871736dc9ac5357446eb65e4e703bb 7446eb65e4e703bbf63a63fedcb4d29c 31005fb9ada2074bf63a63fedcb4d29c 3f871736dc9ac5357446eb65e4e703bb fpsr=00000000 -faddp v2.4s, v23.4s, v11.4s 139832afee423c3d6930e0fad3ba39c4 4969e55289753f038f7980d1535979e5 80c745ef729f1792ccd7e987538166e1 729f1792538163814969e552535979e5 4969e55289753f038f7980d1535979e5 80c745ef729f1792ccd7e987538166e1 fpsr=00000000 -faddp v2.2s, v23.2s, v11.2s 237d5fcd3f71f6e8e6230d4d4add00ad e309aef8a605af130821eb96e737777e b5a9377eb31749ef710cf757885d2728 0000000000000000710cf757e737777e e309aef8a605af130821eb96e737777e b5a9377eb31749ef710cf757885d2728 fpsr=00000000 +fabs d22, d23 5175e39d19c9ca1e98f24a4984175700 19a348215c3a67fd399182c2dbcc2d38 0000000000000000399182c2dbcc2d38 19a348215c3a67fd399182c2dbcc2d38 fpsr=00000000 +fabs s22, s23 cb509970b8136c85d740b80eb7839b97 f9dd4a29f8c093db56b01a12b0ca1583 00000000000000000000000030ca1583 f9dd4a29f8c093db56b01a12b0ca1583 fpsr=00000000 +fabs v22.2d, v23.2d d182c916cebc2e17cfaff39be272ef40 6897b536bbe4da8a369dab4f9465b86e 6897b536bbe4da8a369dab4f9465b86e 6897b536bbe4da8a369dab4f9465b86e fpsr=00000000 +fabs v22.4s, v23.4s 81f2a547be8d181184ededbc53239dcf 019963bf7459630b8d69483df7e8c6a9 019963bf7459630b0d69483d77e8c6a9 019963bf7459630b8d69483df7e8c6a9 fpsr=00000000 +fabs v22.2s, v23.2s 5f490104ced83ff86262dd37727c80f3 e9b5f3f66b2e58c121a6c3476d21f1e5 000000000000000021a6c3476d21f1e5 e9b5f3f66b2e58c121a6c3476d21f1e5 fpsr=00000000 +fneg d22, d23 61c82534e9bf6f37c9e25f72d82e582b ecb42ac54b0966d4089b756aa3f77018 0000000000000000889b756aa3f77018 ecb42ac54b0966d4089b756aa3f77018 fpsr=00000000 +fneg s22, s23 36b2a38dcef18acf0e0f01a829ba3c66 65ce6d498492e7e796df010bf4b23b84 00000000000000000000000074b23b84 65ce6d498492e7e796df010bf4b23b84 fpsr=00000000 +fneg v22.2d, v23.2d 6d08ed19fa045f841810cd8c109ed568 1c4a678450562685769ab818a5b7985e 9c4a678450562685f69ab818a5b7985e 1c4a678450562685769ab818a5b7985e fpsr=00000000 +fneg v22.4s, v23.4s 048612e51a468e36c51cdd8f87e12ab4 0c05cb6ebd128663d7568e3e8a3ac80e 8c05cb6e3d12866357568e3e0a3ac80e 0c05cb6ebd128663d7568e3e8a3ac80e fpsr=00000000 +fneg v22.2s, v23.2s 6489eab2c96df363d52c4330a7aae391 14575775bc3a12029d8e66ea90352a18 00000000000000001d8e66ea10352a18 14575775bc3a12029d8e66ea90352a18 fpsr=00000000 +fsqrt d22, d23 4784d95987cd4ed80c3ca578a32bd88e 08aebee85fda964fbba02737f3c98220 00000000000000007ff8000000000000 08aebee85fda964fbba02737f3c98220 fpsr=00000000 +fsqrt s22, s23 4e92f1b240a122141a366d352714867e 0aaa836b194e242cc5fc3ae904033357 00000000000000000000000021b744bc 0aaa836b194e242cc5fc3ae904033357 fpsr=00000000 +fsqrt v22.2d, v23.2d ac82c1007a7d3cd8f54b130cdaa89cef 627bb6e12d1f6d4651ef145cb9b83843 51350eca7a3386cf48ef89524a773853 627bb6e12d1f6d4651ef145cb9b83843 fpsr=00000000 +fsqrt v22.4s, v23.4s f0f1798fe3c1699cf02b3b25bca27a9c d4ba52a206ff21b170fbbab6a7f19faf 7fc000002334b649583380ca7fc00000 d4ba52a206ff21b170fbbab6a7f19faf fpsr=00000000 +fsqrt v22.2s, v23.2s 16559ec50352a3d92d460a61a5dd0f6f 0784892e9360315bf0177599dbe14b46 00000000000000007fc000007fc00000 0784892e9360315bf0177599dbe14b46 fpsr=00000000 +fadd d2, d11, d29 9432a2e46543b956b819f459105730e9 5da3cfd6aea6558e0c28728e28dc3c9c d2b3c4044ef23fb2e22093a48a9d2e0b 0000000000000000e22093a48a9d2e0b 5da3cfd6aea6558e0c28728e28dc3c9c d2b3c4044ef23fb2e22093a48a9d2e0b fpsr=00000000 +fadd s2, s11, s29 1755377e9a786f014a6592749579b0f4 5f2619b1a20662f012305efa0acd1475 7acb193b9abab2f9e1917689e3f6bf86 000000000000000000000000e3f6bf86 5f2619b1a20662f012305efa0acd1475 7acb193b9abab2f9e1917689e3f6bf86 fpsr=00000000 +fsub d2, d11, d29 fa99500fef6024ba39dce32c239cf309 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 00000000000000008a52741849e54740 570037914d04ab3d05d75ec6f616ee9a 17a0dc273ba9f8030a52741849e54740 fpsr=00000000 +fsub s2, s11, s29 bc70c3b3ef84644b6295f64a4ce61473 e8c72e865de41295f2db8f44cbbf37e2 f34428d9c8833f5b78fb29445f3bc8d7 000000000000000000000000df3bc8d7 e8c72e865de41295f2db8f44cbbf37e2 f34428d9c8833f5b78fb29445f3bc8d7 fpsr=00000000 +fadd v9.2d, v7.2d, v8.2d ac8dd5bbc503330eb9dd5dab8e212ab7 4e94ec120b386f523bfcd80321664d3e 4e94ec120b386f523bfcd803215ef5d3 fpsr=00000000 +fadd v9.4s, v7.4s, v8.4s 3d3cc0784c2f856363d9810079bbabd9 125934a781e479d33d431279cce48fce 3d3cc0784c2f856363d9810079bbabd9 fpsr=00000000 +fadd v9.2s, v7.2s, v8.2s df411d2ee2e7467c38bb69a6e1e9a617 6f9f902235982fa010fd4e94e9c808f5 000000000000000038bb69a6e9c809df fpsr=00000000 +fsub v9.2d, v7.2d, v8.2d acb9433f079dacacabeb000208c90296 20162517609f0f22a1a7a4c9c0a51f6b acb9433f079dacacabeb000208c90296 fpsr=00000000 +fsub v9.4s, v7.4s, v8.4s ef56701db49bea4ce52e79ce9700a7f7 200d17261638b12a2a6a07863ec28077 ef56701db49bea4ce52e79cebec28077 fpsr=00000000 +fsub v9.2s, v7.2s, v8.2s 3f871736dc9ac5357446eb65e4e703bb 445ef059e641a1ccb097e047aacc5b89 00000000000000007446eb65e4e703bb fpsr=00000000 +fabd d2, d11, d29 139832afee423c3d6930e0fad3ba39c4 4969e55289753f038f7980d1535979e5 80c745ef729f1792ccd7e987538166e1 00000000000000004cd7e987538166e1 4969e55289753f038f7980d1535979e5 80c745ef729f1792ccd7e987538166e1 fpsr=00000000 +fabd s2, s11, s29 e309aef8a605af130821eb96e737777e b5a9377eb31749ef710cf757885d2728 1f1030333fb8fa4b2feb05cb92ed4f4d 00000000000000000000000012ed4f46 b5a9377eb31749ef710cf757885d2728 1f1030333fb8fa4b2feb05cb92ed4f4d fpsr=00000000 +fabd v9.2d, v7.2d, v8.2d bc36ca100a4a3a7d5127ba1c529aa0bf 9f043af6a1aed58f1ee978efa4b054d2 3c36ca100a4a3a7d5127ba1c529aa0bf fpsr=00000000 +fabd v9.4s, v7.4s, v8.4s 5e58aa8b4c88ae0d34fa174f9ce927c4 51f2275707e17ae4b3fd9698098ef5b0 5e58aa8b4c88ae0d351cbe7a1ce927c4 fpsr=00000000 +fabd v9.2s, v7.2s, v8.2s 61cd123e19cf1e2bb001f1161e946f5c d5f13a9ab645e140698bec649583f5aa 0000000000000000698bec641e946f7d fpsr=00000000 +faddp d2, v23.2d 37885d08d662faf92a541ab7911c2b5a 2993e139f7d64ff4532f9ae1d7da8010 0000000000000000532f9ae1d7da8010 2993e139f7d64ff4532f9ae1d7da8010 fpsr=00000000 +faddp s2, v23.2s f76b8d9773b81b24de24e0a879648e11 7af177f11da748fc8b9145fe16d0390f 00000000000000000000000016d0390d 7af177f11da748fc8b9145fe16d0390f fpsr=00000000 +faddp v2.2d, v23.2d, v11.2d 1dd493f59184345437d5e366d0e20c30 c50f1401e45b82d3086a7a39a1e6217d b79cd058188318692112ca1cf9f1dd31 b79cd05818831869c50f1401e45b82d3 c50f1401e45b82d3086a7a39a1e6217d b79cd058188318692112ca1cf9f1dd31 fpsr=00000000 +faddp v2.4s, v23.4s, v11.4s 0b9c016be95f18de62bba1a11cc04c89 761b274ac4c4f0c7f31ed81010c417bc 1541139c8b1cd0d1a11d81326f4e7880 154113926f4e7880761b274af31ed810 761b274ac4c4f0c7f31ed81010c417bc 1541139c8b1cd0d1a11d81326f4e7880 fpsr=00000000 +faddp v2.2s, v23.2s, v11.2s 94d7265949ca62b46a8a793cf9d5f0d1 35e7926e777aa43f56470887bfdd3daf b2ed4ecc1e172df2d3a0a41fce854ae7 0000000000000000d3a0c57256470887 35e7926e777aa43f56470887bfdd3daf b2ed4ecc1e172df2d3a0a41fce854ae7 fpsr=00000000 special value 0 = 0.000000e+00 special value 1 = -0.000000e+00 @@ -46,29466 +46,29466 @@ special value 8 = 1.230001e-318 special value 9 = -1.230001e-318 FCCMP_D_D_0xF_EQ before - c3644db84da30e484299097f1e1dcc00 - 800000000003cc7b7ff0000000000000 - c3430a060201716ebff0000000000000 + c36f3751423d2c103ff0000000000000 + fff00000000000000000000000000000 + bff0000000000000fff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c3644db84da30e484299097f1e1dcc00 - 800000000003cc7b7ff0000000000000 - c3430a060201716ebff0000000000000 - aaaaaaaaaaaaaaaa0000000080000000 + c36f3751423d2c103ff0000000000000 + fff00000000000000000000000000000 + bff0000000000000fff0000000000000 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 0000000000000000c3696b78d1762ba1 - 000000000003cc7b3ff0000000000000 - c3645782717ed83d43652c293bde3a48 + c33e041fe7638bf643629df8a23a2937 + 000000000003cc7b8000000000000000 + 7ff8000000000000fff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 0000000000000000c3696b78d1762ba1 - 000000000003cc7b3ff0000000000000 - c3645782717ed83d43652c293bde3a48 - aaaaaaaaaaaaaaaa0000000080000000 + c33e041fe7638bf643629df8a23a2937 + 000000000003cc7b8000000000000000 + 7ff8000000000000fff0000000000000 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 800000000003cc7bfff0000000000000 - 7ff8000000000000432b9ed20906a902 - 4363c5fe8d036ba2bff0000000000000 + 4348e661a5edcba08000000000000000 + fff80000000000004361b9e6239f518c + fff80000000000007ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 800000000003cc7bfff0000000000000 - 7ff8000000000000432b9ed20906a902 - 4363c5fe8d036ba2bff0000000000000 + 4348e661a5edcba08000000000000000 + fff80000000000004361b9e6239f518c + fff80000000000007ff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - c31260dc28f7c548c36569e853c29c7e - 000000000003cc7b43647911f6eec386 - 000000000003cc7b433f2c5491ae55ac + c35d559a0d3cb1853ff0000000000000 + c36a09c9796b503343620347e18a5e2d + c361276d0bb04c5a435245b3490f5ba2 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c31260dc28f7c548c36569e853c29c7e - 000000000003cc7b43647911f6eec386 - 000000000003cc7b433f2c5491ae55ac + c35d559a0d3cb1853ff0000000000000 + c36a09c9796b503343620347e18a5e2d + c361276d0bb04c5a435245b3490f5ba2 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 8000000000000000c36afe32788d0301 - 000000000000000043671be50785bc40 - 43693b22da50385143493e12cd61aaf6 + 8000000000000000000000000003cc7b + c3397ae9fda7e5ed4366cd7fc1040561 + c3682e601bab2192000000000003cc7b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 8000000000000000c36afe32788d0301 - 000000000000000043671be50785bc40 - 43693b22da50385143493e12cd61aaf6 + 8000000000000000000000000003cc7b + c3397ae9fda7e5ed4366cd7fc1040561 + c3682e601bab2192000000000003cc7b aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 3ff0000000000000435d78eaac2e1070 - bff00000000000004351972aba1981c3 - 434a542af9fa62d6fff0000000000000 + 432a8757b445b34c7ff0000000000000 + 4362a89a2c4453b9c34d072a0e368462 + 4363626df444f6fdc333c2f2bfcae40d aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 3ff0000000000000435d78eaac2e1070 - bff00000000000004351972aba1981c3 - 434a542af9fa62d6fff0000000000000 + 432a8757b445b34c7ff0000000000000 + 4362a89a2c4453b9c34d072a0e368462 + 4363626df444f6fdc333c2f2bfcae40d aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - fff00000000000007ff8000000000000 - fff0000000000000c36d789274de15ee - 7ff0000000000000bff0000000000000 - aaaaaaaaaaaaaaaa5555555555555555 -FCCMP_D_D_0xF_EQ after - fff00000000000007ff8000000000000 - fff0000000000000c36d789274de15ee - 7ff0000000000000bff0000000000000 - aaaaaaaaaaaaaaaa0000000030000000 - -FCCMP_D_D_0xF_EQ before - c3540f32e85605d8000000000003cc7b - 3ff0000000000000435cf0c994c7baef - 000000000003cc7b43484328e11c714a + c35302df99896e32c369b53c8103aa5b + 0000000000000000fff0000000000000 + 0000000000000000433e098bdda533b5 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c3540f32e85605d8000000000003cc7b - 3ff0000000000000435cf0c994c7baef - 000000000003cc7b43484328e11c714a - aaaaaaaaaaaaaaaa0000000080000000 + c35302df99896e32c369b53c8103aa5b + 0000000000000000fff0000000000000 + 0000000000000000433e098bdda533b5 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 0000000000000000c35c3e980b0b1e92 - c343033d74005d6ec35ecffc6f73ebc2 - 000000000003cc7bbff0000000000000 + c3633593df65900e7ff0000000000000 + 8000000000000000c32e9d0f0e5cdc14 + bff0000000000000800000000003cc7b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 0000000000000000c35c3e980b0b1e92 - c343033d74005d6ec35ecffc6f73ebc2 - 000000000003cc7bbff0000000000000 + c3633593df65900e7ff0000000000000 + 8000000000000000c32e9d0f0e5cdc14 + bff0000000000000800000000003cc7b aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - c36a80b1b485e3e3c364245faceba897 - c33387dce3370caf4344f12e7181126e - fff80000000000003ff0000000000000 + c36e74e08e6762817ff0000000000000 + 7ff0000000000000436aa1dd03f611e5 + 8000000000000000436f46d122334784 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c36a80b1b485e3e3c364245faceba897 - c33387dce3370caf4344f12e7181126e - fff80000000000003ff0000000000000 - aaaaaaaaaaaaaaaa0000000080000000 + c36e74e08e6762817ff0000000000000 + 7ff0000000000000436aa1dd03f611e5 + 8000000000000000436f46d122334784 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 7ff0000000000000436ce5e35afdc3ce - c31dbac710744078fff0000000000000 - 430ae0d6e42c1c30c3627500a51fb02f + 431a38eb76ac105c4365fc9c1cb64ff9 + fff8000000000000fff0000000000000 + 7ff80000000000000000000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 7ff0000000000000436ce5e35afdc3ce - c31dbac710744078fff0000000000000 - 430ae0d6e42c1c30c3627500a51fb02f + 431a38eb76ac105c4365fc9c1cb64ff9 + fff8000000000000fff0000000000000 + 7ff80000000000000000000000000000 aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - c3625983fc796daefff8000000000000 - 4322a1495a8b85a0800000000003cc7b - fff00000000000007ff8000000000000 + c35b4ce8ee4c5516c362ff8eb1bcde7c + 800000000003cc7bfff8000000000000 + bff00000000000007ff8000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c3625983fc796daefff8000000000000 - 4322a1495a8b85a0800000000003cc7b - fff00000000000007ff8000000000000 + c35b4ce8ee4c5516c362ff8eb1bcde7c + 800000000003cc7bfff8000000000000 + bff00000000000007ff8000000000000 aaaaaaaaaaaaaaaa0000000030000000 FCCMP_D_D_0xF_EQ before - 80000000000000007ff8000000000000 - c357cc8e156455e63ff0000000000000 - 3ff0000000000000c334d857c505bc33 + fff0000000000000c34d791904e5b806 + 7ff8000000000000fff8000000000000 + 800000000003cc7b000000000003cc7b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 80000000000000007ff8000000000000 - c357cc8e156455e63ff0000000000000 - 3ff0000000000000c334d857c505bc33 + fff0000000000000c34d791904e5b806 + 7ff8000000000000fff8000000000000 + 800000000003cc7b000000000003cc7b aaaaaaaaaaaaaaaa0000000030000000 FCCMP_D_D_0xF_EQ before - c36f6906ffbafc0f000000000003cc7b - c36c37346af17389c363e05e6dfbb0a2 - 000000000003cc7b434cca1221691883 - aaaaaaaaaaaaaaaa5555555555555555 -FCCMP_D_D_0xF_EQ after - c36f6906ffbafc0f000000000003cc7b - c36c37346af17389c363e05e6dfbb0a2 - 000000000003cc7b434cca1221691883 - aaaaaaaaaaaaaaaa0000000020000000 - -FCCMP_D_D_0xF_EQ before - 4355177bf07f65a1c362072310de3628 - 436ecdd30b20a8333ff0000000000000 - c2fccfb19d9ef9100000000000000000 + c3674b8698db41edfff0000000000000 + fff00000000000003ff0000000000000 + c364904574ae4951800000000003cc7b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 4355177bf07f65a1c362072310de3628 - 436ecdd30b20a8333ff0000000000000 - c2fccfb19d9ef9100000000000000000 + c3674b8698db41edfff0000000000000 + fff00000000000003ff0000000000000 + c364904574ae4951800000000003cc7b aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - c32bc976f6260df0c331daf173c01b2f - c360893d9f6e1dadfff8000000000000 - c361274879e805a58000000000000000 + 436dab62784f38e3c3534299528703b0 + c351583434343effbff0000000000000 + bff0000000000000432fd591bcbc45e4 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c32bc976f6260df0c331daf173c01b2f - c360893d9f6e1dadfff8000000000000 - c361274879e805a58000000000000000 - aaaaaaaaaaaaaaaa0000000030000000 + 436dab62784f38e3c3534299528703b0 + c351583434343effbff0000000000000 + bff0000000000000432fd591bcbc45e4 + aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - c36720e2664820634336cbf2bed58baf - c34faf401103c5e47ff8000000000000 - 7ff8000000000000c35537b05421f41e + 4365647dcd3d965dc342ffe0d59e7e28 + c36f7d4afd9fefa54368f7f97cff6657 + 435c3cee8d4c50fe435f419bbe48ba3e aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c36720e2664820634336cbf2bed58baf - c34faf401103c5e47ff8000000000000 - 7ff8000000000000c35537b05421f41e - aaaaaaaaaaaaaaaa0000000030000000 + 4365647dcd3d965dc342ffe0d59e7e28 + c36f7d4afd9fefa54368f7f97cff6657 + 435c3cee8d4c50fe435f419bbe48ba3e + aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - c33e76776bb1c913bff0000000000000 - 0000000000000000000000000003cc7b - 8000000000000000434da1d1d01c8b9c + c36c9cf8ec26995d3ff0000000000000 + 000000000003cc7b800000000003cc7b + 0000000000000000c3179e60110097b4 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c33e76776bb1c913bff0000000000000 - 0000000000000000000000000003cc7b - 8000000000000000434da1d1d01c8b9c - aaaaaaaaaaaaaaaa0000000080000000 + c36c9cf8ec26995d3ff0000000000000 + 000000000003cc7b800000000003cc7b + 0000000000000000c3179e60110097b4 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 4364113ebdc44f5dfff8000000000000 - 8000000000000000fff8000000000000 - 00000000000000008000000000000000 + fff0000000000000fff8000000000000 + 4355e7f7963d5f6dfff8000000000000 + fff8000000000000436458f558b7af6b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 4364113ebdc44f5dfff8000000000000 - 8000000000000000fff8000000000000 - 00000000000000008000000000000000 + fff0000000000000fff8000000000000 + 4355e7f7963d5f6dfff8000000000000 + fff8000000000000436458f558b7af6b aaaaaaaaaaaaaaaa0000000030000000 FCCMP_D_D_0xF_EQ before - bff00000000000004359320a16a8386d - c363f017fcbe7d4ec36789c891eeed11 - 43680f38a7df188e7ff8000000000000 + c33101fe659bca453ff0000000000000 + fff0000000000000c35ccb7bc9f6992c + 436bf9ee1312ab7d000000000003cc7b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - bff00000000000004359320a16a8386d - c363f017fcbe7d4ec36789c891eeed11 - 43680f38a7df188e7ff8000000000000 + c33101fe659bca453ff0000000000000 + fff0000000000000c35ccb7bc9f6992c + 436bf9ee1312ab7d000000000003cc7b aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 8000000000000000c33a3add50120744 - c35707950361c33bc349326eb8cfd0c4 - 80000000000000004368b2925649b5e5 + c3611ea1210351474365ad7f6022d0ee + c35a2cd49f5ad2c343507039d0ca50b8 + 000000000003cc7b4361cfba45214e64 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 8000000000000000c33a3add50120744 - c35707950361c33bc349326eb8cfd0c4 - 80000000000000004368b2925649b5e5 + c3611ea1210351474365ad7f6022d0ee + c35a2cd49f5ad2c343507039d0ca50b8 + 000000000003cc7b4361cfba45214e64 aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 7ff8000000000000c36e3dee2a7016e2 - c33ba5d1c2676225435af3a542e70fd2 - 7ff0000000000000bff0000000000000 + 3ff0000000000000c36e261db6a5fd9a + c363189c56fd016f43637c91388d7070 + 4360613c471403f2fff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 7ff8000000000000c36e3dee2a7016e2 - c33ba5d1c2676225435af3a542e70fd2 - 7ff0000000000000bff0000000000000 + 3ff0000000000000c36e261db6a5fd9a + c363189c56fd016f43637c91388d7070 + 4360613c471403f2fff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 8000000000000000c36cd80413128ee0 - c35082180fa8b61c7ff0000000000000 - 43654743a80624d83ff0000000000000 + 436972eadfcaa7b9c366e397360d179f + 80000000000000004338e24489d8314e + 80000000000000007ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 8000000000000000c36cd80413128ee0 - c35082180fa8b61c7ff0000000000000 - 43654743a80624d83ff0000000000000 + 436972eadfcaa7b9c366e397360d179f + 80000000000000004338e24489d8314e + 80000000000000007ff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - c36efa5444593196c36a5c8affd386c7 - 3ff0000000000000c34f6deb3174c84c - 0000000000000000c36f3751423d2c10 + c34d9d26d63d04da3ff0000000000000 + c362cd5790d5ac3e436f22b72a8c2cef + c35a9e1b631dfb223ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c36efa5444593196c36a5c8affd386c7 - 3ff0000000000000c34f6deb3174c84c - 0000000000000000c36f3751423d2c10 + c34d9d26d63d04da3ff0000000000000 + c362cd5790d5ac3e436f22b72a8c2cef + c35a9e1b631dfb223ff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - fff0000000000000fff0000000000000 - 43629df8a23a2937bff0000000000000 - 8000000000000000c33e041fe7638bf6 + 800000000003cc7b8000000000000000 + c3410b5185b11616000000000003cc7b + 4361830e83678ccabff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - fff0000000000000fff0000000000000 - 43629df8a23a2937bff0000000000000 - 8000000000000000c33e041fe7638bf6 + 800000000003cc7b8000000000000000 + c3410b5185b11616000000000003cc7b + 4361830e83678ccabff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - fff0000000000000000000000003cc7b - 80000000000000007ff8000000000000 - 4361b9e6239f518c4348e661a5edcba0 + 435d18c7d69ff1bdc34603b3d7f06b99 + c35d38c65d3728f44312f5cf67a5c134 + c367e9cb7b13c887fff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - fff0000000000000000000000003cc7b - 80000000000000007ff8000000000000 - 4361b9e6239f518c4348e661a5edcba0 - aaaaaaaaaaaaaaaa0000000030000000 + 435d18c7d69ff1bdc34603b3d7f06b99 + c35d38c65d3728f44312f5cf67a5c134 + c367e9cb7b13c887fff0000000000000 + aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 7ff0000000000000fff8000000000000 - 3ff0000000000000fff8000000000000 - 43620347e18a5e2dc35d559a0d3cb185 + fff0000000000000c34df8dee813be60 + c36802288faf37e10000000000000000 + 436b38aae15178dbc3439bddc2b28ef8 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 7ff0000000000000fff8000000000000 - 3ff0000000000000fff8000000000000 - 43620347e18a5e2dc35d559a0d3cb185 - aaaaaaaaaaaaaaaa0000000030000000 + fff0000000000000c34df8dee813be60 + c36802288faf37e10000000000000000 + 436b38aae15178dbc3439bddc2b28ef8 + aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 435245b3490f5ba2c36a09c9796b5033 - 000000000003cc7bc361276d0bb04c5a - 4366cd7fc10405618000000000000000 + 3ff0000000000000c3621d345432a800 + c366185c2afb22bcbff0000000000000 + 7ff800000000000043609de95e8aaa4b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 435245b3490f5ba2c36a09c9796b5033 - 000000000003cc7bc361276d0bb04c5a - 4366cd7fc10405618000000000000000 + 3ff0000000000000c3621d345432a800 + c366185c2afb22bcbff0000000000000 + 7ff800000000000043609de95e8aaa4b aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 000000000003cc7bc3397ae9fda7e5ed - 7ff0000000000000c3682e601bab2192 - c34d072a0e368462432a8757b445b34c + 4356a66836b27ecd436380665573f643 + 4355d0162b180e30bff0000000000000 + 4365e290126554f3c3634e54ba2add18 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 000000000003cc7bc3397ae9fda7e5ed - 7ff0000000000000c3682e601bab2192 - c34d072a0e368462432a8757b445b34c + 4356a66836b27ecd436380665573f643 + 4355d0162b180e30bff0000000000000 + 4365e290126554f3c3634e54ba2add18 aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - c333c2f2bfcae40d4362a89a2c4453b9 - c369b53c8103aa5b4363626df444f6fd - fff0000000000000c35302df99896e32 + fff8000000000000c36842d0e8c4fa7f + 3ff0000000000000800000000003cc7b + fff0000000000000c36a9b7793b75f17 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c333c2f2bfcae40d4362a89a2c4453b9 - c369b53c8103aa5b4363626df444f6fd - fff0000000000000c35302df99896e32 + fff8000000000000c36842d0e8c4fa7f + 3ff0000000000000800000000003cc7b + fff0000000000000c36a9b7793b75f17 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 433e098bdda533b50000000000000000 - 7ff00000000000000000000000000000 - c32e9d0f0e5cdc14c3633593df65900e + 435c1ead8907bb7a8000000000000000 + fff800000000000043696c814d1004cc + c36641a5beef15a2800000000003cc7b aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 433e098bdda533b50000000000000000 - 7ff00000000000000000000000000000 - c32e9d0f0e5cdc14c3633593df65900e - aaaaaaaaaaaaaaaa0000000060000000 + 435c1ead8907bb7a8000000000000000 + fff800000000000043696c814d1004cc + c36641a5beef15a2800000000003cc7b + aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 800000000003cc7b8000000000000000 - 7ff0000000000000bff0000000000000 - 436aa1dd03f611e5c36e74e08e676281 + fff8000000000000436d1b10091c65d5 + c361bb739ffbd362bff0000000000000 + 0000000000000000c343415341ffa79a aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 800000000003cc7b8000000000000000 - 7ff0000000000000bff0000000000000 - 436aa1dd03f611e5c36e74e08e676281 + fff8000000000000436d1b10091c65d5 + c361bb739ffbd362bff0000000000000 + 0000000000000000c343415341ffa79a aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 436f46d1223347847ff0000000000000 - 4365fc9c1cb64ff98000000000000000 - fff0000000000000431a38eb76ac105c + 800000000003cc7bfff8000000000000 + c3614cdb0b0a8aa6c34c36b87138e3d0 + c3426a45557321a07ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 436f46d1223347847ff0000000000000 - 4365fc9c1cb64ff98000000000000000 - fff0000000000000431a38eb76ac105c - aaaaaaaaaaaaaaaa0000000020000000 + 800000000003cc7bfff8000000000000 + c3614cdb0b0a8aa6c34c36b87138e3d0 + c3426a45557321a07ff0000000000000 + aaaaaaaaaaaaaaaa0000000030000000 FCCMP_D_D_0xF_EQ before - 0000000000000000fff8000000000000 - c362ff8eb1bcde7c7ff8000000000000 - fff8000000000000c35b4ce8ee4c5516 + 7ff8000000000000800000000003cc7b + c3407c8d0119fc1043427b30cd7c9440 + 000000000003cc7b434964bfb5d2f06a aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 0000000000000000fff8000000000000 - c362ff8eb1bcde7c7ff8000000000000 - fff8000000000000c35b4ce8ee4c5516 - aaaaaaaaaaaaaaaa0000000030000000 + 7ff8000000000000800000000003cc7b + c3407c8d0119fc1043427b30cd7c9440 + 000000000003cc7b434964bfb5d2f06a + aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 7ff8000000000000800000000003cc7b - c34d791904e5b806bff0000000000000 - fff8000000000000fff0000000000000 + fff00000000000004361cc1d5adc3d44 + bff0000000000000c36fd66449556192 + 000000000003cc7bbff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 7ff8000000000000800000000003cc7b - c34d791904e5b806bff0000000000000 - fff8000000000000fff0000000000000 + fff00000000000004361cc1d5adc3d44 + bff0000000000000c36fd66449556192 + 000000000003cc7bbff0000000000000 aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 000000000003cc7b7ff8000000000000 - fff0000000000000800000000003cc7b - 3ff0000000000000c3674b8698db41ed + fff80000000000003ff0000000000000 + c3487cebf04c86043ff0000000000000 + 4345fe6df5545a603ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 000000000003cc7b7ff8000000000000 - fff0000000000000800000000003cc7b - 3ff0000000000000c3674b8698db41ed - aaaaaaaaaaaaaaaa0000000030000000 + fff80000000000003ff0000000000000 + c3487cebf04c86043ff0000000000000 + 4345fe6df5545a603ff0000000000000 + aaaaaaaaaaaaaaaa0000000060000000 FCCMP_D_D_0xF_EQ before - 800000000003cc7bfff0000000000000 - c3534299528703b0c364904574ae4951 - bff0000000000000436dab62784f38e3 + 43592259fe7c931e436c51f631294fd2 + c34422f28ffd61507ff0000000000000 + 4362db9b6b258c8ffff8000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 800000000003cc7bfff0000000000000 - c3534299528703b0c364904574ae4951 - bff0000000000000436dab62784f38e3 + 43592259fe7c931e436c51f631294fd2 + c34422f28ffd61507ff0000000000000 + 4362db9b6b258c8ffff8000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 432fd591bcbc45e4c351583434343eff - c342ffe0d59e7e28bff0000000000000 - 4368f7f97cff66574365647dcd3d965d + 7ff0000000000000436719aa10d41b56 + 435b00336a6b0bbc434513b7de4ebe1e + 436546f0a4fbfb7bc36cf274b1b24c4e aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 432fd591bcbc45e4c351583434343eff - c342ffe0d59e7e28bff0000000000000 - 4368f7f97cff66574365647dcd3d965d - aaaaaaaaaaaaaaaa0000000080000000 + 7ff0000000000000436719aa10d41b56 + 435b00336a6b0bbc434513b7de4ebe1e + 436546f0a4fbfb7bc36cf274b1b24c4e + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 435f419bbe48ba3ec36f7d4afd9fefa5 - 3ff0000000000000435c3cee8d4c50fe - 800000000003cc7bc36c9cf8ec26995d + fff0000000000000fff8000000000000 + c338e75f9ebc84bb434fc8b00aba36e2 + c3685f1be309198ac35d9adc26eb23fd aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 435f419bbe48ba3ec36f7d4afd9fefa5 - 3ff0000000000000435c3cee8d4c50fe - 800000000003cc7bc36c9cf8ec26995d - aaaaaaaaaaaaaaaa0000000080000000 + fff0000000000000fff8000000000000 + c338e75f9ebc84bb434fc8b00aba36e2 + c3685f1be309198ac35d9adc26eb23fd + aaaaaaaaaaaaaaaa0000000030000000 FCCMP_D_D_0xF_EQ before - c3179e60110097b4000000000003cc7b - fff80000000000000000000000000000 - fff8000000000000fff0000000000000 + fff0000000000000fff8000000000000 + c35dd14e0aaa3b5e434bbf98144c9f18 + 7ff8000000000000436139d46f6093e0 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c3179e60110097b4000000000003cc7b - fff80000000000000000000000000000 - fff8000000000000fff0000000000000 + fff0000000000000fff8000000000000 + c35dd14e0aaa3b5e434bbf98144c9f18 + 7ff8000000000000436139d46f6093e0 + aaaaaaaaaaaaaaaa0000000030000000 + +FCCMP_D_D_0xF_EQ before + 000000000003cc7b433693b9d46e1b58 + 3ff0000000000000000000000003cc7b + c3565880daae390543604e93c138a014 + aaaaaaaaaaaaaaaa5555555555555555 +FCCMP_D_D_0xF_EQ after + 000000000003cc7b433693b9d46e1b58 + 3ff0000000000000000000000003cc7b + c3565880daae390543604e93c138a014 aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 436458f558b7af6b4355e7f7963d5f6d - 3ff0000000000000fff8000000000000 - c35ccb7bc9f6992cc33101fe659bca45 + 436ac425eeaba1fa434dbc2ea94545be + 8000000000000000800000000003cc7b + c3365310140e4eaa3ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 436458f558b7af6b4355e7f7963d5f6d - 3ff0000000000000fff8000000000000 - c35ccb7bc9f6992cc33101fe659bca45 - aaaaaaaaaaaaaaaa0000000030000000 + 436ac425eeaba1fa434dbc2ea94545be + 8000000000000000800000000003cc7b + c3365310140e4eaa3ff0000000000000 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 000000000003cc7bfff0000000000000 - 4365ad7f6022d0ee436bf9ee1312ab7d - 43507039d0ca50b8c3611ea121035147 + fff8000000000000c36406e818bd5d1a + c32ae200e9d0fca83ff0000000000000 + c35ebe0563038aa53ff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 000000000003cc7bfff0000000000000 - 4365ad7f6022d0ee436bf9ee1312ab7d - 43507039d0ca50b8c3611ea121035147 + fff8000000000000c36406e818bd5d1a + c32ae200e9d0fca83ff0000000000000 + c35ebe0563038aa53ff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 4361cfba45214e64c35a2cd49f5ad2c3 - c36e261db6a5fd9a000000000003cc7b - 43637c91388d70703ff0000000000000 + 436c4a18597d8f827ff8000000000000 + 7ff0000000000000c3698b08b7981705 + fff0000000000000435e5774379500f7 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 4361cfba45214e64c35a2cd49f5ad2c3 - c36e261db6a5fd9a000000000003cc7b - 43637c91388d70703ff0000000000000 - aaaaaaaaaaaaaaaa0000000080000000 + 436c4a18597d8f827ff8000000000000 + 7ff0000000000000c3698b08b7981705 + fff0000000000000435e5774379500f7 + aaaaaaaaaaaaaaaa0000000030000000 FCCMP_D_D_0xF_EQ before - fff0000000000000c363189c56fd016f - c366e397360d179f4360613c471403f2 - 4338e24489d8314e436972eadfcaa7b9 + 433deea27334b5c5c35af09a81fcf4bf + 43570bc3929754d0bff0000000000000 + c346a103d97e511a435599418bff0f0c aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - fff0000000000000c363189c56fd016f - c366e397360d179f4360613c471403f2 - 4338e24489d8314e436972eadfcaa7b9 + 433deea27334b5c5c35af09a81fcf4bf + 43570bc3929754d0bff0000000000000 + c346a103d97e511a435599418bff0f0c aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 7ff00000000000008000000000000000 - 3ff00000000000008000000000000000 - 436f22b72a8c2cefc34d9d26d63d04da + 43510da2c09d9bda000000000003cc7b + bff0000000000000c36ff1d905558a8a + fff0000000000000c34aa1bb5c2b1cd8 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 7ff00000000000008000000000000000 - 3ff00000000000008000000000000000 - 436f22b72a8c2cefc34d9d26d63d04da - aaaaaaaaaaaaaaaa0000000060000000 + 43510da2c09d9bda000000000003cc7b + bff0000000000000c36ff1d905558a8a + fff0000000000000c34aa1bb5c2b1cd8 + aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - 3ff0000000000000c362cd5790d5ac3e - 8000000000000000c35a9e1b631dfb22 - 000000000003cc7b800000000003cc7b + c360ac42adaeac1f4358de955102e256 + c32e6b77d6773b3ac36e4f6b8d0c826d + 7ff8000000000000c35d1817a4fbfaa5 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 3ff0000000000000c362cd5790d5ac3e - 8000000000000000c35a9e1b631dfb22 - 000000000003cc7b800000000003cc7b + c360ac42adaeac1f4358de955102e256 + c32e6b77d6773b3ac36e4f6b8d0c826d + 7ff8000000000000c35d1817a4fbfaa5 + aaaaaaaaaaaaaaaa0000000020000000 + +FCCMP_D_D_0xF_EQ before + c35bcc915158f9c0c36c8524434dd320 + c351194437ee14560000000000000000 + fff0000000000000436f90367af4edb0 + aaaaaaaaaaaaaaaa5555555555555555 +FCCMP_D_D_0xF_EQ after + c35bcc915158f9c0c36c8524434dd320 + c351194437ee14560000000000000000 + fff0000000000000436f90367af4edb0 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - bff0000000000000c3410b5185b11616 - c34603b3d7f06b994361830e83678cca - 4312f5cf67a5c134435d18c7d69ff1bd + 430ce91b9d8f6dd0fff0000000000000 + 3ff00000000000008000000000000000 + c36967c0794753cdc353168c43fecff1 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - bff0000000000000c3410b5185b11616 - c34603b3d7f06b994361830e83678cca - 4312f5cf67a5c134435d18c7d69ff1bd + 430ce91b9d8f6dd0fff0000000000000 + 3ff00000000000008000000000000000 + c36967c0794753cdc353168c43fecff1 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - fff0000000000000c35d38c65d3728f4 - c34df8dee813be60c367e9cb7b13c887 - 0000000000000000fff0000000000000 + 7ff800000000000043672911b44c4935 + 800000000003cc7b4364f9c4258fc194 + 436a038a7c5650a24357cb6f5116b731 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - fff0000000000000c35d38c65d3728f4 - c34df8dee813be60c367e9cb7b13c887 - 0000000000000000fff0000000000000 + 7ff800000000000043672911b44c4935 + 800000000003cc7b4364f9c4258fc194 + 436a038a7c5650a24357cb6f5116b731 aaaaaaaaaaaaaaaa0000000020000000 FCCMP_D_D_0xF_EQ before - c3439bddc2b28ef8c36802288faf37e1 - c3621d345432a800436b38aae15178db - bff00000000000003ff0000000000000 + c3614ec076dd3a89c3671224817bb1d3 + 000000000000000043524fa35271ade0 + fff0000000000000fff0000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - c3439bddc2b28ef8c36802288faf37e1 - c3621d345432a800436b38aae15178db - bff00000000000003ff0000000000000 + c3614ec076dd3a89c3671224817bb1d3 + 000000000000000043524fa35271ade0 + fff0000000000000fff0000000000000 aaaaaaaaaaaaaaaa0000000080000000 FCCMP_D_D_0xF_EQ before - 43609de95e8aaa4bc366185c2afb22bc - 436380665573f6437ff8000000000000 - bff00000000000004356a66836b27ecd + 000000000003cc7b800000000003cc7b + 000000000003cc7b436b871167241021 + 7ff00000000000000000000000000000 aaaaaaaaaaaaaaaa5555555555555555 FCCMP_D_D_0xF_EQ after - 43609de95e8aaa4bc366185c2afb22bc - 436380665573f6437ff8000000000000 - bff00000000000004356a66836b27ecd - aaaaaaaaaaaaaaaa0000000030000000 + 000000000003cc7b800000000003cc7b + 000000000003cc7b436b871167241021 + 7ff00000000000000000... [truncated message content] |
From: Paul F. <pa...@so...> - 2024-05-18 13:39:58
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=5050749df0c2be3ad4331a2d33359ff1d89c72f4 commit 5050749df0c2be3ad4331a2d33359ff1d89c72f4 Author: Paul Floyd <pj...@wa...> Date: Sat May 18 15:39:34 2024 +0200 README_DEVELOPERS: better to generate stdout expecteds directly from test exes Diff: --- README_DEVELOPERS | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README_DEVELOPERS b/README_DEVELOPERS index a13b35574f..71581bd865 100644 --- a/README_DEVELOPERS +++ b/README_DEVELOPERS @@ -141,7 +141,13 @@ The easiest way to generate the expected files is to run the test. Create empty files with touch (otherwise the test won't run) then run the test from the top directory using perl and vg_regtest script (as in the "Running the regression tests" section. Then copy "tool/tests/newtest.stderr.out" to -"tool/tests/newtest.stderr.exp". Do the same for the .stderr.exp file. +"tool/tests/newtest.stderr.exp". It is better to generate the .stdout.exp +file directly from the testcase. You can do that by redirecting stdout to +the expected file, for instance (in the test directory) + ./newtest arg1 arg2 > newtest.stdout.exp +This is not always possible - sometimes there are tests that depend on the use +of client requests or have imperfect emulation of opcodes. +Make sure that the test runs and passes. The last file to change is .gitignore in the top directory. Add a new entry, for example "/tool/tests/newtest". |
From: Paul F. <pa...@so...> - 2024-05-15 19:41:37
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=a94cee615a1cf98ad91ccb092a24ead60ba90d29 commit a94cee615a1cf98ad91ccb092a24ead60ba90d29 Author: Paul Floyd <pj...@wa...> Date: Wed May 15 21:40:48 2024 +0200 README_DEVELOPERS: describe how to write regression tests. Diff: --- README_DEVELOPERS | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/README_DEVELOPERS b/README_DEVELOPERS index eeb594508a..a13b35574f 100644 --- a/README_DEVELOPERS +++ b/README_DEVELOPERS @@ -87,6 +87,72 @@ compare them on all the performance tests: perl perf/vg_perf --vg=../trunk1 --vg=../trunk2 perf/ +Writing regression tests +~~~~~~~~~~~~~~~~~~~~~~~~ + +Each tool has a tests directory containing regression tests. There is also +the gdbserver_tests directory at the top level. Test directories may have +architecture, OS and and architecture-OS sub-directories for tests that are +specific to one architecture, OS or both. + +Once you have written a C or C++ executable that performs the required +tests you will have to modify and create several files. The new files that +will need adding are +(a) a .vgtest file, which controls the test +(b) a .stderr.exp file, which is the golden reference for any Valgrind output + Note that even if Valgrind doesn't produce any output you will need to + create an empty .stderr.exp file. +(c) [optional] a .stdout.exp file, the golden reference for any output from the + test executable +(d) [optional] filter files (see the test directories for examples). + +Quite often the output will depend on the platform the test is run on. +Getting the tests to be 'portable' can require filtering or adding multiple +.stderr.exp reference files. + +If the test only runs under certain conditions like the availability of functions +in libc or C++ standard versions you will need to modify configure.ac in the +top level directory. See AC_CHECK_FUNCS and the various blocks starting with +AC_MSG_CHECKING. + +In the test directory, modify Makefile.am. Add to EXTRA_DIST the .vgtest, +A .stderr.exp and .stderr.out files. Add any filters to dist_noinst_SCRIPTS. +Add the test executable name to check_PROGRAMS. Try to respect the +formatting and alphabetical ordering of the Makefile.am, For simple C files that is +sufficient. If you needed to add a feature test to configure.ac then you should +use the same condition to add the executable name to check_PROGRAMS. If the +executable uses C++ you need to add exename_SOURCES. If the executable needs +special compilation or link options, use exename_CFLAGS, exename_CXXFLAGS, +exename_LDFLAGS or exename_LDADD. Finally in Makefile.am it's nice not to +have any warnings, even if they were done on purpose. See configure.ac +and various Makefile.am files for examples of using FLAG_W_*. + +The vgtest file contains the instructions for running the test. Typically +it will contain (with examples in quotes) +(a) the name of the test executable: "prog: exename" +(b) arguments for the test executable: "args: hello world" +(c) arguments for the Valgrind tool: "vgopts: -q" +(d) [optional] a check for prerequisites: "prereq: ! ../../tests/os_test darwin" +(e) [optional] a filter: "stderr_filter: filter_fdleak" + +See tests/vg_regtest for a full description of all possible vgtest directives. + +The easiest way to generate the expected files is to run the test. Create empty +files with touch (otherwise the test won't run) then run the test from the +top directory using perl and vg_regtest script (as in the "Running the +regression tests" section. Then copy "tool/tests/newtest.stderr.out" to +"tool/tests/newtest.stderr.exp". Do the same for the .stderr.exp file. + +The last file to change is .gitignore in the top directory. Add a new entry, +for example "/tool/tests/newtest". + +Check for mistakes in Makefile.am. In the top directory run + make post-regtest-checks + +You should only see + ...checking makefile consistency + ...checking header files and include directives +and no messages related to EXTRA_DIST. Commit access and try branches ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
From: Andreas A. <ar...@so...> - 2024-05-15 14:35:13
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=fef1d8f01d47ee0398d7b28eda4c6707ce7f4332 commit fef1d8f01d47ee0398d7b28eda4c6707ce7f4332 Author: Andreas Arnez <ar...@li...> Date: Wed May 15 14:32:42 2024 +0200 s390x: Support the deflate-conversion facility (DFLTCC) So far the DFLTCC (deflate conversion call) instruction is not supported by Valgrind. Similar to PRNO and NNPA, it is a "complex" instruction whose memory effects cannot be adequately expressed with a dirty helper. Add support for the DFLTCC instruction using the new "extension" mechanism and reflect this accordingly in the supported facilities and HWCAPs. Diff: --- NEWS | 3 + VEX/priv/guest_s390_helpers.c | 2 +- VEX/priv/guest_s390_toIR.c | 16 ++- VEX/priv/host_s390_defs.h | 2 + VEX/priv/main_main.c | 3 +- VEX/pub/libvex.h | 4 +- VEX/pub/libvex_s390x_common.h | 1 + coregrind/m_extension/extension-s390x.c | 168 ++++++++++++++++++++++++++++++++ coregrind/m_initimg/initimg-linux.c | 1 + coregrind/m_machine.c | 1 + docs/internals/s390-opcodes.csv | 2 +- include/vki/vki-s390x-linux.h | 1 + 12 files changed, 199 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 9dbb03216c..f6ed179952 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,9 @@ AMD64/macOS 10.13 and nanoMIPS/Linux. * ================== PLATFORM CHANGES ================= +* S390X added support for the DFLTCC instruction provided by the + deflate-conversion facility (z15/arch13). + * ==================== TOOL CHANGES =================== * ==================== FIXED BUGS ==================== diff --git a/VEX/priv/guest_s390_helpers.c b/VEX/priv/guest_s390_helpers.c index bb5e9c9396..9642a013e6 100644 --- a/VEX/priv/guest_s390_helpers.c +++ b/VEX/priv/guest_s390_helpers.c @@ -385,7 +385,7 @@ s390x_dirtyhelper_STFLE(VexGuestS390XState *guest_state, ULong *addr) /* 146: MSA8, not supported */ | s390_stfle_range(147, 149) /* 150: unassigned */ - /* 151: DEFLATE-conversion, not supported */ + | s390_stfle_range(151, 151) /* 152: vector packed decimal enhancement, not supported */ /* 153: unassigned */ /* 154: unassigned */ diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index 7e836faf3e..0da0b941bb 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -17105,6 +17105,19 @@ s390_irgen_PPNO(UChar r1, UChar r2) return "ppno"; } +static const HChar * +s390_irgen_DFLTCC(UChar r3, UChar r1, UChar r2) +{ + s390_insn_assert("dfltcc", s390_host_has_dflt); + + /* Check for obvious specification exceptions */ + s390_insn_assert("dfltcc", r1 % 2 == 0 && r1 != 0 && + r2 % 2 == 0 && r2 != 0 && r3 >= 2); + + extension(S390_EXT_DFLT, r1 | (r2 << 4) | (r3 << 8)); + return "dfltcc"; +} + enum s390_VStrX { s390_VStrX_VSTRC, s390_VStrX_VFAE, @@ -20452,7 +20465,8 @@ s390_decode_4byte_and_irgen(const UChar *bytes) case 0xb931: s390_format_RRE_RR(s390_irgen_CLGFR, RRE_r1(ovl), RRE_r2(ovl)); goto ok; case 0xb938: /* SORTL */ goto unimplemented; - case 0xb939: /* DFLTCC */ goto unimplemented; + case 0xb939: s390_format_RRF_R0RR2(s390_irgen_DFLTCC, RRF4_r3(ovl), + RRF4_r1(ovl), RRF4_r2(ovl)); goto ok; case 0xb93a: /* KDSA */ goto unimplemented; case 0xb93b: s390_format_E(s390_irgen_NNPA); goto ok; case 0xb93c: s390_format_RRE_RR(s390_irgen_PPNO, RRE_r1(ovl), diff --git a/VEX/priv/host_s390_defs.h b/VEX/priv/host_s390_defs.h index 912db61041..9d844beeed 100644 --- a/VEX/priv/host_s390_defs.h +++ b/VEX/priv/host_s390_defs.h @@ -945,6 +945,8 @@ extern UInt s390_host_hwcaps; (s390_host_hwcaps & (VEX_HWCAPS_S390X_VXE)) #define s390_host_has_nnpa \ (s390_host_hwcaps & (VEX_HWCAPS_S390X_NNPA)) +#define s390_host_has_dflt \ + (s390_host_hwcaps & (VEX_HWCAPS_S390X_DFLT)) #endif /* ndef __VEX_HOST_S390_DEFS_H */ /*---------------------------------------------------------------*/ diff --git a/VEX/priv/main_main.c b/VEX/priv/main_main.c index 4d0551c281..e6c788d0cb 100644 --- a/VEX/priv/main_main.c +++ b/VEX/priv/main_main.c @@ -1824,7 +1824,8 @@ static const HChar* show_hwcaps_s390x ( UInt hwcaps ) { VEX_HWCAPS_S390X_MSA5, "msa5" }, { VEX_HWCAPS_S390X_MI2, "mi2" }, { VEX_HWCAPS_S390X_LSC2, "lsc2" }, - { VEX_HWCAPS_S390X_LSC2, "vxe" }, + { VEX_HWCAPS_S390X_VXE, "vxe" }, + { VEX_HWCAPS_S390X_DFLT, "dflt" }, }; /* Allocate a large enough buffer */ static HChar buf[sizeof prefix + diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h index 544cf03489..1681077343 100644 --- a/VEX/pub/libvex.h +++ b/VEX/pub/libvex.h @@ -178,6 +178,7 @@ typedef #define VEX_HWCAPS_S390X_LSC2 (1<<21) /* Conditional load/store facility2 */ #define VEX_HWCAPS_S390X_VXE (1<<22) /* Vector-enhancements facility */ #define VEX_HWCAPS_S390X_NNPA (1<<23) /* NNPA facility */ +#define VEX_HWCAPS_S390X_DFLT (1<<24) /* Deflate-conversion facility */ /* Special value representing all available s390x hwcaps */ #define VEX_HWCAPS_S390X_ALL (VEX_HWCAPS_S390X_LDISP | \ @@ -197,7 +198,8 @@ typedef VEX_HWCAPS_S390X_MI2 | \ VEX_HWCAPS_S390X_LSC2 | \ VEX_HWCAPS_S390X_VXE | \ - VEX_HWCAPS_S390X_NNPA) + VEX_HWCAPS_S390X_NNPA | \ + VEX_HWCAPS_S390X_DFLT) #define VEX_HWCAPS_S390X(x) ((x) & ~VEX_S390X_MODEL_MASK) #define VEX_S390X_MODEL(x) ((x) & VEX_S390X_MODEL_MASK) diff --git a/VEX/pub/libvex_s390x_common.h b/VEX/pub/libvex_s390x_common.h index 4ed848c5c1..9b1168a4e6 100644 --- a/VEX/pub/libvex_s390x_common.h +++ b/VEX/pub/libvex_s390x_common.h @@ -118,6 +118,7 @@ #define S390_EXT_PRNO 1 #define S390_EXT_NNPA 2 +#define S390_EXT_DFLT 3 /*--------------------------------------------------------------*/ /*--- Miscellaneous ---*/ diff --git a/coregrind/m_extension/extension-s390x.c b/coregrind/m_extension/extension-s390x.c index 735406e6e4..95116587c5 100644 --- a/coregrind/m_extension/extension-s390x.c +++ b/coregrind/m_extension/extension-s390x.c @@ -585,6 +585,172 @@ static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant) return ExtErr_OK; } +/*---------------------------------------------------------------*/ +/*--- DFLTCC (deflate conversion call) ---*/ +/*---------------------------------------------------------------*/ + +static Int do_DFLTCC_insn(UChar func, + ULong parms, + ULong* addr1, + ULong* len1, + ULong* addr2, + ULong* len2, + ULong addr3) +{ + register UChar reg0 asm("0") = func; + register void* reg1 asm("1") = (void*)parms; + union reg_pair op1 = {{*addr1, *len1}}; + union reg_pair op2 = {{*addr2, *len2}}; + Int cc; + + asm volatile(".insn rrf, 0xb9390000, %[op1], %[op2], %[op3], 0\n" + "ipm %[cc]\n" + "srl %[cc], 28\n" + : [cc] "=d"(cc), [op1] "+a"(op1.pair), [op2] "+a"(op2.pair) + : "d"(reg0), "d"(reg1), [op3] "d"(addr3) + : "cc", "memory"); + *addr1 = op1.a; + *len1 = op1.b; + *addr2 = op2.a; + *len2 = op2.b; + return cc; +} + +struct s390_DFLTCC_parms0 { + UShort pbvn; + UChar mvn; + UChar ribm[3]; + UShort reserved0 : 15; + UShort cf : 1; + ULong reserved1; + UShort nt : 1; + UShort reserved2 : 1; + UShort cvt : 1; + UShort reserved3 : 1; + UShort htt : 1; + UShort bcf : 1; + UShort bcc : 1; + UShort bhf : 1; + UShort reserved4 : 1; + UShort reserved5 : 1; + UShort dhtgc : 1; + UShort reserved6 : 5; + UChar reserved7 : 5; + UChar sbb : 3; + UChar oesc : 8; + UShort reserved8 : 12; + UShort ifs : 4; + UShort ifl; + UChar reserved9[20]; + UShort hl; + UShort reserved10 : 1; + UShort ho : 15; + UChar data[1488]; +}; + +/* DFLTCC functions that we support if the hardware does. */ +static const ULong DFLTCC_functions[] = { + (S390_SETBIT(0) // Query + | S390_SETBIT(1) // GDHT + | S390_SETBIT(2) // CMPR + | S390_SETBIT(4)), // XPND +}; + +static UWord do_extension_DFLTCC(ThreadState* tst, ULong variant) +{ + enum { circ_hist_len = 32768 }; + UChar r1 = variant & 0xf; + UChar r2 = (variant >> 4) & 0xf; + UChar r3 = (variant >> 8) & 0xf; + UChar func = READ_FUNCTION_CODE(tst, "DFLTCC"); + UChar fc = func & 0x7f; + Bool hbt = (func & 128) != 0; + ULong parms = READ_GPR(tst, "DFLTCC(r1)", 1); + ULong parms_len; + Int cc = 0; + ULong orig_addr1 = 0, orig_len1 = 0; + ULong addr1 = 0, len1 = 0, addr2 = 0, len2 = 0, addr3 = 0; + Bool do_compress = 0; + + switch (fc) { + case 0: // Query + parms_len = 32; + PRE_MEM_WRITE(tst, "DFLTCC(parms)", parms, parms_len); + cc = do_DFLTCC_insn(func, parms, &addr1, &len1, &addr2, &len2, addr3); + s390_filter_functions((ULong*)parms, 16, DFLTCC_functions, + sizeof(DFLTCC_functions)); + POST_MEM_WRITE(tst, parms, parms_len); + break; + case 1: // GDHT + parms_len = 384; + PRE_MEM_READ(tst, "DFLTCC(parms)", parms, parms_len); + PRE_MEM_WRITE(tst, "DFLTCC(parms)", parms, parms_len); + addr2 = READ_GPR(tst, "DFLTCC(op2_addr)", r2); + len2 = READ_GPR(tst, "DFLTCC(op2_len)", r2 + 1); + if (len2 > 32768) + len2 = 32768; + PRE_MEM_READ(tst, "DFLTCC(parms)", addr2, len2); + cc = do_DFLTCC_insn(func, parms, &addr1, &len1, &addr2, &len2, addr3); + POST_MEM_WRITE(tst, parms, parms_len); + break; + case 2: // CMPR + do_compress = 1; + /* fallthrough */ + case 4: // XPND + { + struct s390_DFLTCC_parms0* p; + parms_len = 1536; + PRE_MEM_READ(tst, "DFLTCC(parms)", parms, parms_len); + p = (void*)parms; + addr1 = orig_addr1 = READ_GPR(tst, "DFLTCC(op1_addr)", r1); + len1 = orig_len1 = READ_GPR(tst, "DFLTCC(op1_len)", r1 + 1); + PRE_MEM_WRITE(tst, "DFLTCC(op1)", addr1, len1); + addr2 = READ_GPR(tst, "DFLTCC(op2_addr)", r2); + len2 = READ_GPR(tst, "DFLTCC(op2_len)", r2 + 1); + PRE_MEM_READ(tst, "DFLTCC(op2)", addr2, len2); + addr3 = READ_GPR(tst, "DFLTCC(op3)", r3); + if (hbt) { + PRE_MEM_WRITE(tst, "DFLTCC(op3)", addr3, circ_hist_len); + } + if (!p->nt) { + if (hbt) { + ULong hl1 = circ_hist_len - p->ho; + if (hl1 >= p->hl) { + hl1 = p->hl; + } else { + PRE_MEM_READ(tst, "DFLTCC(op3)", addr3, p->hl - hl1); + } + PRE_MEM_READ(tst, "DFLTCC(op3)", addr3 + p->ho, hl1); + } else { + PRE_MEM_READ(tst, "DFLTCC(op2.hist)", addr2 - p->hl, p->hl); + } + } + cc = do_DFLTCC_insn(func, parms, &addr1, &len1, &addr2, &len2, addr3); + POST_MEM_WRITE(tst, parms, parms_len); + POST_MEM_WRITE(tst, orig_addr1, + orig_len1 - len1 + (do_compress && p->sbb ? 1 : 0)); + if (hbt) { + ULong hl1 = circ_hist_len - p->ho; + if (hl1 >= p->hl) { + hl1 = p->hl; + } else { + POST_MEM_WRITE(tst, addr3, p->hl - hl1); + } + POST_MEM_WRITE(tst, addr3 + p->ho, hl1); + } + WRITE_GPR(tst, r1, addr1); + WRITE_GPR(tst, r1 + 1, len1); + WRITE_GPR(tst, r2, addr2); + WRITE_GPR(tst, r2 + 1, len2); + break; + } + default: + return INSN_ERR("DFLTCC: unknown function code\n"); + } + WRITE_CC(tst, cc); + return ExtErr_OK; +} + /*---------------------------------------------------------------*/ /*--- Main function: select and call appropriate extension ---*/ /*---------------------------------------------------------------*/ @@ -600,6 +766,8 @@ enum ExtensionError ML_(do_client_extension)(ThreadState* tst) return do_extension_PRNO(tst, variant); case S390_EXT_NNPA: return do_extension_NNPA(tst, variant); + case S390_EXT_DFLT: + return do_extension_DFLTCC(tst, variant); default: VG_(core_panic)("unknown extension ID"); } diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index c92c3cfb26..5f35637d75 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -722,6 +722,7 @@ Addr setup_client_stack( void* init_sp, | VKI_HWCAP_S390_VXRS | VKI_HWCAP_S390_VXRS_EXT | VKI_HWCAP_S390_VXRS_EXT2 + | VKI_HWCAP_S390_DFLT | VKI_HWCAP_S390_NNPA); } # elif defined(VGP_arm64_linux) diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c index 36db3ab9cf..234efb312d 100644 --- a/coregrind/m_machine.c +++ b/coregrind/m_machine.c @@ -1597,6 +1597,7 @@ Bool VG_(machine_get_hwcaps)( void ) { False, S390_FAC_MI2, VEX_HWCAPS_S390X_MI2, "MI2" }, { False, S390_FAC_LSC2, VEX_HWCAPS_S390X_LSC2, "LSC2" }, { False, S390_FAC_VXE, VEX_HWCAPS_S390X_VXE, "VXE" }, + { False, S390_FAC_DFLT, VEX_HWCAPS_S390X_DFLT, "DFLT" }, { False, S390_FAC_NNPA, VEX_HWCAPS_S390X_NNPA, "NNPA" }, }; diff --git a/docs/internals/s390-opcodes.csv b/docs/internals/s390-opcodes.csv index a65ceea315..97eb66beea 100644 --- a/docs/internals/s390-opcodes.csv +++ b/docs/internals/s390-opcodes.csv @@ -1743,7 +1743,7 @@ wcfeb,"vector fp convert to fixed 32 bit",implemented,arch13 vclfp,"vector fp convert to logical",implemented,arch13 vclfeb,"vector fp convert to logical 32 bit",implemented,arch13 wclfeb,"vector fp convert to logical 32 bit",implemented,arch13 -dfltcc,"deflate conversion call","not implemented",arch13 +dfltcc,"deflate conversion call",implemented,arch13 sortl,"sort lists","not implemented",arch13 kdsa,"compute digital signature authentication","not implemented",arch13 vschp,"decimal scale and convert to hfp","not implemented",arch14 diff --git a/include/vki/vki-s390x-linux.h b/include/vki/vki-s390x-linux.h index 829382f7b2..726f068a0a 100644 --- a/include/vki/vki-s390x-linux.h +++ b/include/vki/vki-s390x-linux.h @@ -809,6 +809,7 @@ typedef vki_s390_regs vki_elf_gregset_t; #define VKI_HWCAP_S390_VXRS 2048 #define VKI_HWCAP_S390_VXRS_EXT 8192 #define VKI_HWCAP_S390_VXRS_EXT2 32768 +#define VKI_HWCAP_S390_DFLT (1<<18) #define VKI_HWCAP_S390_NNPA (1<<20) |