Revision c5d04e99
b/target-sparc/helper.h | ||
---|---|---|
115 | 115 |
F_HELPER_0_0(dmulq); |
116 | 116 |
|
117 | 117 |
DEF_HELPER(float32, helper_fnegs, (float32 src)) |
118 |
F_HELPER_DQ_0_0(ito); |
|
118 |
F_HELPER_0_0(itod); |
|
119 |
DEF_HELPER(void, helper_fitoq, (int32_t src)) |
|
119 | 120 |
|
120 | 121 |
DEF_HELPER(float32, helper_fitos, (int32_t src)) |
121 | 122 |
|
... | ... | |
126 | 127 |
#endif |
127 | 128 |
F_HELPER_0_0(dtos); |
128 | 129 |
F_HELPER_0_0(stod); |
129 |
F_HELPER_0_0(qtos);
|
|
130 |
F_HELPER_0_0(stoq);
|
|
130 |
DEF_HELPER(float32, helper_fqtos, (void))
|
|
131 |
DEF_HELPER(void, helper_fstoq, (float32 src))
|
|
131 | 132 |
F_HELPER_0_0(qtod); |
132 | 133 |
F_HELPER_0_0(dtoq); |
133 | 134 |
DEF_HELPER(int32_t, helper_fstoi, (float32 src)) |
134 | 135 |
F_HELPER_0_0(dtoi); |
135 |
F_HELPER_0_0(qtoi);
|
|
136 |
DEF_HELPER(int32_t, helper_fqtoi, (void))
|
|
136 | 137 |
#ifdef TARGET_SPARC64 |
137 | 138 |
F_HELPER_0_0(stox); |
138 | 139 |
F_HELPER_0_0(dtox); |
b/target-sparc/op_helper.c | ||
---|---|---|
148 | 148 |
DT0 = int32_to_float64(*((int32_t *)&FT1), &env->fp_status); |
149 | 149 |
} |
150 | 150 |
|
151 |
F_HELPER(ito, q)
|
|
151 |
void helper_fitoq(int32_t src)
|
|
152 | 152 |
{ |
153 |
QT0 = int32_to_float128(*((int32_t *)&FT1), &env->fp_status);
|
|
153 |
QT0 = int32_to_float128(src, &env->fp_status);
|
|
154 | 154 |
} |
155 | 155 |
|
156 | 156 |
#ifdef TARGET_SPARC64 |
... | ... | |
182 | 182 |
DT0 = float32_to_float64(FT1, &env->fp_status); |
183 | 183 |
} |
184 | 184 |
|
185 |
void helper_fqtos(void)
|
|
185 |
float32 helper_fqtos(void)
|
|
186 | 186 |
{ |
187 |
FT0 = float128_to_float32(QT1, &env->fp_status);
|
|
187 |
return float128_to_float32(QT1, &env->fp_status);
|
|
188 | 188 |
} |
189 | 189 |
|
190 |
void helper_fstoq(void)
|
|
190 |
void helper_fstoq(float32 src)
|
|
191 | 191 |
{ |
192 |
QT0 = float32_to_float128(FT1, &env->fp_status);
|
|
192 |
QT0 = float32_to_float128(src, &env->fp_status);
|
|
193 | 193 |
} |
194 | 194 |
|
195 | 195 |
void helper_fqtod(void) |
... | ... | |
213 | 213 |
*((int32_t *)&FT0) = float64_to_int32_round_to_zero(DT1, &env->fp_status); |
214 | 214 |
} |
215 | 215 |
|
216 |
void helper_fqtoi(void)
|
|
216 |
int32_t helper_fqtoi(void)
|
|
217 | 217 |
{ |
218 |
*((int32_t *)&FT0) = float128_to_int32_round_to_zero(QT1, &env->fp_status);
|
|
218 |
return float128_to_int32_round_to_zero(QT1, &env->fp_status);
|
|
219 | 219 |
} |
220 | 220 |
|
221 | 221 |
#ifdef TARGET_SPARC64 |
b/target-sparc/translate.c | ||
---|---|---|
2511 | 2511 |
CHECK_FPU_FEATURE(dc, FLOAT128); |
2512 | 2512 |
gen_op_load_fpr_QT1(QFPREG(rs2)); |
2513 | 2513 |
gen_clear_float_exceptions(); |
2514 |
tcg_gen_helper_0_0(helper_fqtos);
|
|
2514 |
tcg_gen_helper_1_0(helper_fqtos, cpu_tmp32);
|
|
2515 | 2515 |
tcg_gen_helper_0_0(helper_check_ieee_exceptions); |
2516 |
gen_op_store_FT0_fpr(rd);
|
|
2516 |
tcg_gen_mov_i32(cpu_fpr[rd], cpu_tmp32);
|
|
2517 | 2517 |
break; |
2518 | 2518 |
case 0xc8: |
2519 | 2519 |
gen_op_load_fpr_FT1(rs2); |
... | ... | |
2535 | 2535 |
break; |
2536 | 2536 |
case 0xcc: /* fitoq */ |
2537 | 2537 |
CHECK_FPU_FEATURE(dc, FLOAT128); |
2538 |
gen_op_load_fpr_FT1(rs2); |
|
2539 |
tcg_gen_helper_0_0(helper_fitoq); |
|
2538 |
tcg_gen_helper_0_1(helper_fitoq, cpu_fpr[rs2]); |
|
2540 | 2539 |
gen_op_store_QT0_fpr(QFPREG(rd)); |
2541 | 2540 |
break; |
2542 | 2541 |
case 0xcd: /* fstoq */ |
2543 | 2542 |
CHECK_FPU_FEATURE(dc, FLOAT128); |
2544 |
gen_op_load_fpr_FT1(rs2); |
|
2545 |
tcg_gen_helper_0_0(helper_fstoq); |
|
2543 |
tcg_gen_helper_0_1(helper_fstoq, cpu_fpr[rs2]); |
|
2546 | 2544 |
gen_op_store_QT0_fpr(QFPREG(rd)); |
2547 | 2545 |
break; |
2548 | 2546 |
case 0xce: /* fdtoq */ |
... | ... | |
2569 | 2567 |
CHECK_FPU_FEATURE(dc, FLOAT128); |
2570 | 2568 |
gen_op_load_fpr_QT1(QFPREG(rs2)); |
2571 | 2569 |
gen_clear_float_exceptions(); |
2572 |
tcg_gen_helper_0_0(helper_fqtoi);
|
|
2570 |
tcg_gen_helper_1_0(helper_fqtoi, cpu_tmp32);
|
|
2573 | 2571 |
tcg_gen_helper_0_0(helper_check_ieee_exceptions); |
2574 |
gen_op_store_FT0_fpr(rd);
|
|
2572 |
tcg_gen_mov_i32(cpu_fpr[rd], cpu_tmp32);
|
|
2575 | 2573 |
break; |
2576 | 2574 |
#ifdef TARGET_SPARC64 |
2577 | 2575 |
case 0x2: /* V9 fmovd */ |
Also available in: Unified diff