mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
swr/rast: autogenerate named structs instead of literal structs
Results in far smaller and useful IR output. Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
04d0bfde39
commit
f5f1bbcb5c
1 changed files with 15 additions and 8 deletions
|
|
@ -40,15 +40,22 @@ namespace SwrJit
|
|||
INLINE static StructType *Gen_${type['name']}(JitManager* pJitMgr)
|
||||
{
|
||||
LLVMContext& ctx = pJitMgr->mContext;
|
||||
std::vector<Type*> members;
|
||||
<%
|
||||
(max_type_len, max_name_len) = calc_max_len(type['members'])
|
||||
%>
|
||||
%for member in type['members']:
|
||||
/* ${member['name']} ${pad(len(member['name']), max_name_len)}*/ members.push_back( ${member['type']} );
|
||||
%endfor
|
||||
|
||||
return StructType::get(ctx, members, false);
|
||||
StructType* pRetType = pJitMgr->mpCurrentModule->getTypeByName("${type['name']}");
|
||||
if (pRetType == nullptr)
|
||||
{
|
||||
std::vector<Type*> members;
|
||||
<%
|
||||
(max_type_len, max_name_len) = calc_max_len(type['members'])
|
||||
%>
|
||||
%for member in type['members']:
|
||||
/* ${member['name']} ${pad(len(member['name']), max_name_len)}*/ members.push_back(${ member['type'] });
|
||||
%endfor
|
||||
|
||||
pRetType = StructType::create(members, "${type['name']}", false);
|
||||
}
|
||||
|
||||
return pRetType;
|
||||
}
|
||||
|
||||
%for member in type['members']:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue