You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/hti.adoc
+19-19Lines changed: 19 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -55,7 +55,7 @@ target that _can_ be inferred from the source code.
55
55
* If context or time is supported then the _instruction_address_ for:
56
56
** The last instruction retired before a context or a time change;
57
57
** The first instruction retired following a context or time change.
58
-
* Whether jump targets are sequentially inferable or not.
58
+
* Whether jump targets are sequentially inferrable or not.
59
59
60
60
The mandatory information is the bare-minimum required to implement a basic
61
61
branch trace encoding algorithm.
@@ -70,39 +70,39 @@ be inferred or not;
70
70
encoder efficiency, particularly for loops. This requires
71
71
the encoder to be aware of the address of all branches, whether they are
72
72
taken or not.
73
-
* Uninferable jumps can be treated as inferable (which don't need to be
73
+
* Uninferrable jumps can be treated as inferrable (which don't need to be
74
74
reported in the trace output) if both the jump and the preceding
75
75
instruction which loads the target into a register have been traced.
76
76
77
77
[[JumpClasses]]
78
78
==== Jump classification and target inference
79
79
80
-
Jumps are classified as _inferable_, or _uninferable_. An _inferable_
80
+
Jumps are classified as _inferrable_, or _uninferrable_. An _inferrable_
81
81
jump has a target which can be deduced from the binary executable or
82
82
representation thereof (e.g. ELF). For the purposes of this
83
83
specification, the following strict definition applies:
84
84
85
85
If the target of a jump is supplied via a constant embedded within the
86
-
jump opcode, it is classified as _inferable_. Jumps which are not
87
-
_inferable_ are by definition _uninferable_.
86
+
jump opcode, it is classified as _inferrable_. Jumps which are not
87
+
_inferrable_ are by definition _uninferrable_.
88
88
89
89
However, there are some jump targets which can still be deduced from the
90
90
binary executable by considering pairs of instructions even though by
91
-
the above definition they are classified as uninferable. Specifically,
91
+
the above definition they are classified as uninferrable. Specifically,
92
92
when the source register for the jump instruction is supplied via
93
93
94
94
* an *_lui_* or *_c.lui_* (a register which contains a constant), or
95
95
* an *_auipc_* (a register which contains a constant offset from the
96
96
PC).
97
97
98
-
Such jump targets are classified as _sequentially inferable_ if the pair
98
+
Such jump targets are classified as _sequentially inferrable_ if the pair
99
99
of instructions are retired consecutively (i.e. the *_auipc_*, *_lui_*
100
100
or *_c.lui_* immediately precedes the jump). Note: the restriction that
101
101
the instructions are retired consecutively is necessary in order to
102
102
minimize the additional signalling needed between the hart and the
103
103
encoder, and should have a minimal impact on trace efficiency as it is
104
104
anticipated that consecutive execution will be the norm. Support for
105
-
sequentially inferable jumps is optional.
105
+
sequentially inferrable jumps is optional.
106
106
107
107
Jumps may optionally be further classified according to the recommended calling convention into _Calls_, _Returns_, _Co-routine swap_, and _other jumps with and without linkage_. Full details are provided in <<tab:itype4>>.
108
108
@@ -183,8 +183,8 @@ retired on this cycle.
183
183
Encoding given in Table <<tab:context-type>>. Codes 2-3
184
184
optional.
185
185
|*sijump* | OR | If *itype* indicates that this block ends with an
186
-
uninferable discontinuity, setting this signal to 1 indicates that it is
187
-
sequentially inferable and may be treated as inferable by the encoder if
186
+
uninferrable discontinuity, setting this signal to 1 indicates that it is
187
+
sequentially inferrable and may be treated as inferrable by the encoder if
188
188
the preceding *_auipc_*, *_lui_* or *_c.lui_* has been traced. Ignored
189
189
for *itype* codes other than 6, 8, 10, 12 or 14.
190
190
|===
@@ -234,7 +234,7 @@ retired instruction
234
234
|5 | Taken branch | <<itype_branch,Conditional branch>> | Taken direct, conditional branch
235
235
|6 | Uninferrable jump +
236
236
Pop/Return | JALR rd, rs +
237
-
CM.POPRET| Uninferable jump +
237
+
CM.POPRET| Uninferrable jump +
238
238
Defined by *Zcmt* extension
239
239
|7 | reserved | |
240
240
|===
@@ -255,7 +255,7 @@ retired instruction
255
255
|5 | Taken branch | <<itype_branch,Conditional branch>> | Taken direct, conditional branch
256
256
| 6 +
257
257
7 | reserved | |
258
-
|8 | Uninferable call | JALR rd, rs +
258
+
|8 | Uninferrable call | JALR rd, rs +
259
259
+
260
260
C.JALR rs | rd = `link` and rs != `link` +
261
261
rd = `link` and rs = `link` and rd = rs +
@@ -265,7 +265,7 @@ retired instruction
265
265
CM.JALT| rd = `link` +
266
266
Expands to `JAL x1, offset` +
267
267
Defined by <<zcmt,Zcmt>> extension
268
-
|10 | Uninferable jump +
268
+
|10 | Uninferrable jump +
269
269
(without linkage) | JALR rd, rs +
270
270
C.JR rs | rd = *x0* and rs != `link` +
271
271
rs != `link` +
@@ -283,8 +283,8 @@ retired instruction
283
283
CM.POPRET| rd != `link` and rs = `link` +
284
284
rs = `link` +
285
285
Defined by *Zcmt* extension
286
-
|14 | Other uninferable jump (with linkage) | JALR rd, rs | rd != `link` and rd != *x0* and rs != `link` +
287
-
|15 | Other inferable jump (without linkage) | JAL rd | rd != `link` and rd != *x0*
286
+
|14 | Other uninferrable jump (with linkage) | JALR rd, rs | rd != `link` and rd != *x0* and rs != `link` +
287
+
|15 | Other inferrable jump (without linkage) | JAL rd | rd != `link` and rd != *x0*
288
288
|===
289
289
290
290
@@ -295,7 +295,7 @@ NOTE: Branches (*itype*=4, 5) are always conditional, direct branches. In RISC-V
295
295
NOTE: Symbol `link` means register *x1* or *x5* as specified in *The RISC-V Instruction Set Manual, Volume I: Unprivileged ISA* document.
296
296
297
297
[[zcmt]]
298
-
NOTE: Jump instructions (CM.JT and CM.JALT) defined by ratified *Zcmt* extension are handled as direct (inferable) jumps as jump tables are assumed to be static and known to the decoder.
298
+
NOTE: Jump instructions (CM.JT and CM.JALT) defined by ratified *Zcmt* extension are handled as direct (inferrable) jumps as jump tables are assumed to be static and known to the decoder.
299
299
300
300
<<<
301
301
@@ -329,7 +329,7 @@ block without having access to the size of every instruction in the
329
329
block.
330
330
331
331
*itype* can be 3 or 4 bits wide. If _itype_width_p_ is 3, a single code
332
-
(6) is used to indicate all uninferable jumps. This is simpler to
332
+
(6) is used to indicate all uninferrable jumps. This is simpler to
333
333
implement, but precludes use of the implicit return mode (see
334
334
<<impret,Implicit Return>>), which requires jump types to be fully classified.
335
335
Note that when _itype_width_p_ is 3, *itype* = 0 is used for inferrable calls.
@@ -356,11 +356,11 @@ instructions up to the 1st branch must be reported in group 0 and
356
356
instructions up to the 2nd branch must be reported in group 1 and so on.
357
357
358
358
*sijump* is optional and may be omitted if the hart does not implement
359
-
the logic to detect sequentially inferable jumps. If the encoder offers
359
+
the logic to detect sequentially inferrable jumps. If the encoder offers
360
360
an *sijump* input it must also provide a parameter to indicate whether
361
361
the input is connected to a hart that implements this capability, or
362
362
tied off. This is to ensure the decoder can be made aware of the hart’s
363
-
capability. Enabling sequentially inferable jump mode in the encoder and
363
+
capability. Enabling sequentially inferrable jump mode in the encoder and
364
364
decoder when the hart does not support it will prevent correct
0 commit comments