#include <sstream>
#include <string>
#include <vector>
#include "dawn/tests/perf_tests/DawnPerfTest.h"
#include "dawn/utils/WGPUHelpers.h"
namespace dawn {
namespace {
constexpr uint32_t kTileSize = …;
constexpr uint32_t kWorkgroupSizeX = …;
constexpr uint32_t kWorkgroupSizeY = …;
static_assert …;
static_assert …;
std::string GenMatMulFloatHeader() { … }
const std::string& kMatMulFloatSharedArray1D = …;
const std::string& kMatMulFloatSharedArray2D = …;
const std::string& kMatMulFloatBodyPart1 = …;
const std::string& kMatMulFloatBodyPart2Array1D = …;
const std::string& kMatMulFloatBodyPart2Array2D = …;
const std::string& kMatMulFloatBodyPart3 = …;
std::string GenMatMulFloatOneDimensionalSharedArray() { … }
std::string GenMatMulFloatTwoDimensionalSharedArray() { … }
std::string GenMatMulVec4Header() { … }
const std::string& kMatMulVec4SharedArray1D = …;
const std::string& kMatMulVec4SharedArray2D = …;
const std::string& kMatMulVec4BodyPart1 = …;
const std::string& kMatMulVec4BodyPart2Array1D = …;
const std::string& kMatMulVec4BodyPart2Array2D = …;
const std::string& kMatMulVec4BodyPart3 = …;
std::string GenMatMulVec4OneDimensionalSharedArray() { … }
std::string GenMatMulVec4TwoDimensionalSharedArray() { … }
constexpr unsigned int kNumIterations = …;
enum class MatMulMethod { … };
std::ostream& operator<<(std::ostream& ostream, const MatMulMethod& matMulMethod) { … }
enum class ElemType { … };
std::ostream& operator<<(std::ostream& ostream, const ElemType& elemType) { … }
DimAOuter;
DimInner;
DimBOuter;
DAWN_TEST_PARAM_STRUCT(ShaderRobustnessParams,
MatMulMethod,
ElemType,
DimAOuter,
DimInner,
DimBOuter);
class ShaderRobustnessPerf : public DawnPerfTestWithParams<ShaderRobustnessParams> { … };
void ShaderRobustnessPerf::SetUp() { … }
std::string ShaderRobustnessPerf::GetShaderPreamble() { … }
std::string ShaderRobustnessPerf::GetShaderBody() { … }
std::string ShaderRobustnessPerf::GetShader() { … }
void ShaderRobustnessPerf::Step() { … }
TEST_P(ShaderRobustnessPerf, Run) { … }
DAWN_INSTANTIATE_TEST_P(…);
}
}