Hi Andy, On Mon, Jun 05, 2023 at 11:07:20AM +0000, Andy Chiu wrote: > Some extensions use .option arch directive to selectively enable certain > extensions in parts of its assembly code. For example, Zbb uses it to > inform assmebler to emit bit manipulation instructions. However, > supporting of this directive only exist on GNU assembler and has not > landed on clang at the moment, making TOOLCHAIN_HAS_ZBB depend on > AS_IS_GNU. > > While it is still under review at https://reviews.llvm.org/D123515, the > upcoming Vector patch also requires this feature in assembler. Thus, > provide Kconfig AS_HAS_OPTION_ARCH to detect such feature. Then > TOOLCHAIN_HAS_XXX will be turned on automatically when the feature land. Just an FYI, this change has landed in LLVM main, so it should be in LLVM 17 in a few months: https://github.com/llvm/llvm-project/commit/9e8ed3403c191ab9c4903e8eeb8f732ff8a43cb4 If you have to spin another revision for some reason, consider updating the Phabricator link to that one, as I expect that link to remain more stable in the long run over the Phabricator one, as LLVM is planning to eventually move away from Phabricator to GitHub pull requests. I don't think this is worth respinning on its own (obviously, heh). The rest of the change still looks good to me, thanks again for taking this up. > Suggested-by: Nathan Chancellor <nathan@xxxxxxxxxx> > Signed-off-by: Andy Chiu <andy.chiu@xxxxxxxxxx> > Reviewed-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx> > Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> > Reviewed-by: Heiko Stuebner <heiko.stuebner@xxxxxxxx> > Tested-by: Heiko Stuebner <heiko.stuebner@xxxxxxxx> > --- > arch/riscv/Kconfig | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 348c0fa1fc8c..1019b519d590 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -262,6 +262,12 @@ config RISCV_DMA_NONCOHERENT > config AS_HAS_INSN > def_bool $(as-instr,.insn r 51$(comma) 0$(comma) 0$(comma) t0$(comma) t0$(comma) zero) > > +config AS_HAS_OPTION_ARCH > + # https://reviews.llvm.org/D123515 > + def_bool y > + depends on $(as-instr, .option arch$(comma) +m) > + depends on !$(as-instr, .option arch$(comma) -i) > + > source "arch/riscv/Kconfig.socs" > source "arch/riscv/Kconfig.errata" > > @@ -466,7 +472,7 @@ config TOOLCHAIN_HAS_ZBB > depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zbb) > depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb) > depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900 > - depends on AS_IS_GNU > + depends on AS_HAS_OPTION_ARCH > > config RISCV_ISA_ZBB > bool "Zbb extension support for bit manipulation instructions" > -- > 2.17.1 >