mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-10 15:55:37 +00:00
switched to gcc's internal data types
This commit is contained in:
parent
fc2e9850d3
commit
78b8e40f83
@ -7,7 +7,9 @@
|
|||||||
Copyright (C) 2020
|
Copyright (C) 2020
|
||||||
|
|
||||||
Author: Nils Meyer <nils.meyer@ur.de> Regensburg University
|
Author: Nils Meyer <nils.meyer@ur.de> Regensburg University
|
||||||
Author: Richard Sandiford <richard.sandiford@arm.com> Arm
|
|
||||||
|
with support from Arm
|
||||||
|
Richard Sandiford <richard.sandiford@arm.com>
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -33,26 +35,13 @@
|
|||||||
|
|
||||||
/* TODO
|
/* TODO
|
||||||
* Exchange1
|
* Exchange1
|
||||||
* prefetches
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#ifndef GEN_SIMD_WIDTH
|
|
||||||
//#define GEN_SIMD_WIDTH 64u
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
//static_assert(GEN_SIMD_WIDTH % 64u == 0, "A64FX SIMD vector size is 64 bytes");
|
|
||||||
|
|
||||||
//#ifdef __ARM_FEATURE_SVE
|
|
||||||
// #pragma message("Yes, we have SVE feature")
|
|
||||||
// #include <arm_sve.h>
|
|
||||||
//#else
|
|
||||||
// #pragma error "Missing SVE feature"
|
|
||||||
//#endif /* __ARM_FEATURE_SVE */
|
|
||||||
|
|
||||||
|
|
||||||
// gcc 10 features
|
// gcc 10 features
|
||||||
#if __ARM_FEATURE_SVE_BITS==512
|
#if __ARM_FEATURE_SVE_BITS==512
|
||||||
#pragma message("Fixed-size SVE ACLE")
|
#pragma message("Fixed-size SVE ACLE")
|
||||||
|
/* gcc 10.0.1 and gcc 10.1 bug using ACLE data types CAS-159553-Y1K4C6
|
||||||
|
workaround: use gcc's internal data types, bugfix expected for gcc 10.2
|
||||||
typedef svbool_t pred __attribute__((arm_sve_vector_bits(512)));
|
typedef svbool_t pred __attribute__((arm_sve_vector_bits(512)));
|
||||||
typedef svfloat16_t vech __attribute__((arm_sve_vector_bits(512)));
|
typedef svfloat16_t vech __attribute__((arm_sve_vector_bits(512)));
|
||||||
typedef svfloat32_t vecf __attribute__((arm_sve_vector_bits(512)));
|
typedef svfloat32_t vecf __attribute__((arm_sve_vector_bits(512)));
|
||||||
@ -60,6 +49,14 @@ typedef svfloat64_t vecd __attribute__((arm_sve_vector_bits(512)));
|
|||||||
typedef svuint32_t veci __attribute__((arm_sve_vector_bits(512)));
|
typedef svuint32_t veci __attribute__((arm_sve_vector_bits(512)));
|
||||||
typedef svuint32_t lutf __attribute__((arm_sve_vector_bits(512))); // LUTs for float
|
typedef svuint32_t lutf __attribute__((arm_sve_vector_bits(512))); // LUTs for float
|
||||||
typedef svuint64_t lutd __attribute__((arm_sve_vector_bits(512))); // LUTs for double
|
typedef svuint64_t lutd __attribute__((arm_sve_vector_bits(512))); // LUTs for double
|
||||||
|
*/
|
||||||
|
typedef __SVBool_t pred __attribute__((arm_sve_vector_bits(512)));
|
||||||
|
typedef __SVFloat16_t vech __attribute__((arm_sve_vector_bits(512)));
|
||||||
|
typedef __SVFloat32_t vecf __attribute__((arm_sve_vector_bits(512)));
|
||||||
|
typedef __SVFloat64_t vecd __attribute__((arm_sve_vector_bits(512)));
|
||||||
|
typedef __SVUint32_t veci __attribute__((arm_sve_vector_bits(512)));
|
||||||
|
typedef __SVUint32_t lutf __attribute__((arm_sve_vector_bits(512))); // LUTs for float
|
||||||
|
typedef __SVUint64_t lutd __attribute__((arm_sve_vector_bits(512))); // LUTs for double
|
||||||
#else
|
#else
|
||||||
#pragma error("Oops. Illegal SVE vector size!?")
|
#pragma error("Oops. Illegal SVE vector size!?")
|
||||||
#endif /* __ARM_FEATURE_SVE_BITS */
|
#endif /* __ARM_FEATURE_SVE_BITS */
|
||||||
|
@ -959,7 +959,7 @@ accelerator_inline void precisionChange(vRealD *out,vRealF *in,int nvec)
|
|||||||
for(int m=0;m*2<nvec;m++){
|
for(int m=0;m*2<nvec;m++){
|
||||||
int n=m*2;
|
int n=m*2;
|
||||||
Optimization::PrecisionChange::StoD(in[m].v,out[n].v,out[n+1].v);
|
Optimization::PrecisionChange::StoD(in[m].v,out[n].v,out[n+1].v);
|
||||||
// A64FXFIXEDSIZE FIXME
|
// Bug in gcc 10.0.1 and gcc 10.1 using fixed-size SVE ACLE data types CAS-159553-Y1K4C6
|
||||||
// function call results in compile-time error:
|
// function call results in compile-time error:
|
||||||
// In function ‘void Grid::precisionChange(Grid::vRealD*, Grid::vRealF*, int)’:
|
// In function ‘void Grid::precisionChange(Grid::vRealD*, Grid::vRealF*, int)’:
|
||||||
// .../Grid_vector_types.h:961:56: error:
|
// .../Grid_vector_types.h:961:56: error:
|
||||||
|
Loading…
Reference in New Issue
Block a user