2014-08-26 Yvan Roux <yvan.roux@linaro.org>
+ Backport from trunk r213627.
+ 2014-08-05 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64-builtins.c
+ (aarch64_simd_builtin_type_mode): Delete.
+ (v8qi_UP): Remap to V8QImode.
+ (v4hi_UP): Remap to V4HImode.
+ (v2si_UP): Remap to V2SImode.
+ (v2sf_UP): Remap to V2SFmode.
+ (v1df_UP): Remap to V1DFmode.
+ (di_UP): Remap to DImode.
+ (df_UP): Remap to DFmode.
+ (v16qi_UP):V16QImode.
+ (v8hi_UP): Remap to V8HImode.
+ (v4si_UP): Remap to V4SImode.
+ (v4sf_UP): Remap to V4SFmode.
+ (v2di_UP): Remap to V2DImode.
+ (v2df_UP): Remap to V2DFmode.
+ (ti_UP): Remap to TImode.
+ (ei_UP): Remap to EImode.
+ (oi_UP): Remap to OImode.
+ (ci_UP): Map to CImode.
+ (xi_UP): Remap to XImode.
+ (si_UP): Remap to SImode.
+ (sf_UP): Remap to SFmode.
+ (hi_UP): Remap to HImode.
+ (qi_UP): Remap to QImode.
+ (aarch64_simd_builtin_datum): Make mode a machine_mode.
+ (VAR1): Build builtin name.
+ (aarch64_init_simd_builtins): Remove dead code.
+
+2014-08-26 Yvan Roux <yvan.roux@linaro.org>
+
Backport from trunk r213713.
2014-08-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
#include "gimple.h"
#include "gimple-iterator.h"
-enum aarch64_simd_builtin_type_mode
-{
- T_V8QI,
- T_V4HI,
- T_V2SI,
- T_V2SF,
- T_DI,
- T_DF,
- T_V16QI,
- T_V8HI,
- T_V4SI,
- T_V4SF,
- T_V2DI,
- T_V2DF,
- T_TI,
- T_EI,
- T_OI,
- T_XI,
- T_SI,
- T_SF,
- T_HI,
- T_QI,
- T_MAX
-};
-
-#define v8qi_UP T_V8QI
-#define v4hi_UP T_V4HI
-#define v2si_UP T_V2SI
-#define v2sf_UP T_V2SF
-#define di_UP T_DI
-#define df_UP T_DF
-#define v16qi_UP T_V16QI
-#define v8hi_UP T_V8HI
-#define v4si_UP T_V4SI
-#define v4sf_UP T_V4SF
-#define v2di_UP T_V2DI
-#define v2df_UP T_V2DF
-#define ti_UP T_TI
-#define ei_UP T_EI
-#define oi_UP T_OI
-#define xi_UP T_XI
-#define si_UP T_SI
-#define sf_UP T_SF
-#define hi_UP T_HI
-#define qi_UP T_QI
-
+#define v8qi_UP V8QImode
+#define v4hi_UP V4HImode
+#define v2si_UP V2SImode
+#define v2sf_UP V2SFmode
+#define di_UP DImode
+#define df_UP DFmode
+#define v16qi_UP V16QImode
+#define v8hi_UP V8HImode
+#define v4si_UP V4SImode
+#define v4sf_UP V4SFmode
+#define v2di_UP V2DImode
+#define v2df_UP V2DFmode
+#define ti_UP TImode
+#define ei_UP EImode
+#define oi_UP OImode
+#define ci_UP CImode
+#define xi_UP XImode
+#define si_UP SImode
+#define sf_UP SFmode
+#define hi_UP HImode
+#define qi_UP QImode
#define UP(X) X##_UP
#define SIMD_MAX_BUILTIN_ARGS 5
typedef struct
{
const char *name;
- enum aarch64_simd_builtin_type_mode mode;
+ enum machine_mode mode;
const enum insn_code code;
unsigned int fcode;
enum aarch64_type_qualifiers *qualifiers;
#define CF10(N, X) CODE_FOR_##N##X
#define VAR1(T, N, MAP, A) \
- {#N, UP (A), CF##MAP (N, A), 0, TYPES_##T},
+ {#N #A, UP (A), CF##MAP (N, A), 0, TYPES_##T},
#define VAR2(T, N, MAP, A, B) \
VAR1 (T, N, MAP, A) \
VAR1 (T, N, MAP, B)
bool print_type_signature_p = false;
char type_signature[SIMD_MAX_BUILTIN_ARGS] = { 0 };
aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[i];
- const char *const modenames[] =
- {
- "v8qi", "v4hi", "v2si", "v2sf", "di", "df",
- "v16qi", "v8hi", "v4si", "v4sf", "v2di", "v2df",
- "ti", "ei", "oi", "xi", "si", "sf", "hi", "qi"
- };
- const enum machine_mode modes[] =
- {
- V8QImode, V4HImode, V2SImode, V2SFmode, DImode, DFmode,
- V16QImode, V8HImode, V4SImode, V4SFmode, V2DImode,
- V2DFmode, TImode, EImode, OImode, XImode, SImode,
- SFmode, HImode, QImode
- };
char namebuf[60];
tree ftype = NULL;
tree fndecl = NULL;
- gcc_assert (ARRAY_SIZE (modenames) == T_MAX);
-
d->fcode = fcode;
/* We must track two variables here. op_num is
/* Some builtins have different user-facing types
for certain arguments, encoded in d->mode. */
if (qualifiers & qualifier_map_mode)
- op_mode = modes[d->mode];
+ op_mode = d->mode;
/* For pointers, we want a pointer to the basic type
of the vector. */
gcc_assert (ftype != NULL);
if (print_type_signature_p)
- snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s%s_%s",
- d->name, modenames[d->mode], type_signature);
+ snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s_%s",
+ d->name, type_signature);
else
- snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s%s",
- d->name, modenames[d->mode]);
+ snprintf (namebuf, sizeof (namebuf), "__builtin_aarch64_%s",
+ d->name);
fndecl = add_builtin_function (namebuf, ftype, fcode, BUILT_IN_MD,
NULL, NULL_TREE);