summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-specialize.h
blob: 72f2c6130f7be011aa30d4226301ea2c8fc79bf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// slang-ir-specialize.h
#pragma once

namespace Slang
{
struct IRModule;
class DiagnosticSink;
class TargetProgram;

struct SpecializationOptions
{
    // Option that allows specializeModule to generate dynamic-dispatch code
    // wherever possible to open up more specialization opportunities.
    //
    bool lowerWitnessLookups = false;
};

/// Specialize generic and interface-based code to use concrete types.
bool specializeModule(
    TargetProgram* target,
    IRModule* module,
    DiagnosticSink* sink,
    SpecializationOptions options);

void finalizeSpecialization(IRModule* module);

} // namespace Slang