Skip to content

Commit d15f07e

Browse files
jrpriceDawn LUCI CQ
authored andcommitted
[ir] Move DecomposeUniformAccess to core
This allows it to be used by other backends. Bug: 448452698 Change-Id: If50245f8256efd11b496cb4cedb6c800218781b2 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/264414 Commit-Queue: James Price <[email protected]> Reviewed-by: dan sinclair <[email protected]>
1 parent fa3ef70 commit d15f07e

File tree

10 files changed

+42
-42
lines changed

10 files changed

+42
-42
lines changed

src/tint/lang/core/ir/transform/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ cc_library(
5252
"combine_access_instructions.cc",
5353
"conversion_polyfill.cc",
5454
"dead_code_elimination.cc",
55+
"decompose_uniform_access.cc",
5556
"demote_to_helper.cc",
5657
"direct_variable_access.cc",
5758
"multiplanar_external_texture.cc",
@@ -88,6 +89,7 @@ cc_library(
8889
"combine_access_instructions.h",
8990
"conversion_polyfill.h",
9091
"dead_code_elimination.h",
92+
"decompose_uniform_access.h",
9193
"demote_to_helper.h",
9294
"direct_variable_access.h",
9395
"multiplanar_external_texture.h",
@@ -152,6 +154,7 @@ cc_library(
152154
"combine_access_instructions_test.cc",
153155
"conversion_polyfill_test.cc",
154156
"dead_code_elimination_test.cc",
157+
"decompose_uniform_access_test.cc",
155158
"demote_to_helper_test.cc",
156159
"direct_variable_access_test.cc",
157160
"helper_test.h",

src/tint/lang/core/ir/transform/BUILD.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ tint_add_target(tint_lang_core_ir_transform lib
6565
lang/core/ir/transform/conversion_polyfill.h
6666
lang/core/ir/transform/dead_code_elimination.cc
6767
lang/core/ir/transform/dead_code_elimination.h
68+
lang/core/ir/transform/decompose_uniform_access.cc
69+
lang/core/ir/transform/decompose_uniform_access.h
6870
lang/core/ir/transform/demote_to_helper.cc
6971
lang/core/ir/transform/demote_to_helper.h
7072
lang/core/ir/transform/direct_variable_access.cc
@@ -153,6 +155,7 @@ tint_add_target(tint_lang_core_ir_transform_test test
153155
lang/core/ir/transform/combine_access_instructions_test.cc
154156
lang/core/ir/transform/conversion_polyfill_test.cc
155157
lang/core/ir/transform/dead_code_elimination_test.cc
158+
lang/core/ir/transform/decompose_uniform_access_test.cc
156159
lang/core/ir/transform/demote_to_helper_test.cc
157160
lang/core/ir/transform/direct_variable_access_test.cc
158161
lang/core/ir/transform/helper_test.h

src/tint/lang/core/ir/transform/BUILD.gn

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ libtint_source_set("transform") {
7171
"conversion_polyfill.h",
7272
"dead_code_elimination.cc",
7373
"dead_code_elimination.h",
74+
"decompose_uniform_access.cc",
75+
"decompose_uniform_access.h",
7476
"demote_to_helper.cc",
7577
"demote_to_helper.h",
7678
"direct_variable_access.cc",
@@ -153,6 +155,7 @@ if (tint_build_unittests) {
153155
"combine_access_instructions_test.cc",
154156
"conversion_polyfill_test.cc",
155157
"dead_code_elimination_test.cc",
158+
"decompose_uniform_access_test.cc",
156159
"demote_to_helper_test.cc",
157160
"direct_variable_access_test.cc",
158161
"helper_test.h",

src/tint/lang/hlsl/writer/raise/decompose_uniform_access.cc renamed to src/tint/lang/core/ir/transform/decompose_uniform_access.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@
2525
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2626
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727

28-
#include "src/tint/lang/hlsl/writer/raise/decompose_uniform_access.h"
28+
#include "src/tint/lang/core/ir/transform/decompose_uniform_access.h"
2929

3030
#include <utility>
3131

3232
#include "src/tint/lang/core/ir/builder.h"
3333
#include "src/tint/lang/core/ir/validator.h"
3434

35-
namespace tint::hlsl::writer::raise {
35+
namespace tint::core::ir::transform {
3636
namespace {
3737

3838
using namespace tint::core::fluent_types; // NOLINT
@@ -100,7 +100,7 @@ struct State {
100100
}
101101

102102
OffsetData od{};
103-
Switch(
103+
tint::Switch(
104104
inst, //
105105
[&](core::ir::LoadVectorElement* l) { LoadVectorElement(l, var, od); },
106106
[&](core::ir::Load* l) { Load(l, var, od); },
@@ -118,7 +118,7 @@ struct State {
118118
TINT_ICE_ON_NO_MATCH);
119119
}
120120

121-
// Swap the result type of the `var` to the new HLSL result type
121+
// Swap the result type of the `var` to the new result type
122122
auto array_length = (var_ty->StoreType()->Size() + 15) / 16;
123123
result->SetType(ty.ptr(var_ty->AddressSpace(), ty.array(ty.vec4<u32>(), array_length),
124124
var_ty->Access()));
@@ -606,7 +606,7 @@ struct State {
606606
} // namespace
607607

608608
Result<SuccessType> DecomposeUniformAccess(core::ir::Module& ir) {
609-
auto result = ValidateAndDumpIfNeeded(ir, "hlsl.DecomposeUniformAccess",
609+
auto result = ValidateAndDumpIfNeeded(ir, "core.DecomposeUniformAccess",
610610
core::ir::Capabilities{
611611
core::ir::Capability::kAllowClipDistancesOnF32,
612612
core::ir::Capability::kAllowDuplicateBindings,
@@ -621,4 +621,4 @@ Result<SuccessType> DecomposeUniformAccess(core::ir::Module& ir) {
621621
return Success;
622622
}
623623

624-
} // namespace tint::hlsl::writer::raise
624+
} // namespace tint::core::ir::transform

src/tint/lang/hlsl/writer/raise/decompose_uniform_access.h renamed to src/tint/lang/core/ir/transform/decompose_uniform_access.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2626
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727

28-
#ifndef SRC_TINT_LANG_HLSL_WRITER_RAISE_DECOMPOSE_UNIFORM_ACCESS_H_
29-
#define SRC_TINT_LANG_HLSL_WRITER_RAISE_DECOMPOSE_UNIFORM_ACCESS_H_
28+
#ifndef SRC_TINT_LANG_CORE_IR_TRANSFORM_DECOMPOSE_UNIFORM_ACCESS_H_
29+
#define SRC_TINT_LANG_CORE_IR_TRANSFORM_DECOMPOSE_UNIFORM_ACCESS_H_
3030

3131
#include "src/tint/utils/result.h"
3232

@@ -35,7 +35,7 @@ namespace tint::core::ir {
3535
class Module;
3636
} // namespace tint::core::ir
3737

38-
namespace tint::hlsl::writer::raise {
38+
namespace tint::core::ir::transform {
3939

4040
/// DecomposeUniformAccess is a transform used to replace uniform buffer accesses with a
4141
/// the correct load of the HLSL primitive objects
@@ -44,6 +44,6 @@ namespace tint::hlsl::writer::raise {
4444
/// @returns success or failure
4545
Result<SuccessType> DecomposeUniformAccess(core::ir::Module& module);
4646

47-
} // namespace tint::hlsl::writer::raise
47+
} // namespace tint::core::ir::transform
4848

49-
#endif // SRC_TINT_LANG_HLSL_WRITER_RAISE_DECOMPOSE_UNIFORM_ACCESS_H_
49+
#endif // SRC_TINT_LANG_CORE_IR_TRANSFORM_DECOMPOSE_UNIFORM_ACCESS_H_

src/tint/lang/hlsl/writer/raise/decompose_uniform_access_test.cc renamed to src/tint/lang/core/ir/transform/decompose_uniform_access_test.cc

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2626
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2727

28-
#include "src/tint/lang/hlsl/writer/raise/decompose_uniform_access.h"
28+
#include "src/tint/lang/core/ir/transform/decompose_uniform_access.h"
2929

3030
#include <gtest/gtest.h>
3131

@@ -37,12 +37,12 @@
3737
using namespace tint::core::fluent_types; // NOLINT
3838
using namespace tint::core::number_suffixes; // NOLINT
3939

40-
namespace tint::hlsl::writer::raise {
40+
namespace tint::core::ir::transform {
4141
namespace {
4242

43-
using HlslWriterDecomposeUniformAccessTest = core::ir::transform::TransformTest;
43+
using IR_DecomposeUniformAccessTest = core::ir::transform::TransformTest;
4444

45-
TEST_F(HlslWriterDecomposeUniformAccessTest, NoBufferAccess) {
45+
TEST_F(IR_DecomposeUniformAccessTest, NoBufferAccess) {
4646
auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kFragment);
4747
b.Append(func->Block(), [&] { b.Return(func); });
4848

@@ -61,7 +61,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, NoBufferAccess) {
6161
EXPECT_EQ(expect, str());
6262
}
6363

64-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessChainFromUnnamedAccessChain) {
64+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessChainFromUnnamedAccessChain) {
6565
auto* Inner = ty.Struct(mod.symbols.New("Inner"), {
6666
{mod.symbols.New("c"), ty.f32()},
6767
{mod.symbols.New("d"), ty.u32()},
@@ -145,7 +145,7 @@ SB = struct @align(16) {
145145
EXPECT_EQ(expect, str());
146146
}
147147

148-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessChainFromLetAccessChain) {
148+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessChainFromLetAccessChain) {
149149
auto* Inner = ty.Struct(mod.symbols.New("Inner"), {
150150
{mod.symbols.New("c"), ty.f32()},
151151
});
@@ -230,7 +230,7 @@ SB = struct @align(16) {
230230
EXPECT_EQ(expect, str());
231231
}
232232

233-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessVectorLoad) {
233+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessVectorLoad) {
234234
auto* var = b.Var<uniform, vec4<f32>, core::Access::kRead>("v");
235235
var->SetBindingPoint(0, 0);
236236

@@ -303,7 +303,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessVectorLoad) {
303303
EXPECT_EQ(expect, str());
304304
}
305305

306-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessScalarF16) {
306+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessScalarF16) {
307307
auto* var = b.Var<uniform, f16, core::Access::kRead>("v");
308308
var->SetBindingPoint(0, 0);
309309

@@ -349,7 +349,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessScalarF16) {
349349
EXPECT_EQ(expect, str());
350350
}
351351

352-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessVectorF16) {
352+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessVectorF16) {
353353
auto* var = b.Var<uniform, vec4<f16>, core::Access::kRead>("v");
354354
var->SetBindingPoint(0, 0);
355355

@@ -437,7 +437,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessVectorF16) {
437437
EXPECT_EQ(expect, str());
438438
}
439439

440-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessMat2x3F16) {
440+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessMat2x3F16) {
441441
auto* var = b.Var<uniform, mat2x3<f16>, core::Access::kRead>("v");
442442
var->SetBindingPoint(0, 0);
443443

@@ -528,7 +528,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessMat2x3F16) {
528528
EXPECT_EQ(expect, str());
529529
}
530530

531-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessMatrix) {
531+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessMatrix) {
532532
auto* var = b.Var<uniform, mat4x4<f32>, core::Access::kRead>("v");
533533
var->SetBindingPoint(0, 0);
534534

@@ -613,7 +613,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessMatrix) {
613613
EXPECT_EQ(expect, str());
614614
}
615615

616-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessArray) {
616+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessArray) {
617617
auto* var = b.Var<uniform, array<vec3<f32>, 5>, core::Access::kRead>("v");
618618
var->SetBindingPoint(0, 0);
619619

@@ -699,7 +699,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessArray) {
699699
EXPECT_EQ(expect, str());
700700
}
701701

702-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessArrayWhichCanHaveSizesOtherThenFive) {
702+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessArrayWhichCanHaveSizesOtherThenFive) {
703703
auto* var = b.Var<uniform, array<vec3<f32>, 42>, core::Access::kRead>("v");
704704
var->SetBindingPoint(0, 0);
705705

@@ -785,7 +785,7 @@ TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessArrayWhichCanHaveSizes
785785
EXPECT_EQ(expect, str());
786786
}
787787

788-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessStruct) {
788+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessStruct) {
789789
auto* SB = ty.Struct(mod.symbols.New("SB"), {
790790
{mod.symbols.New("a"), ty.i32()},
791791
{mod.symbols.New("b"), ty.f32()},
@@ -870,7 +870,7 @@ SB = struct @align(4) {
870870
EXPECT_EQ(expect, str());
871871
}
872872

873-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessStructNested) {
873+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessStructNested) {
874874
auto* Inner =
875875
ty.Struct(mod.symbols.New("Inner"), {
876876
{mod.symbols.New("s"), ty.mat3x3<f32>()},
@@ -1062,7 +1062,7 @@ SB = struct @align(16) {
10621062
EXPECT_EQ(expect, str());
10631063
}
10641064

1065-
TEST_F(HlslWriterDecomposeUniformAccessTest, UniformAccessChainReused) {
1065+
TEST_F(IR_DecomposeUniformAccessTest, UniformAccessChainReused) {
10661066
auto* sb = ty.Struct(mod.symbols.New("SB"), {
10671067
{mod.symbols.New("c"), ty.f32()},
10681068
{mod.symbols.New("d"), ty.vec3<f32>()},
@@ -1132,7 +1132,7 @@ SB = struct @align(16) {
11321132
EXPECT_EQ(expect, str());
11331133
}
11341134

1135-
TEST_F(HlslWriterDecomposeUniformAccessTest, Determinism_MultipleUsesOfLetFromVar) {
1135+
TEST_F(IR_DecomposeUniformAccessTest, Determinism_MultipleUsesOfLetFromVar) {
11361136
auto* sb =
11371137
ty.Struct(mod.symbols.New("SB"), {
11381138
{mod.symbols.New("a"), ty.array<vec4<f32>, 2>()},
@@ -1271,7 +1271,7 @@ SB = struct @align(16) {
12711271
EXPECT_EQ(expect, str());
12721272
}
12731273

1274-
TEST_F(HlslWriterDecomposeUniformAccessTest, Determinism_MultipleUsesOfLetFromAccess) {
1274+
TEST_F(IR_DecomposeUniformAccessTest, Determinism_MultipleUsesOfLetFromAccess) {
12751275
auto* sb =
12761276
ty.Struct(mod.symbols.New("SB"), {
12771277
{mod.symbols.New("a"), ty.array<vec4<f32>, 2>()},
@@ -1411,7 +1411,7 @@ SB = struct @align(16) {
14111411
EXPECT_EQ(expect, str());
14121412
}
14131413

1414-
TEST_F(HlslWriterDecomposeUniformAccessTest, Determinism_MultipleUsesOfAccess) {
1414+
TEST_F(IR_DecomposeUniformAccessTest, Determinism_MultipleUsesOfAccess) {
14151415
auto* sb =
14161416
ty.Struct(mod.symbols.New("SB"), {
14171417
{mod.symbols.New("a"), ty.array<vec4<f32>, 2>()},
@@ -1551,4 +1551,4 @@ SB = struct @align(16) {
15511551
}
15521552

15531553
} // namespace
1554-
} // namespace tint::hlsl::writer::raise
1554+
} // namespace tint::core::ir::transform

src/tint/lang/hlsl/writer/raise/BUILD.bazel

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ cc_library(
4242
"binary_polyfill.cc",
4343
"builtin_polyfill.cc",
4444
"decompose_storage_access.cc",
45-
"decompose_uniform_access.cc",
4645
"localize_struct_array_assignment.cc",
4746
"pixel_local.cc",
4847
"promote_initializers.cc",
@@ -55,7 +54,6 @@ cc_library(
5554
"binary_polyfill.h",
5655
"builtin_polyfill.h",
5756
"decompose_storage_access.h",
58-
"decompose_uniform_access.h",
5957
"localize_struct_array_assignment.h",
6058
"pixel_local.h",
6159
"promote_initializers.h",
@@ -99,7 +97,6 @@ cc_library(
9997
"binary_polyfill_test.cc",
10098
"builtin_polyfill_test.cc",
10199
"decompose_storage_access_test.cc",
102-
"decompose_uniform_access_test.cc",
103100
"localize_struct_array_assignment_test.cc",
104101
"pixel_local_test.cc",
105102
"promote_initializers_test.cc",

src/tint/lang/hlsl/writer/raise/BUILD.cmake

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ tint_add_target(tint_lang_hlsl_writer_raise lib
4545
lang/hlsl/writer/raise/builtin_polyfill.h
4646
lang/hlsl/writer/raise/decompose_storage_access.cc
4747
lang/hlsl/writer/raise/decompose_storage_access.h
48-
lang/hlsl/writer/raise/decompose_uniform_access.cc
49-
lang/hlsl/writer/raise/decompose_uniform_access.h
5048
lang/hlsl/writer/raise/localize_struct_array_assignment.cc
5149
lang/hlsl/writer/raise/localize_struct_array_assignment.h
5250
lang/hlsl/writer/raise/pixel_local.cc
@@ -100,7 +98,6 @@ tint_add_target(tint_lang_hlsl_writer_raise_test test
10098
lang/hlsl/writer/raise/binary_polyfill_test.cc
10199
lang/hlsl/writer/raise/builtin_polyfill_test.cc
102100
lang/hlsl/writer/raise/decompose_storage_access_test.cc
103-
lang/hlsl/writer/raise/decompose_uniform_access_test.cc
104101
lang/hlsl/writer/raise/localize_struct_array_assignment_test.cc
105102
lang/hlsl/writer/raise/pixel_local_test.cc
106103
lang/hlsl/writer/raise/promote_initializers_test.cc

src/tint/lang/hlsl/writer/raise/BUILD.gn

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ libtint_source_set("raise") {
5151
"builtin_polyfill.h",
5252
"decompose_storage_access.cc",
5353
"decompose_storage_access.h",
54-
"decompose_uniform_access.cc",
55-
"decompose_uniform_access.h",
5654
"localize_struct_array_assignment.cc",
5755
"localize_struct_array_assignment.h",
5856
"pixel_local.cc",
@@ -100,7 +98,6 @@ if (tint_build_unittests) {
10098
"binary_polyfill_test.cc",
10199
"builtin_polyfill_test.cc",
102100
"decompose_storage_access_test.cc",
103-
"decompose_uniform_access_test.cc",
104101
"localize_struct_array_assignment_test.cc",
105102
"pixel_local_test.cc",
106103
"promote_initializers_test.cc",

src/tint/lang/hlsl/writer/raise/raise.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include "src/tint/lang/core/ir/transform/builtin_scalarize.h"
4040
#include "src/tint/lang/core/ir/transform/change_immediate_to_uniform.h"
4141
#include "src/tint/lang/core/ir/transform/conversion_polyfill.h"
42+
#include "src/tint/lang/core/ir/transform/decompose_uniform_access.h"
4243
#include "src/tint/lang/core/ir/transform/demote_to_helper.h"
4344
#include "src/tint/lang/core/ir/transform/direct_variable_access.h"
4445
#include "src/tint/lang/core/ir/transform/multiplanar_external_texture.h"
@@ -58,7 +59,6 @@
5859
#include "src/tint/lang/hlsl/writer/raise/binary_polyfill.h"
5960
#include "src/tint/lang/hlsl/writer/raise/builtin_polyfill.h"
6061
#include "src/tint/lang/hlsl/writer/raise/decompose_storage_access.h"
61-
#include "src/tint/lang/hlsl/writer/raise/decompose_uniform_access.h"
6262
#include "src/tint/lang/hlsl/writer/raise/localize_struct_array_assignment.h"
6363
#include "src/tint/lang/hlsl/writer/raise/pixel_local.h"
6464
#include "src/tint/lang/hlsl/writer/raise/promote_initializers.h"
@@ -245,7 +245,7 @@ Result<SuccessType> Raise(core::ir::Module& module, const Options& options) {
245245
RUN_TRANSFORM(core::ir::transform::ChangeImmediateToUniform, module, config);
246246
}
247247
// Comes after DecomposeStorageAccess and ChangeImmediateToUniform.
248-
RUN_TRANSFORM(raise::DecomposeUniformAccess, module);
248+
RUN_TRANSFORM(core::ir::transform::DecomposeUniformAccess, module);
249249

250250
// PixelLocal must run after DirectVariableAccess to avoid chasing pointer parameters.
251251
if (pixel_local_enabled) {

0 commit comments

Comments
 (0)