On 10/9/20 4:47 PM, Philippe Mathieu-Daudé wrote:
Hi Aleksandar,
On 10/7/20 10:37 PM, Aleksandar Markovic wrote:
This change causes slighlty better performance of emulation of fp
comparison instructions via better compiler optimization of refactored
code. The functionality is otherwise unchanged.
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.de...@gmail.com>
---
target/mips/fpu_helper.c | 56
+++++++++++++++++++++++++++---------------------
1 file changed, 32 insertions(+), 24 deletions(-)
[...]
/*
@@ -2080,12 +2088,12 @@ uint64_t helper_r6_cmp_d_ ## op(CPUMIPSState
*env, uint64_t fdt0, \
{ \
uint64_t c; \
c = cond; \
- update_fcr31(env, GETPC()); \
if (c) { \
return -1; \
} else { \
return 0; \
} \
+ update_fcr31(env, GETPC()); \
Isn't it now never called (dead code)?
Confirmed:
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_af’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2103:1: note: in expansion of macro ‘FOP_CONDN_D’
2103 | FOP_CONDN_D(af, (float64_unordered_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
Compiling C object libqemu-mips-softmmu.fa.p/target_mips_dsp_helper.c.o
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_un’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2105:1: note: in expansion of macro ‘FOP_CONDN_D’
2105 | FOP_CONDN_D(un, (float64_unordered_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_eq’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2107:1: note: in expansion of macro ‘FOP_CONDN_D’
2107 | FOP_CONDN_D(eq, (float64_eq_quiet(fdt0, fdt1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_ueq’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2109:1: note: in expansion of macro ‘FOP_CONDN_D’
2109 | FOP_CONDN_D(ueq, (float64_unordered_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_lt’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2113:1: note: in expansion of macro ‘FOP_CONDN_D’
2113 | FOP_CONDN_D(lt, (float64_lt_quiet(fdt0, fdt1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_ult’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2115:1: note: in expansion of macro ‘FOP_CONDN_D’
2115 | FOP_CONDN_D(ult, (float64_unordered_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_le’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2119:1: note: in expansion of macro ‘FOP_CONDN_D’
2119 | FOP_CONDN_D(le, (float64_le_quiet(fdt0, fdt1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_ule’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2121:1: note: in expansion of macro ‘FOP_CONDN_D’
2121 | FOP_CONDN_D(ule, (float64_unordered_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_saf’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2129:1: note: in expansion of macro ‘FOP_CONDN_D’
2129 | FOP_CONDN_D(saf, (float64_unordered(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sun’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2131:1: note: in expansion of macro ‘FOP_CONDN_D’
2131 | FOP_CONDN_D(sun, (float64_unordered(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_seq’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2133:1: note: in expansion of macro ‘FOP_CONDN_D’
2133 | FOP_CONDN_D(seq, (float64_eq(fdt0, fdt1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sueq’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2135:1: note: in expansion of macro ‘FOP_CONDN_D’
2135 | FOP_CONDN_D(sueq, (float64_unordered(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_slt’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2139:1: note: in expansion of macro ‘FOP_CONDN_D’
2139 | FOP_CONDN_D(slt, (float64_lt(fdt0, fdt1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sult’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2141:1: note: in expansion of macro ‘FOP_CONDN_D’
2141 | FOP_CONDN_D(sult, (float64_unordered(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sle’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2145:1: note: in expansion of macro ‘FOP_CONDN_D’
2145 | FOP_CONDN_D(sle, (float64_le(fdt0, fdt1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sule’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2147:1: note: in expansion of macro ‘FOP_CONDN_D’
2147 | FOP_CONDN_D(sule, (float64_unordered(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_or’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2151:1: note: in expansion of macro ‘FOP_CONDN_D’
2151 | FOP_CONDN_D(or, (float64_le_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_une’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2155:1: note: in expansion of macro ‘FOP_CONDN_D’
2155 | FOP_CONDN_D(une, (float64_unordered_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_ne’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2161:1: note: in expansion of macro ‘FOP_CONDN_D’
2161 | FOP_CONDN_D(ne, (float64_lt_quiet(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sor’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2165:1: note: in expansion of macro ‘FOP_CONDN_D’
2165 | FOP_CONDN_D(sor, (float64_le(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sune’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2169:1: note: in expansion of macro ‘FOP_CONDN_D’
2169 | FOP_CONDN_D(sune, (float64_unordered(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_d_sne’:
target/mips/fpu_helper.c:2097:1: error: control reaches end of non-void
function [-Werror=return-type]
2097 | }
| ^
target/mips/fpu_helper.c:2175:1: note: in expansion of macro ‘FOP_CONDN_D’
2175 | FOP_CONDN_D(sne, (float64_lt(fdt1, fdt0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_af’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2198:1: note: in expansion of macro ‘FOP_CONDN_S’
2198 | FOP_CONDN_S(af, (float32_unordered_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_un’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2200:1: note: in expansion of macro ‘FOP_CONDN_S’
2200 | FOP_CONDN_S(un, (float32_unordered_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_eq’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2202:1: note: in expansion of macro ‘FOP_CONDN_S’
2202 | FOP_CONDN_S(eq, (float32_eq_quiet(fst0, fst1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_ueq’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2204:1: note: in expansion of macro ‘FOP_CONDN_S’
2204 | FOP_CONDN_S(ueq, (float32_unordered_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_lt’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2208:1: note: in expansion of macro ‘FOP_CONDN_S’
2208 | FOP_CONDN_S(lt, (float32_lt_quiet(fst0, fst1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_ult’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2210:1: note: in expansion of macro ‘FOP_CONDN_S’
2210 | FOP_CONDN_S(ult, (float32_unordered_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_le’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2214:1: note: in expansion of macro ‘FOP_CONDN_S’
2214 | FOP_CONDN_S(le, (float32_le_quiet(fst0, fst1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_ule’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2216:1: note: in expansion of macro ‘FOP_CONDN_S’
2216 | FOP_CONDN_S(ule, (float32_unordered_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_saf’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2224:1: note: in expansion of macro ‘FOP_CONDN_S’
2224 | FOP_CONDN_S(saf, (float32_unordered(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sun’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2226:1: note: in expansion of macro ‘FOP_CONDN_S’
2226 | FOP_CONDN_S(sun, (float32_unordered(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_seq’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2228:1: note: in expansion of macro ‘FOP_CONDN_S’
2228 | FOP_CONDN_S(seq, (float32_eq(fst0, fst1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sueq’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2230:1: note: in expansion of macro ‘FOP_CONDN_S’
2230 | FOP_CONDN_S(sueq, (float32_unordered(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_slt’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2234:1: note: in expansion of macro ‘FOP_CONDN_S’
2234 | FOP_CONDN_S(slt, (float32_lt(fst0, fst1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sult’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2236:1: note: in expansion of macro ‘FOP_CONDN_S’
2236 | FOP_CONDN_S(sult, (float32_unordered(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sle’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2240:1: note: in expansion of macro ‘FOP_CONDN_S’
2240 | FOP_CONDN_S(sle, (float32_le(fst0, fst1,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sule’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2242:1: note: in expansion of macro ‘FOP_CONDN_S’
2242 | FOP_CONDN_S(sule, (float32_unordered(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_or’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2246:1: note: in expansion of macro ‘FOP_CONDN_S’
2246 | FOP_CONDN_S(or, (float32_le_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_une’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2250:1: note: in expansion of macro ‘FOP_CONDN_S’
2250 | FOP_CONDN_S(une, (float32_unordered_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_ne’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2256:1: note: in expansion of macro ‘FOP_CONDN_S’
2256 | FOP_CONDN_S(ne, (float32_lt_quiet(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sor’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2260:1: note: in expansion of macro ‘FOP_CONDN_S’
2260 | FOP_CONDN_S(sor, (float32_le(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sune’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2264:1: note: in expansion of macro ‘FOP_CONDN_S’
2264 | FOP_CONDN_S(sune, (float32_unordered(fst1, fst0,
| ^~~~~~~~~~~
target/mips/fpu_helper.c: In function ‘helper_r6_cmp_s_sne’:
target/mips/fpu_helper.c:2192:1: error: control reaches end of non-void
function [-Werror=return-type]
2192 | }
| ^
target/mips/fpu_helper.c:2270:1: note: in expansion of macro ‘FOP_CONDN_S’
2270 | FOP_CONDN_S(sne, (float32_lt(fst1, fst0,
| ^~~~~~~~~~~
Compiling C object libqemu-mips-softmmu.fa.p/target_mips_cpu.c.o
cc1: all warnings being treated as errors
Makefile.ninja:3848: recipe for target
'libqemu-mips-softmmu.fa.p/target_mips_fpu_helper.c.o' failed
make: *** [libqemu-mips-softmmu.fa.p/target_mips_fpu_helper.c.o] Error 1