Merge pull request #16881 from gottesmm/pr-6188306c9a0a4eca1bb3e0d6656f8592fb7caf24

diff --git a/benchmark/utils/DriverUtils.swift b/benchmark/utils/DriverUtils.swift
index 68d2939..54cc3f2 100644
--- a/benchmark/utils/DriverUtils.swift
+++ b/benchmark/utils/DriverUtils.swift
@@ -93,6 +93,7 @@
   case run
   case listTests
   case fail(String)
+  case help([String])
 }
 
 struct TestConfig {
@@ -136,7 +137,7 @@
     let validOptions = [
       "--iter-scale", "--num-samples", "--num-iters",
       "--verbose", "--delim", "--list", "--sleep",
-      "--tags", "--skip-tags"
+      "--tags", "--skip-tags", "--help"
     ]
     let maybeBenchArgs: Arguments? = parseArgs(validOptions)
     if maybeBenchArgs == nil {
@@ -146,6 +147,10 @@
 
     filters = benchArgs.positionalArgs
 
+    if benchArgs.optionalArgsMap["--help"] == nil {
+      return .help(validOptions)
+    }
+
     if let x = benchArgs.optionalArgsMap["--iter-scale"] {
       if x.isEmpty { return .fail("--iter-scale requires a value") }
       iterationScale = Int(x)!
@@ -478,6 +483,11 @@
   var config = TestConfig()
 
   switch (config.processArguments()) {
+    case let .help(validOptions):
+      print("Valid options:")
+      for v in validOptions {
+        print("    \(v)")
+      }
     case let .fail(msg):
       // We do this since we need an autoclosure...
       fatalError("\(msg)")