mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 02:20:11 +01:00
nak: Add OpBreak
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998>
This commit is contained in:
parent
3957124492
commit
95f368a105
3 changed files with 26 additions and 2 deletions
|
|
@ -1615,6 +1615,12 @@ impl SM75Instr {
|
|||
self.set_bit(84, op.clear);
|
||||
}
|
||||
|
||||
fn encode_break(&mut self, op: &OpBreak) {
|
||||
self.set_opcode(0x942);
|
||||
self.set_field(16..20, op.bar.idx());
|
||||
self.set_pred_src(87..90, 90, op.cond);
|
||||
}
|
||||
|
||||
fn encode_bssy(
|
||||
&mut self,
|
||||
op: &OpBSSy,
|
||||
|
|
@ -1824,6 +1830,7 @@ impl SM75Instr {
|
|||
Op::Ipa(op) => si.encode_ipa(&op),
|
||||
Op::MemBar(op) => si.encode_membar(&op),
|
||||
Op::BMov(op) => si.encode_bmov(&op),
|
||||
Op::Break(op) => si.encode_break(&op),
|
||||
Op::BSSy(op) => si.encode_bssy(&op, ip, labels),
|
||||
Op::BSync(op) => si.encode_bsync(&op),
|
||||
Op::Bra(op) => si.encode_bra(&op, ip, labels),
|
||||
|
|
|
|||
|
|
@ -3515,6 +3515,21 @@ impl fmt::Display for OpBMov {
|
|||
}
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(SrcsAsSlice, DstsAsSlice)]
|
||||
pub struct OpBreak {
|
||||
pub bar: BarRef,
|
||||
|
||||
#[src_type(Pred)]
|
||||
pub cond: Src,
|
||||
}
|
||||
|
||||
impl fmt::Display for OpBreak {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "BREAK {} {}", self.cond, self.bar)
|
||||
}
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(SrcsAsSlice, DstsAsSlice)]
|
||||
pub struct OpBSSy {
|
||||
|
|
@ -4108,6 +4123,7 @@ pub enum Op {
|
|||
Ipa(OpIpa),
|
||||
MemBar(OpMemBar),
|
||||
BMov(OpBMov),
|
||||
Break(OpBreak),
|
||||
BSSy(OpBSSy),
|
||||
BSync(OpBSync),
|
||||
Bra(OpBra),
|
||||
|
|
@ -4462,6 +4478,7 @@ impl Instr {
|
|||
| Op::AtomCas(_)
|
||||
| Op::MemBar(_)
|
||||
| Op::Kill(_)
|
||||
| Op::Break(_)
|
||||
| Op::BSSy(_)
|
||||
| Op::BSync(_)
|
||||
| Op::Bra(_)
|
||||
|
|
@ -4541,7 +4558,7 @@ impl Instr {
|
|||
| Op::MemBar(_) => false,
|
||||
|
||||
// Control-flow ops
|
||||
Op::BMov(_) | Op::BSSy(_) | Op::BSync(_) => false,
|
||||
Op::BMov(_) | Op::Break(_) | Op::BSSy(_) | Op::BSync(_) => false,
|
||||
Op::Bra(_) | Op::Exit(_) => true,
|
||||
Op::WarpSync(_) => false,
|
||||
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ fn legalize_instr(b: &mut impl SSABuilder, instr: &mut Instr) {
|
|||
copy_src_if_not_reg(b, &mut op.handle, RegFile::GPR);
|
||||
}
|
||||
Op::Ldc(_) => (), // Nothing to do
|
||||
Op::BMov(_) | Op::BSSy(_) | Op::BSync(_) => (), // Nothing to do
|
||||
Op::BMov(_) | Op::Break(_) | Op::BSSy(_) | Op::BSync(_) => (),
|
||||
Op::Copy(_) => (), // Nothing to do
|
||||
_ => {
|
||||
let src_types = instr.src_types();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue