Skip to content

Commit

Permalink
[emacs] Handle vector types, arbitary integer types and function names (
Browse files Browse the repository at this point in the history
#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.
  • Loading branch information
lukel97 authored Jun 18, 2024
1 parent 117921e commit e4b130f
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions llvm/utils/emacs/llvm-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit e4b130f

Please sign in to comment.