llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.28k stars 11.68k forks source link

[X86] Missing rCX use/defs from LOOP instructions #60208

Open RKSimon opened 1 year ago

RKSimon commented 1 year ago
// Loop instructions
let isBranch = 1, isTerminator = 1, SchedRW = [WriteJump] in {
def LOOP   : Ii8PCRel<0xE2, RawFrm, (outs), (ins brtarget8:$dst), "loop\t$dst", []>;
def LOOPE  : Ii8PCRel<0xE1, RawFrm, (outs), (ins brtarget8:$dst), "loope\t$dst", []>;
def LOOPNE : Ii8PCRel<0xE0, RawFrm, (outs), (ins brtarget8:$dst), "loopne\t$dst", []>;
}

LOOP instructions decrements the CX/ECX/RCX register (depending on encoding) and LOOPE/LOOPNE also reads (but doesn't write) the ZF flag.

Also, we're missing the LOOPNZ/LOOPZ aliases for LOOPNE/LOOPE

llvmbot commented 1 year ago

@llvm/issue-subscribers-backend-x86