summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend/ir/flow_test.h
blob: 09e113773d26151cb3d43a0eff3f34fa9a5b67d7 (plain) (blame)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright 2021 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.

#pragma once

#include <string>
#include <fmt/format.h>

#include "common/common_types.h"

namespace Shader::IR {

enum class FlowTest : u64 {
    F,
    LT,
    EQ,
    LE,
    GT,
    NE,
    GE,
    NUM,
    NaN,
    LTU,
    EQU,
    LEU,
    GTU,
    NEU,
    GEU,
    T,
    OFF,
    LO,
    SFF,
    LS,
    HI,
    SFT,
    HS,
    OFT,
    CSM_TA,
    CSM_TR,
    CSM_MX,
    FCSM_TA,
    FCSM_TR,
    FCSM_MX,
    RLE,
    RGT,
};

[[nodiscard]] std::string NameOf(FlowTest flow_test);

} // namespace Shader::IR

template <>
struct fmt::formatter<Shader::IR::FlowTest> {
    constexpr auto parse(format_parse_context& ctx) {
        return ctx.begin();
    }
    template <typename FormatContext>
    auto format(const Shader::IR::FlowTest& flow_test, FormatContext& ctx) {
        return fmt::format_to(ctx.out(), "{}", Shader::IR::NameOf(flow_test));
    }
};