Bill, here is the same problem which I had with mine updated IPC patches.

odp-check says that there is no hash_main binary so test fails.

I think something like that is needed. But it does not help:

+++ b/test/validation/hash/Makefile.am
@@ -3,7 +3,7 @@ include ../Makefile.inc
 noinst_LTLIBRARIES = libtesthash.la
 libtesthash_la_SOURCES = hash.c

-bin_PROGRAMS = hash_main$(EXEEXT)
+test_PROGRAMS = hash_main$(EXEEXT)

CC Anders as autotools expert :)

Maxim.


On 12/04/2015 06:49, Bill Fischofer wrote:
Ping. This patch needs a review as it fixes critical bug https://bugs.linaro.org/show_bug.cgi?id=1930 that is breaking CI for api-next.

Thanks.

On Wed, Dec 2, 2015 at 3:56 PM, Bill Fischofer <bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>> wrote:

    Change the internal hash_name_and_kind() function to eliminate the use
    of architecture-specific hash instructions. This eliminates build
    issues
    surrounding ARM variants. Future optimizations will use the arch
    directory
    consistent with other ODP modules.

    Signed-off-by: Bill Fischofer <bill.fischo...@linaro.org
    <mailto:bill.fischo...@linaro.org>>
    ---
     platform/linux-generic/odp_name_table.c | 182
    +-------------------------------
     1 file changed, 1 insertion(+), 181 deletions(-)

    diff --git a/platform/linux-generic/odp_name_table.c
    b/platform/linux-generic/odp_name_table.c
    index 10a760e..610f034 100644
    --- a/platform/linux-generic/odp_name_table.c
    +++ b/platform/linux-generic/odp_name_table.c
    @@ -48,140 +48,6 @@

     #define SECONDARY_HASH_HISTO_PRINT  1

    - /* #define USE_AES */
    -
    -#if defined __x86_64__ || defined __i386__
    -
    -#ifdef USE_AES
    -
    -typedef long long int v2di __attribute__((vector_size(16)));
    -
    -static const v2di HASH_CONST1 = { 0x123456,  0xFEBCDA383   };
    -static const v2di HASH_CONST2 = { 0x493BA3F689, 0x102F5D73A8C };
    -
    -#define PLATFORM_HASH_STATE v2di
    -
    -#define PLATFORM_HASH32_INIT(hash_state, name_len)     \
    -       ({     \
    -               hash_state     = HASH_CONST1;    \
    -               hash_state[0] ^= name_len;     \
    -       })
    -
    -#define PLATFORM_HASH32(hash_state, name_word)        \
    -       ({        \
    -               v2di data;        \
    -       \
    -               data[0]    = name_word;       \
    -               data[1]    = name_word << 1;                   \
    -               hash_state = __builtin_ia32_aesenc128(hash_state,
    data); \
    -       })
    -
    -#define PLATFORM_HASH32_FINISH(hash_state, kind)             \
    -       ({             \
    -               uint64_t result;             \
    -               v2di     data;             \
    -            \
    -               data[0]    = name_kind;            \
    -               data[1]    = name_kind << 7;                   \
    -               hash_state = __builtin_ia32_aesenc128(hash_state,
    data); \
- hash_state = __builtin_ia32_aesenc128(hash_state, \
    -  HASH_CONST2);     \
- hash_state = __builtin_ia32_aesenc128(hash_state, \
    -  HASH_CONST1);     \
    -               result     = (uint64_t)hash_state[0] ^
    hash_state[1];   \
    -               result     = result ^ result >> 32;                  \
    -               (uint32_t)result;            \
    -       })
    -
    -#else
    -
    -#define PLATFORM_HASH_STATE uint64_t
    -
    -#define PLATFORM_HASH32_INIT(hash_state, name_len)    \
    -       ({                                            \
    -               hash_state  = (uint64_t)name_len;     \
    -               hash_state |= hash_state << 8; \
    -               hash_state |= hash_state << 16;  \
    -               hash_state |= hash_state << 32;        \
    -       })
    -
    -#define PLATFORM_HASH32(hash_state, name_word)     \
    -       ({     \
    -               uint64_t temp;     \
    -            \
- temp = ((uint64_t)name_word) * 0xFEFDFCF5; \
    -               hash_state  = hash_state * 0xFF;             \
    -               hash_state ^= temp ^ (uint64_t)name_word;            \
    -       })
    -
    -#define PLATFORM_HASH32_FINISH(hash_state, kind)     \
    -       ({     \
    -               hash_state ^= (((uint32_t)kind) << 13);         \
    -               hash_state  = hash_state * 0xFEFDFCF5;     \
    -               hash_state  = hash_state ^ hash_state >> 32;    \
    -               hash_state  = hash_state % 0xFEEDDCCBBAA1;     \
    -               hash_state  = hash_state ^ hash_state >> 32;    \
    -               (uint32_t)hash_state;    \
    -       })
    -
    -#endif
    -
    -#elif defined(__tile_gx__)
    -
    -#define PLATFORM_HASH_STATE  uint32_t
    -
    -#define PLATFORM_HASH32_INIT(hash_state, name_len)     \
    -       ({     \
    -               hash_state = 0xFEFDFCF5;            \
    -               hash_state = __insn_crc_32_32(hash_state,
    name_len);   \
    -       })
    -
    -#define PLATFORM_HASH32(hash_state, name_word)     \
    -       ({            \
    -               hash_state = __insn_crc_32_32(hash_state,
    name_word);  \
    -       })
    -
    -#define PLATFORM_HASH32_FINISH(hash_state, kind)     \
    -       ({            \
- hash_state = __insn_crc_32_32(hash_state, kind); \
    -               hash_state = __insn_crc_32_32(hash_state,
    0xFFFFFFFF); \
    -               hash_state = __insn_crc_32_32(hash_state,
    0xFEFDFCF5); \
    -               (uint32_t)hash_state;           \
    -       })
    -
    -#elif defined(__arm__) || defined(__aarch64__)
    -
    -#define PLATFORM_HASH_STATE  uint32_t
    -
    -static inline uint32_t __crc32w(uint32_t crc, uint32_t value)
    -{
    -       __asm__("crc32w %w[c], %w[c],
    %w[v]":[c]"+r"(crc):[v]"r"(value));
    -       return crc;
    -}
    -
    -#define PLATFORM_HASH32_INIT(hash_state, name_len)    \
    -       ({    \
    -               hash_state = 0xFEFDFCF5;    \
    -               hash_state = __crc32w(hash_state, name_len);   \
    -       })
    -
    -#define PLATFORM_HASH32(hash_state, name_word)     \
    -       ({     \
    -               __crc32w(hash_state, name_word);     \
    -       })
    -
    -#define PLATFORM_HASH32_FINISH(hash_state, kind)     \
    -       ({     \
    -               hash_state = __crc32w(hash_state, kind);     \
    -               hash_state = __crc32w(hash_state, 0xFFFFFFFF);  \
    -               hash_state = __crc32w(hash_state, 0xFEFDFCF5);  \
    -               (uint32_t)hash_state;    \
    -       })
    -
    -#else
    -#error "Need to define PLATFORM_DEPENDENT_HASH32 macro"
    -#endif
    -
     typedef struct name_tbl_entry_s name_tbl_entry_t;

      /* It is important for most platforms that the following struct
    fit within
    @@ -275,53 +141,7 @@ static void aligned_free(void *mem_ptr)

     static uint32_t hash_name_and_kind(const char *name, uint8_t
    name_kind)
     {
    -       PLATFORM_HASH_STATE hash_state;
    -       uint32_t            name_len, name_word, hash_value;
    -       uint32_t            bytes[4];
    -
    -       name_len = strlen(name);
    -       PLATFORM_HASH32_INIT(hash_state, name_len);
    -
    -       while (4 <= name_len) {
    -               /* Get the next four characters.  Note that
    endianness doesn't
    -                * matter here!  Also note that this assumes that
    there is
    -                * either no alignment loading restrictions OR
    that name is
    -                * 32-bit aligned.  Shouldn't be too hard to add
    code to deal
    -                * with the case when this assumption is false.
    -                */
    -               /* name_word = *((uint32_t *)name); */
    -               bytes[0] = name[0];
    -               bytes[1] = name[1];
    -               bytes[2] = name[2];
    -               bytes[3] = name[3];
    -               name_word = (bytes[3] << 24) | (bytes[2] << 16) |
    -                       (bytes[1] << 8) | bytes[0];
    -               PLATFORM_HASH32(hash_state, name_word);
    -
    -               name_len -= 4;
    -               name     += 4;
    -       }
    -
    -       if (name_len != 0) {
    -               name_word = 0;
    -
    -               if (2 <= name_len) {
    -                       /* name_word = (uint32_t)*((uint16_t
    *)name); */
    -                       bytes[0] = name[0];
    -                       bytes[1] = name[1];
    -                       name_word |= (bytes[1] << 8) | bytes[0];
    -                       name_len -= 2;
    -                       name     += 2;
    -               }
    -
    -               if (name_len == 1)
    -                       name_word |= ((uint32_t)*name) << 16;
    -
    -               PLATFORM_HASH32(hash_state, name_word);
    -       }
    -
    -       hash_value = PLATFORM_HASH32_FINISH(hash_state, name_kind);
    -       return hash_value;
    +       return odp_hash_crc32c(name, strlen(name), name_kind);
     }

     static uint32_t linked_list_len(name_tbl_entry_t *name_tbl_entry)
    --
    2.1.4




_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to