From 16e6a0805e22031afd69df073336f68d8b646191 Mon Sep 17 00:00:00 2001 From: Iain Robertson Date: Mon, 23 Dec 2024 11:42:43 +0000 Subject: [PATCH 1/3] Added clarification on retiring inferable calls in blocks when itype width is 3 --- ingressPort.adoc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ingressPort.adoc b/ingressPort.adoc index fe245bf..f5c0799 100644 --- a/ingressPort.adoc +++ b/ingressPort.adoc @@ -306,7 +306,10 @@ block. *itype* can be 3 or 4 bits wide. If _itype_width_p_ is 3, a single code (6) is used to indicate all uninferable jumps. This is simpler to implement, but precludes use of the implicit return mode (see -<>), which requires jump types to be fully classified. +<>), which requires jump types to be fully classified. +Note that when _itype_width_p_ is 3 *itype* is 0 used for inferrable calls. +However, inferrable calls must still be the final instruction retired in a +block, otherwise the block would not be comprised of contiguous instructions. Whilst *iaddr* is typically a virtual address, it does not affect the encoder's behavior if it is a physical address. From adf36bd6a9e767da468b39745943868f23fad5c2 Mon Sep 17 00:00:00 2001 From: IainCRobertson <48293834+IainCRobertson@users.noreply.github.com> Date: Mon, 23 Dec 2024 14:31:51 +0000 Subject: [PATCH 2/3] Update ingressPort.adoc Co-authored-by: Ved Shanbhogue <91900059+ved-rivos@users.noreply.github.com> Signed-off-by: IainCRobertson <48293834+IainCRobertson@users.noreply.github.com> --- ingressPort.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ingressPort.adoc b/ingressPort.adoc index f5c0799..b125c94 100644 --- a/ingressPort.adoc +++ b/ingressPort.adoc @@ -307,7 +307,7 @@ block. (6) is used to indicate all uninferable jumps. This is simpler to implement, but precludes use of the implicit return mode (see <>), which requires jump types to be fully classified. -Note that when _itype_width_p_ is 3 *itype* is 0 used for inferrable calls. +Note that when _itype_width_p_ is 3, *itype* is 0 used for inferrable calls. However, inferrable calls must still be the final instruction retired in a block, otherwise the block would not be comprised of contiguous instructions. From 4acd3d3a8672d9f53d9628e62dac9d3f5e7629f2 Mon Sep 17 00:00:00 2001 From: Iain Robertson Date: Thu, 30 Jan 2025 18:20:06 +0000 Subject: [PATCH 3/3] Fixed a typo - Issue 183 --- ingressPort.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ingressPort.adoc b/ingressPort.adoc index f5c0799..9568401 100644 --- a/ingressPort.adoc +++ b/ingressPort.adoc @@ -307,7 +307,7 @@ block. (6) is used to indicate all uninferable jumps. This is simpler to implement, but precludes use of the implicit return mode (see <>), which requires jump types to be fully classified. -Note that when _itype_width_p_ is 3 *itype* is 0 used for inferrable calls. +Note that when _itype_width_p_ is 3 *itype* = 0 used for inferrable calls. However, inferrable calls must still be the final instruction retired in a block, otherwise the block would not be comprised of contiguous instructions.