dan sinclair | 367fad8 | 2023-06-19 12:58:53 +0000 | [diff] [blame] | 1 | // Copyright 2023 The Tint Authors. |
| 2 | // |
| 3 | // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | // you may not use this file except in compliance with the License. |
| 5 | // You may obtain a copy of the License at |
| 6 | // |
| 7 | // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | // |
| 9 | // Unless required by applicable law or agreed to in writing, software |
| 10 | // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | // See the License for the specific language governing permissions and |
| 13 | // limitations under the License. |
| 14 | |
dan sinclair | 97c3727 | 2023-07-24 17:11:53 +0000 | [diff] [blame] | 15 | #include "src/tint/lang/core/ir/instruction_result.h" |
dan sinclair | 367fad8 | 2023-06-19 12:58:53 +0000 | [diff] [blame] | 16 | |
dan sinclair | 16cb4bd | 2023-09-21 08:52:11 +0000 | [diff] [blame] | 17 | #include "src/tint/lang/core/ir/clone_context.h" |
dan sinclair | 97c3727 | 2023-07-24 17:11:53 +0000 | [diff] [blame] | 18 | #include "src/tint/lang/core/ir/constant.h" |
| 19 | #include "src/tint/lang/core/ir/instruction.h" |
dan sinclair | 16cb4bd | 2023-09-21 08:52:11 +0000 | [diff] [blame] | 20 | #include "src/tint/lang/core/ir/module.h" |
Ben Clayton | f848af2 | 2023-07-28 16:37:32 +0000 | [diff] [blame] | 21 | #include "src/tint/utils/ice/ice.h" |
dan sinclair | 367fad8 | 2023-06-19 12:58:53 +0000 | [diff] [blame] | 22 | |
dan sinclair | 6f138fe | 2023-08-15 21:29:34 +0000 | [diff] [blame] | 23 | TINT_INSTANTIATE_TYPEINFO(tint::core::ir::InstructionResult); |
dan sinclair | 367fad8 | 2023-06-19 12:58:53 +0000 | [diff] [blame] | 24 | |
dan sinclair | 6f138fe | 2023-08-15 21:29:34 +0000 | [diff] [blame] | 25 | namespace tint::core::ir { |
dan sinclair | 367fad8 | 2023-06-19 12:58:53 +0000 | [diff] [blame] | 26 | |
dan sinclair | cedcdf3 | 2023-08-10 02:39:48 +0000 | [diff] [blame] | 27 | InstructionResult::InstructionResult(const core::type::Type* type) : type_(type) { |
Ben Clayton | f848af2 | 2023-07-28 16:37:32 +0000 | [diff] [blame] | 28 | TINT_ASSERT(type_ != nullptr); |
dan sinclair | 0d80c3d | 2023-06-19 13:32:03 +0000 | [diff] [blame] | 29 | } |
dan sinclair | 367fad8 | 2023-06-19 12:58:53 +0000 | [diff] [blame] | 30 | |
| 31 | InstructionResult::~InstructionResult() = default; |
| 32 | |
Ben Clayton | ab0cbed | 2023-06-19 18:45:19 +0000 | [diff] [blame] | 33 | void InstructionResult::Destroy() { |
Ben Clayton | f848af2 | 2023-07-28 16:37:32 +0000 | [diff] [blame] | 34 | TINT_ASSERT(source_ == nullptr); |
Ben Clayton | ab0cbed | 2023-06-19 18:45:19 +0000 | [diff] [blame] | 35 | Base::Destroy(); |
| 36 | } |
| 37 | |
dan sinclair | 16cb4bd | 2023-09-21 08:52:11 +0000 | [diff] [blame] | 38 | InstructionResult* InstructionResult::Clone(CloneContext& ctx) { |
| 39 | // Do not clone the `Source`. It will be set when this result is placed in the new parent |
| 40 | // instruction. |
| 41 | return ctx.ir.values.Create<InstructionResult>(type_); |
| 42 | } |
| 43 | |
dan sinclair | 6f138fe | 2023-08-15 21:29:34 +0000 | [diff] [blame] | 44 | } // namespace tint::core::ir |