Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 5 Apr 2010 03:10:20 +0000 (03:10 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Mon, 5 Apr 2010 03:10:20 +0000 (03:10 +0000)
commitfddb7667ca4d8fe83f96b388295849281ddaa5b4
treefdfe17e6a728d6560f0217760d6e3dd80ca924ed
parentba79d72eab446e64d360e8263d77732b5e13d556
Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field.

When a target instruction wants to set target-specific flags, it should simply
set bits in the TSFlags bit vector defined in the Instruction TableGen class.

This works well because TableGen resolves member references late:

class I : Instruction {
  AddrMode AM = AddrModeNone;
  let TSFlags{3-0} = AM.Value;
}

let AM = AddrMode4 in
def ADD : I;

TSFlags gets the expected bits from AddrMode4 in this example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100384 91177308-0d34-0410-b5e6-96231b3b80d8
18 files changed:
include/llvm/Target/Target.td
lib/Target/ARM/ARM.td
lib/Target/ARM/ARMInstrFormats.td
lib/Target/Alpha/Alpha.td
lib/Target/MBlaze/MBlaze.td
lib/Target/MSP430/MSP430.td
lib/Target/MSP430/MSP430InstrFormats.td
lib/Target/Mips/Mips.td
lib/Target/PowerPC/PPC.td
lib/Target/PowerPC/PPCInstrFormats.td
lib/Target/Sparc/Sparc.td
lib/Target/X86/X86.td
lib/Target/X86/X86InstrFormats.td
lib/Target/XCore/XCore.td
utils/TableGen/InstrInfoEmitter.cpp
utils/TableGen/InstrInfoEmitter.h
utils/TableGen/Record.cpp
utils/TableGen/Record.h