diff options
-rw-r--r-- | test/CodeGen/atom-idiv-bypass.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/CodeGen/atom-idiv-bypass.c b/test/CodeGen/atom-idiv-bypass.c new file mode 100644 index 0000000000..596e18b01c --- /dev/null +++ b/test/CodeGen/atom-idiv-bypass.c @@ -0,0 +1,32 @@ +// 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; +} |