diff options
Diffstat (limited to 'lib')
60 files changed, 2791 insertions, 61 deletions
diff --git a/lib/Analysis/Android.mk b/lib/Analysis/Android.mk new file mode 100644 index 0000000..7e0bccc --- /dev/null +++ b/lib/Analysis/Android.mk @@ -0,0 +1,87 @@ +LOCAL_PATH:= $(call my-dir) + +analysis_SRC_FILES := \ + AliasAnalysis.cpp \ + AliasAnalysisCounter.cpp \ + AliasAnalysisEvaluator.cpp \ + AliasDebugger.cpp \ + AliasSetTracker.cpp \ + Analysis.cpp \ + BasicAliasAnalysis.cpp \ + BlockFrequencyInfo.cpp \ + BranchProbabilityInfo.cpp \ + CFG.cpp \ + CFGPrinter.cpp \ + CaptureTracking.cpp \ + CodeMetrics.cpp \ + ConstantFolding.cpp \ + CostModel.cpp \ + DependenceAnalysis.cpp \ + DomPrinter.cpp \ + DominanceFrontier.cpp \ + IVUsers.cpp \ + InstCount.cpp \ + InstructionSimplify.cpp \ + Interval.cpp \ + IntervalPartition.cpp \ + LazyValueInfo.cpp \ + LibCallAliasAnalysis.cpp \ + LibCallSemantics.cpp \ + Lint.cpp \ + Loads.cpp \ + LoopInfo.cpp \ + LoopPass.cpp \ + MemDepPrinter.cpp \ + MemoryBuiltins.cpp \ + MemoryDependenceAnalysis.cpp \ + ModuleDebugInfoPrinter.cpp \ + NoAliasAnalysis.cpp \ + PHITransAddr.cpp \ + PathNumbering.cpp \ + PathProfileInfo.cpp \ + PathProfileVerifier.cpp \ + PostDominators.cpp \ + ProfileDataLoader.cpp \ + ProfileDataLoaderPass.cpp \ + ProfileEstimatorPass.cpp \ + ProfileInfo.cpp \ + ProfileInfoLoader.cpp \ + ProfileInfoLoaderPass.cpp \ + ProfileVerifierPass.cpp \ + PtrUseVisitor.cpp \ + RegionInfo.cpp \ + RegionPass.cpp \ + RegionPrinter.cpp \ + ScalarEvolution.cpp \ + ScalarEvolutionAliasAnalysis.cpp \ + ScalarEvolutionExpander.cpp \ + ScalarEvolutionNormalization.cpp \ + SparsePropagation.cpp \ + TargetTransformInfo.cpp \ + Trace.cpp \ + TypeBasedAliasAnalysis.cpp \ + ValueTracking.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_MODULE:= libLLVMAnalysis +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(analysis_SRC_FILES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_MODULE:= libLLVMAnalysis +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(analysis_SRC_FILES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Analysis/IPA/Android.mk b/lib/Analysis/IPA/Android.mk new file mode 100644 index 0000000..ff8a4ae --- /dev/null +++ b/lib/Analysis/IPA/Android.mk @@ -0,0 +1,38 @@ +LOCAL_PATH:= $(call my-dir) + +analysis_ipa_SRC_FILES := \ + CallGraph.cpp \ + CallGraphSCCPass.cpp \ + CallPrinter.cpp \ + FindUsedTypes.cpp \ + GlobalsModRef.cpp \ + IPA.cpp \ + InlineCost.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES) + +LOCAL_MODULE:= libLLVMipa + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES) + +LOCAL_MODULE:= libLLVMipa + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Analysis/NOTICE b/lib/Analysis/NOTICE new file mode 100644 index 0000000..1b1047c --- /dev/null +++ b/lib/Analysis/NOTICE @@ -0,0 +1,69 @@ +============================================================================== +LLVM Release License +============================================================================== +University of Illinois/NCSA +Open Source License + +Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== +Copyrights and Licenses for Third Party Software Distributed with LLVM: +============================================================================== +The LLVM software contains code written by third parties. Such software will +have its own individual LICENSE.TXT file in the directory in which it appears. +This file will describe the copyrights, license, and restrictions which apply +to that code. + +The disclaimer of warranty in the University of Illinois Open Source License +applies to all code in the LLVM Distribution, and nothing in any of the +other licenses gives permission to use the names of the LLVM Team or the +University of Illinois to endorse or promote products derived from this +Software. + +The following pieces of software have additional or alternate copyrights, +licenses, and/or restrictions: + +Program Directory +------- --------- +Autoconf llvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf +CellSPU backend llvm/lib/Target/CellSPU/README.txt +Google Test llvm/utils/unittest/googletest +OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex} diff --git a/lib/AsmParser/Android.mk b/lib/AsmParser/Android.mk new file mode 100644 index 0000000..2c9bbaf --- /dev/null +++ b/lib/AsmParser/Android.mk @@ -0,0 +1,32 @@ +LOCAL_PATH:= $(call my-dir) + +asm_parser_SRC_FILES := \ + LLLexer.cpp \ + LLParser.cpp \ + Parser.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(asm_parser_SRC_FILES) + +LOCAL_MODULE:= libLLVMAsmParser + +LOCAL_MODULE_TAGS := optional + +include $(LOCAL_PATH)/../../llvm-host-build.mk +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(asm_parser_SRC_FILES) + +LOCAL_MODULE:= libLLVMAsmParser + +LOCAL_MODULE_TAGS := optional + +include $(LOCAL_PATH)/../../llvm-device-build.mk +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Bitcode/Reader/Android.mk b/lib/Bitcode/Reader/Android.mk new file mode 100644 index 0000000..6e95cbc --- /dev/null +++ b/lib/Bitcode/Reader/Android.mk @@ -0,0 +1,34 @@ +LOCAL_PATH:= $(call my-dir) + +bitcode_reader_SRC_FILES := \ + BitReader.cpp \ + BitcodeReader.cpp \ + BitstreamReader.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES) + +LOCAL_MODULE:= libLLVMBitReader + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES) + +LOCAL_MODULE:= libLLVMBitReader + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Bitcode/Writer/Android.mk b/lib/Bitcode/Writer/Android.mk new file mode 100644 index 0000000..fcafe37 --- /dev/null +++ b/lib/Bitcode/Writer/Android.mk @@ -0,0 +1,35 @@ +LOCAL_PATH:= $(call my-dir) + +bitcode_writer_SRC_FILES := \ + BitWriter.cpp \ + BitcodeWriter.cpp \ + BitcodeWriterPass.cpp \ + ValueEnumerator.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES) + +LOCAL_MODULE:= libLLVMBitWriter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES) + +LOCAL_MODULE:= libLLVMBitWriter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk new file mode 100644 index 0000000..3ac7c19 --- /dev/null +++ b/lib/CodeGen/Android.mk @@ -0,0 +1,139 @@ +LOCAL_PATH:= $(call my-dir) + +codegen_SRC_FILES := \ + AggressiveAntiDepBreaker.cpp \ + AllocationOrder.cpp \ + Analysis.cpp \ + BasicTargetTransformInfo.cpp \ + BranchFolding.cpp \ + CalcSpillWeights.cpp \ + CallingConvLower.cpp \ + CodeGen.cpp \ + CriticalAntiDepBreaker.cpp \ + DeadMachineInstructionElim.cpp \ + DFAPacketizer.cpp \ + DwarfEHPrepare.cpp \ + EarlyIfConversion.cpp \ + EdgeBundles.cpp \ + ErlangGC.cpp \ + ExecutionDepsFix.cpp \ + ExpandISelPseudos.cpp \ + ExpandPostRAPseudos.cpp \ + GCMetadata.cpp \ + GCMetadataPrinter.cpp \ + GCStrategy.cpp \ + IfConversion.cpp \ + InlineSpiller.cpp \ + InterferenceCache.cpp \ + IntrinsicLowering.cpp \ + JITCodeEmitter.cpp \ + LatencyPriorityQueue.cpp \ + LexicalScopes.cpp \ + LiveDebugVariables.cpp \ + LiveIntervalAnalysis.cpp \ + LiveInterval.cpp \ + LiveIntervalUnion.cpp \ + LiveRangeCalc.cpp \ + LiveRangeEdit.cpp \ + LiveRegMatrix.cpp \ + LiveStackAnalysis.cpp \ + LiveVariables.cpp \ + LLVMTargetMachine.cpp \ + LocalStackSlotAllocation.cpp \ + MachineBasicBlock.cpp \ + MachineBlockFrequencyInfo.cpp \ + MachineBlockPlacement.cpp \ + MachineBranchProbabilityInfo.cpp \ + MachineCodeEmitter.cpp \ + MachineCopyPropagation.cpp \ + MachineCSE.cpp \ + MachineDominators.cpp \ + MachineFunctionAnalysis.cpp \ + MachineFunction.cpp \ + MachineFunctionPass.cpp \ + MachineFunctionPrinterPass.cpp \ + MachineInstrBundle.cpp \ + MachineInstr.cpp \ + MachineLICM.cpp \ + MachineLoopInfo.cpp \ + MachineModuleInfo.cpp \ + MachineModuleInfoImpls.cpp \ + MachinePassRegistry.cpp \ + MachinePostDominators.cpp \ + MachineRegisterInfo.cpp \ + MachineScheduler.cpp \ + MachineSink.cpp \ + MachineSSAUpdater.cpp \ + MachineTraceMetrics.cpp \ + MachineVerifier.cpp \ + OcamlGC.cpp \ + OptimizePHIs.cpp \ + Passes.cpp \ + PeepholeOptimizer.cpp \ + PHIElimination.cpp \ + PHIEliminationUtils.cpp \ + PostRASchedulerList.cpp \ + ProcessImplicitDefs.cpp \ + PrologEpilogInserter.cpp \ + PseudoSourceValue.cpp \ + RegAllocBase.cpp \ + RegAllocBasic.cpp \ + RegAllocFast.cpp \ + RegAllocGreedy.cpp \ + RegAllocPBQP.cpp \ + RegisterClassInfo.cpp \ + RegisterCoalescer.cpp \ + RegisterPressure.cpp \ + RegisterScavenging.cpp \ + ScheduleDAG.cpp \ + ScheduleDAGInstrs.cpp \ + ScheduleDAGPrinter.cpp \ + ScoreboardHazardRecognizer.cpp \ + ShadowStackGC.cpp \ + ShrinkWrapping.cpp \ + SjLjEHPrepare.cpp \ + SlotIndexes.cpp \ + Spiller.cpp \ + SpillPlacement.cpp \ + SplitKit.cpp \ + StackColoring.cpp \ + StackProtector.cpp \ + StackSlotColoring.cpp \ + StrongPHIElimination.cpp \ + TailDuplication.cpp \ + TargetFrameLoweringImpl.cpp \ + TargetInstrInfo.cpp \ + TargetLoweringBase.cpp \ + TargetLoweringObjectFileImpl.cpp \ + TargetOptionsImpl.cpp \ + TargetRegisterInfo.cpp \ + TargetSchedule.cpp \ + TwoAddressInstructionPass.cpp \ + UnreachableBlockElim.cpp \ + VirtRegMap.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_SRC_FILES) +LOCAL_MODULE:= libLLVMCodeGen + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_SRC_FILES) +LOCAL_MODULE:= libLLVMCodeGen + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk new file mode 100644 index 0000000..d408475 --- /dev/null +++ b/lib/CodeGen/AsmPrinter/Android.mk @@ -0,0 +1,58 @@ +LOCAL_PATH := $(call my-dir) + +codegen_asmprinter_SRC_FILES := \ + AsmPrinter.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + AsmPrinter.cpp \ + AsmPrinterDwarf.cpp \ + AsmPrinterInlineAsm.cpp \ + ARMException.cpp \ + DIE.cpp \ + DwarfAccelTable.cpp \ + DwarfCFIException.cpp \ + DwarfCompileUnit.cpp \ + DwarfDebug.cpp \ + DwarfException.cpp \ + ErlangGCPrinter.cpp \ + OcamlGCPrinter.cpp \ + Win64Exception.cpp + +LOCAL_MODULE:= libLLVMAsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + AsmPrinter.cpp \ + AsmPrinterDwarf.cpp \ + AsmPrinterInlineAsm.cpp \ + ARMException.cpp \ + DIE.cpp \ + DwarfAccelTable.cpp \ + DwarfCFIException.cpp \ + DwarfCompileUnit.cpp \ + DwarfDebug.cpp \ + DwarfException.cpp \ + ErlangGCPrinter.cpp \ + Win64Exception.cpp \ + $(LOCAL_SRC_FILES) + +LOCAL_MODULE:= libLLVMAsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/CodeGen/SelectionDAG/Android.mk b/lib/CodeGen/SelectionDAG/Android.mk new file mode 100644 index 0000000..3f28e08 --- /dev/null +++ b/lib/CodeGen/SelectionDAG/Android.mk @@ -0,0 +1,54 @@ +LOCAL_PATH:= $(call my-dir) + +codegen_selectiondag_SRC_FILES := \ + DAGCombiner.cpp \ + FastISel.cpp \ + FunctionLoweringInfo.cpp \ + InstrEmitter.cpp \ + LegalizeDAG.cpp \ + LegalizeFloatTypes.cpp \ + LegalizeIntegerTypes.cpp \ + LegalizeTypes.cpp \ + LegalizeTypesGeneric.cpp \ + LegalizeVectorOps.cpp \ + LegalizeVectorTypes.cpp \ + ResourcePriorityQueue.cpp \ + ScheduleDAGFast.cpp \ + ScheduleDAGRRList.cpp \ + ScheduleDAGSDNodes.cpp \ + ScheduleDAGVLIW.cpp \ + SelectionDAG.cpp \ + SelectionDAGBuilder.cpp \ + SelectionDAGDumper.cpp \ + SelectionDAGISel.cpp \ + SelectionDAGPrinter.cpp \ + TargetLowering.cpp \ + TargetSelectionDAGInfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES) + +LOCAL_MODULE:= libLLVMSelectionDAG + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES) + +LOCAL_MODULE:= libLLVMSelectionDAG + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk new file mode 100644 index 0000000..9f1befd --- /dev/null +++ b/lib/ExecutionEngine/Android.mk @@ -0,0 +1,18 @@ +LOCAL_PATH:= $(call my-dir) + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + ExecutionEngineBindings.cpp \ + ExecutionEngine.cpp \ + RTDyldMemoryManager.cpp \ + TargetSelect.cpp + +LOCAL_MODULE:= libLLVMExecutionEngine + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/ExecutionEngine/JIT/Android.mk b/lib/ExecutionEngine/JIT/Android.mk new file mode 100644 index 0000000..0466ba0 --- /dev/null +++ b/lib/ExecutionEngine/JIT/Android.mk @@ -0,0 +1,17 @@ +LOCAL_PATH:= $(call my-dir) + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + JIT.cpp \ + JITEmitter.cpp \ + JITMemoryManager.cpp + +LOCAL_MODULE:= libLLVMJIT + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/ExecutionEngine/MCJIT/Android.mk b/lib/ExecutionEngine/MCJIT/Android.mk new file mode 100644 index 0000000..0314958 --- /dev/null +++ b/lib/ExecutionEngine/MCJIT/Android.mk @@ -0,0 +1,16 @@ +LOCAL_PATH:= $(call my-dir) + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + MCJIT.cpp \ + SectionMemoryManager.cpp + +LOCAL_MODULE:= libLLVMMCJIT + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/ExecutionEngine/RuntimeDyld/Android.mk b/lib/ExecutionEngine/RuntimeDyld/Android.mk new file mode 100644 index 0000000..e98e80a --- /dev/null +++ b/lib/ExecutionEngine/RuntimeDyld/Android.mk @@ -0,0 +1,18 @@ +LOCAL_PATH:= $(call my-dir) + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + GDBRegistrar.cpp \ + RuntimeDyld.cpp \ + RuntimeDyldELF.cpp \ + RuntimeDyldMachO.cpp + +LOCAL_MODULE:= libLLVMRuntimeDyld + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/IR/Android.mk b/lib/IR/Android.mk new file mode 100644 index 0000000..6df36f8 --- /dev/null +++ b/lib/IR/Android.mk @@ -0,0 +1,72 @@ +LOCAL_PATH:= $(call my-dir) + +vmcore_SRC_FILES := \ + AsmWriter.cpp \ + Attributes.cpp \ + AutoUpgrade.cpp \ + BasicBlock.cpp \ + ConstantFold.cpp \ + Constants.cpp \ + Core.cpp \ + DataLayout.cpp \ + DebugInfo.cpp \ + DebugLoc.cpp \ + DIBuilder.cpp \ + Dominators.cpp \ + Function.cpp \ + GVMaterializer.cpp \ + Globals.cpp \ + IRBuilder.cpp \ + InlineAsm.cpp \ + Instruction.cpp \ + Instructions.cpp \ + IntrinsicInst.cpp \ + LLVMContext.cpp \ + LLVMContextImpl.cpp \ + LeakDetector.cpp \ + Metadata.cpp \ + Module.cpp \ + Pass.cpp \ + PassManager.cpp \ + PassRegistry.cpp \ + PrintModulePass.cpp \ + Type.cpp \ + TypeFinder.cpp \ + Use.cpp \ + User.cpp \ + Value.cpp \ + ValueSymbolTable.cpp \ + ValueTypes.cpp \ + Verifier.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +REQUIRES_RTTI := 1 + +LOCAL_SRC_FILES := $(vmcore_SRC_FILES) + +LOCAL_MODULE:= libLLVMCore + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +REQUIRES_RTTI := 1 + +LOCAL_SRC_FILES := $(vmcore_SRC_FILES) + +LOCAL_MODULE:= libLLVMCore + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/IRReader/Android.mk b/lib/IRReader/Android.mk new file mode 100644 index 0000000..eef5de6 --- /dev/null +++ b/lib/IRReader/Android.mk @@ -0,0 +1,36 @@ +LOCAL_PATH:= $(call my-dir) + +irreader_SRC_FILES := \ + IRReader.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +REQUIRES_RTTI := 1 + +LOCAL_SRC_FILES := $(irreader_SRC_FILES) + +LOCAL_MODULE:= libLLVMIRReader + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +REQUIRES_RTTI := 1 + +LOCAL_SRC_FILES := $(irreader_SRC_FILES) + +LOCAL_MODULE:= libLLVMIRReader + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Linker/Android.mk b/lib/Linker/Android.mk new file mode 100644 index 0000000..8c7a924 --- /dev/null +++ b/lib/Linker/Android.mk @@ -0,0 +1,30 @@ +LOCAL_PATH:= $(call my-dir) + +linker_SRC_FILES := \ + LinkModules.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_SRC_FILES := $(linker_SRC_FILES) + +LOCAL_MODULE:= libLLVMLinker +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(linker_SRC_FILES) + +LOCAL_MODULE:= libLLVMLinker +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/MC/Android.mk b/lib/MC/Android.mk new file mode 100644 index 0000000..6c69ca2 --- /dev/null +++ b/lib/MC/Android.mk @@ -0,0 +1,73 @@ +LOCAL_PATH:= $(call my-dir) + +mc_SRC_FILES := \ + ELFObjectWriter.cpp \ + MachObjectWriter.cpp \ + MCAsmBackend.cpp \ + MCAsmInfo.cpp \ + MCAsmInfoCOFF.cpp \ + MCAsmInfoDarwin.cpp \ + MCAsmStreamer.cpp \ + MCAssembler.cpp \ + MCCodeEmitter.cpp \ + MCCodeGenInfo.cpp \ + MCContext.cpp \ + MCDisassembler.cpp \ + MCDwarf.cpp \ + MCELF.cpp \ + MCELFObjectTargetWriter.cpp \ + MCELFStreamer.cpp \ + MCExpr.cpp \ + MCExternalSymbolizer.cpp \ + MCInst.cpp \ + MCInstPrinter.cpp \ + MCInstrAnalysis.cpp \ + MCLabel.cpp \ + MCMachObjectTargetWriter.cpp \ + MCMachOStreamer.cpp \ + MCNullStreamer.cpp \ + MCObjectFileInfo.cpp \ + MCObjectStreamer.cpp \ + MCObjectWriter.cpp \ + MCRegisterInfo.cpp \ + MCRelocationInfo.cpp \ + MCSection.cpp \ + MCSectionCOFF.cpp \ + MCSectionELF.cpp \ + MCSectionMachO.cpp \ + MCStreamer.cpp \ + MCSubtargetInfo.cpp \ + MCSymbol.cpp \ + MCSymbolizer.cpp \ + MCValue.cpp \ + MCWin64EH.cpp \ + WinCOFFObjectWriter.cpp \ + WinCOFFStreamer.cpp \ + SubtargetFeature.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(mc_SRC_FILES) + +LOCAL_MODULE:= libLLVMMC + +LOCAL_MODULE_TAGS := optional + + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(mc_SRC_FILES) + +LOCAL_MODULE:= libLLVMMC + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp index 68111f1..21dcdd7 100644 --- a/lib/MC/MCAssembler.cpp +++ b/lib/MC/MCAssembler.cpp @@ -212,7 +212,8 @@ MCFragment::~MCFragment() { } MCFragment::MCFragment(FragmentType _Kind, MCSectionData *_Parent) - : Kind(_Kind), Parent(_Parent), Atom(0), Offset(~UINT64_C(0)) + : Kind(_Kind), Parent(_Parent), Atom(0), Offset(~UINT64_C(0)), + LayoutOrder(~(0U)) { if (Parent) Parent->getFragmentList().push_back(this); @@ -293,7 +294,7 @@ MCSymbolData::MCSymbolData(const MCSymbol &_Symbol, MCFragment *_Fragment, MCAssembler::MCAssembler(MCContext &Context_, MCAsmBackend &Backend_, MCCodeEmitter &Emitter_, MCObjectWriter &Writer_, raw_ostream &OS_) - : Context(Context_), Backend(Backend_), Emitter(Emitter_), Writer(Writer_), + : Context(Context_), Backend(Backend_), Emitter(Emitter_), Writer(&Writer_), OS(OS_), BundleAlignSize(0), RelaxAll(false), NoExecStack(false), SubsectionsViaSymbols(false), ELFHeaderEFlags(0) { } @@ -301,6 +302,11 @@ MCAssembler::MCAssembler(MCContext &Context_, MCAsmBackend &Backend_, MCAssembler::~MCAssembler() { } +void MCAssembler::setWriter(MCObjectWriter &ObjectWriter) { + delete Writer; + Writer = &ObjectWriter; +} + void MCAssembler::reset() { Sections.clear(); Symbols.clear(); diff --git a/lib/MC/MCDisassembler/Android.mk b/lib/MC/MCDisassembler/Android.mk new file mode 100644 index 0000000..7f73df3 --- /dev/null +++ b/lib/MC/MCDisassembler/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH:= $(call my-dir) + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + Disassembler.cpp + +LOCAL_MODULE:= libLLVMMCDisassembler + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/MC/MCParser/Android.mk b/lib/MC/MCParser/Android.mk new file mode 100644 index 0000000..c6045d1 --- /dev/null +++ b/lib/MC/MCParser/Android.mk @@ -0,0 +1,38 @@ +LOCAL_PATH:= $(call my-dir) + +mc_parser_SRC_FILES := \ + AsmLexer.cpp \ + AsmParser.cpp \ + COFFAsmParser.cpp \ + DarwinAsmParser.cpp \ + ELFAsmParser.cpp \ + MCAsmLexer.cpp \ + MCAsmParser.cpp \ + MCAsmParserExtension.cpp \ + MCTargetAsmParser.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(mc_parser_SRC_FILES) + +LOCAL_MODULE:= libLLVMMCParser + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(mc_parser_SRC_FILES) + +LOCAL_MODULE:= libLLVMMCParser + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Object/Android.mk b/lib/Object/Android.mk new file mode 100644 index 0000000..09dcda6 --- /dev/null +++ b/lib/Object/Android.mk @@ -0,0 +1,40 @@ +LOCAL_PATH := $(call my-dir) + +object_SRC_FILES := \ + Archive.cpp \ + Binary.cpp \ + COFFObjectFile.cpp \ + ELFObjectFile.cpp \ + Error.cpp \ + MachOObjectFile.cpp \ + MachOUniversal.cpp \ + Object.cpp \ + ObjectFile.cpp + + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMObject +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(object_SRC_FILES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_MODULE:= libLLVMObject +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(object_SRC_FILES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 42066c3..3434e70 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -20,6 +20,8 @@ #include "llvm/Support/raw_ostream.h" #include <cctype> +#include <ctype.h> + using namespace llvm; using namespace object; diff --git a/lib/Object/ELFObjectFile.cpp b/lib/Object/ELFObjectFile.cpp index 15bc6be..20b7307 100644 --- a/lib/Object/ELFObjectFile.cpp +++ b/lib/Object/ELFObjectFile.cpp @@ -14,6 +14,8 @@ #include "llvm/Object/ELFObjectFile.h" #include "llvm/Support/MathExtras.h" +#include <ctype.h> + namespace llvm { using namespace object; diff --git a/lib/Option/Android.mk b/lib/Option/Android.mk new file mode 100644 index 0000000..a90af3c --- /dev/null +++ b/lib/Option/Android.mk @@ -0,0 +1,40 @@ +LOCAL_PATH:= $(call my-dir) + +option_SRC_FILES := \ + Arg.cpp \ + ArgList.cpp \ + Option.cpp \ + OptTable.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +# FIXME: This only requires RTTI because tblgen uses it. Fix that. +REQUIRES_RTTI := 1 + +LOCAL_SRC_FILES := $(option_SRC_FILES) + +LOCAL_MODULE:= libLLVMOption + +LOCAL_CFLAGS := -D__android__ + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(option_SRC_FILES) + +LOCAL_MODULE:= libLLVMOption + +LOCAL_CFLAGS := -D__android__ + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Support/Android.mk b/lib/Support/Android.mk new file mode 100644 index 0000000..f07ad12 --- /dev/null +++ b/lib/Support/Android.mk @@ -0,0 +1,114 @@ +LOCAL_PATH:= $(call my-dir) + +support_SRC_FILES := \ + Allocator.cpp \ + APFloat.cpp \ + APInt.cpp \ + APSInt.cpp \ + Atomic.cpp \ + BlockFrequency.cpp \ + BranchProbability.cpp \ + CommandLine.cpp \ + ConstantRange.cpp \ + ConvertUTF.c \ + ConvertUTFWrapper.cpp \ + CrashRecoveryContext.cpp \ + DAGDeltaAlgorithm.cpp \ + DataStream.cpp \ + DataExtractor.cpp \ + Debug.cpp \ + DeltaAlgorithm.cpp \ + Dwarf.cpp \ + DynamicLibrary.cpp \ + Errno.cpp \ + ErrorHandling.cpp \ + FileUtilities.cpp \ + FoldingSet.cpp \ + FormattedStream.cpp \ + GraphWriter.cpp \ + Hashing.cpp \ + Host.cpp \ + IntervalMap.cpp \ + IntEqClasses.cpp \ + IntrusiveRefCntPtr.cpp \ + IsInf.cpp \ + IsNAN.cpp \ + Locale.cpp \ + LockFileManager.cpp \ + MD5.cpp \ + ManagedStatic.cpp \ + Memory.cpp \ + MemoryBuffer.cpp \ + MemoryObject.cpp \ + Mutex.cpp \ + Path.cpp \ + PluginLoader.cpp \ + PrettyStackTrace.cpp \ + Process.cpp \ + Program.cpp \ + Regex.cpp \ + RWMutex.cpp \ + SearchForAddressOfSpecialSymbol.cpp \ + Signals.cpp \ + SmallPtrSet.cpp \ + SmallVector.cpp \ + SourceMgr.cpp \ + Statistic.cpp \ + StreamableMemoryObject.cpp \ + StringExtras.cpp \ + StringMap.cpp \ + StringPool.cpp \ + StringRef.cpp \ + SystemUtils.cpp \ + TargetRegistry.cpp \ + Threading.cpp \ + ThreadLocal.cpp \ + Timer.cpp \ + TimeValue.cpp \ + ToolOutputFile.cpp \ + Triple.cpp \ + Twine.cpp \ + Valgrind.cpp \ + Watchdog.cpp \ + circular_raw_ostream.cpp \ + raw_os_ostream.cpp \ + raw_ostream.cpp \ + regcomp.c \ + regerror.c \ + regexec.c \ + regfree.c \ + regstrlcpy.c \ + system_error.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +# FIXME: This only requires RTTI because tblgen uses it. Fix that. +REQUIRES_RTTI := 1 + +LOCAL_SRC_FILES := $(support_SRC_FILES) + +LOCAL_MODULE:= libLLVMSupport + +LOCAL_CFLAGS := -D__android__ + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(support_SRC_FILES) + +LOCAL_MODULE:= libLLVMSupport + +LOCAL_CFLAGS := -D__android__ + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Support/Atomic.cpp b/lib/Support/Atomic.cpp index 9559ad7..13d16d4 100644 --- a/lib/Support/Atomic.cpp +++ b/lib/Support/Atomic.cpp @@ -13,6 +13,9 @@ #include "llvm/Support/Atomic.h" #include "llvm/Config/llvm-config.h" +#if defined(ANDROID_TARGET_BUILD) +#include "cutils/atomic.h" +#endif using namespace llvm; @@ -47,6 +50,9 @@ sys::cas_flag sys::CompareAndSwap(volatile sys::cas_flag* ptr, if (result == old_value) *ptr = new_value; return result; +#elif defined(ANDROID_TARGET_BUILD) + return android_atomic_cmpxchg((int32_t)old_value, (int32_t)new_value, + (volatile int*)ptr); #elif defined(GNU_ATOMICS) return __sync_val_compare_and_swap(ptr, old_value, new_value); #elif defined(_MSC_VER) @@ -60,6 +66,8 @@ sys::cas_flag sys::AtomicIncrement(volatile sys::cas_flag* ptr) { #if LLVM_HAS_ATOMICS == 0 ++(*ptr); return *ptr; +#elif defined(ANDROID_TARGET_BUILD) + return android_atomic_inc((volatile int*)ptr); #elif defined(GNU_ATOMICS) return __sync_add_and_fetch(ptr, 1); #elif defined(_MSC_VER) @@ -73,6 +81,8 @@ sys::cas_flag sys::AtomicDecrement(volatile sys::cas_flag* ptr) { #if LLVM_HAS_ATOMICS == 0 --(*ptr); return *ptr; +#elif defined(ANDROID_TARGET_BUILD) + return android_atomic_dec((volatile int*)ptr); #elif defined(GNU_ATOMICS) return __sync_sub_and_fetch(ptr, 1); #elif defined(_MSC_VER) @@ -86,6 +96,8 @@ sys::cas_flag sys::AtomicAdd(volatile sys::cas_flag* ptr, sys::cas_flag val) { #if LLVM_HAS_ATOMICS == 0 *ptr += val; return *ptr; +#elif defined(ANDROID_TARGET_BUILD) + return android_atomic_add((int32_t)val, (volatile int*)ptr); #elif defined(GNU_ATOMICS) return __sync_add_and_fetch(ptr, val); #elif defined(_MSC_VER) diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc index b4c78d6..13ae862 100644 --- a/lib/Support/Unix/Signals.inc +++ b/lib/Support/Unix/Signals.inc @@ -271,7 +271,7 @@ void llvm::sys::PrintStackTrace(FILE *FD) { // Use backtrace() to output a backtrace on Linux systems with glibc. int depth = backtrace(StackTrace, static_cast<int>(array_lengthof(StackTrace))); -#if HAVE_DLFCN_H && __GNUG__ +#if HAVE_DLFCN_H && HAVE_CXXABI_H && __GNUG__ int width = 0; for (int i = 0; i < depth; ++i) { Dl_info dlinfo; diff --git a/lib/TableGen/Android.mk b/lib/TableGen/Android.mk new file mode 100644 index 0000000..2169f33 --- /dev/null +++ b/lib/TableGen/Android.mk @@ -0,0 +1,37 @@ +LOCAL_PATH:= $(call my-dir) + +libtablegen_SRC_FILES := \ + Error.cpp \ + Main.cpp \ + Record.cpp \ + StringMatcher.cpp \ + TableGenBackend.cpp \ + TGLexer.cpp \ + TGParser.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(libtablegen_SRC_FILES) +LOCAL_MODULE:= libLLVMTableGen + +LOCAL_MODULE_TAGS := optional + +REQUIRES_EH := 1 +REQUIRES_RTTI := 1 + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +## For the device +## ===================================================== +#include $(CLEAR_VARS) +# +#LOCAL_SRC_FILES := $(libtablegen_SRC_FILES) +#LOCAL_MODULE:= libLLVMTableGen +# +#LOCAL_MODULE_TAGS := optional +# +#include $(LLVM_DEVICE_BUILD_MK) +#include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Target/ARM/ARMCodeEmitter.cpp b/lib/Target/ARM/ARMCodeEmitter.cpp index 568ca85..96eb764 100644 --- a/lib/Target/ARM/ARMCodeEmitter.cpp +++ b/lib/Target/ARM/ARMCodeEmitter.cpp @@ -88,9 +88,11 @@ namespace { void emitWordLE(unsigned Binary); void emitDWordLE(uint64_t Binary); + void emitConstantToMemory(unsigned CPI, const Constant *CV); void emitConstPoolInstruction(const MachineInstr &MI); void emitMOVi32immInstruction(const MachineInstr &MI); void emitMOVi2piecesInstruction(const MachineInstr &MI); + void emitLEApcrelInstruction(const MachineInstr &MI); void emitLEApcrelJTInstruction(const MachineInstr &MI); void emitPseudoMoveInstruction(const MachineInstr &MI); void addPCLabel(unsigned LabelID); @@ -139,6 +141,8 @@ namespace { void emitVFPLoadStoreMultipleInstruction(const MachineInstr &MI); + void emitMiscInstruction(const MachineInstr &MI); + void emitNEONLaneInstruction(const MachineInstr &MI); void emitNEONDupInstruction(const MachineInstr &MI); void emitNEON1RegModImmInstruction(const MachineInstr &MI); @@ -170,7 +174,13 @@ namespace { unsigned NEONThumb2V8PostEncoder(const MachineInstr &MI,unsigned Val) const { return 0; } unsigned VFPThumb2PostEncoder(const MachineInstr&MI, unsigned Val) - const { return 0; } + const { + if (IsThumb) { + Val &= 0x0FFFFFFF; + Val |= 0xE0000000; + } + return Val; + } unsigned getAdrLabelOpValue(const MachineInstr &MI, unsigned Op) const { return 0; } unsigned getThumbAdrLabelOpValue(const MachineInstr &MI, unsigned Op) @@ -266,8 +276,20 @@ namespace { return Binary; } - unsigned getHiLo16ImmOpValue(const MachineInstr &MI, unsigned Op) const { - return 0; + unsigned getHiLo16ImmOpValue(const MachineInstr &MI, unsigned Op) + const { + const MCInstrDesc &MCID = MI.getDesc(); + const MachineOperand &MO = MI.getOperand(Op); + + unsigned Reloc = (MCID.Opcode == ARM::MOVi16 ? + ARM::reloc_arm_movw : ARM::reloc_arm_movt); + + if (!MO.isImm()) { + emitGlobalAddress(MO.getGlobal(), Reloc, true, false); + return 0; + } + unsigned Imm16 = static_cast<unsigned>(MO.getImm()); + return Imm16; } uint32_t getAddrMode2OpValue(const MachineInstr &MI, unsigned OpIdx) @@ -289,9 +311,10 @@ namespace { uint32_t getAddrModePCOpValue(const MachineInstr &MI, unsigned Op) const { return 0; } uint32_t getAddrMode5OpValue(const MachineInstr &MI, unsigned Op) const { - // {17-13} = reg - // {12} = (U)nsigned (add == '1', sub == '0') - // {11-0} = imm12 + // {12-9} = reg + // {8} = (U)nsigned (add == '1', sub == '0') + // {7-0} = imm8 + uint32_t Binary = 0; const MachineOperand &MO = MI.getOperand(Op); const MachineOperand &MO1 = MI.getOperand(Op + 1); if (!MO.isReg()) { @@ -313,10 +336,8 @@ namespace { isAdd = false; } - uint32_t Binary = Imm12 & 0xfff; - if (isAdd) - Binary |= (1 << 12); - Binary |= (Reg << 13); + // If immediate offset is omitted, default to +0. + Binary |= 1 << 8; return Binary; } unsigned getNEONVcvtImm32OpValue(const MachineInstr &MI, unsigned Op) @@ -455,6 +476,9 @@ unsigned ARMCodeEmitter::getMachineOpValue(const MachineInstr &MI, return II->getRegisterInfo().getEncodingValue(MO.getReg()); else if (MO.isImm()) return static_cast<unsigned>(MO.getImm()); + else if (MO.isFPImm()) + return static_cast<unsigned>(MO.getFPImm()->getValueAPF() + .bitcastToAPInt().getHiBits(32).getLimitedValue()); else if (MO.isGlobal()) emitGlobalAddress(MO.getGlobal(), ARM::reloc_arm_branch, true, false); else if (MO.isSymbol()) @@ -607,7 +631,9 @@ void ARMCodeEmitter::emitInstruction(const MachineInstr &MI) { case ARMII::VFPLdStMulFrm: emitVFPLoadStoreMultipleInstruction(MI); break; - + case ARMII::VFPMiscFrm: + emitMiscInstruction(MI); + break; // NEON instructions. case ARMII::NGetLnFrm: case ARMII::NSetLnFrm: @@ -629,6 +655,56 @@ void ARMCodeEmitter::emitInstruction(const MachineInstr &MI) { MCE.processDebugLoc(MI.getDebugLoc(), false); } +void ARMCodeEmitter::emitConstantToMemory(unsigned CPI, const Constant *C) { + DEBUG({ + errs() << " ** Constant pool #" << CPI << " @ " + << (void*)MCE.getCurrentPCValue() << " "; + if (const Function *F = dyn_cast<Function>(C)) + errs() << F->getName(); + else + errs() << *C; + errs() << '\n'; + }); + + switch (C->getValueID()) { + default: { + llvm_unreachable("Unable to handle this constantpool entry!"); + break; + } + case Value::GlobalVariableVal: { + emitGlobalAddress(static_cast<const GlobalValue*>(C), + ARM::reloc_arm_absolute, isa<Function>(C), false); + emitWordLE(0); + break; + } + case Value::ConstantIntVal: { + const ConstantInt *CI = static_cast<const ConstantInt*>(C); + uint32_t Val = *(uint32_t*)CI->getValue().getRawData(); + emitWordLE(Val); + break; + } + case Value::ConstantFPVal: { + const ConstantFP *CFP = static_cast<const ConstantFP*>(C); + if (CFP->getType()->isFloatTy()) + emitWordLE(CFP->getValueAPF().bitcastToAPInt().getZExtValue()); + else if (CFP->getType()->isDoubleTy()) + emitDWordLE(CFP->getValueAPF().bitcastToAPInt().getZExtValue()); + else { + llvm_unreachable("Unable to handle this constantpool entry!"); + } + break; + } + case Value::ConstantArrayVal: { + const ConstantArray *CA = static_cast<const ConstantArray*>(C); + for (unsigned i = 0, e = CA->getNumOperands(); i != e; ++i) + emitConstantToMemory(CPI, CA->getOperand(i)); + break; + } + } + + return; +} + void ARMCodeEmitter::emitConstPoolInstruction(const MachineInstr &MI) { unsigned CPI = MI.getOperand(0).getImm(); // CP instruction index. unsigned CPIndex = MI.getOperand(1).getIndex(); // Actual cp entry index. @@ -660,35 +736,7 @@ void ARMCodeEmitter::emitConstPoolInstruction(const MachineInstr &MI) { } emitWordLE(0); } else { - const Constant *CV = MCPE.Val.ConstVal; - - DEBUG({ - errs() << " ** Constant pool #" << CPI << " @ " - << (void*)MCE.getCurrentPCValue() << " "; - if (const Function *F = dyn_cast<Function>(CV)) - errs() << F->getName(); - else - errs() << *CV; - errs() << '\n'; - }); - - if (const GlobalValue *GV = dyn_cast<GlobalValue>(CV)) { - emitGlobalAddress(GV, ARM::reloc_arm_absolute, isa<Function>(GV), false); - emitWordLE(0); - } else if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { - uint32_t Val = uint32_t(*CI->getValue().getRawData()); - emitWordLE(Val); - } else if (const ConstantFP *CFP = dyn_cast<ConstantFP>(CV)) { - if (CFP->getType()->isFloatTy()) - emitWordLE(CFP->getValueAPF().bitcastToAPInt().getZExtValue()); - else if (CFP->getType()->isDoubleTy()) - emitDWordLE(CFP->getValueAPF().bitcastToAPInt().getZExtValue()); - else { - llvm_unreachable("Unable to handle this constantpool entry!"); - } - } else { - llvm_unreachable("Unable to handle this constantpool entry!"); - } + emitConstantToMemory(CPI, MCPE.Val.ConstVal); } } @@ -770,6 +818,32 @@ void ARMCodeEmitter::emitMOVi2piecesInstruction(const MachineInstr &MI) { emitWordLE(Binary); } +void ARMCodeEmitter::emitLEApcrelInstruction(const MachineInstr &MI) { + // It's basically add r, pc, (LCPI - $+8) + const MCInstrDesc &MCID = MI.getDesc(); + + unsigned Binary = 0; + + // Set the conditional execution predicate + Binary |= II->getPredicate(&MI) << ARMII::CondShift; + + // Encode S bit if MI modifies CPSR. + Binary |= getAddrModeSBit(MI, MCID); + + // Encode Rd. + Binary |= getMachineOpValue(MI, 0) << ARMII::RegRdShift; + + // Encode Rn which is PC. + Binary |= II->getRegisterInfo().getEncodingValue(ARM::PC) << ARMII::RegRnShift; + + // Encode the displacement which is a so_imm. + // Set bit I(25) to identify this is the immediate form of <shifter_op> + Binary |= 1 << ARMII::I_BitShift; + emitConstPoolAddress(MI.getOperand(1).getIndex(), ARM::reloc_arm_so_imm_cp_entry); + + emitWordLE(Binary); +} + void ARMCodeEmitter::emitLEApcrelJTInstruction(const MachineInstr &MI) { // It's basically add r, pc, (LJTI - $+8) @@ -847,6 +921,14 @@ void ARMCodeEmitter::emitPseudoInstruction(const MachineInstr &MI) { switch (Opcode) { default: llvm_unreachable("ARMCodeEmitter::emitPseudoInstruction"); + case ARM::B: + emitBranchInstruction(MI); + break; + case ARM::BR_JTr: + case ARM::BR_JTm: + case ARM::BR_JTadd: + emitMiscBranchInstruction(MI); + break; case ARM::BX_CALL: case ARM::BMOVPCRX_CALL: { // First emit mov lr, pc @@ -877,6 +959,9 @@ void ARMCodeEmitter::emitPseudoInstruction(const MachineInstr &MI) { case ARM::CONSTPOOL_ENTRY: emitConstPoolInstruction(MI); break; + case ARM::LDMIA_RET: + emitLoadStoreMultipleInstruction(MI); + break; case ARM::PICADD: { // Remember of the address of the PC label for relocation later. addPCLabel(MI.getOperand(2).getImm()); @@ -912,7 +997,10 @@ void ARMCodeEmitter::emitPseudoInstruction(const MachineInstr &MI) { else emitMOVi2piecesInstruction(MI); break; - + case ARM::LEApcrel: + // Materialize constantpool index address. + emitLEApcrelInstruction(MI); + break; case ARM::LEApcrelJT: // Materialize jumptable address. emitLEApcrelJTInstruction(MI); @@ -1013,6 +1101,11 @@ void ARMCodeEmitter::emitDataProcessingInstruction(const MachineInstr &MI, // Part of binary is determined by TableGn. unsigned Binary = getBinaryCodeForInstr(MI); + if (MCID.Opcode == ARM::MOVi16 || MCID.Opcode == ARM::MOVTi16) { + emitWordLE(Binary); + return; + } + // Set the conditional execution predicate Binary |= II->getPredicate(&MI) << ARMII::CondShift; @@ -1115,11 +1208,17 @@ void ARMCodeEmitter::emitLoadStoreInstruction(const MachineInstr &MI, // If this is an LDRi12, STRi12 or LDRcp, nothing more needs be done. if (MI.getOpcode() == ARM::LDRi12 || MI.getOpcode() == ARM::LDRcp || - MI.getOpcode() == ARM::STRi12) { + MI.getOpcode() == ARM::STRi12 || MI.getOpcode() == ARM::LDRBi12 || + MI.getOpcode() == ARM::STRBi12) { emitWordLE(Binary); return; } + if (MI.getOpcode() == ARM::BR_JTm) + Binary = 0x710F000; + else if (MI.getOpcode() == ARM::BR_JTr) + Binary = 0x1A0F000; + // Set the conditional execution predicate Binary |= II->getPredicate(&MI) << ARMII::CondShift; @@ -1275,6 +1374,11 @@ void ARMCodeEmitter::emitLoadStoreMultipleInstruction(const MachineInstr &MI) { // Part of binary is determined by TableGn. unsigned Binary = getBinaryCodeForInstr(MI); + if (MCID.getOpcode() == ARM::LDMIA_RET) { + IsUpdating = true; + Binary |= 0x8B00000; + } + // Set the conditional execution predicate Binary |= II->getPredicate(&MI) << ARMII::CondShift; @@ -1482,6 +1586,10 @@ void ARMCodeEmitter::emitBranchInstruction(const MachineInstr &MI) { // Part of binary is determined by TableGn. unsigned Binary = getBinaryCodeForInstr(MI); + if (MCID.Opcode == ARM::B) { + Binary = 0xEA000000; + } + // Set the conditional execution predicate Binary |= II->getPredicate(&MI) << ARMII::CondShift; @@ -1556,9 +1664,10 @@ unsigned ARMCodeEmitter::encodeVFPRd(const MachineInstr &MI, unsigned Binary = 0; bool isSPVFP = ARM::SPRRegClass.contains(RegD); RegD = II->getRegisterInfo().getEncodingValue(RegD); - if (!isSPVFP) - Binary |= RegD << ARMII::RegRdShift; - else { + if (!isSPVFP) { + Binary |= (RegD & 0x0F) << ARMII::RegRdShift; + Binary |= ((RegD & 0x10) >> 4) << ARMII::D_BitShift; + } else { Binary |= ((RegD & 0x1E) >> 1) << ARMII::RegRdShift; Binary |= (RegD & 0x01) << ARMII::D_BitShift; } @@ -1571,9 +1680,10 @@ unsigned ARMCodeEmitter::encodeVFPRn(const MachineInstr &MI, unsigned Binary = 0; bool isSPVFP = ARM::SPRRegClass.contains(RegN); RegN = II->getRegisterInfo().getEncodingValue(RegN); - if (!isSPVFP) - Binary |= RegN << ARMII::RegRnShift; - else { + if (!isSPVFP) { + Binary |= (RegN & 0x0F) << ARMII::RegRnShift; + Binary |= ((RegN & 0x10) >> 4) << ARMII::N_BitShift; + } else { Binary |= ((RegN & 0x1E) >> 1) << ARMII::RegRnShift; Binary |= (RegN & 0x01) << ARMII::N_BitShift; } @@ -1586,9 +1696,10 @@ unsigned ARMCodeEmitter::encodeVFPRm(const MachineInstr &MI, unsigned Binary = 0; bool isSPVFP = ARM::SPRRegClass.contains(RegM); RegM = II->getRegisterInfo().getEncodingValue(RegM); - if (!isSPVFP) - Binary |= RegM; - else { + if (!isSPVFP) { + Binary |= (RegM & 0x0F); + Binary |= ((RegM & 0x10) >> 4) << ARMII::M_BitShift; + } else { Binary |= ((RegM & 0x1E) >> 1); Binary |= (RegM & 0x01) << ARMII::M_BitShift; } @@ -1605,9 +1716,6 @@ void ARMCodeEmitter::emitVFPArithInstruction(const MachineInstr &MI) { Binary |= II->getPredicate(&MI) << ARMII::CondShift; unsigned OpIdx = 0; - assert((Binary & ARMII::D_BitShift) == 0 && - (Binary & ARMII::N_BitShift) == 0 && - (Binary & ARMII::M_BitShift) == 0 && "VFP encoding bug!"); // Encode Dd / Sd. Binary |= encodeVFPRd(MI, OpIdx++); @@ -1697,6 +1805,12 @@ void ARMCodeEmitter::emitVFPLoadStoreInstruction(const MachineInstr &MI) { // Set the conditional execution predicate Binary |= II->getPredicate(&MI) << ARMII::CondShift; + if (MI.getOpcode() == ARM::VLDRS || MI.getOpcode() == ARM::VLDRD || + MI.getOpcode() == ARM::VSTRS || MI.getOpcode() == ARM::VSTRD){ + emitWordLE(Binary); + return; + } + unsigned OpIdx = 0; // Encode Dd / Sd. @@ -1772,6 +1886,26 @@ ARMCodeEmitter::emitVFPLoadStoreMultipleInstruction(const MachineInstr &MI) { emitWordLE(Binary); } +void ARMCodeEmitter::emitMiscInstruction(const MachineInstr &MI) { + unsigned Opcode = MI.getDesc().Opcode; + // Part of binary is determined by TableGn. + unsigned Binary = getBinaryCodeForInstr(MI); + + if (Opcode == ARM::FCONSTS) { + unsigned Imm = getMachineOpValue(MI, 1); + Binary &= ~(0x780000 >> 19); + Binary |= (Imm & 0x780000) >> 19; + Binary &= ~(0x3800000 >> 7); + Binary |= (Imm & 0x3800000) >> 7; + Binary = VFPThumb2PostEncoder(MI, Binary); + } + + // Set the conditional execution predicate + Binary |= II->getPredicate(&MI) << ARMII::CondShift; + + emitWordLE(Binary); +} + unsigned ARMCodeEmitter::encodeNEONRd(const MachineInstr &MI, unsigned OpIdx) const { unsigned RegD = MI.getOperand(OpIdx).getReg(); diff --git a/lib/Target/ARM/ARMRelocations.h b/lib/Target/ARM/ARMRelocations.h index 21877fd..9c32b15 100644 --- a/lib/Target/ARM/ARMRelocations.h +++ b/lib/Target/ARM/ARMRelocations.h @@ -35,6 +35,10 @@ namespace llvm { // should be divided by 4. reloc_arm_vfp_cp_entry, + // reloc_arm_so_imm - Same as reloc_arm_cp_entry except contant should be + // encoded as so_imm value. + reloc_arm_so_imm_cp_entry, + // reloc_arm_machine_cp_entry - Relocation of a ARM machine constantpool // entry. reloc_arm_machine_cp_entry, diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp index a116298..8351c63 100644 --- a/lib/Target/ARM/ARMSubtarget.cpp +++ b/lib/Target/ARM/ARMSubtarget.cpp @@ -27,7 +27,7 @@ using namespace llvm; -static cl::opt<bool> +cl::opt<bool> ReserveR9("arm-reserve-r9", cl::Hidden, cl::desc("Reserve R9, making it unavailable as GPR")); diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index c2bf788..be84bf6 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -23,7 +23,7 @@ #include "llvm/Transforms/Scalar.h" using namespace llvm; -static cl::opt<bool> +cl::opt<bool> EnableGlobalMerge("global-merge", cl::Hidden, cl::desc("Enable global merge pass"), cl::init(true)); diff --git a/lib/Target/ARM/Android.mk b/lib/Target/ARM/Android.mk new file mode 100644 index 0000000..25b0d89 --- /dev/null +++ b/lib/Target/ARM/Android.mk @@ -0,0 +1,85 @@ +LOCAL_PATH := $(call my-dir) + +arm_codegen_TBLGEN_TABLES := \ + ARMGenRegisterInfo.inc \ + ARMGenInstrInfo.inc \ + ARMGenCodeEmitter.inc \ + ARMGenMCCodeEmitter.inc \ + ARMGenMCPseudoLowering.inc \ + ARMGenAsmWriter.inc \ + ARMGenAsmMatcher.inc \ + ARMGenDAGISel.inc \ + ARMGenFastISel.inc \ + ARMGenCallingConv.inc \ + ARMGenSubtargetInfo.inc \ + ARMGenDisassemblerTables.inc + +arm_codegen_SRC_FILES := \ + A15SDOptimizer.cpp \ + ARMAsmPrinter.cpp \ + ARMBaseInstrInfo.cpp \ + ARMBaseRegisterInfo.cpp \ + ARMCodeEmitter.cpp \ + ARMConstantIslandPass.cpp \ + ARMConstantPoolValue.cpp \ + ARMExpandPseudoInsts.cpp \ + ARMFastISel.cpp \ + ARMFrameLowering.cpp \ + ARMHazardRecognizer.cpp \ + ARMISelDAGToDAG.cpp \ + ARMISelLowering.cpp \ + ARMInstrInfo.cpp \ + ARMJITInfo.cpp \ + ARMLoadStoreOptimizer.cpp \ + ARMMCInstLower.cpp \ + ARMMachineFunctionInfo.cpp \ + ARMRegisterInfo.cpp \ + ARMSelectionDAGInfo.cpp \ + ARMSubtarget.cpp \ + ARMTargetMachine.cpp \ + ARMTargetObjectFile.cpp \ + ARMTargetTransformInfo.cpp \ + MLxExpansionPass.cpp \ + Thumb1FrameLowering.cpp \ + Thumb1InstrInfo.cpp \ + Thumb1RegisterInfo.cpp \ + Thumb2ITBlockPass.cpp \ + Thumb2InstrInfo.cpp \ + Thumb2RegisterInfo.cpp \ + Thumb2SizeReduction.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMARMCodeGen +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc +TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +ifeq ($(TARGET_ARCH),arm) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMARMCodeGen +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc +TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/ARM/AsmParser/Android.mk b/lib/Target/ARM/AsmParser/Android.mk new file mode 100644 index 0000000..e17a274 --- /dev/null +++ b/lib/Target/ARM/AsmParser/Android.mk @@ -0,0 +1,61 @@ +LOCAL_PATH := $(call my-dir) + +#===---------------------------------------------------------------=== +# libARMAsmParser (common) +#===---------------------------------------------------------------=== + +arm_asm_parser_SRC_FILES := \ + ARMAsmParser.cpp + +arm_asm_parser_TBLGEN_TABLES := \ + ARMGenInstrInfo.inc \ + ARMGenRegisterInfo.inc \ + ARMGenAsmMatcher.inc \ + ARMGenSubtargetInfo.inc + +arm_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +arm_asm_parser_C_INCLUDES := $(LOCAL_PATH)/.. + + +#===---------------------------------------------------------------=== +# libARMAsmParser (host) +#===---------------------------------------------------------------=== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMARMAsmParser +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES) +LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES) +TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +ifneq (,$(filter windows darwin,$(HOST_OS))) +# Override the default optimization level to work around taking forever (~50m) +# to compile ARMAsmParser.cpp on Mac with gcc 4.2, +# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile +# the win_sdk. +LOCAL_CFLAGS += -O0 +endif +include $(BUILD_HOST_STATIC_LIBRARY) + + +#===---------------------------------------------------------------=== +# libARMAsmParser (target) +#===---------------------------------------------------------------=== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMARMAsmParser +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES) +LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES) +TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Target/ARM/Disassembler/Android.mk b/lib/Target/ARM/Disassembler/Android.mk new file mode 100644 index 0000000..51e364b --- /dev/null +++ b/lib/Target/ARM/Disassembler/Android.mk @@ -0,0 +1,55 @@ +LOCAL_PATH := $(call my-dir) + +arm_disassembler_TBLGEN_TABLES := \ + ARMGenDisassemblerTables.inc \ + ARMGenInstrInfo.inc \ + ARMGenSubtargetInfo.inc \ + ARMGenRegisterInfo.inc + +arm_disassembler_SRC_FILES := \ + ARMDisassembler.cpp + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),arm) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMARMDisassembler + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMARMDisassembler + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + diff --git a/lib/Target/ARM/InstPrinter/Android.mk b/lib/Target/ARM/InstPrinter/Android.mk new file mode 100644 index 0000000..a047f6f --- /dev/null +++ b/lib/Target/ARM/InstPrinter/Android.mk @@ -0,0 +1,55 @@ +LOCAL_PATH := $(call my-dir) + +arm_asm_printer_TBLGEN_TABLES := \ + ARMGenAsmWriter.inc \ + ARMGenRegisterInfo.inc \ + ARMGenSubtargetInfo.inc \ + ARMGenInstrInfo.inc + +arm_asm_printer_SRC_FILES := \ + ARMInstPrinter.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES) + +LOCAL_MODULE:= libLLVMARMAsmPrinter + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES) + +LOCAL_C_INCLUDES+= \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMARMAsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) + diff --git a/lib/Target/ARM/MCTargetDesc/Android.mk b/lib/Target/ARM/MCTargetDesc/Android.mk new file mode 100644 index 0000000..af22753 --- /dev/null +++ b/lib/Target/ARM/MCTargetDesc/Android.mk @@ -0,0 +1,60 @@ +LOCAL_PATH := $(call my-dir) + +arm_mc_desc_TBLGEN_TABLES := \ + ARMGenRegisterInfo.inc \ + ARMGenInstrInfo.inc \ + ARMGenMCCodeEmitter.inc \ + ARMGenSubtargetInfo.inc + +arm_mc_desc_SRC_FILES := \ + ARMAsmBackend.cpp \ + ARMELFObjectWriter.cpp \ + ARMELFStreamer.cpp \ + ARMMCAsmInfo.cpp \ + ARMMCCodeEmitter.cpp \ + ARMMCExpr.cpp \ + ARMMCTargetDesc.cpp \ + ARMMachObjectWriter.cpp \ + ARMMachORelocationInfo.cpp \ + ARMUnwindOpAsm.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + + +LOCAL_MODULE:= libLLVMARMDesc +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. +TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +ifeq ($(TARGET_ARCH),arm) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMARMDesc +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. +TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/ARM/TargetInfo/Android.mk b/lib/Target/ARM/TargetInfo/Android.mk new file mode 100644 index 0000000..d1af6ae --- /dev/null +++ b/lib/Target/ARM/TargetInfo/Android.mk @@ -0,0 +1,55 @@ +LOCAL_PATH := $(call my-dir) + +arm_target_info_TBLGEN_TABLES := \ + ARMGenSubtargetInfo.inc \ + ARMGenRegisterInfo.inc \ + ARMGenInstrInfo.inc + +arm_target_info_SRC_FILES := \ + ARMTargetInfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES) + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMARMInfo + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),arm) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES) + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMARMInfo + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/Android.mk b/lib/Target/Android.mk new file mode 100644 index 0000000..60f5b18 --- /dev/null +++ b/lib/Target/Android.mk @@ -0,0 +1,38 @@ +LOCAL_PATH:= $(call my-dir) + +target_SRC_FILES := \ + Mangler.cpp \ + Target.cpp \ + TargetIntrinsicInfo.cpp \ + TargetJITInfo.cpp \ + TargetLibraryInfo.cpp \ + TargetLoweringObjectFile.cpp \ + TargetMachineC.cpp \ + TargetMachine.cpp \ + TargetSubtargetInfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(target_SRC_FILES) + +LOCAL_MODULE:= libLLVMTarget + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(target_SRC_FILES) + +LOCAL_MODULE:= libLLVMTarget + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Target/Mips/Android.mk b/lib/Target/Mips/Android.mk new file mode 100644 index 0000000..954b1d0 --- /dev/null +++ b/lib/Target/Mips/Android.mk @@ -0,0 +1,84 @@ +LOCAL_PATH := $(call my-dir) + +mips_codegen_TBLGEN_TABLES := \ + MipsGenRegisterInfo.inc \ + MipsGenInstrInfo.inc \ + MipsGenCodeEmitter.inc \ + MipsGenMCCodeEmitter.inc \ + MipsGenMCPseudoLowering.inc \ + MipsGenAsmWriter.inc \ + MipsGenDAGISel.inc \ + MipsGenCallingConv.inc \ + MipsGenSubtargetInfo.inc + +mips_codegen_SRC_FILES := \ + Mips16FrameLowering.cpp \ + Mips16HardFloat.cpp \ + Mips16ISelDAGToDAG.cpp \ + Mips16ISelLowering.cpp \ + Mips16InstrInfo.cpp \ + Mips16RegisterInfo.cpp \ + MipsAnalyzeImmediate.cpp \ + MipsAsmPrinter.cpp \ + MipsCodeEmitter.cpp \ + MipsConstantIslandPass.cpp \ + MipsDelaySlotFiller.cpp \ + MipsFrameLowering.cpp \ + MipsInstrInfo.cpp \ + MipsISelDAGToDAG.cpp \ + MipsISelLowering.cpp \ + MipsJITInfo.cpp \ + MipsLongBranch.cpp \ + MipsMachineFunction.cpp \ + MipsMCInstLower.cpp \ + MipsModuleISelDAGToDAG.cpp \ + MipsOptimizeMathLibCalls.cpp \ + MipsOs16.cpp \ + MipsRegisterInfo.cpp \ + MipsSEFrameLowering.cpp \ + MipsSEISelDAGToDAG.cpp \ + MipsSEISelLowering.cpp \ + MipsSEInstrInfo.cpp \ + MipsSERegisterInfo.cpp \ + MipsSelectionDAGInfo.cpp \ + MipsSubtarget.cpp \ + MipsTargetMachine.cpp \ + MipsTargetObjectFile.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsCodeGen +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc + +TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +ifeq ($(TARGET_ARCH),mips) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsCodeGen +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc + +TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/Mips/AsmParser/Android.mk b/lib/Target/Mips/AsmParser/Android.mk new file mode 100644 index 0000000..7d1817d --- /dev/null +++ b/lib/Target/Mips/AsmParser/Android.mk @@ -0,0 +1,54 @@ +LOCAL_PATH := $(call my-dir) + +#===---------------------------------------------------------------=== +# libLLVMMipsAsmParser (common) +#===---------------------------------------------------------------=== + +mips_asm_parser_SRC_FILES := \ + MipsAsmParser.cpp + +mips_asm_parser_C_INCLUDES := $(LOCAL_PATH)/.. + +mips_asm_parser_TBLGEN_TABLES := \ + MipsGenAsmMatcher.inc \ + MipsGenInstrInfo.inc \ + MipsGenRegisterInfo.inc \ + MipsGenSubtargetInfo.inc + +mips_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + + +#===---------------------------------------------------------------=== +# libLLVMMipsAsmParser (host) +#===---------------------------------------------------------------=== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsAsmParser +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES) +LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES) +TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + + +#===---------------------------------------------------------------=== +# libLLVMMipsAsmParser (target) +#===---------------------------------------------------------------=== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsAsmParser +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES) +LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES) +TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Target/Mips/Disassembler/Android.mk b/lib/Target/Mips/Disassembler/Android.mk new file mode 100644 index 0000000..4e38c4b --- /dev/null +++ b/lib/Target/Mips/Disassembler/Android.mk @@ -0,0 +1,48 @@ +LOCAL_PATH := $(call my-dir) + +mips_disassembler_TBLGEN_TABLES := \ + MipsGenDisassemblerTables.inc \ + MipsGenInstrInfo.inc \ + MipsGenRegisterInfo.inc \ + MipsGenSubtargetInfo.inc + +mips_disassembler_SRC_FILES := \ + MipsDisassembler.cpp + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),mips) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsDisassembler +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsDisassembler +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/Target/Mips/InstPrinter/Android.mk b/lib/Target/Mips/InstPrinter/Android.mk new file mode 100644 index 0000000..fc256cd --- /dev/null +++ b/lib/Target/Mips/InstPrinter/Android.mk @@ -0,0 +1,46 @@ +LOCAL_PATH := $(call my-dir) + +mips_asm_printer_TBLGEN_TABLES := \ + MipsGenAsmWriter.inc \ + MipsGenRegisterInfo.inc \ + MipsGenSubtargetInfo.inc \ + MipsGenInstrInfo.inc + +mips_asm_printer_SRC_FILES := \ + MipsInstPrinter.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsAsmPrinter +LOCAL_MODULE_TAGS := optional + +TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsAsmPrinter +LOCAL_MODULE_TAGS := optional + +TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Target/Mips/MCTargetDesc/Android.mk b/lib/Target/Mips/MCTargetDesc/Android.mk new file mode 100644 index 0000000..fcf58c3 --- /dev/null +++ b/lib/Target/Mips/MCTargetDesc/Android.mk @@ -0,0 +1,56 @@ +LOCAL_PATH := $(call my-dir) + +mips_mc_desc_TBLGEN_TABLES := \ + MipsGenRegisterInfo.inc \ + MipsGenInstrInfo.inc \ + MipsGenMCCodeEmitter.inc \ + MipsGenSubtargetInfo.inc + +mips_mc_desc_SRC_FILES := \ + MipsAsmBackend.cpp \ + MipsELFObjectWriter.cpp \ + MipsELFStreamer.cpp \ + MipsMCAsmInfo.cpp \ + MipsMCCodeEmitter.cpp \ + MipsMCTargetDesc.cpp \ + MipsReginfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsDesc +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. +TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +ifeq ($(TARGET_ARCH),mips) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsDesc +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. +TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/Mips/TargetInfo/Android.mk b/lib/Target/Mips/TargetInfo/Android.mk new file mode 100644 index 0000000..e3f41bc --- /dev/null +++ b/lib/Target/Mips/TargetInfo/Android.mk @@ -0,0 +1,47 @@ +LOCAL_PATH := $(call my-dir) + +mips_target_info_TBLGEN_TABLES := \ + MipsGenInstrInfo.inc \ + MipsGenRegisterInfo.inc \ + MipsGenSubtargetInfo.inc + +mips_target_info_SRC_FILES := \ + MipsTargetInfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsInfo +LOCAL_MODULE_TAGS := optional + +TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),mips) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMMipsInfo +LOCAL_MODULE_TAGS := optional + +TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/X86/Android.mk b/lib/Target/X86/Android.mk new file mode 100644 index 0000000..a9c413d --- /dev/null +++ b/lib/Target/X86/Android.mk @@ -0,0 +1,72 @@ +LOCAL_PATH := $(call my-dir) + +x86_codegen_TBLGEN_TABLES := \ + X86GenAsmWriter.inc \ + X86GenAsmWriter1.inc \ + X86GenRegisterInfo.inc \ + X86GenInstrInfo.inc \ + X86GenDAGISel.inc \ + X86GenFastISel.inc \ + X86GenSubtargetInfo.inc \ + X86GenCallingConv.inc + +x86_codegen_SRC_FILES := \ + X86AsmPrinter.cpp \ + X86COFFMachineModuleInfo.cpp \ + X86CodeEmitter.cpp \ + X86FastISel.cpp \ + X86FixupLEAs.cpp \ + X86FloatingPoint.cpp \ + X86FrameLowering.cpp \ + X86ISelDAGToDAG.cpp \ + X86ISelLowering.cpp \ + X86InstrInfo.cpp \ + X86JITInfo.cpp \ + X86MachineFunctionInfo.cpp \ + X86MCInstLower.cpp \ + X86PadShortFunction.cpp \ + X86RegisterInfo.cpp \ + X86SelectionDAGInfo.cpp \ + X86Subtarget.cpp \ + X86TargetMachine.cpp \ + X86TargetObjectFile.cpp \ + X86TargetTransformInfo.cpp \ + X86VZeroUpper.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES) + +LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES) + +LOCAL_MODULE:= libLLVMX86CodeGen + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +ifeq ($(TARGET_ARCH),x86) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES) + +LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES) + +LOCAL_MODULE:= libLLVMX86CodeGen + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/X86/AsmParser/Android.mk b/lib/Target/X86/AsmParser/Android.mk new file mode 100644 index 0000000..d6de437 --- /dev/null +++ b/lib/Target/X86/AsmParser/Android.mk @@ -0,0 +1,56 @@ +LOCAL_PATH := $(call my-dir) + +# For the device only +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +x86_asm_parser_SRC_FILES := \ + X86AsmParser.cpp + +x86_asm_parser_TBLGEN_TABLES := \ + X86GenAsmMatcher.inc \ + X86GenInstrInfo.inc \ + X86GenRegisterInfo.inc \ + X86GenSubtargetInfo.inc + +x86_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +x86_asm_parser_C_INCLUDES += \ + $(LOCAL_PATH)/.. + + +#===---------------------------------------------------------------=== +# libX86AsmParser (host) +#===---------------------------------------------------------------=== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMX86AsmParser +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES) +LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES) +TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + + +#===---------------------------------------------------------------=== +# libX86AsmParser (target) +#===---------------------------------------------------------------=== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMX86AsmParser +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES) +LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES) +TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Target/X86/Disassembler/Android.mk b/lib/Target/X86/Disassembler/Android.mk new file mode 100644 index 0000000..1cee663 --- /dev/null +++ b/lib/Target/X86/Disassembler/Android.mk @@ -0,0 +1,55 @@ +LOCAL_PATH := $(call my-dir) + +x86_disassembler_TBLGEN_TABLES := \ + X86GenDisassemblerTables.inc \ + X86GenInstrInfo.inc \ + X86GenRegisterInfo.inc + +x86_disassembler_SRC_FILES := \ + X86Disassembler.cpp \ + X86DisassemblerDecoder.c + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),x86) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86Disassembler + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES) + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86Disassembler + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/Target/X86/InstPrinter/Android.mk b/lib/Target/X86/InstPrinter/Android.mk new file mode 100644 index 0000000..0fd7058 --- /dev/null +++ b/lib/Target/X86/InstPrinter/Android.mk @@ -0,0 +1,57 @@ +LOCAL_PATH := $(call my-dir) + +x86_instprinter_TBLGEN_TABLES := \ + X86GenAsmWriter.inc \ + X86GenAsmWriter1.inc \ + X86GenInstrInfo.inc \ + X86GenRegisterInfo.inc \ + X86GenSubtargetInfo.inc + +x86_instprinter_SRC_FILES := \ + X86ATTInstPrinter.cpp \ + X86IntelInstPrinter.cpp \ + X86InstComments.cpp + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),x86) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86AsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE := libLLVMX86AsmPrinter + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/Target/X86/MCTargetDesc/Android.mk b/lib/Target/X86/MCTargetDesc/Android.mk new file mode 100644 index 0000000..31ba842 --- /dev/null +++ b/lib/Target/X86/MCTargetDesc/Android.mk @@ -0,0 +1,56 @@ +LOCAL_PATH := $(call my-dir) + +x86_mc_desc_TBLGEN_TABLES := \ + X86GenRegisterInfo.inc \ + X86GenInstrInfo.inc \ + X86GenSubtargetInfo.inc + +x86_mc_desc_SRC_FILES := \ + X86AsmBackend.cpp \ + X86ELFObjectWriter.cpp \ + X86ELFRelocationInfo.cpp \ + X86MCTargetDesc.cpp \ + X86MCAsmInfo.cpp \ + X86MCCodeEmitter.cpp \ + X86MachORelocationInfo.cpp \ + X86MachObjectWriter.cpp \ + X86WinCOFFObjectWriter.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +LOCAL_MODULE:= libLLVMX86Desc +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. +TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device only +# ===================================================== +ifeq ($(TARGET_ARCH),x86) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + + +LOCAL_MODULE:= libLLVMX86Desc +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES) +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. +TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES) +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/X86/TargetInfo/Android.mk b/lib/Target/X86/TargetInfo/Android.mk new file mode 100644 index 0000000..c72b383 --- /dev/null +++ b/lib/Target/X86/TargetInfo/Android.mk @@ -0,0 +1,55 @@ +LOCAL_PATH := $(call my-dir) + +x86_target_info_TBLGEN_TABLES := \ + X86GenRegisterInfo.inc \ + X86GenSubtargetInfo.inc \ + X86GenInstrInfo.inc + +x86_target_info_SRC_FILES := \ + X86TargetInfo.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES) + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86Info + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +ifeq ($(TARGET_ARCH),x86) +include $(CLEAR_VARS) +include $(CLEAR_TBLGEN_VARS) + +TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES) + +TBLGEN_TD_DIR := $(LOCAL_PATH)/.. + +LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES) + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86Info + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_TBLGEN_RULES_MK) +include $(BUILD_STATIC_LIBRARY) +endif diff --git a/lib/Target/X86/Utils/Android.mk b/lib/Target/X86/Utils/Android.mk new file mode 100644 index 0000000..d9dd670 --- /dev/null +++ b/lib/Target/X86/Utils/Android.mk @@ -0,0 +1,34 @@ +LOCAL_PATH := $(call my-dir) + +x86_utils_SRC_FILES := \ + X86ShuffleDecode.cpp + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(x86_utils_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86Utils + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(BUILD_STATIC_LIBRARY) + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(x86_utils_SRC_FILES) + +LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. + +LOCAL_MODULE:= libLLVMX86Utils + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 76eeb64..081c558 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -19808,8 +19808,8 @@ X86TargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint, if (Res.second == 0) { // Map st(0) -> st(7) -> ST0 if (Constraint.size() == 7 && Constraint[0] == '{' && - tolower(Constraint[1]) == 's' && - tolower(Constraint[2]) == 't' && + std::tolower(Constraint[1]) == 's' && + std::tolower(Constraint[2]) == 't' && Constraint[3] == '(' && (Constraint[4] >= '0' && Constraint[4] <= '7') && Constraint[5] == ')' && diff --git a/lib/Transforms/IPO/Android.mk b/lib/Transforms/IPO/Android.mk new file mode 100644 index 0000000..dcf48df --- /dev/null +++ b/lib/Transforms/IPO/Android.mk @@ -0,0 +1,50 @@ +LOCAL_PATH:= $(call my-dir) + +transforms_ipo_SRC_FILES := \ + ArgumentPromotion.cpp \ + BarrierNoopPass.cpp \ + ConstantMerge.cpp \ + DeadArgumentElimination.cpp \ + ExtractGV.cpp \ + FunctionAttrs.cpp \ + GlobalDCE.cpp \ + GlobalOpt.cpp \ + IPConstantPropagation.cpp \ + IPO.cpp \ + InlineAlways.cpp \ + InlineSimple.cpp \ + Inliner.cpp \ + Internalize.cpp \ + LoopExtractor.cpp \ + MergeFunctions.cpp \ + PartialInlining.cpp \ + PassManagerBuilder.cpp \ + PruneEH.cpp \ + StripDeadPrototypes.cpp \ + StripSymbols.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES) +LOCAL_MODULE:= libLLVMipo + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES) +LOCAL_MODULE:= libLLVMipo + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Transforms/InstCombine/Android.mk b/lib/Transforms/InstCombine/Android.mk new file mode 100644 index 0000000..31605d9 --- /dev/null +++ b/lib/Transforms/InstCombine/Android.mk @@ -0,0 +1,42 @@ +LOCAL_PATH:= $(call my-dir) + +transforms_inst_combine_SRC_FILES := \ + InstCombineAddSub.cpp \ + InstCombineAndOrXor.cpp \ + InstCombineCalls.cpp \ + InstCombineCasts.cpp \ + InstCombineCompares.cpp \ + InstCombineLoadStoreAlloca.cpp \ + InstCombineMulDivRem.cpp \ + InstCombinePHI.cpp \ + InstCombineSelect.cpp \ + InstCombineShifts.cpp \ + InstCombineSimplifyDemanded.cpp \ + InstCombineVectorOps.cpp \ + InstructionCombining.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES) +LOCAL_MODULE:= libLLVMInstCombine + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES) +LOCAL_MODULE:= libLLVMInstCombine + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Transforms/Instrumentation/Android.mk b/lib/Transforms/Instrumentation/Android.mk new file mode 100644 index 0000000..7182e50 --- /dev/null +++ b/lib/Transforms/Instrumentation/Android.mk @@ -0,0 +1,37 @@ +LOCAL_PATH:= $(call my-dir) + +instrumentation_SRC_FILES := \ + AddressSanitizer.cpp \ + BoundsChecking.cpp \ + EdgeProfiling.cpp \ + GCOVProfiling.cpp \ + Instrumentation.cpp \ + MemorySanitizer.cpp \ + OptimalEdgeProfiling.cpp \ + PathProfiling.cpp \ + ProfilingUtils.cpp \ + ThreadSanitizer.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_MODULE:= libLLVMInstrumentation +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(instrumentation_SRC_FILES) + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the target +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_MODULE:= libLLVMInstrumentation +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := $(instrumentation_SRC_FILES) + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Transforms/ObjCARC/Android.mk b/lib/Transforms/ObjCARC/Android.mk new file mode 100644 index 0000000..126d7ee --- /dev/null +++ b/lib/Transforms/ObjCARC/Android.mk @@ -0,0 +1,38 @@ +LOCAL_PATH:= $(call my-dir) + +transforms_objcarc_SRC_FILES := \ + DependencyAnalysis.cpp \ + ObjCARCAliasAnalysis.cpp \ + ObjCARCAPElim.cpp \ + ObjCARCContract.cpp \ + ObjCARC.cpp \ + ObjCARCExpand.cpp \ + ObjCARCOpts.cpp \ + ObjCARCUtil.cpp \ + ProvenanceAnalysis.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES) +LOCAL_MODULE:= libLLVMTransformObjCARC + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES) +LOCAL_MODULE:= libLLVMTransformObjCARC + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Transforms/Scalar/Android.mk b/lib/Transforms/Scalar/Android.mk new file mode 100644 index 0000000..d2e1478 --- /dev/null +++ b/lib/Transforms/Scalar/Android.mk @@ -0,0 +1,70 @@ +LOCAL_PATH:= $(call my-dir) + +transforms_scalar_SRC_FILES := \ + ADCE.cpp \ + BasicBlockPlacement.cpp \ + CodeGenPrepare.cpp \ + ConstantProp.cpp \ + CorrelatedValuePropagation.cpp \ + DCE.cpp \ + DeadStoreElimination.cpp \ + EarlyCSE.cpp \ + GlobalMerge.cpp \ + GVN.cpp \ + IndVarSimplify.cpp \ + JumpThreading.cpp \ + LICM.cpp \ + LoopDeletion.cpp \ + LoopIdiomRecognize.cpp \ + LoopInstSimplify.cpp \ + LoopRotation.cpp \ + LoopStrengthReduce.cpp \ + LoopUnrollPass.cpp \ + LoopUnswitch.cpp \ + LowerAtomic.cpp \ + MemCpyOptimizer.cpp \ + Reassociate.cpp \ + Reg2Mem.cpp \ + SCCP.cpp \ + SROA.cpp \ + Scalar.cpp \ + ScalarReplAggregates.cpp \ + SimplifyCFGPass.cpp \ + Sink.cpp \ + StructurizeCFG.cpp \ + TailRecursionElimination.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + $(transforms_scalar_SRC_FILES) + +LOCAL_MODULE:= libLLVMScalarOpts + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_scalar_SRC_FILES) +LOCAL_MODULE:= libLLVMScalarOpts + +# Override the default optimization level to work around a SIGSEGV +# on x86 target builds for SROA.cpp. +# Bug: 8047767 +ifeq ($(TARGET_ARCH),x86) +LOCAL_CFLAGS += -O1 +endif + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Transforms/Utils/Android.mk b/lib/Transforms/Utils/Android.mk new file mode 100644 index 0000000..9bf9ef3 --- /dev/null +++ b/lib/Transforms/Utils/Android.mk @@ -0,0 +1,61 @@ +LOCAL_PATH:= $(call my-dir) + +transforms_utils_SRC_FILES := \ + BasicBlockUtils.cpp \ + BreakCriticalEdges.cpp \ + BuildLibCalls.cpp \ + BypassSlowDivision.cpp \ + CloneFunction.cpp \ + CloneModule.cpp \ + CmpInstAnalysis.cpp \ + CodeExtractor.cpp \ + DemoteRegToStack.cpp \ + InlineFunction.cpp \ + InstructionNamer.cpp \ + LCSSA.cpp \ + Local.cpp \ + LoopSimplify.cpp \ + LoopUnroll.cpp \ + LoopUnrollRuntime.cpp \ + LowerExpectIntrinsic.cpp \ + LowerInvoke.cpp \ + LowerSwitch.cpp \ + Mem2Reg.cpp \ + MetaRenamer.cpp \ + ModuleUtils.cpp \ + PromoteMemoryToRegister.cpp \ + SSAUpdater.cpp \ + SimplifyCFG.cpp \ + SimplifyIndVar.cpp \ + SimplifyInstructions.cpp \ + SimplifyLibCalls.cpp \ + SpecialCaseList.cpp \ + UnifyFunctionExitNodes.cpp \ + Utils.cpp \ + ValueMapper.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES) +LOCAL_MODULE:= libLLVMTransformUtils + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES) +LOCAL_MODULE:= libLLVMTransformUtils + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) diff --git a/lib/Transforms/Vectorize/Android.mk b/lib/Transforms/Vectorize/Android.mk new file mode 100644 index 0000000..2778900 --- /dev/null +++ b/lib/Transforms/Vectorize/Android.mk @@ -0,0 +1,33 @@ +LOCAL_PATH:= $(call my-dir) + +transforms_vectorize_SRC_FILES := \ + BBVectorize.cpp \ + LoopVectorize.cpp \ + SLPVectorizer.cpp \ + Vectorize.cpp + +# For the host +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES) +LOCAL_MODULE:= libLLVMVectorize + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_HOST_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_HOST_STATIC_LIBRARY) + +# For the device +# ===================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES) +LOCAL_MODULE:= libLLVMVectorize + +LOCAL_MODULE_TAGS := optional + +include $(LLVM_DEVICE_BUILD_MK) +include $(LLVM_GEN_INTRINSICS_MK) +include $(BUILD_STATIC_LIBRARY) |