1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s 3 4define i8 @sdiv_neg_neg_high_bits(i8 %x, i8 %y) { 5; CHECK-LABEL: sdiv_neg_neg_high_bits: 6; CHECK: # %bb.0: 7; CHECK-NEXT: xorl %eax, %eax 8; CHECK-NEXT: retq 9 %num = or i8 %x, 128 10 %denum = or i8 %y, 131 11 %div = sdiv i8 %num, %denum 12 %r = and i8 %div, 128 13 ret i8 %r 14} 15 16define i8 @sdiv_exact_odd_odd(i8 %x, i8 %y) { 17; CHECK-LABEL: sdiv_exact_odd_odd: 18; CHECK: # %bb.0: 19; CHECK-NEXT: movb $1, %al 20; CHECK-NEXT: retq 21 %num = or i8 %x, 1 22 %denum = or i8 %y, 1 23 %div = sdiv exact i8 %num, %denum 24 %r = and i8 %div, 1 25 ret i8 %r 26} 27 28define i8 @sdiv_exact_even_even_fail_unknown(i8 %x, i8 %y) { 29; CHECK-LABEL: sdiv_exact_even_even_fail_unknown: 30; CHECK: # %bb.0: 31; CHECK-NEXT: andb $-2, %dil 32; CHECK-NEXT: andb $-2, %sil 33; CHECK-NEXT: movsbl %dil, %eax 34; CHECK-NEXT: idivb %sil 35; CHECK-NEXT: andb $1, %al 36; CHECK-NEXT: retq 37 %num = and i8 %x, -2 38 %denum = and i8 %y, -2 39 %div = sdiv exact i8 %num, %denum 40 %r = and i8 %div, 1 41 ret i8 %r 42} 43 44define i8 @udiv_exact_even_odd(i8 %x, i8 %y) { 45; CHECK-LABEL: udiv_exact_even_odd: 46; CHECK: # %bb.0: 47; CHECK-NEXT: xorl %eax, %eax 48; CHECK-NEXT: retq 49 %num = and i8 %x, -2 50 %denum = or i8 %y, 1 51 %div = udiv exact i8 %num, %denum 52 %r = and i8 %div, 1 53 ret i8 %r 54} 55 56define i8 @udiv_exact_even_even_fail_unknown(i8 %x, i8 %y) { 57; CHECK-LABEL: udiv_exact_even_even_fail_unknown: 58; CHECK: # %bb.0: 59; CHECK-NEXT: andb $-2, %dil 60; CHECK-NEXT: andb $-2, %sil 61; CHECK-NEXT: movzbl %dil, %eax 62; CHECK-NEXT: divb %sil 63; CHECK-NEXT: andb $1, %al 64; CHECK-NEXT: retq 65 %num = and i8 %x, -2 66 %denum = and i8 %y, -2 67 %div = udiv exact i8 %num, %denum 68 %r = and i8 %div, 1 69 ret i8 %r 70} 71