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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.target/] [mips/] [mips-ps-6.c] - Blame information for rev 321

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 321 jeremybenn
/* mips-ps-2.c with an extra -ffinite-math-only option.  This option
2
   changes the way that abs.ps is handled.  */
3
/* { dg-do run } */
4
/* { dg-options "-O2 -mpaired-single -ffinite-math-only" } */
5
 
6
/* Test MIPS paired-single builtin functions */
7
#include <stdlib.h>
8
#include <stdio.h>
9
 
10
typedef float v2sf __attribute__ ((vector_size(8)));
11
 
12
NOMIPS16 int main ()
13
{
14
  int little_endian;
15
  v2sf a, b, c, d;
16
  float e,f;
17
  int i;
18
 
19
  union { long long ll; int i[2]; } endianness_test;
20
  endianness_test.ll = 1;
21
  little_endian = endianness_test.i[0];
22
 
23
  /* pll.ps */
24
  a = (v2sf) {1, 2};
25
  b = (v2sf) {3, 4};
26
  c = __builtin_mips_pll_ps (a, b);
27
  if (little_endian) // little endian
28
    d = (v2sf) {3, 1};
29
  else // big endian
30
    d = (v2sf) {2, 4};
31
 
32
  if (!__builtin_mips_upper_c_eq_ps (c, d) ||
33
      !__builtin_mips_lower_c_eq_ps (c, d))
34
    abort ();
35
 
36
  /* pul.ps */
37
  a = (v2sf) {1, 2};
38
  b = (v2sf) {3, 4};
39
  c = __builtin_mips_pul_ps (a, b);
40
  if (little_endian) // little endian
41
    d = (v2sf) {3, 2};
42
  else // big endian
43
    d = (v2sf) {1, 4};
44
  if (!__builtin_mips_upper_c_eq_ps (c, d) ||
45
      !__builtin_mips_lower_c_eq_ps (c, d))
46
    abort ();
47
 
48
  /* plu.ps */
49
  a = (v2sf) {1, 2};
50
  b = (v2sf) {3, 4};
51
  c = __builtin_mips_plu_ps (a, b);
52
  if (little_endian) // little endian
53
    d = (v2sf) {4, 1};
54
  else // big endian
55
    d = (v2sf) {2, 3};
56
  if (!__builtin_mips_upper_c_eq_ps (c, d) ||
57
      !__builtin_mips_lower_c_eq_ps (c, d))
58
    abort ();
59
 
60
  /* puu.ps */
61
  a = (v2sf) {1, 2};
62
  b = (v2sf) {3, 4};
63
  c = __builtin_mips_puu_ps (a, b);
64
  if (little_endian) // little endian
65
    d = (v2sf) {4, 2};
66
  else // big endian
67
    d = (v2sf) {1, 3};
68
  if (!__builtin_mips_upper_c_eq_ps (c, d) ||
69
      !__builtin_mips_lower_c_eq_ps (c, d))
70
    abort ();
71
 
72
  /* cvt.ps.s */
73
  e = 3.4;
74
  f = 4.5;
75
  a = __builtin_mips_cvt_ps_s (e, f);
76
  if (little_endian) // little endian
77
    b = (v2sf) {4.5, 3.4};
78
  else // big endian
79
    b = (v2sf) {3.4, 4.5};
80
  if (!__builtin_mips_upper_c_eq_ps (a, b) ||
81
      !__builtin_mips_lower_c_eq_ps (a, b))
82
    abort ();
83
 
84
  /* cvt.s.pl */
85
  a = (v2sf) {35.1, 120.2};
86
  e = __builtin_mips_cvt_s_pl (a);
87
  if (little_endian) // little endian
88
    f = 35.1;
89
  else // big endian
90
    f = 120.2;
91
  if (e != f)
92
    abort ();
93
 
94
  /* cvt.s.pu */
95
  a = (v2sf) {30.0, 100.0};
96
  e = __builtin_mips_cvt_s_pu (a);
97
  if (little_endian) // little endian
98
    f = 100.0;
99
  else // big endian
100
    f = 30.0;
101
  if (e != f)
102
    abort ();
103
 
104
  /* abs.ps */
105
  a = (v2sf) {-3.4, -5.8};
106
  b = __builtin_mips_abs_ps (a);
107
  c = (v2sf) {3.4, 5.8};
108
  if (!__builtin_mips_upper_c_eq_ps (b, c) ||
109
      !__builtin_mips_lower_c_eq_ps (b, c))
110
    abort ();
111
 
112
  /* alnv.ps with rs = 4*/
113
  a = (v2sf) {1, 2};
114
  b = (v2sf) {3, 4};
115
  i = 4;
116
  c = __builtin_mips_alnv_ps (a, b, i);
117
  d = (v2sf) {2, 3};
118
 
119
  if (!__builtin_mips_upper_c_eq_ps (c, d) ||
120
      !__builtin_mips_lower_c_eq_ps (c, d))
121
    abort ();
122
 
123
  /* alnv.ps with rs = 0 */
124
  a = (v2sf) {5, 6};
125
  b = (v2sf) {7, 8};
126
  i = 0;
127
  c = __builtin_mips_alnv_ps (a, b, i);
128
  d = (v2sf) {5, 6};
129
 
130
  if (!__builtin_mips_upper_c_eq_ps (c, d) ||
131
      !__builtin_mips_lower_c_eq_ps (c, d))
132
    abort ();
133
 
134
  printf ("Test Passes\n");
135
  exit (0);
136
}

powered by: WebSVN 2.1.0

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