]>
Commit | Line | Data |
---|---|---|
f556cd8b | 1 | ;; Iterators for RISC-V 'V' Extension for GNU compiler. |
aeee4812 | 2 | ;; Copyright (C) 2022-2023 Free Software Foundation, Inc. |
f556cd8b JZZ |
3 | ;; Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd. |
4 | ||
5 | ;; This file is part of GCC. | |
6 | ||
7 | ;; GCC is free software; you can redistribute it and/or modify | |
8 | ;; it under the terms of the GNU General Public License as published by | |
9 | ;; the Free Software Foundation; either version 3, or (at your option) | |
10 | ;; any later version. | |
11 | ||
12 | ;; GCC is distributed in the hope that it will be useful, | |
13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | ;; GNU General Public License for more details. | |
16 | ||
17 | ;; You should have received a copy of the GNU General Public License | |
18 | ;; along with GCC; see the file COPYING3. If not see | |
19 | ;; <http://www.gnu.org/licenses/>. | |
20 | ||
21 | (define_mode_iterator V [ | |
22 | VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32") | |
23 | VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32") | |
24 | VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32") | |
25 | VNx1DI VNx2DI VNx4DI (VNx8DI "TARGET_MIN_VLEN > 32") | |
26 | (VNx1SF "TARGET_VECTOR_ELEN_FP_32") | |
27 | (VNx2SF "TARGET_VECTOR_ELEN_FP_32") | |
28 | (VNx4SF "TARGET_VECTOR_ELEN_FP_32") | |
29 | (VNx8SF "TARGET_VECTOR_ELEN_FP_32") | |
30 | (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32") | |
31 | (VNx1DF "TARGET_VECTOR_ELEN_FP_64") | |
32 | (VNx2DF "TARGET_VECTOR_ELEN_FP_64") | |
33 | (VNx4DF "TARGET_VECTOR_ELEN_FP_64") | |
34 | (VNx8DF "TARGET_VECTOR_ELEN_FP_64") | |
35 | ]) | |
36 | ||
5576518a JZZ |
37 | (define_mode_iterator V_WHOLE [ |
38 | (VNx4QI "TARGET_MIN_VLEN == 32") VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32") | |
39 | (VNx2HI "TARGET_MIN_VLEN == 32") VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32") | |
40 | (VNx1SI "TARGET_MIN_VLEN == 32") VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32") | |
41 | VNx1DI VNx2DI VNx4DI (VNx8DI "TARGET_MIN_VLEN > 32") | |
42 | (VNx1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN == 32") | |
43 | (VNx2SF "TARGET_VECTOR_ELEN_FP_32") | |
44 | (VNx4SF "TARGET_VECTOR_ELEN_FP_32") | |
45 | (VNx8SF "TARGET_VECTOR_ELEN_FP_32") | |
46 | (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32") | |
47 | (VNx1DF "TARGET_VECTOR_ELEN_FP_64") | |
48 | (VNx2DF "TARGET_VECTOR_ELEN_FP_64") | |
49 | (VNx4DF "TARGET_VECTOR_ELEN_FP_64") | |
50 | (VNx8DF "TARGET_VECTOR_ELEN_FP_64") | |
51 | ]) | |
52 | ||
53 | (define_mode_iterator V_FRACT [ | |
54 | VNx1QI VNx2QI (VNx4QI "TARGET_MIN_VLEN > 32") | |
55 | VNx1HI (VNx2HI "TARGET_MIN_VLEN > 32") | |
56 | (VNx1SI "TARGET_MIN_VLEN > 32") | |
57 | (VNx1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32") | |
58 | ]) | |
59 | ||
f556cd8b JZZ |
60 | (define_mode_iterator VB [ |
61 | VNx1BI VNx2BI VNx4BI VNx8BI VNx16BI VNx32BI | |
62 | (VNx64BI "TARGET_MIN_VLEN > 32") | |
63 | ]) | |
64 | ||
65 | (define_mode_attr VM [ | |
66 | (VNx1QI "VNx1BI") (VNx2QI "VNx2BI") (VNx4QI "VNx4BI") (VNx8QI "VNx8BI") (VNx16QI "VNx16BI") (VNx32QI "VNx32BI") (VNx64QI "VNx64BI") | |
67 | (VNx1HI "VNx1BI") (VNx2HI "VNx2BI") (VNx4HI "VNx4BI") (VNx8HI "VNx8BI") (VNx16HI "VNx16BI") (VNx32HI "VNx32BI") | |
68 | (VNx1SI "VNx1BI") (VNx2SI "VNx2BI") (VNx4SI "VNx4BI") (VNx8SI "VNx8BI") (VNx16SI "VNx16BI") | |
69 | (VNx1DI "VNx1BI") (VNx2DI "VNx2BI") (VNx4DI "VNx4BI") (VNx8DI "VNx8BI") | |
70 | (VNx1SF "VNx1BI") (VNx2SF "VNx2BI") (VNx4SF "VNx4BI") (VNx8SF "VNx8BI") (VNx16SF "VNx16BI") | |
71 | (VNx1DF "VNx1BI") (VNx2DF "VNx2BI") (VNx4DF "VNx4BI") (VNx8DF "VNx8BI") | |
72 | ]) | |
73 | ||
fa144175 JZZ |
74 | (define_mode_attr VEL [ |
75 | (VNx1QI "QI") (VNx2QI "QI") (VNx4QI "QI") (VNx8QI "QI") (VNx16QI "QI") (VNx32QI "QI") (VNx64QI "QI") | |
76 | (VNx1HI "HI") (VNx2HI "HI") (VNx4HI "HI") (VNx8HI "HI") (VNx16HI "HI") (VNx32HI "HI") | |
77 | (VNx1SI "SI") (VNx2SI "SI") (VNx4SI "SI") (VNx8SI "SI") (VNx16SI "SI") | |
78 | (VNx1DI "DI") (VNx2DI "DI") (VNx4DI "DI") (VNx8DI "DI") | |
79 | (VNx1SF "SF") (VNx2SF "SF") (VNx4SF "SF") (VNx8SF "SF") (VNx16SF "SF") | |
80 | (VNx1DF "DF") (VNx2DF "DF") (VNx4DF "DF") (VNx8DF "DF") | |
81 | ]) | |
82 | ||
f556cd8b JZZ |
83 | (define_mode_attr sew [ |
84 | (VNx1QI "8") (VNx2QI "8") (VNx4QI "8") (VNx8QI "8") (VNx16QI "8") (VNx32QI "8") (VNx64QI "8") | |
85 | (VNx1HI "16") (VNx2HI "16") (VNx4HI "16") (VNx8HI "16") (VNx16HI "16") (VNx32HI "16") | |
86 | (VNx1SI "32") (VNx2SI "32") (VNx4SI "32") (VNx8SI "32") (VNx16SI "32") | |
87 | (VNx1DI "64") (VNx2DI "64") (VNx4DI "64") (VNx8DI "64") | |
88 | (VNx1SF "32") (VNx2SF "32") (VNx4SF "32") (VNx8SF "32") (VNx16SF "32") | |
89 | (VNx1DF "64") (VNx2DF "64") (VNx4DF "64") (VNx8DF "64") | |
90 | ]) |