1 ; RUN: llc < %s -mcpu=atom -mtriple=i686-linux | FileCheck %s
3 define i32 @test_get_quotient(i32 %a, i32 %b) nounwind {
4 ; CHECK: test_get_quotient
5 ; CHECK: orl %ecx, %edx
6 ; CHECK-NEXT: testl $-256, %edx
12 %result = sdiv i32 %a, %b
16 define i32 @test_get_remainder(i32 %a, i32 %b) nounwind {
17 ; CHECK: test_get_remainder
18 ; CHECK: orl %ecx, %edx
19 ; CHECK-NEXT: testl $-256, %edx
25 %result = srem i32 %a, %b
29 define i32 @test_get_quotient_and_remainder(i32 %a, i32 %b) nounwind {
30 ; CHECK: test_get_quotient_and_remainder
31 ; CHECK: orl %ecx, %edx
32 ; CHECK-NEXT: testl $-256, %edx
40 %resultdiv = sdiv i32 %a, %b
41 %resultrem = srem i32 %a, %b
42 %result = add i32 %resultdiv, %resultrem
46 define i32 @test_use_div_and_idiv(i32 %a, i32 %b) nounwind {
47 ; CHECK: test_use_div_and_idiv
54 %resultidiv = sdiv i32 %a, %b
55 %resultdiv = udiv i32 %a, %b
56 %result = add i32 %resultidiv, %resultdiv
60 define i32 @test_use_div_imm_imm() nounwind {
61 ; CHECK: test_use_div_imm_imm
63 %resultdiv = sdiv i32 256, 4
67 define i32 @test_use_div_reg_imm(i32 %a) nounwind {
68 ; CHECK: test_use_div_reg_imm
72 %resultdiv = sdiv i32 %a, 33
76 define i32 @test_use_rem_reg_imm(i32 %a) nounwind {
77 ; CHECK: test_use_rem_reg_imm
81 %resultrem = srem i32 %a, 33
85 define i32 @test_use_divrem_reg_imm(i32 %a) nounwind {
86 ; CHECK: test_use_divrem_reg_imm
90 %resultdiv = sdiv i32 %a, 33
91 %resultrem = srem i32 %a, 33
92 %result = add i32 %resultdiv, %resultrem
96 define i32 @test_use_div_imm_reg(i32 %a) nounwind {
97 ; CHECK: test_use_div_imm_reg
101 %resultdiv = sdiv i32 4, %a
105 define i32 @test_use_rem_imm_reg(i32 %a) nounwind {
106 ; CHECK: test_use_rem_imm_reg
110 %resultdiv = sdiv i32 4, %a