| Index: tests_lit/llvm2ice_tests/div_legalization.ll
|
| diff --git a/tests_lit/llvm2ice_tests/div_legalization.ll b/tests_lit/llvm2ice_tests/div_legalization.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2088eff679920b6b5151c00d7369b55e3d283190
|
| --- /dev/null
|
| +++ b/tests_lit/llvm2ice_tests/div_legalization.ll
|
| @@ -0,0 +1,68 @@
|
| +; This is a regression test that idiv and div operands are legalized
|
| +; (they cannot be constants and can only be reg/mem for x86).
|
| +
|
| +; RUN: %llvm2ice -O2 --verbose none %s | FileCheck %s
|
| +; RUN: %llvm2ice -Om1 --verbose none %s | FileCheck %s
|
| +; RUN: %llvm2ice --verbose none %s | FileCheck --check-prefix=ERRORS %s
|
| +; RUN: %llvm2iceinsts %s | %szdiff %s | FileCheck --check-prefix=DUMP %s
|
| +; RUN: %llvm2iceinsts --pnacl %s | %szdiff %s \
|
| +; RUN: | FileCheck --check-prefix=DUMP %s
|
| +
|
| +define i32 @Sdiv_const8_b(i8 %a) {
|
| +; CHECK-LABEL: Sdiv_const8_b
|
| +entry:
|
| + %div = sdiv i8 %a, 12
|
| +; CHECK: mov {{.*}}, 12
|
| +; CHECK-NOT: idiv 12
|
| + %div_ext = sext i8 %div to i32
|
| + ret i32 %div_ext
|
| +}
|
| +
|
| +define i32 @Sdiv_const16_b(i16 %a) {
|
| +; CHECK-LABEL: Sdiv_const16_b
|
| +entry:
|
| + %div = sdiv i16 %a, 1234
|
| +; CHECK: mov {{.*}}, 1234
|
| +; CHECK-NOT: idiv 1234
|
| + %div_ext = sext i16 %div to i32
|
| + ret i32 %div_ext
|
| +}
|
| +
|
| +define i32 @Sdiv_const32_b(i32 %a) {
|
| +; CHECK-LABEL: Sdiv_const32_b
|
| +entry:
|
| + %div = sdiv i32 %a, 1234
|
| +; CHECK: mov {{.*}}, 1234
|
| +; CHECK-NOT: idiv 1234
|
| + ret i32 %div
|
| +}
|
| +
|
| +define i32 @Srem_const_b(i32 %a) {
|
| +; CHECK-LABEL: Srem_const_b
|
| +entry:
|
| + %rem = srem i32 %a, 2345
|
| +; CHECK: mov {{.*}}, 2345
|
| +; CHECK-NOT: idiv 2345
|
| + ret i32 %rem
|
| +}
|
| +
|
| +define i32 @Udiv_const_b(i32 %a) {
|
| +; CHECK-LABEL: Udiv_const_b
|
| +entry:
|
| + %div = udiv i32 %a, 3456
|
| +; CHECK: mov {{.*}}, 3456
|
| +; CHECK-NOT: div 3456
|
| + ret i32 %div
|
| +}
|
| +
|
| +define i32 @Urem_const_b(i32 %a) {
|
| +; CHECK-LABEL: Urem_const_b
|
| +entry:
|
| + %rem = urem i32 %a, 4567
|
| +; CHECK: mov {{.*}}, 4567
|
| +; CHECK-NOT: div 4567
|
| + ret i32 %rem
|
| +}
|
| +
|
| +; ERRORS-NOT: ICE translation error
|
| +; DUMP-NOT: SZ
|
|
|