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

@ -10,8 +10,8 @@ namespace Detail {
template <typename Func, typename OutputIt, std::size_t N, std::size_t Level, typename... ArgLists>
void CartesianInvokeImpl(Func func, OutputIt out_it,
std::tuple<typename ArgLists::const_iterator...>& arglists_its,
const std::tuple<const ArgLists&...>& arglists_tuple) {
std::tuple<typename ArgLists::const_iterator...>& arglists_its,
const std::tuple<const ArgLists&...>& arglists_tuple) {
if constexpr (Level == N) {
auto get_tuple = [&]<std::size_t... I>(std::index_sequence<I...>) {
return std::forward_as_tuple(*std::get<I>(arglists_its)...);
@ -37,7 +37,7 @@ void CartesianInvoke(Func func, OutputIt out_it, const ArgLists&... arg_lists) {
std::tuple<typename ArgLists::const_iterator...> arglists_it;
Detail::CartesianInvokeImpl<Func, OutputIt, N, 0, ArgLists...>(func, out_it, arglists_it,
arglists_tuple);
arglists_tuple);
}
} // namespace Common

View File

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

View File

@ -6,224 +6,324 @@
namespace Shader::IR::ComputeValue {
static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) {
const auto op = [](const ImmValue& a, const ImmValue& b) {
return ImmValue(a, b);
};
static void CommonCompositeConstruct(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1) {
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);
}
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) {
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) {
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);
}
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);
}
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);
}
void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) {
Common::CartesianInvoke(ImmValue::CompositeFrom2x2, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1);
void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
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) {
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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) {
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
void DoCompositeInsertU32x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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");
}
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");
}
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");
}
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);
}
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);
}
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);
}
void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1) {
Common::CartesianInvoke(ImmValue::CompositeFrom2x2, std::insert_iterator(inst_values, inst_values.begin()), arg0, arg1);
void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
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) {
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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) {
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
void DoCompositeInsertF16x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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");
}
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");
}
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");
}
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);
}
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);
}
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);
}
void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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) {
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
void DoCompositeInsertF32x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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");
}
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");
}
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");
}
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);
}
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);
}
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);
}
void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx) {
Common::CartesianInvoke(ImmValue::Extract, std::insert_iterator(inst_values, inst_values.begin()), vec, idx);
void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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) {
Common::CartesianInvoke(ImmValue::Insert, std::insert_iterator(inst_values, inst_values.begin()), vec, val, idx);
void DoCompositeInsertF64x2(ImmValueList& inst_values, const ImmValueList& vec,
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) {
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) {
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) {
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) {
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");
}
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");
}
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");
}

View File

@ -7,58 +7,128 @@
namespace Shader::IR::ComputeValue {
void DoCompositeConstructU32x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1);
void DoCompositeConstructU32x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructU32x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3);
void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1);
void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx);
void DoCompositeExtractU32x3(ImmValueList& inst_values, const ImmValueList& vec, 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 DoCompositeConstructU32x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1);
void DoCompositeConstructU32x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructU32x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3);
void DoCompositeConstructU32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1);
void DoCompositeExtractU32x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeExtractU32x3(ImmValueList& inst_values, const ImmValueList& vec,
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 DoCompositeConstructF16x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructF16x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3);
void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx);
void DoCompositeExtractF16x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx);
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 DoCompositeConstructF16x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1);
void DoCompositeConstructF16x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructF16x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3);
void DoCompositeExtractF16x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeExtractF16x3(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
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 DoCompositeConstructF32x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructF32x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3);
void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1);
void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx);
void DoCompositeExtractF32x3(ImmValueList& inst_values, const ImmValueList& vec, 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 DoCompositeConstructF32x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1);
void DoCompositeConstructF32x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructF32x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3);
void DoCompositeConstructF32x2x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1);
void DoCompositeExtractF32x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeExtractF32x3(ImmValueList& inst_values, const ImmValueList& vec,
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 DoCompositeConstructF64x3(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructF64x4(ImmValueList& inst_values, const ImmValueList& arg0, const ImmValueList& arg1, const ImmValueList& arg2, const ImmValueList& arg3);
void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx);
void DoCompositeExtractF64x3(ImmValueList& inst_values, const ImmValueList& vec, const ImmValueList& idx);
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);
void DoCompositeConstructF64x2(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1);
void DoCompositeConstructF64x3(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2);
void DoCompositeConstructF64x4(ImmValueList& inst_values, const ImmValueList& arg0,
const ImmValueList& arg1, const ImmValueList& arg2,
const ImmValueList& arg3);
void DoCompositeExtractF64x2(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
void DoCompositeExtractF64x3(ImmValueList& inst_values, const ImmValueList& vec,
const ImmValueList& idx);
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

View File

@ -3,7 +3,8 @@
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(Identity)