Rename the 'repr' module to 'ir'.
This module and its submodules define the Intermidiate Representation of the Cretonne IL.
This commit is contained in:
@@ -22,9 +22,9 @@
|
|||||||
//! Here Ebb1 and Ebb2 would each have a single predecessor denoted as (Ebb0, `brz vx, Ebb1`)
|
//! Here Ebb1 and Ebb2 would each have a single predecessor denoted as (Ebb0, `brz vx, Ebb1`)
|
||||||
//! and (Ebb0, `jmp Ebb2`) respectively.
|
//! and (Ebb0, `jmp Ebb2`) respectively.
|
||||||
|
|
||||||
use repr::Function;
|
use ir::Function;
|
||||||
use repr::entities::{Inst, Ebb};
|
use ir::entities::{Inst, Ebb};
|
||||||
use repr::instructions::InstructionData;
|
use ir::instructions::InstructionData;
|
||||||
use entity_map::EntityMap;
|
use entity_map::EntityMap;
|
||||||
|
|
||||||
/// A basic block denoted by its enclosing Ebb and last instruction.
|
/// A basic block denoted by its enclosing Ebb and last instruction.
|
||||||
@@ -158,7 +158,7 @@ impl<'a> Iterator for CFGPredecessorsIter<'a> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use repr::Function;
|
use ir::Function;
|
||||||
|
|
||||||
use test_utils::make_inst;
|
use test_utils::make_inst;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
//! Data flow graph tracking Instructions, Values, and EBBs.
|
//! Data flow graph tracking Instructions, Values, and EBBs.
|
||||||
|
|
||||||
use entity_map::EntityMap;
|
use entity_map::EntityMap;
|
||||||
use repr::entities::{Ebb, Inst, Value, NO_VALUE, ExpandedValue};
|
use ir::entities::{Ebb, Inst, Value, NO_VALUE, ExpandedValue};
|
||||||
use repr::instructions::InstructionData;
|
use ir::instructions::InstructionData;
|
||||||
use repr::types::Type;
|
use ir::types::Type;
|
||||||
use std::ops::{Index, IndexMut};
|
use std::ops::{Index, IndexMut};
|
||||||
use std::u16;
|
use std::u16;
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ impl DataFlowGraph {
|
|||||||
|
|
||||||
/// Get the type of a value.
|
/// Get the type of a value.
|
||||||
pub fn value_type(&self, v: Value) -> Type {
|
pub fn value_type(&self, v: Value) -> Type {
|
||||||
use repr::entities::ExpandedValue::*;
|
use ir::entities::ExpandedValue::*;
|
||||||
match v.expand() {
|
match v.expand() {
|
||||||
Direct(i) => self.insts[i].first_type(),
|
Direct(i) => self.insts[i].first_type(),
|
||||||
Table(i) => {
|
Table(i) => {
|
||||||
@@ -75,7 +75,7 @@ impl DataFlowGraph {
|
|||||||
/// This is either the instruction that defined it or the Ebb that has the value as an
|
/// This is either the instruction that defined it or the Ebb that has the value as an
|
||||||
/// argument.
|
/// argument.
|
||||||
pub fn value_def(&self, v: Value) -> ValueDef {
|
pub fn value_def(&self, v: Value) -> ValueDef {
|
||||||
use repr::entities::ExpandedValue::*;
|
use ir::entities::ExpandedValue::*;
|
||||||
match v.expand() {
|
match v.expand() {
|
||||||
Direct(inst) => ValueDef::Res(inst, 0),
|
Direct(inst) => ValueDef::Res(inst, 0),
|
||||||
Table(idx) => {
|
Table(idx) => {
|
||||||
@@ -339,8 +339,8 @@ impl EbbData {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use repr::types;
|
use ir::types;
|
||||||
use repr::instructions::{Opcode, InstructionData};
|
use ir::instructions::{Opcode, InstructionData};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn make_inst() {
|
fn make_inst() {
|
||||||
@@ -10,10 +10,10 @@ use std::fmt::{self, Display, Formatter};
|
|||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
|
|
||||||
use repr::entities::*;
|
use ir::entities::*;
|
||||||
use repr::immediates::*;
|
use ir::immediates::*;
|
||||||
use repr::condcodes::*;
|
use ir::condcodes::*;
|
||||||
use repr::types::{self, Type};
|
use ir::types::{self, Type};
|
||||||
|
|
||||||
// Include code generated by `meta/gen_instr.py`. This file contains:
|
// Include code generated by `meta/gen_instr.py`. This file contains:
|
||||||
//
|
//
|
||||||
@@ -560,7 +560,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn value_set() {
|
fn value_set() {
|
||||||
use repr::types::*;
|
use ir::types::*;
|
||||||
|
|
||||||
let vts = ValueTypeSet {
|
let vts = ValueTypeSet {
|
||||||
allow_scalars: true,
|
allow_scalars: true,
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
use std::iter::{Iterator, IntoIterator};
|
use std::iter::{Iterator, IntoIterator};
|
||||||
use entity_map::{EntityMap, EntityRef};
|
use entity_map::{EntityMap, EntityRef};
|
||||||
use repr::entities::{Ebb, NO_EBB, Inst, NO_INST};
|
use ir::entities::{Ebb, NO_EBB, Inst, NO_INST};
|
||||||
|
|
||||||
/// The `Layout` struct determines the layout of EBBs and instructions in a function. It does not
|
/// The `Layout` struct determines the layout of EBBs and instructions in a function. It does not
|
||||||
/// contain definitions of instructions or EBBs, but depends on `Inst` and `Ebb` entity references
|
/// contain definitions of instructions or EBBs, but depends on `Inst` and `Ebb` entity references
|
||||||
@@ -242,7 +242,7 @@ impl<'a> Iterator for Insts<'a> {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::Layout;
|
use super::Layout;
|
||||||
use entity_map::EntityRef;
|
use entity_map::EntityRef;
|
||||||
use repr::entities::{Ebb, Inst};
|
use ir::entities::{Ebb, Inst};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn append_ebb() {
|
fn append_ebb() {
|
||||||
@@ -8,11 +8,11 @@ pub mod instructions;
|
|||||||
pub mod dfg;
|
pub mod dfg;
|
||||||
pub mod layout;
|
pub mod layout;
|
||||||
|
|
||||||
use repr::types::{FunctionName, Signature};
|
use ir::types::{FunctionName, Signature};
|
||||||
use entity_map::EntityRef;
|
use entity_map::EntityRef;
|
||||||
use repr::entities::{Ebb, NO_EBB, StackSlot};
|
use ir::entities::{Ebb, NO_EBB, StackSlot};
|
||||||
use repr::dfg::DataFlowGraph;
|
use ir::dfg::DataFlowGraph;
|
||||||
use repr::layout::Layout;
|
use ir::layout::Layout;
|
||||||
use std::fmt::{self, Debug, Display, Formatter};
|
use std::fmt::{self, Debug, Display, Formatter};
|
||||||
use std::ops::Index;
|
use std::ops::Index;
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
pub const VERSION: &'static str = env!("CARGO_PKG_VERSION");
|
pub const VERSION: &'static str = env!("CARGO_PKG_VERSION");
|
||||||
|
|
||||||
pub mod repr;
|
pub mod ir;
|
||||||
pub mod write;
|
pub mod write;
|
||||||
pub mod cfg;
|
pub mod cfg;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
//! Helper functions for generating dummy instructions.
|
//! Helper functions for generating dummy instructions.
|
||||||
|
|
||||||
use repr::Function;
|
use ir::Function;
|
||||||
use repr::entities::{Ebb, Inst, NO_VALUE};
|
use ir::entities::{Ebb, Inst, NO_VALUE};
|
||||||
use repr::instructions::{InstructionData, Opcode, VariableArgs, JumpData, BranchData};
|
use ir::instructions::{InstructionData, Opcode, VariableArgs, JumpData, BranchData};
|
||||||
use repr::types;
|
use ir::types;
|
||||||
|
|
||||||
pub fn jump(func: &mut Function, dest: Ebb) -> Inst {
|
pub fn jump(func: &mut Function, dest: Ebb) -> Inst {
|
||||||
func.dfg.make_inst(InstructionData::Jump {
|
func.dfg.make_inst(InstructionData::Jump {
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
//! `cretonne-reader` crate.
|
//! `cretonne-reader` crate.
|
||||||
|
|
||||||
use std::io::{self, Write};
|
use std::io::{self, Write};
|
||||||
use repr::Function;
|
use ir::Function;
|
||||||
use repr::entities::{Inst, Ebb, Value};
|
use ir::entities::{Inst, Ebb, Value};
|
||||||
use repr::types::Type;
|
use ir::types::Type;
|
||||||
|
|
||||||
pub type Result = io::Result<()>;
|
pub type Result = io::Result<()>;
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ pub fn write_instruction(w: &mut Write, func: &Function, inst: Inst) -> Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Then the operands, depending on format.
|
// Then the operands, depending on format.
|
||||||
use repr::instructions::InstructionData::*;
|
use ir::instructions::InstructionData::*;
|
||||||
match func.dfg[inst] {
|
match func.dfg[inst] {
|
||||||
Nullary { .. } => writeln!(w, ""),
|
Nullary { .. } => writeln!(w, ""),
|
||||||
Unary { arg, .. } => writeln!(w, " {}", arg),
|
Unary { arg, .. } => writeln!(w, " {}", arg),
|
||||||
@@ -217,8 +217,8 @@ pub fn write_instruction(w: &mut Write, func: &Function, inst: Inst) -> Result {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use super::{needs_quotes, escaped};
|
use super::{needs_quotes, escaped};
|
||||||
use repr::{Function, StackSlotData};
|
use ir::{Function, StackSlotData};
|
||||||
use repr::types;
|
use ir::types;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn quoting() {
|
fn quoting() {
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
// ====--------------------------------------------------------------------------------------====//
|
// ====--------------------------------------------------------------------------------------====//
|
||||||
|
|
||||||
use std::str::CharIndices;
|
use std::str::CharIndices;
|
||||||
use cretonne::repr::types;
|
use cretonne::ir::types;
|
||||||
use cretonne::repr::entities::{Value, Ebb};
|
use cretonne::ir::entities::{Value, Ebb};
|
||||||
|
|
||||||
/// The location of a `Token` or `Error`.
|
/// The location of a `Token` or `Error`.
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
@@ -373,8 +373,8 @@ impl<'a> Lexer<'a> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use cretonne::repr::types;
|
use cretonne::ir::types;
|
||||||
use cretonne::repr::entities::{Value, Ebb};
|
use cretonne::ir::entities::{Value, Ebb};
|
||||||
|
|
||||||
fn token<'a>(token: Token<'a>, line: usize) -> Option<Result<LocatedToken<'a>, LocatedError>> {
|
fn token<'a>(token: Token<'a>, line: usize) -> Option<Result<LocatedToken<'a>, LocatedError>> {
|
||||||
Some(super::token(token, Location { line_number: line }))
|
Some(super::token(token, Location { line_number: line }))
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ use std::fmt::{self, Display, Formatter};
|
|||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::u32;
|
use std::u32;
|
||||||
use lexer::{self, Lexer, Token};
|
use lexer::{self, Lexer, Token};
|
||||||
use cretonne::repr::types::{Type, VOID, FunctionName, Signature, ArgumentType, ArgumentExtension};
|
use cretonne::ir::types::{Type, VOID, FunctionName, Signature, ArgumentType, ArgumentExtension};
|
||||||
use cretonne::repr::immediates::{Imm64, Ieee32, Ieee64};
|
use cretonne::ir::immediates::{Imm64, Ieee32, Ieee64};
|
||||||
use cretonne::repr::entities::*;
|
use cretonne::ir::entities::*;
|
||||||
use cretonne::repr::instructions::{Opcode, InstructionFormat, InstructionData, VariableArgs,
|
use cretonne::ir::instructions::{Opcode, InstructionFormat, InstructionData, VariableArgs,
|
||||||
JumpData, BranchData, ReturnData};
|
JumpData, BranchData, ReturnData};
|
||||||
use cretonne::repr::{Function, StackSlotData};
|
use cretonne::ir::{Function, StackSlotData};
|
||||||
|
|
||||||
pub use lexer::Location;
|
pub use lexer::Location;
|
||||||
|
|
||||||
@@ -1039,7 +1039,7 @@ impl<'a> Parser<'a> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use cretonne::repr::types::{self, ArgumentType, ArgumentExtension};
|
use cretonne::ir::types::{self, ArgumentType, ArgumentExtension};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn argument_type() {
|
fn argument_type() {
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ use std::fs::File;
|
|||||||
use std::io::{Read, Write, stdout};
|
use std::io::{Read, Write, stdout};
|
||||||
|
|
||||||
use CommandResult;
|
use CommandResult;
|
||||||
use cretonne::repr::Function;
|
use cretonne::ir::Function;
|
||||||
use cretonne::cfg::ControlFlowGraph;
|
use cretonne::cfg::ControlFlowGraph;
|
||||||
use cretonne::repr::instructions::InstructionData;
|
use cretonne::ir::instructions::InstructionData;
|
||||||
use cton_reader::parser::Parser;
|
use cton_reader::parser::Parser;
|
||||||
|
|
||||||
pub fn run(files: Vec<String>) -> CommandResult {
|
pub fn run(files: Vec<String>) -> CommandResult {
|
||||||
|
|||||||
Reference in New Issue
Block a user