[llvm-dev] [GlobalISel] gen-global-isel failed to work

Leslie Zhai via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 19 01:36:11 PST 2017


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/





More information about the llvm-dev mailing list