ProgramBuilder: Migrate matrices to typ::TypePair
Used as a stepping stone to emitting the ast::Types instead. Bug: tint:724 Change-Id: Ic81f0a00456e91ac089df32193c4323c2e779c29 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/48684 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
parent
e30ffeb02a
commit
fdb91fd85e
|
@ -30,6 +30,7 @@
|
|||
#include "src/ast/i32.h"
|
||||
#include "src/ast/if_statement.h"
|
||||
#include "src/ast/loop_statement.h"
|
||||
#include "src/ast/matrix.h"
|
||||
#include "src/ast/member_accessor_expression.h"
|
||||
#include "src/ast/module.h"
|
||||
#include "src/ast/return_statement.h"
|
||||
|
@ -401,109 +402,118 @@ class ProgramBuilder {
|
|||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 2x3 matrix of `type`.
|
||||
sem::Matrix* mat2x2(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 2u, 2u);
|
||||
typ::Matrix mat2x2(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 2u, 2u),
|
||||
builder->create<sem::Matrix>(type, 2u, 2u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 2x3 matrix of `type`.
|
||||
sem::Matrix* mat2x3(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 3u, 2u);
|
||||
typ::Matrix mat2x3(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 3u, 2u),
|
||||
builder->create<sem::Matrix>(type, 3u, 2u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 2x4 matrix of `type`.
|
||||
sem::Matrix* mat2x4(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 4u, 2u);
|
||||
typ::Matrix mat2x4(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 4u, 2u),
|
||||
builder->create<sem::Matrix>(type, 4u, 2u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 3x2 matrix of `type`.
|
||||
sem::Matrix* mat3x2(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 2u, 3u);
|
||||
typ::Matrix mat3x2(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 2u, 3u),
|
||||
builder->create<sem::Matrix>(type, 2u, 3u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 3x3 matrix of `type`.
|
||||
sem::Matrix* mat3x3(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 3u, 3u);
|
||||
typ::Matrix mat3x3(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 3u, 3u),
|
||||
builder->create<sem::Matrix>(type, 3u, 3u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 3x4 matrix of `type`.
|
||||
sem::Matrix* mat3x4(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 4u, 3u);
|
||||
typ::Matrix mat3x4(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 4u, 3u),
|
||||
builder->create<sem::Matrix>(type, 4u, 3u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 4x2 matrix of `type`.
|
||||
sem::Matrix* mat4x2(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 2u, 4u);
|
||||
typ::Matrix mat4x2(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 2u, 4u),
|
||||
builder->create<sem::Matrix>(type, 2u, 4u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 4x3 matrix of `type`.
|
||||
sem::Matrix* mat4x3(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 3u, 4u);
|
||||
typ::Matrix mat4x3(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 3u, 4u),
|
||||
builder->create<sem::Matrix>(type, 3u, 4u)};
|
||||
}
|
||||
|
||||
/// @param type matrix subtype
|
||||
/// @return the tint AST type for a 4x4 matrix of `type`.
|
||||
sem::Matrix* mat4x4(sem::Type* type) const {
|
||||
return builder->create<sem::Matrix>(type, 4u, 4u);
|
||||
typ::Matrix mat4x4(typ::Type type) const {
|
||||
return {builder->create<ast::Matrix>(type, 4u, 4u),
|
||||
builder->create<sem::Matrix>(type, 4u, 4u)};
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 2x3 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat2x2() const {
|
||||
typ::Matrix mat2x2() const {
|
||||
return mat2x2(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 2x3 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat2x3() const {
|
||||
typ::Matrix mat2x3() const {
|
||||
return mat2x3(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 2x4 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat2x4() const {
|
||||
typ::Matrix mat2x4() const {
|
||||
return mat2x4(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 3x2 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat3x2() const {
|
||||
typ::Matrix mat3x2() const {
|
||||
return mat3x2(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 3x3 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat3x3() const {
|
||||
typ::Matrix mat3x3() const {
|
||||
return mat3x3(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 3x4 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat3x4() const {
|
||||
typ::Matrix mat3x4() const {
|
||||
return mat3x4(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 4x2 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat4x2() const {
|
||||
typ::Matrix mat4x2() const {
|
||||
return mat4x2(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 4x3 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat4x3() const {
|
||||
typ::Matrix mat4x3() const {
|
||||
return mat4x3(Of<T>());
|
||||
}
|
||||
|
||||
/// @return the tint AST type for a 4x4 matrix of the C type `T`.
|
||||
template <typename T>
|
||||
sem::Matrix* mat4x4() const {
|
||||
typ::Matrix mat4x4() const {
|
||||
return mat4x4(Of<T>());
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace ast {
|
|||
class Bool;
|
||||
class F32;
|
||||
class I32;
|
||||
class Matrix;
|
||||
class U32;
|
||||
class Vector;
|
||||
class Void;
|
||||
|
@ -34,6 +35,7 @@ namespace sem {
|
|||
class Bool;
|
||||
class F32;
|
||||
class I32;
|
||||
class Matrix;
|
||||
class U32;
|
||||
class Vector;
|
||||
class Void;
|
||||
|
@ -85,6 +87,7 @@ using Type = TypePair<ast::Type, sem::Type>;
|
|||
using Bool = TypePair<ast::Bool, sem::Bool>;
|
||||
using F32 = TypePair<ast::F32, sem::F32>;
|
||||
using I32 = TypePair<ast::I32, sem::I32>;
|
||||
using Matrix = TypePair<ast::Matrix, sem::Matrix>;
|
||||
using U32 = TypePair<ast::U32, sem::U32>;
|
||||
using Vector = TypePair<ast::Vector, sem::Vector>;
|
||||
using Void = TypePair<ast::Void, sem::Void>;
|
||||
|
|
|
@ -135,7 +135,7 @@ TEST_F(HlslGeneratorImplTest_Type, EmitType_I32) {
|
|||
}
|
||||
|
||||
TEST_F(HlslGeneratorImplTest_Type, EmitType_Matrix) {
|
||||
auto* mat2x3 = ty.mat2x3<f32>();
|
||||
auto mat2x3 = ty.mat2x3<f32>();
|
||||
|
||||
GeneratorImpl& gen = Build();
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ TEST_F(MslGeneratorImplTest, EmitType_I32) {
|
|||
}
|
||||
|
||||
TEST_F(MslGeneratorImplTest, EmitType_Matrix) {
|
||||
auto* mat2x3 = ty.mat2x3<f32>();
|
||||
auto mat2x3 = ty.mat2x3<f32>();
|
||||
|
||||
GeneratorImpl& gen = Build();
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ TEST_F(BuilderTest_Type, ReturnsGeneratedI32) {
|
|||
}
|
||||
|
||||
TEST_F(BuilderTest_Type, GenerateMatrix) {
|
||||
auto* mat2x3 = ty.mat2x3<f32>();
|
||||
auto mat2x3 = ty.mat2x3<f32>();
|
||||
|
||||
spirv::Builder& b = Build();
|
||||
|
||||
|
@ -248,7 +248,7 @@ TEST_F(BuilderTest_Type, GenerateMatrix) {
|
|||
}
|
||||
|
||||
TEST_F(BuilderTest_Type, ReturnsGeneratedMatrix) {
|
||||
auto* mat = ty.mat4x3<i32>();
|
||||
auto mat = ty.mat4x3<i32>();
|
||||
auto i32 = ty.i32();
|
||||
|
||||
spirv::Builder& b = Build();
|
||||
|
|
|
@ -140,7 +140,7 @@ TEST_F(WgslGeneratorImplTest, EmitType_I32) {
|
|||
}
|
||||
|
||||
TEST_F(WgslGeneratorImplTest, EmitType_Matrix) {
|
||||
auto* mat2x3 = ty.mat2x3<f32>();
|
||||
auto mat2x3 = ty.mat2x3<f32>();
|
||||
AST().AddConstructedType(ty.alias("make_type_reachable", mat2x3));
|
||||
|
||||
GeneratorImpl& gen = Build();
|
||||
|
|
Loading…
Reference in New Issue