clang-format

This commit is contained in:
Lander Gallastegi 2025-03-19 23:59:34 +01:00 committed by Lander Gallastegi
parent 301f51e57d
commit 418f7daa57
5 changed files with 310 additions and 139 deletions

View File

@ -3,8 +3,8 @@
#pragma once #pragma once
#include <tuple>
#include <cstddef> #include <cstddef>
#include <tuple>
namespace Common { namespace Common {

View File

@ -6,224 +6,324 @@
namespace Shader::IR::ComputeValue { namespace Shader::IR::ComputeValue {
static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0,
const auto op = [](const ImmValue& a, const ImmValue& b) { const ImmValueList& arg1) {
return ImmValue(a, b); const auto op = [](const ImmValue& a, const ImmValue& b) { return ImmValue(a, b); };
};
Common::CartesianInvoke(op, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1); Common::CartesianInvoke(op, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1);
} }
static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2) { static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2) {
const auto op = [](const ImmValue& a, const ImmValue& b, const ImmValue& c) { const auto op = [](const ImmValue& a, const ImmValue& b, const ImmValue& c) {
return ImmValue(a, b, c); return ImmValue(a, b, c);
}; };
Common::CartesianInvoke(op, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1, arg2); Common::CartesianInvoke(op, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1,
arg2);
} }
static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3) { static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3) {
const auto op = [](const ImmValue& a, const ImmValue& b, const ImmValue& c, const ImmValue& d) { const auto op = [](const ImmValue& a, const ImmValue& b, const ImmValue& c, const ImmValue& d) {
return ImmValue(a, b, c, d); return ImmValue(a, b, c, d);
}; };
Common::CartesianInvoke(op, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1, arg2, arg3); Common::CartesianInvoke(op, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1,
arg2, arg3);
} }
void DoCompositeConstructU32x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { void DoCompositeConstructU32x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1) {
CommonCompositeConstruct(inst_values, arg0, arg1); CommonCompositeConstruct(inst_values, arg0, arg1);
} }
void DoCompositeConstructU32x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2) { void DoCompositeConstructU32x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2); CommonCompositeConstruct(inst_values, arg0, arg1, arg2);
} }
void DoCompositeConstructU32x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3) { void DoCompositeConstructU32x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3); CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3);
} }
void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
Common::CartesianInvoke(ImmValue::CompositeFrom2x2, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1); const ImmValueList& arg1) {
Common::CartesianInvoke(ImmValue::CompositeFrom2x2,
std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1);
} }
void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractU32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractU32x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractU32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractU32x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeInsertU32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertU32x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertU32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertU32x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertU32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertU32x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeShuffleU32x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1) { void DoCompositeShuffleU32x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleU32x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2) { void DoCompositeShuffleU32x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleU32x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3) { void DoCompositeShuffleU32x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeConstructF16x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { void DoCompositeConstructF16x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1) {
CommonCompositeConstruct(inst_values, arg0, arg1); CommonCompositeConstruct(inst_values, arg0, arg1);
} }
void DoCompositeConstructF16x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2) { void DoCompositeConstructF16x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2); CommonCompositeConstruct(inst_values, arg0, arg1, arg2);
} }
void DoCompositeConstructF16x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3) { void DoCompositeConstructF16x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3); CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3);
} }
void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
Common::CartesianInvoke(ImmValue::CompositeFrom2x2, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1); const ImmValueList& arg1) {
Common::CartesianInvoke(ImmValue::CompositeFrom2x2,
std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1);
} }
void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractF16x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF16x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractF16x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF16x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeInsertF16x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF16x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertF16x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF16x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertF16x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF16x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeShuffleF16x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1) { void DoCompositeShuffleF16x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleF16x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2) { void DoCompositeShuffleF16x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleF16x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3) { void DoCompositeShuffleF16x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeConstructF32x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { void DoCompositeConstructF32x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1) {
CommonCompositeConstruct(inst_values, arg0, arg1); CommonCompositeConstruct(inst_values, arg0, arg1);
} }
void DoCompositeConstructF32x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2) { void DoCompositeConstructF32x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2); CommonCompositeConstruct(inst_values, arg0, arg1, arg2);
} }
void DoCompositeConstructF32x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3) { void DoCompositeConstructF32x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3); CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3);
} }
void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractF32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF32x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractF32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF32x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeInsertF32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF32x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertF32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF32x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertF32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF32x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeShuffleF32x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1) { void DoCompositeShuffleF32x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleF32x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2) { void DoCompositeShuffleF32x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleF32x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3) { void DoCompositeShuffleF32x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeConstructF64x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) { void DoCompositeConstructF64x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1) {
CommonCompositeConstruct(inst_values, arg0, arg1); CommonCompositeConstruct(inst_values, arg0, arg1);
} }
void DoCompositeConstructF64x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2) { void DoCompositeConstructF64x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2); CommonCompositeConstruct(inst_values, arg0, arg1, arg2);
} }
void DoCompositeConstructF64x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3) { void DoCompositeConstructF64x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3) {
CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3); CommonCompositeConstruct(inst_values, arg0, arg1, arg2, arg3);
} }
void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractF64x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF64x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeExtractF64x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) { void DoCompositeExtractF64x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx); const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract,
std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
} }
void DoCompositeInsertF64x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF64x2(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertF64x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF64x3(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeInsertF64x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx) { void DoCompositeInsertF64x4(ImmValueList& inst_values, const ImmValueList& vec,
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx); const ImmValueList& val, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Insert,
std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
} }
void DoCompositeShuffleF64x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1) { void DoCompositeShuffleF64x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleF64x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2) { void DoCompositeShuffleF64x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }
void DoCompositeShuffleF64x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3) { void DoCompositeShuffleF64x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3) {
UNREACHABLE_MSG("Unimplemented"); UNREACHABLE_MSG("Unimplemented");
} }

View File

@ -7,58 +7,128 @@
namespace Shader::IR::ComputeValue { namespace Shader::IR::ComputeValue {
void DoCompositeConstructU32x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1); void DoCompositeConstructU32x2(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeConstructU32x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2); const ImmValueList& arg1);
void DoCompositeConstructU32x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3); void DoCompositeConstructU32x3(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1); const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); void DoCompositeConstructU32x4(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeExtractU32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg1, const ImmValueList& arg2,
void DoCompositeExtractU32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg3);
void DoCompositeInsertU32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeInsertU32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); const ImmValueList& arg1);
void DoCompositeInsertU32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeShuffleU32x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1); const ImmValueList& idx);
void DoCompositeShuffleU32x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2); void DoCompositeExtractU32x3(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeShuffleU32x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3); const ImmValueList& idx);
void DoCompositeExtractU32x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeInsertU32x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertU32x3(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertU32x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeShuffleU32x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1);
void DoCompositeShuffleU32x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2);
void DoCompositeShuffleU32x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3);
void DoCompositeConstructF16x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1); void DoCompositeConstructF16x2(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeConstructF16x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2); const ImmValueList& arg1);
void DoCompositeConstructF16x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3); void DoCompositeConstructF16x3(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeExtractF16x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); void DoCompositeConstructF16x4(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeExtractF16x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg1, const ImmValueList& arg2,
void DoCompositeInsertF16x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); const ImmValueList& arg3);
void DoCompositeInsertF16x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeInsertF16x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); const ImmValueList& idx);
void DoCompositeShuffleF16x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1); void DoCompositeExtractF16x3(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeShuffleF16x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2); const ImmValueList& idx);
void DoCompositeShuffleF16x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3); void DoCompositeExtractF16x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeInsertF16x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertF16x3(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertF16x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeShuffleF16x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1);
void DoCompositeShuffleF16x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2);
void DoCompositeShuffleF16x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3);
void DoCompositeConstructF32x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1); void DoCompositeConstructF32x2(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeConstructF32x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2); const ImmValueList& arg1);
void DoCompositeConstructF32x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3); void DoCompositeConstructF32x3(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1); const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); void DoCompositeConstructF32x4(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeExtractF32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg1, const ImmValueList& arg2,
void DoCompositeExtractF32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg3);
void DoCompositeInsertF32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeInsertF32x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); const ImmValueList& arg1);
void DoCompositeInsertF32x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeShuffleF32x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1); const ImmValueList& idx);
void DoCompositeShuffleF32x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2); void DoCompositeExtractF32x3(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeShuffleF32x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3); const ImmValueList& idx);
void DoCompositeExtractF32x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeInsertF32x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertF32x3(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertF32x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeShuffleF32x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1);
void DoCompositeShuffleF32x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2);
void DoCompositeShuffleF32x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3);
void DoCompositeConstructF64x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1); void DoCompositeConstructF64x2(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeConstructF64x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2); const ImmValueList& arg1);
void DoCompositeConstructF64x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3); void DoCompositeConstructF64x3(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeExtractF64x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); void DoCompositeConstructF64x4(ImmValueList& inst_values, const ImmValueList& arg0,
void DoCompositeExtractF64x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx); const ImmValueList& arg1, const ImmValueList& arg2,
void DoCompositeInsertF64x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); const ImmValueList& arg3);
void DoCompositeInsertF64x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeInsertF64x4(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& val, const ImmValueList& idx); const ImmValueList& idx);
void DoCompositeShuffleF64x2(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1); void DoCompositeExtractF64x3(ImmValueList& inst_values, const ImmValueList& vec,
void DoCompositeShuffleF64x3(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2); const ImmValueList& idx);
void DoCompositeShuffleF64x4(ImmValueList& inst_values, const ImmValueList& vec0, const ImmValueList& vec1, const ImmValueList& idx0, const ImmValueList& idx1, const ImmValueList& idx2, const ImmValueList& idx3); void DoCompositeExtractF64x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeInsertF64x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertF64x3(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeInsertF64x4(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& val, const ImmValueList& idx);
void DoCompositeShuffleF64x2(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1);
void DoCompositeShuffleF64x3(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2);
void DoCompositeShuffleF64x4(ImmValueList& inst_values, const ImmValueList& vec0,
const ImmValueList& vec1, const ImmValueList& idx0,
const ImmValueList& idx1, const ImmValueList& idx2,
const ImmValueList& idx3);
} // namespace Shader::IR::ComputeValue } // namespace Shader::IR::ComputeValue

View File

@ -3,7 +3,8 @@
namespace Shader::IR::ComputeValue { namespace Shader::IR::ComputeValue {
#define NOP_FUNCTION(name) inline void Do##name(ImmValueList& inst_values) {} #define NOP_FUNCTION(name) \
inline void Do##name(ImmValueList& inst_values) {}
NOP_FUNCTION(Phi) NOP_FUNCTION(Phi)
NOP_FUNCTION(Identity) NOP_FUNCTION(Identity)