Commit Graph

35 Commits

Author SHA1 Message Date
Chris Lattner 6211d7ba4b print pcrel immediates as signed values instead of unsigned so that we
get things like this out of the disassembler:

0x100000ecb: callq	-96

instead of:

0x100000ecb: callq	4294967200

rdar://7491123

llvm-svn: 91864
2009-12-22 00:44:05 +00:00
Chris Lattner 5db7b6a5d4 remove strings from instructions who are never asmprinted.
All of these "subreg32" modifier instructions are handled
explicitly by the MCInst lowering phase.  If they got to
the asmprinter, they would explode.  They should eventually
be replace with correct use of subregs.

llvm-svn: 84526
2009-10-19 19:51:42 +00:00
Chris Lattner a93dcf1bc0 kill off printPICLabel now, it's specialness is handled by
the MachineInstr ->MCInst lowering process, not in the 
asmprinter.

llvm-svn: 82388
2009-09-20 07:28:26 +00:00
Shantonu Sen 7ba874bb5e Fix cmake build, which has a different -I that
causes the "../foo" to not find the file

llvm-svn: 82270
2009-09-18 20:35:59 +00:00
Chris Lattner 1e64038bcb This file can need access to the X86 instruction enums when the table exceeds 32-bits.
llvm-svn: 82235
2009-09-18 18:08:55 +00:00
Chris Lattner 6d31b43592 Give MCInstPrinter a MCAsmInfo member, make X86ATTInstPrinter
be a MCInstPrinter.

llvm-svn: 81746
2009-09-14 01:49:26 +00:00
Chris Lattner aa398f5d23 tidy up a bit.
llvm-svn: 81744
2009-09-14 01:34:40 +00:00
Chris Lattner 56950c6b97 switch the x86 asmprinters to use getRegisterName instead
of getting it from TRI, inst printing now is codegen context
free!

llvm-svn: 81710
2009-09-13 20:15:16 +00:00
Chris Lattner 6ceb0faafd make intel asmprinter use TRI::getAsmName instead of TRI::getName like
all the other targets.  Add support for weak/linkonce linkage so it doesn't
crash on basically all nontrivial testcases.

llvm-svn: 81704
2009-09-13 19:44:38 +00:00
Chris Lattner 1cbd3ded33 split MCInst printing out of the X86ATTInstPrinter
class into its own X86ATTInstPrinter class.  The inst
printer now has just one dependence on the code generator
(TRI).

llvm-svn: 81703
2009-09-13 19:30:11 +00:00
Chris Lattner 5090e6c4a7 eliminate the "MBBLabel" MCOperand type, and just use a MCSymbol for
MBB labels like everything else.

llvm-svn: 81628
2009-09-12 20:45:03 +00:00
Chris Lattner 24083066c8 tidy up
llvm-svn: 81304
2009-09-09 00:40:31 +00:00
Chris Lattner f4366a3998 Thread an MCAsmInfo pointer through the various MC printing APIs,
and fix a few things using << on MCSymbols to use ->print(). No
functionality change other than unbreaking my previous patch.

llvm-svn: 80890
2009-09-03 05:46:51 +00:00
Daniel Dunbar 73da11ebda llvm-mc: Switch MCInst to storing an MCExpr* instead of an MCValue.
Also, use MCInst::print instead of custom code in MCAsmPrinter.

llvm-svn: 80575
2009-08-31 08:08:38 +00:00
Chris Lattner e9a75a6654 rename TAI -> MAI, being careful not to make MAILJMP instructions :)
llvm-svn: 79777
2009-08-22 21:43:10 +00:00
Chris Lattner 7b26fce23e Rename TargetAsmInfo (and its subclasses) to MCAsmInfo.
llvm-svn: 79763
2009-08-22 20:48:53 +00:00
Daniel Dunbar ad8740ae78 Add X86 instruction printer support for printing MCValue operands.
llvm-svn: 78984
2009-08-14 03:42:12 +00:00
Owen Anderson 53aa7a960c Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type.
llvm-svn: 78610
2009-08-10 22:56:29 +00:00
David Greene a31f96cf2b Have asm printers use formatted_raw_ostream directly to avoid a
dynamic_cast<>.

llvm-svn: 75670
2009-07-14 20:18:05 +00:00
Torok Edwin fbcc663cbf llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").

llvm-svn: 75640
2009-07-14 16:55:14 +00:00
Torok Edwin 6cdb897258 eliminate extra space.
llvm-svn: 75630
2009-07-14 12:22:58 +00:00
Torok Edwin 56d0659726 assert(0) -> LLVM_UNREACHABLE.
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.

llvm-svn: 75379
2009-07-11 20:10:48 +00:00
Torok Edwin fb8d6d5b58 Implement changes from Chris's feedback.
Finish converting lib/Target.

llvm-svn: 75043
2009-07-08 20:53:28 +00:00
Torok Edwin 6dd2730024 Start converting to new error handling API.
cerr+abort -> llvm_report_error
assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included)

llvm-svn: 75018
2009-07-08 18:01:40 +00:00
Chris Lattner fea81da433 Reimplement rip-relative addressing in the X86-64 backend. The new
implementation primarily differs from the former in that the asmprinter
doesn't make a zillion decisions about whether or not something will be
RIP relative or not.  Instead, those decisions are made by isel lowering
and propagated through to the asm printer.  To achieve this, we:

1. Represent RIP relative addresses by setting the base of the X86 addr
   mode to X86::RIP.
2. When ISel Lowering decides that it is safe to use RIP, it lowers to
   X86ISD::WrapperRIP.  When it is unsafe to use RIP, it lowers to
   X86ISD::Wrapper as before.
3. This removes isRIPRel from X86ISelAddressMode, representing it with
   a basereg of RIP instead.
4. The addressing mode matching logic in isel is greatly simplified.
5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate
   passed through various printoperand routines is gone now.
6. The various symbol printing routines in asmprinter now no longer infer
   when to emit (%rip), they just print the symbol.

I think this is a big improvement over the previous situation.  It does have
two small caveats though: 1. I implemented a horrible "no-rip" modifier for
the inline asm "P" constraint modifier.  This is a short term hack, there is
a much better, but more involved, solution.  2. I had to xfail an 
-aggressive-remat testcase because it isn't handling the use of RIP in the
constant-pool reading instruction.  This specific test is easy to fix without
-aggressive-remat, which I intend to do next.

llvm-svn: 74372
2009-06-27 04:16:01 +00:00
Chris Lattner e80442452e remove #if 0 code
llvm-svn: 73837
2009-06-21 01:48:49 +00:00
Chris Lattner 40f560d433 remove dead code, the main codepath never has to deal
with MBB's.

llvm-svn: 73830
2009-06-20 19:34:47 +00:00
Chris Lattner 9c2119616f eliminate the "call" operand modifier from the asm descriptions, modeling
it as a pcrel immediate instead.  This gets pc-rel weirdness out of the
main printoperand codepath.

llvm-svn: 73829
2009-06-20 19:34:09 +00:00
Chris Lattner b4b5c10477 fix edit-o
llvm-svn: 73824
2009-06-20 08:13:12 +00:00
Chris Lattner 9fc4db5615 some comments and cleanup
llvm-svn: 73818
2009-06-20 07:59:10 +00:00
Chris Lattner a0022a772b implement support for lowering subregs when preparing to print
LEA64_32r, eliminating a bunch of modifier logic stuff on addr modes.

Implement support for printing mbb labels as operands.

llvm-svn: 73817
2009-06-20 07:03:18 +00:00
Chris Lattner 1f8d968687 hook up printMemReference.
llvm-svn: 73811
2009-06-20 00:50:32 +00:00
Chris Lattner 4682015e61 Start implementing translation of MachineInstr to MCInst. Next
step is to make tblgen generate something more appropriate for MCInst,
and generate calls to operand translation routines where needed.
This includes a bunch of #if 0 code which will slowly be refactored into
something sensible.

llvm-svn: 73810
2009-06-20 00:49:26 +00:00
Chris Lattner 8d284c7683 stub out some hacky code for wiring up the new asmprinter interfaces
on X86.  Not useful yet.

llvm-svn: 73799
2009-06-19 23:59:57 +00:00
Chris Lattner a08186aabc add a file I missed, this goes with r73743
llvm-svn: 73744
2009-06-19 00:47:59 +00:00