summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/frontend/maxwell/indirect_branch_table_track.h
blob: 2a23f7abfd719284aacd8f862e4e0756c9b7eb66 (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
// Copyright 2021 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.

#pragma once

#include <optional>

#include "common/common_types.h"
#include "shader_recompiler/environment.h"
#include "shader_recompiler/frontend/ir/reg.h"
#include "shader_recompiler/frontend/maxwell/location.h"

namespace Shader::Maxwell {

struct IndirectBranchTableInfo {
    u32 cbuf_index{};
    u32 cbuf_offset{};
    u32 num_entries{};
    s32 branch_offset{};
    IR::Reg branch_reg{};
};

std::optional<IndirectBranchTableInfo> TrackIndirectBranchTable(Environment& env, Location brx_pos,
                                                                Location block_begin);

} // namespace Shader::Maxwell