Is it possible to assign the value of subtarget features using more complex expressions with code as opposed to using the mechanism that tablegen affords. For example, if Mips16 or Micro Mips is not present, then I want the subfeature "standard encoding". If I can't do this, then it requires me to write a more complex expression for the "standard encoding" expresions. For mips , mips16 and micro mips are considered to be processor extenasions to mips32 and mips64. So usually you would build a mips32 or mips64 compiler and then add -mips16 to the command line. Right now, there are no implementations of micro mips or mips16 with mips 64, though architecturally it is defined. So the options would be: -mips16 -mips32 -micromips -mips64 With the implications the -mips16 and -micromips both imply mips32 as the base architecture. mips32 and mips64 have mostly the same instruction encoding (difference being the size of the registers). Ideally you would want: standardencoding = !mips16 & !micrormips then standardencoding is used to be a predicate for all non mips16 and micromips instructions.
On 05/16/2012 08:35 PM, reed kotler wrote:> Is it possible to assign the value of subtarget features using more > complex expressions with code as opposed to using the mechanism that > tablegen affords. > > For example, if Mips16 or Micro Mips is not present, then I want the > subfeature "standard encoding". > > If I can't do this, then it requires me to write a more complex > expression for the "standard encoding" expresions. > > For mips , mips16 and micro mips are considered to be processor > extenasions to mips32 and mips64. > > So usually you would build a mips32 or mips64 compiler and then add > -mips16 to the command line. > > Right now, there are no implementations of micro mips or mips16 with > mips 64, though architecturally it is defined. > > So the options would be: > > -mips16 -mips32 -micromips -mips64 > > With the implications the -mips16 and -micromips both imply mips32 as > the base architecture. > > mips32 and mips64 have mostly the same instruction encoding (difference > being the size of the > registers). > > Ideally you would want: > > standardencoding = !mips16& !micrormips > > then standardencoding is used to be a predicate for all non mips16 and > micromips instructions. > > > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdevI think i can just do what I want here with predicates
Have you thought about use the +mattr=+mips16,+micromips, etc..? This is what we use to enable/disable features for a specific architecture(including 64bit support for a 32bit device).> -----Original Message----- > From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] > On Behalf Of reed kotler > Sent: Wednesday, May 16, 2012 8:36 PM > To: ll >> "llvmdev at cs.uiuc.edu" > Subject: [LLVMdev] subtarget features > > Is it possible to assign the value of subtarget features using more > complex expressions with code as opposed to using the mechanism that > tablegen affords. > > For example, if Mips16 or Micro Mips is not present, then I want the > subfeature "standard encoding". > > If I can't do this, then it requires me to write a more complex > expression for the "standard encoding" expresions. > > For mips , mips16 and micro mips are considered to be processor > extenasions to mips32 and mips64. > > So usually you would build a mips32 or mips64 compiler and then add > -mips16 to the command line. > > Right now, there are no implementations of micro mips or mips16 with > mips 64, though architecturally it is defined. > > So the options would be: > > -mips16 -mips32 -micromips -mips64 > > With the implications the -mips16 and -micromips both imply mips32 as > the base architecture. > > mips32 and mips64 have mostly the same instruction encoding (difference > being the size of the registers). > > Ideally you would want: > > standardencoding = !mips16 & !micrormips > > then standardencoding is used to be a predicate for all non mips16 and > micromips instructions. > > > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev