mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	pulled SVE typedefs out of Optimization
This commit is contained in:
		@@ -43,13 +43,6 @@
 | 
			
		||||
  #pragma error "Missing SVE feature"
 | 
			
		||||
#endif /* __ARM_FEATURE_SVE */
 | 
			
		||||
 | 
			
		||||
// safety definition, not sure if it's important
 | 
			
		||||
#define GEN_SIMD_WIDTH 64u
 | 
			
		||||
 | 
			
		||||
// low-level API
 | 
			
		||||
NAMESPACE_BEGIN(Grid);
 | 
			
		||||
NAMESPACE_BEGIN(Optimization);
 | 
			
		||||
 | 
			
		||||
// gcc 10 features
 | 
			
		||||
#if __ARM_FEATURE_SVE_BITS==512
 | 
			
		||||
#pragma message("Fixed-size SVE ACLE")
 | 
			
		||||
@@ -64,6 +57,12 @@ typedef svuint64_t  lutd __attribute__((arm_sve_vector_bits(512))); // LUTs for
 | 
			
		||||
#pragma error("Oops. Illegal SVE vector size!?")
 | 
			
		||||
#endif /* __ARM_FEATURE_SVE_BITS */
 | 
			
		||||
 | 
			
		||||
// safety definition, not sure if it's necessary
 | 
			
		||||
#define GEN_SIMD_WIDTH 64u
 | 
			
		||||
 | 
			
		||||
// low-level API
 | 
			
		||||
NAMESPACE_BEGIN(Grid);
 | 
			
		||||
NAMESPACE_BEGIN(Optimization);
 | 
			
		||||
 | 
			
		||||
template <typename T>
 | 
			
		||||
struct acle{};
 | 
			
		||||
@@ -503,7 +502,7 @@ struct Exchange{
 | 
			
		||||
    vecf r1_v = svext(in1, in1, (uint64_t)8u);
 | 
			
		||||
    vecf r2_v = svext(in2, in2, (uint64_t)8u);
 | 
			
		||||
    out1 = svext(r1_v, in2, (uint64_t)8u);
 | 
			
		||||
    out2 = svext(a1_v, r2_v, (uint64_t)8u);
 | 
			
		||||
    out2 = svext(in1, r2_v, (uint64_t)8u);
 | 
			
		||||
  }
 | 
			
		||||
  static inline void Exchange1(vecf &out1, vecf &out2, vecf in1, vecf in2){
 | 
			
		||||
    // FIXME
 | 
			
		||||
@@ -779,10 +778,10 @@ NAMESPACE_END(Optimization);
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Here assign types
 | 
			
		||||
 | 
			
		||||
typedef Optimization::vech SIMD_Htype; // Reduced precision type
 | 
			
		||||
typedef Optimization::vecf SIMD_Ftype; // Single precision type
 | 
			
		||||
typedef Optimization::vecd SIMD_Dtype; // Double precision type
 | 
			
		||||
typedef Optimization::veci SIMD_Itype; // Integer type
 | 
			
		||||
typedef vech SIMD_Htype; // Reduced precision type
 | 
			
		||||
typedef vecf SIMD_Ftype; // Single precision type
 | 
			
		||||
typedef vecd SIMD_Dtype; // Double precision type
 | 
			
		||||
typedef veci SIMD_Itype; // Integer type
 | 
			
		||||
 | 
			
		||||
// prefetch utilities
 | 
			
		||||
inline void v_prefetch0(int size, const char *ptr){};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user