mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 19:29:31 +00:00
I/O port instructions on x86. The specific code sequence is tailored to the parameters and return value of the intrinsic call. Added the ability for implicit defintions to be printed in the Instruction Printer. Added the ability for RawFrm instruction to print implict uses and defintions with correct comma output. This required adjustment to some methods so that a leading comma would or would not be printed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12782 91177308-0d34-0410-b5e6-96231b3b80d8
68 lines
2.2 KiB
C++
68 lines
2.2 KiB
C++
//===- X86.td - Target definition file for the Intel X86 arch ---*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file was developed by the LLVM research group and is distributed under
|
|
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This is a target description file for the Intel i386 architecture, refered to
|
|
// here as the "X86" architecture.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// Get the target-independent interfaces which we are implementing...
|
|
//
|
|
include "../Target.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Register File Description
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "X86RegisterInfo.td"
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Instruction Descriptions
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
include "X86InstrInfo.td"
|
|
|
|
def X86InstrInfo : InstrInfo {
|
|
let PHIInst = PHI;
|
|
|
|
// Define how we want to layout our TargetSpecific information field... This
|
|
// should be kept up-to-date with the fields in the X86InstrInfo.h file.
|
|
let TSFlagsFields = ["FormBits",
|
|
"hasOpSizePrefix",
|
|
"Prefix",
|
|
"MemTypeBits",
|
|
"ImmTypeBits",
|
|
"FPFormBits",
|
|
"printImplicitUsesAfter",
|
|
"printImplicitUsesBefore",
|
|
"printImplicitDefsAfter",
|
|
"Opcode"];
|
|
let TSFlagsShifts = [0,
|
|
5,
|
|
6,
|
|
10,
|
|
13,
|
|
15,
|
|
18,
|
|
19,
|
|
20,
|
|
21];
|
|
}
|
|
|
|
def X86 : Target {
|
|
// Specify the callee saved registers.
|
|
let CalleeSavedRegisters = [ESI, EDI, EBX, EBP];
|
|
|
|
// Yes, pointers are 32-bits in size.
|
|
let PointerType = i32;
|
|
|
|
// Information about the instructions...
|
|
let InstructionSet = X86InstrInfo;
|
|
}
|