blob: 5659282ff104002cd55a849843e9311a35a01512 [file] [log] [blame]
Chris Lattnerb9740462005-07-01 22:44:09 +00001//===-- X86AsmPrinter.cpp - Convert X86 LLVM IR to X86 assembly -----------===//
Misha Brukmanc88330a2005-04-21 23:38:14 +00002//
John Criswell482202a2003-10-20 19:43:21 +00003// The LLVM Compiler Infrastructure
4//
Chris Lattnerf3ebc3f2007-12-29 20:36:04 +00005// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
Misha Brukmanc88330a2005-04-21 23:38:14 +00007//
John Criswell482202a2003-10-20 19:43:21 +00008//===----------------------------------------------------------------------===//
Chris Lattnerd92fb002002-10-25 22:55:53 +00009//
Chris Lattnerb9740462005-07-01 22:44:09 +000010// This file the shared super class printer that converts from our internal
11// representation of machine-dependent LLVM code to Intel and AT&T format
12// assembly language.
13// This printer is the output mechanism used by `llc'.
Chris Lattnerd92fb002002-10-25 22:55:53 +000014//
15//===----------------------------------------------------------------------===//
16
Chris Lattnerb9740462005-07-01 22:44:09 +000017#include "X86ATTAsmPrinter.h"
18#include "X86IntelAsmPrinter.h"
Chris Lattner99be8f72005-11-21 22:39:40 +000019#include "X86Subtarget.h"
Chris Lattner9f75a552004-02-14 06:00:36 +000020using namespace llvm;
Brian Gaeke960707c2003-11-11 22:41:34 +000021
Chris Lattner68ab0be2004-10-04 07:24:48 +000022/// createX86CodePrinterPass - Returns a pass that prints the X86 assembly code
23/// for a MachineFunction to the given output stream, using the given target
24/// machine description.
25///
Evan Cheng2dd2c652006-03-13 23:20:37 +000026FunctionPass *llvm::createX86CodePrinterPass(std::ostream &o,
Jim Laskeya6211dc2006-09-06 18:34:40 +000027 X86TargetMachine &tm) {
Jim Laskeyc7abe472006-09-07 12:23:47 +000028 const X86Subtarget *Subtarget = &tm.getSubtarget<X86Subtarget>();
Jim Laskeya6211dc2006-09-06 18:34:40 +000029
Jim Laskeyc7abe472006-09-07 12:23:47 +000030 if (Subtarget->isFlavorIntel()) {
Jim Laskey261779b2006-09-07 22:06:40 +000031 return new X86IntelAsmPrinter(o, tm, tm.getTargetAsmInfo());
Jim Laskeyc7abe472006-09-07 12:23:47 +000032 } else {
Jim Laskey261779b2006-09-07 22:06:40 +000033 return new X86ATTAsmPrinter(o, tm, tm.getTargetAsmInfo());
Chris Lattner68ab0be2004-10-04 07:24:48 +000034 }
Brian Gaeke259fdbc2003-06-19 19:32:32 +000035}