kito-cheng added inline comments.

================
Comment at: llvm/lib/Support/RISCVISAInfo.cpp:903
+    return createStringError(errc::invalid_argument,
+                             "zcmt is not allowed when c is specified");
+
----------------
craig.topper wrote:
> Extension names should be in single quotes.
> 
> Should we use `'zcmt' and 'c' extensions are incompatible` to match line 863?
My understanding is Zcmt still compatible with C if no D/Zcd is present.

`rv32ic_zcmt` in theory is valid combination according to spec[1].

[1] 
https://github.com/riscv/riscv-code-size-reduction/blob/main/Zc-specification/Zc.adoc#19-zcmt

> This extension reuses some encodings from c.fsdsp. Therefore it is 
> incompatible with Zcd, which is included when C and D extensions are both 
> present.






================
Comment at: llvm/lib/Target/RISCV/RISCVFeatures.td:354-360
+def FeatureStdExtZcmt
+    : SubtargetFeature<"experimental-zcmt", "HasStdExtZcmt", "true",
+                       "'Zcmt' (table jump instuctions for code-size 
reduction)", 
+                       [FeatureStdExtZca, FeatureStdExtZicsr]>; 
+def HasStdExtZcmt : Predicate<"Subtarget->hasStdExtZcmt() && 
!Subtarget->hasStdExtC()">,
+                           AssemblerPredicate<(all_of FeatureStdExtZcmt, (not 
FeatureStdExtC)),
+                           "'Zcmt' (table jump instuctions for code-size 
reduction)">;
----------------
I would suggest do not check incompatible stuffs here, let RISCVISAInfo handle 
that, we already did that for others like `Zfinx` and `F`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133863/new/

https://reviews.llvm.org/D133863

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to