bryanpkc marked 9 inline comments as done.
bryanpkc added inline comments.

================
Comment at: clang/include/clang/Basic/TargetBuiltins.h:312
+  /// Flags to identify the types for overloaded SME builtins.
+  class SMETypeFlags {
+    uint64_t Flags;
----------------
david-arm wrote:
> I actually don't think you need to add this class - we should be able to just 
> reuse the existing SVETypeFlags structure. I think this is fine because 
> you've commonised the flags between SME and SVE.
Thanks for the suggestion. I have removed this class.


================
Comment at: clang/include/clang/Basic/arm_sme.td:21
+
+def SVLD1_HOR_ZA8 : MInst<"svld1_hor_za8", "vimiPQ", "c", [IsLoad, 
IsOverloadNone, IsStreaming, IsSharedZA], MemEltTyDefault, 
"aarch64_sme_ld1b_horiz">;
+def SVLD1_HOR_ZA16 : MInst<"svld1_hor_za16", "vimiPQ", "s", [IsLoad, 
IsOverloadNone, IsStreaming, IsSharedZA], MemEltTyDefault, 
"aarch64_sme_ld1h_horiz">;
----------------
david-arm wrote:
> I think all the load and store instructions need immediate checks for the 
> tile and slice_offset here such as:
> 
> [ImmCheck<0, ImmCheck0>, ImmCheck<2, ImmCheck0_15>]
> 
> for SVLD1_HOR_ZA8 and the others. It's mentioned in the ACLE - 
> https://arm-software.github.io/acle/main/acle.html#sme-language-extensions-and-intrinsics:
> 
>   15.4.3.1 Common Rules
> 
>   ...
>   Every argument named tile, slice_offset or tile_mask must be an integer 
> constant expression in the range of the underlying instruction.
> 
Done.


================
Comment at: clang/include/clang/Basic/arm_sve_sme_incl.td:126
+// Z: const pointer to uint64_t
+
+class MergeType<int val, string suffix=""> {
----------------
david-arm wrote:
> Please can you add a comment here for the new Prototype modifier you added - 
> '%'?
A comment for '%' already exists on line 103.


================
Comment at: clang/lib/Basic/Targets/AArch64.cpp:438
 
+  if (HasSME)
+    Builder.defineMacro("__ARM_FEATURE_SME", "1");
----------------
david-arm wrote:
> Can you remove this please? We can't really set this macro until the SME ABI 
> and ACLE is feature complete.
OK. Could you educate me what else is needed for SME ABI and ACLE to be 
feature-complete? How can I help?


================
Comment at: 
clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_int_const_expr_error.c:5
+
+__attribute__((arm_streaming)) void test_svld1_hor_za8(uint64_t tile, uint32_t 
slice_base, uint64_t slice_offset, svbool_t pg, void *ptr) {
+  svld1_hor_za8(tile, slice_base, 0, pg, ptr);          // expected-error 
{{argument to 'svld1_hor_za8' must be a constant integer}}
----------------
david-arm wrote:
> Once you've added the immediate range checks for the loads and stores it 
> would be good add checks here for immediates outside the range for each 
> instruction.
Done, thanks for the suggestion. I have also moved these tests into 
`clang/test/Sema/arm-sme-intrinsics/`.


================
Comment at: clang/utils/TableGen/SveEmitter.cpp:1477
+
+  OS << "#if !defined(__ARM_FEATURE_SME)\n";
+  OS << "#error \"SME support not enabled\"\n";
----------------
dmgreen wrote:
> We have been changing how the existing SVE and NEON instrinsics work a 
> little. There are some details in https://reviews.llvm.org/D131064. The short 
> version is it is best to not rely upon preprocessor macros, and instead 
> define the intrinsics so that they can be used if the right target features 
> are available. This allows us to do things like this below, even without a 
> -march that supports sme, and have them callable at runtime under the right 
> situations. We should be doing the same for SME.
> ```
> __attribute__((target("+sme")))
> void sme_func() {
>   somesmeintrinsics();
> }
> ```
I have refactored the SME intrinsics in a similar fashion. Could you confirm if 
I did it correctly?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D127910

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

Reply via email to