[PATCH] D80754: AMDGPU/GlobalISel: cmp/select method for insert element

Stanislav Mekhanoshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 28 13:14:06 PDT 2020


rampitec marked an inline comment as done.
rampitec added inline comments.


================
Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/insertelement.ll:331
+; GPRIDX-NEXT:    v_mov_b32_e32 v1, s2
+; GPRIDX-NEXT:    s_cmp_eq_u32 s10, 2
+; GPRIDX-NEXT:    v_cndmask_b32_e32 v8, v1, v0, vcc
----------------
I assume this will get better when it is moved after RegBankSelect. The issue is copies to VCC inserted by RegBankSelect. The code does not need to be like this, the same code in SelectionDAG creates here:


```
; %bb.0:                                ; %entry
        v_mov_b32_e32 v1, s0
        v_cmp_eq_u32_e64 vcc, s8, 0
        v_cndmask_b32_e32 v8, v1, v0, vcc
        v_mov_b32_e32 v1, s1
        v_cmp_eq_u32_e64 vcc, s8, 1
        v_cndmask_b32_e32 v1, v1, v0, vcc
        v_mov_b32_e32 v2, s2
        v_cmp_eq_u32_e64 vcc, s8, 2
        v_cndmask_b32_e32 v2, v2, v0, vcc
        v_mov_b32_e32 v3, s3
        v_cmp_eq_u32_e64 vcc, s8, 3
        v_cndmask_b32_e32 v3, v3, v0, vcc
        v_mov_b32_e32 v4, s4
        v_cmp_eq_u32_e64 vcc, s8, 4
        v_cndmask_b32_e32 v4, v4, v0, vcc
        v_mov_b32_e32 v5, s5
        v_cmp_eq_u32_e64 vcc, s8, 5
        v_cndmask_b32_e32 v5, v5, v0, vcc
        v_mov_b32_e32 v6, s6
        v_cmp_eq_u32_e64 vcc, s8, 6
        v_cndmask_b32_e32 v6, v6, v0, vcc
        v_mov_b32_e32 v7, s7
        v_cmp_eq_u32_e64 vcc, s8, 7
        v_cndmask_b32_e32 v7, v7, v0, vcc
        v_mov_b32_e32 v0, v8
        ; return to shader part epilog
```


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80754/new/

https://reviews.llvm.org/D80754





More information about the llvm-commits mailing list