Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: crosstest/test_cast.cpp

Issue 265703002: Add Om1 lowering with no optimizations (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #include <stdint.h>
2 #include "test_cast.h"
3
4 template <typename FromType, typename ToType>
5 class Caster {
6 public:
7 static ToType __attribute__((noinline)) cast(FromType a) { return (ToType) a; }
8 };
JF 2014/05/01 00:16:55 Couldn't this avoid the class, and just be a templ
Jim Stichnoth 2014/05/05 07:03:55 Done.
9
10 template <typename ToType>
11 class CasterCaster {
12 static ToType f(bool a) { return Caster<bool, ToType>::cast(a); }
13 static ToType f(int8_t a) { return Caster<int8_t, ToType>::cast(a); }
14 static ToType f(uint8_t a) { return Caster<uint8_t, ToType>::cast(a); }
15 static ToType f(int16_t a) { return Caster<int16_t, ToType>::cast(a); }
16 static ToType f(uint16_t a) { return Caster<uint16_t, ToType>::cast(a); }
17 static ToType f(int32_t a) { return Caster<int32_t, ToType>::cast(a); }
18 static ToType f(uint32_t a) { return Caster<uint32_t, ToType>::cast(a); }
19 static ToType f(int64_t a) { return Caster<int64_t, ToType>::cast(a); }
20 static ToType f(uint64_t a) { return Caster<uint64_t, ToType>::cast(a); }
21 };
22
23 template class CasterCaster<bool>;
24 template class CasterCaster<int8_t>;
25 template class CasterCaster<uint8_t>;
26 template class CasterCaster<int16_t>;
27 template class CasterCaster<uint16_t>;
28 template class CasterCaster<int32_t>;
29 template class CasterCaster<uint32_t>;
30 template class CasterCaster<int64_t>;
31 template class CasterCaster<uint64_t>;
32
33 #if 0
34 // The bitcode for *ToUi1() needs to be hand-modified to change the
35 // icmp back to trunc or fptoui.
JF 2014/05/01 00:16:55 TODO
Jim Stichnoth 2014/05/05 07:03:55 Actually it looks like I was still in the middle o
36 bool castUi64ToUi1(uint64_t a) { return (bool) a; }
37 bool castSi64ToUi1(int64_t a) { return (bool) a; }
38 bool castUi32ToUi1(uint32_t a) { return (bool) a; }
39 bool castSi32ToUi1(int32_t a) { return (bool) a; }
40 bool castUi16ToUi1(unsigned short a) { return (bool) a; }
41 bool castSi16ToUi1(short a) { return (bool) a; }
42 bool castUi8ToUi1(unsigned char a) { return (bool) a; }
43 bool castSi8ToUi1(signed char a) { return (bool) a; }
44 bool castUi1ToUi1(bool a) { return (bool) a; }
45 bool castF64ToUi1(double a) { return (bool) a; }
46 bool castF32ToUi1(float a) { return (bool) a; }
47 #endif
48
49 signed char castUi64ToSi8(uint64_t a) { return (signed char)a; }
50 signed char castSi64ToSi8(int64_t a) { return (signed char)a; }
51 signed char castUi32ToSi8(uint32_t a) { return (signed char)a; }
52 signed char castSi32ToSi8(int32_t a) { return (signed char)a; }
53 signed char castUi16ToSi8(unsigned short a) { return (signed char)a; }
54 signed char castSi16ToSi8(short a) { return (signed char)a; }
55 signed char castUi8ToSi8(unsigned char a) { return (signed char)a; }
56 signed char castSi8ToSi8(signed char a) { return (signed char)a; }
57 signed char castUi1ToSi8(bool a) { return (signed char)a; }
58 signed char castF64ToSi8(double a) { return (signed char)a; }
59 signed char castF32ToSi8(float a) { return (signed char)a; }
60
61 unsigned char castUi64ToUi8(uint64_t a) { return (unsigned char)a; }
62 unsigned char castSi64ToUi8(int64_t a) { return (unsigned char)a; }
63 unsigned char castUi32ToUi8(uint32_t a) { return (unsigned char)a; }
64 unsigned char castSi32ToUi8(int32_t a) { return (unsigned char)a; }
65 unsigned char castUi16ToUi8(unsigned short a) { return (unsigned char)a; }
66 unsigned char castSi16ToUi8(short a) { return (unsigned char)a; }
67 unsigned char castUi8ToUi8(unsigned char a) { return (unsigned char)a; }
68 unsigned char castSi8ToUi8(signed char a) { return (unsigned char)a; }
69 unsigned char castUi1ToUi8(bool a) { return (unsigned char)a; }
70 unsigned char castF64ToUi8(double a) { return (unsigned char)a; }
71 unsigned char castF32ToUi8(float a) { return (unsigned char)a; }
72
73 short castUi64ToSi16(uint64_t a) { return (short)a; }
74 short castSi64ToSi16(int64_t a) { return (short)a; }
75 short castUi32ToSi16(uint32_t a) { return (short)a; }
76 short castSi32ToSi16(int32_t a) { return (short)a; }
77 short castUi16ToSi16(unsigned short a) { return (short)a; }
78 short castSi16ToSi16(short a) { return (short)a; }
79 short castUi8ToSi16(unsigned char a) { return (short)a; }
80 short castSi8ToSi16(signed char a) { return (short)a; }
81 short castUi1ToSi16(bool a) { return (short)a; }
82 short castF64ToSi16(double a) { return (short)a; }
83 short castF32ToSi16(float a) { return (short)a; }
84
85 unsigned short castUi64ToUi16(uint64_t a) { return (unsigned short)a; }
86 unsigned short castSi64ToUi16(int64_t a) { return (unsigned short)a; }
87 unsigned short castUi32ToUi16(uint32_t a) { return (unsigned short)a; }
88 unsigned short castSi32ToUi16(int32_t a) { return (unsigned short)a; }
89 unsigned short castUi16ToUi16(unsigned short a) { return (unsigned short)a; }
90 unsigned short castSi16ToUi16(short a) { return (unsigned short)a; }
91 unsigned short castUi8ToUi16(unsigned char a) { return (unsigned short)a; }
92 unsigned short castSi8ToUi16(signed char a) { return (unsigned short)a; }
93 unsigned short castUi1ToUi16(bool a) { return (unsigned short)a; }
94 unsigned short castF64ToUi16(double a) { return (unsigned short)a; }
95 unsigned short castF32ToUi16(float a) { return (unsigned short)a; }
96
97 int32_t castUi64ToSi32(uint64_t a) { return (int32_t)a; }
98 int32_t castSi64ToSi32(int64_t a) { return (int32_t)a; }
99 int32_t castUi32ToSi32(uint32_t a) { return (int32_t)a; }
100 int32_t castSi32ToSi32(int32_t a) { return (int32_t)a; }
101 int32_t castUi16ToSi32(unsigned short a) { return (int32_t)a; }
102 int32_t castSi16ToSi32(short a) { return (int32_t)a; }
103 int32_t castUi8ToSi32(unsigned char a) { return (int32_t)a; }
104 int32_t castSi8ToSi32(signed char a) { return (int32_t)a; }
105 int32_t castUi1ToSi32(bool a) { return (int32_t)a; }
106 int32_t castF64ToSi32(double a) { return (int32_t)a; }
107 int32_t castF32ToSi32(float a) { return (int32_t)a; }
108
109 uint32_t castUi64ToUi32(uint64_t a) { return (uint32_t)a; }
110 uint32_t castSi64ToUi32(int64_t a) { return (uint32_t)a; }
111 uint32_t castUi32ToUi32(uint32_t a) { return (uint32_t)a; }
112 uint32_t castSi32ToUi32(int32_t a) { return (uint32_t)a; }
113 uint32_t castUi16ToUi32(unsigned short a) { return (uint32_t)a; }
114 uint32_t castSi16ToUi32(short a) { return (uint32_t)a; }
115 uint32_t castUi8ToUi32(unsigned char a) { return (uint32_t)a; }
116 uint32_t castSi8ToUi32(signed char a) { return (uint32_t)a; }
117 uint32_t castUi1ToUi32(bool a) { return (uint32_t)a; }
118 uint32_t castF64ToUi32(double a) { return (uint32_t)a; }
119 uint32_t castF32ToUi32(float a) { return (uint32_t)a; }
120
121 int64_t castUi64ToSi64(uint64_t a) { return (int64_t)a; }
122 int64_t castSi64ToSi64(int64_t a) { return (int64_t)a; }
123 int64_t castUi32ToSi64(uint32_t a) { return (int64_t)a; }
124 int64_t castSi32ToSi64(int32_t a) { return (int64_t)a; }
125 int64_t castUi16ToSi64(unsigned short a) { return (int64_t)a; }
126 int64_t castSi16ToSi64(short a) { return (int64_t)a; }
127 int64_t castUi8ToSi64(unsigned char a) { return (int64_t)a; }
128 int64_t castSi8ToSi64(signed char a) { return (int64_t)a; }
129 int64_t castUi1ToSi64(bool a) { return (int64_t)a; }
130 int64_t castF64ToSi64(double a) { return (int64_t)a; }
131 int64_t castF32ToSi64(float a) { return (int64_t)a; }
132
133 uint64_t castUi64ToUi64(uint64_t a) { return (uint64_t)a; }
134 uint64_t castSi64ToUi64(int64_t a) { return (uint64_t)a; }
135 uint64_t castUi32ToUi64(uint32_t a) { return (uint64_t)a; }
136 uint64_t castSi32ToUi64(int32_t a) { return (uint64_t)a; }
137 uint64_t castUi16ToUi64(unsigned short a) { return (uint64_t)a; }
138 uint64_t castSi16ToUi64(short a) { return (uint64_t)a; }
139 uint64_t castUi8ToUi64(unsigned char a) { return (uint64_t)a; }
140 uint64_t castSi8ToUi64(signed char a) { return (uint64_t)a; }
141 uint64_t castUi1ToUi64(bool a) { return (uint64_t)a; }
142 uint64_t castF64ToUi64(double a) { return (uint64_t)a; }
143 uint64_t castF32ToUi64(float a) { return (uint64_t)a; }
144
145 float castUi64ToF32(uint64_t a) { return (float)a; }
146 float castSi64ToF32(int64_t a) { return (float)a; }
147 float castUi32ToF32(uint32_t a) { return (float)a; }
148 float castSi32ToF32(int32_t a) { return (float)a; }
149 float castUi16ToF32(unsigned short a) { return (float)a; }
150 float castSi16ToF32(short a) { return (float)a; }
151 float castUi8ToF32(unsigned char a) { return (float)a; }
152 float castSi8ToF32(signed char a) { return (float)a; }
153 float castUi1ToF32(bool a) { return (float)a; }
154 float castF64ToF32(double a) { return (float)a; }
155 float castF32ToF32(float a) { return (float)a; }
156
157 double castUi64ToF64(uint64_t a) { return (double)a; }
158 double castSi64ToF64(int64_t a) { return (double)a; }
159 double castUi32ToF64(uint32_t a) { return (double)a; }
160 double castSi32ToF64(int32_t a) { return (double)a; }
161 double castUi16ToF64(unsigned short a) { return (double)a; }
162 double castSi16ToF64(short a) { return (double)a; }
163 double castUi8ToF64(unsigned char a) { return (double)a; }
164 double castSi8ToF64(signed char a) { return (double)a; }
165 double castUi1ToF64(bool a) { return (double)a; }
166 double castF64ToF64(double a) { return (double)a; }
167 double castF32ToF64(float a) { return (double)a; }
168
169 uint32_t castbits_F32ToUi32(float a) { return *(uint32_t *)&a; }
170 float castbits_Ui32ToF32(uint32_t a) { return *(float *)&a; }
171 uint64_t castbits_F64ToUi64(double a) { return *(uint64_t *)&a; }
172 double castbits_Ui64ToF64(uint64_t a) { return *(double *)&a; }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698