| ; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+idivl-to-divb < %s | FileCheck -check-prefix=DIV32 %s |
| ; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+idivq-to-divw < %s | FileCheck -check-prefix=DIV64 %s |
| |
| define i32 @div32(i32 %a, i32 %b) { |
| entry: |
| ; DIV32-LABEL: div32: |
| ; DIV32: orl %{{.*}}, [[REG:%[a-z]+]] |
| ; DIV32: testl $-256, [[REG]] |
| ; DIV32: divb |
| ; DIV64-LABEL: div32: |
| ; DIV64-NOT: divb |
| %div = sdiv i32 %a, %b |
| ret i32 %div |
| } |
| |
| define i64 @div64(i64 %a, i64 %b) { |
| entry: |
| ; DIV32-LABEL: div64: |
| ; DIV32-NOT: divw |
| ; DIV64-LABEL: div64: |
| ; DIV64: orq %{{.*}}, [[REG:%[a-z]+]] |
| ; DIV64: testq $-65536, [[REG]] |
| ; DIV64: divw |
| %div = sdiv i64 %a, %b |
| ret i64 %div |
| } |
| |
| |