Getting the pointer type from a Load/Store SDNode

I’m digging into this, but I’d like to know if it’s feasible to get to the pointer type from a Load/Store SDNode? This would relieve me from having to put the address space information into those SDNodes.

Is Load/StoreSDNode->getSrcValue()->getType() going to do what I want? If not, I can’t see another way of getting to the pointer type.

Hrm, the codegen has a couple of interesting crazy issues. For example, it thinks there is a current PointerTy() that is always valid.

I see a couple ways to handle this. One is to require that the targets custom expand the load/store to alternate address space at SDISel time. This way they could do any crazy thing they want, including lowering them into intrinsics, etc.

-Chris

Forcing custom lowering for ISD::LOAD/STORE means that you lose lots of the information carried along with the Load/StoreSDNode that makes writing instruction patterns (particularly the ext/trunc predicates) simple.

Another possibility is to add a utility function to Load/StoreSDNodes that returns the address space of the pointer being used. For my use I think this way is probably best, though there’s nothing preventing a target from doing custom lowering.

I see a couple ways to handle this. One is to require that the targets
custom expand the load/store to alternate address space at SDISel time.
This way they could do any crazy thing they want, including lowering them
into intrinsics, etc.

Forcing custom lowering for ISD::LOAD/STORE means that you lose lots of the information carried along with the Load/StoreSDNode that makes writing instruction patterns (particularly the ext/trunc predicates) simple.

Another possibility is to add a utility function to Load/StoreSDNodes that returns the address space of the pointer being used. For my use I think this way is probably best, though there's nothing preventing a target from doing custom lowering.

That sounds fine to me,

-Chris