GlobalAddress node type: immediate or register?

I’m trying to create a model in which global variables are referenced as offset off GPR R1.

So in the Lowering I implement the following:

SDValue MyArchTargetLowering::LowerGlobalAddress(SDValue Op,
SelectionDAG &DAG) const {
EVT VT = Op.getValueType();
GlobalAddressSDNode *GlobalAddr = cast(Op.getNode());
SDValue TargetAddr =
DAG.getTargetGlobalAddress(GlobalAddr->getGlobal(), Op, MVT::i32);
return (DAG.getNode(ISD::ADD, Op, MVT::i32,
DAG.getRegister(MyArch::R1, VT), TargetAddr ));
}

So my expectations to see ADDri machine instruction being generated. But in in runtime ADDrr is generated.
Is TargetAddr node being treated as register or rather as immediate in this case?
Can I treat GlobalVariable address as immediate value?