Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -mtriple=x86_64-none-linux -fast-isel -fast-isel-abort=1 -verify-machineinstrs < %s | FileCheck %s
      2 ; RUN: llc -mtriple=i686-none-linux -fast-isel -fast-isel-abort=1 -verify-machineinstrs < %s | FileCheck %s
      3 
      4 define i8 @test_sdiv8(i8 %dividend, i8 %divisor) nounwind {
      5 entry:
      6   %result = sdiv i8 %dividend, %divisor
      7   ret i8 %result
      8 }
      9 
     10 ; CHECK-LABEL: test_sdiv8:
     11 ; CHECK: movsbw
     12 ; CHECK: idivb
     13 
     14 define i8 @test_srem8(i8 %dividend, i8 %divisor) nounwind {
     15 entry:
     16   %result = srem i8 %dividend, %divisor
     17   ret i8 %result
     18 }
     19 
     20 ; CHECK-LABEL: test_srem8:
     21 ; CHECK: movsbw
     22 ; CHECK: idivb
     23 
     24 define i8 @test_udiv8(i8 %dividend, i8 %divisor) nounwind {
     25 entry:
     26   %result = udiv i8 %dividend, %divisor
     27   ret i8 %result
     28 }
     29 
     30 ; CHECK-LABEL: test_udiv8:
     31 ; CHECK: movzbw
     32 ; CHECK: divb
     33 
     34 define i8 @test_urem8(i8 %dividend, i8 %divisor) nounwind {
     35 entry:
     36   %result = urem i8 %dividend, %divisor
     37   ret i8 %result
     38 }
     39 
     40 ; CHECK-LABEL: test_urem8:
     41 ; CHECK: movzbw
     42 ; CHECK: divb
     43 
     44 define i16 @test_sdiv16(i16 %dividend, i16 %divisor) nounwind {
     45 entry:
     46   %result = sdiv i16 %dividend, %divisor
     47   ret i16 %result
     48 }
     49 
     50 ; CHECK-LABEL: test_sdiv16:
     51 ; CHECK: cwtd
     52 ; CHECK: idivw
     53 
     54 define i16 @test_srem16(i16 %dividend, i16 %divisor) nounwind {
     55 entry:
     56   %result = srem i16 %dividend, %divisor
     57   ret i16 %result
     58 }
     59 
     60 ; CHECK-LABEL: test_srem16:
     61 ; CHECK: cwtd
     62 ; CHECK: idivw
     63 
     64 define i16 @test_udiv16(i16 %dividend, i16 %divisor) nounwind {
     65 entry:
     66   %result = udiv i16 %dividend, %divisor
     67   ret i16 %result
     68 }
     69 
     70 ; CHECK-LABEL: test_udiv16:
     71 ; CHECK: xorl
     72 ; CHECK: divw
     73 
     74 define i16 @test_urem16(i16 %dividend, i16 %divisor) nounwind {
     75 entry:
     76   %result = urem i16 %dividend, %divisor
     77   ret i16 %result
     78 }
     79 
     80 ; CHECK-LABEL: test_urem16:
     81 ; CHECK: xorl
     82 ; CHECK: divw
     83 
     84 define i32 @test_sdiv32(i32 %dividend, i32 %divisor) nounwind {
     85 entry:
     86   %result = sdiv i32 %dividend, %divisor
     87   ret i32 %result
     88 }
     89 
     90 ; CHECK-LABEL: test_sdiv32:
     91 ; CHECK: cltd
     92 ; CHECK: idivl
     93 
     94 define i32 @test_srem32(i32 %dividend, i32 %divisor) nounwind {
     95 entry:
     96   %result = srem i32 %dividend, %divisor
     97   ret i32 %result
     98 }
     99 
    100 ; CHECK-LABEL: test_srem32:
    101 ; CHECK: cltd
    102 ; CHECK: idivl
    103 
    104 define i32 @test_udiv32(i32 %dividend, i32 %divisor) nounwind {
    105 entry:
    106   %result = udiv i32 %dividend, %divisor
    107   ret i32 %result
    108 }
    109 
    110 ; CHECK-LABEL: test_udiv32:
    111 ; CHECK: xorl
    112 ; CHECK: divl
    113 
    114 define i32 @test_urem32(i32 %dividend, i32 %divisor) nounwind {
    115 entry:
    116   %result = urem i32 %dividend, %divisor
    117   ret i32 %result
    118 }
    119 
    120 ; CHECK-LABEL: test_urem32:
    121 ; CHECK: xorl
    122 ; CHECK: divl
    123