From: zhengnannan Date: Wed, 11 Nov 2020 10:37:20 +0000 (+0000) Subject: AArch64: Add FLAG for arithmetic operation intrinsics [PR94442] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7a9a5d1a61c7b8111557261a8d275a531812b50e;p=gcc.git AArch64: Add FLAG for arithmetic operation intrinsics [PR94442] 2020-11-11 Zhiheng Xie Nannan Zheng gcc/ChangeLog: * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG for arithmetic operation intrinsics. --- diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index cb05aad77fb..b70056aa185 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -47,7 +47,7 @@ VAR1 (COMBINEP, combine, 0, ALL, di) BUILTIN_VB (BINOP, pmul, 0, NONE) BUILTIN_VHSDF_HSDF (BINOP, fmulx, 0, FP) - BUILTIN_VHSDF_DF (UNOP, sqrt, 2, ALL) + BUILTIN_VHSDF_DF (UNOP, sqrt, 2, FP) BUILTIN_VD_BHSI (BINOP, addp, 0, NONE) VAR1 (UNOP, addp, 0, NONE, di) BUILTIN_VDQ_BHSI (UNOP, clrsb, 2, ALL) @@ -229,9 +229,9 @@ BUILTIN_VSDQ_I_DI (BINOP_UUS, urshl, 0, ALL) /* Implemented by aarch64_{_lane}{q}. */ - BUILTIN_VB (TERNOP, sdot, 0, ALL) - BUILTIN_VB (TERNOPU, udot, 0, ALL) - BUILTIN_VB (TERNOP_SSUS, usdot, 0, ALL) + BUILTIN_VB (TERNOP, sdot, 0, NONE) + BUILTIN_VB (TERNOPU, udot, 0, NONE) + BUILTIN_VB (TERNOP_SSUS, usdot, 0, NONE) BUILTIN_VB (QUADOP_LANE, sdot_lane, 0, ALL) BUILTIN_VB (QUADOPU_LANE, udot_lane, 0, ALL) BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0, ALL) @@ -304,7 +304,7 @@ BUILTIN_VSDQ_I (USHIFTIMM, uqshl_n, 0, ALL) /* Implemented by aarch64_reduc_plus_. */ - BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, ALL) + BUILTIN_VALL (UNOP, reduc_plus_scal_, 10, NONE) /* Implemented by reduc__scal_ (producing scalar). */ BUILTIN_VDQIF_F16 (UNOP, reduc_smax_scal_, 10, NONE) @@ -462,19 +462,19 @@ BUILTIN_VALL (BINOP, trn1, 0, ALL) BUILTIN_VALL (BINOP, trn2, 0, ALL) - BUILTIN_GPF_F16 (UNOP, frecpe, 0, ALL) - BUILTIN_GPF_F16 (UNOP, frecpx, 0, ALL) + BUILTIN_GPF_F16 (UNOP, frecpe, 0, FP) + BUILTIN_GPF_F16 (UNOP, frecpx, 0, FP) - BUILTIN_VDQ_SI (UNOP, urecpe, 0, ALL) + BUILTIN_VDQ_SI (UNOP, urecpe, 0, NONE) - BUILTIN_VHSDF (UNOP, frecpe, 0, ALL) - BUILTIN_VHSDF_HSDF (BINOP, frecps, 0, ALL) + BUILTIN_VHSDF (UNOP, frecpe, 0, FP) + BUILTIN_VHSDF_HSDF (BINOP, frecps, 0, FP) /* Implemented by a mixture of abs2 patterns. Note the DImode builtin is only ever used for the int64x1_t intrinsic, there is no scalar version. */ - BUILTIN_VSDQ_I_DI (UNOP, abs, 0, ALL) - BUILTIN_VHSDF (UNOP, abs, 2, ALL) - VAR1 (UNOP, abs, 2, ALL, hf) + BUILTIN_VSDQ_I_DI (UNOP, abs, 0, AUTO_FP) + BUILTIN_VHSDF (UNOP, abs, 2, AUTO_FP) + VAR1 (UNOP, abs, 2, AUTO_FP, hf) BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10, FP) VAR1 (BINOP, float_truncate_hi_, 0, FP, v4sf) @@ -508,11 +508,11 @@ BUILTIN_VALLDIF (STORESTRUCT, st1x4, 0, STORE) /* Implemented by fma4. */ - BUILTIN_VHSDF (TERNOP, fma, 4, ALL) - VAR1 (TERNOP, fma, 4, ALL, hf) + BUILTIN_VHSDF (TERNOP, fma, 4, FP) + VAR1 (TERNOP, fma, 4, FP, hf) /* Implemented by fnma4. */ - BUILTIN_VHSDF (TERNOP, fnma, 4, ALL) - VAR1 (TERNOP, fnma, 4, ALL, hf) + BUILTIN_VHSDF (TERNOP, fnma, 4, FP) + VAR1 (TERNOP, fnma, 4, FP, hf) /* Implemented by aarch64_simd_bsl. */ BUILTIN_VDQQH (BSL_P, simd_bsl, 0, ALL) @@ -595,13 +595,13 @@ BUILTIN_GPI (SHIFTIMM_USS, fcvtzuhf, 3, ALL) /* Implemented by aarch64_rsqrte. */ - BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0, ALL) + BUILTIN_VHSDF_HSDF (UNOP, rsqrte, 0, FP) /* Implemented by aarch64_rsqrts. */ - BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0, ALL) + BUILTIN_VHSDF_HSDF (BINOP, rsqrts, 0, FP) /* Implemented by fabd3. */ - BUILTIN_VHSDF_HSDF (BINOP, fabd, 3, ALL) + BUILTIN_VHSDF_HSDF (BINOP, fabd, 3, FP) /* Implemented by aarch64_faddp. */ BUILTIN_VHSDF (BINOP, faddp, 0, FP) @@ -623,7 +623,7 @@ BUILTIN_VHSDF_HSDF (BINOP_USS, facge, 0, FP) /* Implemented by sqrt2. */ - VAR1 (UNOP, sqrt, 2, ALL, hf) + VAR1 (UNOP, sqrt, 2, FP, hf) /* Implemented by hf2. */ VAR1 (UNOP, floatdi, 2, FP, hf) @@ -714,7 +714,7 @@ BUILTIN_VSFDF (UNOP, frint64x, 0, FP) /* Implemented by aarch64_bfdot{_lane}{q}. */ - VAR2 (TERNOP, bfdot, 0, ALL, v2sf, v4sf) + VAR2 (TERNOP, bfdot, 0, AUTO_FP, v2sf, v4sf) VAR2 (QUADOP_LANE_PAIR, bfdot_lane, 0, ALL, v2sf, v4sf) VAR2 (QUADOP_LANE_PAIR, bfdot_laneq, 0, ALL, v2sf, v4sf)