mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 22:10:11 +01:00
nak: One of the predicates in IADD3 is a destination
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998>
This commit is contained in:
parent
9541036507
commit
f26228fca3
2 changed files with 18 additions and 9 deletions
|
|
@ -147,7 +147,13 @@ impl SM75Instr {
|
|||
}
|
||||
|
||||
fn set_pred_dst(&mut self, range: Range<usize>, dst: Dst) {
|
||||
self.set_pred_reg(range, *dst.as_reg().unwrap());
|
||||
match dst {
|
||||
Dst::Zero => {
|
||||
self.set_pred_reg(range, RegRef::zero(RegFile::Pred, 1));
|
||||
}
|
||||
Dst::Reg(reg) => self.set_pred_reg(range, reg),
|
||||
_ => panic!("Not a register"),
|
||||
}
|
||||
}
|
||||
|
||||
fn set_pred_src(&mut self, range: Range<usize>, not_bit: isize, src: Src) {
|
||||
|
|
@ -437,8 +443,8 @@ impl SM75Instr {
|
|||
);
|
||||
}
|
||||
|
||||
self.set_pred_src(81..84, -1, op.carry[0]);
|
||||
self.set_pred_src(84..87, -1, op.carry[1]);
|
||||
self.set_pred_dst(81..84, op.overflow);
|
||||
self.set_pred_src(84..87, -1, op.carry);
|
||||
}
|
||||
|
||||
fn set_int_cmp_op(&mut self, range: Range<usize>, op: IntCmpOp) {
|
||||
|
|
|
|||
|
|
@ -885,21 +885,22 @@ impl fmt::Display for OpFSetP {
|
|||
#[derive(SrcsAsSlice, DstsAsSlice)]
|
||||
pub struct OpIAdd3 {
|
||||
pub dst: Dst,
|
||||
pub overflow: Dst,
|
||||
pub srcs: [Src; 3],
|
||||
pub carry: [Src; 2],
|
||||
pub carry: Src,
|
||||
}
|
||||
|
||||
impl fmt::Display for OpIAdd3 {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"IADD3 {} {{ {}, {}, {}, {}, {} }}",
|
||||
"IADD3 {{ {} {} }} {{ {}, {}, {}, {} }}",
|
||||
self.dst,
|
||||
self.overflow,
|
||||
self.srcs[0],
|
||||
self.srcs[1],
|
||||
self.srcs[2],
|
||||
self.carry[0],
|
||||
self.carry[1]
|
||||
self.carry,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1471,8 +1472,9 @@ impl Instr {
|
|||
pub fn new_iadd(dst: Dst, x: Src, y: Src) -> Instr {
|
||||
Instr::new(Op::IAdd3(OpIAdd3 {
|
||||
dst: dst,
|
||||
overflow: Dst::Zero,
|
||||
srcs: [Src::new_zero(), x, y],
|
||||
carry: [Src::new_zero(); 2],
|
||||
carry: Src::new_zero(),
|
||||
}))
|
||||
}
|
||||
|
||||
|
|
@ -1783,8 +1785,9 @@ impl Shader {
|
|||
Op::IMov(mov) => {
|
||||
vec![Instr::new(Op::IAdd3(OpIAdd3 {
|
||||
dst: mov.dst,
|
||||
overflow: Dst::Zero,
|
||||
srcs: [Src::new_zero(), mov.src, Src::new_zero()],
|
||||
carry: [Src::new_zero(); 2],
|
||||
carry: Src::new_zero(),
|
||||
}))]
|
||||
}
|
||||
Op::Vec(vec) => {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue