From a2a638c198abcece18b93ad635508ca8e081dd53 Mon Sep 17 00:00:00 2001 From: deadprogram Date: Wed, 15 Jul 2026 17:12:22 +0200 Subject: [PATCH] all: fix LLVM version compatibility for targets and interp cc1as: change AssemblerInvocation.Triple from std::string to llvm::Triple, matching upstream LLVM 22 and fixing deprecation warnings for lookupTarget, createMCRegInfo, createMCAsmInfo, and createMCSubtargetInfo. interp: always use ConstNamedStruct in rawValue.toLLVMValue instead of falling back to ConstStruct for unnamed structs. LLVM 22 uses anonymous identified struct types where previous versions used literal structs; ConstStruct creates a literal type that doesn't match, causing an "initializer type mismatch" panic for globals like fmt.ppFree. compileopts: add build-tag-guarded feature patching for pre-LLVM 20 (strip +bulk-memory-opt and +call-indirect-overlong from wasm features) and restructure into three files covering all LLVM version ranges. targets: strip redundant negative features from RISC-V target JSONs (esp32c3, esp32c6, fe310, k210, riscv-qemu, tkey). These ~190 negative features per target listed every extension LLVM knows about that the target doesn't use, but LLVM disables them by default. They became stale across LLVM versions, causing "not a recognized feature" warnings. Keep only positive features and -relax. Signed-off-by: deadprogram --- builder/cc1as.cpp | 16 ++++++++-------- builder/cc1as.h | 4 ++-- compileopts/features_default.go | 9 +++++++++ compileopts/features_pre20.go | 16 ++++++++++++++++ compileopts/features_pre22.go | 9 --------- interp/memory.go | 8 ++++---- targets/esp32c3.json | 24 +++++++++++++++++------- targets/esp32c6.json | 23 +++++++++++++++++------ targets/fe310.json | 11 ++++++++--- targets/k210.json | 11 ++++++++--- targets/riscv-qemu.json | 2 +- targets/tkey.json | 26 +++++++++++++++----------- 12 files changed, 105 insertions(+), 54 deletions(-) create mode 100644 compileopts/features_default.go create mode 100644 compileopts/features_pre20.go delete mode 100644 compileopts/features_pre22.go diff --git a/builder/cc1as.cpp b/builder/cc1as.cpp index 252d1a3db..68f13add2 100644 --- a/builder/cc1as.cpp +++ b/builder/cc1as.cpp @@ -109,7 +109,7 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, // Construct the invocation. // Target Options - Opts.Triple = llvm::Triple::normalize(Args.getLastArgValue(OPT_triple)); + Opts.Triple = llvm::Triple(llvm::Triple::normalize(Args.getLastArgValue(OPT_triple))); if (Arg *A = Args.getLastArg(options::OPT_darwin_target_variant_triple)) Opts.DarwinTargetVariantTriple = llvm::Triple(A->getValue()); if (Arg *A = Args.getLastArg(OPT_darwin_target_variant_sdk_version_EQ)) { @@ -125,8 +125,8 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, Opts.Features = Args.getAllArgValues(OPT_target_feature); // Use the default target triple if unspecified. - if (Opts.Triple.empty()) - Opts.Triple = llvm::sys::getDefaultTargetTriple(); + if (Opts.Triple.getTriple().empty()) + Opts.Triple = llvm::Triple(llvm::sys::getDefaultTargetTriple()); // Language Options Opts.IncludePaths = Args.getAllArgValues(OPT_I); @@ -267,7 +267,7 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, std::string Error; const Target *TheTarget = TargetRegistry::lookupTarget(Opts.Triple, Error); if (!TheTarget) - return Diags.Report(diag::err_target_unknown_triple) << Opts.Triple; + return Diags.Report(diag::err_target_unknown_triple) << Opts.Triple.str(); ErrorOr> Buffer = MemoryBuffer::getFileOrSTDIN(Opts.InputFile, /*IsText=*/true); @@ -327,7 +327,7 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, TheTarget->createMCSubtargetInfo(Opts.Triple, Opts.CPU, FS)); assert(STI && "Unable to create subtarget info!"); - MCContext Ctx(Triple(Opts.Triple), MAI.get(), MRI.get(), STI.get(), &SrcMgr, + MCContext Ctx(Opts.Triple, MAI.get(), MRI.get(), STI.get(), &SrcMgr, &MCOptions); bool PIC = false; @@ -391,7 +391,7 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, // FIXME: There is a bit of code duplication with addPassesToEmitFile. if (Opts.OutputType == AssemblerInvocation::FT_Asm) { std::unique_ptr IP(TheTarget->createMCInstPrinter( - llvm::Triple(Opts.Triple), Opts.OutputAsmVariant, *MAI, *MCII, *MRI)); + Opts.Triple, Opts.OutputAsmVariant, *MAI, *MCII, *MRI)); std::unique_ptr CE; if (Opts.ShowEncoding) @@ -422,7 +422,7 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, DwoOS ? MAB->createDwoObjectWriter(*Out, *DwoOS) : MAB->createObjectWriter(*Out); - Triple T(Opts.Triple); + Triple T = Opts.Triple; Str.reset(TheTarget->createMCObjectStreamer( T, Ctx, std::move(MAB), std::move(OW), std::move(CE), *STI)); Str.get()->initSections(Opts.NoExecStack, *STI); @@ -453,7 +453,7 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, std::unique_ptr TAP( TheTarget->createMCAsmParser(*STI, *Parser, *MCII, MCOptions)); if (!TAP) - Failed = Diags.Report(diag::err_target_unknown_triple) << Opts.Triple; + Failed = Diags.Report(diag::err_target_unknown_triple) << Opts.Triple.str(); // Set values for symbols, if any. for (auto &S : Opts.SymbolDefs) { diff --git a/builder/cc1as.h b/builder/cc1as.h index a7e0f8348..b5a7657f9 100644 --- a/builder/cc1as.h +++ b/builder/cc1as.h @@ -20,7 +20,7 @@ struct AssemblerInvocation { /// @{ /// The name of the target triple to assemble for. - std::string Triple; + llvm::Triple Triple; /// If given, the name of the target CPU to determine which instructions /// are legal. @@ -142,7 +142,7 @@ struct AssemblerInvocation { public: AssemblerInvocation() { - Triple = ""; + Triple = llvm::Triple(); NoInitialTextSection = 0; InputFile = "-"; OutputPath = "-"; diff --git a/compileopts/features_default.go b/compileopts/features_default.go new file mode 100644 index 000000000..79b884ab5 --- /dev/null +++ b/compileopts/features_default.go @@ -0,0 +1,9 @@ +//go:build !llvm22 && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 + +package compileopts + +// patchFeatures applies LLVM-version-specific feature name mappings. +// For LLVM 20/21, features in the target JSON files are already correct. +func patchFeatures(features string) string { + return features +} diff --git a/compileopts/features_pre20.go b/compileopts/features_pre20.go new file mode 100644 index 000000000..6afccdd73 --- /dev/null +++ b/compileopts/features_pre20.go @@ -0,0 +1,16 @@ +//go:build llvm14 || llvm15 || llvm16 || llvm17 || llvm18 || llvm19 + +package compileopts + +import "strings" + +// patchFeatures applies LLVM-version-specific feature name mappings. +// LLVM 19 and earlier do not have +bulk-memory-opt or +// +call-indirect-overlong for WebAssembly (added in LLVM 20). +func patchFeatures(features string) string { + features = strings.ReplaceAll(features, ",+bulk-memory-opt", "") + features = strings.ReplaceAll(features, "+bulk-memory-opt,", "") + features = strings.ReplaceAll(features, ",+call-indirect-overlong", "") + features = strings.ReplaceAll(features, "+call-indirect-overlong,", "") + return features +} diff --git a/compileopts/features_pre22.go b/compileopts/features_pre22.go deleted file mode 100644 index 5ac4aa875..000000000 --- a/compileopts/features_pre22.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build !llvm22 - -package compileopts - -// patchFeatures applies LLVM-version-specific feature name mappings. -// For pre-LLVM 22, no patching is needed. -func patchFeatures(features string) string { - return features -} diff --git a/interp/memory.go b/interp/memory.go index 6ed4ebae4..7c1eb2d33 100644 --- a/interp/memory.go +++ b/interp/memory.go @@ -931,10 +931,10 @@ func (v rawValue) toLLVMValue(llvmType llvm.Type, mem *memoryView) (llvm.Value, return llvm.Value{}, err } } - if llvmType.StructName() != "" { - return llvm.ConstNamedStruct(llvmType, fields), nil - } - return llvmType.Context().ConstStruct(fields, false), nil + // Always use ConstNamedStruct to preserve the exact type identity. + // ConstStruct creates a literal struct type which may differ from an + // anonymous identified struct even when structurally identical. + return llvm.ConstNamedStruct(llvmType, fields), nil case llvm.ArrayTypeKind: numElements := llvmType.ArrayLength() childType := llvmType.ElementType() diff --git a/targets/esp32c3.json b/targets/esp32c3.json index 27a15f01f..14b3eb04b 100644 --- a/targets/esp32c3.json +++ b/targets/esp32c3.json @@ -1,8 +1,13 @@ { - "inherits": ["riscv32"], + "inherits": [ + "riscv32" + ], "inheritable-only": true, - "features": "+32bit,+c,+m,+zmmul,-a,-b,-d,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-relax,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xesppie,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b", - "build-tags": ["esp32c3", "esp"], + "features": "+32bit,+c,+m,+zmmul,-relax", + "build-tags": [ + "esp32c3", + "esp" + ], "serial": "usb", "rtlib": "compiler-rt", "libc": "picolibc", @@ -16,10 +21,15 @@ ], "binary-format": "esp32c3", "flash-method": "esp32jtag", - "serial-port": ["303a:1001"], + "serial-port": [ + "303a:1001" + ], "openocd-interface": "esp_usb_jtag", "openocd-target": "esp32c3", - "openocd-commands": ["gdb_memory_map disable"], - "gdb": ["riscv32-esp-elf-gdb"] + "openocd-commands": [ + "gdb_memory_map disable" + ], + "gdb": [ + "riscv32-esp-elf-gdb" + ] } - diff --git a/targets/esp32c6.json b/targets/esp32c6.json index e0947d307..53ca7d940 100644 --- a/targets/esp32c6.json +++ b/targets/esp32c6.json @@ -1,8 +1,13 @@ { - "inherits": ["riscv32"], + "inherits": [ + "riscv32" + ], "inheritable-only": true, - "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zmmul,-b,-d,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-relax,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xesppie,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b", - "build-tags": ["esp32c6", "esp"], + "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zmmul,-relax", + "build-tags": [ + "esp32c6", + "esp" + ], "serial": "usb", "rtlib": "compiler-rt", "libc": "picolibc", @@ -13,9 +18,15 @@ ], "binary-format": "esp32c6", "flash-method": "esp32jtag", - "serial-port": ["303a:1001"], + "serial-port": [ + "303a:1001" + ], "openocd-interface": "esp_usb_jtag", "openocd-target": "esp32c6", - "openocd-commands": ["gdb_memory_map disable"], - "gdb": ["riscv32-esp-elf-gdb"] + "openocd-commands": [ + "gdb_memory_map disable" + ], + "gdb": [ + "riscv32-esp-elf-gdb" + ] } diff --git a/targets/fe310.json b/targets/fe310.json index a264bb5a8..cc8d605f1 100644 --- a/targets/fe310.json +++ b/targets/fe310.json @@ -1,6 +1,11 @@ { - "inherits": ["riscv32"], + "inherits": [ + "riscv32" + ], "cpu": "sifive-e31", - "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zmmul,-b,-d,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-relax,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xesppie,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b", - "build-tags": ["fe310", "sifive"] + "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zmmul,-relax", + "build-tags": [ + "fe310", + "sifive" + ] } diff --git a/targets/k210.json b/targets/k210.json index c11dc4c79..22d18ae9a 100644 --- a/targets/k210.json +++ b/targets/k210.json @@ -1,6 +1,11 @@ { - "inherits": ["riscv64"], - "features": "+64bit,+a,+c,+d,+f,+m,+zaamo,+zalrsc,+zicsr,+zifencei,+zmmul,-b,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-h,-relax,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xesppie,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zcb,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b", - "build-tags": ["k210", "kendryte"], + "inherits": [ + "riscv64" + ], + "features": "+64bit,+a,+c,+d,+f,+m,+zaamo,+zalrsc,+zicsr,+zifencei,+zmmul,-relax", + "build-tags": [ + "k210", + "kendryte" + ], "code-model": "medium" } diff --git a/targets/riscv-qemu.json b/targets/riscv-qemu.json index e3387d4fc..582046c65 100644 --- a/targets/riscv-qemu.json +++ b/targets/riscv-qemu.json @@ -2,7 +2,7 @@ "inherits": [ "riscv32" ], - "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zihintpause,+zmmul,-b,-d,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-relax,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xesppie,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zabha,-zacas,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b", + "features": "+32bit,+a,+c,+m,+zaamo,+zalrsc,+zihintpause,+zmmul,-relax", "build-tags": [ "virt", "qemu" diff --git a/targets/tkey.json b/targets/tkey.json index 74584786b..30f02409e 100644 --- a/targets/tkey.json +++ b/targets/tkey.json @@ -1,13 +1,17 @@ { - "inherits": ["riscv32"], - "build-tags": ["tkey"], - "features": "+32bit,+c,+zmmul,-a,-b,-d,-e,-experimental-sdext,-experimental-sdtrig,-experimental-smctr,-experimental-ssctr,-experimental-svukte,-experimental-xqcia,-experimental-xqciac,-experimental-xqcicli,-experimental-xqcicm,-experimental-xqcics,-experimental-xqcicsr,-experimental-xqciint,-experimental-xqcilo,-experimental-xqcilsm,-experimental-xqcisls,-experimental-zalasr,-experimental-zicfilp,-experimental-zicfiss,-experimental-zvbc32e,-experimental-zvkgs,-f,-h,-m,-relax,-sha,-shcounterenw,-shgatpa,-shtvala,-shvsatpa,-shvstvala,-shvstvecd,-smaia,-smcdeleg,-smcsrind,-smdbltrp,-smepmp,-smmpm,-smnpm,-smrnmi,-smstateen,-ssaia,-ssccfg,-ssccptr,-sscofpmf,-sscounterenw,-sscsrind,-ssdbltrp,-ssnpm,-sspm,-ssqosid,-ssstateen,-ssstrict,-sstc,-sstvala,-sstvecd,-ssu64xl,-supm,-svade,-svadu,-svbare,-svinval,-svnapot,-svpbmt,-svvptc,-v,-xcvalu,-xcvbi,-xcvbitmanip,-xcvelw,-xcvmac,-xcvmem,-xcvsimd,-xesppie,-xmipscmove,-xmipslsp,-xsfcease,-xsfvcp,-xsfvfnrclipxfqf,-xsfvfwmaccqqq,-xsfvqmaccdod,-xsfvqmaccqoq,-xsifivecdiscarddlone,-xsifivecflushdlone,-xtheadba,-xtheadbb,-xtheadbs,-xtheadcmo,-xtheadcondmov,-xtheadfmemidx,-xtheadmac,-xtheadmemidx,-xtheadmempair,-xtheadsync,-xtheadvdot,-xventanacondops,-xwchc,-za128rs,-za64rs,-zaamo,-zabha,-zacas,-zalrsc,-zama16b,-zawrs,-zba,-zbb,-zbc,-zbkb,-zbkc,-zbkx,-zbs,-zcb,-zcd,-zce,-zcf,-zcmop,-zcmp,-zcmt,-zdinx,-zfa,-zfbfmin,-zfh,-zfhmin,-zfinx,-zhinx,-zhinxmin,-zic64b,-zicbom,-zicbop,-zicboz,-ziccamoa,-ziccif,-zicclsm,-ziccrse,-zicntr,-zicond,-zicsr,-zifencei,-zihintntl,-zihintpause,-zihpm,-zimop,-zk,-zkn,-zknd,-zkne,-zknh,-zkr,-zks,-zksed,-zksh,-zkt,-ztso,-zvbb,-zvbc,-zve32f,-zve32x,-zve64d,-zve64f,-zve64x,-zvfbfmin,-zvfbfwma,-zvfh,-zvfhmin,-zvkb,-zvkg,-zvkn,-zvknc,-zvkned,-zvkng,-zvknha,-zvknhb,-zvks,-zvksc,-zvksed,-zvksg,-zvksh,-zvkt,-zvl1024b,-zvl128b,-zvl16384b,-zvl2048b,-zvl256b,-zvl32768b,-zvl32b,-zvl4096b,-zvl512b,-zvl64b,-zvl65536b,-zvl8192b", - "cflags": [ - "-march=rv32iczmmul" - ], - "linkerscript": "targets/tkey.ld", - "scheduler": "none", - "gc": "conservative", - "flash-command": "tkey-runapp {bin}", - "serial": "uart" + "inherits": [ + "riscv32" + ], + "build-tags": [ + "tkey" + ], + "features": "+32bit,+c,+zmmul,-relax", + "cflags": [ + "-march=rv32iczmmul" + ], + "linkerscript": "targets/tkey.ld", + "scheduler": "none", + "gc": "conservative", + "flash-command": "tkey-runapp {bin}", + "serial": "uart" }