Venkatachalam, Vasanth Vasanth.Venkatachalam at
Wed Feb 20 14:05:34 PST 2013


I'm trying to understand and had some questions.

1)      Why are Op2RegCommutative, DivOp and ShiftOp defined separately instead of having the operations that would be covered  by these classes piggyback on Op1Reg and Op2Reg? More generally, what guides the decision of how many separate *Op classes should be defined in this file which call the emit( ) routine?

2)      Am I right in thinking that these different Op objects (Op1Reg, etc) represent nodes in the LIR and the emit( ) routine decides based on the opcode, which native or assembly instructions should be emitted? What files should I look at to understand the plumbing that generates these nodes (and which I would need to update if I were to define new Op classes in this file)?

3)       For it looks like the switch statements inside the emit( ) routines haven't been completely implemented. For example, the case where src1 is a constant only covers the isub and iand instructions, whereas the case where src2 is a constant only covers iadd, iand, and iushr. Is it true that this is just a partial implementation?


More information about the graal-dev mailing list