OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.target/] [avr/] [torture/] [int24-mul.c] - Blame information for rev 691

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 691 jeremybenn
/* { dg-do run } */
2
/* { dg-options "-w" } */
3
 
4
#include <stdlib.h>
5
 
6
const __flash __int24 vals[] =
7
  {
8
    0, 1, 2, 3, -1, -2, -3, 0xff, 0x100, 0x101,
9
    0xffL * 0xff, 0xfffL * 0xfff, 0x101010L, 0xaaaaaaL
10
  };
11
 
12
void test_u (void)
13
{
14
  unsigned int i;
15
  unsigned long la, lb, lc;
16
  __uint24 a, b, c;
17
 
18
  int S = sizeof (vals) / sizeof (*vals);
19
 
20
  for (i = 0; i < 500; i++)
21
    {
22
      if (i < S*S)
23
        {
24
          a = vals[i / S];
25
          b = vals[i % S];
26
        }
27
      else
28
        {
29
          if (i & 1)
30
            a += 0x7654321L;
31
          else
32
            b += 0x5fe453L;
33
        }
34
 
35
      c = a * b;
36
 
37
      la = a;
38
      lb = b;
39
      lc = 0xffffff & (la * lb);
40
 
41
      if (c != lc)
42
        abort();
43
    }
44
}
45
 
46
#define TEST_N_U(A1,A2,B)                       \
47
  do {                                          \
48
    if ((0xffffff & (A1*B)) != A2*B)            \
49
      abort();                                  \
50
  } while (0)
51
 
52
void test_nu (void)
53
{
54
  unsigned long la;
55
  unsigned int i;
56
  int S = sizeof (vals) / sizeof (*vals);
57
  __uint24 a;
58
 
59
  for (i = 0; i < 500; i++)
60
    {
61
      a = i < S
62
        ? vals[i % S]
63
        : a + 0x7654321;
64
 
65
      la = a;
66
 
67
      TEST_N_U (la, a, 2);
68
      TEST_N_U (la, a, 3);
69
      TEST_N_U (la, a, 4);
70
      TEST_N_U (la, a, 5);
71
      TEST_N_U (la, a, 15);
72
      TEST_N_U (la, a, 16);
73
      TEST_N_U (la, a, 128);
74
      TEST_N_U (la, a, 0x1000);
75
    }
76
}
77
 
78
int main (void)
79
{
80
  test_u();
81
  test_nu();
82
 
83
  exit(0);
84
 
85
  return 0;
86
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.