asb wrote:

> Since it's possible that **ISA spec** and **intrinsics spec** are not 
> synchronized, so the updates add an dummy extension called **zexperimental**, 
> once `-menable-experimental-extensions` is specified, the feature 
> `zexperimental` is automatically added.
> If `let RequiredFeatures = ["Zexperimental"] ` is added in `.td` file, it 
> will check if `zexperimental` exists, if not, the corresponding intrinsics 
> would not be added, hence causing an **intrinsics undeclared** error.

Thanks for looking into this. It's perhaps surprising we've gone so long 
without having the infrastructure to make an extension non-experimental without 
making its not-yet-finalized intrinsics non-experimental. Introducing a new 
required feature seems like a reasonable way of doing this, but introducing a 
dummy extension seems unnecessary (unless I'm missing something?).

I could see a solution involving a Clang flag (e.g. 
`-menable-experimental-intrinsics`), or perhaps a solution where the user must 
use a certain `#define` (I know riscv_vector.h is implemented using a pragma, 
but presumably that could still query defines). There may be other options too.

Another piece of info that would be helpful to better understand is what the 
process is for finalising intrinsic additions (@eopxd might know?). If it's 
just the case that we have to wait another month before moving an extension 
from experimental to experimental then maybe extra infro to separate 
experimental intrinsics from instructions is less interesting. If it's more 
indeterminate than that, we probably need it.

I'll put this on the agenda for Thursday's RISC-V LLVM sync-up call in the hope 
we can resolve it there.

https://github.com/llvm/llvm-project/pull/69000
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to