1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_divsi3
3 //===-- divsi3_test.c - Test __divsi3 -------------------------------------===//
5 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
6 // See https://llvm.org/LICENSE.txt for license information.
7 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
9 //===----------------------------------------------------------------------===//
11 // This file tests __divsi3 for the compiler_rt library.
13 //===----------------------------------------------------------------------===//
20 COMPILER_RT_ABI si_int
__divsi3(si_int a
, si_int b
);
22 int test__divsi3(si_int a
, si_int b
, si_int expected
)
24 si_int x
= __divsi3(a
, b
);
26 printf("error in __divsi3: %d / %d = %d, expected %d\n",
33 if (test__divsi3(0, 1, 0))
35 if (test__divsi3(0, -1, 0))
38 if (test__divsi3(2, 1, 2))
40 if (test__divsi3(2, -1, -2))
42 if (test__divsi3(-2, 1, -2))
44 if (test__divsi3(-2, -1, 2))
47 if (test__divsi3(0x80000000, 1, 0x80000000))
49 if (test__divsi3(0x80000000, -1, 0x80000000))
51 if (test__divsi3(0x80000000, -2, 0x40000000))
53 if (test__divsi3(0x80000000, 2, 0xC0000000))