aboutsummaryrefslogtreecommitdiff
path: root/gdb/features/aarch64-fpu.xml
blob: 89bbcc0a8556208abec6504748f6d25146c334e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<?xml version="1.0"?>
<!-- Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.

     Copying and distribution of this file, with or without modification,
     are permitted in any medium without royalty provided the copyright
     notice and this notice are preserved.  -->

<!DOCTYPE feature SYSTEM "gdb-target.dtd">
<feature name="org.gnu.gdb.aarch64.fpu">
  <vector id="v2d" type="ieee_double" count="2"/>
  <vector id="v2u" type="uint64" count="2"/>
  <vector id="v2i" type="int64" count="2"/>
  <vector id="v4f" type="ieee_single" count="4"/>
  <vector id="v4u" type="uint32" count="4"/>
  <vector id="v4i" type="int32" count="4"/>
  <vector id="v8f" type="ieee_half" count="8"/>
  <vector id="v8u" type="uint16" count="8"/>
  <vector id="v8i" type="int16" count="8"/>
  <vector id="v8bf16" type="bfloat16" count="8"/>
  <vector id="v16u" type="uint8" count="16"/>
  <vector id="v16i" type="int8" count="16"/>
  <vector id="v1u" type="uint128" count="1"/>
  <vector id="v1i" type="int128" count="1"/>
  <union id="vnd">
    <field name="f" type="v2d"/>
    <field name="u" type="v2u"/>
    <field name="s" type="v2i"/>
  </union>
  <union id="vns">
    <field name="f" type="v4f"/>
    <field name="u" type="v4u"/>
    <field name="s" type="v4i"/>
  </union>
  <union id="vnh">
    <field name="bf" type="v8bf16"/>
    <field name="f" type="v8f"/>
    <field name="u" type="v8u"/>
    <field name="s" type="v8i"/>
  </union>
  <union id="vnb">
    <field name="u" type="v16u"/>
    <field name="s" type="v16i"/>
  </union>
  <union id="vnq">
    <field name="u" type="v1u"/>
    <field name="s" type="v1i"/>
  </union>
  <union id="aarch64v">
    <field name="d" type="vnd"/>
    <field name="s" type="vns"/>
    <field name="h" type="vnh"/>
    <field name="b" type="vnb"/>
    <field name="q" type="vnq"/>
  </union>
  <reg name="v0" bitsize="128" type="aarch64v" regnum="34"/>
  <reg name="v1" bitsize="128" type="aarch64v" />
  <reg name="v2" bitsize="128" type="aarch64v" />
  <reg name="v3" bitsize="128" type="aarch64v" />
  <reg name="v4" bitsize="128" type="aarch64v" />
  <reg name="v5" bitsize="128" type="aarch64v" />
  <reg name="v6" bitsize="128" type="aarch64v" />
  <reg name="v7" bitsize="128" type="aarch64v" />
  <reg name="v8" bitsize="128" type="aarch64v" />
  <reg name="v9" bitsize="128" type="aarch64v" />
  <reg name="v10" bitsize="128" type="aarch64v"/>
  <reg name="v11" bitsize="128" type="aarch64v"/>
  <reg name="v12" bitsize="128" type="aarch64v"/>
  <reg name="v13" bitsize="128" type="aarch64v"/>
  <reg name="v14" bitsize="128" type="aarch64v"/>
  <reg name="v15" bitsize="128" type="aarch64v"/>
  <reg name="v16" bitsize="128" type="aarch64v"/>
  <reg name="v17" bitsize="128" type="aarch64v"/>
  <reg name="v18" bitsize="128" type="aarch64v"/>
  <reg name="v19" bitsize="128" type="aarch64v"/>
  <reg name="v20" bitsize="128" type="aarch64v"/>
  <reg name="v21" bitsize="128" type="aarch64v"/>
  <reg name="v22" bitsize="128" type="aarch64v"/>
  <reg name="v23" bitsize="128" type="aarch64v"/>
  <reg name="v24" bitsize="128" type="aarch64v"/>
  <reg name="v25" bitsize="128" type="aarch64v"/>
  <reg name="v26" bitsize="128" type="aarch64v"/>
  <reg name="v27" bitsize="128" type="aarch64v"/>
  <reg name="v28" bitsize="128" type="aarch64v"/>
  <reg name="v29" bitsize="128" type="aarch64v"/>
  <reg name="v30" bitsize="128" type="aarch64v"/>
  <reg name="v31" bitsize="128" type="aarch64v"/>

  <flags id="fpsr_flags" size="4">
    <!-- Invalid Operation cumulative floating-point exception bit.  -->
    <field name="IOC" start="0" end="0"/>
    <!-- Divide by Zero cumulative floating-point exception bit.  -->
    <field name="DZC" start="1" end="1"/>
    <!-- Overflow cumulative floating-point exception bit.  -->
    <field name="OFC" start="2" end="2"/>
    <!-- Underflow cumulative floating-point exception bit.  -->
    <field name="UFC" start="3" end="3"/>
    <!-- Inexact cumulative floating-point exception bit..  -->
    <field name="IXC" start="4" end="4"/>
    <!-- Input Denormal cumulative floating-point exception bit.  -->
    <field name="IDC" start="7" end="7"/>
    <!-- Cumulative saturation bit, Advanced SIMD only.  -->
    <field name="QC" start="27" end="27"/>
    <!-- When AArch32 is supported at any Exception level and AArch32
         floating-point is implemented: Overflow condition flag for AArch32
         floating-point comparison operations.  -->
    <field name="V" start="28" end="28"/>
    <!-- When AArch32 is supported at any Exception level and AArch32
         floating-point is implemented:
         Carry condition flag for AArch32 floating-point comparison operations.
         -->
    <field name="C" start="29" end="29"/>
    <!-- When AArch32 is supported at any Exception level and AArch32
         floating-point is implemented:
         Zero condition flag for AArch32 floating-point comparison operations.
         -->
    <field name="Z" start="30" end="30"/>
    <!-- When AArch32 is supported at any Exception level and AArch32
         floating-point is implemented:
         Negative condition flag for AArch32 floating-point comparison
         operations.  -->
    <field name="N" start="31" end="31"/>
  </flags>
  <reg name="fpsr" bitsize="32" type="fpsr_flags"/>

  <flags id="fpcr_flags" size="4">
    <!-- Flush Inputs to Zero (part of Armv8.7).  -->
    <field name="FIZ" start="0" end="0"/>
    <!-- Alternate Handling (part of Armv8.7).  -->
    <field name="AH" start="1" end="1"/>
    <!-- Controls how the output elements other than the lowest element of the
         vector are determined for Advanced SIMD scalar instructions (part of
         Armv8.7).  -->
    <field name="NEP" start="2" end="2"/>
    <!-- Invalid Operation floating-point exception trap enable.  -->
    <field name="IOE" start="8" end="8"/>
    <!-- Divide by Zero floating-point exception trap enable.  -->
    <field name="DZE" start="9" end="9"/>
    <!-- Overflow floating-point exception trap enable.  -->
    <field name="OFE" start="10" end="10"/>
    <!-- Underflow floating-point exception trap enable.  -->
    <field name="UFE" start="11" end="11"/>
    <!-- Inexact floating-point exception trap enable.  -->
    <field name="IXE" start="12" end="12"/>
    <!-- The value of this bit controls the numeric behaviors of BFloat16 dot
	 product calculations performed by the BFDOT, BFMMLA, BFMOPA, and
	 BFMOPS instructions when FEAT_EBF16 is implemented.  -->
    <field name="EBF" start="13" end="13"/>
    <!-- Input Denormal floating-point exception trap enable.  -->
    <field name="IDE" start="15" end="15"/>
    <!-- This field has no function in AArch64 state, and non-zero values are
	 ignored during execution in AArch64 state.
	 This field is included only for context saving and restoration of
	 the AArch32 FPSCR.Len field.  -->
    <field name="Len" start="16" end="18"/>
    <!-- Flush-to-zero mode control bit on half-precision data-processing
         instructions.  -->
    <field name="FZ16" start="19" end="19"/>
    <!-- This field has no function in AArch64 state, and non-zero values are
	 ignored during execution in AArch64 state.
	 This field is included only for context saving and restoration of the
	 AArch32 FPSCR.Stride field.  -->
    <field name="Stride" start="20" end="21"/>
    <!-- Rounding Mode control field.  -->
    <field name="RMode" start="22" end="23"/>
    <!-- Flush-to-zero mode control bit.  -->
    <field name="FZ" start="24" end="24"/>
    <!-- Default NaN mode control bit.  -->
    <field name="DN" start="25" end="25"/>
    <!-- Alternative half-precision control bit.  -->
    <field name="AHP" start="26" end="26"/>
  </flags>
  <reg name="fpcr" bitsize="32" type="fpcr_flags"/>
</feature>