hash_main is the binary output from compiling the hash CUnit test.  That's
should have nothing to do with TM.

On Tue, Dec 8, 2015 at 9:35 AM, Maxim Uvarov <maxim.uva...@linaro.org>
wrote:

> Merged this patch.
>
> Now only issue left is fix:
> hash_main: no such file
> I think something wrong in Makefile.am, not sure if CI also captures that
> issues,
> but we will see. That is different issue.
>
> Maxim.
>
>
>
> On 12/03/2015 00:56, Bill Fischofer 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>
>> ---
>>   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)
>>
>
> _______________________________________________
> 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