aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/mips/fixed-vector-type.c
blob: ddd9660f1d4e1545b279652ac7110e228840a79e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* Test vector fixed-point instructions */
/* { dg-do compile { target { fixed_point } } } */
/* { dg-options "-mdspr2" } */
/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
/* { dg-final { scan-assembler-times "\taddq_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\tsubq_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\taddu_s.qb\t" 1 } } */
/* { dg-final { scan-assembler-times "\taddu_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\tsubu_s.qb\t" 1 } } */
/* { dg-final { scan-assembler-times "\tsubu_s.ph\t" 2 } } */
/* { dg-final { scan-assembler-times "\tmulq_rs.ph\t" 1 } } */

typedef _Sat unsigned short _Fract sat_v4uqq __attribute__ ((vector_size(4)));
typedef _Sat unsigned _Fract sat_v2uhq __attribute__ ((vector_size(4)));
typedef _Sat unsigned short _Accum sat_v2uha __attribute__ ((vector_size(4)));
typedef _Sat _Fract sat_v2hq __attribute__ ((vector_size(4)));
typedef _Sat short _Accum sat_v2ha __attribute__ ((vector_size(4)));

typedef unsigned short _Fract v4uqq __attribute__ ((vector_size(4)));
typedef unsigned _Fract v2uhq __attribute__ ((vector_size(4)));
typedef unsigned short _Accum v2uha __attribute__ ((vector_size(4)));
typedef _Fract v2hq __attribute__ ((vector_size(4)));
typedef short _Accum v2ha __attribute__ ((vector_size(4)));

NOMIPS16 sat_v2hq test1 (sat_v2hq a, sat_v2hq b)
{
  return a + b;
}

NOMIPS16 sat_v2ha test2 (sat_v2ha a, sat_v2ha b)
{
  return a + b;
}

NOMIPS16 sat_v2hq test3 (sat_v2hq a, sat_v2hq b)
{
  return a - b;
}

NOMIPS16 sat_v2ha test4 (sat_v2ha a, sat_v2ha b)
{
  return a - b;
}

NOMIPS16 sat_v4uqq test5 (sat_v4uqq a, sat_v4uqq b)
{
  return a + b;
}

NOMIPS16 sat_v2uhq test6 (sat_v2uhq a, sat_v2uhq b)
{
  return a + b;
}

NOMIPS16 sat_v2uha test7 (sat_v2uha a, sat_v2uha b)
{
  return a + b;
}

NOMIPS16 sat_v4uqq test8 (sat_v4uqq a, sat_v4uqq b)
{
  return a - b;
}

NOMIPS16 sat_v2uhq test9 (sat_v2uhq a, sat_v2uhq b)
{
  return a - b;
}

NOMIPS16 sat_v2uha test10 (sat_v2uha a, sat_v2uha b)
{
  return a - b;
}

NOMIPS16 sat_v2hq test11 (sat_v2hq a, sat_v2hq b)
{
  return a * b;
}

NOMIPS16 v2hq test12 (v2hq a, v2hq b)
{
  return a + b;
}

NOMIPS16 v2hq test13 (v2hq a, v2hq b)
{
  return a - b;
}

NOMIPS16 v2hq test14 (v2hq a, v2hq b)
{
  return a * b;
}

NOMIPS16 v2ha test15 (v2ha a, v2ha b)
{
  return a + b;
}

NOMIPS16 v2ha test16 (v2ha a, v2ha b)
{
  return a - b;
}

NOMIPS16 v4uqq test17 (v4uqq a, v4uqq b)
{
  return a + b;
}

NOMIPS16 v4uqq test18 (v4uqq a, v4uqq b)
{
  return a - b;
}

NOMIPS16 v2uhq test19 (v2uhq a, v2uhq b)
{
  return a + b;
}

NOMIPS16 v2uhq test20 (v2uhq a, v2uhq b)
{
  return a - b;
}

NOMIPS16 v2uha test21 (v2uha a, v2uha b)
{
  return a + b;
}

NOMIPS16 v2uha test22 (v2uha a, v2uha b)
{
  return a - b;
}