qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 4/5] target/mips: Refactor helpers for fp comparison instr


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v2 4/5] target/mips: Refactor helpers for fp comparison instructions
Date: Fri, 16 Oct 2020 22:17:35 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1

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.devel@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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]