annotate gcc/config/arm/mve.md @ 19:2b5abeee2509 default tip

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 ;; Arm M-profile Vector Extension Machine Description
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 ;; Copyright (C) 2019-2020 Free Software Foundation, Inc.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 ;; This file is part of GCC.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 ;; GCC is free software; you can redistribute it and/or modify it
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 ;; under the terms of the GNU General Public License as published by
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 ;; the Free Software Foundation; either version 3, or (at your option)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 ;; any later version.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 ;; GCC is distributed in the hope that it will be useful, but
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 ;; General Public License for more details.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 ;; You should have received a copy of the GNU General Public License
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 ;; along with GCC; see the file COPYING3. If not see
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 ;; <http://www.gnu.org/licenses/>.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 (define_mode_iterator MVE_types [V16QI V8HI V4SI V2DI TI V8HF V4SF V2DF])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 (define_mode_iterator MVE_VLD_ST [V16QI V8HI V4SI V8HF V4SF])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 (define_mode_iterator MVE_0 [V8HF V4SF])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 (define_mode_iterator MVE_1 [V16QI V8HI V4SI V2DI])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 (define_mode_iterator MVE_3 [V16QI V8HI])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 (define_mode_iterator MVE_2 [V16QI V8HI V4SI])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 (define_mode_iterator MVE_5 [V8HI V4SI])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 (define_mode_iterator MVE_6 [V8HI V4SI])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 (define_c_enum "unspec" [VST4Q VRNDXQ_F VRNDQ_F VRNDPQ_F VRNDNQ_F VRNDMQ_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 VRNDAQ_F VREV64Q_F VNEGQ_F VDUPQ_N_F VABSQ_F VREV32Q_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 VCVTTQ_F32_F16 VCVTBQ_F32_F16 VCVTQ_TO_F_S VQNEGQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 VCVTQ_TO_F_U VREV16Q_S VREV16Q_U VADDLVQ_S VMVNQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 VMVNQ_N_U VCVTAQ_S VCVTAQ_U VREV64Q_S VREV64Q_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 VQABSQ_S VNEGQ_S VMVNQ_S VMVNQ_U VDUPQ_N_U VDUPQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 VCLZQ_U VCLZQ_S VCLSQ_S VADDVQ_S VADDVQ_U VABSQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 VREV32Q_U VREV32Q_S VMOVLTQ_U VMOVLTQ_S VMOVLBQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 VMOVLBQ_U VCVTQ_FROM_F_S VCVTQ_FROM_F_U VCVTPQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 VCVTPQ_U VCVTNQ_S VCVTNQ_U VCVTMQ_S VCVTMQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 VADDLVQ_U VCTP8Q VCTP16Q VCTP32Q VCTP64Q VPNOT
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 VCREATEQ_F VCVTQ_N_TO_F_S VCVTQ_N_TO_F_U VBRSRQ_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 VSUBQ_N_F VCREATEQ_U VCREATEQ_S VSHRQ_N_S VSHRQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 VCVTQ_N_FROM_F_S VCVTQ_N_FROM_F_U VADDLVQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 VADDLVQ_P_U VCMPNEQ_U VCMPNEQ_S VSHLQ_S VSHLQ_U VABDQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 VADDQ_N_S VADDVAQ_S VADDVQ_P_S VANDQ_S VBICQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 VBRSRQ_N_S VCADDQ_ROT270_S VCADDQ_ROT90_S VCMPEQQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 VCMPEQQ_N_S VCMPNEQ_N_S VEORQ_S VHADDQ_S VHADDQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 VHSUBQ_S VHSUBQ_N_S VMAXQ_S VMAXVQ_S VMINQ_S VMINVQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 VMLADAVQ_S VMULHQ_S VMULLBQ_INT_S VMULLTQ_INT_S VMULQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 VMULQ_N_S VORNQ_S VORRQ_S VQADDQ_S VQADDQ_N_S VQRSHLQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 VQRSHLQ_N_S VQSHLQ_S VQSHLQ_N_S VQSHLQ_R_S VQSUBQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 VQSUBQ_N_S VRHADDQ_S VRMULHQ_S VRSHLQ_S VRSHLQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 VRSHRQ_N_S VSHLQ_N_S VSHLQ_R_S VSUBQ_S VSUBQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 VABDQ_U VADDQ_N_U VADDVAQ_U VADDVQ_P_U VANDQ_U VBICQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 VBRSRQ_N_U VCADDQ_ROT270_U VCADDQ_ROT90_U VCMPEQQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 VCMPEQQ_N_U VCMPNEQ_N_U VEORQ_U VHADDQ_U VHADDQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 VHSUBQ_U VHSUBQ_N_U VMAXQ_U VMAXVQ_U VMINQ_U VMINVQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 VMLADAVQ_U VMULHQ_U VMULLBQ_INT_U VMULLTQ_INT_U VMULQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 VMULQ_N_U VORNQ_U VORRQ_U VQADDQ_U VQADDQ_N_U VQRSHLQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 VQRSHLQ_N_U VQSHLQ_U VQSHLQ_N_U VQSHLQ_R_U VQSUBQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 VQSUBQ_N_U VRHADDQ_U VRMULHQ_U VRSHLQ_U VRSHLQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 VRSHRQ_N_U VSHLQ_N_U VSHLQ_R_U VSUBQ_U VSUBQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 VCMPGEQ_N_S VCMPGEQ_S VCMPGTQ_N_S VCMPGTQ_S VCMPLEQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 VCMPLEQ_S VCMPLTQ_N_S VCMPLTQ_S VHCADDQ_ROT270_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 VHCADDQ_ROT90_S VMAXAQ_S VMAXAVQ_S VMINAQ_S VMINAVQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 VMLADAVXQ_S VMLSDAVQ_S VMLSDAVXQ_S VQDMULHQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 VQDMULHQ_S VQRDMULHQ_N_S VQRDMULHQ_S VQSHLUQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 VCMPCSQ_N_U VCMPCSQ_U VCMPHIQ_N_U VCMPHIQ_U VABDQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 VABDQ_M_U VABDQ_F VADDQ_N_F VANDQ_F VBICQ_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 VCADDQ_ROT270_F VCADDQ_ROT90_F VCMPEQQ_F VCMPEQQ_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 VCMPGEQ_F VCMPGEQ_N_F VCMPGTQ_F VCMPGTQ_N_F VCMPLEQ_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 VCMPLEQ_N_F VCMPLTQ_F VCMPLTQ_N_F VCMPNEQ_F VCMPNEQ_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 VCMULQ_F VCMULQ_ROT180_F VCMULQ_ROT270_F VCMULQ_ROT90_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 VEORQ_F VMAXNMAQ_F VMAXNMAVQ_F VMAXNMQ_F VMAXNMVQ_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 VMINNMAQ_F VMINNMAVQ_F VMINNMQ_F VMINNMVQ_F VMULQ_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 VMULQ_N_F VORNQ_F VORRQ_F VSUBQ_F VADDLVAQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 VADDLVAQ_S VBICQ_N_U VBICQ_N_S VCTP8Q_M VCTP16Q_M
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 VCTP32Q_M VCTP64Q_M VCVTBQ_F16_F32 VCVTTQ_F16_F32
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78 VMLALDAVQ_U VMLALDAVXQ_U VMLALDAVXQ_S VMLALDAVQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 VMLSLDAVQ_S VMLSLDAVXQ_S VMOVNBQ_U VMOVNBQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80 VMOVNTQ_U VMOVNTQ_S VORRQ_N_S VORRQ_N_U VQDMULLBQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 VQDMULLBQ_S VQDMULLTQ_N_S VQDMULLTQ_S VQMOVNBQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 VQMOVNBQ_S VQMOVUNBQ_S VQMOVUNTQ_S VRMLALDAVHXQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83 VRMLSLDAVHQ_S VRMLSLDAVHXQ_S VSHLLBQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84 VSHLLBQ_U VSHLLTQ_U VSHLLTQ_S VQMOVNTQ_U VQMOVNTQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85 VSHLLBQ_N_S VSHLLBQ_N_U VSHLLTQ_N_U VSHLLTQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 VRMLALDAVHQ_U VRMLALDAVHQ_S VMULLTQ_POLY_P
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87 VMULLBQ_POLY_P VBICQ_M_N_S VBICQ_M_N_U VCMPEQQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88 VCVTAQ_M_S VCVTAQ_M_U VCVTQ_M_TO_F_S VCVTQ_M_TO_F_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89 VQRSHRNBQ_N_U VQRSHRNBQ_N_S VQRSHRUNBQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 VRMLALDAVHAQ_S VABAVQ_S VABAVQ_U VSHLCQ_S VSHLCQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 VRMLALDAVHAQ_U VABSQ_M_S VADDVAQ_P_S VADDVAQ_P_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
92 VCLSQ_M_S VCLZQ_M_S VCLZQ_M_U VCMPCSQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
93 VCMPCSQ_M_U VCMPEQQ_M_N_S VCMPEQQ_M_N_U VCMPEQQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
94 VCMPEQQ_M_U VCMPGEQ_M_N_S VCMPGEQ_M_S VCMPGTQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
95 VCMPGTQ_M_S VCMPHIQ_M_N_U VCMPHIQ_M_U VCMPLEQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
96 VCMPLEQ_M_S VCMPLTQ_M_N_S VCMPLTQ_M_S VCMPNEQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
97 VCMPNEQ_M_N_U VCMPNEQ_M_S VCMPNEQ_M_U VDUPQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
98 VDUPQ_M_N_U VDWDUPQ_N_U VDWDUPQ_WB_U VIWDUPQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
99 VIWDUPQ_WB_U VMAXAQ_M_S VMAXAVQ_P_S VMAXVQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
100 VMAXVQ_P_U VMINAQ_M_S VMINAVQ_P_S VMINVQ_P_S VMINVQ_P_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
101 VMLADAVAQ_S VMLADAVAQ_U VMLADAVQ_P_S VMLADAVQ_P_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
102 VMLADAVXQ_P_S VMLAQ_N_S VMLAQ_N_U VMLASQ_N_S VMLASQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
103 VMLSDAVQ_P_S VMLSDAVXQ_P_S VMVNQ_M_S VMVNQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
104 VNEGQ_M_S VPSELQ_S VPSELQ_U VQABSQ_M_S VQDMLAHQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
105 VQDMLAHQ_N_U VQNEGQ_M_S VQRDMLADHQ_S VQRDMLADHXQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
106 VQRDMLAHQ_N_S VQRDMLAHQ_N_U VQRDMLASHQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
107 VQRDMLASHQ_N_U VQRDMLSDHQ_S VQRDMLSDHXQ_S VQRSHLQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
108 VQRSHLQ_M_N_U VQSHLQ_M_R_S VQSHLQ_M_R_U VREV64Q_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
109 VREV64Q_M_U VRSHLQ_M_N_S VRSHLQ_M_N_U VSHLQ_M_R_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
110 VSHLQ_M_R_U VSLIQ_N_S VSLIQ_N_U VSRIQ_N_S VSRIQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
111 VQDMLSDHXQ_S VQDMLSDHQ_S VQDMLADHXQ_S VQDMLADHQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
112 VMLSDAVAXQ_S VMLSDAVAQ_S VMLADAVAXQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
113 VCMPGEQ_M_F VCMPGTQ_M_N_F VMLSLDAVQ_P_S VRMLALDAVHAXQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
114 VMLSLDAVXQ_P_S VFMAQ_F VMLSLDAVAQ_S VQSHRUNBQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
115 VQRSHRUNTQ_N_S VCMLAQ_F VMINNMAQ_M_F VFMASQ_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
116 VDUPQ_M_N_F VCMPGTQ_M_F VCMPLTQ_M_F VRMLSLDAVHQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
117 VQSHRUNTQ_N_S VABSQ_M_F VMAXNMAVQ_P_F VFMAQ_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
118 VRMLSLDAVHXQ_P_S VREV32Q_M_F VRMLSLDAVHAQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
119 VRMLSLDAVHAXQ_S VCMPLTQ_M_N_F VCMPNEQ_M_F VRNDAQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
120 VRNDPQ_M_F VADDLVAQ_P_S VQMOVUNBQ_M_S VCMPLEQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
121 VCMLAQ_ROT180_F VMLSLDAVAXQ_S VRNDXQ_M_F VFMSQ_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
122 VMINNMVQ_P_F VMAXNMVQ_P_F VPSELQ_F VCMLAQ_ROT90_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
123 VQMOVUNTQ_M_S VREV64Q_M_F VNEGQ_M_F VRNDMQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
124 VCMPLEQ_M_N_F VCMPGEQ_M_N_F VRNDNQ_M_F VMINNMAVQ_P_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
125 VCMPNEQ_M_N_F VRMLALDAVHQ_P_S VRMLALDAVHXQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
126 VCMPEQQ_M_N_F VCMLAQ_ROT270_F VMAXNMAQ_M_F VRNDQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
127 VMLALDAVQ_P_U VMLALDAVQ_P_S VQMOVNBQ_M_S VQMOVNBQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
128 VMOVLTQ_M_U VMOVLTQ_M_S VMOVNBQ_M_U VMOVNBQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
129 VRSHRNTQ_N_U VRSHRNTQ_N_S VORRQ_M_N_S VORRQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
130 VREV32Q_M_S VREV32Q_M_U VQRSHRNTQ_N_U VQRSHRNTQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
131 VMOVNTQ_M_U VMOVNTQ_M_S VMOVLBQ_M_U VMOVLBQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
132 VMLALDAVAQ_S VMLALDAVAQ_U VQSHRNBQ_N_U VQSHRNBQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
133 VSHRNBQ_N_U VSHRNBQ_N_S VRSHRNBQ_N_S VRSHRNBQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
134 VMLALDAVXQ_P_U VMLALDAVXQ_P_S VQMOVNTQ_M_U VQMOVNTQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
135 VMVNQ_M_N_U VMVNQ_M_N_S VQSHRNTQ_N_U VQSHRNTQ_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
136 VMLALDAVAXQ_S VMLALDAVAXQ_U VSHRNTQ_N_S VSHRNTQ_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
137 VCVTBQ_M_F16_F32 VCVTBQ_M_F32_F16 VCVTTQ_M_F16_F32
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
138 VCVTTQ_M_F32_F16 VCVTMQ_M_S VCVTMQ_M_U VCVTNQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
139 VCVTPQ_M_S VCVTPQ_M_U VCVTQ_M_N_FROM_F_S VCVTNQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
140 VREV16Q_M_S VREV16Q_M_U VREV32Q_M VCVTQ_M_FROM_F_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
141 VCVTQ_M_FROM_F_S VRMLALDAVHQ_P_U VADDLVAQ_P_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
142 VCVTQ_M_N_FROM_F_U VQSHLUQ_M_N_S VABAVQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
143 VABAVQ_P_U VSHLQ_M_S VSHLQ_M_U VSRIQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
144 VSRIQ_M_N_U VSUBQ_M_U VSUBQ_M_S VCVTQ_M_N_TO_F_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
145 VCVTQ_M_N_TO_F_S VQADDQ_M_U VQADDQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
146 VRSHRQ_M_N_S VSUBQ_M_N_S VSUBQ_M_N_U VBRSRQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
147 VSUBQ_M_N_F VBICQ_M_F VHADDQ_M_U VBICQ_M_U VBICQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
148 VMULQ_M_N_U VHADDQ_M_S VORNQ_M_F VMLAQ_M_N_S VQSUBQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
149 VQSUBQ_M_S VMLAQ_M_N_U VQSUBQ_M_N_U VQSUBQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
150 VMULLTQ_INT_M_S VMULLTQ_INT_M_U VMULQ_M_N_S VMULQ_M_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
151 VMLASQ_M_N_U VMLASQ_M_N_S VMAXQ_M_U VQRDMLAHQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
152 VCADDQ_ROT270_M_F VCADDQ_ROT270_M_U VCADDQ_ROT270_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
153 VQRSHLQ_M_S VMULQ_M_F VRHADDQ_M_U VSHRQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
154 VRHADDQ_M_S VMULQ_M_S VMULQ_M_U VQRDMLASHQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
155 VRSHLQ_M_S VRSHLQ_M_U VRSHRQ_M_N_U VADDQ_M_N_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
156 VADDQ_M_N_S VADDQ_M_N_U VQRDMLASHQ_M_N_U VMAXQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
157 VQRDMLAHQ_M_N_S VORRQ_M_S VORRQ_M_U VORRQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
158 VQRSHLQ_M_U VRMULHQ_M_U VRMULHQ_M_S VMINQ_M_S VMINQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
159 VANDQ_M_F VANDQ_M_U VANDQ_M_S VHSUBQ_M_N_S VHSUBQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
160 VMULHQ_M_S VMULHQ_M_U VMULLBQ_INT_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
161 VMULLBQ_INT_M_S VCADDQ_ROT90_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
162 VSHRQ_M_N_S VADDQ_M_U VSLIQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
163 VQADDQ_M_N_S VBRSRQ_M_N_F VABDQ_M_F VBRSRQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
164 VEORQ_M_F VSHLQ_M_N_S VQDMLAHQ_M_N_U VQDMLAHQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
165 VSHLQ_M_N_U VMLADAVAQ_P_U VMLADAVAQ_P_S VSLIQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
166 VQSHLQ_M_U VQSHLQ_M_S VCADDQ_ROT90_M_U VCADDQ_ROT90_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
167 VORNQ_M_U VORNQ_M_S VQSHLQ_M_N_S VQSHLQ_M_N_U VADDQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
168 VHADDQ_M_N_S VADDQ_M_F VQADDQ_M_N_U VEORQ_M_S VEORQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
169 VHSUBQ_M_S VHSUBQ_M_U VHADDQ_M_N_U VHCADDQ_ROT90_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
170 VQRDMLSDHQ_M_S VQRDMLSDHXQ_M_S VQRDMLADHXQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
171 VQDMULHQ_M_S VMLADAVAXQ_P_S VQDMLADHXQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
172 VQRDMULHQ_M_S VMLSDAVAXQ_P_S VQDMULHQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
173 VHCADDQ_ROT270_M_S VQDMLSDHQ_M_S VQDMLSDHXQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
174 VMLSDAVAQ_P_S VQRDMLADHQ_M_S VQDMLADHQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
175 VMLALDAVAQ_P_U VMLALDAVAQ_P_S VMLALDAVAXQ_P_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
176 VQRSHRNBQ_M_N_U VQRSHRNBQ_M_N_S VQRSHRNTQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
177 VQSHRNBQ_M_N_U VQSHRNBQ_M_N_S VQSHRNTQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
178 VRSHRNBQ_M_N_U VRSHRNBQ_M_N_S VRSHRNTQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
179 VSHLLBQ_M_N_U VSHLLBQ_M_N_S VSHLLTQ_M_N_U VSHLLTQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
180 VSHRNBQ_M_N_S VSHRNBQ_M_N_U VSHRNTQ_M_N_S VSHRNTQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
181 VMLALDAVAXQ_P_S VQRSHRNTQ_M_N_U VQSHRNTQ_M_N_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
182 VRSHRNTQ_M_N_S VQRDMULHQ_M_N_S VRMLALDAVHAQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
183 VMLSLDAVAQ_P_S VMLSLDAVAXQ_P_S VMULLBQ_POLY_M_P
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
184 VMULLTQ_POLY_M_P VQDMULLBQ_M_N_S VQDMULLBQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
185 VQDMULLTQ_M_N_S VQDMULLTQ_M_S VQRSHRUNBQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
186 VQRSHRUNTQ_M_N_SVQSHRUNBQ_M_N_S VQSHRUNTQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
187 VRMLALDAVHAQ_P_U VRMLALDAVHAXQ_P_S VRMLSLDAVHAQ_P_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
188 VRMLSLDAVHAXQ_P_S VQRSHRUNTQ_M_N_S VQSHRUNBQ_M_N_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
189 VCMLAQ_M_F VCMLAQ_ROT180_M_F VCMLAQ_ROT270_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
190 VCMLAQ_ROT90_M_F VCMULQ_M_F VCMULQ_ROT180_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
191 VCMULQ_ROT270_M_F VCMULQ_ROT90_M_F VFMAQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
192 VFMAQ_M_N_F VFMASQ_M_N_F VFMSQ_M_F VMAXNMQ_M_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
193 VMINNMQ_M_F VSUBQ_M_F VSTRWQSB_S VSTRWQSB_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
194 VSTRBQSO_S VSTRBQSO_U VSTRBQ_S VSTRBQ_U VLDRBQGO_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
195 VLDRBQGO_U VLDRBQ_S VLDRBQ_U VLDRWQGB_S VLDRWQGB_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
196 VLD1Q_F VLD1Q_S VLD1Q_U VLDRHQ_F VLDRHQGO_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
197 VLDRHQGO_U VLDRHQGSO_S VLDRHQGSO_U VLDRHQ_S VLDRHQ_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
198 VLDRWQ_F VLDRWQ_S VLDRWQ_U VLDRDQGB_S VLDRDQGB_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
199 VLDRDQGO_S VLDRDQGO_U VLDRDQGSO_S VLDRDQGSO_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
200 VLDRHQGO_F VLDRHQGSO_F VLDRWQGB_F VLDRWQGO_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
201 VLDRWQGO_S VLDRWQGO_U VLDRWQGSO_F VLDRWQGSO_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
202 VLDRWQGSO_U VSTRHQ_F VST1Q_S VST1Q_U VSTRHQSO_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
203 VSTRHQSO_U VSTRHQSSO_S VSTRHQSSO_U VSTRHQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
204 VSTRHQ_U VSTRWQ_S VSTRWQ_U VSTRWQ_F VST1Q_F VSTRDQSB_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
205 VSTRDQSB_U VSTRDQSO_S VSTRDQSO_U VSTRDQSSO_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
206 VSTRDQSSO_U VSTRWQSO_S VSTRWQSO_U VSTRWQSSO_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
207 VSTRWQSSO_U VSTRHQSO_F VSTRHQSSO_F VSTRWQSB_F
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
208 VSTRWQSO_F VSTRWQSSO_F VDDUPQ VDDUPQ_M VDWDUPQ
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
209 VDWDUPQ_M VIDUPQ VIDUPQ_M VIWDUPQ VIWDUPQ_M
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
210 VSTRWQSBWB_S VSTRWQSBWB_U VLDRWQGBWB_S VLDRWQGBWB_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
211 VSTRWQSBWB_F VLDRWQGBWB_F VSTRDQSBWB_S VSTRDQSBWB_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
212 VLDRDQGBWB_S VLDRDQGBWB_U VADCQ_U VADCQ_M_U VADCQ_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
213 VADCQ_M_S VSBCIQ_U VSBCIQ_S VSBCIQ_M_U VSBCIQ_M_S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
214 VSBCQ_U VSBCQ_S VSBCQ_M_U VSBCQ_M_S VADCIQ_U VADCIQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
215 VADCIQ_S VADCIQ_M_S VLD2Q VLD4Q VST2Q SRSHRL SRSHR
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
216 URSHR URSHRL SQRSHR UQRSHL UQRSHLL_64 VSHLCQ_M_U
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
217 UQRSHLL_48 SQRSHRL_64 SQRSHRL_48 VSHLCQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
218
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
219 (define_mode_attr MVE_CNVT [(V8HI "V8HF") (V4SI "V4SF") (V8HF "V8HI")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
220 (V4SF "V4SI")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
221
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
222 (define_int_attr supf [(VCVTQ_TO_F_S "s") (VCVTQ_TO_F_U "u") (VREV16Q_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
223 (VREV16Q_U "u") (VMVNQ_N_S "s") (VMVNQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
224 (VCVTAQ_U "u") (VCVTAQ_S "s") (VREV64Q_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
225 (VREV64Q_U "u") (VMVNQ_S "s") (VMVNQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
226 (VDUPQ_N_U "u") (VDUPQ_N_S"s") (VADDVQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
227 (VADDVQ_U "u") (VADDVQ_S "s") (VADDVQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
228 (VMOVLTQ_U "u") (VMOVLTQ_S "s") (VMOVLBQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
229 (VMOVLBQ_U "u") (VCVTQ_FROM_F_S "s") (VCVTQ_FROM_F_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
230 (VCVTPQ_S "s") (VCVTPQ_U "u") (VCVTNQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
231 (VCVTNQ_U "u") (VCVTMQ_S "s") (VCVTMQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
232 (VCLZQ_U "u") (VCLZQ_S "s") (VREV32Q_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
233 (VREV32Q_S "s") (VADDLVQ_U "u") (VADDLVQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
234 (VCVTQ_N_TO_F_S "s") (VCVTQ_N_TO_F_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
235 (VCREATEQ_U "u") (VCREATEQ_S "s") (VSHRQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
236 (VSHRQ_N_U "u") (VCVTQ_N_FROM_F_S "s") (VSHLQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
237 (VCVTQ_N_FROM_F_U "u") (VADDLVQ_P_S "s") (VSHLQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
238 (VADDLVQ_P_U "u") (VCMPNEQ_U "u") (VCMPNEQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
239 (VABDQ_M_S "s") (VABDQ_M_U "u") (VABDQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
240 (VABDQ_U "u") (VADDQ_N_S "s") (VADDQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
241 (VADDVQ_P_S "s") (VADDVQ_P_U "u") (VANDQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
242 (VANDQ_U "u") (VBICQ_S "s") (VBICQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
243 (VBRSRQ_N_S "s") (VBRSRQ_N_U "u") (VCADDQ_ROT270_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
244 (VCADDQ_ROT270_U "u") (VCADDQ_ROT90_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
245 (VCMPEQQ_S "s") (VCMPEQQ_U "u") (VCADDQ_ROT90_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
246 (VCMPEQQ_N_S "s") (VCMPEQQ_N_U "u") (VCMPNEQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
247 (VCMPNEQ_N_U "u") (VEORQ_S "s") (VEORQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
248 (VHADDQ_N_S "s") (VHADDQ_N_U "u") (VHADDQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
249 (VHADDQ_U "u") (VHSUBQ_N_S "s") (VHSUBQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
250 (VHSUBQ_S "s") (VMAXQ_S "s") (VMAXQ_U "u") (VHSUBQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
251 (VMAXVQ_S "s") (VMAXVQ_U "u") (VMINQ_S "s") (VMINQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
252 (VMINVQ_S "s") (VMINVQ_U "u") (VMLADAVQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
253 (VMLADAVQ_U "u") (VMULHQ_S "s") (VMULHQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
254 (VMULLBQ_INT_S "s") (VMULLBQ_INT_U "u") (VQADDQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
255 (VMULLTQ_INT_S "s") (VMULLTQ_INT_U "u") (VQADDQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
256 (VMULQ_N_S "s") (VMULQ_N_U "u") (VMULQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
257 (VMULQ_U "u") (VORNQ_S "s") (VORNQ_U "u") (VORRQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
258 (VORRQ_U "u") (VQADDQ_N_S "s") (VQADDQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
259 (VQRSHLQ_N_S "s") (VQRSHLQ_N_U "u") (VQRSHLQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
260 (VQRSHLQ_U "u") (VQSHLQ_N_S "s") (VQSHLQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
261 (VQSHLQ_R_S "s") (VQSHLQ_R_U "u") (VQSHLQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
262 (VQSHLQ_U "u") (VQSUBQ_N_S "s") (VQSUBQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
263 (VQSUBQ_S "s") (VQSUBQ_U "u") (VRHADDQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
264 (VRHADDQ_U "u") (VRMULHQ_S "s") (VRMULHQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
265 (VRSHLQ_N_S "s") (VRSHLQ_N_U "u") (VRSHLQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
266 (VRSHLQ_U "u") (VRSHRQ_N_S "s") (VRSHRQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
267 (VSHLQ_N_S "s") (VSHLQ_N_U "u") (VSHLQ_R_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
268 (VSHLQ_R_U "u") (VSUBQ_N_S "s") (VSUBQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
269 (VSUBQ_S "s") (VSUBQ_U "u") (VADDVAQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
270 (VADDVAQ_U "u") (VADDLVAQ_S "s") (VADDLVAQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
271 (VBICQ_N_S "s") (VBICQ_N_U "u") (VMLALDAVQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
272 (VMLALDAVQ_S "s") (VMLALDAVXQ_U "u") (VMLALDAVXQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
273 (VMOVNBQ_U "u") (VMOVNBQ_S "s") (VMOVNTQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
274 (VMOVNTQ_S "s") (VORRQ_N_S "s") (VORRQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
275 (VQMOVNBQ_U "u") (VQMOVNBQ_S "s") (VQMOVNTQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
276 (VQMOVNTQ_U "u") (VSHLLBQ_N_U "u") (VSHLLBQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
277 (VSHLLTQ_N_U "u") (VSHLLTQ_N_S "s") (VRMLALDAVHQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
278 (VRMLALDAVHQ_S "s") (VBICQ_M_N_S "s") (VBICQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
279 (VCVTAQ_M_S "s") (VCVTAQ_M_U "u") (VCVTQ_M_TO_F_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
280 (VCVTQ_M_TO_F_U "u") (VQRSHRNBQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
281 (VQRSHRNBQ_N_U "u") (VABAVQ_S "s") (VABAVQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
282 (VRMLALDAVHAQ_U "u") (VRMLALDAVHAQ_S "s") (VSHLCQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
283 (VSHLCQ_U "u") (VADDVAQ_P_S "s") (VADDVAQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
284 (VCLZQ_M_S "s") (VCLZQ_M_U "u") (VCMPEQQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
285 (VCMPEQQ_M_N_U "u") (VCMPEQQ_M_S "s") (VCMPEQQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
286 (VCMPNEQ_M_N_S "s") (VCMPNEQ_M_N_U "u") (VCMPNEQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
287 (VCMPNEQ_M_U "u") (VDUPQ_M_N_S "s") (VDUPQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
288 (VMAXVQ_P_S "s") (VMAXVQ_P_U "u") (VMINVQ_P_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
289 (VMINVQ_P_U "u") (VMLADAVAQ_S "s") (VMLADAVAQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
290 (VMLADAVQ_P_S "s") (VMLADAVQ_P_U "u") (VMLAQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
291 (VMLAQ_N_U "u") (VMLASQ_N_S "s") (VMLASQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
292 (VMVNQ_M_S "s") (VMVNQ_M_U "u") (VPSELQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
293 (VPSELQ_U "u") (VQDMLAHQ_N_S "s") (VQDMLAHQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
294 (VQRDMLAHQ_N_S "s") (VQRDMLAHQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
295 (VQRDMLASHQ_N_S "s") (VQRDMLASHQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
296 (VQRSHLQ_M_N_S "s") (VQRSHLQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
297 (VQSHLQ_M_R_S "s") (VQSHLQ_M_R_U "u") (VSRIQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
298 (VREV64Q_M_S "s") (VREV64Q_M_U "u") (VSRIQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
299 (VRSHLQ_M_N_S "s") (VRSHLQ_M_N_U "u") (VSHLQ_M_R_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
300 (VSHLQ_M_R_U "u") (VSLIQ_N_S "s") (VSLIQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
301 (VMLALDAVQ_P_S "s") (VQMOVNBQ_M_S "s") (VMOVLTQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
302 (VMOVNBQ_M_S "s") (VRSHRNTQ_N_S "s") (VORRQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
303 (VREV32Q_M_S "s") (VQRSHRNTQ_N_S "s") (VMOVNTQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
304 (VMOVLBQ_M_S "s") (VMLALDAVAQ_S "s") (VQSHRNBQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
305 (VSHRNBQ_N_S "s") (VRSHRNBQ_N_S "s") (VMLALDAVXQ_P_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
306 (VQMOVNTQ_M_S "s") (VMVNQ_M_N_S "s") (VQSHRNTQ_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
307 (VMLALDAVAXQ_S "s") (VSHRNTQ_N_S "s") (VMLALDAVQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
308 (VQMOVNBQ_M_U "u") (VMOVLTQ_M_U "u") (VMOVNBQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
309 (VRSHRNTQ_N_U "u") (VORRQ_M_N_U "u") (VREV32Q_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
310 (VREV16Q_M_S "s") (VREV16Q_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
311 (VQRSHRNTQ_N_U "u") (VMOVNTQ_M_U "u") (VMOVLBQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
312 (VMLALDAVAQ_U "u") (VQSHRNBQ_N_U "u") (VSHRNBQ_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
313 (VRSHRNBQ_N_U "u") (VMLALDAVXQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
314 (VMVNQ_M_N_U "u") (VQSHRNTQ_N_U "u") (VMLALDAVAXQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
315 (VQMOVNTQ_M_U "u") (VSHRNTQ_N_U "u") (VCVTMQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
316 (VCVTMQ_M_U "u") (VCVTNQ_M_S "s") (VCVTNQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
317 (VCVTPQ_M_S "s") (VCVTPQ_M_U "u") (VADDLVAQ_P_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
318 (VCVTQ_M_N_FROM_F_U "u") (VCVTQ_M_FROM_F_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
319 (VCVTQ_M_FROM_F_U "u") (VRMLALDAVHQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
320 (VRMLALDAVHQ_P_S "s") (VADDLVAQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
321 (VCVTQ_M_N_FROM_F_S "s") (VABAVQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
322 (VABAVQ_P_S "s") (VSHLQ_M_S "s") (VSHLQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
323 (VSRIQ_M_N_S "s") (VSRIQ_M_N_U "u") (VSUBQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
324 (VSUBQ_M_U "u") (VCVTQ_M_N_TO_F_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
325 (VCVTQ_M_N_TO_F_U "u") (VADDQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
326 (VSHLQ_M_N_S "s") (VMAXQ_M_U "u") (VHSUBQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
327 (VMULQ_M_N_S "s") (VQSHLQ_M_U "u") (VRHADDQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
328 (VEORQ_M_U "u") (VSHRQ_M_N_U "u") (VCADDQ_ROT90_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
329 (VMLADAVAQ_P_U "u") (VEORQ_M_S "s") (VBRSRQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
330 (VMULQ_M_U "u") (VQRDMLAHQ_M_N_S "s") (VHSUBQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
331 (VQRSHLQ_M_S "s") (VMULQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
332 (VMULQ_M_S "s") (VQSHLQ_M_N_U "u") (VSLIQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
333 (VMLADAVAQ_P_S "s") (VQRSHLQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
334 (VMULLBQ_INT_M_U "u") (VSHLQ_M_N_U "u") (VQSUBQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
335 (VQRDMLASHQ_M_N_U "u") (VRSHRQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
336 (VORNQ_M_S "s") (VCADDQ_ROT270_M_S "s") (VRHADDQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
337 (VRSHRQ_M_N_U "u") (VMLASQ_M_N_U "u") (VHSUBQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
338 (VQSUBQ_M_N_S "s") (VMULLTQ_INT_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
339 (VORRQ_M_S "s") (VQDMLAHQ_M_N_U "u") (VRSHLQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
340 (VHADDQ_M_U "u") (VHADDQ_M_N_S "s") (VMULLTQ_INT_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
341 (VORRQ_M_U "u") (VHADDQ_M_S "s") (VHADDQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
342 (VQDMLAHQ_M_N_S "s") (VMAXQ_M_S "s") (VORNQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
343 (VCADDQ_ROT270_M_U "u") (VQADDQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
344 (VQRDMLASHQ_M_N_S "s") (VBICQ_M_U "u") (VMINQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
345 (VSUBQ_M_N_S "s") (VMULLBQ_INT_M_S "s") (VQSUBQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
346 (VCADDQ_ROT90_M_S "s") (VRMULHQ_M_S "s") (VANDQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
347 (VMULHQ_M_S "s") (VADDQ_M_S "s") (VQRDMLAHQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
348 (VMLASQ_M_N_S "s") (VHSUBQ_M_S "s") (VRMULHQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
349 (VQADDQ_M_N_S "s") (VSHRQ_M_N_S "s") (VANDQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
350 (VABDQ_M_U "u") (VQSHLQ_M_S "s") (VABDQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
351 (VSUBQ_M_N_U "u") (VMLAQ_M_N_S "s") (VBRSRQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
352 (VADDQ_M_U "u") (VRSHLQ_M_U "u") (VSLIQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
353 (VQADDQ_M_N_U "u") (VADDQ_M_N_S "s") (VQSUBQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
354 (VMLAQ_M_N_U "u") (VMINQ_M_S "s") (VMULHQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
355 (VQADDQ_M_S "s") (VBICQ_M_S "s") (VQSHLQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
356 (VQSHRNTQ_M_N_S "s") (VQSHRNTQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
357 (VSHRNTQ_M_N_U "u") (VSHRNTQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
358 (VSHRNBQ_M_N_S "s") (VSHRNBQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
359 (VSHLLTQ_M_N_S "s") (VSHLLTQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
360 (VSHLLBQ_M_N_S "s") (VSHLLBQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
361 (VRSHRNTQ_M_N_S "s") (VRSHRNTQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
362 (VRSHRNBQ_M_N_U "u") (VRSHRNBQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
363 (VQSHRNTQ_M_N_U "u") (VQSHRNTQ_M_N_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
364 (VQSHRNBQ_M_N_S "s") (VQSHRNBQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
365 (VQRSHRNTQ_M_N_S "s") (VQRSHRNTQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
366 (VQRSHRNBQ_M_N_S "s") (VQRSHRNBQ_M_N_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
367 (VMLALDAVAXQ_P_S "s") (VMLALDAVAXQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
368 (VMLALDAVAQ_P_S "s") (VMLALDAVAQ_P_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
369 (VSTRWQSB_S "s") (VSTRWQSB_U "u") (VSTRBQSO_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
370 (VSTRBQSO_U "u") (VSTRBQ_S "s") (VSTRBQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
371 (VLDRBQGO_S "s") (VLDRBQGO_U "u") (VLDRBQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
372 (VLDRBQ_U "u") (VLDRWQGB_S "s") (VLDRWQGB_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
373 (VLD1Q_S "s") (VLD1Q_U "u") (VLDRHQGO_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
374 (VLDRHQGO_U "u") (VLDRHQGSO_S "s") (VLDRHQGSO_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
375 (VLDRHQ_S "s") (VLDRHQ_U "u") (VLDRWQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
376 (VLDRWQ_U "u") (VLDRDQGB_S "s") (VLDRDQGB_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
377 (VLDRDQGO_S "s") (VLDRDQGO_U "u") (VLDRDQGSO_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
378 (VLDRDQGSO_U "u") (VLDRWQGO_S "s") (VLDRWQGO_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
379 (VLDRWQGSO_S "s") (VLDRWQGSO_U "u") (VST1Q_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
380 (VST1Q_U "u") (VSTRHQSO_S "s") (VSTRHQSO_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
381 (VSTRHQSSO_S "s") (VSTRHQSSO_U "u") (VSTRHQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
382 (VSTRHQ_U "u") (VSTRWQ_S "s") (VSTRWQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
383 (VSTRDQSB_S "s") (VSTRDQSB_U "u") (VSTRDQSO_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
384 (VSTRDQSO_U "u") (VSTRDQSSO_S "s") (VSTRDQSSO_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
385 (VSTRWQSO_U "u") (VSTRWQSO_S "s") (VSTRWQSSO_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
386 (VSTRWQSSO_S "s") (VSTRWQSBWB_S "s") (VSTRWQSBWB_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
387 (VLDRWQGBWB_S "s") (VLDRWQGBWB_U "u") (VLDRDQGBWB_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
388 (VLDRDQGBWB_U "u") (VSTRDQSBWB_S "s") (VADCQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
389 (VSTRDQSBWB_U "u") (VSBCQ_U "u") (VSBCQ_M_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
390 (VSBCQ_S "s") (VSBCQ_M_S "s") (VSBCIQ_U "u")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
391 (VSBCIQ_M_U "u") (VSBCIQ_S "s") (VSBCIQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
392 (VADCQ_U "u") (VADCQ_M_U "u") (VADCQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
393 (VADCIQ_U "u") (VADCIQ_M_U "u") (VADCIQ_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
394 (VADCIQ_M_S "s") (SQRSHRL_64 "64") (SQRSHRL_48 "48")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
395 (UQRSHLL_64 "64") (UQRSHLL_48 "48") (VSHLCQ_M_S "s")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
396 (VSHLCQ_M_U "u")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
397
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
398 (define_int_attr mode1 [(VCTP8Q "8") (VCTP16Q "16") (VCTP32Q "32")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
399 (VCTP64Q "64") (VCTP8Q_M "8") (VCTP16Q_M "16")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
400 (VCTP32Q_M "32") (VCTP64Q_M "64")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
401 (define_mode_attr MVE_pred2 [(V16QI "mve_imm_8") (V8HI "mve_imm_16")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
402 (V4SI "mve_imm_32")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
403 (V8HF "mve_imm_16") (V4SF "mve_imm_32")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
404 (define_mode_attr MVE_constraint2 [(V16QI "Rb") (V8HI "Rd") (V4SI "Rf")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
405 (V8HF "Rd") (V4SF "Rf")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
406 (define_mode_attr MVE_LANES [(V16QI "16") (V8HI "8") (V4SI "4")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
407 (define_mode_attr MVE_constraint [ (V16QI "Ra") (V8HI "Rc") (V4SI "Re")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
408 (define_mode_attr MVE_pred [ (V16QI "mve_imm_7") (V8HI "mve_imm_15")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
409 (V4SI "mve_imm_31")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
410 (define_mode_attr MVE_constraint3 [ (V8HI "Rb") (V4SI "Rd")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
411 (define_mode_attr MVE_pred3 [ (V8HI "mve_imm_8") (V4SI "mve_imm_16")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
412 (define_mode_attr MVE_constraint1 [ (V8HI "Ra") (V4SI "Rc")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
413 (define_mode_attr MVE_pred1 [ (V8HI "mve_imm_7") (V4SI "mve_imm_15")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
414 (define_mode_attr MVE_B_ELEM [ (V16QI "V16QI") (V8HI "V8QI") (V4SI "V4QI")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
415 (define_mode_attr MVE_H_ELEM [ (V8HI "V8HI") (V4SI "V4HI")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
416 (define_mode_attr V_sz_elem1 [(V16QI "b") (V8HI "h") (V4SI "w") (V8HF "h")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
417 (V4SF "w")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
418 (define_mode_attr V_extr_elem [(V16QI "u8") (V8HI "u16") (V4SI "32")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
419 (V8HF "u16") (V4SF "32")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
420
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
421 (define_mode_attr earlyclobber_32 [(V16QI "=w") (V8HI "=w") (V4SI "=&w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
422 (V8HF "=w") (V4SF "=&w")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
423
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
424 (define_int_iterator VCVTQ_TO_F [VCVTQ_TO_F_S VCVTQ_TO_F_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
425 (define_int_iterator VMVNQ_N [VMVNQ_N_U VMVNQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
426 (define_int_iterator VREV64Q [VREV64Q_S VREV64Q_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
427 (define_int_iterator VCVTQ_FROM_F [VCVTQ_FROM_F_S VCVTQ_FROM_F_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
428 (define_int_iterator VREV16Q [VREV16Q_U VREV16Q_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
429 (define_int_iterator VCVTAQ [VCVTAQ_U VCVTAQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
430 (define_int_iterator VMVNQ [VMVNQ_U VMVNQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
431 (define_int_iterator VDUPQ_N [VDUPQ_N_U VDUPQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
432 (define_int_iterator VCLZQ [VCLZQ_U VCLZQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
433 (define_int_iterator VADDVQ [VADDVQ_U VADDVQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
434 (define_int_iterator VREV32Q [VREV32Q_U VREV32Q_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
435 (define_int_iterator VMOVLBQ [VMOVLBQ_S VMOVLBQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
436 (define_int_iterator VMOVLTQ [VMOVLTQ_U VMOVLTQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
437 (define_int_iterator VCVTPQ [VCVTPQ_S VCVTPQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
438 (define_int_iterator VCVTNQ [VCVTNQ_S VCVTNQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
439 (define_int_iterator VCVTMQ [VCVTMQ_S VCVTMQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
440 (define_int_iterator VADDLVQ [VADDLVQ_U VADDLVQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
441 (define_int_iterator VCTPQ [VCTP8Q VCTP16Q VCTP32Q VCTP64Q])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
442 (define_int_iterator VCTPQ_M [VCTP8Q_M VCTP16Q_M VCTP32Q_M VCTP64Q_M])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
443 (define_int_iterator VCVTQ_N_TO_F [VCVTQ_N_TO_F_S VCVTQ_N_TO_F_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
444 (define_int_iterator VCREATEQ [VCREATEQ_U VCREATEQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
445 (define_int_iterator VSHRQ_N [VSHRQ_N_S VSHRQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
446 (define_int_iterator VCVTQ_N_FROM_F [VCVTQ_N_FROM_F_S VCVTQ_N_FROM_F_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
447 (define_int_iterator VADDLVQ_P [VADDLVQ_P_S VADDLVQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
448 (define_int_iterator VCMPNEQ [VCMPNEQ_U VCMPNEQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
449 (define_int_iterator VSHLQ [VSHLQ_S VSHLQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
450 (define_int_iterator VABDQ [VABDQ_S VABDQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
451 (define_int_iterator VADDQ_N [VADDQ_N_S VADDQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
452 (define_int_iterator VADDVAQ [VADDVAQ_S VADDVAQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
453 (define_int_iterator VADDVQ_P [VADDVQ_P_U VADDVQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
454 (define_int_iterator VANDQ [VANDQ_U VANDQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
455 (define_int_iterator VBICQ [VBICQ_S VBICQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
456 (define_int_iterator VBRSRQ_N [VBRSRQ_N_U VBRSRQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
457 (define_int_iterator VCADDQ_ROT270 [VCADDQ_ROT270_S VCADDQ_ROT270_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
458 (define_int_iterator VCADDQ_ROT90 [VCADDQ_ROT90_U VCADDQ_ROT90_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
459 (define_int_iterator VCMPEQQ [VCMPEQQ_U VCMPEQQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
460 (define_int_iterator VCMPEQQ_N [VCMPEQQ_N_S VCMPEQQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
461 (define_int_iterator VCMPNEQ_N [VCMPNEQ_N_U VCMPNEQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
462 (define_int_iterator VEORQ [VEORQ_U VEORQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
463 (define_int_iterator VHADDQ [VHADDQ_S VHADDQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
464 (define_int_iterator VHADDQ_N [VHADDQ_N_U VHADDQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
465 (define_int_iterator VHSUBQ [VHSUBQ_S VHSUBQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
466 (define_int_iterator VHSUBQ_N [VHSUBQ_N_U VHSUBQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
467 (define_int_iterator VMAXQ [VMAXQ_U VMAXQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
468 (define_int_iterator VMAXVQ [VMAXVQ_U VMAXVQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
469 (define_int_iterator VMINQ [VMINQ_S VMINQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
470 (define_int_iterator VMINVQ [VMINVQ_U VMINVQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
471 (define_int_iterator VMLADAVQ [VMLADAVQ_U VMLADAVQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
472 (define_int_iterator VMULHQ [VMULHQ_S VMULHQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
473 (define_int_iterator VMULLBQ_INT [VMULLBQ_INT_U VMULLBQ_INT_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
474 (define_int_iterator VMULLTQ_INT [VMULLTQ_INT_U VMULLTQ_INT_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
475 (define_int_iterator VMULQ [VMULQ_U VMULQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
476 (define_int_iterator VMULQ_N [VMULQ_N_U VMULQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
477 (define_int_iterator VORNQ [VORNQ_U VORNQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
478 (define_int_iterator VORRQ [VORRQ_S VORRQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
479 (define_int_iterator VQADDQ [VQADDQ_U VQADDQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
480 (define_int_iterator VQADDQ_N [VQADDQ_N_S VQADDQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
481 (define_int_iterator VQRSHLQ [VQRSHLQ_S VQRSHLQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
482 (define_int_iterator VQRSHLQ_N [VQRSHLQ_N_S VQRSHLQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
483 (define_int_iterator VQSHLQ [VQSHLQ_S VQSHLQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
484 (define_int_iterator VQSHLQ_N [VQSHLQ_N_S VQSHLQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
485 (define_int_iterator VQSHLQ_R [VQSHLQ_R_U VQSHLQ_R_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
486 (define_int_iterator VQSUBQ [VQSUBQ_U VQSUBQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
487 (define_int_iterator VQSUBQ_N [VQSUBQ_N_S VQSUBQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
488 (define_int_iterator VRHADDQ [VRHADDQ_S VRHADDQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
489 (define_int_iterator VRMULHQ [VRMULHQ_S VRMULHQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
490 (define_int_iterator VRSHLQ [VRSHLQ_S VRSHLQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
491 (define_int_iterator VRSHLQ_N [VRSHLQ_N_U VRSHLQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
492 (define_int_iterator VRSHRQ_N [VRSHRQ_N_S VRSHRQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
493 (define_int_iterator VSHLQ_N [VSHLQ_N_U VSHLQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
494 (define_int_iterator VSHLQ_R [VSHLQ_R_S VSHLQ_R_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
495 (define_int_iterator VSUBQ [VSUBQ_S VSUBQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
496 (define_int_iterator VSUBQ_N [VSUBQ_N_S VSUBQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
497 (define_int_iterator VADDLVAQ [VADDLVAQ_S VADDLVAQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
498 (define_int_iterator VBICQ_N [VBICQ_N_S VBICQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
499 (define_int_iterator VMLALDAVQ [VMLALDAVQ_U VMLALDAVQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
500 (define_int_iterator VMLALDAVXQ [VMLALDAVXQ_U VMLALDAVXQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
501 (define_int_iterator VMOVNBQ [VMOVNBQ_U VMOVNBQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
502 (define_int_iterator VMOVNTQ [VMOVNTQ_S VMOVNTQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
503 (define_int_iterator VORRQ_N [VORRQ_N_U VORRQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
504 (define_int_iterator VQMOVNBQ [VQMOVNBQ_U VQMOVNBQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
505 (define_int_iterator VQMOVNTQ [VQMOVNTQ_U VQMOVNTQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
506 (define_int_iterator VSHLLBQ_N [VSHLLBQ_N_S VSHLLBQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
507 (define_int_iterator VSHLLTQ_N [VSHLLTQ_N_U VSHLLTQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
508 (define_int_iterator VRMLALDAVHQ [VRMLALDAVHQ_U VRMLALDAVHQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
509 (define_int_iterator VBICQ_M_N [VBICQ_M_N_S VBICQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
510 (define_int_iterator VCVTAQ_M [VCVTAQ_M_S VCVTAQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
511 (define_int_iterator VCVTQ_M_TO_F [VCVTQ_M_TO_F_S VCVTQ_M_TO_F_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
512 (define_int_iterator VQRSHRNBQ_N [VQRSHRNBQ_N_U VQRSHRNBQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
513 (define_int_iterator VABAVQ [VABAVQ_S VABAVQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
514 (define_int_iterator VSHLCQ [VSHLCQ_S VSHLCQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
515 (define_int_iterator VRMLALDAVHAQ [VRMLALDAVHAQ_S VRMLALDAVHAQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
516 (define_int_iterator VADDVAQ_P [VADDVAQ_P_S VADDVAQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
517 (define_int_iterator VCLZQ_M [VCLZQ_M_S VCLZQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
518 (define_int_iterator VCMPEQQ_M_N [VCMPEQQ_M_N_S VCMPEQQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
519 (define_int_iterator VCMPEQQ_M [VCMPEQQ_M_S VCMPEQQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
520 (define_int_iterator VCMPNEQ_M_N [VCMPNEQ_M_N_S VCMPNEQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
521 (define_int_iterator VCMPNEQ_M [VCMPNEQ_M_S VCMPNEQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
522 (define_int_iterator VDUPQ_M_N [VDUPQ_M_N_S VDUPQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
523 (define_int_iterator VMAXVQ_P [VMAXVQ_P_S VMAXVQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
524 (define_int_iterator VMINVQ_P [VMINVQ_P_S VMINVQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
525 (define_int_iterator VMLADAVAQ [VMLADAVAQ_S VMLADAVAQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
526 (define_int_iterator VMLADAVQ_P [VMLADAVQ_P_S VMLADAVQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
527 (define_int_iterator VMLAQ_N [VMLAQ_N_S VMLAQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
528 (define_int_iterator VMLASQ_N [VMLASQ_N_S VMLASQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
529 (define_int_iterator VMVNQ_M [VMVNQ_M_S VMVNQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
530 (define_int_iterator VPSELQ [VPSELQ_S VPSELQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
531 (define_int_iterator VQDMLAHQ_N [VQDMLAHQ_N_S VQDMLAHQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
532 (define_int_iterator VQRDMLAHQ_N [VQRDMLAHQ_N_S VQRDMLAHQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
533 (define_int_iterator VQRDMLASHQ_N [VQRDMLASHQ_N_S VQRDMLASHQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
534 (define_int_iterator VQRSHLQ_M_N [VQRSHLQ_M_N_S VQRSHLQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
535 (define_int_iterator VQSHLQ_M_R [VQSHLQ_M_R_S VQSHLQ_M_R_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
536 (define_int_iterator VREV64Q_M [VREV64Q_M_S VREV64Q_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
537 (define_int_iterator VRSHLQ_M_N [VRSHLQ_M_N_S VRSHLQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
538 (define_int_iterator VSHLQ_M_R [VSHLQ_M_R_S VSHLQ_M_R_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
539 (define_int_iterator VSLIQ_N [VSLIQ_N_S VSLIQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
540 (define_int_iterator VSRIQ_N [VSRIQ_N_S VSRIQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
541 (define_int_iterator VMLALDAVQ_P [VMLALDAVQ_P_U VMLALDAVQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
542 (define_int_iterator VQMOVNBQ_M [VQMOVNBQ_M_S VQMOVNBQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
543 (define_int_iterator VMOVLTQ_M [VMOVLTQ_M_U VMOVLTQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
544 (define_int_iterator VMOVNBQ_M [VMOVNBQ_M_U VMOVNBQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
545 (define_int_iterator VRSHRNTQ_N [VRSHRNTQ_N_U VRSHRNTQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
546 (define_int_iterator VORRQ_M_N [VORRQ_M_N_S VORRQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
547 (define_int_iterator VREV32Q_M [VREV32Q_M_S VREV32Q_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
548 (define_int_iterator VREV16Q_M [VREV16Q_M_S VREV16Q_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
549 (define_int_iterator VQRSHRNTQ_N [VQRSHRNTQ_N_U VQRSHRNTQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
550 (define_int_iterator VMOVNTQ_M [VMOVNTQ_M_U VMOVNTQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
551 (define_int_iterator VMOVLBQ_M [VMOVLBQ_M_U VMOVLBQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
552 (define_int_iterator VMLALDAVAQ [VMLALDAVAQ_S VMLALDAVAQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
553 (define_int_iterator VQSHRNBQ_N [VQSHRNBQ_N_U VQSHRNBQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
554 (define_int_iterator VSHRNBQ_N [VSHRNBQ_N_U VSHRNBQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
555 (define_int_iterator VRSHRNBQ_N [VRSHRNBQ_N_S VRSHRNBQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
556 (define_int_iterator VMLALDAVXQ_P [VMLALDAVXQ_P_U VMLALDAVXQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
557 (define_int_iterator VQMOVNTQ_M [VQMOVNTQ_M_U VQMOVNTQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
558 (define_int_iterator VMVNQ_M_N [VMVNQ_M_N_U VMVNQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
559 (define_int_iterator VQSHRNTQ_N [VQSHRNTQ_N_U VQSHRNTQ_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
560 (define_int_iterator VMLALDAVAXQ [VMLALDAVAXQ_S VMLALDAVAXQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
561 (define_int_iterator VSHRNTQ_N [VSHRNTQ_N_S VSHRNTQ_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
562 (define_int_iterator VCVTMQ_M [VCVTMQ_M_S VCVTMQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
563 (define_int_iterator VCVTNQ_M [VCVTNQ_M_S VCVTNQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
564 (define_int_iterator VCVTPQ_M [VCVTPQ_M_S VCVTPQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
565 (define_int_iterator VCVTQ_M_N_FROM_F [VCVTQ_M_N_FROM_F_S VCVTQ_M_N_FROM_F_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
566 (define_int_iterator VCVTQ_M_FROM_F [VCVTQ_M_FROM_F_U VCVTQ_M_FROM_F_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
567 (define_int_iterator VRMLALDAVHQ_P [VRMLALDAVHQ_P_S VRMLALDAVHQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
568 (define_int_iterator VADDLVAQ_P [VADDLVAQ_P_U VADDLVAQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
569 (define_int_iterator VABAVQ_P [VABAVQ_P_S VABAVQ_P_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
570 (define_int_iterator VSHLQ_M [VSHLQ_M_S VSHLQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
571 (define_int_iterator VSRIQ_M_N [VSRIQ_M_N_S VSRIQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
572 (define_int_iterator VSUBQ_M [VSUBQ_M_U VSUBQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
573 (define_int_iterator VCVTQ_M_N_TO_F [VCVTQ_M_N_TO_F_U VCVTQ_M_N_TO_F_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
574 (define_int_iterator VHSUBQ_M [VHSUBQ_M_S VHSUBQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
575 (define_int_iterator VSLIQ_M_N [VSLIQ_M_N_U VSLIQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
576 (define_int_iterator VRSHLQ_M [VRSHLQ_M_S VRSHLQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
577 (define_int_iterator VMINQ_M [VMINQ_M_S VMINQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
578 (define_int_iterator VMULLBQ_INT_M [VMULLBQ_INT_M_U VMULLBQ_INT_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
579 (define_int_iterator VMULHQ_M [VMULHQ_M_S VMULHQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
580 (define_int_iterator VMULQ_M [VMULQ_M_S VMULQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
581 (define_int_iterator VHSUBQ_M_N [VHSUBQ_M_N_S VHSUBQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
582 (define_int_iterator VHADDQ_M_N [VHADDQ_M_N_S VHADDQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
583 (define_int_iterator VORRQ_M [VORRQ_M_S VORRQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
584 (define_int_iterator VRMULHQ_M [VRMULHQ_M_U VRMULHQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
585 (define_int_iterator VQADDQ_M [VQADDQ_M_U VQADDQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
586 (define_int_iterator VRSHRQ_M_N [VRSHRQ_M_N_S VRSHRQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
587 (define_int_iterator VQSUBQ_M_N [VQSUBQ_M_N_U VQSUBQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
588 (define_int_iterator VADDQ_M [VADDQ_M_U VADDQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
589 (define_int_iterator VORNQ_M [VORNQ_M_U VORNQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
590 (define_int_iterator VRHADDQ_M [VRHADDQ_M_U VRHADDQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
591 (define_int_iterator VQSHLQ_M [VQSHLQ_M_U VQSHLQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
592 (define_int_iterator VANDQ_M [VANDQ_M_U VANDQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
593 (define_int_iterator VBICQ_M [VBICQ_M_U VBICQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
594 (define_int_iterator VSHLQ_M_N [VSHLQ_M_N_S VSHLQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
595 (define_int_iterator VCADDQ_ROT270_M [VCADDQ_ROT270_M_U VCADDQ_ROT270_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
596 (define_int_iterator VQRSHLQ_M [VQRSHLQ_M_U VQRSHLQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
597 (define_int_iterator VQADDQ_M_N [VQADDQ_M_N_U VQADDQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
598 (define_int_iterator VADDQ_M_N [VADDQ_M_N_S VADDQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
599 (define_int_iterator VMAXQ_M [VMAXQ_M_S VMAXQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
600 (define_int_iterator VQSUBQ_M [VQSUBQ_M_U VQSUBQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
601 (define_int_iterator VMLASQ_M_N [VMLASQ_M_N_U VMLASQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
602 (define_int_iterator VMLADAVAQ_P [VMLADAVAQ_P_U VMLADAVAQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
603 (define_int_iterator VBRSRQ_M_N [VBRSRQ_M_N_U VBRSRQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
604 (define_int_iterator VMULQ_M_N [VMULQ_M_N_U VMULQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
605 (define_int_iterator VCADDQ_ROT90_M [VCADDQ_ROT90_M_U VCADDQ_ROT90_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
606 (define_int_iterator VMULLTQ_INT_M [VMULLTQ_INT_M_S VMULLTQ_INT_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
607 (define_int_iterator VEORQ_M [VEORQ_M_S VEORQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
608 (define_int_iterator VSHRQ_M_N [VSHRQ_M_N_S VSHRQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
609 (define_int_iterator VSUBQ_M_N [VSUBQ_M_N_S VSUBQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
610 (define_int_iterator VHADDQ_M [VHADDQ_M_S VHADDQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
611 (define_int_iterator VABDQ_M [VABDQ_M_S VABDQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
612 (define_int_iterator VMLAQ_M_N [VMLAQ_M_N_S VMLAQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
613 (define_int_iterator VQSHLQ_M_N [VQSHLQ_M_N_S VQSHLQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
614 (define_int_iterator VMLALDAVAQ_P [VMLALDAVAQ_P_U VMLALDAVAQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
615 (define_int_iterator VMLALDAVAXQ_P [VMLALDAVAXQ_P_U VMLALDAVAXQ_P_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
616 (define_int_iterator VQRSHRNBQ_M_N [VQRSHRNBQ_M_N_U VQRSHRNBQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
617 (define_int_iterator VQRSHRNTQ_M_N [VQRSHRNTQ_M_N_S VQRSHRNTQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
618 (define_int_iterator VQSHRNBQ_M_N [VQSHRNBQ_M_N_U VQSHRNBQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
619 (define_int_iterator VQSHRNTQ_M_N [VQSHRNTQ_M_N_S VQSHRNTQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
620 (define_int_iterator VRSHRNBQ_M_N [VRSHRNBQ_M_N_U VRSHRNBQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
621 (define_int_iterator VRSHRNTQ_M_N [VRSHRNTQ_M_N_U VRSHRNTQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
622 (define_int_iterator VSHLLBQ_M_N [VSHLLBQ_M_N_U VSHLLBQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
623 (define_int_iterator VSHLLTQ_M_N [VSHLLTQ_M_N_U VSHLLTQ_M_N_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
624 (define_int_iterator VSHRNBQ_M_N [VSHRNBQ_M_N_S VSHRNBQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
625 (define_int_iterator VSHRNTQ_M_N [VSHRNTQ_M_N_S VSHRNTQ_M_N_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
626 (define_int_iterator VSTRWSBQ [VSTRWQSB_S VSTRWQSB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
627 (define_int_iterator VSTRBSOQ [VSTRBQSO_S VSTRBQSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
628 (define_int_iterator VSTRBQ [VSTRBQ_S VSTRBQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
629 (define_int_iterator VLDRBGOQ [VLDRBQGO_S VLDRBQGO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
630 (define_int_iterator VLDRBQ [VLDRBQ_S VLDRBQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
631 (define_int_iterator VLDRWGBQ [VLDRWQGB_S VLDRWQGB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
632 (define_int_iterator VLD1Q [VLD1Q_S VLD1Q_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
633 (define_int_iterator VLDRHGOQ [VLDRHQGO_S VLDRHQGO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
634 (define_int_iterator VLDRHGSOQ [VLDRHQGSO_S VLDRHQGSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
635 (define_int_iterator VLDRHQ [VLDRHQ_S VLDRHQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
636 (define_int_iterator VLDRWQ [VLDRWQ_S VLDRWQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
637 (define_int_iterator VLDRDGBQ [VLDRDQGB_S VLDRDQGB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
638 (define_int_iterator VLDRDGOQ [VLDRDQGO_S VLDRDQGO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
639 (define_int_iterator VLDRDGSOQ [VLDRDQGSO_S VLDRDQGSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
640 (define_int_iterator VLDRWGOQ [VLDRWQGO_S VLDRWQGO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
641 (define_int_iterator VLDRWGSOQ [VLDRWQGSO_S VLDRWQGSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
642 (define_int_iterator VST1Q [VST1Q_S VST1Q_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
643 (define_int_iterator VSTRHSOQ [VSTRHQSO_S VSTRHQSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
644 (define_int_iterator VSTRHSSOQ [VSTRHQSSO_S VSTRHQSSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
645 (define_int_iterator VSTRHQ [VSTRHQ_S VSTRHQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
646 (define_int_iterator VSTRWQ [VSTRWQ_S VSTRWQ_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
647 (define_int_iterator VSTRDSBQ [VSTRDQSB_S VSTRDQSB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
648 (define_int_iterator VSTRDSOQ [VSTRDQSO_S VSTRDQSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
649 (define_int_iterator VSTRDSSOQ [VSTRDQSSO_S VSTRDQSSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
650 (define_int_iterator VSTRWSOQ [VSTRWQSO_S VSTRWQSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
651 (define_int_iterator VSTRWSSOQ [VSTRWQSSO_S VSTRWQSSO_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
652 (define_int_iterator VSTRWSBWBQ [VSTRWQSBWB_S VSTRWQSBWB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
653 (define_int_iterator VLDRWGBWBQ [VLDRWQGBWB_S VLDRWQGBWB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
654 (define_int_iterator VSTRDSBWBQ [VSTRDQSBWB_S VSTRDQSBWB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
655 (define_int_iterator VLDRDGBWBQ [VLDRDQGBWB_S VLDRDQGBWB_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
656 (define_int_iterator VADCIQ [VADCIQ_U VADCIQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
657 (define_int_iterator VADCIQ_M [VADCIQ_M_U VADCIQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
658 (define_int_iterator VSBCQ [VSBCQ_U VSBCQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
659 (define_int_iterator VSBCQ_M [VSBCQ_M_U VSBCQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
660 (define_int_iterator VSBCIQ [VSBCIQ_U VSBCIQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
661 (define_int_iterator VSBCIQ_M [VSBCIQ_M_U VSBCIQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
662 (define_int_iterator VADCQ [VADCQ_U VADCQ_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
663 (define_int_iterator VADCQ_M [VADCQ_M_U VADCQ_M_S])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
664 (define_int_iterator UQRSHLLQ [UQRSHLL_64 UQRSHLL_48])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
665 (define_int_iterator SQRSHRLQ [SQRSHRL_64 SQRSHRL_48])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
666 (define_int_iterator VSHLCQ_M [VSHLCQ_M_S VSHLCQ_M_U])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
667
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
668 (define_insn "*mve_mov<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
669 [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w,w,r,w,Ux,w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
670 (match_operand:MVE_types 1 "general_operand" "w,r,w,Dn,Uxi,r,Dm,w,Ul"))]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
671 "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
672 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
673 if (which_alternative == 3 || which_alternative == 6)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
674 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
675 int width, is_valid;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
676 static char templ[40];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
677
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
678 is_valid = simd_immediate_valid_for_move (operands[1], <MODE>mode,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
679 &operands[1], &width);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
680
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
681 gcc_assert (is_valid != 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
682
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
683 if (width == 0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
684 return "vmov.f32\t%q0, %1 @ <mode>";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
685 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
686 sprintf (templ, "vmov.i%d\t%%q0, %%x1 @ <mode>", width);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
687 return templ;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
688 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
689
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
690 if (which_alternative == 4 || which_alternative == 7)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
691 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
692 rtx ops[2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
693 int regno = (which_alternative == 7)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
694 ? REGNO (operands[1]) : REGNO (operands[0]);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
695
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
696 ops[0] = operands[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
697 ops[1] = operands[1];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
698 if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
699 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
700 if (which_alternative == 7)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
701 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
702 ops[1] = gen_rtx_REG (DImode, regno);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
703 output_asm_insn ("vstr.64\t%P1, %E0",ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
704 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
705 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
706 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
707 ops[0] = gen_rtx_REG (DImode, regno);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
708 output_asm_insn ("vldr.64\t%P0, %E1",ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
709 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
710 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
711 else if (<MODE>mode == TImode)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
712 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
713 if (which_alternative == 7)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
714 output_asm_insn ("vstr.64\t%q1, %E0",ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
715 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
716 output_asm_insn ("vldr.64\t%q0, %E1",ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
717 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
718 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
719 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
720 if (which_alternative == 7)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
721 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
722 ops[1] = gen_rtx_REG (TImode, regno);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
723 output_asm_insn ("vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0",ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
724 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
725 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
726 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
727 ops[0] = gen_rtx_REG (TImode, regno);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
728 output_asm_insn ("vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1",ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
729 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
730 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
731 return "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
732 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
733 switch (which_alternative)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
734 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
735 case 0:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
736 return "vmov\t%q0, %q1";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
737 case 1:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
738 return "vmov\t%e0, %Q1, %R1 @ <mode>\;vmov\t%f0, %J1, %K1";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
739 case 2:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
740 return "vmov\t%Q0, %R0, %e1 @ <mode>\;vmov\t%J0, %K0, %f1";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
741 case 5:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
742 return output_move_quad (operands);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
743 case 8:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
744 return output_move_neon (operands);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
745 default:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
746 gcc_unreachable ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
747 return "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
748 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
749 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
750 [(set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_move,mve_store,mve_load")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
751 (set_attr "length" "4,8,8,4,8,8,4,4,4")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
752 (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,*")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
753 (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,*")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
754
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
755 (define_insn "*mve_mov<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
756 [(set (match_operand:MVE_types 0 "s_register_operand" "=w,w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
757 (vec_duplicate:MVE_types
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
758 (match_operand:SI 1 "nonmemory_operand" "r,i")))]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
759 "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
760 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
761 if (which_alternative == 0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
762 return "vdup.<V_sz_elem>\t%q0, %1";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
763 return "vmov.<V_sz_elem>\t%q0, %1";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
764 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
765 [(set_attr "length" "4,4")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
766 (set_attr "type" "mve_move,mve_move")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
767
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
768 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
769 ;; [vst4q])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
770 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
771 (define_insn "mve_vst4q<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
772 [(set (match_operand:XI 0 "neon_struct_operand" "=Um")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
773 (unspec:XI [(match_operand:XI 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
774 (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
775 VST4Q))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
776 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
777 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
778 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
779 rtx ops[6];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
780 int regno = REGNO (operands[1]);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
781 ops[0] = gen_rtx_REG (TImode, regno);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
782 ops[1] = gen_rtx_REG (TImode, regno+4);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
783 ops[2] = gen_rtx_REG (TImode, regno+8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
784 ops[3] = gen_rtx_REG (TImode, regno+12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
785 rtx reg = operands[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
786 while (reg && !REG_P (reg))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
787 reg = XEXP (reg, 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
788 gcc_assert (REG_P (reg));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
789 ops[4] = reg;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
790 ops[5] = operands[0];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
791 /* Here in first three instructions data is stored to ops[4]'s location but
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
792 in the fourth instruction data is stored to operands[0], this is to
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
793 support the writeback. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
794 output_asm_insn ("vst40.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
795 "vst41.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
796 "vst42.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, [%4]\n\t"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
797 "vst43.<V_sz_elem>\t{%q0, %q1, %q2, %q3}, %5", ops);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
798 return "";
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
799 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
800 [(set_attr "length" "16")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
801
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
802 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
803 ;; [vrndq_m_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
804 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
805 (define_insn "mve_vrndq_m_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
806 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
807 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
808 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
809 (match_operand:MVE_0 2 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
810 (match_operand:HI 3 "vpr_register_operand" "Up")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
811 VRNDQ_M_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
812 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
813 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
814 "vpst\;vrintzt.f%#<V_sz_elem> %q0, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
815 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
816 (set_attr "length""8")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
817
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
818 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
819 ;; [vrndxq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
820 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
821 (define_insn "mve_vrndxq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
822 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
823 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
824 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
825 VRNDXQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
826 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
827 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
828 "vrintx.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
829 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
830 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
831
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
832 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
833 ;; [vrndq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
834 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
835 (define_insn "mve_vrndq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
836 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
837 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
838 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
839 VRNDQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
840 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
841 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
842 "vrintz.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
843 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
844 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
845
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
846 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
847 ;; [vrndpq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
848 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
849 (define_insn "mve_vrndpq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
850 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
851 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
852 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
853 VRNDPQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
854 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
855 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
856 "vrintp.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
857 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
858 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
859
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
860 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
861 ;; [vrndnq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
862 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
863 (define_insn "mve_vrndnq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
864 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
865 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
866 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
867 VRNDNQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
868 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
869 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
870 "vrintn.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
871 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
872 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
873
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
874 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
875 ;; [vrndmq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
876 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
877 (define_insn "mve_vrndmq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
878 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
879 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
880 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
881 VRNDMQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
882 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
883 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
884 "vrintm.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
885 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
886 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
887
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
888 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
889 ;; [vrndaq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
890 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
891 (define_insn "mve_vrndaq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
892 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
893 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
894 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
895 VRNDAQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
896 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
897 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
898 "vrinta.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
899 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
900 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
901
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
902 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
903 ;; [vrev64q_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
904 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
905 (define_insn "mve_vrev64q_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
906 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
907 (set (match_operand:MVE_0 0 "s_register_operand" "=&w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
908 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
909 VREV64Q_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
910 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
911 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
912 "vrev64.%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
913 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
914 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
915
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
916 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
917 ;; [vnegq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
918 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
919 (define_insn "mve_vnegq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
920 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
921 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
922 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
923 VNEGQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
924 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
925 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
926 "vneg.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
927 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
928 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
929
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
930 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
931 ;; [vdupq_n_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
932 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
933 (define_insn "mve_vdupq_n_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
934 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
935 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
936 (unspec:MVE_0 [(match_operand:<V_elem> 1 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
937 VDUPQ_N_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
938 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
939 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
940 "vdup.%#<V_sz_elem> %q0, %1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
941 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
942 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
943
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
944 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
945 ;; [vabsq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
946 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
947 (define_insn "mve_vabsq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
948 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
949 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
950 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
951 VABSQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
952 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
953 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
954 "vabs.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
955 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
956 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
957
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
958 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
959 ;; [vrev32q_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
960 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
961 (define_insn "mve_vrev32q_fv8hf"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
962 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
963 (set (match_operand:V8HF 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
964 (unspec:V8HF [(match_operand:V8HF 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
965 VREV32Q_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
966 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
967 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
968 "vrev32.16 %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
969 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
970 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
971 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
972 ;; [vcvttq_f32_f16])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
973 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
974 (define_insn "mve_vcvttq_f32_f16v4sf"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
975 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
976 (set (match_operand:V4SF 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
977 (unspec:V4SF [(match_operand:V8HF 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
978 VCVTTQ_F32_F16))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
979 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
980 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
981 "vcvtt.f32.f16 %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
982 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
983 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
984
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
985 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
986 ;; [vcvtbq_f32_f16])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
987 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
988 (define_insn "mve_vcvtbq_f32_f16v4sf"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
989 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
990 (set (match_operand:V4SF 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
991 (unspec:V4SF [(match_operand:V8HF 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
992 VCVTBQ_F32_F16))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
993 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
994 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
995 "vcvtb.f32.f16 %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
996 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
997 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
998
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
999 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1000 ;; [vcvtq_to_f_s, vcvtq_to_f_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1001 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1002 (define_insn "mve_vcvtq_to_f_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1003 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1004 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1005 (unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1006 VCVTQ_TO_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1007 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1008 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1009 "vcvt.f%#<V_sz_elem>.<supf>%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1010 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1011 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1012
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1013 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1014 ;; [vrev64q_u, vrev64q_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1015 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1016 (define_insn "mve_vrev64q_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1017 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1018 (set (match_operand:MVE_2 0 "s_register_operand" "=&w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1019 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1020 VREV64Q))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1021 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1022 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1023 "vrev64.%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1024 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1025 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1026
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1027 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1028 ;; [vcvtq_from_f_s, vcvtq_from_f_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1029 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1030 (define_insn "mve_vcvtq_from_f_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1031 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1032 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1033 (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1034 VCVTQ_FROM_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1035 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1036 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1037 "vcvt.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1038 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1039 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1040 ;; [vqnegq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1041 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1042 (define_insn "mve_vqnegq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1043 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1044 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1045 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1046 VQNEGQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1047 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1048 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1049 "vqneg.s%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1050 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1051 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1052
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1053 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1054 ;; [vqabsq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1055 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1056 (define_insn "mve_vqabsq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1057 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1058 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1059 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1060 VQABSQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1061 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1062 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1063 "vqabs.s%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1064 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1065 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1066
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1067 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1068 ;; [vnegq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1069 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1070 (define_insn "mve_vnegq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1071 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1072 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1073 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1074 VNEGQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1075 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1076 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1077 "vneg.s%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1078 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1079 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1080
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1081 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1082 ;; [vmvnq_u, vmvnq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1083 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1084 (define_insn "mve_vmvnq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1085 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1086 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1087 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1088 VMVNQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1089 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1090 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1091 "vmvn %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1092 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1093 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1094
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1095 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1096 ;; [vdupq_n_u, vdupq_n_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1097 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1098 (define_insn "mve_vdupq_n_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1099 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1100 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1101 (unspec:MVE_2 [(match_operand:<V_elem> 1 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1102 VDUPQ_N))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1103 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1104 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1105 "vdup.%#<V_sz_elem> %q0, %1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1106 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1107 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1108
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1109 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1110 ;; [vclzq_u, vclzq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1111 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1112 (define_insn "mve_vclzq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1113 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1114 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1115 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1116 VCLZQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1117 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1118 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1119 "vclz.i%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1120 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1121 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1122
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1123 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1124 ;; [vclsq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1125 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1126 (define_insn "mve_vclsq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1127 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1128 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1129 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1130 VCLSQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1131 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1132 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1133 "vcls.s%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1134 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1135 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1136
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1137 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1138 ;; [vaddvq_s, vaddvq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1139 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1140 (define_insn "mve_vaddvq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1141 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1142 (set (match_operand:SI 0 "s_register_operand" "=Te")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1143 (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1144 VADDVQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1145 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1146 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1147 "vaddv.<supf>%#<V_sz_elem>\t%0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1148 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1149 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1150
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1151 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1152 ;; [vabsq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1153 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1154 (define_insn "mve_vabsq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1155 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1156 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1157 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1158 VABSQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1159 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1160 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1161 "vabs.s%#<V_sz_elem>\t%q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1162 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1163 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1164
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1165 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1166 ;; [vrev32q_u, vrev32q_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1167 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1168 (define_insn "mve_vrev32q_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1169 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1170 (set (match_operand:MVE_3 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1171 (unspec:MVE_3 [(match_operand:MVE_3 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1172 VREV32Q))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1173 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1174 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1175 "vrev32.%#<V_sz_elem>\t%q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1176 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1177 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1178
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1179 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1180 ;; [vmovltq_u, vmovltq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1181 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1182 (define_insn "mve_vmovltq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1183 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1184 (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1185 (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1186 VMOVLTQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1187 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1188 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1189 "vmovlt.<supf>%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1190 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1191 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1192
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1193 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1194 ;; [vmovlbq_s, vmovlbq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1195 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1196 (define_insn "mve_vmovlbq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1197 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1198 (set (match_operand:<V_double_width> 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1199 (unspec:<V_double_width> [(match_operand:MVE_3 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1200 VMOVLBQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1201 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1202 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1203 "vmovlb.<supf>%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1204 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1205 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1206
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1207 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1208 ;; [vcvtpq_s, vcvtpq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1209 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1210 (define_insn "mve_vcvtpq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1211 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1212 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1213 (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1214 VCVTPQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1215 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1216 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1217 "vcvtp.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1218 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1219 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1220
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1221 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1222 ;; [vcvtnq_s, vcvtnq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1223 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1224 (define_insn "mve_vcvtnq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1225 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1226 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1227 (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1228 VCVTNQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1229 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1230 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1231 "vcvtn.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1232 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1233 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1234
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1235 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1236 ;; [vcvtmq_s, vcvtmq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1237 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1238 (define_insn "mve_vcvtmq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1239 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1240 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1241 (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1242 VCVTMQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1243 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1244 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1245 "vcvtm.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1246 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1247 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1248
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1249 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1250 ;; [vcvtaq_u, vcvtaq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1251 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1252 (define_insn "mve_vcvtaq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1253 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1254 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1255 (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1256 VCVTAQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1257 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1258 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1259 "vcvta.<supf>%#<V_sz_elem>.f%#<V_sz_elem> %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1260 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1261 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1262
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1263 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1264 ;; [vmvnq_n_u, vmvnq_n_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1265 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1266 (define_insn "mve_vmvnq_n_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1267 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1268 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1269 (unspec:MVE_5 [(match_operand:HI 1 "immediate_operand" "i")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1270 VMVNQ_N))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1271 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1272 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1273 "vmvn.i%#<V_sz_elem> %q0, %1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1274 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1275 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1276
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1277 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1278 ;; [vrev16q_u, vrev16q_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1279 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1280 (define_insn "mve_vrev16q_<supf>v16qi"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1281 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1282 (set (match_operand:V16QI 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1283 (unspec:V16QI [(match_operand:V16QI 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1284 VREV16Q))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1285 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1286 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1287 "vrev16.8 %q0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1288 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1289 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1290
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1291 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1292 ;; [vaddlvq_s vaddlvq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1293 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1294 (define_insn "mve_vaddlvq_<supf>v4si"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1295 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1296 (set (match_operand:DI 0 "s_register_operand" "=r")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1297 (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1298 VADDLVQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1299 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1300 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1301 "vaddlv.<supf>32 %Q0, %R0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1302 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1303 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1304
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1305 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1306 ;; [vctp8q vctp16q vctp32q vctp64q])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1307 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1308 (define_insn "mve_vctp<mode1>qhi"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1309 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1310 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1311 (unspec:HI [(match_operand:SI 1 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1312 VCTPQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1313 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1314 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1315 "vctp.<mode1> %1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1316 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1317 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1318
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1319 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1320 ;; [vpnot])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1321 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1322 (define_insn "mve_vpnothi"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1323 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1324 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1325 (unspec:HI [(match_operand:HI 1 "vpr_register_operand" "0")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1326 VPNOT))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1327 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1328 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1329 "vpnot"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1330 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1331 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1332
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1333 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1334 ;; [vsubq_n_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1335 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1336 (define_insn "mve_vsubq_n_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1337 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1338 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1339 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1340 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1341 VSUBQ_N_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1342 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1343 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1344 "vsub.f<V_sz_elem> %q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1345 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1346 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1347
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1348 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1349 ;; [vbrsrq_n_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1350 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1351 (define_insn "mve_vbrsrq_n_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1352 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1353 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1354 (unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1355 (match_operand:SI 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1356 VBRSRQ_N_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1357 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1358 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1359 "vbrsr.<V_sz_elem> %q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1360 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1361 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1362
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1363 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1364 ;; [vcvtq_n_to_f_s, vcvtq_n_to_f_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1365 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1366 (define_insn "mve_vcvtq_n_to_f_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1367 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1368 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1369 (unspec:MVE_0 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1370 (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1371 VCVTQ_N_TO_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1372 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1373 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1374 "vcvt.f<V_sz_elem>.<supf><V_sz_elem>\t%q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1375 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1376 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1377
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1378 ;; [vcreateq_f])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1379 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1380 (define_insn "mve_vcreateq_f<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1381 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1382 (set (match_operand:MVE_0 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1383 (unspec:MVE_0 [(match_operand:DI 1 "s_register_operand" "r")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1384 (match_operand:DI 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1385 VCREATEQ_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1386 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1387 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1388 "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1389 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1390 (set_attr "length""8")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1391
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1392 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1393 ;; [vcreateq_u, vcreateq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1394 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1395 (define_insn "mve_vcreateq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1396 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1397 (set (match_operand:MVE_1 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1398 (unspec:MVE_1 [(match_operand:DI 1 "s_register_operand" "r")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1399 (match_operand:DI 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1400 VCREATEQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1401 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1402 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1403 "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1404 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1405 (set_attr "length""8")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1406
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1407 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1408 ;; [vshrq_n_s, vshrq_n_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1409 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1410 (define_insn "mve_vshrq_n_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1411 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1412 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1413 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1414 (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1415 VSHRQ_N))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1416 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1417 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1418 "vshr.<supf><V_sz_elem>\t%q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1419 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1420 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1421
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1422 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1423 ;; [vcvtq_n_from_f_s, vcvtq_n_from_f_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1424 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1425 (define_insn "mve_vcvtq_n_from_f_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1426 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1427 (set (match_operand:MVE_5 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1428 (unspec:MVE_5 [(match_operand:<MVE_CNVT> 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1429 (match_operand:SI 2 "<MVE_pred2>" "<MVE_constraint2>")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1430 VCVTQ_N_FROM_F))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1431 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1432 "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1433 "vcvt.<supf><V_sz_elem>.f<V_sz_elem>\t%q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1434 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1435 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1436
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1437 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1438 ;; [vaddlvq_p_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1439 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1440 (define_insn "mve_vaddlvq_p_<supf>v4si"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1441 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1442 (set (match_operand:DI 0 "s_register_operand" "=r")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1443 (unspec:DI [(match_operand:V4SI 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1444 (match_operand:HI 2 "vpr_register_operand" "Up")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1445 VADDLVQ_P))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1446 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1447 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1448 "vpst\;vaddlvt.<supf>32 %Q0, %R0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1449 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1450 (set_attr "length""8")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1451
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1452 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1453 ;; [vcmpneq_u, vcmpneq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1454 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1455 (define_insn "mve_vcmpneq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1456 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1457 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1458 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1459 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1460 VCMPNEQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1461 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1462 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1463 "vcmp.i%#<V_sz_elem> ne, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1464 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1465 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1466
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1467 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1468 ;; [vshlq_s, vshlq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1469 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1470 (define_insn "mve_vshlq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1471 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1472 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1473 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1474 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1475 VSHLQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1476 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1477 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1478 "vshl.<supf>%#<V_sz_elem>\t%q0, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1479 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1480 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1481
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1482 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1483 ;; [vabdq_s, vabdq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1484 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1485 (define_insn "mve_vabdq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1486 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1487 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1488 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1489 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1490 VABDQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1491 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1492 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1493 "vabd.<supf>%#<V_sz_elem> %q0, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1494 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1495 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1496
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1497 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1498 ;; [vaddq_n_s, vaddq_n_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1499 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1500 (define_insn "mve_vaddq_n_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1501 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1502 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1503 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1504 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1505 VADDQ_N))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1506 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1507 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1508 "vadd.i%#<V_sz_elem> %q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1509 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1510 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1511
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1512 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1513 ;; [vaddvaq_s, vaddvaq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1514 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1515 (define_insn "mve_vaddvaq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1516 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1517 (set (match_operand:SI 0 "s_register_operand" "=Te")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1518 (unspec:SI [(match_operand:SI 1 "s_register_operand" "0")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1519 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1520 VADDVAQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1521 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1522 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1523 "vaddva.<supf>%#<V_sz_elem> %0, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1524 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1525 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1526
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1527 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1528 ;; [vaddvq_p_u, vaddvq_p_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1529 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1530 (define_insn "mve_vaddvq_p_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1531 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1532 (set (match_operand:SI 0 "s_register_operand" "=Te")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1533 (unspec:SI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1534 (match_operand:HI 2 "vpr_register_operand" "Up")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1535 VADDVQ_P))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1536 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1537 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1538 "vpst\;vaddvt.<supf>%#<V_sz_elem> %0, %q1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1539 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1540 (set_attr "length""8")])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1541
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1542 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1543 ;; [vandq_u, vandq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1544 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1545 (define_insn "mve_vandq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1546 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1547 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1548 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1549 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1550 VANDQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1551 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1552 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1553 "vand %q0, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1554 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1555 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1556
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1557 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1558 ;; [vbicq_s, vbicq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1559 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1560 (define_insn "mve_vbicq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1561 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1562 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1563 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1564 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1565 VBICQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1566 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1567 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1568 "vbic %q0, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1569 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1570 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1571
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1572 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1573 ;; [vbrsrq_n_u, vbrsrq_n_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1574 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1575 (define_insn "mve_vbrsrq_n_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1576 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1577 (set (match_operand:MVE_2 0 "s_register_operand" "=w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1578 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1579 (match_operand:SI 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1580 VBRSRQ_N))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1581 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1582 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1583 "vbrsr.%#<V_sz_elem> %q0, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1584 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1585 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1586
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1587 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1588 ;; [vcaddq_rot270_s, vcaddq_rot270_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1589 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1590 (define_insn "mve_vcaddq_rot270_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1591 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1592 (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1593 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1594 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1595 VCADDQ_ROT270))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1596 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1597 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1598 "vcadd.i%#<V_sz_elem> %q0, %q1, %q2, #270"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1599 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1600 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1601
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1602 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1603 ;; [vcaddq_rot90_u, vcaddq_rot90_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1604 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1605 (define_insn "mve_vcaddq_rot90_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1606 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1607 (set (match_operand:MVE_2 0 "s_register_operand" "<earlyclobber_32>")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1608 (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1609 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1610 VCADDQ_ROT90))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1611 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1612 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1613 "vcadd.i%#<V_sz_elem> %q0, %q1, %q2, #90"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1614 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1615 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1616
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1617 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1618 ;; [vcmpcsq_n_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1619 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1620 (define_insn "mve_vcmpcsq_n_u<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1621 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1622 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1623 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1624 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1625 VCMPCSQ_N_U))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1626 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1627 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1628 "vcmp.u%#<V_sz_elem> cs, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1629 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1630 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1631
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1632 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1633 ;; [vcmpcsq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1634 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1635 (define_insn "mve_vcmpcsq_u<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1636 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1637 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1638 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1639 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1640 VCMPCSQ_U))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1641 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1642 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1643 "vcmp.u%#<V_sz_elem> cs, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1644 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1645 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1646
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1647 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1648 ;; [vcmpeqq_n_s, vcmpeqq_n_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1649 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1650 (define_insn "mve_vcmpeqq_n_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1651 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1652 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1653 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1654 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1655 VCMPEQQ_N))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1656 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1657 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1658 "vcmp.i%#<V_sz_elem> eq, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1659 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1660 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1661
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1662 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1663 ;; [vcmpeqq_u, vcmpeqq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1664 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1665 (define_insn "mve_vcmpeqq_<supf><mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1666 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1667 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1668 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1669 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1670 VCMPEQQ))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1671 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1672 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1673 "vcmp.i%#<V_sz_elem> eq, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1674 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1675 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1676
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1677 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1678 ;; [vcmpgeq_n_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1679 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1680 (define_insn "mve_vcmpgeq_n_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1681 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1682 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1683 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1684 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1685 VCMPGEQ_N_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1686 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1687 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1688 "vcmp.s%#<V_sz_elem> ge, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1689 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1690 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1691
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1692 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1693 ;; [vcmpgeq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1694 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1695 (define_insn "mve_vcmpgeq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1696 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1697 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1698 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1699 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1700 VCMPGEQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1701 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1702 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1703 "vcmp.s%#<V_sz_elem> ge, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1704 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1705 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1706
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1707 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1708 ;; [vcmpgtq_n_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1709 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1710 (define_insn "mve_vcmpgtq_n_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1711 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1712 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1713 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1714 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1715 VCMPGTQ_N_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1716 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1717 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1718 "vcmp.s%#<V_sz_elem> gt, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1719 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1720 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1721
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1722 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1723 ;; [vcmpgtq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1724 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1725 (define_insn "mve_vcmpgtq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1726 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1727 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1728 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1729 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1730 VCMPGTQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1731 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1732 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1733 "vcmp.s%#<V_sz_elem> gt, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1734 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1735 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1736
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1737 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1738 ;; [vcmphiq_n_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1739 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1740 (define_insn "mve_vcmphiq_n_u<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1741 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1742 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1743 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1744 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1745 VCMPHIQ_N_U))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1746 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1747 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1748 "vcmp.u%#<V_sz_elem> hi, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1749 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1750 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1751
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1752 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1753 ;; [vcmphiq_u])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1754 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1755 (define_insn "mve_vcmphiq_u<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1756 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1757 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1758 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1759 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1760 VCMPHIQ_U))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1761 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1762 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1763 "vcmp.u%#<V_sz_elem> hi, %q1, %q2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1764 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1765 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1766
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1767 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1768 ;; [vcmpleq_n_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1769 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1770 (define_insn "mve_vcmpleq_n_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1771 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1772 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1773 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1774 (match_operand:<V_elem> 2 "s_register_operand" "r")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1775 VCMPLEQ_N_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1776 ]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1777 "TARGET_HAVE_MVE"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1778 "vcmp.s%#<V_sz_elem> le, %q1, %2"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1779 [(set_attr "type" "mve_move")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1780 ])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1781
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1782 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1783 ;; [vcmpleq_s])
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1784 ;;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1785 (define_insn "mve_vcmpleq_s<mode>"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1786 [
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1787 (set (match_operand:HI 0 "vpr_register_operand" "=Up")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1788 (unspec:HI [(match_operand:MVE_2 1 "s_register_operand" "w")
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1789 (match_operand:MVE_2 2 "s_register_operand" "w")]
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1790 VCMPLEQ_S))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset