void Test(long long Val, int Amt) { | |
printf("0x%llx op %d:\n", Val, Amt); | |
printf(" ashr: 0x%llx\n lshr: 0x%llx\n shl: 0x%llx\n", Val >> Amt, | |
(unsigned long long)Val >> Amt, Val << Amt); | |
} | |
volatile struct { | |
long long A; int V; | |
} Vals[] = { | |
{ 123, 4}, | |
{ 123, 34}, | |
{-4, 4}, | |
{-5, 34}, | |
{ -6000000000LL, 4}, | |
{ -6000000000LL, 34}, | |
{ 6000000000LL, 4}, | |
{ 6000000000LL, 34} | |
}; | |
int main(int argc, char**argv) { | |
for (argc--; argc < sizeof(Vals)/sizeof(Vals[0]); ++argc) | |
Test(Vals[argc].A, Vals[argc].V); | |
return 0; | |
} |