<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 1/28/11 8:14 AM, Qingan Li wrote:
<blockquote
cite="mid:AANLkTimRZ=+=nR37Qmi+xKKxWazVV3pwVDvQ-0-Yb8TD@mail.gmail.com"
type="cite">Thanks for your help with me about the way to access
type and size of Value.
<div>But, I want also know the interface for me to access the
type or size of virtual registers in the SSA form. </div>
<div>1. I find no way to associate the virtual registers with the
Value class.</div>
</blockquote>
<br>
In the in-memory LLVM IR, all of the SSA values are C++ objects
derived from the Value class. For example, an Instruction object
(class Instruction derives from class Value) *is* the SSA value
generated by its result; they are one and the same.<br>
<br>
<blockquote
cite="mid:AANLkTimRZ=+=nR37Qmi+xKKxWazVV3pwVDvQ-0-Yb8TD@mail.gmail.com"
type="cite">
<div>2. I also tried to get the size of register nReg by: </div>
<div> TargetRegisterClass::getSize(), where the
TargetRegisterClass object is obtained by
MachineRegisterInfo::getRegClass( nReg ). </div>
<div> But, I found it always returned with the value 4 bytes, say,
GR32 (My target is the x86-32 bits). If all virtual registers
were size of 32 bits, how could we consider the alias register
file during register allocation? Namely, if a temporary value
could be stored in 8 bits, why do we give it 32 bits? So, I
doubt my second way to get the size of virtual register was
wrong. Need your further help.</div>
</blockquote>
<br>
I don't work much with LLVM's code generator infrastructure (I
primarily do LLVM IR analysis and transforms), so I don't think I
can answer your question.<br>
<br>
When working with pure LLVM IR, we use the TargetData class
(<a class="moz-txt-link-freetext" href="http://llvm.org/doxygen/classllvm_1_1TargetData.html">http://llvm.org/doxygen/classllvm_1_1TargetData.html</a>) to determine
the size of various LLVM types. I'm not sure if it's what you want
to use in the code generator. Someone else will have to help you
with that.<br>
<br>
-- John T.<br>
<br>
<blockquote
cite="mid:AANLkTimRZ=+=nR37Qmi+xKKxWazVV3pwVDvQ-0-Yb8TD@mail.gmail.com"
type="cite">
<div><br>
<div class="gmail_quote">2011/1/28 John Criswell <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:criswell@illinois.edu">criswell@illinois.edu</a>></span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div class="im">On 1/27/11 3:23 AM, Qingan Li wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
Hi,<br>
<br>
I wonder if there is an interface for me to access the
type or size of virtual registers in the SSA form?<br>
I have scanned the MachineOperand in CodeGen part, and
failed to find this kind of info for virtual registers.<br>
</blockquote>
<br>
</div>
The getType() method of Value * will return the LLVM type.
The TargetData class will provide information on size for a
type on a particular hardware platform.<br>
<br>
-- John T.<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<br>
-- <br>
Best regards,<br>
<br>
Li Qingan<br>
<br>
</blockquote>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
Best regards,
<div><br>
</div>
<div>Li Qingan</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>