X86: Fix Defs/Uses for insts that imp-def/imp-use both an A-register and EFLAGS.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 29 May 2013 21:13:57 +0000 (21:13 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 29 May 2013 21:13:57 +0000 (21:13 +0000)
commit8df6f4bc8be1680e98b9ce7a7bb868b129c016ab
treef65a24d7729ecaf501f188eaa163ce5f4cb9f9fc
parent8ed5506e854ed1e98b6547a976719a867a968106
X86: Fix Defs/Uses for insts that imp-def/imp-use both an A-register and EFLAGS.

This corrects a problem where x86 instructions that implicitly define/use both
an A-register (RAX, EAX, ..) and EFLAGS were declared as only defining/using
EFLAGS, because the outer "let Defs/Uses = [EFLAGS]" in the various multiclasses
overrides the "let Defs/Uses = [areg]" in BinOpAI.

The instructions deriving from BinOpAI were moved out of the "let Defs", and a
BinOpAI_FF class was created, for instructions that implicitly define and use
EFLAGS and the A-register (SBC, ADC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182883 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrArithmetic.td