Enable all Hexagon tests.
[oota-llvm.git] / test / CodeGen / X86 / divide-by-constant.ll
index ab3bd9414957210c92c60948c98f0f477c5a3e20..e577ecb85aa83f582e3b4cae797f3d0814afa9e5 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i686-pc-linux-gnu -asm-verbose=0 | FileCheck %s
+; RUN: llc < %s -mcpu=generic -mtriple=i686-pc-linux-gnu -asm-verbose=0 | FileCheck %s
 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
 target triple = "i686-pc-linux-gnu"
 
@@ -29,9 +29,9 @@ entry:
   ret i8 %div
 
 ; CHECK: test3:
-; CHECK: imull $171, %eax, %eax
-; CHECK-NEXT: shrb     %ah
-; CHECK-NEXT: movzbl   %ah, %eax
+; CHECK: movzbl  8(%esp), %eax
+; CHECK-NEXT: imull    $171, %eax, %eax
+; CHECK-NEXT: shrl     $9, %eax
 ; CHECK-NEXT: ret
 }
 
@@ -40,7 +40,7 @@ entry:
        %div = sdiv i16 %x, 33          ; <i32> [#uses=1]
        ret i16 %div
 ; CHECK: test4:
-; CHECK: imull $-1985, %ecx, %ecx 
+; CHECK: imull $1986, %eax, %
 }
 
 define i32 @test5(i32 %A) nounwind {
@@ -51,3 +51,23 @@ define i32 @test5(i32 %A) nounwind {
 ; CHECK: mull  4(%esp)
 }
 
+define signext i16 @test6(i16 signext %x) nounwind {
+entry:
+  %div = sdiv i16 %x, 10
+  ret i16 %div
+; CHECK: test6:
+; CHECK: imull $26215, %eax, %eax
+; CHECK: shrl  $31, %ecx
+; CHECK: sarl  $18, %eax
+}
+
+define i32 @test7(i32 %x) nounwind {
+  %div = udiv i32 %x, 28
+  ret i32 %div
+; CHECK: test7:
+; CHECK: shrl $2
+; CHECK: movl $613566757
+; CHECK: mull
+; CHECK-NOT: shrl
+; CHECK: ret
+}