Revision 1f587329 target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
97 | 97 |
{ |
98 | 98 |
DT0 = float64_abs(DT1); |
99 | 99 |
} |
100 |
|
|
101 |
#if defined(CONFIG_USER_ONLY) |
|
102 |
void do_fabsq(void) |
|
103 |
{ |
|
104 |
QT0 = float128_abs(QT1); |
|
105 |
} |
|
106 |
#endif |
|
100 | 107 |
#endif |
101 | 108 |
|
102 | 109 |
void do_fsqrts(void) |
... | ... | |
113 | 120 |
check_ieee_exceptions(); |
114 | 121 |
} |
115 | 122 |
|
123 |
#if defined(CONFIG_USER_ONLY) |
|
124 |
void do_fsqrtq(void) |
|
125 |
{ |
|
126 |
set_float_exception_flags(0, &env->fp_status); |
|
127 |
QT0 = float128_sqrt(QT1, &env->fp_status); |
|
128 |
check_ieee_exceptions(); |
|
129 |
} |
|
130 |
#endif |
|
131 |
|
|
116 | 132 |
#define GEN_FCMP(name, size, reg1, reg2, FS, TRAP) \ |
117 | 133 |
void glue(do_, name) (void) \ |
118 | 134 |
{ \ |
... | ... | |
148 | 164 |
GEN_FCMP(fcmpes, float32, FT0, FT1, 0, 1); |
149 | 165 |
GEN_FCMP(fcmped, float64, DT0, DT1, 0, 1); |
150 | 166 |
|
167 |
#ifdef CONFIG_USER_ONLY |
|
168 |
GEN_FCMP(fcmpq, float128, QT0, QT1, 0, 0); |
|
169 |
GEN_FCMP(fcmpeq, float128, QT0, QT1, 0, 1); |
|
170 |
#endif |
|
171 |
|
|
151 | 172 |
#ifdef TARGET_SPARC64 |
152 | 173 |
GEN_FCMP(fcmps_fcc1, float32, FT0, FT1, 22, 0); |
153 | 174 |
GEN_FCMP(fcmpd_fcc1, float64, DT0, DT1, 22, 0); |
... | ... | |
166 | 187 |
|
167 | 188 |
GEN_FCMP(fcmpes_fcc3, float32, FT0, FT1, 26, 1); |
168 | 189 |
GEN_FCMP(fcmped_fcc3, float64, DT0, DT1, 26, 1); |
190 |
#ifdef CONFIG_USER_ONLY |
|
191 |
GEN_FCMP(fcmpq_fcc1, float128, QT0, QT1, 22, 0); |
|
192 |
GEN_FCMP(fcmpq_fcc2, float128, QT0, QT1, 24, 0); |
|
193 |
GEN_FCMP(fcmpq_fcc3, float128, QT0, QT1, 26, 0); |
|
194 |
GEN_FCMP(fcmpeq_fcc1, float128, QT0, QT1, 22, 1); |
|
195 |
GEN_FCMP(fcmpeq_fcc2, float128, QT0, QT1, 24, 1); |
|
196 |
GEN_FCMP(fcmpeq_fcc3, float128, QT0, QT1, 26, 1); |
|
197 |
#endif |
|
169 | 198 |
#endif |
170 | 199 |
|
171 | 200 |
#ifndef TARGET_SPARC64 |
... | ... | |
1374 | 1403 |
case 8: |
1375 | 1404 |
*((int64_t *)&DT0) = T1; |
1376 | 1405 |
break; |
1406 |
#if defined(CONFIG_USER_ONLY) |
|
1407 |
case 16: |
|
1408 |
// XXX |
|
1409 |
break; |
|
1410 |
#endif |
|
1377 | 1411 |
} |
1378 | 1412 |
T1 = tmp_T1; |
1379 | 1413 |
} |
... | ... | |
1417 | 1451 |
case 8: |
1418 | 1452 |
T1 = *((int64_t *)&DT0); |
1419 | 1453 |
break; |
1454 |
#if defined(CONFIG_USER_ONLY) |
|
1455 |
case 16: |
|
1456 |
// XXX |
|
1457 |
break; |
|
1458 |
#endif |
|
1420 | 1459 |
} |
1421 | 1460 |
helper_st_asi(asi, size); |
1422 | 1461 |
T1 = tmp_T1; |
Also available in: Unified diff