[LLVMdev] rol/ror llvm instruction set

Dale Johannesen dalej at apple.com
Tue Feb 3 14:45:30 PST 2009


On Feb 3, 2009, at 2:35 PMPST, Mike Stump wrote:

> On Feb 3, 2009, at 2:28 PM, Kasra wrote:
>> I was looking around the LLVM instruction set and I failed to find
>> ROL and ROR instructions. Is there any plans on adding these
>> instructions to LLVM?
>
> Not sure what you mean:

He's referring to the LLVM IR, I think, and it's true that doesn't  
have rotates.  The LLVM back ends do know about rotate instructions on  
targets that have them, though, and the llvm optimizers are pretty  
smart about recognizing the usual ways to express rotate with shift/ 
and/or, as below.

>  $ cat t.c
> unsigned int rol(unsigned int i) {
>   return i << 1 | i >> 31;
> }
> mrs $ clang -S t.c -O2
> mrs $ cat t.s
>
>
> 	.text
> 	.align	4,0x90
> 	.globl	_rol
> _rol:
> 	movl	4(%esp), %eax
> 	roll	%eax
> 	ret
>
> ?
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list