Ignore:
Timestamp:
Oct 24, 2011, 1:56:18 PM (8 years ago)
Author:
huah
Message:

use load_type/store_type to define the idisa load/store operations so that generator could distinguish the load/store types for different architectures like m128i* in SSE2 and float const* in AVX

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/idisa_cpp/idisa_sse4_2.cpp

    r1584 r1585  
    9090public:
    9191        static IDISA_ALWAYS_INLINE bitblock128_t sll(bitblock128_t arg1, bitblock128_t arg2);
    92         static IDISA_ALWAYS_INLINE bitblock128_t load_unaligned(float const* arg1);
     92        static IDISA_ALWAYS_INLINE bitblock128_t load_unaligned(bitblock128_t* arg1);
    9393        template <uint64_t sh> static IDISA_ALWAYS_INLINE bitblock128_t srli(bitblock128_t arg1);
    9494        static IDISA_ALWAYS_INLINE bitblock128_t srl(bitblock128_t arg1, bitblock128_t arg2);
    95         static IDISA_ALWAYS_INLINE void store_aligned(float* arg1, bitblock128_t arg2);
     95        static IDISA_ALWAYS_INLINE void store_aligned(bitblock128_t* arg1, bitblock128_t arg2);
    9696        static IDISA_ALWAYS_INLINE bool all(bitblock128_t arg1);
    9797        static IDISA_ALWAYS_INLINE bool any(bitblock128_t arg1);
    9898        static IDISA_ALWAYS_INLINE uint64_t popcount(bitblock128_t arg1);
    9999        template <uint64_t sh> static IDISA_ALWAYS_INLINE bitblock128_t slli(bitblock128_t arg1);
    100         static IDISA_ALWAYS_INLINE bitblock128_t load_aligned(float const* arg1);
    101         static IDISA_ALWAYS_INLINE void store_unaligned(float* arg1, bitblock128_t arg2);
     100        static IDISA_ALWAYS_INLINE bitblock128_t load_aligned(bitblock128_t* arg1);
     101        static IDISA_ALWAYS_INLINE void store_unaligned(bitblock128_t* arg1, bitblock128_t arg2);
    102102};
    103103
     
    30003000
    30013001//The total number of operations is 1
    3002 IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_unaligned(float const* arg1)
     3002IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_unaligned(bitblock128_t* arg1)
    30033003{
    30043004        return _mm_loadu_si128((bitblock128_t*)(arg1));
     
    30123012
    30133013//The total number of operations is 1
    3014 IDISA_ALWAYS_INLINE void bitblock128::store_aligned(float* arg1, bitblock128_t arg2)
     3014IDISA_ALWAYS_INLINE void bitblock128::store_aligned(bitblock128_t* arg1, bitblock128_t arg2)
    30153015{
    30163016        _mm_store_si128((bitblock128_t*)(arg1), arg2);
     
    30483048
    30493049//The total number of operations is 1
    3050 IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_aligned(float const* arg1)
     3050IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_aligned(bitblock128_t* arg1)
    30513051{
    30523052        return _mm_load_si128((bitblock128_t*)(arg1));
     
    30543054
    30553055//The total number of operations is 1
    3056 IDISA_ALWAYS_INLINE void bitblock128::store_unaligned(float* arg1, bitblock128_t arg2)
     3056IDISA_ALWAYS_INLINE void bitblock128::store_unaligned(bitblock128_t* arg1, bitblock128_t arg2)
    30573057{
    30583058        _mm_storeu_si128((bitblock128_t*)(arg1), arg2);
Note: See TracChangeset for help on using the changeset viewer.