1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-09-20 17:25:37 +01:00

switched to gcc's internal data types

This commit is contained in:
nmeyer-ur 2020-05-11 18:11:23 +02:00
parent fc2e9850d3
commit 78b8e40f83
2 changed files with 14 additions and 17 deletions

View File

@ -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 */

View File

@ -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: