diff --git a/third_party/llvm-16.0/scripts/update.py b/third_party/llvm-16.0/scripts/update.py
index f6cf4bf..c646ee8 100644
--- a/third_party/llvm-16.0/scripts/update.py
+++ b/third_party/llvm-16.0/scripts/update.py
@@ -26,15 +26,15 @@
 import tempfile
 from os import path
 
-# LLVM_BRANCH must match the value of the same variable in third_party/update-llvm-10.sh
-LLVM_BRANCH = "release/10.x"
+# LLVM_BRANCH must match the value of the same variable in third_party/update-llvm-16.sh
+LLVM_BRANCH = "release/16.x"
 
-# LLVM_COMMIT must be set to the commit hash that we last updated to when running third_party/update-llvm-10.sh.
-# Run 'git show -s origin/llvm10-clean' and look for 'llvm-10-update: <hash>' to retrieve it.
-LLVM_COMMIT = "d32170dbd5b0d54436537b6b75beaf44324e0c28"
+# LLVM_COMMIT must be set to the commit hash that we last updated to when running third_party/update-llvm-16.sh.
+# Run 'git show -s origin/llvm16-clean' and look for 'llvm-16-update: <hash>' to retrieve it.
+LLVM_COMMIT = "fce3e75e01babe38576b1519dab5f752955525f9"
 
 SCRIPT_DIR = path.dirname(path.realpath(sys.argv[0]))
-LLVM_STAGING_DIR = path.abspath(path.join(tempfile.gettempdir(), "llvm-10"))
+LLVM_STAGING_DIR = path.abspath(path.join(tempfile.gettempdir(), "llvm-16"))
 LLVM_DIR = path.abspath(path.join(LLVM_STAGING_DIR, "llvm"))
 LLVM_OBJS = path.join(LLVM_STAGING_DIR, "build")
 LLVM_CONFIGS = path.abspath(path.join(SCRIPT_DIR, '..', 'configs'))
@@ -117,6 +117,8 @@
     '-DLLVM_ENABLE_LIBEDIT=OFF',
     '-DLLVM_ENABLE_LIBPFM=OFF',
     '-DLLVM_ENABLE_ZLIB=OFF',
+    '-DLLVM_INCLUDE_BENCHMARKS=OFF',
+    '-DLLVM_INCLUDE_TESTS=OFF',
     '-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON'
 ]
 
@@ -193,9 +195,11 @@
                 'git remote add origin https://github.com/llvm/llvm-project.git', 2)
             run_command('git config core.sparsecheckout true', 2)
             run_command('echo /llvm > .git/info/sparse-checkout', 2)
+            run_command('echo /cmake >> .git/info/sparse-checkout', 2)
 
     with pushd(LLVM_STAGING_DIR):
         run_command('echo /llvm > .git/info/sparse-checkout', 2)
+        run_command('echo /cmake >> .git/info/sparse-checkout', 2)
         run_command('git fetch origin {}'.format(LLVM_BRANCH), 2)
         run_command('git checkout {}'.format(LLVM_COMMIT), 2)
     return
@@ -244,7 +248,10 @@
     subdirs = [
         path.join('include', 'llvm', 'IR'),
         path.join('include', 'llvm', 'Support'),
+        path.join('include', 'llvm', 'TargetParser'),
+        path.join('include', 'llvm', 'Frontend'),
         path.join('lib', 'IR'),
+        path.join('lib', 'ExecutionEngine'),
         path.join('lib', 'Transforms', 'InstCombine'),
     ] + [path.join('lib', 'Target', arch) for arch, defs in LLVM_TARGETS]
     for subdir in subdirs:
diff --git a/third_party/update-llvm-16.sh b/third_party/update-llvm-16.sh
index 1823778..6f906c2 100755
--- a/third_party/update-llvm-16.sh
+++ b/third_party/update-llvm-16.sh
@@ -5,20 +5,20 @@
 # SwiftShader only requires the llvm project from this repo, and does not wish
 # to pull in everything else.
 # This script performs the following:
-# * The llvm10-clean branch is fetched and checked out.
+# * The llvm16-clean branch is fetched and checked out.
 # * A sparse checkout of the llvm project is made to a temporary directory.
-# * The third_party/llvm-10.0/llvm is replaced with the latest LLVM version.
+# * The third_party/llvm-16.0/llvm is replaced with the latest LLVM version.
 # * This is committed and pushed.
-# * The original branch is checked out again, and a merge from llvm10-clean to
+# * The original branch is checked out again, and a merge from llvm16-clean to
 #   the original branch is made.
 
 THIRD_PARTY_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )"
-STAGING_DIR="/tmp/llvm-10-update"
-CLEAN_BRANCH="llvm10-clean"
+STAGING_DIR="/tmp/llvm-16-update"
+CLEAN_BRANCH="llvm16-clean"
 SOURCE_DIR="${STAGING_DIR}/llvm"
-TARGET_DIR="${THIRD_PARTY_DIR}/llvm-10.0/llvm"
-LLVM_REPO_BRANCH="release/10.x"
-BUG_NUMBER="b/152339534"
+TARGET_DIR="${THIRD_PARTY_DIR}/llvm-16.0/llvm"
+LLVM_REPO_BRANCH="release/16.x"
+BUG_NUMBER="b/272710814"
 
 SWIFTSHADER_HEAD=`git rev-parse HEAD`
 
@@ -46,10 +46,10 @@
 
 if [[ -d "$TARGET_DIR" ]]; then
   # Look for the last update change.
-  LAST_TARGET_UPDATE=`git log --grep="^llvm-10-update: [0-9a-f]\{9\}$" -n 1 --pretty=format:'%h' ${TARGET_DIR}`
+  LAST_TARGET_UPDATE=`git log --grep="^llvm-16-update: [0-9a-f]\{9\}$" -n 1 --pretty=format:'%h' ${TARGET_DIR}`
   if [[ ! -z "$LAST_TARGET_UPDATE" ]]; then
     # Get the LLVM commit hash from the update change.
-    LAST_SOURCE_UPDATE=`git log $LAST_TARGET_UPDATE -n 1 | grep -oP "llvm-10-update: \K([0-9a-f]{9})"`
+    LAST_SOURCE_UPDATE=`git log $LAST_TARGET_UPDATE -n 1 | grep -oP "llvm-16-update: \K([0-9a-f]{9})"`
     if [ $LLVM_HEAD == $LAST_SOURCE_UPDATE ]; then
       echo "No new LLVM changes to apply"
       exit 0
@@ -63,9 +63,9 @@
   fi
 fi
 
-COMMIT_MSG=`echo -e "Update LLVM 10 to ${LLVM_HEAD}\n\n${LLVM_CHANGE_LOG}Commands:\n  third_party/update-llvm-10.sh\n\nllvm-10-update: ${LLVM_HEAD}\nBug: ${BUG_NUMBER}"`
+COMMIT_MSG=`echo -e "Update LLVM 16 to ${LLVM_HEAD}\n\n${LLVM_CHANGE_LOG}Commands:\n  third_party/update-llvm-16.sh\n\nllvm-16-update: ${LLVM_HEAD}\nBug: ${BUG_NUMBER}"`
 
-# Switch to the llvm-10-clean branch.
+# Switch to the llvm-16-clean branch.
 git fetch "https://swiftshader.googlesource.com/SwiftShader" $CLEAN_BRANCH
 git checkout FETCH_HEAD
 
@@ -79,7 +79,7 @@
 git commit -m "$COMMIT_MSG"
 MERGE_SOURCE=`git log HEAD -n 1 --pretty=format:'%h'`
 
-# Push llvm-10-clean branch.
+# Push llvm-16-clean branch.
 git push "https://swiftshader.googlesource.com/SwiftShader" $CLEAN_BRANCH
 
 # Switch to the branch in use when calling the script.
