nak: Simplify shl64 lowering on Maxwell
Signed-off-by: Lorenzo Rossi <snowycoder@gmail.com> Reviewed-by: Mel Henning <mhenning@darkrefraction.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34137>
This commit is contained in:
@@ -161,21 +161,16 @@ pub trait SSABuilder: Builder {
|
||||
});
|
||||
} else {
|
||||
// On Maxwell and earlier, shf.l doesn't work without .high so we
|
||||
// have to use a regular 32-bit shift here. 32-bit shift doesn't
|
||||
// have the NIR wrap semantics so we need to wrap manually.
|
||||
let shift = if let SrcRef::Imm32(imm) = shift.src_ref {
|
||||
(imm & 0x3f).into()
|
||||
} else {
|
||||
self.lop2(LogicOp2::And, shift, 0x3f.into()).into()
|
||||
};
|
||||
// have to use only the high parts, hard-coding the lower parts
|
||||
// to rZ
|
||||
self.push_op(OpShf {
|
||||
dst: dst[0].into(),
|
||||
low: 0.into(),
|
||||
high: x[0].into(),
|
||||
shift,
|
||||
right: false,
|
||||
wrap: false,
|
||||
data_type: IntType::U32,
|
||||
wrap: true,
|
||||
data_type: IntType::U64,
|
||||
dst_high: true,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user