blob: 88b6c82ee1b10f39a62f17c2b93e35e831b65e1f [file] [log] [blame]
Ryan Harrison0b5d1dd2021-01-12 16:23:48 +00001// Copyright 2021 The Tint Authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
Ryan Harrisonc57642c2021-09-30 18:58:32 +000015#include "fuzzers/fuzzer_init.h"
Ryan Harrisona617d0f2021-09-22 14:37:46 +000016#include "fuzzers/random_generator.h"
Ryan Harrison0b5d1dd2021-01-12 16:23:48 +000017#include "fuzzers/tint_common_fuzzer.h"
Ryan Harrisonc57642c2021-09-30 18:58:32 +000018#include "fuzzers/transform_builder.h"
Ryan Harrison0b5d1dd2021-01-12 16:23:48 +000019
20namespace tint {
21namespace fuzzers {
22
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000023extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
24 {
Ryan Harrisonc57642c2021-09-30 18:58:32 +000025 TransformBuilder tb(data, size);
26 tb.AddPlatformIndependentPasses();
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000027
28 fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kSpv);
Ryan Harrisonc57642c2021-09-30 18:58:32 +000029 fuzzer.SetTransformManager(tb.manager(), tb.data_map());
Antonio Maiorano15e89fa2021-08-05 15:52:58 +000030 fuzzer.SetDumpInput(GetCliParams().dump_input);
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000031
Ryan Harrisona617d0f2021-09-22 14:37:46 +000032 fuzzer.Run(data, size);
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000033 }
34
35#if TINT_BUILD_HLSL_WRITER
36 {
Ryan Harrisonc57642c2021-09-30 18:58:32 +000037 TransformBuilder tb(data, size);
38 tb.AddPlatformIndependentPasses();
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000039
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000040 fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kHLSL);
Ryan Harrisonc57642c2021-09-30 18:58:32 +000041 fuzzer.SetTransformManager(tb.manager(), tb.data_map());
Antonio Maiorano15e89fa2021-08-05 15:52:58 +000042 fuzzer.SetDumpInput(GetCliParams().dump_input);
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000043
Ryan Harrisona617d0f2021-09-22 14:37:46 +000044 fuzzer.Run(data, size);
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000045 }
46#endif // TINT_BUILD_HLSL_WRITER
47
Ryan Harrisonb67d0492021-04-29 20:06:25 +000048#if TINT_BUILD_MSL_WRITER
49 {
Ryan Harrisonc57642c2021-09-30 18:58:32 +000050 TransformBuilder tb(data, size);
51 tb.AddPlatformIndependentPasses();
Ryan Harrisonb67d0492021-04-29 20:06:25 +000052
Ryan Harrisonb67d0492021-04-29 20:06:25 +000053 fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kMSL);
Ryan Harrisonc57642c2021-09-30 18:58:32 +000054 fuzzer.SetTransformManager(tb.manager(), tb.data_map());
Antonio Maiorano15e89fa2021-08-05 15:52:58 +000055 fuzzer.SetDumpInput(GetCliParams().dump_input);
Ryan Harrisonb67d0492021-04-29 20:06:25 +000056
Ryan Harrisona617d0f2021-09-22 14:37:46 +000057 fuzzer.Run(data, size);
Ryan Harrisonb67d0492021-04-29 20:06:25 +000058 }
59#endif // TINT_BUILD_MSL_WRITER
Ryan Harrisonfc579792021-04-29 20:12:05 +000060#if TINT_BUILD_SPV_WRITER
61 {
Ryan Harrisonc57642c2021-09-30 18:58:32 +000062 TransformBuilder tb(data, size);
63 tb.AddPlatformIndependentPasses();
Ryan Harrisonfc579792021-04-29 20:12:05 +000064
Ryan Harrisonfc579792021-04-29 20:12:05 +000065 fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kSpv);
Ryan Harrisonc57642c2021-09-30 18:58:32 +000066 fuzzer.SetTransformManager(tb.manager(), tb.data_map());
Antonio Maiorano15e89fa2021-08-05 15:52:58 +000067 fuzzer.SetDumpInput(GetCliParams().dump_input);
Ryan Harrisonfc579792021-04-29 20:12:05 +000068
Ryan Harrisona617d0f2021-09-22 14:37:46 +000069 fuzzer.Run(data, size);
Ryan Harrisonfc579792021-04-29 20:12:05 +000070 }
71#endif // TINT_BUILD_SPV_WRITER
Ryan Harrisonb67d0492021-04-29 20:06:25 +000072
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +000073 return 0;
Ryan Harrison0b5d1dd2021-01-12 16:23:48 +000074}
75
76} // namespace fuzzers
77} // namespace tint