Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86-64 > %t
      2 ; RUN: grep rol %t | count 3
      3 ; RUN: grep ror %t | count 1
      4 ; RUN: grep shld %t | count 2
      5 ; RUN: grep shrd %t | count 2
      6 
      7 define i64 @foo(i64 %x, i64 %y, i64 %z) nounwind readnone {
      8 entry:
      9 	%0 = shl i64 %x, %z
     10 	%1 = sub i64 64, %z
     11 	%2 = lshr i64 %x, %1
     12 	%3 = or i64 %2, %0
     13 	ret i64 %3
     14 }
     15 
     16 define i64 @bar(i64 %x, i64 %y, i64 %z) nounwind readnone {
     17 entry:
     18 	%0 = shl i64 %y, %z
     19 	%1 = sub i64 64, %z
     20 	%2 = lshr i64 %x, %1
     21 	%3 = or i64 %2, %0
     22 	ret i64 %3
     23 }
     24 
     25 define i64 @un(i64 %x, i64 %y, i64 %z) nounwind readnone {
     26 entry:
     27 	%0 = lshr i64 %x, %z
     28 	%1 = sub i64 64, %z
     29 	%2 = shl i64 %x, %1
     30 	%3 = or i64 %2, %0
     31 	ret i64 %3
     32 }
     33 
     34 define i64 @bu(i64 %x, i64 %y, i64 %z) nounwind readnone {
     35 entry:
     36 	%0 = lshr i64 %y, %z
     37 	%1 = sub i64 64, %z
     38 	%2 = shl i64 %x, %1
     39 	%3 = or i64 %2, %0
     40 	ret i64 %3
     41 }
     42 
     43 define i64 @xfoo(i64 %x, i64 %y, i64 %z) nounwind readnone {
     44 entry:
     45 	%0 = lshr i64 %x, 57
     46 	%1 = shl i64 %x, 7
     47 	%2 = or i64 %0, %1
     48 	ret i64 %2
     49 }
     50 
     51 define i64 @xbar(i64 %x, i64 %y, i64 %z) nounwind readnone {
     52 entry:
     53 	%0 = shl i64 %y, 7
     54 	%1 = lshr i64 %x, 57
     55 	%2 = or i64 %0, %1
     56 	ret i64 %2
     57 }
     58 
     59 define i64 @xun(i64 %x, i64 %y, i64 %z) nounwind readnone {
     60 entry:
     61 	%0 = lshr i64 %x, 7
     62 	%1 = shl i64 %x, 57
     63 	%2 = or i64 %0, %1
     64 	ret i64 %2
     65 }
     66 
     67 define i64 @xbu(i64 %x, i64 %y, i64 %z) nounwind readnone {
     68 entry:
     69 	%0 = lshr i64 %y, 7
     70 	%1 = shl i64 %x, 57
     71 	%2 = or i64 %0, %1
     72 	ret i64 %2
     73 }
     74