| // This test verifies that IDIV bypass optimizations is used when compiling for |
| // Atom processors with O2. The optimization inserts a test followed by a |
| // branch to bypass the slow IDIV instruction. This test verifies that global |
| // context types are used when comparing with those in the BypassTypeMap. |
| |
| // RUN: %clang_cc1 %s -march=atom -m32 -O2 -S -o - | FileCheck %s |
| // CHECK: div32 |
| // CHECK: orl |
| // CHECK: testl |
| // CHECK: je |
| // CHECK: idivl |
| // CHECK: ret |
| // CHECK: divb |
| // CHECK: ret |
| int div32(int a, int b) |
| { |
| return a/b; |
| } |
| |
| // CHECK: divrem32 |
| // CHECK: orl |
| // CHECK: testl |
| // CHECK: je |
| // CHECK: idivl |
| // CHECK: jmp |
| // CHECK: divb |
| // CHECK: addl |
| // CHECK: ret |
| int divrem32(int a, int b) |
| { |
| return a/b + a%b; |
| } |