Remove the vconst instruction and the UnaryImmVector format.
No instruction sets actually have single instructions for materializing vector constants. You always need to use a constant pool. Cretonne doesn't have constant pools yet, but it will in the future, and that is how vector constants should be represented.
This commit is contained in:
@@ -11,7 +11,7 @@ use std::str::FromStr;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
|
||||
use ir::{Value, Type, Ebb, JumpTable, SigRef, FuncRef};
|
||||
use ir::immediates::{Imm64, Uimm8, Ieee32, Ieee64, ImmVector};
|
||||
use ir::immediates::{Imm64, Uimm8, Ieee32, Ieee64};
|
||||
use ir::condcodes::*;
|
||||
use ir::types;
|
||||
use ir::DataFlowGraph;
|
||||
@@ -123,11 +123,6 @@ pub enum InstructionData {
|
||||
ty: Type,
|
||||
imm: Ieee64,
|
||||
},
|
||||
UnaryImmVector {
|
||||
opcode: Opcode,
|
||||
ty: Type,
|
||||
data: Box<UnaryImmVectorData>,
|
||||
},
|
||||
UnarySplit {
|
||||
opcode: Opcode,
|
||||
ty: Type,
|
||||
@@ -294,23 +289,6 @@ impl Default for VariableArgs {
|
||||
}
|
||||
}
|
||||
|
||||
/// Payload data for `vconst`.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct UnaryImmVectorData {
|
||||
/// Raw vector data.
|
||||
pub imm: ImmVector,
|
||||
}
|
||||
|
||||
impl Display for UnaryImmVectorData {
|
||||
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
|
||||
write!(f, "#")?;
|
||||
for b in &self.imm {
|
||||
write!(f, "{:02x}", b)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
/// Payload data for ternary instructions with multiple results, such as `iadd_carry`.
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct TernaryOverflowData {
|
||||
|
||||
Reference in New Issue
Block a user