Compile only the target architecture LLVM backend.

Reactor is a run-time code generator so it only needs to support the
CPU architecture for which it is being compiled. This reduces (static)
compile time and potentially the binary size.

Bug b/115344057

Change-Id: I925875e33e3c24dfc41abc1c055353a4099be618
Reviewed-on: https://swiftshader-review.googlesource.com/c/22208
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/third_party/llvm-7.0/BUILD.gn b/third_party/llvm-7.0/BUILD.gn
index f28a03d..a91bbcd 100644
--- a/third_party/llvm-7.0/BUILD.gn
+++ b/third_party/llvm-7.0/BUILD.gn
@@ -72,6 +72,7 @@
     "-Wno-unused-variable",
     "-Wno-error=header-hygiene",
   ]
+
   defines = [
     "__STDC_CONSTANT_MACROS",
     "__STDC_LIMIT_MACROS",
@@ -380,167 +381,34 @@
     "llvm/lib/Target/TargetLoweringObjectFile.cpp",
     "llvm/lib/Target/TargetMachine.cpp",
     "llvm/lib/Target/TargetMachineC.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp",
-    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp",
-    "llvm/lib/Target/AArch64/AArch64ISelLowering.cpp",
-    "llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp",
-    "llvm/lib/Target/AArch64/AArch64FastISel.cpp",
-    "llvm/lib/Target/AArch64/AArch64InstrInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64PromoteConstant.cpp",
-    "llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp",
-    "llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp",
-    "llvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64A53Fix835769.cpp",
-    "llvm/lib/Target/AArch64/AArch64TargetMachine.cpp",
-    "llvm/lib/Target/AArch64/AArch64CallLowering.cpp",
-    "llvm/lib/Target/AArch64/AArch64SIMDInstrOpt.cpp",
-    "llvm/lib/Target/AArch64/AArch64Subtarget.cpp",
-    "llvm/lib/Target/AArch64/AArch64TargetObjectFile.cpp",
-    "llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp",
-    "llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp",
-    "llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp",
-    "llvm/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp",
-    "llvm/lib/Target/AArch64/AArch64ConditionalCompares.cpp",
-    "llvm/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp",
-    "llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64StorePairSuppress.cpp",
-    "llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp",
-    "llvm/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp",
-    "llvm/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp",
-    "llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp",
-    "llvm/lib/Target/AArch64/AArch64MCInstLower.cpp",
-    "llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp",
-    "llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp",
-    "llvm/lib/Target/AArch64/AArch64CollectLOH.cpp",
-    "llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp",
-    "llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp",
-    "llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp",
-    "llvm/lib/Target/AArch64/AArch64CondBrTuning.cpp",
-    "llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp",
-    "llvm/lib/Target/AArch64/AArch64FrameLowering.cpp",
-    "llvm/lib/Target/AArch64/AArch64MacroFusion.cpp",
-    "llvm/lib/Target/ARM/ARMConstantIslandPass.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMMachORelocationInfo.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp",
-    "llvm/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp",
-    "llvm/lib/Target/ARM/ThumbRegisterInfo.cpp",
-    "llvm/lib/Target/ARM/ARMMachineFunctionInfo.cpp",
-    "llvm/lib/Target/ARM/ARMFrameLowering.cpp",
-    "llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp",
-    "llvm/lib/Target/ARM/ARMCallLowering.cpp",
-    "llvm/lib/Target/ARM/ARMTargetMachine.cpp",
-    "llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp",
-    "llvm/lib/Target/ARM/Thumb1FrameLowering.cpp",
-    "llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp",
-    "llvm/lib/Target/ARM/Utils/ARMBaseInfo.cpp",
-    "llvm/lib/Target/ARM/ARMComputeBlockSize.cpp",
-    "llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp",
-    "llvm/lib/Target/ARM/ARMInstructionSelector.cpp",
-    "llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp",
-    "llvm/lib/Target/ARM/ARMTargetObjectFile.cpp",
-    "llvm/lib/Target/ARM/ARMISelLowering.cpp",
-    "llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp",
-    "llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp",
-    "llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp",
-    "llvm/lib/Target/ARM/ARMInstrInfo.cpp",
-    "llvm/lib/Target/ARM/MLxExpansionPass.cpp",
-    "llvm/lib/Target/ARM/Thumb2SizeReduction.cpp",
-    "llvm/lib/Target/ARM/ARMConstantPoolValue.cpp",
-    "llvm/lib/Target/ARM/Thumb2InstrInfo.cpp",
-    "llvm/lib/Target/ARM/ARMRegisterInfo.cpp",
-    "llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp",
-    "llvm/lib/Target/ARM/ARMSubtarget.cpp",
-    "llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp",
-    "llvm/lib/Target/ARM/ARMParallelDSP.cpp",
-    "llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp",
-    "llvm/lib/Target/ARM/A15SDOptimizer.cpp",
-    "llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp",
-    "llvm/lib/Target/ARM/ARMFastISel.cpp",
-    "llvm/lib/Target/ARM/ARMMacroFusion.cpp",
-    "llvm/lib/Target/ARM/ARMAsmPrinter.cpp",
-    "llvm/lib/Target/ARM/ARMMCInstLower.cpp",
-    "llvm/lib/Target/ARM/ARMHazardRecognizer.cpp",
-    "llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp",
-    "llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp",
-    "llvm/lib/Target/ARM/Thumb1InstrInfo.cpp",
-    "llvm/lib/Target/ARM/ARMLegalizerInfo.cpp",
-    "llvm/lib/Target/ARM/ARMOptimizeBarriersPass.cpp",
-    "llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp",
-    "llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp",
-    "llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp",
-    "llvm/lib/Target/Mips/Mips16FrameLowering.cpp",
-    "llvm/lib/Target/Mips/Mips16HardFloat.cpp",
-    "llvm/lib/Target/Mips/Mips16HardFloatInfo.cpp",
-    "llvm/lib/Target/Mips/Mips16InstrInfo.cpp",
-    "llvm/lib/Target/Mips/Mips16ISelDAGToDAG.cpp",
-    "llvm/lib/Target/Mips/Mips16ISelLowering.cpp",
-    "llvm/lib/Target/Mips/Mips16RegisterInfo.cpp",
-    "llvm/lib/Target/Mips/MipsAnalyzeImmediate.cpp",
-    "llvm/lib/Target/Mips/MipsAsmPrinter.cpp",
-    "llvm/lib/Target/Mips/MipsCallLowering.cpp",
-    "llvm/lib/Target/Mips/MipsCCState.cpp",
-    "llvm/lib/Target/Mips/MipsConstantIslandPass.cpp",
-    "llvm/lib/Target/Mips/MipsDelaySlotFiller.cpp",
-    "llvm/lib/Target/Mips/MipsExpandPseudo.cpp",
-    "llvm/lib/Target/Mips/MipsFastISel.cpp",
-    "llvm/lib/Target/Mips/MipsInstrInfo.cpp",
-    "llvm/lib/Target/Mips/MipsInstructionSelector.cpp",
-    "llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp",
-    "llvm/lib/Target/Mips/MipsISelLowering.cpp",
-    "llvm/lib/Target/Mips/MipsFrameLowering.cpp",
-    "llvm/lib/Target/Mips/MipsLegalizerInfo.cpp",
-    "llvm/lib/Target/Mips/MipsBranchExpansion.cpp",
-    "llvm/lib/Target/Mips/MipsMCInstLower.cpp",
-    "llvm/lib/Target/Mips/MipsMachineFunction.cpp",
-    "llvm/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp",
-    "llvm/lib/Target/Mips/MipsOptimizePICCall.cpp",
-    "llvm/lib/Target/Mips/MipsOs16.cpp",
-    "llvm/lib/Target/Mips/MipsRegisterBankInfo.cpp",
-    "llvm/lib/Target/Mips/MipsRegisterInfo.cpp",
-    "llvm/lib/Target/Mips/MipsSEFrameLowering.cpp",
-    "llvm/lib/Target/Mips/MipsSEInstrInfo.cpp",
-    "llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp",
-    "llvm/lib/Target/Mips/MipsSEISelLowering.cpp",
-    "llvm/lib/Target/Mips/MipsSERegisterInfo.cpp",
-    "llvm/lib/Target/Mips/MipsSubtarget.cpp",
-    "llvm/lib/Target/Mips/MipsTargetMachine.cpp",
-    "llvm/lib/Target/Mips/MipsTargetObjectFile.cpp",
-    "llvm/lib/Target/Mips/MicroMipsSizeReduction.cpp",
-    "llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp",
+  ]
+
+  configs = [ ":swiftshader_llvm_private_config" ]
+
+  include_dirs = llvm_include_dirs
+
+  deps = [
+    ":swiftshader_llvm_codegen",
+    ":swiftshader_llvm_ir",
+    ":swiftshader_llvm_support",
+    ":swiftshader_llvm_transforms",
+  ]
+
+  if (target_cpu == "x86" || target_cpu == "x64") {
+    deps += [":swiftshader_llvm_x86"]
+  } else if (target_cpu == "arm") {
+    deps += [":swiftshader_llvm_arm"]
+  } else if (target_cpu == "arm64") {
+    deps += [":swiftshader_llvm_aarch64"]
+  } else if (target_cpu == "mipsel" || target_cpu == "mips64el") {
+    deps += [":swiftshader_llvm_mips"]
+  } else {
+    assert(false, "Unsupported target_cpu")
+  }
+}
+
+swiftshader_source_set("swiftshader_llvm_x86") {
+  sources = [
     "llvm/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp",
     "llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp",
     "llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp",
@@ -607,13 +475,194 @@
   configs = [ ":swiftshader_llvm_private_config" ]
 
   include_dirs = llvm_include_dirs
+}
 
-  deps = [
-    ":swiftshader_llvm_codegen",
-    ":swiftshader_llvm_ir",
-    ":swiftshader_llvm_support",
-    ":swiftshader_llvm_transforms",
+swiftshader_source_set("swiftshader_llvm_arm") {
+  sources = [
+    "llvm/lib/Target/ARM/ARMConstantIslandPass.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMMachORelocationInfo.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp",
+    "llvm/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp",
+    "llvm/lib/Target/ARM/ThumbRegisterInfo.cpp",
+    "llvm/lib/Target/ARM/ARMMachineFunctionInfo.cpp",
+    "llvm/lib/Target/ARM/ARMFrameLowering.cpp",
+    "llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp",
+    "llvm/lib/Target/ARM/ARMCallLowering.cpp",
+    "llvm/lib/Target/ARM/ARMTargetMachine.cpp",
+    "llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp",
+    "llvm/lib/Target/ARM/Thumb1FrameLowering.cpp",
+    "llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp",
+    "llvm/lib/Target/ARM/Utils/ARMBaseInfo.cpp",
+    "llvm/lib/Target/ARM/ARMComputeBlockSize.cpp",
+    "llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp",
+    "llvm/lib/Target/ARM/ARMInstructionSelector.cpp",
+    "llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp",
+    "llvm/lib/Target/ARM/ARMTargetObjectFile.cpp",
+    "llvm/lib/Target/ARM/ARMISelLowering.cpp",
+    "llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp",
+    "llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp",
+    "llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp",
+    "llvm/lib/Target/ARM/ARMInstrInfo.cpp",
+    "llvm/lib/Target/ARM/MLxExpansionPass.cpp",
+    "llvm/lib/Target/ARM/Thumb2SizeReduction.cpp",
+    "llvm/lib/Target/ARM/ARMConstantPoolValue.cpp",
+    "llvm/lib/Target/ARM/Thumb2InstrInfo.cpp",
+    "llvm/lib/Target/ARM/ARMRegisterInfo.cpp",
+    "llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp",
+    "llvm/lib/Target/ARM/ARMSubtarget.cpp",
+    "llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp",
+    "llvm/lib/Target/ARM/ARMParallelDSP.cpp",
+    "llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp",
+    "llvm/lib/Target/ARM/A15SDOptimizer.cpp",
+    "llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp",
+    "llvm/lib/Target/ARM/ARMFastISel.cpp",
+    "llvm/lib/Target/ARM/ARMMacroFusion.cpp",
+    "llvm/lib/Target/ARM/ARMAsmPrinter.cpp",
+    "llvm/lib/Target/ARM/ARMMCInstLower.cpp",
+    "llvm/lib/Target/ARM/ARMHazardRecognizer.cpp",
+    "llvm/lib/Target/ARM/ARMCodeGenPrepare.cpp",
+    "llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp",
+    "llvm/lib/Target/ARM/Thumb1InstrInfo.cpp",
+    "llvm/lib/Target/ARM/ARMLegalizerInfo.cpp",
+    "llvm/lib/Target/ARM/ARMOptimizeBarriersPass.cpp",
   ]
+
+  configs = [ ":swiftshader_llvm_private_config" ]
+
+  include_dirs = llvm_include_dirs
+}
+
+swiftshader_source_set("swiftshader_llvm_aarch64") {
+  sources = [
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp",
+    "llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp",
+    "llvm/lib/Target/AArch64/AArch64ISelLowering.cpp",
+    "llvm/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp",
+    "llvm/lib/Target/AArch64/AArch64FastISel.cpp",
+    "llvm/lib/Target/AArch64/AArch64InstrInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64PromoteConstant.cpp",
+    "llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp",
+    "llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp",
+    "llvm/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64A53Fix835769.cpp",
+    "llvm/lib/Target/AArch64/AArch64TargetMachine.cpp",
+    "llvm/lib/Target/AArch64/AArch64CallLowering.cpp",
+    "llvm/lib/Target/AArch64/AArch64SIMDInstrOpt.cpp",
+    "llvm/lib/Target/AArch64/AArch64Subtarget.cpp",
+    "llvm/lib/Target/AArch64/AArch64TargetObjectFile.cpp",
+    "llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp",
+    "llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp",
+    "llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp",
+    "llvm/lib/Target/AArch64/TargetInfo/AArch64TargetInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp",
+    "llvm/lib/Target/AArch64/AArch64ConditionalCompares.cpp",
+    "llvm/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp",
+    "llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64StorePairSuppress.cpp",
+    "llvm/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp",
+    "llvm/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp",
+    "llvm/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp",
+    "llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp",
+    "llvm/lib/Target/AArch64/AArch64MCInstLower.cpp",
+    "llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64RedundantCopyElimination.cpp",
+    "llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp",
+    "llvm/lib/Target/AArch64/AArch64CollectLOH.cpp",
+    "llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp",
+    "llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp",
+    "llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp",
+    "llvm/lib/Target/AArch64/AArch64CondBrTuning.cpp",
+    "llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp",
+    "llvm/lib/Target/AArch64/AArch64FrameLowering.cpp",
+    "llvm/lib/Target/AArch64/AArch64MacroFusion.cpp",
+  ]
+
+  configs = [ ":swiftshader_llvm_private_config" ]
+
+  include_dirs = llvm_include_dirs
+}
+
+swiftshader_source_set("swiftshader_llvm_mips") {
+  sources = [
+    "llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp",
+    "llvm/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp",
+    "llvm/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp",
+    "llvm/lib/Target/Mips/Mips16FrameLowering.cpp",
+    "llvm/lib/Target/Mips/Mips16HardFloat.cpp",
+    "llvm/lib/Target/Mips/Mips16HardFloatInfo.cpp",
+    "llvm/lib/Target/Mips/Mips16InstrInfo.cpp",
+    "llvm/lib/Target/Mips/Mips16ISelDAGToDAG.cpp",
+    "llvm/lib/Target/Mips/Mips16ISelLowering.cpp",
+    "llvm/lib/Target/Mips/Mips16RegisterInfo.cpp",
+    "llvm/lib/Target/Mips/MipsAnalyzeImmediate.cpp",
+    "llvm/lib/Target/Mips/MipsAsmPrinter.cpp",
+    "llvm/lib/Target/Mips/MipsCallLowering.cpp",
+    "llvm/lib/Target/Mips/MipsCCState.cpp",
+    "llvm/lib/Target/Mips/MipsConstantIslandPass.cpp",
+    "llvm/lib/Target/Mips/MipsDelaySlotFiller.cpp",
+    "llvm/lib/Target/Mips/MipsExpandPseudo.cpp",
+    "llvm/lib/Target/Mips/MipsFastISel.cpp",
+    "llvm/lib/Target/Mips/MipsInstrInfo.cpp",
+    "llvm/lib/Target/Mips/MipsInstructionSelector.cpp",
+    "llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp",
+    "llvm/lib/Target/Mips/MipsISelLowering.cpp",
+    "llvm/lib/Target/Mips/MipsFrameLowering.cpp",
+    "llvm/lib/Target/Mips/MipsLegalizerInfo.cpp",
+    "llvm/lib/Target/Mips/MipsBranchExpansion.cpp",
+    "llvm/lib/Target/Mips/MipsMCInstLower.cpp",
+    "llvm/lib/Target/Mips/MipsMachineFunction.cpp",
+    "llvm/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp",
+    "llvm/lib/Target/Mips/MipsOptimizePICCall.cpp",
+    "llvm/lib/Target/Mips/MipsOs16.cpp",
+    "llvm/lib/Target/Mips/MipsRegisterBankInfo.cpp",
+    "llvm/lib/Target/Mips/MipsRegisterInfo.cpp",
+    "llvm/lib/Target/Mips/MipsSEFrameLowering.cpp",
+    "llvm/lib/Target/Mips/MipsSEInstrInfo.cpp",
+    "llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp",
+    "llvm/lib/Target/Mips/MipsSEISelLowering.cpp",
+    "llvm/lib/Target/Mips/MipsSERegisterInfo.cpp",
+    "llvm/lib/Target/Mips/MipsSubtarget.cpp",
+    "llvm/lib/Target/Mips/MipsTargetMachine.cpp",
+    "llvm/lib/Target/Mips/MipsTargetObjectFile.cpp",
+    "llvm/lib/Target/Mips/MicroMipsSizeReduction.cpp",
+    "llvm/lib/Target/Mips/TargetInfo/MipsTargetInfo.cpp",
+  ]
+
+  configs = [ ":swiftshader_llvm_private_config" ]
+
+  include_dirs = llvm_include_dirs
 }
 
 swiftshader_source_set("swiftshader_llvm_codegen") {