[llvm] e4b130f - [emacs] Handle vector types, arbitary integer types and function names (#88246)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 17 19:28:18 PDT 2024
Author: Luke Lau
Date: 2024-06-18T10:28:13+08:00
New Revision: e4b130fa00a01cad73709b782e8044e5a9535b85
URL: https://github.com/llvm/llvm-project/commit/e4b130fa00a01cad73709b782e8044e5a9535b85
DIFF: https://github.com/llvm/llvm-project/commit/e4b130fa00a01cad73709b782e8044e5a9535b85.diff
LOG: [emacs] Handle vector types, arbitary integer types and function names (#88246)
Resurrecting this patch from https://reviews.llvm.org/D158321
This adds a few more regexp patterns for llvm-mode-syntax-table. The
primitive type regexp was split out so it could be reused when handling
vectors. Also worth noting is that the vector regexp needs to come
before the primitive types, otherwise they will match first.
Added:
Modified:
llvm/utils/emacs/llvm-mode.el
Removed:
################################################################################
diff --git a/llvm/utils/emacs/llvm-mode.el b/llvm/utils/emacs/llvm-mode.el
index e7e3091678df3..4d7c425780eb8 100644
--- a/llvm/utils/emacs/llvm-mode.el
+++ b/llvm/utils/emacs/llvm-mode.el
@@ -18,6 +18,14 @@
table)
"Syntax table used while in LLVM mode.")
+(defconst llvm-mode-primitive-type-regexp
+ (concat
+ "\\(i[0-9]+\\|"
+ (regexp-opt
+ '("void" "half" "bfloat" "float" "double" "fp128" "x86_fp80" "ppc_fp128"
+ "x86_mmx" "x86_amx" "ptr" "type" "label" "opaque" "token") t)
+ "\\)"))
+
(defvar llvm-font-lock-keywords
(list
;; Attributes
@@ -34,10 +42,23 @@
'("[-a-zA-Z$._0-9]+:" . font-lock-variable-name-face)
;; Unnamed variable slots
'("%[-]?[0-9]+" . font-lock-variable-name-face)
- ;; Types
- `(,(regexp-opt
- '("void" "i1" "i8" "i16" "i32" "i64" "i128" "half" "bfloat" "float" "double" "fp128" "x86_fp80" "ppc_fp128" "x86_mmx" "x86_amx" "ptr"
- "type" "label" "opaque" "token") 'symbols) . font-lock-type-face)
+ ;; Function names
+ '("@[-a-zA-Z$._][-a-zA-Z$._0-9]*" . font-lock-function-name-face)
+ ;; Fixed vector types
+ `(,(concat "<[ \t]*\\([0-9]+\\)[ \t]*x[ \t]+"
+ llvm-mode-primitive-type-regexp
+ "[ \t]*>")
+ (1 'font-lock-type-face)
+ (2 'font-lock-type-face))
+ ;; Scalable vector types
+ `(,(concat "<[ \t]*\\(vscale[ \t]\\)+x[ \t]+\\([0-9]+\\)[ \t]*x[ \t]+"
+ llvm-mode-primitive-type-regexp
+ "[ \t]*>")
+ (1 'font-lock-keyword-face)
+ (2 'font-lock-type-face)
+ (3 'font-lock-type-face))
+ ;; Primitive types
+ `(,(concat "\\<" llvm-mode-primitive-type-regexp "\\>") . font-lock-type-face)
;; Integer literals
'("\\b[-]?[0-9]+\\b" . font-lock-preprocessor-face)
;; Floating point constants
More information about the llvm-commits
mailing list