|
|
|
@ -598,9 +598,26 @@ private: |
|
|
|
Node Conditional(Node condition, std::vector<Node>&& code); |
|
|
|
/// Creates a commentary |
|
|
|
Node Comment(const std::string& text); |
|
|
|
|
|
|
|
/// Creates an u32 immediate |
|
|
|
Node Immediate(u32 value); |
|
|
|
/// Creates a s32 immediate |
|
|
|
Node Immediate(s32 value) { |
|
|
|
return Immediate(static_cast<u32>(value)); |
|
|
|
} |
|
|
|
/// Creates a f32 immediate |
|
|
|
Node Immediate(f32 value) { |
|
|
|
// TODO(Rodrigo): Replace this with bit_cast when C++20 releases |
|
|
|
return Immediate(*reinterpret_cast<const u32*>(&value)); |
|
|
|
} |
|
|
|
|
|
|
|
/// Generates a node representing a 19-bit immediate value |
|
|
|
Node GetImmediate19(Tegra::Shader::Instruction instr); |
|
|
|
/// Generates a node representing a 32-bit immediate value |
|
|
|
Node GetImmediate32(Tegra::Shader::Instruction instr); |
|
|
|
/// Generates a node for a passed predicate. It can be optionally negated |
|
|
|
Node GetPredicate(u64 pred, bool negated = false); |
|
|
|
/// Generates a predicate node for an immediate true or false value |
|
|
|
Node GetPredicate(bool immediate); |
|
|
|
|
|
|
|
template <typename... T> |
|
|
|
inline Node Operation(OperationCode code, const T*... operands) { |
|
|
|
|