[PATCH] D86269: [RFC][Target] Add a new backend target called CSKY

Zixuan Wu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 20 01:25:52 PDT 2020


zixuan-wu created this revision.
zixuan-wu added a reviewer: lattner.
Herald added subscribers: llvm-commits, jfb, dexonsmith, hiraditya, arichardson, mgorny.
Herald added a project: LLVM.
zixuan-wu requested review of this revision.
Herald added a subscriber: jdoerfert.

C-SKY processor is a 32-bit high-performance and low-power embedded processor designed for embedded system or SoC environment. It adopts independently design of architecture and micro architecture with extensible instruction set, which owns great features, e.g. configurable hardware, re-synthesis, easily integration etc. Additionally, it is excellent in power management. It adopts several strategies to reduce power consumption including statically designed and dynamic power supply management, low voltage supply, entering low power mode and closing internal function modules.

Now, C-SKY CPU instruction system has two versions: C-SKY V1 and C-SKY V2. You must note that the C-SKY V2.0 instruction sets are not freely exchangeable with V1.0. Conversely, available function provided by V2.0 is identical to V1.0 for most of applications. So that we strongly recommend that you should make sure you are aware of the generated result of specified application when you use them simultaneously. The two instruction sets differ in how instructions are encoded.

Basically, we can develop C-SKY V2 as prefer, and the ISA doc and ABI doc can be referred at following links. (The links are not stable, and the address can be changed)

ISA: https://github.com/c-sky/csky-doc/blob/master/CSKY%20Architecture%20user_guide.pdf 
ABI: https://github.com/c-sky/csky-doc/blob/master/C-SKY_V2_CPU_Applications_Binary_Interface_Standards_Manual.pdf

This is the first patch to introduce the CSKY target and of course it's experimental now.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D86269

Files:
  llvm/CODE_OWNERS.TXT
  llvm/include/llvm/ADT/Triple.h
  llvm/include/llvm/BinaryFormat/ELF.h
  llvm/include/llvm/BinaryFormat/ELFRelocs/CSKY.def
  llvm/include/llvm/IR/CMakeLists.txt
  llvm/include/llvm/IR/Intrinsics.td
  llvm/include/llvm/IR/IntrinsicsCSKY.td
  llvm/lib/Support/Triple.cpp
  llvm/lib/Target/CSKY/AsmParser/CMakeLists.txt
  llvm/lib/Target/CSKY/AsmParser/CSKYAsmParser.cpp
  llvm/lib/Target/CSKY/AsmParser/LLVMBuild.txt
  llvm/lib/Target/CSKY/CMakeLists.txt
  llvm/lib/Target/CSKY/CSKY.h
  llvm/lib/Target/CSKY/CSKY.td
  llvm/lib/Target/CSKY/CSKYAsmPrinter.cpp
  llvm/lib/Target/CSKY/CSKYAsmPrinter.h
  llvm/lib/Target/CSKY/CSKYCallingConv.h
  llvm/lib/Target/CSKY/CSKYCallingConv.td
  llvm/lib/Target/CSKY/CSKYConstantPoolValue.cpp
  llvm/lib/Target/CSKY/CSKYConstantPoolValue.h
  llvm/lib/Target/CSKY/CSKYFrameLowering.cpp
  llvm/lib/Target/CSKY/CSKYFrameLowering.h
  llvm/lib/Target/CSKY/CSKYISelDAGToDAG.cpp
  llvm/lib/Target/CSKY/CSKYISelLowering.cpp
  llvm/lib/Target/CSKY/CSKYISelLowering.h
  llvm/lib/Target/CSKY/CSKYInstrFormats.td
  llvm/lib/Target/CSKY/CSKYInstrFormatsF1.td
  llvm/lib/Target/CSKY/CSKYInstrFormatsF2.td
  llvm/lib/Target/CSKY/CSKYInstrInfo.cpp
  llvm/lib/Target/CSKY/CSKYInstrInfo.h
  llvm/lib/Target/CSKY/CSKYInstrInfo.td
  llvm/lib/Target/CSKY/CSKYInstrInfoF1.td
  llvm/lib/Target/CSKY/CSKYInstrInfoF2.td
  llvm/lib/Target/CSKY/CSKYMCInstLower.cpp
  llvm/lib/Target/CSKY/CSKYMCInstLower.h
  llvm/lib/Target/CSKY/CSKYMachineFunctionInfo.cpp
  llvm/lib/Target/CSKY/CSKYMachineFunctionInfo.h
  llvm/lib/Target/CSKY/CSKYRegisterInfo.cpp
  llvm/lib/Target/CSKY/CSKYRegisterInfo.h
  llvm/lib/Target/CSKY/CSKYRegisterInfo.td
  llvm/lib/Target/CSKY/CSKYSubtarget.cpp
  llvm/lib/Target/CSKY/CSKYSubtarget.h
  llvm/lib/Target/CSKY/CSKYTargetMachine.cpp
  llvm/lib/Target/CSKY/CSKYTargetMachine.h
  llvm/lib/Target/CSKY/CSKYTargetObjectFile.cpp
  llvm/lib/Target/CSKY/CSKYTargetObjectFile.h
  llvm/lib/Target/CSKY/Disassembler/CMakeLists.txt
  llvm/lib/Target/CSKY/Disassembler/CSKYDisassembler.cpp
  llvm/lib/Target/CSKY/Disassembler/LLVMBuild.txt
  llvm/lib/Target/CSKY/LLVMBuild.txt
  llvm/lib/Target/CSKY/MCTargetDesc/CMakeLists.txt
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYAsmBackend.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYAsmBackend.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYELFObjectWriter.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYFixupKinds.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYInstPrinter.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCAsmInfo.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCAsmInfo.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCExpr.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCExpr.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCTargetDesc.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCTargetDesc.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYTargetAsmStreamer.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYTargetAsmStreamer.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYTargetELFStreamer.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYTargetELFStreamer.h
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYTargetStreamer.cpp
  llvm/lib/Target/CSKY/MCTargetDesc/CSKYTargetStreamer.h
  llvm/lib/Target/CSKY/MCTargetDesc/LLVMBuild.txt
  llvm/lib/Target/CSKY/README.txt
  llvm/lib/Target/CSKY/TargetInfo/CMakeLists.txt
  llvm/lib/Target/CSKY/TargetInfo/CSKYTargetInfo.cpp
  llvm/lib/Target/CSKY/TargetInfo/CSKYTargetInfo.h
  llvm/lib/Target/CSKY/TargetInfo/LLVMBuild.txt
  llvm/lib/Target/CSKY/Utils/CMakeLists.txt
  llvm/lib/Target/CSKY/Utils/CSKYBaseInfo.cpp
  llvm/lib/Target/CSKY/Utils/CSKYBaseInfo.h
  llvm/lib/Target/CSKY/Utils/LLVMBuild.txt
  llvm/lib/Target/LLVMBuild.txt
  llvm/test/CodeGen/CSKY/add.ll
  llvm/test/CodeGen/CSKY/and.ll
  llvm/test/CodeGen/CSKY/ashr.ll
  llvm/test/CodeGen/CSKY/atomicrmw.ll
  llvm/test/CodeGen/CSKY/br-double.ll
  llvm/test/CodeGen/CSKY/br-float.ll
  llvm/test/CodeGen/CSKY/br.ll
  llvm/test/CodeGen/CSKY/call.ll
  llvm/test/CodeGen/CSKY/cmpxchg.ll
  llvm/test/CodeGen/CSKY/fadd.ll
  llvm/test/CodeGen/CSKY/fcmp.ll
  llvm/test/CodeGen/CSKY/fdiv.ll
  llvm/test/CodeGen/CSKY/fmul.ll
  llvm/test/CodeGen/CSKY/fneg.ll
  llvm/test/CodeGen/CSKY/fpext.ll
  llvm/test/CodeGen/CSKY/fptosi.ll
  llvm/test/CodeGen/CSKY/fptoui.ll
  llvm/test/CodeGen/CSKY/fptrunc.ll
  llvm/test/CodeGen/CSKY/frem.ll
  llvm/test/CodeGen/CSKY/fsub.ll
  llvm/test/CodeGen/CSKY/icmp.ll
  llvm/test/CodeGen/CSKY/indirectbr.ll
  llvm/test/CodeGen/CSKY/inttoptr.ll
  llvm/test/CodeGen/CSKY/ld-float.ll
  llvm/test/CodeGen/CSKY/ld.ll
  llvm/test/CodeGen/CSKY/lit.local.cfg
  llvm/test/CodeGen/CSKY/lshr.ll
  llvm/test/CodeGen/CSKY/mul.ll
  llvm/test/CodeGen/CSKY/mula.ll
  llvm/test/CodeGen/CSKY/or.ll
  llvm/test/CodeGen/CSKY/ptrtoint.ll
  llvm/test/CodeGen/CSKY/sdiv.ll
  llvm/test/CodeGen/CSKY/select-float.ll
  llvm/test/CodeGen/CSKY/select.ll
  llvm/test/CodeGen/CSKY/sext.ll
  llvm/test/CodeGen/CSKY/shl.ll
  llvm/test/CodeGen/CSKY/sitofp.ll
  llvm/test/CodeGen/CSKY/srem.ll
  llvm/test/CodeGen/CSKY/st-float.ll
  llvm/test/CodeGen/CSKY/st.ll
  llvm/test/CodeGen/CSKY/sub.ll
  llvm/test/CodeGen/CSKY/trunc.ll
  llvm/test/CodeGen/CSKY/udiv.ll
  llvm/test/CodeGen/CSKY/uitofp.ll
  llvm/test/CodeGen/CSKY/urem.ll
  llvm/test/CodeGen/CSKY/xor.ll
  llvm/test/CodeGen/CSKY/zext.ll
  llvm/utils/UpdateTestChecks/asm.py



More information about the llvm-commits mailing list