Mesa (main): aco/ir: Generalize (un)ordered_swapped.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 27 15:16:58 UTC 2022


Module: Mesa
Branch: main
Commit: 590b93ae65d159b6fd3ad83f2637ce6e5d429d3e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=590b93ae65d159b6fd3ad83f2637ce6e5d429d3e

Author: Georg Lehmann <dadschoorse at gmail.com>
Date:   Wed Jul 27 11:43:03 2022 +0200

aco/ir: Generalize (un)ordered_swapped.

Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17763>

---

 src/amd/compiler/aco_ir.cpp | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp
index b74af9417d8..905a8d93723 100644
--- a/src/amd/compiler/aco_ir.cpp
+++ b/src/amd/compiler/aco_ir.cpp
@@ -604,8 +604,7 @@ needs_exec_mask(const Instruction* instr)
 struct CmpInfo {
    aco_opcode ordered;
    aco_opcode unordered;
-   aco_opcode ordered_swapped;
-   aco_opcode unordered_swapped;
+   aco_opcode swapped;
    aco_opcode inverse;
    aco_opcode f32;
    unsigned size;
@@ -616,8 +615,7 @@ get_cmp_info(aco_opcode op, CmpInfo* info)
 {
    info->ordered = aco_opcode::num_opcodes;
    info->unordered = aco_opcode::num_opcodes;
-   info->ordered_swapped = aco_opcode::num_opcodes;
-   info->unordered_swapped = aco_opcode::num_opcodes;
+   info->swapped = aco_opcode::num_opcodes;
    switch (op) {
       // clang-format off
 #define CMP2(ord, unord, ord_swap, unord_swap, sz)                                                 \
@@ -625,8 +623,8 @@ get_cmp_info(aco_opcode op, CmpInfo* info)
    case aco_opcode::v_cmp_n##unord##_f##sz:                                                        \
       info->ordered = aco_opcode::v_cmp_##ord##_f##sz;                                             \
       info->unordered = aco_opcode::v_cmp_n##unord##_f##sz;                                        \
-      info->ordered_swapped = aco_opcode::v_cmp_##ord_swap##_f##sz;                                \
-      info->unordered_swapped = aco_opcode::v_cmp_n##unord_swap##_f##sz;                           \
+      info->swapped = op == aco_opcode::v_cmp_##ord##_f##sz ? aco_opcode::v_cmp_##ord_swap##_f##sz \
+                                                      : aco_opcode::v_cmp_n##unord_swap##_f##sz;   \
       info->inverse = op == aco_opcode::v_cmp_n##unord##_f##sz ? aco_opcode::v_cmp_##unord##_f##sz \
                                                                : aco_opcode::v_cmp_n##ord##_f##sz; \
       info->f32 = op == aco_opcode::v_cmp_##ord##_f##sz ? aco_opcode::v_cmp_##ord##_f32            \
@@ -752,13 +750,8 @@ can_swap_operands(aco_ptr<Instruction>& instr, aco_opcode* new_op)
    case aco_opcode::v_sub_u32: *new_op = aco_opcode::v_subrev_u32; return true;
    default: {
       CmpInfo info;
-      get_cmp_info(instr->opcode, &info);
-      if (info.ordered == instr->opcode) {
-         *new_op = info.ordered_swapped;
-         return true;
-      }
-      if (info.unordered == instr->opcode) {
-         *new_op = info.unordered_swapped;
+      if (get_cmp_info(instr->opcode, &info) && info.swapped != aco_opcode::num_opcodes) {
+         *new_op = info.swapped;
          return true;
       }
       return false;



More information about the mesa-commit mailing list