forked from OSchip/llvm-project
[AMDGPU] Avoid using s_cmpk when src0 is not register
The hardware spec require src0 of s_cmpk should be a register. So, we should not optimize s_cmp to s_cmpk if src0 is not register. Patch by Ruiling Song!
This commit is contained in:
parent
3667d87a33
commit
1658b8d7dd
|
@ -185,6 +185,11 @@ static void shrinkScalarCompare(const SIInstrInfo *TII, MachineInstr &MI) {
|
|||
if (!MI.getOperand(0).isReg())
|
||||
TII->commuteInstruction(MI, false, 0, 1);
|
||||
|
||||
// cmpk requires src0 to be a register
|
||||
const MachineOperand &Src0 = MI.getOperand(0);
|
||||
if (!Src0.isReg())
|
||||
return;
|
||||
|
||||
const MachineOperand &Src1 = MI.getOperand(1);
|
||||
if (!Src1.isImm())
|
||||
return;
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
||||
# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass si-shrink-instructions -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
|
||||
|
||||
---
|
||||
name: not_shrink_icmp
|
||||
body: |
|
||||
bb.0:
|
||||
; GCN-LABEL: name: not_shrink_icmp
|
||||
; GCN: S_CMP_GT_I32 1, 65, implicit-def $scc
|
||||
S_CMP_GT_I32 1, 65, implicit-def $scc
|
||||
...
|
Loading…
Reference in New Issue