Skip to content

Commit 859c3ce

Browse files
author
Christophe Lyon
committed
arm: [MVE intrinsics] rework sqrshrl sqrshrl_sat48
Implement sqrshrl and sqrshrl_sat48 using the new MVE builtins framework. gcc/ChangeLog: * config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift): Add ss_SQRSHRL, ss_SQRSHRL_SAT48. (mve_function_scalar_shift): Add support for ss_SQRSHRL, ss_SQRSHRL_SAT48. (sqrshrl, sqrshrl_sat48): New. * config/arm/arm-mve-builtins-base.def (sqrshrl, sqrshrl_sat48): New. * config/arm/arm-mve-builtins-base.h (sqrshrl, sqrshrl_sat48): New. * config/arm/arm_mve.h (sqrshrl): Delete. (sqrshrl_sat48): Delete. (__arm_sqrshrl): Delete. (__arm_sqrshrl_sat48): Delete. * config/arm/mve.md (mve_sqrshrl_sat<supf>_di): Add '@' prefix.
1 parent eb5f0c7 commit 859c3ce

File tree

5 files changed

+17
-17
lines changed

5 files changed

+17
-17
lines changed

gcc/config/arm/arm-mve-builtins-base.cc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,8 @@ class vld24_impl : public full_width_access
11721172
enum which_scalar_shift {
11731173
ss_ASRL,
11741174
ss_LSLL,
1175+
ss_SQRSHRL,
1176+
ss_SQRSHRL_SAT48,
11751177
ss_UQRSHLL,
11761178
ss_UQRSHLL_SAT48,
11771179
};
@@ -1203,6 +1205,14 @@ class mve_function_scalar_shift : public function_base
12031205
code = CODE_FOR_mve_lsll;
12041206
break;
12051207

1208+
case ss_SQRSHRL:
1209+
code = code_for_mve_sqrshrl_sat_di (SQRSHRL_64);
1210+
break;
1211+
1212+
case ss_SQRSHRL_SAT48:
1213+
code = code_for_mve_sqrshrl_sat_di (SQRSHRL_48);
1214+
break;
1215+
12061216
case ss_UQRSHLL:
12071217
code = code_for_mve_uqrshll_sat_di (UQRSHLL_64);
12081218
break;
@@ -1407,6 +1417,8 @@ namespace arm_mve {
14071417

14081418
FUNCTION (asrl, mve_function_scalar_shift, (ss_ASRL))
14091419
FUNCTION (lsll, mve_function_scalar_shift, (ss_LSLL))
1420+
FUNCTION (sqrshrl, mve_function_scalar_shift, (ss_SQRSHRL))
1421+
FUNCTION (sqrshrl_sat48, mve_function_scalar_shift, (ss_SQRSHRL_SAT48))
14101422
FUNCTION (uqrshll, mve_function_scalar_shift, (ss_UQRSHLL))
14111423
FUNCTION (uqrshll_sat48, mve_function_scalar_shift, (ss_UQRSHLL_SAT48))
14121424
FUNCTION_PRED_P_S_U (vabavq, VABAVQ)

gcc/config/arm/arm-mve-builtins-base.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
#define REQUIRES_FLOAT false
2121
DEF_MVE_FUNCTION (asrl, scalar_s64_shift, none, none)
2222
DEF_MVE_FUNCTION (lsll, scalar_u64_shift, none, none)
23+
DEF_MVE_FUNCTION (sqrshrl, scalar_s64_shift, none, none)
24+
DEF_MVE_FUNCTION (sqrshrl_sat48, scalar_s64_shift, none, none)
2325
DEF_MVE_FUNCTION (uqrshll, scalar_u64_shift, none, none)
2426
DEF_MVE_FUNCTION (uqrshll_sat48, scalar_u64_shift, none, none)
2527
DEF_MVE_FUNCTION (vabavq, binary_acca_int32, all_integer, p_or_none)

gcc/config/arm/arm-mve-builtins-base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ namespace functions {
2525

2626
extern const function_base *const asrl;
2727
extern const function_base *const lsll;
28+
extern const function_base *const sqrshrl;
29+
extern const function_base *const sqrshrl_sat48;
2830
extern const function_base *const uqrshll;
2931
extern const function_base *const uqrshll_sat48;
3032
extern const function_base *const vabavq;

gcc/config/arm/arm_mve.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,6 @@
8181
#define vgetq_lane_u32(__a, __idx) __arm_vgetq_lane_u32(__a, __idx)
8282
#define vgetq_lane_u64(__a, __idx) __arm_vgetq_lane_u64(__a, __idx)
8383
#define sqrshr(__p0, __p1) __arm_sqrshr(__p0, __p1)
84-
#define sqrshrl(__p0, __p1) __arm_sqrshrl(__p0, __p1)
85-
#define sqrshrl_sat48(__p0, __p1) __arm_sqrshrl_sat48(__p0, __p1)
8684
#define sqshl(__p0, __p1) __arm_sqshl(__p0, __p1)
8785
#define sqshll(__p0, __p1) __arm_sqshll(__p0, __p1)
8886
#define srshr(__p0, __p1) __arm_srshr(__p0, __p1)
@@ -242,20 +240,6 @@ __arm_vgetq_lane_u64 (uint64x2_t __a, const int __idx)
242240
return __a[__ARM_LANEQ(__a,__idx)];
243241
}
244242

245-
__extension__ extern __inline int64_t
246-
__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
247-
__arm_sqrshrl (int64_t value, int32_t shift)
248-
{
249-
return __builtin_mve_sqrshrl_sat64_di (value, shift);
250-
}
251-
252-
__extension__ extern __inline int64_t
253-
__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
254-
__arm_sqrshrl_sat48 (int64_t value, int32_t shift)
255-
{
256-
return __builtin_mve_sqrshrl_sat48_di (value, shift);
257-
}
258-
259243
__extension__ extern __inline uint64_t
260244
__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
261245
__arm_uqshll (uint64_t value, const int shift)

gcc/config/arm/mve.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4290,7 +4290,7 @@
42904290
;;
42914291
;; [sqrshrl_di]
42924292
;;
4293-
(define_insn "mve_sqrshrl_sat<supf>_di"
4293+
(define_insn "@mve_sqrshrl_sat<supf>_di"
42944294
[(set (match_operand:DI 0 "arm_low_register_operand" "=l")
42954295
(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
42964296
(match_operand:SI 2 "register_operand" "r")]

0 commit comments

Comments
 (0)