chromium/third_party/dawn/src/tint/lang/wgsl/ir_roundtrip_test.cc

// Copyright 2023 The Dawn & Tint Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// GEN_BUILD:CONDITION(tint_build_wgsl_reader && tint_build_wgsl_writer)

#include "gtest/gtest.h"

#include "src/tint/lang/core/ir/disassembler.h"
#include "src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.h"
#include "src/tint/lang/wgsl/reader/reader.h"
#include "src/tint/lang/wgsl/writer/ir_to_program/ir_to_program.h"
#include "src/tint/lang/wgsl/writer/raise/raise.h"
#include "src/tint/lang/wgsl/writer/writer.h"
#include "src/tint/utils/text/string.h"

namespace tint::wgsl {
namespace {

usingnamespacetint::core::number_suffixes;  // NOLINT

class IRToProgramRoundtripTest : public testing::Test {};

std::ostream& operator<<(std::ostream& o, const IRToProgramRoundtripTest::Result& res) {}

#define RUN_TEST(...)

TEST_F(IRToProgramRoundtripTest, EmptyModule) {}

TEST_F(IRToProgramRoundtripTest, SingleFunction_Empty) {}

TEST_F(IRToProgramRoundtripTest, SingleFunction_Return) {}

TEST_F(IRToProgramRoundtripTest, SingleFunction_Return_i32) {}

TEST_F(IRToProgramRoundtripTest, SingleFunction_Parameters) {}

TEST_F(IRToProgramRoundtripTest, SingleFunction_UnrestrictedPointerParameters) {}

////////////////////////////////////////////////////////////////////////////////
// Struct declaration
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, StructDecl_Scalars) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberAlign) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberSize) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberLocation) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberIndex) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberBuiltin) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberInterpolateType) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberInterpolateTypeSampling) {}

TEST_F(IRToProgramRoundtripTest, StructDecl_MemberInvariant) {}

////////////////////////////////////////////////////////////////////////////////
// Function Call
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, FnCall_NoArgs_NoRet) {}

TEST_F(IRToProgramRoundtripTest, FnCall_NoArgs_Ret_i32) {}

TEST_F(IRToProgramRoundtripTest, FnCall_3Args_NoRet) {}

TEST_F(IRToProgramRoundtripTest, FnCall_3Args_Ret_f32) {}

TEST_F(IRToProgramRoundtripTest, FnCall_PtrArgs) {}

////////////////////////////////////////////////////////////////////////////////
// Core Builtin Call
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, CoreBuiltinCall_Stmt) {}

TEST_F(IRToProgramRoundtripTest, CoreBuiltinCall_Expr) {}

TEST_F(IRToProgramRoundtripTest, CoreBuiltinCall_PhonyAssignment) {}

TEST_F(IRToProgramRoundtripTest, CoreBuiltinCall_UnusedLet) {}

TEST_F(IRToProgramRoundtripTest, CoreBuiltinCall_PtrArg) {}

TEST_F(IRToProgramRoundtripTest, CoreBuiltinCall_DisableDerivativeUniformity) {}

////////////////////////////////////////////////////////////////////////////////
// Type Construct
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, TypeConstruct_i32) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_u32) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_f32) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_bool) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_struct) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_array) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_vec3i_Splat) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_vec3i_Scalars) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_mat2x3f_Scalars) {}

TEST_F(IRToProgramRoundtripTest, TypeConstruct_mat2x3f_Columns) {}

////////////////////////////////////////////////////////////////////////////////
// Type Convert
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, TypeConvert_i32_to_u32) {}

TEST_F(IRToProgramRoundtripTest, TypeConvert_u32_to_f32) {}

TEST_F(IRToProgramRoundtripTest, TypeConvert_f32_to_i32) {}

TEST_F(IRToProgramRoundtripTest, TypeConvert_bool_to_u32) {}

TEST_F(IRToProgramRoundtripTest, TypeConvert_vec3i_to_vec3u) {}

TEST_F(IRToProgramRoundtripTest, TypeConvert_vec3u_to_vec3f) {}

TEST_F(IRToProgramRoundtripTest, TypeConvert_mat2x3f_to_mat2x3h) {}

////////////////////////////////////////////////////////////////////////////////
// Bitcast
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Bitcast_i32_to_u32) {}

TEST_F(IRToProgramRoundtripTest, Bitcast_u32_to_f32) {}

TEST_F(IRToProgramRoundtripTest, Bitcast_f32_to_i32) {}

////////////////////////////////////////////////////////////////////////////////
// Discard
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Discard) {}

////////////////////////////////////////////////////////////////////////////////
// Access
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Access_Value_vec3f_1) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_vec3f_1) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_vec3f_z) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_vec3f_z) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_vec3f_g) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_vec3f_g) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_vec3f_i) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_vec3f_i) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_mat3x2f_1_0) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_mat3x2f_1_0) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_mat3x2f_u_0) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_mat3x2f_u_0) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_mat3x2f_u_i) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_mat3x2f_u_i) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_array_0u) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_array_0u) {}

TEST_F(IRToProgramRoundtripTest, Access_Value_array_i) {}

TEST_F(IRToProgramRoundtripTest, Access_Ref_array_i) {}

TEST_F(IRToProgramRoundtripTest, Access_ValueStruct) {}

TEST_F(IRToProgramRoundtripTest, Access_ReferenceStruct) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfArrayOfArray_123) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfArrayOfArray_213) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfArrayOfArray_312) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfArrayOfArray_321) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfMat3x4f_123) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfMat3x4f_213) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfMat3x4f_312) {}

TEST_F(IRToProgramRoundtripTest, Access_ArrayOfMat3x4f_321) {}

TEST_F(IRToProgramRoundtripTest, Access_UsePartialChains) {}

////////////////////////////////////////////////////////////////////////////////
// Swizzle
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Access_Vec3_Value_xy) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Value_yz) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Value_yzx) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Value_yzxy) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Pointer_xy) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Pointer_yz) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Pointer_yzx) {}

TEST_F(IRToProgramRoundtripTest, Access_Vec3_Pointer_yzxy) {}

////////////////////////////////////////////////////////////////////////////////
// Unary ops
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, UnaryOp_Negate) {}

TEST_F(IRToProgramRoundtripTest, UnaryOp_Complement) {}

TEST_F(IRToProgramRoundtripTest, UnaryOp_Not) {}

////////////////////////////////////////////////////////////////////////////////
// Binary ops
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, BinaryOp_Add) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Subtract) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Multiply) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Divide) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Modulo) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_And) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Or) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Xor) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_Equal) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_NotEqual) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_LessThan) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_GreaterThan) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_LessThanEqual) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_GreaterThanEqual) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_ShiftLeft) {}

TEST_F(IRToProgramRoundtripTest, BinaryOp_ShiftRight) {}

////////////////////////////////////////////////////////////////////////////////
// Short-circuiting binary ops
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Param_2) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Param_3_ab_c) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Param_3_a_bc) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Let_2) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Let_3_ab_c) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Let_3_a_bc) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Call_2) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Call_3_ab_c) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_And_Call_3_a_bc) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Param_2) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Param_3_ab_c) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Param_3_a_bc) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Let_2) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Let_3_ab_c) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Let_3_a_bc) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Call_2) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Call_3_ab_c) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Or_Call_3_a_bc) {}

TEST_F(IRToProgramRoundtripTest, ShortCircuit_Mixed) {}

////////////////////////////////////////////////////////////////////////////////
// Assignment
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Assign_ArrayOfArrayOfArrayAccess_123456) {}

TEST_F(IRToProgramRoundtripTest, Assign_ArrayOfArrayOfArrayAccess_261345) {}

TEST_F(IRToProgramRoundtripTest, Assign_ArrayOfArrayOfArrayAccess_532614) {}

TEST_F(IRToProgramRoundtripTest, Assign_ArrayOfMatrixAccess_123456) {}

TEST_F(IRToProgramRoundtripTest, Assign_ArrayOfMatrixAccess_261345) {}

TEST_F(IRToProgramRoundtripTest, Assign_ArrayOfMatrixAccess_532614) {}

////////////////////////////////////////////////////////////////////////////////
// Compound assignment
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, CompoundAssign_Increment) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_Decrement) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_Add) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_Subtract) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_Multiply) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_Divide) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_Xor) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_ArrayOfArrayOfArrayAccess_123456) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_ArrayOfArrayOfArrayAccess_261345) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_ArrayOfArrayOfArrayAccess_532614) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_ArrayOfMatrixAccess_123456) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_ArrayOfMatrixAccess_261345) {}

TEST_F(IRToProgramRoundtripTest, CompoundAssign_ArrayOfMatrixAccess_532614) {}

////////////////////////////////////////////////////////////////////////////////
// Phony Assignment
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, PhonyAssign_PrivateVar) {}

TEST_F(IRToProgramRoundtripTest, PhonyAssign_FunctionVar) {}

TEST_F(IRToProgramRoundtripTest, PhonyAssign_FunctionLet) {}

TEST_F(IRToProgramRoundtripTest, PhonyAssign_HandleVar) {}

TEST_F(IRToProgramRoundtripTest, PhonyAssign_Constant) {}

TEST_F(IRToProgramRoundtripTest, PhonyAssign_Call) {}

TEST_F(IRToProgramRoundtripTest, PhonyAssign_Conversion) {}

////////////////////////////////////////////////////////////////////////////////
// let
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, LetUsedOnce) {}

TEST_F(IRToProgramRoundtripTest, LetUsedTwice) {}

////////////////////////////////////////////////////////////////////////////////
// Module-scope var
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_i32) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_u32) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_f32) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_f16) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_bool) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_array_NoArgs) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_array_Zero) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_array_SameValue) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_array_DifferentValues) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_struct_NoArgs) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_struct_Zero) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_struct_SameValue) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_struct_DifferentValues) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_vec3f_NoArgs) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_vec3f_Zero) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_vec3f_Splat) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_vec3f_Scalars) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_mat2x3f_NoArgs) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_mat2x3f_Scalars_SameValue) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_mat2x3f_Scalars) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_mat2x3f_Columns) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Private_mat2x3f_Columns_SameValue) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Uniform_vec4i) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_StorageRead_u32) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_StorageReadWrite_i32) {}
TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Handle_Texture2D) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Handle_Sampler) {}

TEST_F(IRToProgramRoundtripTest, ModuleScopeVar_Handle_SamplerCmp) {}

////////////////////////////////////////////////////////////////////////////////
// Function-scope var
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, FunctionScopeVar_i32) {}

TEST_F(IRToProgramRoundtripTest, FunctionScopeVar_i32_InitLiteral) {}

TEST_F(IRToProgramRoundtripTest, FunctionScopeVar_Chained) {}

////////////////////////////////////////////////////////////////////////////////
// Function-scope let
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, FunctionScopeLet_i32) {}

TEST_F(IRToProgramRoundtripTest, FunctionScopeLet_ptr) {}

TEST_F(IRToProgramRoundtripTest, FunctionScopeLet_NoConstEvalError) {}

////////////////////////////////////////////////////////////////////////////////
// If
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, If_CallFn) {}

TEST_F(IRToProgramRoundtripTest, If_Return) {}

TEST_F(IRToProgramRoundtripTest, If_Return_i32) {}

TEST_F(IRToProgramRoundtripTest, If_CallFn_Else_CallFn) {}

TEST_F(IRToProgramRoundtripTest, If_Return_f32_Else_Return_f32) {}

TEST_F(IRToProgramRoundtripTest, If_Return_u32_Else_CallFn) {}

TEST_F(IRToProgramRoundtripTest, If_CallFn_ElseIf_CallFn) {}

TEST_F(IRToProgramRoundtripTest, If_Else_Chain) {}

////////////////////////////////////////////////////////////////////////////////
// Switch
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Switch_Default) {}

TEST_F(IRToProgramRoundtripTest, Switch_3_Cases) {}

TEST_F(IRToProgramRoundtripTest, Switch_3_Cases_AllReturn) {}

TEST_F(IRToProgramRoundtripTest, Switch_Nested) {}

////////////////////////////////////////////////////////////////////////////////
// For
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, For_Empty) {}

TEST_F(IRToProgramRoundtripTest, For_Empty_NoInit) {}

TEST_F(IRToProgramRoundtripTest, For_Empty_NoCond) {}

TEST_F(IRToProgramRoundtripTest, For_Empty_NoCont) {}

TEST_F(IRToProgramRoundtripTest, For_ComplexBody) {}

TEST_F(IRToProgramRoundtripTest, For_ComplexBody_NoInit) {}

TEST_F(IRToProgramRoundtripTest, For_ComplexBody_NoCond) {}

TEST_F(IRToProgramRoundtripTest, For_ComplexBody_NoCont) {}

TEST_F(IRToProgramRoundtripTest, For_CallInInitCondCont) {}

TEST_F(IRToProgramRoundtripTest, For_AssignAsInit) {}

TEST_F(IRToProgramRoundtripTest, For_CompoundAssignAsInit) {}

TEST_F(IRToProgramRoundtripTest, For_IncrementAsInit) {}

TEST_F(IRToProgramRoundtripTest, For_DecrementAsInit) {}

TEST_F(IRToProgramRoundtripTest, For_CallAsInit) {}

////////////////////////////////////////////////////////////////////////////////
// While
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, While_Empty) {}

TEST_F(IRToProgramRoundtripTest, While_Cond) {}

TEST_F(IRToProgramRoundtripTest, While_Break) {}

TEST_F(IRToProgramRoundtripTest, While_IfBreak) {}

TEST_F(IRToProgramRoundtripTest, While_IfReturn) {}

// Test case for crbug.com/351700183.
TEST_F(IRToProgramRoundtripTest, While_ConditionAndBreak) {}

////////////////////////////////////////////////////////////////////////////////
// Loop
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Loop_Break) {}

TEST_F(IRToProgramRoundtripTest, Loop_IfBreak) {}

TEST_F(IRToProgramRoundtripTest, Loop_IfReturn) {}

TEST_F(IRToProgramRoundtripTest, Loop_IfContinuing) {}

TEST_F(IRToProgramRoundtripTest, Loop_VarsDeclaredOutsideAndInside) {}

TEST_F(IRToProgramRoundtripTest, Loop_BreakIf_EmptyBody) {}

TEST_F(IRToProgramRoundtripTest, Loop_BreakIf_NotFalse) {}

TEST_F(IRToProgramRoundtripTest, Loop_BreakIf_NotTrue) {}

TEST_F(IRToProgramRoundtripTest, Loop_WithReturn) {}

////////////////////////////////////////////////////////////////////////////////
// Shadowing tests
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Shadow_f32_With_Fn) {}

TEST_F(IRToProgramRoundtripTest, Shadow_f32_With_Struct) {}

TEST_F(IRToProgramRoundtripTest, Shadow_f32_With_ModVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_f32_With_ModVar2) {}

TEST_F(IRToProgramRoundtripTest, Shadow_f32_With_Alias) {}

TEST_F(IRToProgramRoundtripTest, Shadow_Struct_With_FnVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_Struct_With_Param) {}

TEST_F(IRToProgramRoundtripTest, Shadow_ModVar_With_FnVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_ModVar_With_FnLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_IfVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_IfLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_WhileVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_WhileLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_ForInitVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_ForInitLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_ForBodyVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_ForBodyLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_LoopBodyVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_LoopBodyLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_LoopContinuingVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_LoopContinuingLet) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_SwitchCaseVar) {}

TEST_F(IRToProgramRoundtripTest, Shadow_FnVar_With_SwitchCaseLet) {}

////////////////////////////////////////////////////////////////////////////////
// chromium_internal_input_attachments
////////////////////////////////////////////////////////////////////////////////
TEST_F(IRToProgramRoundtripTest, Call_InputAttachmentLoad) {}

TEST_F(IRToProgramRoundtripTest, WorkgroupSizeLargerThanI32) {}

TEST_F(IRToProgramRoundtripTest, BindingLargerThanI32) {}

TEST_F(IRToProgramRoundtripTest, GroupLargerThanI32) {}

TEST_F(IRToProgramRoundtripTest, LocationInputLargerThanI32) {}

TEST_F(IRToProgramRoundtripTest, LocationOutputLargerThanI32) {}

// Test that we do not try to declare or name the unnameable builtin structure types.
// See crbug.com/350518995.
TEST_F(IRToProgramRoundtripTest, BuiltinStructInLetAndVar) {}

// Test that we do not try to name the unnameable builtin structure types in array declarations.
// See crbug.com/353249345.
TEST_F(IRToProgramRoundtripTest, BuiltinStructInInferredArrayType) {}

}  // namespace
}  // namespace tint::wgsl