#include "src/tint/lang/core/ir/transform/direct_variable_access.h"
#include <utility>
#include "src/tint/lang/core/ir/transform/helper_test.h"
#include "src/tint/lang/core/type/array.h"
#include "src/tint/lang/core/type/matrix.h"
#include "src/tint/lang/core/type/pointer.h"
#include "src/tint/lang/core/type/struct.h"
namespace tint::core::ir::transform {
namespace {
usingnamespacetint::core::fluent_types;
usingnamespacetint::core::number_suffixes;
namespace {
static constexpr DirectVariableAccessOptions kTransformPrivate = …;
static constexpr DirectVariableAccessOptions kTransformFunction = …;
}
namespace remove_uncalled {
IR_DirectVariableAccessTest_RemoveUncalled;
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrUniform) { … }
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrStorage) { … }
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrWorkgroup) { … }
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrPrivate_Disabled) { … }
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrPrivate_Enabled) { … }
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrFunction_Disabled) { … }
TEST_F(IR_DirectVariableAccessTest_RemoveUncalled, PtrFunction_Enabled) { … }
}
namespace pointer_chains_tests {
IR_DirectVariableAccessTest_PtrChains;
TEST_F(IR_DirectVariableAccessTest_PtrChains, ConstantIndices) { … }
TEST_F(IR_DirectVariableAccessTest_PtrChains, DynamicIndices) { … }
}
namespace uniform_as_tests {
IR_DirectVariableAccessTest_UniformAS;
TEST_F(IR_DirectVariableAccessTest_UniformAS, Param_ptr_i32_read) { … }
TEST_F(IR_DirectVariableAccessTest_UniformAS, Param_ptr_vec4i32_Via_array_DynamicRead) { … }
TEST_F(IR_DirectVariableAccessTest_UniformAS, CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_UniformAS, CallChaining2) { … }
}
namespace storage_as_tests {
IR_DirectVariableAccessTest_StorageAS;
TEST_F(IR_DirectVariableAccessTest_StorageAS, Param_ptr_i32_Via_struct_read) { … }
TEST_F(IR_DirectVariableAccessTest_StorageAS, Param_ptr_arr_i32_Via_struct_write) { … }
TEST_F(IR_DirectVariableAccessTest_StorageAS, Param_ptr_vec4i32_Via_array_DynamicWrite) { … }
TEST_F(IR_DirectVariableAccessTest_StorageAS, CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_StorageAS, CallChaining2) { … }
}
namespace workgroup_as_tests {
IR_DirectVariableAccessTest_WorkgroupAS;
TEST_F(IR_DirectVariableAccessTest_WorkgroupAS, Param_ptr_vec4i32_Via_array_StaticRead) { … }
TEST_F(IR_DirectVariableAccessTest_WorkgroupAS, Param_ptr_vec4i32_Via_array_StaticWrite) { … }
TEST_F(IR_DirectVariableAccessTest_WorkgroupAS, CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_WorkgroupAS, CallChaining2) { … }
}
namespace private_as_tests {
IR_DirectVariableAccessTest_PrivateAS;
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_Param_ptr_i32_read) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_Param_ptr_i32_write) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_Param_ptr_i32_Via_struct_read) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Disabled_Param_ptr_i32_Via_struct_read) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_Param_ptr_arr_i32_Via_struct_write) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Disabled_Param_ptr_arr_i32_Via_struct_write) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_Param_ptr_i32_mixed) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Disabled_Param_ptr_i32_mixed) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Disabled_CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Enabled_CallChaining2) { … }
TEST_F(IR_DirectVariableAccessTest_PrivateAS, Disabled_CallChaining2) { … }
}
namespace function_as_tests {
IR_DirectVariableAccessTest_FunctionAS;
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_LocalPtr) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_Param_ptr_i32_read) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_Param_ptr_i32_write) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_Param_ptr_i32_Via_struct_read) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_Param_ptr_arr_i32_Via_struct_write) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_Param_ptr_i32_mixed) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Disabled_Param_ptr_i32_Via_struct_read) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Disabled_Param_ptr_arr_i32_Via_struct_write) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Disabled_CallChaining) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Enabled_CallChaining2) { … }
TEST_F(IR_DirectVariableAccessTest_FunctionAS, Disabled_CallChaining2) { … }
}
namespace builtin_fn_calls {
IR_DirectVariableAccessTest_BuiltinFn;
TEST_F(IR_DirectVariableAccessTest_BuiltinFn, ArrayLength) { … }
TEST_F(IR_DirectVariableAccessTest_BuiltinFn, AtomicLoad) { … }
}
namespace complex_tests {
IR_DirectVariableAccessTest_Complex;
TEST_F(IR_DirectVariableAccessTest_Complex, Param_ptr_mixed_vec4i32_ViaMultiple) { … }
TEST_F(IR_DirectVariableAccessTest_Complex, Indexing) { … }
TEST_F(IR_DirectVariableAccessTest_Complex, IndexingInPtrCall) { … }
TEST_F(IR_DirectVariableAccessTest_Complex, IndexingDualPointers) { … }
}
}
}