MCPcopy Create free account
hub / github.com/KhronosGroup/SPIRV-Tools / Apply

Method Apply

source/fuzz/fuzzer_pass_expand_vector_reductions.cpp:32–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30 transformations, ignore_inapplicable_transformations) {}
31
32void FuzzerPassExpandVectorReductions::Apply() {
33 for (auto& function : *GetIRContext()->module()) {
34 for (auto& block : function) {
35 for (auto& instruction : block) {
36 // Randomly decides whether the transformation will be applied.
37 if (!GetFuzzerContext()->ChoosePercentage(
38 GetFuzzerContext()->GetChanceOfExpandingVectorReduction())) {
39 continue;
40 }
41
42 // |instruction| must be OpAny or OpAll.
43 if (instruction.opcode() != spv::Op::OpAny &&
44 instruction.opcode() != spv::Op::OpAll) {
45 continue;
46 }
47
48 // It must be able to make a synonym of |instruction|.
49 if (!fuzzerutil::CanMakeSynonymOf(
50 GetIRContext(), *GetTransformationContext(), instruction)) {
51 continue;
52 }
53
54 // Applies the expand vector reduction transformation.
55 ApplyTransformation(TransformationExpandVectorReduction(
56 instruction.result_id(),
57 GetFuzzerContext()->GetFreshIds(
58 TransformationExpandVectorReduction::GetRequiredFreshIdCount(
59 GetIRContext(), &instruction))));
60 }
61 }
62 }
63}
64
65} // namespace fuzz
66} // namespace spvtools

Callers

nothing calls this directly

Calls 8

CanMakeSynonymOfFunction · 0.85
ChoosePercentageMethod · 0.80
moduleMethod · 0.45
opcodeMethod · 0.45
result_idMethod · 0.45
GetFreshIdsMethod · 0.45

Tested by

no test coverage detected