Match dxc disassembly for partially-undef compounds

This commit is contained in:
baldurk
2023-02-15 15:46:14 +00:00
parent deeb7fe3eb
commit 39bb522d93
2 changed files with 7 additions and 4 deletions
@@ -658,7 +658,7 @@ struct Constant : public ForwardReferencableValue<Constant>
if(flags & 0x10)
return u32;
// silently return 0 for NULL/Undef constants
if(flags & 0x06)
if(flags & 0x03)
return 0U;
RDCERR("Wrong type of constant being accessed");
return 0U;
@@ -669,7 +669,7 @@ struct Constant : public ForwardReferencableValue<Constant>
if(flags & 0x10)
return u64;
// silently return 0 for NULL/Undef constants
if(flags & 0x06)
if(flags & 0x03)
return 0U;
RDCERR("Wrong type of constant being accessed");
return 0U;
@@ -680,7 +680,7 @@ struct Constant : public ForwardReferencableValue<Constant>
if(flags & 0x10)
return s64;
// silently return 0 for NULL/Undef constants
if(flags & 0x06)
if(flags & 0x03)
return 0;
RDCERR("Wrong type of constant being accessed");
return 0U;
@@ -1875,7 +1875,10 @@ rdcstr Constant::toString(bool withType) const
ret += ", ";
if(withType)
ret += type->inner->toString() + " ";
shaderValAppendToString(type, v, i, ret);
if(isCompound() && cast<Constant>(members->at(i))->isUndef())
ret += "undef";
else
shaderValAppendToString(type, v, i, ret);
}
ret += ">";
}