Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / X86 / knownbits-div.ll
blob02e20a9010cc6cf12988dfbe5325d71eaee32540
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s
4 define 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
16 define 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
28 define 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
44 define 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
56 define 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