Leslie Zhai via llvm-dev
2017-Dec-19 09:36 UTC
[llvm-dev] [GlobalISel] gen-global-isel failed to work
Hi LLVM developers, I am porting GlobalISel to AVR Target, try to delete SelectionDAG in 100* commits :) https://github.com/xiangzhai/llvm/tree/avr/lib/Target/AVR I just copy ARMCallLowering, ARMRegisterBankInfo, ARMLegalizerInfo, ARMInstructionSelector, ARMRegisterBanks.td into AVR target's folder, then renamed them to AVRXXX Removed ARM related code, for example: * AEABI (eabi) * hasDivideInXXXMode * useSoftFloat (soft-float-point), hasVFP2 Overrided addIRTranslator, addLegalizeMachineIR, addRegBankSelectaddGlobalInstructionSelect in AVRTargetMachine. Added AVRGenGlobalISel.inc to CMakeLists.txt for tablegen, also *.cpp related to GlobalISel. Also added GlobalISel dependence to LLVMBuild.txt But tablegen is failed to generate AVRGenGlobalISel.inc: [ 53%] Building CXX object lib/Target/AVR/CMakeFiles/LLVMAVRCodeGen.dir/AVRLegalizerInfo.cpp.o In file included from /data/project/xiangzhai/llvm/lib/Target/AVR/AVRInstructionSelector.cpp:103: /data/project/xiangzhai/llvm/build/lib/Target/AVR/AVRGenGlobalISel.inc:112:64: error: no member named 'GPR8RegClassID' in namespace 'llvm::AVR'; did you mean 'GPR8RegClass'? GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/AVR::GPR8RegClassID, ~~~~~^~~~~~~~~~~~~~ GPR8RegClass /data/project/xiangzhai/llvm/build/lib/Target/AVR/AVRGenRegisterInfo.inc:827:36: note: 'GPR8RegClass' declared here extern const TargetRegisterClass GPR8RegClass; ^ The general purpose registers, such as GPR8, defined in AVRRegisterInfo.td like this https://github.com/xiangzhai/llvm/blob/avr/lib/Target/AVR/AVRRegisterInfo.td#L114 Why auto-generated GPR8RegClassID, but not GPR8RegClass, where is the ID come from? please give me some hint, thanks a lot! -- Regards, Leslie Zhai - https://reviews.llvm.org/p/xiangzhai/