177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===-- lshrdi3_test.c - Test __lshrdi3 -----------------------------------===// 277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// The LLVM Compiler Infrastructure 477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file is distributed under the University of Illinois Open Source 677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// License. See LICENSE.TXT for details. 777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===// 977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// This file tests __lshrdi3 for the compiler_rt library. 1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// 1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao//===----------------------------------------------------------------------===// 1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include "int_lib.h" 1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#include <stdio.h> 1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// Returns: logical a >> b 1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao// Precondition: 0 <= b < bits_in_dword 2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodi_int __lshrdi3(di_int a, si_int b); 2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint test__lshrdi3(di_int a, si_int b, di_int expected) 2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{ 2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao di_int x = __lshrdi3(a, b); 2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (x != expected) 2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf("error in __lshrdi3: %llX >> %d = %llX, expected %llX\n", 2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao a, b, __lshrdi3(a, b), expected); 2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return x != expected; 3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaochar assumption_1[sizeof(di_int) == 2*sizeof(si_int)] = {0}; 3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoint main() 3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao{ 3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 0, 0x123456789ABCDEFLL)) 3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 1, 0x91A2B3C4D5E6F7LL)) 3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 2, 0x48D159E26AF37BLL)) 4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 3, 0x2468ACF13579BDLL)) 4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 4, 0x123456789ABCDELL)) 4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 28, 0x12345678LL)) 4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 29, 0x91A2B3CLL)) 5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 30, 0x48D159ELL)) 5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 31, 0x2468ACFLL)) 5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 5577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 32, 0x1234567LL)) 5777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 5877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 33, 0x91A2B3LL)) 6077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 6177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 34, 0x48D159LL)) 6277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 6377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 35, 0x2468ACLL)) 6477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 6577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 36, 0x123456LL)) 6677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 6777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 6877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 60, 0)) 6977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 61, 0)) 7177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 62, 0)) 7377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0x0123456789ABCDEFLL, 63, 0)) 7577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 7777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 0, 0xFEDCBA9876543210LL)) 7877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 7977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 1, 0x7F6E5D4C3B2A1908LL)) 8077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 8177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 2, 0x3FB72EA61D950C84LL)) 8277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 8377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 3, 0x1FDB97530ECA8642LL)) 8477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 8577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 4, 0xFEDCBA987654321LL)) 8677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 8777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 8877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 28, 0xFEDCBA987LL)) 8977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 29, 0x7F6E5D4C3LL)) 9177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 30, 0x3FB72EA61LL)) 9377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 31, 0x1FDB97530LL)) 9577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 9777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 32, 0xFEDCBA98LL)) 9877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 9977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 10077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 33, 0x7F6E5D4CLL)) 10177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 10277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 34, 0x3FB72EA6LL)) 10377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 10477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 35, 0x1FDB9753LL)) 10577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 10677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xFEDCBA9876543210LL, 36, 0xFEDCBA9LL)) 10777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 10877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 10977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xAEDCBA9876543210LL, 60, 0xALL)) 11077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xAEDCBA9876543210LL, 61, 0x5LL)) 11277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xAEDCBA9876543210LL, 62, 0x2LL)) 11477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao if (test__lshrdi3(0xAEDCBA9876543210LL, 63, 0x1LL)) 11677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 1; 11777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao return 0; 11877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao} 119