[llvm-commits] [llvm] r46827 - MemOperands #2/2

Evan Cheng evan.cheng at apple.com
Tue Feb 12 10:51:13 PST 2008


On Feb 12, 2008, at 10:38 AM, Dan Gohman wrote:

>
> On Feb 12, 2008, at 12:12 AM, Evan Cheng wrote:
>>>>
>>>> +
>>>> +    // Save loads/stores matched by a pattern.
>>>> +    if (!N->isLeaf() && N->getName().empty()) {
>>>> +      std::string EnumName = N->getOperator()- 
>>>> >getValueAsString("Opcode");
>>>> +      if (EnumName == "ISD::LOAD" ||
>>>> +          EnumName == "ISD::STORE") {
>>>> +        LSI.push_back(RootName);
>>>> +      }
>>>> +    }
>
>> This doesn't seem safe. What if the pattern involves target  
>> specific load / store nodes? Perhaps you can add a node property,  
>> e.g. SDNPHasMemOp, to tell tblgen which operands would add memory  
>> operands to the resulting target node?
>
> The problem is that this code really needs an LSBaseSDNode. A target- 
> specific
> load/store won't have that. I'm looking for better ways to solve  
> this. One way is
> to require all target-specific load/store instructions to have  
> patterns, and that
> they must use ld/st/ist to describe their memory references. I'm not  
> familiar enough
> with all the targets yet to know if that's feasible.

Ok, then please just add a SDNPHasMemOp and mark ld, st, and ist with  
it. tblgen should look for that property instead of EnumName. I don't  
think there are target specific load / store nodes that might be  
impacted at this tme.

Evan

>
>
> Dan
>




More information about the llvm-commits mailing list