1
Finish the conversion of all aarch64 instructions to decodetree.
1
Finish the conversion of all aarch64 instructions to decodetree.
2
3
Changes for v3:
4
- Fix decode for f16 fsqrt (vector) in patch 23, prior to conversion.
5
This is the only patch without R-B.
6
2
7
3
r~
8
r~
4
9
5
Richard Henderson (67):
10
6
target/arm: Use ### to separate 3rd-level sections in a64.decode
11
Richard Henderson (69):
12
target/arm: Add section labels for "Data Processing (register)"
7
target/arm: Convert UDIV, SDIV to decodetree
13
target/arm: Convert UDIV, SDIV to decodetree
8
target/arm: Convert LSLV, LSRV, ASRV, RORV to decodetree
14
target/arm: Convert LSLV, LSRV, ASRV, RORV to decodetree
9
target/arm: Convert CRC32, CRC32C to decodetree
15
target/arm: Convert CRC32, CRC32C to decodetree
10
target/arm: Convert SUBP, IRG, GMI to decodetree
16
target/arm: Convert SUBP, IRG, GMI to decodetree
11
target/arm: Convert PACGA to decodetree
17
target/arm: Convert PACGA to decodetree
...
...
23
target/arm: Convert CCMP, CCMN to decodetree
29
target/arm: Convert CCMP, CCMN to decodetree
24
target/arm: Convert disas_cond_select to decodetree
30
target/arm: Convert disas_cond_select to decodetree
25
target/arm: Introduce fp_access_check_scalar_hsd
31
target/arm: Introduce fp_access_check_scalar_hsd
26
target/arm: Introduce fp_access_check_vector_hsd
32
target/arm: Introduce fp_access_check_vector_hsd
27
target/arm: Convert FCMP, FCMPE, FCCMP, FCCMPE to decodetree
33
target/arm: Convert FCMP, FCMPE, FCCMP, FCCMPE to decodetree
34
target/arm: Fix decode of fp16 vector fabs, fneg, fsqrt
28
target/arm: Convert FMOV, FABS, FNEG (scalar) to decodetree
35
target/arm: Convert FMOV, FABS, FNEG (scalar) to decodetree
29
target/arm: Pass fpstatus to vfp_sqrt*
36
target/arm: Pass fpstatus to vfp_sqrt*
30
target/arm: Remove helper_sqrt_f16
37
target/arm: Remove helper_sqrt_f16
31
target/arm: Convert FSQRT (scalar) to decodetree
38
target/arm: Convert FSQRT (scalar) to decodetree
32
target/arm: Convert FRINT[NPMSAXI] (scalar) to decodetree
39
target/arm: Convert FRINT[NPMSAXI] (scalar) to decodetree
...
...
52
target/arm: Introduce clear_vec
59
target/arm: Introduce clear_vec
53
target/arm: Convert XTN, SQXTUN, SQXTN, UQXTN to decodetree
60
target/arm: Convert XTN, SQXTUN, SQXTN, UQXTN to decodetree
54
target/arm: Convert FCVTN, BFCVTN to decodetree
61
target/arm: Convert FCVTN, BFCVTN to decodetree
55
target/arm: Convert FCVTXN to decodetree
62
target/arm: Convert FCVTXN to decodetree
56
target/arm: Convert SHLL to decodetree
63
target/arm: Convert SHLL to decodetree
64
target/arm: Implement gen_gvec_fabs, gen_gvec_fneg
57
target/arm: Convert FABS, FNEG (vector) to decodetree
65
target/arm: Convert FABS, FNEG (vector) to decodetree
58
target/arm: Convert FSQRT (vector) to decodetree
66
target/arm: Convert FSQRT (vector) to decodetree
59
target/arm: Convert FRINT* (vector) to decodetree
67
target/arm: Convert FRINT* (vector) to decodetree
60
target/arm: Convert FCVT* (vector, integer) scalar to decodetree
68
target/arm: Convert FCVT* (vector, integer) scalar to decodetree
61
target/arm: Convert FCVT* (vector, fixed-point) scalar to decodetree
69
target/arm: Convert FCVT* (vector, fixed-point) scalar to decodetree
...
...
72
target/arm: Convert URECPE and URSQRTE to decodetree
80
target/arm: Convert URECPE and URSQRTE to decodetree
73
target/arm: Convert FCVTL to decodetree
81
target/arm: Convert FCVTL to decodetree
74
82
75
target/arm/helper.h | 43 +-
83
target/arm/helper.h | 43 +-
76
target/arm/tcg/helper-a64.h | 7 -
84
target/arm/tcg/helper-a64.h | 7 -
77
target/arm/tcg/translate.h | 29 +
85
target/arm/tcg/translate.h | 35 +
78
target/arm/tcg/gengvec.c | 355 ++
86
target/arm/tcg/gengvec.c | 369 ++
79
target/arm/tcg/helper-a64.c | 104 -
87
target/arm/tcg/helper-a64.c | 104 -
80
target/arm/tcg/neon_helper.c | 106 +-
88
target/arm/tcg/neon_helper.c | 106 +-
81
target/arm/tcg/translate-a64.c | 5674 ++++++++++---------------------
89
target/arm/tcg/translate-a64.c | 5670 ++++++++++---------------------
82
target/arm/tcg/translate-neon.c | 317 +-
90
target/arm/tcg/translate-neon.c | 337 +-
83
target/arm/tcg/translate-vfp.c | 6 +-
91
target/arm/tcg/translate-vfp.c | 6 +-
84
target/arm/tcg/vec_helper.c | 65 +-
92
target/arm/tcg/vec_helper.c | 65 +-
85
target/arm/vfp_helper.c | 16 +-
93
target/arm/vfp_helper.c | 16 +-
86
target/arm/tcg/a64.decode | 502 ++-
94
target/arm/tcg/a64.decode | 502 ++-
87
12 files changed, 2874 insertions(+), 4350 deletions(-)
95
12 files changed, 2888 insertions(+), 4372 deletions(-)
88
96
89
--
97
--
90
2.43.0
98
2.43.0
diff view generated by jsdifflib
1
At the same time, use ### to separate 3rd-level sections.
1
We already use ### for 4.1.92 Data Processing (immediate),
2
We already use ### for 4.1.92 Data Processing (immediate),
2
but not the two following two third-level sections:
3
but not the two following two third-level sections:
3
4.1.93 Branches, and 4.1.94 Loads and stores.
4
4.1.93 Branches, and 4.1.94 Loads and stores.
4
5
6
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
8
---
7
target/arm/tcg/a64.decode | 4 ++--
9
target/arm/tcg/a64.decode | 19 +++++++++++++++++--
8
1 file changed, 2 insertions(+), 2 deletions(-)
10
1 file changed, 17 insertions(+), 2 deletions(-)
9
11
10
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
12
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
11
index XXXXXXX..XXXXXXX 100644
13
index XXXXXXX..XXXXXXX 100644
12
--- a/target/arm/tcg/a64.decode
14
--- a/target/arm/tcg/a64.decode
13
+++ b/target/arm/tcg/a64.decode
15
+++ b/target/arm/tcg/a64.decode
...
...
27
-# Loads and stores
29
-# Loads and stores
28
+### Loads and stores
30
+### Loads and stores
29
31
30
&stxr rn rt rt2 rs sz lasr
32
&stxr rn rt rt2 rs sz lasr
31
&stlr rn rt sz lasr
33
&stlr rn rt sz lasr
34
@@ -XXX,XX +XXX,XX @@ CPYP 00 011 1 01000 ..... .... 01 ..... ..... @cpy
35
CPYM 00 011 1 01010 ..... .... 01 ..... ..... @cpy
36
CPYE 00 011 1 01100 ..... .... 01 ..... ..... @cpy
37
38
+### Data Processing (register)
39
+
40
+# Data Processing (2-source)
41
+# Data Processing (1-source)
42
+# Logical (shifted reg)
43
+# Add/subtract (shifted reg)
44
+# Add/subtract (extended reg)
45
+# Add/subtract (carry)
46
+# Rotate right into flags
47
+# Evaluate into flags
48
+# Conditional compare (regster)
49
+# Conditional compare (immediate)
50
+# Conditional select
51
+# Data Processing (3-source)
52
+
53
### Cryptographic AES
54
55
AESE 01001110 00 10100 00100 10 ..... ..... @r2r_q1e0
32
--
56
--
33
2.43.0
57
2.43.0
58
59
diff view generated by jsdifflib
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 64 +++++++++++++++++-----------------
4
target/arm/tcg/translate-a64.c | 64 +++++++++++++++++-----------------
4
target/arm/tcg/a64.decode | 22 ++++++++++++
5
target/arm/tcg/a64.decode | 7 ++++
5
2 files changed, 54 insertions(+), 32 deletions(-)
6
2 files changed, 39 insertions(+), 32 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
...
...
110
&rri_sf rd rn imm sf
111
&rri_sf rd rn imm sf
111
+&rrr_sf rd rn rm sf
112
+&rrr_sf rd rn rm sf
112
&i imm
113
&i imm
113
&rr_e rd rn esz
114
&rr_e rd rn esz
114
&rri_e rd rn imm esz
115
&rri_e rd rn imm esz
115
@@ -XXX,XX +XXX,XX @@ CPYP 00 011 1 01000 ..... .... 01 ..... ..... @cpy
116
@@ -XXX,XX +XXX,XX @@ CPYE 00 011 1 01100 ..... .... 01 ..... ..... @cpy
116
CPYM 00 011 1 01010 ..... .... 01 ..... ..... @cpy
117
### Data Processing (register)
117
CPYE 00 011 1 01100 ..... .... 01 ..... ..... @cpy
118
118
119
# Data Processing (2-source)
119
+### Data Processing (register)
120
+
121
+# Data Processing (2-source)
122
+
120
+
123
+@rrr_sf sf:1 .......... rm:5 ...... rn:5 rd:5 &rrr_sf
121
+@rrr_sf sf:1 .......... rm:5 ...... rn:5 rd:5 &rrr_sf
124
+
122
+
125
+UDIV . 00 11010110 ..... 00001 0 ..... ..... @rrr_sf
123
+UDIV . 00 11010110 ..... 00001 0 ..... ..... @rrr_sf
126
+SDIV . 00 11010110 ..... 00001 1 ..... ..... @rrr_sf
124
+SDIV . 00 11010110 ..... 00001 1 ..... ..... @rrr_sf
127
+
125
+
128
+# Data Processing (1-source)
126
# Data Processing (1-source)
129
+# Logical (shifted reg)
127
# Logical (shifted reg)
130
+# Add/subtract (shifted reg)
128
# Add/subtract (shifted reg)
131
+# Add/subtract (extended reg)
132
+# Add/subtract (carry)
133
+# Rotate right into flags
134
+# Evaluate into flags
135
+# Conditional compare (regster)
136
+# Conditional compare (immediate)
137
+# Conditional select
138
+# Data Processing (3-source)
139
+
140
### Cryptographic AES
141
142
AESE 01001110 00 10100 00100 10 ..... ..... @r2r_q1e0
143
--
129
--
144
2.43.0
130
2.43.0
131
132
diff view generated by jsdifflib
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 46 ++++++++++++++++------------------
4
target/arm/tcg/translate-a64.c | 46 ++++++++++++++++------------------
4
target/arm/tcg/a64.decode | 4 +++
5
target/arm/tcg/a64.decode | 4 +++
5
2 files changed, 25 insertions(+), 25 deletions(-)
6
2 files changed, 25 insertions(+), 25 deletions(-)
...
...
97
98
98
# Data Processing (1-source)
99
# Data Processing (1-source)
99
# Logical (shifted reg)
100
# Logical (shifted reg)
100
--
101
--
101
2.43.0
102
2.43.0
103
104
diff view generated by jsdifflib
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 101 +++++++++++++--------------------
4
target/arm/tcg/translate-a64.c | 101 +++++++++++++--------------------
4
target/arm/tcg/a64.decode | 12 ++++
5
target/arm/tcg/a64.decode | 12 ++++
5
2 files changed, 53 insertions(+), 60 deletions(-)
6
2 files changed, 53 insertions(+), 60 deletions(-)
...
...
168
# Data Processing (1-source)
169
# Data Processing (1-source)
169
# Logical (shifted reg)
170
# Logical (shifted reg)
170
# Add/subtract (shifted reg)
171
# Add/subtract (shifted reg)
171
--
172
--
172
2.43.0
173
2.43.0
174
175
diff view generated by jsdifflib
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 94 +++++++++++++++++++---------------
4
target/arm/tcg/translate-a64.c | 94 +++++++++++++++++++---------------
4
target/arm/tcg/a64.decode | 7 +++
5
target/arm/tcg/a64.decode | 7 +++
5
2 files changed, 59 insertions(+), 42 deletions(-)
6
2 files changed, 59 insertions(+), 42 deletions(-)
...
...
157
# Data Processing (1-source)
158
# Data Processing (1-source)
158
# Logical (shifted reg)
159
# Logical (shifted reg)
159
# Add/subtract (shifted reg)
160
# Add/subtract (shifted reg)
160
--
161
--
161
2.43.0
162
2.43.0
163
164
diff view generated by jsdifflib
1
Remove disas_data_proc_2src, as this was the last insn
1
Remove disas_data_proc_2src, as this was the last insn
2
decoded by that function.
2
decoded by that function.
3
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 65 ++++++----------------------------
7
target/arm/tcg/translate-a64.c | 65 ++++++----------------------------
7
target/arm/tcg/a64.decode | 2 ++
8
target/arm/tcg/a64.decode | 2 ++
8
2 files changed, 13 insertions(+), 54 deletions(-)
9
2 files changed, 13 insertions(+), 54 deletions(-)
...
...
110
# Data Processing (1-source)
111
# Data Processing (1-source)
111
# Logical (shifted reg)
112
# Logical (shifted reg)
112
# Add/subtract (shifted reg)
113
# Add/subtract (shifted reg)
113
--
114
--
114
2.43.0
115
2.43.0
116
117
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 137 +++++++++++++++------------------
4
target/arm/tcg/translate-a64.c | 137 +++++++++++++++------------------
4
target/arm/tcg/a64.decode | 11 +++
5
target/arm/tcg/a64.decode | 11 +++
5
2 files changed, 72 insertions(+), 76 deletions(-)
6
2 files changed, 72 insertions(+), 76 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 72 ++++++++++++++--------------------
4
target/arm/tcg/translate-a64.c | 72 ++++++++++++++--------------------
4
target/arm/tcg/a64.decode | 3 ++
5
target/arm/tcg/a64.decode | 3 ++
5
2 files changed, 33 insertions(+), 42 deletions(-)
6
2 files changed, 33 insertions(+), 42 deletions(-)
...
...
122
# Logical (shifted reg)
123
# Logical (shifted reg)
123
# Add/subtract (shifted reg)
124
# Add/subtract (shifted reg)
124
# Add/subtract (extended reg)
125
# Add/subtract (extended reg)
125
--
126
--
126
2.43.0
127
2.43.0
128
129
diff view generated by jsdifflib
1
This includes PACIA, PACIZA, PACIB, PACIZB, PACDA, PACDZA, PACDB,
1
This includes PACIA, PACIZA, PACIB, PACIZB, PACDA, PACDZA, PACDB,
2
PACDZB, AUTIA, AUTIZA, AUTIB, AUTIZB, AUTDA, AUTDZA, AUTDB, AUTDZB.
2
PACDZB, AUTIA, AUTIZA, AUTIB, AUTIZB, AUTDA, AUTDZA, AUTDB, AUTDZB.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 173 +++++++++------------------------
7
target/arm/tcg/translate-a64.c | 173 +++++++++------------------------
7
target/arm/tcg/a64.decode | 13 +++
8
target/arm/tcg/a64.decode | 13 +++
8
2 files changed, 58 insertions(+), 128 deletions(-)
9
2 files changed, 58 insertions(+), 128 deletions(-)
...
...
diff view generated by jsdifflib
1
Remove disas_data_proc_1src, as these were the last insns
1
Remove disas_data_proc_1src, as these were the last insns
2
decoded by that function.
2
decoded by that function.
3
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 99 +++++-----------------------------
7
target/arm/tcg/translate-a64.c | 99 +++++-----------------------------
7
target/arm/tcg/a64.decode | 3 ++
8
target/arm/tcg/a64.decode | 3 ++
8
2 files changed, 16 insertions(+), 86 deletions(-)
9
2 files changed, 16 insertions(+), 86 deletions(-)
...
...
158
# Logical (shifted reg)
159
# Logical (shifted reg)
159
# Add/subtract (shifted reg)
160
# Add/subtract (shifted reg)
160
# Add/subtract (extended reg)
161
# Add/subtract (extended reg)
161
--
162
--
162
2.43.0
163
2.43.0
164
165
diff view generated by jsdifflib
1
This includes AND, BIC, ORR, ORN, EOR, EON, ANDS, BICS (shifted reg).
1
This includes AND, BIC, ORR, ORN, EOR, EON, ANDS, BICS (shifted reg).
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate-a64.c | 117 ++++++++++++---------------------
6
target/arm/tcg/translate-a64.c | 117 ++++++++++++---------------------
6
target/arm/tcg/a64.decode | 9 +++
7
target/arm/tcg/a64.decode | 9 +++
7
2 files changed, 51 insertions(+), 75 deletions(-)
8
2 files changed, 51 insertions(+), 75 deletions(-)
...
...
169
XPACD 1 10 11010110 00001 010001 11111 rd:5
170
XPACD 1 10 11010110 00001 010001 11111 rd:5
170
171
171
# Logical (shifted reg)
172
# Logical (shifted reg)
172
+
173
+
173
+&logic_shift rd rn rm sf sa st n
174
+&logic_shift rd rn rm sf sa st n
174
+@logic_shift sf:1 .. ..... st:2 n:1 rm:5 sa:6 rn:5 rd:5
175
+@logic_shift sf:1 .. ..... st:2 n:1 rm:5 sa:6 rn:5 rd:5 &logic_shift
175
+
176
+
176
+AND_r . 00 01010 .. . ..... ...... ..... ..... @logic_shift
177
+AND_r . 00 01010 .. . ..... ...... ..... ..... @logic_shift
177
+ORR_r . 01 01010 .. . ..... ...... ..... ..... @logic_shift
178
+ORR_r . 01 01010 .. . ..... ...... ..... ..... @logic_shift
178
+EOR_r . 10 01010 .. . ..... ...... ..... ..... @logic_shift
179
+EOR_r . 10 01010 .. . ..... ...... ..... ..... @logic_shift
179
+ANDS_r . 11 01010 .. . ..... ...... ..... ..... @logic_shift
180
+ANDS_r . 11 01010 .. . ..... ...... ..... ..... @logic_shift
180
+
181
+
181
# Add/subtract (shifted reg)
182
# Add/subtract (shifted reg)
182
# Add/subtract (extended reg)
183
# Add/subtract (extended reg)
183
# Add/subtract (carry)
184
# Add/subtract (carry)
184
--
185
--
185
2.43.0
186
2.43.0
diff view generated by jsdifflib
1
This includes ADD, SUB, ADDS, SUBS (extended register).
1
This includes ADD, SUB, ADDS, SUBS (extended register).
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate-a64.c | 65 +++++++++++-----------------------
6
target/arm/tcg/translate-a64.c | 65 +++++++++++-----------------------
6
target/arm/tcg/a64.decode | 9 +++++
7
target/arm/tcg/a64.decode | 9 +++++
7
2 files changed, 29 insertions(+), 45 deletions(-)
8
2 files changed, 29 insertions(+), 45 deletions(-)
...
...
119
disas_add_sub_reg(s, insn);
120
disas_add_sub_reg(s, insn);
120
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
121
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
121
index XXXXXXX..XXXXXXX 100644
122
index XXXXXXX..XXXXXXX 100644
122
--- a/target/arm/tcg/a64.decode
123
--- a/target/arm/tcg/a64.decode
123
+++ b/target/arm/tcg/a64.decode
124
+++ b/target/arm/tcg/a64.decode
124
@@ -XXX,XX +XXX,XX @@ ANDS_r . 11 01010 .. . ..... ...... ..... ..... @logic_shift
125
@@ -XXX,XX +XXX,XX @@ ANDS_r . 11 01010 .. . ..... ...... ..... ..... @logic_shift
125
126
126
# Add/subtract (shifted reg)
127
# Add/subtract (shifted reg)
127
# Add/subtract (extended reg)
128
# Add/subtract (extended reg)
128
+
129
+
129
+&addsub_ext rd rn rm sf sa st
130
+&addsub_ext rd rn rm sf sa st
130
+@addsub_ext sf:1 .. ........ rm:5 st:3 sa:3 rn:5 rd:5 &addsub_ext
131
+@addsub_ext sf:1 .. ........ rm:5 st:3 sa:3 rn:5 rd:5 &addsub_ext
131
+
132
+
132
+ADD_ext . 00 01011001 ..... ... ... ..... ..... @addsub_ext
133
+ADD_ext . 00 01011001 ..... ... ... ..... ..... @addsub_ext
133
+SUB_ext . 10 01011001 ..... ... ... ..... ..... @addsub_ext
134
+SUB_ext . 10 01011001 ..... ... ... ..... ..... @addsub_ext
134
+ADDS_ext . 01 01011001 ..... ... ... ..... ..... @addsub_ext
135
+ADDS_ext . 01 01011001 ..... ... ... ..... ..... @addsub_ext
135
+SUBS_ext . 11 01011001 ..... ... ... ..... ..... @addsub_ext
136
+SUBS_ext . 11 01011001 ..... ... ... ..... ..... @addsub_ext
136
+
137
+
137
# Add/subtract (carry)
138
# Add/subtract (carry)
138
# Rotate right into flags
139
# Rotate right into flags
139
# Evaluate into flags
140
# Evaluate into flags
140
--
141
--
141
2.43.0
142
2.43.0
diff view generated by jsdifflib
1
This includes ADD, SUB, ADDS, SUBS (shifted register).
1
This includes ADD, SUB, ADDS, SUBS (shifted register).
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate-a64.c | 64 ++++++++++------------------------
6
target/arm/tcg/translate-a64.c | 64 ++++++++++------------------------
6
target/arm/tcg/a64.decode | 11 +++++-
7
target/arm/tcg/a64.decode | 9 +++++
7
2 files changed, 28 insertions(+), 47 deletions(-)
8
2 files changed, 27 insertions(+), 46 deletions(-)
8
9
9
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
10
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
10
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
11
--- a/target/arm/tcg/translate-a64.c
12
--- a/target/arm/tcg/translate-a64.c
12
+++ b/target/arm/tcg/translate-a64.c
13
+++ b/target/arm/tcg/translate-a64.c
...
...
114
115
115
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
116
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
116
index XXXXXXX..XXXXXXX 100644
117
index XXXXXXX..XXXXXXX 100644
117
--- a/target/arm/tcg/a64.decode
118
--- a/target/arm/tcg/a64.decode
118
+++ b/target/arm/tcg/a64.decode
119
+++ b/target/arm/tcg/a64.decode
119
@@ -XXX,XX +XXX,XX @@ XPACD 1 10 11010110 00001 010001 11111 rd:5
120
@@ -XXX,XX +XXX,XX @@ EOR_r . 10 01010 .. . ..... ...... ..... ..... @logic_shift
120
# Logical (shifted reg)
121
ANDS_r . 11 01010 .. . ..... ...... ..... ..... @logic_shift
121
122
&logic_shift rd rn rm sf sa st n
123
-@logic_shift sf:1 .. ..... st:2 n:1 rm:5 sa:6 rn:5 rd:5
124
+@logic_shift sf:1 .. ..... st:2 n:1 rm:5 sa:6 rn:5 rd:5 &logic_shift
125
126
AND_r . 00 01010 .. . ..... ...... ..... ..... @logic_shift
127
ORR_r . 01 01010 .. . ..... ...... ..... ..... @logic_shift
128
@@ -XXX,XX +XXX,XX @@ EOR_r . 10 01010 .. . ..... ...... ..... ..... @logic_shift
129
ANDS_r . 11 01010 .. . ..... ...... ..... ..... @logic_shift
130
122
131
# Add/subtract (shifted reg)
123
# Add/subtract (shifted reg)
132
+
124
+
133
+&addsub_shift rd rn rm sf sa st
125
+&addsub_shift rd rn rm sf sa st
134
+@addsub_shift sf:1 .. ..... st:2 . rm:5 sa:6 rn:5 rd:5 &addsub_shift
126
+@addsub_shift sf:1 .. ..... st:2 . rm:5 sa:6 rn:5 rd:5 &addsub_shift
135
+
127
+
136
+ADD_r . 00 01011 .. 0 ..... ...... ..... ..... @addsub_shift
128
+ADD_r . 00 01011 .. 0 ..... ...... ..... ..... @addsub_shift
137
+SUB_r . 10 01011 .. 0 ..... ...... ..... ..... @addsub_shift
129
+SUB_r . 10 01011 .. 0 ..... ...... ..... ..... @addsub_shift
138
+ADDS_r . 01 01011 .. 0 ..... ...... ..... ..... @addsub_shift
130
+ADDS_r . 01 01011 .. 0 ..... ...... ..... ..... @addsub_shift
139
+SUBS_r . 11 01011 .. 0 ..... ...... ..... ..... @addsub_shift
131
+SUBS_r . 11 01011 .. 0 ..... ...... ..... ..... @addsub_shift
140
+
132
+
141
# Add/subtract (extended reg)
133
# Add/subtract (extended reg)
142
134
143
&addsub_ext rd rn rm sf sa st
135
&addsub_ext rd rn rm sf sa st
144
--
136
--
145
2.43.0
137
2.43.0
diff view generated by jsdifflib
1
This includes MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, SMULH, UMULH.
1
This includes MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, SMULH, UMULH.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate-a64.c | 119 ++++++++++++---------------------
6
target/arm/tcg/translate-a64.c | 119 ++++++++++++---------------------
6
target/arm/tcg/a64.decode | 16 +++++
7
target/arm/tcg/a64.decode | 16 +++++
7
2 files changed, 59 insertions(+), 76 deletions(-)
8
2 files changed, 59 insertions(+), 76 deletions(-)
...
...
168
}
169
}
169
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
170
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
170
index XXXXXXX..XXXXXXX 100644
171
index XXXXXXX..XXXXXXX 100644
171
--- a/target/arm/tcg/a64.decode
172
--- a/target/arm/tcg/a64.decode
172
+++ b/target/arm/tcg/a64.decode
173
+++ b/target/arm/tcg/a64.decode
173
@@ -XXX,XX +XXX,XX @@ SUBS_ext . 11 01011001 ..... ... ... ..... ..... @addsub_ext
174
@@ -XXX,XX +XXX,XX @@ SUBS_ext . 11 01011001 ..... ... ... ..... ..... @addsub_ext
174
# Conditional select
175
# Conditional select
175
# Data Processing (3-source)
176
# Data Processing (3-source)
176
177
177
+&rrrr rd rn rm ra
178
+&rrrr rd rn rm ra
178
+@rrrr . .. ........ rm:5 . ra:5 rn:5 rd:5 &rrrr
179
+@rrrr . .. ........ rm:5 . ra:5 rn:5 rd:5 &rrrr
...
...
diff view generated by jsdifflib
1
This includes ADC, SBC, ADCS, SBCS.
1
This includes ADC, SBC, ADCS, SBCS.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate-a64.c | 43 +++++++++++++---------------------
6
target/arm/tcg/translate-a64.c | 43 +++++++++++++---------------------
6
target/arm/tcg/a64.decode | 6 +++++
7
target/arm/tcg/a64.decode | 6 +++++
7
2 files changed, 22 insertions(+), 27 deletions(-)
8
2 files changed, 22 insertions(+), 27 deletions(-)
...
...
89
break;
90
break;
90
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
91
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
91
index XXXXXXX..XXXXXXX 100644
92
index XXXXXXX..XXXXXXX 100644
92
--- a/target/arm/tcg/a64.decode
93
--- a/target/arm/tcg/a64.decode
93
+++ b/target/arm/tcg/a64.decode
94
+++ b/target/arm/tcg/a64.decode
94
@@ -XXX,XX +XXX,XX @@ ADDS_ext . 01 01011001 ..... ... ... ..... ..... @addsub_ext
95
@@ -XXX,XX +XXX,XX @@ ADDS_ext . 01 01011001 ..... ... ... ..... ..... @addsub_ext
95
SUBS_ext . 11 01011001 ..... ... ... ..... ..... @addsub_ext
96
SUBS_ext . 11 01011001 ..... ... ... ..... ..... @addsub_ext
96
97
97
# Add/subtract (carry)
98
# Add/subtract (carry)
98
+
99
+
99
+ADC . 00 11010000 ..... 000000 ..... ..... @rrr_sf
100
+ADC . 00 11010000 ..... 000000 ..... ..... @rrr_sf
100
+ADCS . 01 11010000 ..... 000000 ..... ..... @rrr_sf
101
+ADCS . 01 11010000 ..... 000000 ..... ..... @rrr_sf
...
...
diff view generated by jsdifflib
1
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 32 +++++++++-----------------------
4
target/arm/tcg/translate-a64.c | 32 +++++++++-----------------------
4
target/arm/tcg/a64.decode | 3 +++
5
target/arm/tcg/a64.decode | 3 +++
5
2 files changed, 12 insertions(+), 23 deletions(-)
6
2 files changed, 12 insertions(+), 23 deletions(-)
...
...
88
# Evaluate into flags
89
# Evaluate into flags
89
# Conditional compare (regster)
90
# Conditional compare (regster)
90
# Conditional compare (immediate)
91
# Conditional compare (immediate)
91
--
92
--
92
2.43.0
93
2.43.0
94
95
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 48 +++++-----------------------------
4
target/arm/tcg/translate-a64.c | 48 +++++-----------------------------
4
target/arm/tcg/a64.decode | 4 +++
5
target/arm/tcg/a64.decode | 4 +++
5
2 files changed, 11 insertions(+), 41 deletions(-)
6
2 files changed, 11 insertions(+), 41 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 66 +++++++++++-----------------------
4
target/arm/tcg/translate-a64.c | 66 +++++++++++-----------------------
4
target/arm/tcg/a64.decode | 6 ++--
5
target/arm/tcg/a64.decode | 6 ++--
5
2 files changed, 25 insertions(+), 47 deletions(-)
6
2 files changed, 25 insertions(+), 47 deletions(-)
...
...
diff view generated by jsdifflib
1
This includes CSEL, CSINC, CSINV, CSNEG. Remove disas_data_proc_reg,
1
This includes CSEL, CSINC, CSINV, CSNEG. Remove disas_data_proc_reg,
2
as these were the last insns decoded by that function.
2
as these were the last insns decoded by that function.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 84 ++++++----------------------------
7
target/arm/tcg/translate-a64.c | 84 ++++++----------------------------
7
target/arm/tcg/a64.decode | 3 ++
8
target/arm/tcg/a64.decode | 3 ++
8
2 files changed, 17 insertions(+), 70 deletions(-)
9
2 files changed, 17 insertions(+), 70 deletions(-)
...
...
diff view generated by jsdifflib
1
Provide a simple way to check for float64, float32,
1
Provide a simple way to check for float64, float32,
2
and float16 support, as well as the fpu enabled.
2
and float16 support, as well as the fpu enabled.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 62 ++++++++++++++++++----------------
7
target/arm/tcg/translate-a64.c | 62 ++++++++++++++++++----------------
7
1 file changed, 32 insertions(+), 30 deletions(-)
8
1 file changed, 32 insertions(+), 30 deletions(-)
8
9
...
...
diff view generated by jsdifflib
1
Provide a simple way to check for float64, float32, and float16
1
Provide a simple way to check for float64, float32, and float16
2
support vs vector width, as well as the fpu enabled.
2
support vs vector width, as well as the fpu enabled.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 135 +++++++++++++--------------------
7
target/arm/tcg/translate-a64.c | 135 +++++++++++++--------------------
7
1 file changed, 54 insertions(+), 81 deletions(-)
8
1 file changed, 54 insertions(+), 81 deletions(-)
8
9
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 287 +++++++++++++--------------------
4
target/arm/tcg/translate-a64.c | 283 ++++++++++++---------------------
4
target/arm/tcg/a64.decode | 8 +
5
target/arm/tcg/a64.decode | 8 +
5
2 files changed, 116 insertions(+), 179 deletions(-)
6
2 files changed, 112 insertions(+), 179 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
...
...
72
+}
73
+}
73
+
74
+
74
+/* FCMP, FCMPE */
75
+/* FCMP, FCMPE */
75
+static bool trans_FCMP(DisasContext *s, arg_FCMP *a)
76
+static bool trans_FCMP(DisasContext *s, arg_FCMP *a)
76
+{
77
+{
77
+ int check;
78
+ int check = fp_access_check_scalar_hsd(s, a->esz);
78
+
79
+
79
+ if (a->z && a->rm != 0) {
80
+ return false;
81
+ }
82
+ check = fp_access_check_scalar_hsd(s, a->esz);
83
+ if (check <= 0) {
80
+ if (check <= 0) {
84
+ return check == 0;
81
+ return check == 0;
85
+ }
82
+ }
86
+
83
+
87
+ handle_fp_compare(s, a->esz, a->rn, a->rm, a->z, a->e);
84
+ handle_fp_compare(s, a->esz, a->rn, a->rm, a->z, a->e);
...
...
diff view generated by jsdifflib
New patch
1
These opcodes are only supported as vector operations,
2
not as advsimd scalar. Set only_in_vector, and remove
3
the unreachable implementation of scalar fneg.
1
4
5
Reported-by: Peter Maydell <peter.maydell@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
target/arm/tcg/translate-a64.c | 6 +++---
9
1 file changed, 3 insertions(+), 3 deletions(-)
10
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/arm/tcg/translate-a64.c
14
+++ b/target/arm/tcg/translate-a64.c
15
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
16
break;
17
case 0x2f: /* FABS */
18
case 0x6f: /* FNEG */
19
+ only_in_vector = true;
20
need_fpst = false;
21
break;
22
case 0x7d: /* FRSQRTE */
23
+ break;
24
case 0x7f: /* FSQRT (vector) */
25
+ only_in_vector = true;
26
break;
27
default:
28
unallocated_encoding(s);
29
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
30
case 0x7b: /* FCVTZU */
31
gen_helper_advsimd_f16touinth(tcg_res, tcg_op, tcg_fpstatus);
32
break;
33
- case 0x6f: /* FNEG */
34
- tcg_gen_xori_i32(tcg_res, tcg_op, 0x8000);
35
- break;
36
case 0x7d: /* FRSQRTE */
37
gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
38
break;
39
--
40
2.43.0
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 104 ++++++++++++++++++++++-----------
4
target/arm/tcg/translate-a64.c | 105 +++++++++++++++++++++++----------
4
target/arm/tcg/a64.decode | 7 +++
5
target/arm/tcg/a64.decode | 7 +++
5
2 files changed, 78 insertions(+), 33 deletions(-)
6
2 files changed, 81 insertions(+), 31 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
...
...
159
+ case 0x1: /* FABS */
160
+ case 0x1: /* FABS */
160
+ case 0x2: /* FNEG */
161
+ case 0x2: /* FNEG */
161
g_assert_not_reached();
162
g_assert_not_reached();
162
}
163
}
163
164
164
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
165
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
165
case 0x7b: /* FCVTZU */
166
goto do_unallocated;
166
gen_helper_advsimd_f16touinth(tcg_res, tcg_op, tcg_fpstatus);
167
break;
168
- case 0x6f: /* FNEG */
169
- tcg_gen_xori_i32(tcg_res, tcg_op, 0x8000);
170
- break;
171
case 0x7d: /* FRSQRTE */
172
gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
173
break;
174
default:
175
+ case 0x6f: /* FNEG */
176
g_assert_not_reached();
177
}
167
}
178
168
/* fall through */
169
- case 0x0 ... 0x3:
170
+ case 0x3:
171
case 0x8 ... 0xc:
172
case 0xe ... 0xf:
173
/* 32-to-32 and 64-to-64 ops */
174
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
175
176
default:
177
do_unallocated:
178
+ case 0x0: /* FMOV */
179
+ case 0x1: /* FABS */
180
+ case 0x2: /* FNEG */
181
unallocated_encoding(s);
182
break;
183
}
179
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
184
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
180
index XXXXXXX..XXXXXXX 100644
185
index XXXXXXX..XXXXXXX 100644
181
--- a/target/arm/tcg/a64.decode
186
--- a/target/arm/tcg/a64.decode
182
+++ b/target/arm/tcg/a64.decode
187
+++ b/target/arm/tcg/a64.decode
183
@@ -XXX,XX +XXX,XX @@
188
@@ -XXX,XX +XXX,XX @@
...
...
diff view generated by jsdifflib
1
Pass fpstatus not env, like most other fp helpers.
1
Pass fpstatus not env, like most other fp helpers.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/helper.h | 6 +++---
6
target/arm/helper.h | 6 +++---
6
target/arm/tcg/translate-a64.c | 15 +++++++--------
7
target/arm/tcg/translate-a64.c | 15 +++++++--------
7
target/arm/tcg/translate-vfp.c | 6 +++---
8
target/arm/tcg/translate-vfp.c | 6 +++---
...
...
diff view generated by jsdifflib
1
This function is identical with helper_vfp_sqrth.
1
This function is identical with helper_vfp_sqrth.
2
Replace all uses.
2
Replace all uses.
3
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/helper-a64.h | 1 -
7
target/arm/tcg/helper-a64.h | 1 -
7
target/arm/tcg/helper-a64.c | 11 -----------
8
target/arm/tcg/helper-a64.c | 11 -----------
8
target/arm/tcg/translate-a64.c | 4 ++--
9
target/arm/tcg/translate-a64.c | 4 ++--
...
...
64
break;
65
break;
65
default:
66
default:
66
g_assert_not_reached();
67
g_assert_not_reached();
67
--
68
--
68
2.43.0
69
2.43.0
70
71
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 70 +++++++++++++++++++++++++++++-----
4
target/arm/tcg/translate-a64.c | 72 ++++++++++++++++++++++++++++------
4
target/arm/tcg/a64.decode | 1 +
5
target/arm/tcg/a64.decode | 1 +
5
2 files changed, 61 insertions(+), 10 deletions(-)
6
2 files changed, 62 insertions(+), 11 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
...
...
125
case 0x2: /* FNEG */
126
case 0x2: /* FNEG */
126
+ case 0x3: /* FSQRT */
127
+ case 0x3: /* FSQRT */
127
g_assert_not_reached();
128
g_assert_not_reached();
128
}
129
}
129
130
131
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
132
goto do_unallocated;
133
}
134
/* fall through */
135
- case 0x3:
136
case 0x8 ... 0xc:
137
case 0xe ... 0xf:
138
/* 32-to-32 and 64-to-64 ops */
139
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
140
case 0x0: /* FMOV */
141
case 0x1: /* FABS */
142
case 0x2: /* FNEG */
143
+ case 0x3: /* FSQRT */
144
unallocated_encoding(s);
145
break;
146
}
130
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
147
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
131
index XXXXXXX..XXXXXXX 100644
148
index XXXXXXX..XXXXXXX 100644
132
--- a/target/arm/tcg/a64.decode
149
--- a/target/arm/tcg/a64.decode
133
+++ b/target/arm/tcg/a64.decode
150
+++ b/target/arm/tcg/a64.decode
134
@@ -XXX,XX +XXX,XX @@ FMINV_s 0110 1110 10 11000 01111 10 ..... ..... @rr_q1e2
151
@@ -XXX,XX +XXX,XX @@ FMINV_s 0110 1110 10 11000 01111 10 ..... ..... @rr_q1e2
...
...
diff view generated by jsdifflib
1
Remove handle_fp_1src_half as these were the last insns
1
Remove handle_fp_1src_half as these were the last insns
2
decoded by that function.
2
decoded by that function.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 107 ++++++++++-----------------------
7
target/arm/tcg/translate-a64.c | 117 +++++++++++----------------------
7
target/arm/tcg/a64.decode | 8 +++
8
target/arm/tcg/a64.decode | 8 +++
8
2 files changed, 39 insertions(+), 76 deletions(-)
9
2 files changed, 46 insertions(+), 79 deletions(-)
9
10
10
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
11
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
12
--- a/target/arm/tcg/translate-a64.c
13
--- a/target/arm/tcg/translate-a64.c
13
+++ b/target/arm/tcg/translate-a64.c
14
+++ b/target/arm/tcg/translate-a64.c
...
...
103
+ case 0x8: /* FRINTN */
104
+ case 0x8: /* FRINTN */
104
+ case 0x9: /* FRINTP */
105
+ case 0x9: /* FRINTP */
105
+ case 0xa: /* FRINTM */
106
+ case 0xa: /* FRINTM */
106
+ case 0xb: /* FRINTZ */
107
+ case 0xb: /* FRINTZ */
107
+ case 0xc: /* FRINTA */
108
+ case 0xc: /* FRINTA */
109
+ case 0xe: /* FRINTX */
108
+ case 0xf: /* FRINTI */
110
+ case 0xf: /* FRINTI */
109
+ case 0xe: /* FRINTX */
110
g_assert_not_reached();
111
g_assert_not_reached();
111
}
112
}
112
113
113
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
114
@@ -XXX,XX +XXX,XX @@ static void handle_fp_1src_double(DisasContext *s, int opcode, int rd, int rn)
114
tcg_res = tcg_temp_new_i64();
115
tcg_res = tcg_temp_new_i64();
...
...
138
+ case 0x8: /* FRINTN */
139
+ case 0x8: /* FRINTN */
139
+ case 0x9: /* FRINTP */
140
+ case 0x9: /* FRINTP */
140
+ case 0xa: /* FRINTM */
141
+ case 0xa: /* FRINTM */
141
+ case 0xb: /* FRINTZ */
142
+ case 0xb: /* FRINTZ */
142
+ case 0xc: /* FRINTA */
143
+ case 0xc: /* FRINTA */
144
+ case 0xe: /* FRINTX */
143
+ case 0xf: /* FRINTI */
145
+ case 0xf: /* FRINTI */
144
+ case 0xe: /* FRINTX */
145
g_assert_not_reached();
146
g_assert_not_reached();
146
}
147
}
147
148
149
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
150
if (type > 1 || !dc_isar_feature(aa64_frint, s)) {
151
goto do_unallocated;
152
}
153
- /* fall through */
154
- case 0x8 ... 0xc:
155
- case 0xe ... 0xf:
156
/* 32-to-32 and 64-to-64 ops */
157
switch (type) {
158
case 0:
148
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
159
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
149
handle_fp_1src_double(s, opcode, rd, rn);
160
handle_fp_1src_double(s, opcode, rd, rn);
150
break;
161
break;
151
case 3:
162
case 3:
152
- if (!dc_isar_feature(aa64_fp16, s)) {
163
- if (!dc_isar_feature(aa64_fp16, s)) {
...
...
159
- handle_fp_1src_half(s, opcode, rd, rn);
170
- handle_fp_1src_half(s, opcode, rd, rn);
160
- break;
171
- break;
161
default:
172
default:
162
goto do_unallocated;
173
goto do_unallocated;
163
}
174
}
175
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
176
case 0x1: /* FABS */
177
case 0x2: /* FNEG */
178
case 0x3: /* FSQRT */
179
+ case 0x8: /* FRINTN */
180
+ case 0x9: /* FRINTP */
181
+ case 0xa: /* FRINTM */
182
+ case 0xb: /* FRINTZ */
183
+ case 0xc: /* FRINTA */
184
+ case 0xe: /* FRINTX */
185
+ case 0xf: /* FRINTI */
186
unallocated_encoding(s);
187
break;
188
}
164
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
189
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
165
index XXXXXXX..XXXXXXX 100644
190
index XXXXXXX..XXXXXXX 100644
166
--- a/target/arm/tcg/a64.decode
191
--- a/target/arm/tcg/a64.decode
167
+++ b/target/arm/tcg/a64.decode
192
+++ b/target/arm/tcg/a64.decode
168
@@ -XXX,XX +XXX,XX @@ FABS_s 00011110 .. 1 000001 10000 ..... ..... @rr_hsd
193
@@ -XXX,XX +XXX,XX @@ FABS_s 00011110 .. 1 000001 10000 ..... ..... @rr_hsd
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 24 ++++++------------------
4
target/arm/tcg/translate-a64.c | 26 +++++++-------------------
4
target/arm/tcg/a64.decode | 3 +++
5
target/arm/tcg/a64.decode | 3 +++
5
2 files changed, 9 insertions(+), 18 deletions(-)
6
2 files changed, 10 insertions(+), 19 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
...
...
37
+ case 0x6: /* BFCVT */
38
+ case 0x6: /* BFCVT */
38
case 0x8: /* FRINTN */
39
case 0x8: /* FRINTN */
39
case 0x9: /* FRINTP */
40
case 0x9: /* FRINTP */
40
case 0xa: /* FRINTM */
41
case 0xa: /* FRINTM */
41
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
42
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
43
}
42
break;
44
break;
43
45
44
case 0x6:
46
- case 0x6:
45
- switch (type) {
47
- switch (type) {
46
- case 1: /* BFCVT */
48
- case 1: /* BFCVT */
47
- if (!dc_isar_feature(aa64_bf16, s)) {
49
- if (!dc_isar_feature(aa64_bf16, s)) {
48
- goto do_unallocated;
50
- goto do_unallocated;
49
- }
51
- }
...
...
57
- }
59
- }
58
- break;
60
- break;
59
-
61
-
60
default:
62
default:
61
do_unallocated:
63
do_unallocated:
62
unallocated_encoding(s);
64
case 0x0: /* FMOV */
65
case 0x1: /* FABS */
66
case 0x2: /* FNEG */
67
case 0x3: /* FSQRT */
68
+ case 0x6: /* BFCVT */
69
case 0x8: /* FRINTN */
70
case 0x9: /* FRINTP */
71
case 0xa: /* FRINTM */
63
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
72
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
64
index XXXXXXX..XXXXXXX 100644
73
index XXXXXXX..XXXXXXX 100644
65
--- a/target/arm/tcg/a64.decode
74
--- a/target/arm/tcg/a64.decode
66
+++ b/target/arm/tcg/a64.decode
75
+++ b/target/arm/tcg/a64.decode
67
@@ -XXX,XX +XXX,XX @@
76
@@ -XXX,XX +XXX,XX @@
...
...
74
@rr_hsd ........ ... ..... ...... rn:5 rd:5 &rr_e esz=%esz_hsd
83
@rr_hsd ........ ... ..... ...... rn:5 rd:5 &rr_e esz=%esz_hsd
75
@@ -XXX,XX +XXX,XX @@ FRINTA_s 00011110 .. 1 001100 10000 ..... ..... @rr_hsd
84
@@ -XXX,XX +XXX,XX @@ FRINTA_s 00011110 .. 1 001100 10000 ..... ..... @rr_hsd
76
FRINTX_s 00011110 .. 1 001110 10000 ..... ..... @rr_hsd
85
FRINTX_s 00011110 .. 1 001110 10000 ..... ..... @rr_hsd
77
FRINTI_s 00011110 .. 1 001111 10000 ..... ..... @rr_hsd
86
FRINTI_s 00011110 .. 1 001111 10000 ..... ..... @rr_hsd
78
87
79
+BFCVT_s 00011110 10 1 000110 10000 ..... ..... @rr_s
88
+BFCVT_s 00011110 01 1 000110 10000 ..... ..... @rr_s
80
+
89
+
81
# Floating-point Immediate
90
# Floating-point Immediate
82
91
83
FMOVI_s 0001 1110 .. 1 imm:8 100 00000 rd:5 esz=%esz_hsd
92
FMOVI_s 0001 1110 .. 1 imm:8 100 00000 rd:5 esz=%esz_hsd
84
--
93
--
85
2.43.0
94
2.43.0
diff view generated by jsdifflib
1
Remove handle_fp_1src_single and handle_fp_1src_double as
1
Remove handle_fp_1src_single and handle_fp_1src_double as
2
these were the last insns decoded by those functions.
2
these were the last insns decoded by those functions.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 150 ++++-----------------------------
7
target/arm/tcg/translate-a64.c | 146 ++++-----------------------------
7
target/arm/tcg/a64.decode | 5 ++
8
target/arm/tcg/a64.decode | 5 ++
8
2 files changed, 21 insertions(+), 134 deletions(-)
9
2 files changed, 22 insertions(+), 129 deletions(-)
9
10
10
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
11
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
12
--- a/target/arm/tcg/translate-a64.c
13
--- a/target/arm/tcg/translate-a64.c
13
+++ b/target/arm/tcg/translate-a64.c
14
+++ b/target/arm/tcg/translate-a64.c
...
...
58
- case 0x8: /* FRINTN */
59
- case 0x8: /* FRINTN */
59
- case 0x9: /* FRINTP */
60
- case 0x9: /* FRINTP */
60
- case 0xa: /* FRINTM */
61
- case 0xa: /* FRINTM */
61
- case 0xb: /* FRINTZ */
62
- case 0xb: /* FRINTZ */
62
- case 0xc: /* FRINTA */
63
- case 0xc: /* FRINTA */
64
- case 0xe: /* FRINTX */
63
- case 0xf: /* FRINTI */
65
- case 0xf: /* FRINTI */
64
- case 0xe: /* FRINTX */
65
- g_assert_not_reached();
66
- g_assert_not_reached();
66
- }
67
- }
67
-
68
-
68
- fpst = fpstatus_ptr(FPST_FPCR);
69
- fpst = fpstatus_ptr(FPST_FPCR);
69
- if (rmode >= 0) {
70
- if (rmode >= 0) {
...
...
111
- case 0x8: /* FRINTN */
112
- case 0x8: /* FRINTN */
112
- case 0x9: /* FRINTP */
113
- case 0x9: /* FRINTP */
113
- case 0xa: /* FRINTM */
114
- case 0xa: /* FRINTM */
114
- case 0xb: /* FRINTZ */
115
- case 0xb: /* FRINTZ */
115
- case 0xc: /* FRINTA */
116
- case 0xc: /* FRINTA */
117
- case 0xe: /* FRINTX */
116
- case 0xf: /* FRINTI */
118
- case 0xf: /* FRINTI */
117
- case 0xe: /* FRINTX */
118
- g_assert_not_reached();
119
- g_assert_not_reached();
119
- }
120
- }
120
-
121
-
121
- fpst = fpstatus_ptr(FPST_FPCR);
122
- fpst = fpstatus_ptr(FPST_FPCR);
122
- if (rmode >= 0) {
123
- if (rmode >= 0) {
...
...
146
147
147
- case 0x10 ... 0x13: /* FRINT{32,64}{X,Z} */
148
- case 0x10 ... 0x13: /* FRINT{32,64}{X,Z} */
148
- if (type > 1 || !dc_isar_feature(aa64_frint, s)) {
149
- if (type > 1 || !dc_isar_feature(aa64_frint, s)) {
149
- goto do_unallocated;
150
- goto do_unallocated;
150
- }
151
- }
151
- /* fall through */
152
- case 0x0 ... 0x3:
153
- case 0x8 ... 0xc:
154
- case 0xe ... 0xf:
155
- /* 32-to-32 and 64-to-64 ops */
152
- /* 32-to-32 and 64-to-64 ops */
156
- switch (type) {
153
- switch (type) {
157
- case 0:
154
- case 0:
158
- if (!fp_access_check(s)) {
155
- if (!fp_access_check(s)) {
159
- return;
156
- return;
...
...
170
- default:
167
- default:
171
- goto do_unallocated;
168
- goto do_unallocated;
172
- }
169
- }
173
- break;
170
- break;
174
-
171
-
175
- case 0x6:
176
default:
172
default:
177
do_unallocated:
173
do_unallocated:
174
case 0x0: /* FMOV */
175
@@ -XXX,XX +XXX,XX @@ static void disas_fp_1src(DisasContext *s, uint32_t insn)
176
case 0xc: /* FRINTA */
177
case 0xe: /* FRINTX */
178
case 0xf: /* FRINTI */
179
+ case 0x10 ... 0x13: /* FRINT{32,64}{X,Z} */
178
unallocated_encoding(s);
180
unallocated_encoding(s);
181
break;
182
}
179
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
183
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
180
index XXXXXXX..XXXXXXX 100644
184
index XXXXXXX..XXXXXXX 100644
181
--- a/target/arm/tcg/a64.decode
185
--- a/target/arm/tcg/a64.decode
182
+++ b/target/arm/tcg/a64.decode
186
+++ b/target/arm/tcg/a64.decode
183
@@ -XXX,XX +XXX,XX @@ FRINTI_s 00011110 .. 1 001111 10000 ..... ..... @rr_hsd
187
@@ -XXX,XX +XXX,XX @@ FRINTI_s 00011110 .. 1 001111 10000 ..... ..... @rr_hsd
184
188
185
BFCVT_s 00011110 10 1 000110 10000 ..... ..... @rr_s
189
BFCVT_s 00011110 01 1 000110 10000 ..... ..... @rr_s
186
190
187
+FRINT32Z_s 00011110 0. 1 010000 10000 ..... ..... @rr_sd
191
+FRINT32Z_s 00011110 0. 1 010000 10000 ..... ..... @rr_sd
188
+FRINT32X_s 00011110 0. 1 010001 10000 ..... ..... @rr_sd
192
+FRINT32X_s 00011110 0. 1 010001 10000 ..... ..... @rr_sd
189
+FRINT64Z_s 00011110 0. 1 010010 10000 ..... ..... @rr_sd
193
+FRINT64Z_s 00011110 0. 1 010010 10000 ..... ..... @rr_sd
190
+FRINT64X_s 00011110 0. 1 010011 10000 ..... ..... @rr_sd
194
+FRINT64X_s 00011110 0. 1 010011 10000 ..... ..... @rr_sd
191
+
195
+
192
# Floating-point Immediate
196
# Floating-point Immediate
193
197
194
FMOVI_s 0001 1110 .. 1 imm:8 100 00000 rd:5 esz=%esz_hsd
198
FMOVI_s 0001 1110 .. 1 imm:8 100 00000 rd:5 esz=%esz_hsd
195
--
199
--
196
2.43.0
200
2.43.0
diff view generated by jsdifflib
1
Remove handle_fp_fcvt and disas_fp_1src as these were
1
Remove handle_fp_fcvt and disas_fp_1src as these were
2
the last insns decoded by those functions.
2
the last insns decoded by those functions.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 159 ++++++++++++++-------------------
7
target/arm/tcg/translate-a64.c | 172 +++++++++++++--------------------
7
target/arm/tcg/a64.decode | 7 ++
8
target/arm/tcg/a64.decode | 7 ++
8
2 files changed, 74 insertions(+), 92 deletions(-)
9
2 files changed, 74 insertions(+), 105 deletions(-)
9
10
10
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
11
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
12
--- a/target/arm/tcg/translate-a64.c
13
--- a/target/arm/tcg/translate-a64.c
13
+++ b/target/arm/tcg/translate-a64.c
14
+++ b/target/arm/tcg/translate-a64.c
...
...
140
+ return true;
141
+ return true;
141
+}
142
+}
142
143
143
- default:
144
- default:
144
- do_unallocated:
145
- do_unallocated:
146
- case 0x0: /* FMOV */
147
- case 0x1: /* FABS */
148
- case 0x2: /* FNEG */
149
- case 0x3: /* FSQRT */
150
- case 0x6: /* BFCVT */
151
- case 0x8: /* FRINTN */
152
- case 0x9: /* FRINTP */
153
- case 0xa: /* FRINTM */
154
- case 0xb: /* FRINTZ */
155
- case 0xc: /* FRINTA */
156
- case 0xe: /* FRINTX */
157
- case 0xf: /* FRINTI */
158
- case 0x10 ... 0x13: /* FRINT{32,64}{X,Z} */
145
- unallocated_encoding(s);
159
- unallocated_encoding(s);
146
- break;
160
- break;
147
+static bool trans_FCVT_s_hd(DisasContext *s, arg_rr *a)
161
+static bool trans_FCVT_s_hd(DisasContext *s, arg_rr *a)
148
+{
162
+{
149
+ if (fp_access_check(s)) {
163
+ if (fp_access_check(s)) {
...
...
diff view generated by jsdifflib
1
This includes SCVTF, UCVTF, FCVT{N,P,M,Z,A}{S,U}.
1
This includes SCVTF, UCVTF, FCVT{N,P,M,Z,A}{S,U}.
2
Remove disas_fp_fixed_conv as those were the last insns
2
Remove disas_fp_fixed_conv as those were the last insns
3
decoded by that function.
3
decoded by that function.
4
4
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
---
7
target/arm/tcg/translate-a64.c | 391 ++++++++++++++-------------------
8
target/arm/tcg/translate-a64.c | 391 ++++++++++++++-------------------
8
target/arm/tcg/a64.decode | 40 ++++
9
target/arm/tcg/a64.decode | 40 ++++
9
2 files changed, 209 insertions(+), 222 deletions(-)
10
2 files changed, 209 insertions(+), 222 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 41 +++++++++++++++++-----------------
4
target/arm/tcg/translate-a64.c | 41 +++++++++++++++++-----------------
4
target/arm/tcg/a64.decode | 2 ++
5
target/arm/tcg/a64.decode | 2 ++
5
2 files changed, 22 insertions(+), 21 deletions(-)
6
2 files changed, 22 insertions(+), 21 deletions(-)
...
...
diff view generated by jsdifflib
1
Remove disas_fp_int_conv and disas_data_proc_fp as these
1
Remove disas_fp_int_conv and disas_data_proc_fp as these
2
were the last insns decoded by those functions.
2
were the last insns decoded by those functions.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 232 ++++++++++-----------------------
7
target/arm/tcg/translate-a64.c | 232 ++++++++++-----------------------
7
target/arm/tcg/a64.decode | 14 ++
8
target/arm/tcg/a64.decode | 14 ++
8
2 files changed, 86 insertions(+), 160 deletions(-)
9
2 files changed, 86 insertions(+), 160 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 123 +++++++++++++++++++++------------
4
target/arm/tcg/translate-a64.c | 123 +++++++++++++++++++++------------
4
target/arm/tcg/a64.decode | 11 +++
5
target/arm/tcg/a64.decode | 11 +++
5
2 files changed, 89 insertions(+), 45 deletions(-)
6
2 files changed, 89 insertions(+), 45 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 46 +++++++++++++++++++++++-----------
4
target/arm/tcg/translate-a64.c | 46 +++++++++++++++++++++++-----------
4
target/arm/tcg/a64.decode | 4 +++
5
target/arm/tcg/a64.decode | 4 +++
5
2 files changed, 35 insertions(+), 15 deletions(-)
6
2 files changed, 35 insertions(+), 15 deletions(-)
...
...
diff view generated by jsdifflib
1
Add gvec interfaces for CLS and CLZ operations.
1
Add gvec interfaces for CLS and CLZ operations.
2
2
3
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate.h | 5 +++++
6
target/arm/tcg/translate.h | 5 +++++
6
target/arm/tcg/gengvec.c | 35 +++++++++++++++++++++++++++++++++
7
target/arm/tcg/gengvec.c | 35 +++++++++++++++++++++++++++++++++
7
target/arm/tcg/translate-a64.c | 29 +++++++--------------------
8
target/arm/tcg/translate-a64.c | 29 +++++++--------------------
...
...
168
static bool trans_VCNT(DisasContext *s, arg_2misc *a)
169
static bool trans_VCNT(DisasContext *s, arg_2misc *a)
169
{
170
{
170
if (a->size != 0) {
171
if (a->size != 0) {
171
--
172
--
172
2.43.0
173
2.43.0
174
175
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 37 ++++++++++++++++------------------
4
target/arm/tcg/translate-a64.c | 37 ++++++++++++++++------------------
4
target/arm/tcg/a64.decode | 2 ++
5
target/arm/tcg/a64.decode | 2 ++
5
2 files changed, 19 insertions(+), 20 deletions(-)
6
2 files changed, 19 insertions(+), 20 deletions(-)
...
...
diff view generated by jsdifflib
1
Add gvec interfaces for CNT and RBIT operations.
1
Add gvec interfaces for CNT and RBIT operations.
2
Use ctpop8 for CNT and revbit+bswap for RBIT.
2
Use ctpop8 for CNT and revbit+bswap for RBIT.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/helper.h | 4 ++--
7
target/arm/helper.h | 4 ++--
7
target/arm/tcg/translate.h | 4 ++++
8
target/arm/tcg/translate.h | 4 ++++
8
target/arm/tcg/gengvec.c | 16 ++++++++++++++++
9
target/arm/tcg/gengvec.c | 16 ++++++++++++++++
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 34 ++++++----------------------------
4
target/arm/tcg/translate-a64.c | 34 ++++++----------------------------
4
target/arm/tcg/a64.decode | 4 ++++
5
target/arm/tcg/a64.decode | 4 ++++
5
2 files changed, 10 insertions(+), 28 deletions(-)
6
2 files changed, 10 insertions(+), 28 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 94 +++++++++++-----------------------
4
target/arm/tcg/translate-a64.c | 94 +++++++++++-----------------------
4
target/arm/tcg/a64.decode | 10 ++++
5
target/arm/tcg/a64.decode | 10 ++++
5
2 files changed, 40 insertions(+), 64 deletions(-)
6
2 files changed, 40 insertions(+), 64 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate.h | 6 +++
4
target/arm/tcg/translate.h | 6 +++
4
target/arm/tcg/gengvec.c | 58 ++++++++++++++++++++++
5
target/arm/tcg/gengvec.c | 58 ++++++++++++++++++++++
5
target/arm/tcg/translate-neon.c | 88 +++++++--------------------------
6
target/arm/tcg/translate-neon.c | 88 +++++++--------------------------
...
...
diff view generated by jsdifflib
1
This includes REV16, REV32, REV64.
1
This includes REV16, REV32, REV64.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/translate-a64.c | 79 +++-------------------------------
6
target/arm/tcg/translate-a64.c | 79 +++-------------------------------
6
target/arm/tcg/a64.decode | 5 +++
7
target/arm/tcg/a64.decode | 5 +++
7
2 files changed, 10 insertions(+), 74 deletions(-)
8
2 files changed, 10 insertions(+), 74 deletions(-)
...
...
117
if (size == 3) {
118
if (size == 3) {
118
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
119
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
119
break;
120
break;
120
}
121
}
121
default:
122
default:
122
+ case 0x0: /* REV64 */
123
+ case 0x0: /* REV64, REV32 */
123
+ case 0x1: /* REV16, REV32 */
124
+ case 0x1: /* REV16 */
124
case 0x3: /* SUQADD, USQADD */
125
case 0x3: /* SUQADD, USQADD */
125
case 0x4: /* CLS, CLZ */
126
case 0x4: /* CLS, CLZ */
126
case 0x5: /* CNT, NOT, RBIT */
127
case 0x5: /* CNT, NOT, RBIT */
127
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
128
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
128
index XXXXXXX..XXXXXXX 100644
129
index XXXXXXX..XXXXXXX 100644
...
...
140
CMEQ0_v 0.00 1110 ..1 00000 10011 0 ..... ..... @qrr_e
141
CMEQ0_v 0.00 1110 ..1 00000 10011 0 ..... ..... @qrr_e
141
CMLE0_v 0.10 1110 ..1 00000 10011 0 ..... ..... @qrr_e
142
CMLE0_v 0.10 1110 ..1 00000 10011 0 ..... ..... @qrr_e
142
CMLT0_v 0.00 1110 ..1 00000 10101 0 ..... ..... @qrr_e
143
CMLT0_v 0.00 1110 ..1 00000 10101 0 ..... ..... @qrr_e
143
+
144
+
144
+REV16_v 0.00 1110 001 00000 00011 0 ..... ..... @qrr_b
145
+REV16_v 0.00 1110 001 00000 00011 0 ..... ..... @qrr_b
145
+REV32_v 0.10 1110 0.1 00000 00011 0 ..... ..... @qrr_bh
146
+REV32_v 0.10 1110 0.1 00000 00001 0 ..... ..... @qrr_bh
146
+REV64_v 0.00 1110 ..1 00000 00001 0 ..... ..... @qrr_e
147
+REV64_v 0.00 1110 ..1 00000 00001 0 ..... ..... @qrr_e
147
--
148
--
148
2.43.0
149
2.43.0
diff view generated by jsdifflib
1
Move from helper-a64.c to neon_helper.c so that these
1
Move from helper-a64.c to neon_helper.c so that these
2
functions are available for arm32 code as well.
2
functions are available for arm32 code as well.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/helper.h | 2 ++
7
target/arm/helper.h | 2 ++
7
target/arm/tcg/helper-a64.h | 2 --
8
target/arm/tcg/helper-a64.h | 2 --
8
target/arm/tcg/helper-a64.c | 43 ------------------------------------
9
target/arm/tcg/helper-a64.c | 43 ------------------------------------
...
...
diff view generated by jsdifflib
1
Pairwise addition with and without accumulation.
1
Pairwise addition with and without accumulation.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/helper.h | 2 -
6
target/arm/helper.h | 2 -
6
target/arm/tcg/translate.h | 9 ++
7
target/arm/tcg/translate.h | 9 ++
7
target/arm/tcg/gengvec.c | 230 ++++++++++++++++++++++++++++++++
8
target/arm/tcg/gengvec.c | 230 ++++++++++++++++++++++++++++++++
...
...
diff view generated by jsdifflib
1
This includes SADDLP, UADDLP, SADALP, UADALP.
1
This includes SADDLP, UADDLP, SADALP, UADALP.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/tcg/helper-a64.h | 2 -
6
target/arm/tcg/helper-a64.h | 2 -
6
target/arm/tcg/helper-a64.c | 18 --------
7
target/arm/tcg/helper-a64.c | 18 --------
7
target/arm/tcg/translate-a64.c | 84 +++-------------------------------
8
target/arm/tcg/translate-a64.c | 84 +++-------------------------------
...
...
157
case 0x13: /* SHLL, SHLL2 */
158
case 0x13: /* SHLL, SHLL2 */
158
if (u == 0 || size == 3) {
159
if (u == 0 || size == 3) {
159
unallocated_encoding(s);
160
unallocated_encoding(s);
160
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
161
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc(DisasContext *s, uint32_t insn)
161
default:
162
default:
162
case 0x0: /* REV64 */
163
case 0x0: /* REV64, REV32 */
163
case 0x1: /* REV16, REV32 */
164
case 0x1: /* REV16 */
164
+ case 0x2: /* SADDLP, UADDLP */
165
+ case 0x2: /* SADDLP, UADDLP */
165
case 0x3: /* SUQADD, USQADD */
166
case 0x3: /* SUQADD, USQADD */
166
case 0x4: /* CLS, CLZ */
167
case 0x4: /* CLS, CLZ */
167
case 0x5: /* CNT, NOT, RBIT */
168
case 0x5: /* CNT, NOT, RBIT */
168
+ case 0x6: /* SADALP, UADALP */
169
+ case 0x6: /* SADALP, UADALP */
...
...
173
index XXXXXXX..XXXXXXX 100644
174
index XXXXXXX..XXXXXXX 100644
174
--- a/target/arm/tcg/a64.decode
175
--- a/target/arm/tcg/a64.decode
175
+++ b/target/arm/tcg/a64.decode
176
+++ b/target/arm/tcg/a64.decode
176
@@ -XXX,XX +XXX,XX @@ CMLT0_v 0.00 1110 ..1 00000 10101 0 ..... ..... @qrr_e
177
@@ -XXX,XX +XXX,XX @@ CMLT0_v 0.00 1110 ..1 00000 10101 0 ..... ..... @qrr_e
177
REV16_v 0.00 1110 001 00000 00011 0 ..... ..... @qrr_b
178
REV16_v 0.00 1110 001 00000 00011 0 ..... ..... @qrr_b
178
REV32_v 0.10 1110 0.1 00000 00011 0 ..... ..... @qrr_bh
179
REV32_v 0.10 1110 0.1 00000 00001 0 ..... ..... @qrr_bh
179
REV64_v 0.00 1110 ..1 00000 00001 0 ..... ..... @qrr_e
180
REV64_v 0.00 1110 ..1 00000 00001 0 ..... ..... @qrr_e
180
+
181
+
181
+SADDLP_v 0.00 1110 ..1 00000 00101 0 ..... ..... @qrr_e
182
+SADDLP_v 0.00 1110 ..1 00000 00101 0 ..... ..... @qrr_e
182
+UADDLP_v 0.10 1110 ..1 00000 00101 0 ..... ..... @qrr_e
183
+UADDLP_v 0.10 1110 ..1 00000 00101 0 ..... ..... @qrr_e
183
+SADALP_v 0.00 1110 ..1 00000 01101 0 ..... ..... @qrr_e
184
+SADALP_v 0.00 1110 ..1 00000 01101 0 ..... ..... @qrr_e
184
+UADALP_v 0.10 1110 ..1 00000 01101 0 ..... ..... @qrr_e
185
+UADALP_v 0.10 1110 ..1 00000 01101 0 ..... ..... @qrr_e
185
--
186
--
186
2.43.0
187
2.43.0
diff view generated by jsdifflib
1
These have generic equivalents: tcg_gen_vec_{add,sub}{16,32}_i64.
1
These have generic equivalents: tcg_gen_vec_{add,sub}{16,32}_i64.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/helper.h | 4 ----
6
target/arm/helper.h | 4 ----
6
target/arm/tcg/neon_helper.c | 36 ---------------------------------
7
target/arm/tcg/neon_helper.c | 36 ---------------------------------
7
target/arm/tcg/translate-neon.c | 22 ++++++++++----------
8
target/arm/tcg/translate-neon.c | 22 ++++++++++----------
...
...
diff view generated by jsdifflib
1
In a couple of places, clearing the entire vector before storing one
1
In a couple of places, clearing the entire vector before storing one
2
element is the easiest solution. Wrap that into a helper function.
2
element is the easiest solution. Wrap that into a helper function.
3
3
4
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 21 ++++++++++++---------
7
target/arm/tcg/translate-a64.c | 21 ++++++++++++---------
7
1 file changed, 12 insertions(+), 9 deletions(-)
8
1 file changed, 12 insertions(+), 9 deletions(-)
8
9
...
...
66
write_vec_element(s, t0, a->rd, 0, a->esz + 1);
67
write_vec_element(s, t0, a->rd, 0, a->esz + 1);
67
}
68
}
68
return true;
69
return true;
69
--
70
--
70
2.43.0
71
2.43.0
72
73
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 153 ++++++++++++++++++++-------------
4
target/arm/tcg/translate-a64.c | 153 ++++++++++++++++++++-------------
4
target/arm/tcg/a64.decode | 9 ++
5
target/arm/tcg/a64.decode | 9 ++
5
2 files changed, 102 insertions(+), 60 deletions(-)
6
2 files changed, 102 insertions(+), 60 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 89 ++++++++++++++++++----------------
4
target/arm/tcg/translate-a64.c | 89 ++++++++++++++++++----------------
4
target/arm/tcg/a64.decode | 5 ++
5
target/arm/tcg/a64.decode | 5 ++
5
2 files changed, 52 insertions(+), 42 deletions(-)
6
2 files changed, 52 insertions(+), 42 deletions(-)
...
...
diff view generated by jsdifflib
1
Remove handle_2misc_narrow as this was the last insn decoded
1
Remove handle_2misc_narrow as this was the last insn decoded
2
by that function.
2
by that function.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 101 +++++++--------------------------
7
target/arm/tcg/translate-a64.c | 101 +++++++--------------------------
7
target/arm/tcg/a64.decode | 4 ++
8
target/arm/tcg/a64.decode | 4 ++
8
2 files changed, 24 insertions(+), 81 deletions(-)
9
2 files changed, 24 insertions(+), 81 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 75 +++++++++++++++++-----------------
4
target/arm/tcg/translate-a64.c | 75 +++++++++++++++++-----------------
4
target/arm/tcg/a64.decode | 2 +
5
target/arm/tcg/a64.decode | 2 +
5
2 files changed, 40 insertions(+), 37 deletions(-)
6
2 files changed, 40 insertions(+), 37 deletions(-)
...
...
diff view generated by jsdifflib
New patch
1
Move the current implementation out of translate-neon.c,
2
and extend to handle all element sizes.
1
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
target/arm/tcg/translate.h | 6 ++++++
8
target/arm/tcg/gengvec.c | 14 ++++++++++++++
9
target/arm/tcg/translate-neon.c | 20 ++------------------
10
3 files changed, 22 insertions(+), 18 deletions(-)
11
12
diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h
13
index XXXXXXX..XXXXXXX 100644
14
--- a/target/arm/tcg/translate.h
15
+++ b/target/arm/tcg/translate.h
16
@@ -XXX,XX +XXX,XX @@ void gen_gvec_uaddlp(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
17
void gen_gvec_uadalp(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
18
uint32_t opr_sz, uint32_t max_sz);
19
20
+/* These exclusively manipulate the sign bit. */
21
+void gen_gvec_fabs(unsigned vece, uint32_t dofs, uint32_t aofs,
22
+ uint32_t oprsz, uint32_t maxsz);
23
+void gen_gvec_fneg(unsigned vece, uint32_t dofs, uint32_t aofs,
24
+ uint32_t oprsz, uint32_t maxsz);
25
+
26
/*
27
* Forward to the isar_feature_* tests given a DisasContext pointer.
28
*/
29
diff --git a/target/arm/tcg/gengvec.c b/target/arm/tcg/gengvec.c
30
index XXXXXXX..XXXXXXX 100644
31
--- a/target/arm/tcg/gengvec.c
32
+++ b/target/arm/tcg/gengvec.c
33
@@ -XXX,XX +XXX,XX @@ void gen_gvec_uadalp(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
34
assert(vece <= MO_32);
35
tcg_gen_gvec_2(rd_ofs, rn_ofs, opr_sz, max_sz, &g[vece]);
36
}
37
+
38
+void gen_gvec_fabs(unsigned vece, uint32_t dofs, uint32_t aofs,
39
+ uint32_t oprsz, uint32_t maxsz)
40
+{
41
+ uint64_t s_bit = 1ull << ((8 << vece) - 1);
42
+ tcg_gen_gvec_andi(vece, dofs, aofs, s_bit - 1, oprsz, maxsz);
43
+}
44
+
45
+void gen_gvec_fneg(unsigned vece, uint32_t dofs, uint32_t aofs,
46
+ uint32_t oprsz, uint32_t maxsz)
47
+{
48
+ uint64_t s_bit = 1ull << ((8 << vece) - 1);
49
+ tcg_gen_gvec_xori(vece, dofs, aofs, s_bit, oprsz, maxsz);
50
+}
51
diff --git a/target/arm/tcg/translate-neon.c b/target/arm/tcg/translate-neon.c
52
index XXXXXXX..XXXXXXX 100644
53
--- a/target/arm/tcg/translate-neon.c
54
+++ b/target/arm/tcg/translate-neon.c
55
@@ -XXX,XX +XXX,XX @@ static bool do_2misc(DisasContext *s, arg_2misc *a, NeonGenOneOpFn *fn)
56
return true;
57
}
58
59
-static void gen_VABS_F(unsigned vece, uint32_t rd_ofs, uint32_t rm_ofs,
60
- uint32_t oprsz, uint32_t maxsz)
61
-{
62
- tcg_gen_gvec_andi(vece, rd_ofs, rm_ofs,
63
- vece == MO_16 ? 0x7fff : 0x7fffffff,
64
- oprsz, maxsz);
65
-}
66
-
67
static bool trans_VABS_F(DisasContext *s, arg_2misc *a)
68
{
69
if (a->size == MO_16) {
70
@@ -XXX,XX +XXX,XX @@ static bool trans_VABS_F(DisasContext *s, arg_2misc *a)
71
} else if (a->size != MO_32) {
72
return false;
73
}
74
- return do_2misc_vec(s, a, gen_VABS_F);
75
-}
76
-
77
-static void gen_VNEG_F(unsigned vece, uint32_t rd_ofs, uint32_t rm_ofs,
78
- uint32_t oprsz, uint32_t maxsz)
79
-{
80
- tcg_gen_gvec_xori(vece, rd_ofs, rm_ofs,
81
- vece == MO_16 ? 0x8000 : 0x80000000,
82
- oprsz, maxsz);
83
+ return do_2misc_vec(s, a, gen_gvec_fabs);
84
}
85
86
static bool trans_VNEG_F(DisasContext *s, arg_2misc *a)
87
@@ -XXX,XX +XXX,XX @@ static bool trans_VNEG_F(DisasContext *s, arg_2misc *a)
88
} else if (a->size != MO_32) {
89
return false;
90
}
91
- return do_2misc_vec(s, a, gen_VNEG_F);
92
+ return do_2misc_vec(s, a, gen_gvec_fneg);
93
}
94
95
static bool trans_VRECPE(DisasContext *s, arg_2misc *a)
96
--
97
2.43.0
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 61 ++++++++++++++++++----------------
4
target/arm/tcg/translate-a64.c | 54 +++++++++++++++-------------------
4
target/arm/tcg/a64.decode | 7 ++++
5
target/arm/tcg/a64.decode | 7 +++++
5
2 files changed, 39 insertions(+), 29 deletions(-)
6
2 files changed, 31 insertions(+), 30 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
11
@@ -XXX,XX +XXX,XX @@ static bool trans_SHLL_v(DisasContext *s, arg_qrr_e *a)
12
@@ -XXX,XX +XXX,XX @@ static bool trans_SHLL_v(DisasContext *s, arg_qrr_e *a)
12
return true;
13
return true;
13
}
14
}
14
15
15
+static bool do_fabs_fneg_v(DisasContext *s, arg_qrr_e *a, bool neg)
16
+static bool do_fabs_fneg_v(DisasContext *s, arg_qrr_e *a, GVecGen2Fn *fn)
16
+{
17
+{
17
+ int check = fp_access_check_vector_hsd(s, a->q, a->esz);
18
+ int check = fp_access_check_vector_hsd(s, a->q, a->esz);
18
+ uint64_t sign;
19
+
19
+
20
+ if (check <= 0) {
20
+ if (check <= 0) {
21
+ return check == 0;
21
+ return check == 0;
22
+ }
22
+ }
23
+
23
+
24
+ sign = 1ull << ((8 << a->esz) - 1);
24
+ gen_gvec_fn2(s, a->q, a->rd, a->rn, fn, a->esz);
25
+ if (neg) {
26
+ gen_gvec_fn2i(s, a->q, a->rd, a->rn, sign,
27
+ tcg_gen_gvec_xori, a->esz);
28
+ } else {
29
+ gen_gvec_fn2i(s, a->q, a->rd, a->rn, sign - 1,
30
+ tcg_gen_gvec_andi, a->esz);
31
+ }
32
+ return true;
25
+ return true;
33
+}
26
+}
34
+
27
+
35
+TRANS(FABS_v, do_fabs_fneg_v, a, false)
28
+TRANS(FABS_v, do_fabs_fneg_v, a, gen_gvec_fabs)
36
+TRANS(FNEG_v, do_fabs_fneg_v, a, true)
29
+TRANS(FNEG_v, do_fabs_fneg_v, a, gen_gvec_fneg)
37
30
38
/* Common vector code for handling integer to FP conversion */
31
/* Common vector code for handling integer to FP conversion */
39
static void handle_simd_intfp_conv(DisasContext *s, int rd, int rn,
32
static void handle_simd_intfp_conv(DisasContext *s, int rd, int rn,
40
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_64(DisasContext *s, int opcode, bool u,
33
@@ -XXX,XX +XXX,XX @@ static void handle_2misc_64(DisasContext *s, int opcode, bool u,
41
* requires them.
34
* requires them.
...
...
108
case 0x7b: /* FCVTZU */
101
case 0x7b: /* FCVTZU */
109
rmode = FPROUNDING_ZERO;
102
rmode = FPROUNDING_ZERO;
110
break;
103
break;
111
- case 0x2f: /* FABS */
104
- case 0x2f: /* FABS */
112
- case 0x6f: /* FNEG */
105
- case 0x6f: /* FNEG */
106
- only_in_vector = true;
113
- need_fpst = false;
107
- need_fpst = false;
114
- break;
108
- break;
115
case 0x7d: /* FRSQRTE */
109
case 0x7d: /* FRSQRTE */
110
break;
116
case 0x7f: /* FSQRT (vector) */
111
case 0x7f: /* FSQRT (vector) */
112
only_in_vector = true;
117
break;
113
break;
118
default:
114
default:
119
+ case 0x2f: /* FABS */
115
+ case 0x2f: /* FABS */
120
+ case 0x6f: /* FNEG */
116
+ case 0x6f: /* FNEG */
121
unallocated_encoding(s);
117
unallocated_encoding(s);
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 67 +++++++++++++++++++++++++---------
4
target/arm/tcg/translate-a64.c | 69 ++++++++++++++++++++++++----------
4
target/arm/tcg/a64.decode | 3 ++
5
target/arm/tcg/a64.decode | 3 ++
5
2 files changed, 53 insertions(+), 17 deletions(-)
6
2 files changed, 53 insertions(+), 19 deletions(-)
6
7
7
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
8
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
9
--- a/target/arm/tcg/translate-a64.c
10
--- a/target/arm/tcg/translate-a64.c
10
+++ b/target/arm/tcg/translate-a64.c
11
+++ b/target/arm/tcg/translate-a64.c
11
@@ -XXX,XX +XXX,XX @@ static bool do_fabs_fneg_v(DisasContext *s, arg_qrr_e *a, bool neg)
12
@@ -XXX,XX +XXX,XX @@ static bool do_fabs_fneg_v(DisasContext *s, arg_qrr_e *a, GVecGen2Fn *fn)
12
TRANS(FABS_v, do_fabs_fneg_v, a, false)
13
TRANS(FABS_v, do_fabs_fneg_v, a, gen_gvec_fabs)
13
TRANS(FNEG_v, do_fabs_fneg_v, a, true)
14
TRANS(FNEG_v, do_fabs_fneg_v, a, gen_gvec_fneg)
14
15
15
+static bool do_fp1_vector(DisasContext *s, arg_qrr_e *a,
16
+static bool do_fp1_vector(DisasContext *s, arg_qrr_e *a,
16
+ const FPScalar1 *f, int rmode)
17
+ const FPScalar1 *f, int rmode)
17
+{
18
+{
18
+ TCGv_i32 tcg_rmode = NULL;
19
+ TCGv_i32 tcg_rmode = NULL;
...
...
117
+ case 0x7f: /* FSQRT */
118
+ case 0x7f: /* FSQRT */
118
g_assert_not_reached();
119
g_assert_not_reached();
119
}
120
}
120
}
121
}
121
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
122
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
122
rmode = FPROUNDING_ZERO;
123
break;
123
break;
124
case 0x7d: /* FRSQRTE */
124
case 0x7d: /* FRSQRTE */
125
break;
125
- case 0x7f: /* FSQRT (vector) */
126
- case 0x7f: /* FSQRT (vector) */
126
break;
127
- only_in_vector = true;
128
- break;
127
default:
129
default:
128
case 0x2f: /* FABS */
130
case 0x2f: /* FABS */
129
case 0x6f: /* FNEG */
131
case 0x6f: /* FNEG */
130
+ case 0x7f: /* FSQRT (vector) */
132
+ case 0x7f: /* FSQRT (vector) */
131
unallocated_encoding(s);
133
unallocated_encoding(s);
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 176 ++++++++++++---------------------
4
target/arm/tcg/translate-a64.c | 176 ++++++++++++---------------------
4
target/arm/tcg/a64.decode | 26 +++++
5
target/arm/tcg/a64.decode | 26 +++++
5
2 files changed, 88 insertions(+), 114 deletions(-)
6
2 files changed, 88 insertions(+), 114 deletions(-)
...
...
diff view generated by jsdifflib
1
Arm silliness with naming, the scalar insns described
1
Arm silliness with naming, the scalar insns described
2
as part of the vector instructions, as separate from
2
as part of the vector instructions, as separate from
3
the "regular" scalar insns which output to general registers.
3
the "regular" scalar insns which output to general registers.
4
4
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
---
7
target/arm/tcg/translate-a64.c | 135 ++++++++++++++-------------------
8
target/arm/tcg/translate-a64.c | 133 ++++++++++++++-------------------
8
target/arm/tcg/a64.decode | 30 ++++++++
9
target/arm/tcg/a64.decode | 30 ++++++++
9
2 files changed, 87 insertions(+), 78 deletions(-)
10
2 files changed, 86 insertions(+), 77 deletions(-)
10
11
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
12
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
12
index XXXXXXX..XXXXXXX 100644
13
index XXXXXXX..XXXXXXX 100644
13
--- a/target/arm/tcg/translate-a64.c
14
--- a/target/arm/tcg/translate-a64.c
14
+++ b/target/arm/tcg/translate-a64.c
15
+++ b/target/arm/tcg/translate-a64.c
...
...
175
gen_helper_recpe_f16(tcg_res, tcg_op, tcg_fpstatus);
176
gen_helper_recpe_f16(tcg_res, tcg_op, tcg_fpstatus);
176
break;
177
break;
177
case 0x3f: /* FRECPX */
178
case 0x3f: /* FRECPX */
178
gen_helper_frecpx_f16(tcg_res, tcg_op, tcg_fpstatus);
179
gen_helper_frecpx_f16(tcg_res, tcg_op, tcg_fpstatus);
179
break;
180
break;
180
- case 0x5a: /* FCVTNU */
181
+ case 0x7d: /* FRSQRTE */
181
- case 0x5b: /* FCVTMU */
182
+ gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
182
- case 0x5c: /* FCVTAU */
183
+ break;
183
- case 0x7a: /* FCVTPU */
184
+ default:
184
- case 0x7b: /* FCVTZU */
185
- gen_helper_advsimd_f16touinth(tcg_res, tcg_op, tcg_fpstatus);
186
- break;
187
case 0x7d: /* FRSQRTE */
188
gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
189
break;
190
default:
191
case 0x6f: /* FNEG */
192
+ case 0x1a: /* FCVTNS */
185
+ case 0x1a: /* FCVTNS */
193
+ case 0x1b: /* FCVTMS */
186
+ case 0x1b: /* FCVTMS */
194
+ case 0x1c: /* FCVTAS */
187
+ case 0x1c: /* FCVTAS */
195
+ case 0x3a: /* FCVTPS */
188
+ case 0x3a: /* FCVTPS */
196
+ case 0x3b: /* FCVTZS */
189
+ case 0x3b: /* FCVTZS */
197
+ case 0x5a: /* FCVTNU */
190
case 0x5a: /* FCVTNU */
198
+ case 0x5b: /* FCVTMU */
191
case 0x5b: /* FCVTMU */
199
+ case 0x5c: /* FCVTAU */
192
case 0x5c: /* FCVTAU */
200
+ case 0x7a: /* FCVTPU */
193
case 0x7a: /* FCVTPU */
201
+ case 0x7b: /* FCVTZU */
194
case 0x7b: /* FCVTZU */
195
- gen_helper_advsimd_f16touinth(tcg_res, tcg_op, tcg_fpstatus);
196
- break;
197
- case 0x7d: /* FRSQRTE */
198
- gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
199
- break;
200
- default:
202
g_assert_not_reached();
201
g_assert_not_reached();
203
}
202
}
204
203
205
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
204
diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode
206
index XXXXXXX..XXXXXXX 100644
205
index XXXXXXX..XXXXXXX 100644
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 4 +---
4
target/arm/tcg/translate-a64.c | 4 +---
4
target/arm/tcg/a64.decode | 19 +++++++++++++++++++
5
target/arm/tcg/a64.decode | 19 +++++++++++++++++++
5
2 files changed, 20 insertions(+), 3 deletions(-)
6
2 files changed, 20 insertions(+), 3 deletions(-)
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/tcg/translate-a64.c | 35 ++++++++++++++++++++++++----------
4
target/arm/tcg/translate-a64.c | 35 ++++++++++++++++++++++++----------
4
target/arm/tcg/a64.decode | 6 ++++++
5
target/arm/tcg/a64.decode | 6 ++++++
5
2 files changed, 31 insertions(+), 10 deletions(-)
6
2 files changed, 31 insertions(+), 10 deletions(-)
...
...
diff view generated by jsdifflib
1
Remove disas_simd_scalar_shift_imm as these were the
1
Remove disas_simd_scalar_shift_imm as these were the
2
last insns decoded by that function.
2
last insns decoded by that function.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 47 ----------------------------------
7
target/arm/tcg/translate-a64.c | 47 ----------------------------------
7
target/arm/tcg/a64.decode | 8 ++++++
8
target/arm/tcg/a64.decode | 8 ++++++
8
2 files changed, 8 insertions(+), 47 deletions(-)
9
2 files changed, 8 insertions(+), 47 deletions(-)
...
...
diff view generated by jsdifflib
1
Emphasize that these functions use round-to-zero mode.
1
Emphasize that these functions use round-to-zero mode.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/helper.h | 8 ++++----
6
target/arm/helper.h | 8 ++++----
6
target/arm/tcg/translate-neon.c | 8 ++++----
7
target/arm/tcg/translate-neon.c | 8 ++++----
7
target/arm/tcg/vec_helper.c | 8 ++++----
8
target/arm/tcg/vec_helper.c | 8 ++++----
...
...
diff view generated by jsdifflib
1
Remove handle_simd_intfp_conv and handle_simd_shift_intfp_conv
1
Remove handle_simd_intfp_conv and handle_simd_shift_intfp_conv
2
as these were the last insns decoded by those functions.
2
as these were the last insns decoded by those functions.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/helper.h | 3 +
7
target/arm/helper.h | 3 +
7
target/arm/tcg/translate-a64.c | 201 ++++++---------------------------
8
target/arm/tcg/translate-a64.c | 201 ++++++---------------------------
8
target/arm/tcg/vec_helper.c | 7 +-
9
target/arm/tcg/vec_helper.c | 7 +-
...
...
diff view generated by jsdifflib
1
Remove handle_simd_shift_fpint_conv and disas_simd_shift_imm
1
Remove handle_simd_shift_fpint_conv and disas_simd_shift_imm
2
as these were the last insns decoded by those functions.
2
as these were the last insns decoded by those functions.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/helper.h | 4 +
7
target/arm/helper.h | 4 +
7
target/arm/tcg/translate-a64.c | 160 +++------------------------------
8
target/arm/tcg/translate-a64.c | 160 +++------------------------------
8
target/arm/tcg/vec_helper.c | 2 +
9
target/arm/tcg/vec_helper.c | 2 +
...
...
diff view generated by jsdifflib
1
Remove handle_2misc_64 as these were the last insns decoded
1
Remove handle_2misc_64 as these were the last insns decoded
2
by that function. Remove helper_advsimd_f16to[su]inth as unused;
2
by that function. Remove helper_advsimd_f16to[su]inth as unused;
3
we now always go through helper_vfp_to[su]hh or a specialized
3
we now always go through helper_vfp_to[su]hh or a specialized
4
vector function instead.
4
vector function instead.
5
5
6
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
---
8
target/arm/helper.h | 2 +
9
target/arm/helper.h | 2 +
9
target/arm/tcg/helper-a64.h | 2 -
10
target/arm/tcg/helper-a64.h | 2 -
10
target/arm/tcg/helper-a64.c | 32 -----
11
target/arm/tcg/helper-a64.c | 32 -----
...
...
diff view generated by jsdifflib
1
This includes FCMEQ, FCMGT, FCMGE, FCMLT, FCMLE.
1
This includes FCMEQ, FCMGT, FCMGE, FCMLT, FCMLE.
2
2
3
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
3
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
4
---
5
---
5
target/arm/helper.h | 5 +
6
target/arm/helper.h | 5 +
6
target/arm/tcg/translate-a64.c | 249 +++++++++++++--------------------
7
target/arm/tcg/translate-a64.c | 249 +++++++++++++--------------------
7
target/arm/tcg/vec_helper.c | 4 +-
8
target/arm/tcg/vec_helper.c | 4 +-
...
...
diff view generated by jsdifflib
1
Remove disas_simd_scalar_two_reg_misc and
1
Remove disas_simd_scalar_two_reg_misc and
2
disas_simd_two_reg_misc_fp16 as these were the
2
disas_simd_two_reg_misc_fp16 as these were the
3
last insns decoded by those functions.
3
last insns decoded by those functions.
4
4
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
---
7
---
7
target/arm/tcg/translate-a64.c | 330 ++++-----------------------------
8
target/arm/tcg/translate-a64.c | 329 ++++-----------------------------
8
target/arm/tcg/a64.decode | 15 ++
9
target/arm/tcg/a64.decode | 15 ++
9
2 files changed, 53 insertions(+), 292 deletions(-)
10
2 files changed, 53 insertions(+), 291 deletions(-)
10
11
11
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
12
diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c
12
index XXXXXXX..XXXXXXX 100644
13
index XXXXXXX..XXXXXXX 100644
13
--- a/target/arm/tcg/translate-a64.c
14
--- a/target/arm/tcg/translate-a64.c
14
+++ b/target/arm/tcg/translate-a64.c
15
+++ b/target/arm/tcg/translate-a64.c
...
...
327
- break;
328
- break;
328
- case 0x7d: /* FRSQRTE */
329
- case 0x7d: /* FRSQRTE */
329
- gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
330
- gen_helper_rsqrte_f16(tcg_res, tcg_op, tcg_fpstatus);
330
- break;
331
- break;
331
- default:
332
- default:
332
- case 0x6f: /* FNEG */
333
- case 0x1a: /* FCVTNS */
333
- case 0x1a: /* FCVTNS */
334
- case 0x1b: /* FCVTMS */
334
- case 0x1b: /* FCVTMS */
335
- case 0x1c: /* FCVTAS */
335
- case 0x1c: /* FCVTAS */
336
- case 0x3a: /* FCVTPS */
336
- case 0x3a: /* FCVTPS */
337
- case 0x3b: /* FCVTZS */
337
- case 0x3b: /* FCVTZS */
...
...
diff view generated by jsdifflib
1
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
1
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2
---
3
---
3
target/arm/helper.h | 3 +++
4
target/arm/helper.h | 3 +++
4
target/arm/tcg/translate.h | 5 +++++
5
target/arm/tcg/translate.h | 5 +++++
5
target/arm/tcg/gengvec.c | 16 ++++++++++++++++
6
target/arm/tcg/gengvec.c | 16 ++++++++++++++++
...
...
23
#include "tcg/helper-sve.h"
24
#include "tcg/helper-sve.h"
24
diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h
25
diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h
25
index XXXXXXX..XXXXXXX 100644
26
index XXXXXXX..XXXXXXX 100644
26
--- a/target/arm/tcg/translate.h
27
--- a/target/arm/tcg/translate.h
27
+++ b/target/arm/tcg/translate.h
28
+++ b/target/arm/tcg/translate.h
28
@@ -XXX,XX +XXX,XX @@ void gen_gvec_uaddlp(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
29
@@ -XXX,XX +XXX,XX @@ void gen_gvec_fabs(unsigned vece, uint32_t dofs, uint32_t aofs,
29
void gen_gvec_uadalp(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
30
void gen_gvec_fneg(unsigned vece, uint32_t dofs, uint32_t aofs,
30
uint32_t opr_sz, uint32_t max_sz);
31
uint32_t oprsz, uint32_t maxsz);
31
32
32
+void gen_gvec_urecpe(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
33
+void gen_gvec_urecpe(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
33
+ uint32_t opr_sz, uint32_t max_sz);
34
+ uint32_t opr_sz, uint32_t max_sz);
34
+void gen_gvec_ursqrte(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
35
+void gen_gvec_ursqrte(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
35
+ uint32_t opr_sz, uint32_t max_sz);
36
+ uint32_t opr_sz, uint32_t max_sz);
...
...
39
*/
40
*/
40
diff --git a/target/arm/tcg/gengvec.c b/target/arm/tcg/gengvec.c
41
diff --git a/target/arm/tcg/gengvec.c b/target/arm/tcg/gengvec.c
41
index XXXXXXX..XXXXXXX 100644
42
index XXXXXXX..XXXXXXX 100644
42
--- a/target/arm/tcg/gengvec.c
43
--- a/target/arm/tcg/gengvec.c
43
+++ b/target/arm/tcg/gengvec.c
44
+++ b/target/arm/tcg/gengvec.c
44
@@ -XXX,XX +XXX,XX @@ void gen_gvec_uadalp(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
45
@@ -XXX,XX +XXX,XX @@ void gen_gvec_fneg(unsigned vece, uint32_t dofs, uint32_t aofs,
45
assert(vece <= MO_32);
46
uint64_t s_bit = 1ull << ((8 << vece) - 1);
46
tcg_gen_gvec_2(rd_ofs, rn_ofs, opr_sz, max_sz, &g[vece]);
47
tcg_gen_gvec_xori(vece, dofs, aofs, s_bit, oprsz, maxsz);
47
}
48
}
48
+
49
+
49
+void gen_gvec_urecpe(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
50
+void gen_gvec_urecpe(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
50
+ uint32_t opr_sz, uint32_t max_sz)
51
+ uint32_t opr_sz, uint32_t max_sz)
51
+{
52
+{
...
...
diff view generated by jsdifflib
1
Remove handle_2misc_reciprocal as these were the last
1
Remove handle_2misc_reciprocal as these were the last
2
insns decoded by that function.
2
insns decoded by that function.
3
3
4
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
4
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
5
---
6
---
6
target/arm/tcg/translate-a64.c | 139 ++-------------------------------
7
target/arm/tcg/translate-a64.c | 139 ++-------------------------------
7
target/arm/tcg/a64.decode | 3 +
8
target/arm/tcg/a64.decode | 3 +
8
2 files changed, 8 insertions(+), 134 deletions(-)
9
2 files changed, 8 insertions(+), 134 deletions(-)
...
...
diff view generated by jsdifflib
1
Remove lookup_disas_fn, handle_2misc_widening,
1
Remove lookup_disas_fn, handle_2misc_widening,
2
disas_simd_two_reg_misc, disas_data_proc_simd,
2
disas_simd_two_reg_misc, disas_data_proc_simd,
3
disas_data_proc_simd_fp, disas_a64_legacy, as
3
disas_data_proc_simd_fp, disas_a64_legacy, as
4
this is the final insn to be converted.
4
this is the final insn to be converted.
5
5
6
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
---
8
---
8
target/arm/tcg/translate-a64.c | 202 +++------------------------------
9
target/arm/tcg/translate-a64.c | 202 +++------------------------------
9
target/arm/tcg/a64.decode | 2 +
10
target/arm/tcg/a64.decode | 2 +
10
2 files changed, 18 insertions(+), 186 deletions(-)
11
2 files changed, 18 insertions(+), 186 deletions(-)
...
...
181
- return;
182
- return;
182
- }
183
- }
183
- break;
184
- break;
184
- }
185
- }
185
- default:
186
- default:
186
- case 0x0: /* REV64 */
187
- case 0x0: /* REV64, REV32 */
187
- case 0x1: /* REV16, REV32 */
188
- case 0x1: /* REV16 */
188
- case 0x2: /* SADDLP, UADDLP */
189
- case 0x2: /* SADDLP, UADDLP */
189
- case 0x3: /* SUQADD, USQADD */
190
- case 0x3: /* SUQADD, USQADD */
190
- case 0x4: /* CLS, CLZ */
191
- case 0x4: /* CLS, CLZ */
191
- case 0x5: /* CNT, NOT, RBIT */
192
- case 0x5: /* CNT, NOT, RBIT */
192
- case 0x6: /* SADALP, UADALP */
193
- case 0x6: /* SADALP, UADALP */
...
...
diff view generated by jsdifflib