diff --git a/llvm/utils/emacs/tablegen-mode.el b/llvm/utils/emacs/tablegen-mode.el
--- a/llvm/utils/emacs/tablegen-mode.el
+++ b/llvm/utils/emacs/tablegen-mode.el
@@ -18,7 +18,8 @@
(defvar tablegen-font-lock-keywords
(let ((kw (regexp-opt '("class" "defm" "def" "field" "include" "in"
- "let" "multiclass" "foreach")
+ "let" "multiclass" "foreach" "if" "then" "else"
+ "defvar" "defset")
'words))
(type-kw (regexp-opt '("bit" "bits" "code" "dag" "int" "list" "string")
'words))
diff --git a/llvm/utils/kate/llvm-tablegen.xml b/llvm/utils/kate/llvm-tablegen.xml
--- a/llvm/utils/kate/llvm-tablegen.xml
+++ b/llvm/utils/kate/llvm-tablegen.xml
@@ -5,6 +5,9 @@
- foreach
- field
+ - if
+ - then
+ - else
- in
@@ -45,6 +48,7 @@
- defm
- defset
- let
+ - defvar
- multiclass
diff --git a/llvm/utils/vim/syntax/tablegen.vim b/llvm/utils/vim/syntax/tablegen.vim
--- a/llvm/utils/vim/syntax/tablegen.vim
+++ b/llvm/utils/vim/syntax/tablegen.vim
@@ -14,7 +14,7 @@
syn case match
-syn keyword tgKeyword def let in code dag field include defm foreach
+syn keyword tgKeyword def let in code dag field include defm foreach defset defvar if then else
syn keyword tgType class int string list bit bits multiclass
syn match tgNumber /\<\d\+\>/
diff --git a/llvm/utils/vscode/tablegen/syntaxes/TableGen.tmLanguage b/llvm/utils/vscode/tablegen/syntaxes/TableGen.tmLanguage
--- a/llvm/utils/vscode/tablegen/syntaxes/TableGen.tmLanguage
+++ b/llvm/utils/vscode/tablegen/syntaxes/TableGen.tmLanguage
@@ -18,7 +18,7 @@
match
- \b(def|let|in|code|dag|string|list|bits|bit|field|include|defm|foreach|class|multiclass|int)\b
+ \b(def|let|in|code|dag|string|list|bits|bit|field|include|defm|foreach|class|multiclass|int|defvar|defset|if|then|else)\b
name
keyword.control.tablegen