glasm: Use BitField instead of C bitfields
This commit is contained in:
parent
2b04b4d27f
commit
3e841f6441
|
@ -68,11 +68,11 @@ Id RegAlloc::Alloc() {
|
|||
}
|
||||
num_used_registers = std::max(num_used_registers, reg + 1);
|
||||
register_use[reg] = true;
|
||||
return Id{
|
||||
.index = static_cast<u32>(reg),
|
||||
.is_spill = 0,
|
||||
.is_condition_code = 0,
|
||||
};
|
||||
Id ret{};
|
||||
ret.index.Assign(static_cast<u32>(reg));
|
||||
ret.is_spill.Assign(0);
|
||||
ret.is_condition_code.Assign(0);
|
||||
return ret;
|
||||
}
|
||||
throw NotImplementedException("Register spilling");
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <bitset>
|
||||
|
||||
#include "common/bit_field.h"
|
||||
#include "common/common_types.h"
|
||||
|
||||
namespace Shader::IR {
|
||||
|
@ -18,9 +19,12 @@ namespace Shader::Backend::GLASM {
|
|||
class EmitContext;
|
||||
|
||||
struct Id {
|
||||
u32 index : 30;
|
||||
u32 is_spill : 1;
|
||||
u32 is_condition_code : 1;
|
||||
union {
|
||||
u32 raw;
|
||||
BitField<0, 30, u32> index;
|
||||
BitField<30, 1, u32> is_spill;
|
||||
BitField<31, 1, u32> is_condition_code;
|
||||
};
|
||||
};
|
||||
|
||||
class RegAlloc {
|
||||
|
|
Reference in New Issue