Fix addvdi3 and subvdi3 patterns
[official-gcc.git] / libstdc++-v3 / testsuite / decimal / operator_neg.cc
blobf96a83d64e8b123344d45b76cbd0f93ff64e5dac
1 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
2 //
3 // This file is part of the GNU ISO C++ Library. This library is free
4 // software; you can redistribute it and/or modify it under the
5 // terms of the GNU General Public License as published by the
6 // Free Software Foundation; either version 3, or (at your option)
7 // any later version.
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License along
15 // with this library; see the file COPYING3. If not see
16 // <http://www.gnu.org/licenses/>.
18 // { dg-do compile }
19 // { dg-require-effective-target dfp }
21 // Test that C++ binary operators that are restricted to integer operands
22 // do not accept decimal float operands.
24 #include <decimal/decimal>
26 using namespace std::decimal;
28 decimal32 a32, b32, c32;
29 decimal64 a64, b64, c64;
30 decimal128 a128, b128, c128;
32 void
33 modulus (void)
35 a32 = b32 % c32; // { dg-error "error" }
36 a64 = b64 % c64; // { dg-error "error" }
37 a128 = b128 % c128; // { dg-error "error" }
38 a128 = b32 % c128; // { dg-error "error" }
39 a128 = b64 % c128; // { dg-error "error" }
40 a32 = 100 % c32; // { dg-error "error" }
41 a64 = 10 % c64; // { dg-error "error" }
42 a128 = 1000 % c128; // { dg-error "error" }
43 a32 = b32 % 7; // { dg-error "error" }
44 a64 = b64 % 5; // { dg-error "error" }
45 a128 = b128 % 3; // { dg-error "error" }
48 void
49 bitwise_right_shift (void)
51 a32 = b32 >> c32; // { dg-error "error" }
52 a64 = b64 >> c64; // { dg-error "error" }
53 a128 = b128 >> c128; // { dg-error "error" }
54 a128 = b32 >> c128; // { dg-error "error" }
55 a128 = b64 >> c128; // { dg-error "error" }
56 a32 = 100 >> c32; // { dg-error "error" }
57 a64 = 10 >> c64; // { dg-error "error" }
58 a128 = 1000 >> c128; // { dg-error "error" }
59 a32 = b32 >> 7; // { dg-error "error" }
60 a64 = b64 >> 5; // { dg-error "error" }
61 a128 = b128 >> 3; // { dg-error "error" }
64 void
65 bitwise_left_shift (void)
67 a32 = b32 << c32; // { dg-error "error" }
68 a64 = b64 << c64; // { dg-error "error" }
69 a128 = b128 << c128; // { dg-error "error" }
70 a128 = b32 << c128; // { dg-error "error" }
71 a128 = b64 << c128; // { dg-error "error" }
72 a32 = 100 << c32; // { dg-error "error" }
73 a64 = 10 << c64; // { dg-error "error" }
74 a128 = 1000 << c128; // { dg-error "error" }
75 a32 = b32 << 7; // { dg-error "error" }
76 a64 = b64 << 5; // { dg-error "error" }
77 a128 = b128 << 3; // { dg-error "error" }
80 void
81 bitwise_exclusive_or (void)
83 a32 = b32 ^ c32; // { dg-error "error" }
84 a64 = b64 ^ c64; // { dg-error "error" }
85 a128 = b128 ^ c128; // { dg-error "error" }
86 a128 = b32 ^ c128; // { dg-error "error" }
87 a128 = b64 ^ c128; // { dg-error "error" }
88 a32 = 100 ^ c32; // { dg-error "error" }
89 a64 = 10 ^ c64; // { dg-error "error" }
90 a128 = 1000 ^ c128; // { dg-error "error" }
91 a32 = b32 ^ 7; // { dg-error "error" }
92 a64 = b64 ^ 5; // { dg-error "error" }
93 a128 = b128 ^ 3; // { dg-error "error" }
96 void
97 bitwise_inclusive_or (void)
99 a32 = b32 | c32; // { dg-error "error" }
100 a64 = b64 | c64; // { dg-error "error" }
101 a128 = b128 | c128; // { dg-error "error" }
102 a128 = b32 | c128; // { dg-error "error" }
103 a128 = b64 | c128; // { dg-error "error" }
104 a32 = 100 | c32; // { dg-error "error" }
105 a64 = 10 | c64; // { dg-error "error" }
106 a128 = 1000 | c128; // { dg-error "error" }
107 a32 = b32 | 7; // { dg-error "error" }
108 a64 = b64 | 5; // { dg-error "error" }
109 a128 = b128 | 3; // { dg-error "error" }
112 void
113 logical_and (void)
115 a32 = b32 && c32; // { dg-error "error" }
116 a64 = b64 && c64; // { dg-error "error" }
117 a128 = b128 && c128; // { dg-error "error" }
118 a128 = b32 && c128; // { dg-error "error" }
119 a128 = b64 && c128; // { dg-error "error" }
120 a32 = 100 && c32; // { dg-error "error" }
121 a64 = 10 && c64; // { dg-error "error" }
122 a128 = 1000 && c128; // { dg-error "error" }
123 a32 = b32 && 7; // { dg-error "error" }
124 a64 = b64 && 5; // { dg-error "error" }
125 a128 = b128 && 3; // { dg-error "error" }
128 void
129 logical_or (void)
131 a32 = b32 || c32; // { dg-error "error" }
132 a64 = b64 || c64; // { dg-error "error" }
133 a128 = b128 || c128; // { dg-error "error" }
134 a128 = b32 || c128; // { dg-error "error" }
135 a128 = b64 || c128; // { dg-error "error" }
136 a32 = 100 || c32; // { dg-error "error" }
137 a64 = 10 || c64; // { dg-error "error" }
138 a128 = 1000 || c128; // { dg-error "error" }
139 a32 = b32 || 7; // { dg-error "error" }
140 a64 = b64 || 5; // { dg-error "error" }
141 a128 = b128 || 3; // { dg-error "error" }
144 void
145 bitwise_complement (void)
147 a32 = ~b32; // { dg-error "error" }
148 a64 = ~b64; // { dg-error "error" }
149 a128 = ~b128; // { dg-error "error" }
152 void
153 logical_not (void)
155 a32 = !b32; // { dg-error "error" }
156 a64 = !b64; // { dg-error "error" }
157 a128 = !b128; // { dg-error "error" }