mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 14:20:33 +00:00
Emit ARM Build Attributes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72336 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
41a024385f
commit
88ce667003
64
lib/Target/ARM/ARMBuildAttrs.h
Normal file
64
lib/Target/ARM/ARMBuildAttrs.h
Normal file
@ -0,0 +1,64 @@
|
||||
//===-------- ARMBuildAttrs.h - ARM Build Attributes ------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file contains enumerations amd support routines for ARM build attributes
|
||||
// as defined in ARM ABI addenda document (ABI release 2.07).
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef __TARGET_ARMBUILDATTRS_H__
|
||||
#define __TARGET_ARMBUILDATTRS_H__
|
||||
|
||||
namespace ARMBuildAttrs {
|
||||
enum {
|
||||
File = 1,
|
||||
Section = 2,
|
||||
Symbol = 3,
|
||||
CPU_raw_name = 4,
|
||||
CPU_name = 5,
|
||||
CPU_arch = 6,
|
||||
CPU_arch_profile = 7,
|
||||
ARM_ISA_use = 8,
|
||||
THUMB_ISA_use = 9,
|
||||
VFP_arch = 10,
|
||||
WMMX_arch = 11,
|
||||
Advanced_SIMD_arch = 12,
|
||||
PCS_config = 13,
|
||||
ABI_PCS_R9_use = 14,
|
||||
ABI_PCS_RW_data = 15,
|
||||
ABI_PCS_RO_data = 16,
|
||||
ABI_PCS_GOT_use = 17,
|
||||
ABI_PCS_wchar_t = 18,
|
||||
ABI_FP_rounding = 19,
|
||||
ABI_FP_denormal = 20,
|
||||
ABI_FP_exceptions = 21,
|
||||
ABI_FP_user_exceptions = 22,
|
||||
ABI_FP_number_model = 23,
|
||||
ABI_align8_needed = 24,
|
||||
ABI_align8_preserved = 25,
|
||||
ABI_enum_size = 26,
|
||||
ABI_HardFP_use = 27,
|
||||
ABI_VFP_args = 28,
|
||||
ABI_WMMX_args = 29,
|
||||
ABI_optimization_goals = 30,
|
||||
ABI_FP_optimization_goals = 31,
|
||||
compatibility = 32,
|
||||
CPU_unaligned_access = 34,
|
||||
VFP_HP_extension = 36,
|
||||
ABI_FP_16bit_format = 38,
|
||||
nodefaults = 64,
|
||||
also_compatible_with = 65,
|
||||
T2EE_use = 66,
|
||||
conformance = 67,
|
||||
Virtualization_use = 68,
|
||||
MPextension_use = 70
|
||||
};
|
||||
}
|
||||
|
||||
#endif // __TARGET_ARMBUILDATTRS_H__
|
@ -14,6 +14,7 @@
|
||||
|
||||
#define DEBUG_TYPE "asm-printer"
|
||||
#include "ARM.h"
|
||||
#include "ARMBuildAttrs.h"
|
||||
#include "ARMTargetMachine.h"
|
||||
#include "ARMAddressingModes.h"
|
||||
#include "ARMConstantPoolValue.h"
|
||||
@ -816,6 +817,32 @@ bool ARMAsmPrinter::doInitialization(Module &M) {
|
||||
if (Subtarget->isTargetDarwin())
|
||||
Mang->setUseQuotes(true);
|
||||
|
||||
// Emit ARM Build Attributes
|
||||
if (Subtarget->isTargetELF()) {
|
||||
// CPU Type
|
||||
O << "\t.cpu " << Subtarget->getCPUString() << '\n';
|
||||
|
||||
// FIXME: Emit FPU type
|
||||
if (Subtarget->hasVFP2())
|
||||
O << "\t.eabi_attribute " << ARMBuildAttrs::VFP_arch << ", 2\n";
|
||||
|
||||
// Signal various FP modes.
|
||||
if (!UnsafeFPMath)
|
||||
O << "\t.eabi_attribute " << ARMBuildAttrs::ABI_FP_denormal << ", 1\n"
|
||||
<< "\t.eabi_attribute " << ARMBuildAttrs::ABI_FP_exceptions << ", 1\n";
|
||||
|
||||
if (FiniteOnlyFPMath())
|
||||
O << "\t.eabi_attribute " << ARMBuildAttrs::ABI_FP_number_model << ", 1\n";
|
||||
else
|
||||
O << "\t.eabi_attribute " << ARMBuildAttrs::ABI_FP_number_model << ", 3\n";
|
||||
|
||||
// 8-bytes alignment stuff.
|
||||
O << "\t.eabi_attribute " << ARMBuildAttrs::ABI_align8_needed << ", 1\n"
|
||||
<< "\t.eabi_attribute " << ARMBuildAttrs::ABI_align8_preserved << ", 1\n";
|
||||
|
||||
// FIXME: Should we signal R9 usage?
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user