diff options
| -rw-r--r-- | llvm/test/CodeGen/X86/rot64.ll | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/llvm/test/CodeGen/X86/rot64.ll b/llvm/test/CodeGen/X86/rot64.ll index f77bde050c7..fc382ed7fc6 100644 --- a/llvm/test/CodeGen/X86/rot64.ll +++ b/llvm/test/CodeGen/X86/rot64.ll @@ -1,12 +1,10 @@ -; RUN: llc < %s -march=x86-64 -mcpu=corei7 > %t -; RUN: grep rol %t | count 5 -; RUN: grep ror %t | count 1 -; RUN: grep shld %t | count 2 -; RUN: grep shrd %t | count 2 +; RUN: llc < %s -march=x86-64 -mcpu=corei7 | FileCheck %s ; RUN: llc < %s -march=x86-64 -mcpu=core-avx2 | FileCheck %s --check-prefix=BMI2 define i64 @foo(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: foo: +; CHECK: rolq %cl %0 = shl i64 %x, %z %1 = sub i64 64, %z %2 = lshr i64 %x, %1 @@ -16,6 +14,8 @@ entry: define i64 @bar(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: bar: +; CHECK: shldq %cl %0 = shl i64 %y, %z %1 = sub i64 64, %z %2 = lshr i64 %x, %1 @@ -25,6 +25,8 @@ entry: define i64 @un(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: un: +; CHECK: rorq %cl %0 = lshr i64 %x, %z %1 = sub i64 64, %z %2 = shl i64 %x, %1 @@ -34,6 +36,8 @@ entry: define i64 @bu(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: bu: +; CHECK: shrdq %cl %0 = lshr i64 %y, %z %1 = sub i64 64, %z %2 = shl i64 %x, %1 @@ -43,6 +47,8 @@ entry: define i64 @xfoo(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: xfoo: +; CHECK: rolq $7 ; BMI2-LABEL: xfoo: ; BMI2: rorxq $57 %0 = lshr i64 %x, 57 @@ -53,8 +59,10 @@ entry: define i64 @xfoop(i64* %p) nounwind readnone { entry: +; CHECK-LABEL: xfoop: +; CHECK: rolq $7 ; BMI2-LABEL: xfoop: -; BMI2: rorxq $57, ({{.+}}), %{{.+}} +; BMI2: rorxq $57 %x = load i64, i64* %p %a = lshr i64 %x, 57 %b = shl i64 %x, 7 @@ -64,6 +72,8 @@ entry: define i64 @xbar(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: xbar: +; CHECK: shrdq $57 %0 = shl i64 %y, 7 %1 = lshr i64 %x, 57 %2 = or i64 %0, %1 @@ -72,6 +82,8 @@ entry: define i64 @xun(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: xun: +; CHECK: rolq $57 ; BMI2-LABEL: xun: ; BMI2: rorxq $7 %0 = lshr i64 %x, 7 @@ -82,8 +94,10 @@ entry: define i64 @xunp(i64* %p) nounwind readnone { entry: +; CHECK-LABEL: xunp: +; CHECK: rolq $57 ; BMI2-LABEL: xunp: -; BMI2: rorxq $7, ({{.+}}), %{{.+}} +; BMI2: rorxq $7 %x = load i64, i64* %p %a = lshr i64 %x, 7 %b = shl i64 %x, 57 @@ -93,6 +107,8 @@ entry: define i64 @xbu(i64 %x, i64 %y, i64 %z) nounwind readnone { entry: +; CHECK-LABEL: xbu: +; CHECK: shldq $57 %0 = lshr i64 %y, 7 %1 = shl i64 %x, 57 %2 = or i64 %0, %1 |

