Skip to content

'pc' Dialect

Dialect for representing ghidra pcode operations. [TOC]

Operations

pc.block (::patchestry::pc::BlockOp)

Syntax:

operation ::= `pc.block` $sym_name attr-dict `:` $instructions

Traits: NoTerminator

Attributes:

AttributeMLIR TypeDescription
sym_name::mlir::StringAttrstring attribute

pc.bool_negate (::patchestry::pc::BoolNegateOp)

Syntax:

operation ::= `pc.bool_negate` $op attr-dict `:` functional-type(operands, results)

Traits: SameOperandsAndResultType

Interfaces: InferTypeOpInterface

Operands:

Operand Description
op signless integer

Results:

Result Description
result signless integer

pc.branch (::patchestry::pc::BranchOp)

Pcode BRANCH operation

Syntax:

operation ::= `pc.branch` $addr attr-dict `:` type(operands)

TBD

Operands:

Operand Description
addr signless integer

pc.call (::patchestry::pc::CallOp)

Pcode CALL operation

Syntax:

operation ::= `pc.call` $addr attr-dict `:` type(operands)

TBD

Operands:

Operand Description
addr signless integer

pc.cbranch (::patchestry::pc::CBranchOp)

Pcode CBRANCH operation

Syntax:

operation ::= `pc.cbranch` $addr `,` $cond attr-dict `:` type(operands)

TBD

Operands:

Operand Description
addr signless integer
cond signless integer

pc.const (::patchestry::pc::ConstOp)

Syntax:

operation ::= `pc.const` attr-dict `:` type($result)

Traits: ConstantLike

Interfaces: InferTypeOpInterface

Attributes:

AttributeMLIR TypeDescription
value::mlir::TypedAttr
TypedAttr instance{{% markdown %}} This interface is used for attributes that have a type. The type of an attribute is understood to represent the type of the data contained in the attribute and is often used as the type of a value with this data. {{% /markdown %}}

Results:

Result Description
result any type

pc.copy (::patchestry::pc::CopyOp)

Syntax:

operation ::= `pc.copy` $op attr-dict `:` functional-type(operands, results)

Traits: SameOperandsAndResultType

Interfaces: InferTypeOpInterface

Operands:

Operand Description
op signless integer

Results:

Result Description
result signless integer

pc.func (::patchestry::pc::FuncOp)

Syntax:

operation ::= `pc.func` $sym_name attr-dict `:` $blocks

Traits: IsolatedFromAbove, NoTerminator, SymbolTable

Interfaces: Symbol

Attributes:

AttributeMLIR TypeDescription
sym_name::mlir::StringAttrstring attribute

pc.instruction (::patchestry::pc::InstOp)

Syntax:

operation ::= `pc.instruction` attr-dict `:` $semantics

Attributes:

AttributeMLIR TypeDescription
inst_mnemonic::mlir::StringAttrstring attribute

pc.int_add (::patchestry::pc::IntAddOp)

Syntax:

operation ::= `pc.int_add` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.int_and (::patchestry::pc::IntAndOp)

Syntax:

operation ::= `pc.int_and` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.int_equal (::patchestry::pc::IntEqualOp)

Syntax:

operation ::= `pc.int_equal` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.int_less (::patchestry::pc::IntLessOp)

Syntax:

operation ::= `pc.int_less` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.int_sborrow (::patchestry::pc::IntSBorrowOp)

Syntax:

operation ::= `pc.int_sborrow` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.int_sless (::patchestry::pc::IntSLessOp)

Syntax:

operation ::= `pc.int_sless` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.int_sub (::patchestry::pc::IntSubOp)

Syntax:

operation ::= `pc.int_sub` $lhs `,` $rhs attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
lhs signless integer
rhs signless integer

Results:

Result Description
result signless integer

pc.load (::patchestry::pc::LoadOp)

Pcode LOAD operation

Syntax:

operation ::= `pc.load` $addr_space `,` $addr attr-dict `:` functional-type(operands, results)

TBD

Operands:

Operand Description
addr_space signless integer
addr signless integer

Results:

Result Description
result signless integer

pc.mem (::patchestry::pc::MemOp)

Syntax:

operation ::= `pc.mem` attr-dict `:` type($result)

Attributes:

AttributeMLIR TypeDescription
addr_space::mlir::StringAttrstring attribute
addr::mlir::IntegerAttr64-bit signless integer attribute
size::mlir::IntegerAttr8-bit signless integer attribute

Results:

Result Description
result any type

pc.popcount (::patchestry::pc::PopcountOp)

Syntax:

operation ::= `pc.popcount` $op attr-dict `:` functional-type(operands, results)

Operands:

Operand Description
op signless integer

Results:

Result Description
result signless integer

pc.reg (::patchestry::pc::RegOp)

Syntax:

operation ::= `pc.reg` attr-dict `:` type($result)

Attributes:

AttributeMLIR TypeDescription
addr_space::mlir::StringAttrstring attribute
addr::mlir::IntegerAttr64-bit signless integer attribute
size::mlir::IntegerAttr8-bit signless integer attribute

Results:

Result Description
result any type

pc.return (::patchestry::pc::ReturnOp)

Pcode RETURN operation

Syntax:

operation ::= `pc.return` $varnode attr-dict `:` type(operands)

TBD

Operands:

Operand Description
varnode signless integer

pc.store (::patchestry::pc::StoreOp)

Pcode STORE operation

Syntax:

operation ::= `pc.store` $addr_space `,` $addr `,` $data attr-dict `:` type(operands)

TBD

Operands:

Operand Description
addr_space signless integer
addr signless integer
data signless integer

pc.var (::patchestry::pc::VarOp)

Syntax:

operation ::= `pc.var` attr-dict `:` type($result)

Attributes:

AttributeMLIR TypeDescription
addr_space::mlir::StringAttrstring attribute
addr::mlir::IntegerAttr64-bit signless integer attribute
size::mlir::IntegerAttr8-bit signless integer attribute

Results:

Result Description
result any type

Types

MemType

Syntax: !pc.mem

RegType

Syntax: !pc.reg

VarType

Syntax: !pc.var