[clang] [llvm] [AArch64] Add quadword gather load/scatter store intrinsics with unscaled vector offset (PR #71290)

Momchil Velikov via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 10 08:23:27 PST 2023


================
@@ -1457,6 +1457,24 @@ class AdvSIMD_GatherLoad_VS_Intrinsic
                 ],
                 [IntrReadMem]>;
 
+class AdvSIMD_GatherLoadQ_VS_Intrinsic
+    : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
+                [
+                  llvm_nxv1i1_ty,
+                  llvm_anyvector_ty,
----------------
momchil-velikov wrote:

That last bit turned out a bit more complex than we thought, in CGBuiltin.cpp, `EmitSVEGatherLoad`/`EmitSVEScatterStore` we need to check if an intrinsic parameter type is declared as polymorphic at the LLVM IR level in order to decide whether to use an argument type for retrieving the intrinsic. Using a monomorphic type results in extra components (unnecessarily) added to the intrinsic name and a follow-up error in the LLVM IR Verifier.
The effort of implementing a check for polymorphic/monomorphic type was considered to far outweigh the benefit.

https://github.com/llvm/llvm-project/pull/71290


More information about the cfe-commits mailing list