xref: /aosp_15_r20/external/angle/src/compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 //
2 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 #include <algorithm>
8 #include <unordered_map>
9 
10 #include "compiler/translator/IntermRebuild.h"
11 #include "compiler/translator/msl/AstHelpers.h"
12 #include "compiler/translator/tree_ops/msl/TransposeRowMajorMatrices.h"
13 
14 using namespace sh;
15 
16 ////////////////////////////////////////////////////////////////////////////////
17 
18 namespace
19 {
20 
21 class Rewriter : public TIntermRebuild
22 {
23   public:
Rewriter(TCompiler & compiler)24     Rewriter(TCompiler &compiler) : TIntermRebuild(compiler, true, false) {}
25     // PreResult visitConstantUnionPre(TIntermSymbol &symbolNode) override
26     // {
27     //     const TVariable &var = symbolNode.variable();
28     //     const TType &type = var.getType();
29     //     //const TLayoutQualifier &layoutQualifier = type.getLayoutQualifier();
30     //     if(type.isMatrix())
31     //     {
32     //         return CreateBuiltInUnaryFunctionCallNode("transpose", symbolNode.deepCopy(),
33     //                                                   mSymbolTable, 300));
34     //     }
35     //     return symbolNode;
36     // }
37 };
38 
39 }  // anonymous namespace
40 
41 ////////////////////////////////////////////////////////////////////////////////
42 
TransposeRowMajorMatricies(TCompiler & compiler,TIntermBlock & root)43 bool sh::TransposeRowMajorMatricies(TCompiler &compiler, TIntermBlock &root)
44 {
45     Rewriter rewriter(compiler);
46     if (!rewriter.rebuildRoot(root))
47     {
48         return false;
49     }
50     return true;
51 }
52