How do you determine if a shift is signed or not? ashr = always signed? lshr = always unsigned? shl = always signed? The CmpInst has the "isSigned()" function, but it appears that every other Instruction I've looked at doesn't seem to have this. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120222/9412d20c/attachment.html>
On Wed, Feb 22, 2012 at 4:28 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: On Wed, Feb 22, 2012 at 4:28 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:> How do you determine if a shift is signed or not? > > ashr = always signed?Essentially, yes.> lshr = always unsigned?Essentially, yes.> shl = always signed?Signed left shift and unsigned left shift are both shl. http://llvm.org/docs/LangRef.html#i_shl describes the semantics of shifts.> The CmpInst has the "isSigned()" function, but it appears that every other > Instruction I've looked at doesn't seem to have this.There isn't an isSigned() function because the query doesn't really make sense. LLVM IR doesn't in general track whether a value is signed or unsigned. -Eli
how does llvm decide when to use unsigned instructions then? such as unsigned adds and loads? I'm trying to describe some multiply shift ops and getting a bit stuck differentiating between signed and unsigned. sam Eli Friedman-2 wrote:> > On Wed, Feb 22, 2012 at 4:28 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > On Wed, Feb 22, 2012 at 4:28 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: >> How do you determine if a shift is signed or not? >> >> ashr = always signed? > > Essentially, yes. > >> lshr = always unsigned? > > Essentially, yes. > >> shl = always signed? > > Signed left shift and unsigned left shift are both shl. > > http://llvm.org/docs/LangRef.html#i_shl describes the semantics of shifts. > >> The CmpInst has the "isSigned()" function, but it appears that every >> other >> Instruction I've looked at doesn't seem to have this. > > There isn't an isSigned() function because the query doesn't really > make sense. LLVM IR doesn't in general track whether a value is > signed or unsigned. > > -Eli > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-- View this message in context: http://old.nabble.com/Simple-question-on-sign-tp33375005p33376706.html Sent from the LLVM - Dev mailing list archive at Nabble.com.