Jimborean Alexandra
2011-Oct-21 09:59 UTC
[LLVMdev] convert integer to double "uitofp" or "sitofp" ?
Hello, As I understand, in LLVM IR it cannot be determined whether a register of type int is signed or unsigned. If one wants to convert an integer to a double, which instruction should be used: "uitofp" or "sitofp" ? We track the values taken by all load instructions and we process them using a function. If the value is a pointer, we use int64 as the type of the function argument. But in case the load instruction loads from a scalar, we need to convert it to a unique type, which we chose to be DoubleTy and use a function that expects a double as parameter. Hence, we need to convert integers of various sizes to double. Is it possible to detect which instruction should be used ("uitofp" or "sitofp" )? Thank you, Alexandra -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111021/a3ce4164/attachment.html>
Duncan Sands
2011-Oct-21 11:00 UTC
[LLVMdev] convert integer to double "uitofp" or "sitofp" ?
Hi Jimborean,> As I understand, in LLVM IR it cannot be determined whether a register of type > int is signed or unsigned. > If one wants to convert an integer to a double, which instruction should be > used: "uitofp" or "sitofp" ?LLVM integers are just bags of bits, so this can't be answered without more information about what you plan to do with the double. Using an uitofp is no more or less sensible than using sitofp in general. What if your integer can't be accurately represented by a double? For example i64 -> double -> i64 (Xitofp followed by fptoXi) may not get you your original integer back. Do you care? You can also bitcast an i64 to a double, getting a double that has the same bit pattern. But then does converting to a double win you anything?> We track the values taken by all load instructions and we process them using a > function.What does the function do? Ciao, Duncan.
Anton Korobeynikov
2011-Oct-21 11:33 UTC
[LLVMdev] convert integer to double "uitofp" or "sitofp" ?
Hi Alexandra,> Hence, we need to convert integers of various sizes to double. Is it > possible to detect which instruction should be used ("uitofp" or "sitofp" )Unfortunately, no, this information is lost. -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University