R600: Swap the legality of rotl and rotr
[oota-llvm.git] / test / CodeGen / R600 / rotr.ll
1 ; RUN: llc < %s -debug-only=isel -march=r600 -mcpu=redwood -o - 2>&1 | FileCheck %s
2
3 ; CHECK: rotr
4 ; CHECK: @rotr
5 ; CHECK: BIT_ALIGN_INT
6 define void @rotr(i32 addrspace(1)* %in, i32 %x, i32 %y) {
7 entry:
8   %0 = sub i32 32, %y
9   %1 = shl i32 %x, %0
10   %2 = lshr i32 %x, %y
11   %3 = or i32 %1, %2
12   store i32 %3, i32 addrspace(1)* %in
13   ret void
14 }
15
16 ; CHECK: rotr
17 ; CHECK: @rotl
18 ; CHECK: SUB_INT {{\** T[0-9]+\.[XYZW]}}, literal.x
19 ; CHECK-NEXT: 32
20 ; CHECK: BIT_ALIGN_INT {{\** T[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW], PV.[xyzw]}}
21 define void @rotl(i32 addrspace(1)* %in, i32 %x, i32 %y) {
22 entry:
23   %0 = shl i32 %x, %y
24   %1 = sub i32 32, %y
25   %2 = lshr i32 %x, %1
26   %3 = or i32 %0, %2
27   store i32 %3, i32 addrspace(1)* %in
28   ret void
29 }