[meta] Remove OperandKind::name field and explicitly pass rust_field_name/rust_type; (fixes #1177)
This commit is contained in:
@@ -35,28 +35,29 @@ pub(crate) struct EntityRefs {
|
||||
impl EntityRefs {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
ebb: create("ebb", "An extended basic block in the same function.")
|
||||
.rust_field_name("destination")
|
||||
.build(),
|
||||
ebb: create(
|
||||
"destination",
|
||||
"ir::Ebb",
|
||||
"An extended basic block in the same function.",
|
||||
)
|
||||
.build(),
|
||||
|
||||
stack_slot: create("stack_slot", "A stack slot").build(),
|
||||
stack_slot: create("stack_slot", "ir::StackSlot", "A stack slot").build(),
|
||||
|
||||
global_value: create("global_value", "A global value.").build(),
|
||||
global_value: create("global_value", "ir::GlobalValue", "A global value.").build(),
|
||||
|
||||
sig_ref: create("sig_ref", "A function signature.").build(),
|
||||
sig_ref: create("sig_ref", "ir::SigRef", "A function signature.").build(),
|
||||
|
||||
func_ref: create("func_ref", "An external function.").build(),
|
||||
func_ref: create("func_ref", "ir::FuncRef", "An external function.").build(),
|
||||
|
||||
jump_table: create("jump_table", "A jump table.")
|
||||
.rust_field_name("table")
|
||||
.build(),
|
||||
jump_table: create("table", "ir::JumpTable", "A jump table.").build(),
|
||||
|
||||
heap: create("heap", "A heap.").build(),
|
||||
heap: create("heap", "ir::Heap", "A heap.").build(),
|
||||
|
||||
table: create("table", "A table.").build(),
|
||||
table: create("table", "ir::Table", "A table.").build(),
|
||||
|
||||
varargs: Builder::new("variable_args", OperandKindFields::VariableArgs)
|
||||
.doc(
|
||||
varargs: Builder::new("", "&[Value]", OperandKindFields::VariableArgs)
|
||||
.with_doc(
|
||||
r#"
|
||||
A variable size list of `value` operands.
|
||||
|
||||
@@ -71,6 +72,6 @@ impl EntityRefs {
|
||||
}
|
||||
|
||||
/// Small helper to initialize an OperandBuilder with the right kind, for a given name and doc.
|
||||
fn create(name: &'static str, doc: &'static str) -> Builder {
|
||||
Builder::new(name, OperandKindFields::EntityRef).doc(doc)
|
||||
fn create(format_field_name: &'static str, rust_type: &'static str, doc: &'static str) -> Builder {
|
||||
Builder::new(format_field_name, rust_type, OperandKindFields::EntityRef).with_doc(doc)
|
||||
}
|
||||
|
||||
@@ -76,45 +76,40 @@ pub(crate) struct Immediates {
|
||||
impl Immediates {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
imm64: Builder::new_imm("imm64")
|
||||
.doc("A 64-bit immediate integer.")
|
||||
imm64: Builder::new_imm("imm", "ir::immediates::Imm64")
|
||||
.with_doc("A 64-bit immediate integer.")
|
||||
.build(),
|
||||
|
||||
uimm8: Builder::new_imm("uimm8")
|
||||
.doc("An 8-bit immediate unsigned integer.")
|
||||
uimm8: Builder::new_imm("imm", "ir::immediates::Uimm8")
|
||||
.with_doc("An 8-bit immediate unsigned integer.")
|
||||
.build(),
|
||||
|
||||
uimm32: Builder::new_imm("uimm32")
|
||||
.doc("A 32-bit immediate unsigned integer.")
|
||||
uimm32: Builder::new_imm("imm", "ir::immediates::Uimm32")
|
||||
.with_doc("A 32-bit immediate unsigned integer.")
|
||||
.build(),
|
||||
|
||||
uimm128: Builder::new_imm("uimm128")
|
||||
.doc("A 128-bit immediate unsigned integer.")
|
||||
.rust_type("ir::Immediate")
|
||||
uimm128: Builder::new_imm("imm", "ir::Immediate")
|
||||
.with_doc("A 128-bit immediate unsigned integer.")
|
||||
.build(),
|
||||
|
||||
pool_constant: Builder::new_imm("poolConstant")
|
||||
.doc("A constant stored in the constant pool.")
|
||||
.rust_field_name("constant_handle")
|
||||
.rust_type("ir::Constant")
|
||||
pool_constant: Builder::new_imm("constant_handle", "ir::Constant")
|
||||
.with_doc("A constant stored in the constant pool.")
|
||||
.build(),
|
||||
|
||||
offset32: Builder::new_imm("offset32")
|
||||
.doc("A 32-bit immediate signed offset.")
|
||||
.rust_field_name("offset")
|
||||
offset32: Builder::new_imm("offset", "ir::immediates::Offset32")
|
||||
.with_doc("A 32-bit immediate signed offset.")
|
||||
.build(),
|
||||
|
||||
ieee32: Builder::new_imm("ieee32")
|
||||
.doc("A 32-bit immediate floating point number.")
|
||||
ieee32: Builder::new_imm("imm", "ir::immediates::Ieee32")
|
||||
.with_doc("A 32-bit immediate floating point number.")
|
||||
.build(),
|
||||
|
||||
ieee64: Builder::new_imm("ieee64")
|
||||
.doc("A 64-bit immediate floating point number.")
|
||||
ieee64: Builder::new_imm("imm", "ir::immediates::Ieee64")
|
||||
.with_doc("A 64-bit immediate floating point number.")
|
||||
.build(),
|
||||
|
||||
boolean: Builder::new_imm("boolean")
|
||||
.doc("An immediate boolean.")
|
||||
.rust_type("bool")
|
||||
boolean: Builder::new_imm("imm", "bool")
|
||||
.with_doc("An immediate boolean.")
|
||||
.build(),
|
||||
|
||||
intcc: {
|
||||
@@ -131,10 +126,8 @@ impl Immediates {
|
||||
intcc_values.insert("ult", "UnsignedLessThan");
|
||||
intcc_values.insert("of", "Overflow");
|
||||
intcc_values.insert("nof", "NotOverflow");
|
||||
Builder::new_enum("intcc", intcc_values)
|
||||
.doc("An integer comparison condition code.")
|
||||
.rust_field_name("cond")
|
||||
.rust_type("ir::condcodes::IntCC")
|
||||
Builder::new_enum("cond", "ir::condcodes::IntCC", intcc_values)
|
||||
.with_doc("An integer comparison condition code.")
|
||||
.build()
|
||||
},
|
||||
|
||||
@@ -154,22 +147,17 @@ impl Immediates {
|
||||
floatcc_values.insert("ule", "UnorderedOrLessThanOrEqual");
|
||||
floatcc_values.insert("ugt", "UnorderedOrGreaterThan");
|
||||
floatcc_values.insert("uge", "UnorderedOrGreaterThanOrEqual");
|
||||
Builder::new_enum("floatcc", floatcc_values)
|
||||
.doc("A floating point comparison condition code")
|
||||
.rust_field_name("cond")
|
||||
.rust_type("ir::condcodes::FloatCC")
|
||||
Builder::new_enum("cond", "ir::condcodes::FloatCC", floatcc_values)
|
||||
.with_doc("A floating point comparison condition code")
|
||||
.build()
|
||||
},
|
||||
|
||||
memflags: Builder::new_imm("memflags")
|
||||
.doc("Memory operation flags")
|
||||
.rust_field_name("flags")
|
||||
.rust_type("ir::MemFlags")
|
||||
memflags: Builder::new_imm("flags", "ir::MemFlags")
|
||||
.with_doc("Memory operation flags")
|
||||
.build(),
|
||||
|
||||
regunit: Builder::new_imm("regunit")
|
||||
.doc("A register unit in the target ISA")
|
||||
.rust_type("isa::RegUnit")
|
||||
regunit: Builder::new_imm("regunit", "isa::RegUnit")
|
||||
.with_doc("A register unit in the target ISA")
|
||||
.build(),
|
||||
|
||||
trapcode: {
|
||||
@@ -178,10 +166,8 @@ impl Immediates {
|
||||
trapcode_values.insert("heap_oob", "HeapOutOfBounds");
|
||||
trapcode_values.insert("int_ovf", "IntegerOverflow");
|
||||
trapcode_values.insert("int_divz", "IntegerDivisionByZero");
|
||||
Builder::new_enum("trapcode", trapcode_values)
|
||||
.doc("A trap reason code.")
|
||||
.rust_field_name("code")
|
||||
.rust_type("ir::TrapCode")
|
||||
Builder::new_enum("code", "ir::TrapCode", trapcode_values)
|
||||
.with_doc("A trap reason code.")
|
||||
.build()
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user