aco: disable sdwa on gfx11
Instead of SDWA v_mov_b32/v_xor_b32, we can use a combination of v_add_u16/v_sub_u16 (add/sub swap, similar to xor swap) and v_perm_b32 with a literal. I don't know yet if GFX11 adds any new instructions which makes this easier, but this approach should have full functionality. Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16595>
This commit is contained in:
@@ -110,6 +110,15 @@ sendmsg_gs_done(bool cut, bool emit, unsigned stream)
|
||||
return (sendmsg)((unsigned)_sendmsg_gs_done | (cut << 4) | (emit << 5) | (stream << 8));
|
||||
}
|
||||
|
||||
enum bperm_swiz {
|
||||
bperm_b1_sign = 8,
|
||||
bperm_b3_sign = 9,
|
||||
bperm_b5_sign = 10,
|
||||
bperm_b7_sign = 11,
|
||||
bperm_0 = 12,
|
||||
bperm_255 = 13,
|
||||
};
|
||||
|
||||
class Builder {
|
||||
public:
|
||||
struct Result {
|
||||
|
Reference in New Issue
Block a user