On Tue, Sep 15, 2026 at 12:03 PM Trevor Gamblin <[email protected]>
wrote:

> gcc reports the following extension string for '-march=rva22u64':
>
> |tgamblin@megalith
> ~/workspace/ypbuilds/poky-qemuriscv64/layers/openembedded-core (master)$
> riscv64-linux-gnu-gcc -march=rva22u64 -mabi=lp64d -Q --help=target | grep
> rv64
> |  -march=
>  
> rv64imafdcb_zic64b_zicbom_zicbop_zicboz_ziccamoa_ziccif_zicclsm_ziccrse_zicntr_zicsr_zihintpause_zmmul_za64rs_zaamo_zalrsc_zfhmin_zca_zcd_zba_zbb_zbs_zkt
>
> Add the following extensions needed to complete the profile:
>
> - za64rs
> - zfhmin
> - zic64b
> - zicbop
> - zicboz
> - zihintpause
> - zkt
>
> Signed-off-by: Trevor Gamblin <[email protected]>
> ---
>  .../conf/machine/include/riscv/arch-riscv.inc | 28 +++++++++++++++++++
>  1 file changed, 28 insertions(+)
>
> diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc
> b/meta/conf/machine/include/riscv/arch-riscv.inc
> index 7db400694c..c05cdf8c21 100644
> --- a/meta/conf/machine/include/riscv/arch-riscv.inc
> +++ b/meta/conf/machine/include/riscv/arch-riscv.inc
> @@ -82,10 +82,22 @@ TUNE_RISCV_MARCH .=
> "${@bb.utils.contains("TUNE_FEATURES", "v", "v", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "v", "v",
> "", d)}"
>
>  # Now the special Z extensions
> +TUNEVALID[zic64b] = "Cache block size is 64 bytes extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zic64b",
> "_zic64b", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES",
> "zic64b", "_zic64b", "", d)}"
> +
>  TUNEVALID[zicbom] = "Cache-block management extension"
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbom",
> "_zicbom", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES",
> "zicbom", "_zicbom", "", d)}"
>
> +TUNEVALID[zicbop] = "Cache-block prefetching extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicbop",
> "_zicbop", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES",
> "zicbop", "_zicbop", "", d)}"
> +
> +TUNEVALID[zicboz] = "Cache-block zeroing extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "zicboz",
> "_zicboz", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES",
> "zicboz", "_zicboz", "", d)}"
> +
>  TUNEVALID[ziccamoa] = "PMA guarantees for A-extension atomics extension."
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccamoa",
> "_ziccamoa", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "ziccamoa",
> "_ziccamoa", "", d)}"
> @@ -114,10 +126,18 @@ TUNEVALID[zifencei] = "Instruction-fetch fence
> extension."
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei",
> "_zifencei", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zifencei",
> "_zifencei", "", d)}"
>
> +TUNEVALID[zihintpause] = "Pause hint extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zihintpause",
> "_zihintpause", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES",
> "zihintpause", "_zihintpause", "", d)}"
> +
>  TUNEVALID[zmmul] = "Cheaper M subset (mul only) extension."
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m zmmul",
> "_zmmul", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "m zmmul",
> "_zmmul", "", d)}"
>
> +TUNEVALID[za64rs] = "Reservation set size of at most 64 bytes extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za64rs",
> "_za64rs", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za64rs",
> "_za64rs", "", d)}"
> +
>  TUNEVALID[za128rs] = "Reservation set granularity (128-byte) extension."
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za128rs",
> "_za128rs", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "za128rs",
> "_za128rs", "", d)}"
> @@ -130,6 +150,10 @@ TUNEVALID[zalrsc] = "Extended LR/SC semantics
> extension."
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a zalrsc",
> "_zalrsc", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "a zalrsc",
> "_zalrsc", "", d)}"
>
> +TUNEVALID[zfhmin] = "Minimal half-precision floating point extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zfhmin",
> "_zfhmin", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "zfhmin",
> "_zfhmin", "", d)}"
> +
>  TUNEVALID[zca] = "Compressed base integer ops extension."
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c zca",
> "_zca", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains("TUNE_FEATURES", "c zca",
> "_zca", "", d)}"
> @@ -154,6 +178,10 @@ TUNEVALID[zbs] = "Single-bit manipulation extension"
>  TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs",
> "_zbs", "", d)}"
>  TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zbs",
> "_zbs", "", d)}"
>
> +TUNEVALID[zkt] = "Data-independent execution latency extension."
> +TUNE_RISCV_MARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zkt",
> "_zkt", "", d)}"
> +TUNE_RISCV_PKGARCH .= "${@bb.utils.contains_any("TUNE_FEATURES", "b zkt",
> "_zkt", "", d)}"
>

wrongly implies zkt from b, Zkt is mandated by the RVA22/23 profiles, not
by B
(the cover letter's "'zkt' is needed by 'b'" is incorrect). This silently
injects _zkt into -march and the
package arch of any b-enabled non-profile tune.

> +
>  # Construct TUNE_CCARGS
>  # This should result in a CCARG similar to:
>  #   -march=rv32imac -mabi=ilp32
> --
> 2.55.0
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#246252): 
https://lists.openembedded.org/g/openembedded-core/message/246252
Mute This Topic: https://lists.openembedded.org/mt/121267429/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to