mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-22 03:46:53 +02:00
shader: track possible bits through bit-field inserts in resource tracking
This commit is contained in:
@@ -56,6 +56,17 @@ uint32_t PossibleU32Bits(Value value, const auto& normalize) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ValueOpcode::BitFieldInsert: {
|
||||
const auto offset = inst->Arg(2).Resolve();
|
||||
const auto count = inst->Arg(3).Resolve();
|
||||
if (offset.IsImmediate() && count.IsImmediate() && offset.U32() < 32u &&
|
||||
count.U32() <= 32u - offset.U32()) {
|
||||
const auto field = (count.U32() == 32u ? UINT32_MAX : (1u << count.U32()) - 1u)
|
||||
<< offset.U32();
|
||||
bits = (arg(0) & ~field) | ((arg(1) << offset.U32()) & field);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
return bits;
|
||||
|
||||
Reference in New Issue
Block a user