Add `tools/run tests` flag for SPIR-V Ir Reader.

This Cl adds a `--use-ir-reader` flag to the `tools/run tests` commands
which enables use of the new SPIR-V IR Reader in Tint.

Bug: 42250952
Change-Id: I3e595e7ae87a34c67a88617ac8095d396b82ac19
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/220395
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/tools/src/cmd/tests/main.go b/tools/src/cmd/tests/main.go
index 89544de..e4cc081 100644
--- a/tools/src/cmd/tests/main.go
+++ b/tools/src/cmd/tests/main.go
@@ -137,6 +137,7 @@
 
 	var formatList, ignore, dxcPath, fxcPath, tintPath, xcrunPath string
 	var maxTableWidth int
+	var useIrReader bool
 	numCPU := runtime.NumCPU()
 	verbose, generateExpected, generateSkip := false, false, false
 	flag.StringVar(&formatList, "format", "all", "comma separated list of formats to emit. Possible values are: all, wgsl, spvasm, msl, msl-ir, hlsl, hlsl-ir, hlsl-dxc, hlsl-dxc-ir, hlsl-fxc, hlsl-fxc-ir, glsl")
@@ -148,6 +149,7 @@
 	flag.BoolVar(&verbose, "verbose", false, "print all run tests, including rows that all pass")
 	flag.BoolVar(&generateExpected, "generate-expected", false, "create or update all expected outputs")
 	flag.BoolVar(&generateSkip, "generate-skip", false, "create or update all expected outputs that fail with SKIP")
+	flag.BoolVar(&useIrReader, "use-ir-reader", false, "force use of IR SPIR-V Reader")
 	flag.IntVar(&numCPU, "j", numCPU, "maximum number of concurrent threads to run tests")
 	flag.IntVar(&maxTableWidth, "table-width", terminalWidth, "maximum width of the results table")
 	flag.Usage = showUsage
@@ -324,6 +326,7 @@
 		generateExpected: generateExpected,
 		generateSkip:     generateSkip,
 		validationCache:  validationCache,
+		useIrReader:      useIrReader,
 	}
 	for cpu := 0; cpu < numCPU; cpu++ {
 		go func() {
@@ -662,6 +665,7 @@
 	generateExpected bool
 	generateSkip     bool
 	validationCache  validationCache
+	useIrReader      bool
 }
 
 // Skips the path portion of FXC warning/error strings, matching the rest.
@@ -729,6 +733,10 @@
 			args = append(args, "--use-ir")
 		}
 
+		if cfg.useIrReader {
+			args = append(args, "--use-ir-reader")
+		}
+
 		// Append any skip-hashes, if they're found.
 		if j.format != "wgsl" { // Don't skip 'wgsl' as this 'toolchain' is ever changing.
 			if skipHashes := cfg.validationCache.knownGood[fileAndFormat{j.file, j.format}]; len(skipHashes) > 0 {