[llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/rotate.ll
Chris Lattner
lattner at cs.uiuc.edu
Wed Jan 19 00:04:23 PST 2005
Changes in directory llvm/test/Regression/CodeGen/X86:
rotate.ll added (r1.1)
---
Log message:
New testcase for rotate instructions. Each function should codegen to a
rotate.
---
Diffs of the changes: (+91 -0)
Index: llvm/test/Regression/CodeGen/X86/rotate.ll
diff -c /dev/null llvm/test/Regression/CodeGen/X86/rotate.ll:1.1
*** /dev/null Wed Jan 19 02:04:18 2005
--- llvm/test/Regression/CodeGen/X86/rotate.ll Wed Jan 19 02:04:08 2005
***************
*** 0 ****
--- 1,91 ----
+ ; RUN: llvm-as < %s | llc -march=x86 -x86-asm-syntax=intel -disable-pattern-isel=0 | grep ro[rl] | wc -l | grep 12
+
+ uint %rotl32(uint %A, ubyte %Amt) {
+ %B = shl uint %A, ubyte %Amt
+ %Amt2 = sub ubyte 32, %Amt
+ %C = shr uint %A, ubyte %Amt2
+ %D = or uint %B, %C
+ ret uint %D
+ }
+
+ uint %rotr32(uint %A, ubyte %Amt) {
+ %B = shr uint %A, ubyte %Amt
+ %Amt2 = sub ubyte 32, %Amt
+ %C = shl uint %A, ubyte %Amt2
+ %D = or uint %B, %C
+ ret uint %D
+ }
+
+ uint %rotli32(uint %A) {
+ %B = shl uint %A, ubyte 5
+ %C = shr uint %A, ubyte 27
+ %D = or uint %B, %C
+ ret uint %D
+ }
+
+ uint %rotri32(uint %A) {
+ %B = shr uint %A, ubyte 5
+ %C = shl uint %A, ubyte 27
+ %D = or uint %B, %C
+ ret uint %D
+ }
+
+ ushort %rotl16(ushort %A, ubyte %Amt) {
+ %B = shl ushort %A, ubyte %Amt
+ %Amt2 = sub ubyte 16, %Amt
+ %C = shr ushort %A, ubyte %Amt2
+ %D = or ushort %B, %C
+ ret ushort %D
+ }
+
+ ushort %rotr16(ushort %A, ubyte %Amt) {
+ %B = shr ushort %A, ubyte %Amt
+ %Amt2 = sub ubyte 16, %Amt
+ %C = shl ushort %A, ubyte %Amt2
+ %D = or ushort %B, %C
+ ret ushort %D
+ }
+
+ ushort %rotli16(ushort %A) {
+ %B = shl ushort %A, ubyte 5
+ %C = shr ushort %A, ubyte 11
+ %D = or ushort %B, %C
+ ret ushort %D
+ }
+
+ ushort %rotri16(ushort %A) {
+ %B = shr ushort %A, ubyte 5
+ %C = shl ushort %A, ubyte 11
+ %D = or ushort %B, %C
+ ret ushort %D
+ }
+
+ ubyte %rotl8(ubyte %A, ubyte %Amt) {
+ %B = shl ubyte %A, ubyte %Amt
+ %Amt2 = sub ubyte 8, %Amt
+ %C = shr ubyte %A, ubyte %Amt2
+ %D = or ubyte %B, %C
+ ret ubyte %D
+ }
+
+ ubyte %rotr8(ubyte %A, ubyte %Amt) {
+ %B = shr ubyte %A, ubyte %Amt
+ %Amt2 = sub ubyte 8, %Amt
+ %C = shl ubyte %A, ubyte %Amt2
+ %D = or ubyte %B, %C
+ ret ubyte %D
+ }
+
+ ubyte %rotli8(ubyte %A) {
+ %B = shl ubyte %A, ubyte 5
+ %C = shr ubyte %A, ubyte 3
+ %D = or ubyte %B, %C
+ ret ubyte %D
+ }
+
+ ubyte %rotri8(ubyte %A) {
+ %B = shr ubyte %A, ubyte 5
+ %C = shl ubyte %A, ubyte 3
+ %D = or ubyte %B, %C
+ ret ubyte %D
+ }
More information about the llvm-commits
mailing list