Update LLVM 16 scripts

The CL is for the most part changing '10' to '16'.

Extra changes:
* Add `/cmake/` to `.git/info/sparce-checkout`.
  See https://github.com/llvm/llvm-project/issues/53281
* Turn OFF `LLVM_INCLUDE_BENCHMARKS` and
  `LLVM_INCLUDE_TESTS`.
* Copy generated files from additional directories:
  - include/llvm/TargetParser
  - include/llvm/Frontend
  - lib/ExecutionEngine

Bug: b/272710814

Change-Id: I5e18df6ba54ade60fd0e0c13069749342af99a0e
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/70950
Commit-Queue: Jean-Fran├žois Geyelin <jif@google.com>
Reviewed-by: Geoff Lang <geofflang@google.com>
Tested-by: Jean-Fran├žois Geyelin <jif@google.com>
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.