Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -march=mips < %s | FileCheck %s -check-prefix=TRAP
      2 ; RUN: llc -march=mips -mno-check-zero-division < %s |\
      3 ; RUN: FileCheck %s -check-prefix=NOCHECK
      4 
      5 ; TRAP-LABEL: sdiv1:
      6 ; TRAP: div $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
      7 ; TRAP: teq $[[R0]], $zero, 7
      8 ; TRAP: mflo
      9 
     10 ; NOCHECK-LABEL: sdiv1:
     11 ; NOCHECK-NOT: teq
     12 ; NOCHECK: .end sdiv1
     13 
     14 define i32 @sdiv1(i32 %a0, i32 %a1) nounwind readnone {
     15 entry:
     16   %div = sdiv i32 %a0, %a1
     17   ret i32 %div
     18 }
     19 
     20 ; TRAP-LABEL: srem1:
     21 ; TRAP: div $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
     22 ; TRAP: teq $[[R0]], $zero, 7
     23 ; TRAP: mfhi
     24 
     25 define i32 @srem1(i32 %a0, i32 %a1) nounwind readnone {
     26 entry:
     27   %rem = srem i32 %a0, %a1
     28   ret i32 %rem
     29 }
     30 
     31 ; TRAP-LABEL: udiv1:
     32 ; TRAP: divu $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
     33 ; TRAP: teq $[[R0]], $zero, 7
     34 ; TRAP: mflo
     35 
     36 define i32 @udiv1(i32 %a0, i32 %a1) nounwind readnone {
     37 entry:
     38   %div = udiv i32 %a0, %a1
     39   ret i32 %div
     40 }
     41 
     42 ; TRAP-LABEL: urem1:
     43 ; TRAP: divu $zero, ${{[0-9]+}}, $[[R0:[0-9]+]]
     44 ; TRAP: teq $[[R0]], $zero, 7
     45 ; TRAP: mfhi
     46 
     47 define i32 @urem1(i32 %a0, i32 %a1) nounwind readnone {
     48 entry:
     49   %rem = urem i32 %a0, %a1
     50   ret i32 %rem
     51 }
     52 
     53 ; TRAP: div $zero,
     54 define i32 @sdivrem1(i32 %a0, i32 %a1, i32* nocapture %r) nounwind {
     55 entry:
     56   %rem = srem i32 %a0, %a1
     57   store i32 %rem, i32* %r, align 4
     58   %div = sdiv i32 %a0, %a1
     59   ret i32 %div
     60 }
     61 
     62 ; TRAP: divu $zero,
     63 define i32 @udivrem1(i32 %a0, i32 %a1, i32* nocapture %r) nounwind {
     64 entry:
     65   %rem = urem i32 %a0, %a1
     66   store i32 %rem, i32* %r, align 4
     67   %div = udiv i32 %a0, %a1
     68   ret i32 %div
     69 }
     70