MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / FSCALE

Method FSCALE

source/emulation/cpu/common/fpu.cpp:1024–1069  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1022// NaN NaN NaN NaN NaN NaN NaN NaN
1023
1024void FPU::FSCALE() {
1025 // :TODO: what about a cached version
1026 extFloat80_t& d0 = getReg(top);
1027 extFloat80_t& d1 = getReg(STV(1));
1028 if (F80_isinf(d0)) {
1029 if (F80_isPosInf(d1)) {
1030 return; // keep same
1031 } else if (F80_isNegInf(d1)) {
1032 d0 = fx80_nan;
1033 return;
1034 }
1035 }
1036 if (F80_isPosInf(d1) && F80_isfinite(d0)) {
1037 if (F80_iszero(d0)) {
1038 d0 = fx80_nan;
1039 } else if (extF80_lt(d0, fx80_zero)) {
1040 d0 = fx80_ninf;
1041 } else {
1042 d0 = fx80_inf;
1043 }
1044 return;
1045 }
1046 if (F80_isNegInf(d1)) {
1047 if (F80_isfinite(d0)) {
1048 if (extF80_lt(d0, fx80_zero)) {
1049 d0 = fx80_neg_zero;
1050 } else {
1051 d0 = fx80_zero;
1052 }
1053 } else {
1054 d0 = fx80_nan;
1055 }
1056 }
1057 if (F80_isnan(d1)) {
1058 d0 = fx80_nan;
1059 return;
1060 }
1061 long2Double d;
1062 long2Double d2;
1063 d.l = extF80_to_f64(d0).v;
1064 d2.l = extF80_to_f64(d1).v;
1065 d.d = d.d * pow(2.0, (double)(S64)d2.d);
1066 float64_sf f;
1067 f.v = d.l;
1068 d0 = f64_to_extF80(f);
1069}
1070
1071void FPU::FSIN() {
1072 if (isRegCached[top]) {

Callers 1

common_FSCALEFunction · 0.80

Calls 10

F80_isinfFunction · 0.85
F80_isPosInfFunction · 0.85
F80_isNegInfFunction · 0.85
F80_isfiniteFunction · 0.85
F80_iszeroFunction · 0.85
extF80_ltFunction · 0.85
F80_isnanFunction · 0.85
extF80_to_f64Function · 0.85
powFunction · 0.85
f64_to_extF80Function · 0.85

Tested by

no test coverage detected