diff options
| author | bunnei <bunneidev@gmail.com> | 2020-07-24 06:33:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-24 06:33:09 -0700 |
| commit | f650cf8a9a4f4976356e7e2eef404e81ccc0c8aa (patch) | |
| tree | acb35a74ffe2349a7ac0c605a4c43972142bfdb2 /src/video_core/shader/decode/video.cpp | |
| parent | 1d7de0a8ee04713c5d8011f379524ff53cb8c483 (diff) | |
| parent | 6adc824d9d15b476320739788564023f995b9da0 (diff) | |
Merge pull request #4391 from lioncash/nrvo
video_core: Allow copy elision to take place where applicable
Diffstat (limited to 'src/video_core/shader/decode/video.cpp')
| -rw-r--r-- | src/video_core/shader/decode/video.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/video_core/shader/decode/video.cpp b/src/video_core/shader/decode/video.cpp index 64ba60ea2..1c0957277 100644 --- a/src/video_core/shader/decode/video.cpp +++ b/src/video_core/shader/decode/video.cpp @@ -91,29 +91,28 @@ u32 ShaderIR::DecodeVideo(NodeBlock& bb, u32 pc) { return pc; } -Node ShaderIR::GetVideoOperand(Node op, bool is_chunk, bool is_signed, - Tegra::Shader::VideoType type, u64 byte_height) { +Node ShaderIR::GetVideoOperand(Node op, bool is_chunk, bool is_signed, VideoType type, + u64 byte_height) { if (!is_chunk) { return BitfieldExtract(op, static_cast<u32>(byte_height * 8), 8); } - const Node zero = Immediate(0); switch (type) { - case Tegra::Shader::VideoType::Size16_Low: + case VideoType::Size16_Low: return BitfieldExtract(op, 0, 16); - case Tegra::Shader::VideoType::Size16_High: + case VideoType::Size16_High: return BitfieldExtract(op, 16, 16); - case Tegra::Shader::VideoType::Size32: + case VideoType::Size32: // TODO(Rodrigo): From my hardware tests it becomes a bit "mad" when this type is used // (1 * 1 + 0 == 0x5b800000). Until a better explanation is found: abort. UNIMPLEMENTED(); - return zero; - case Tegra::Shader::VideoType::Invalid: + return Immediate(0); + case VideoType::Invalid: UNREACHABLE_MSG("Invalid instruction encoding"); - return zero; + return Immediate(0); default: UNREACHABLE(); - return zero; + return Immediate(0); } } |
