Skip to content
Snippets Groups Projects
  1. Sep 16, 2023
  2. Jul 01, 2023
  3. Jun 26, 2023
    • Alex Bennée's avatar
      softfloat: use QEMU_FLATTEN to avoid mistaken isra inlining · 1d3daf95
      Alex Bennée authored
      
      Balton discovered that asserts for the extract/deposit calls had a
      significant impact on a lame benchmark on qemu-ppc. Replicating with:
      
        ./qemu-ppc64 ~/lsrc/tests/lame.git-svn/builds/ppc64/frontend/lame \
          -h pts-trondheim-3.wav pts-trondheim-3.mp3
      
      showed up the pack/unpack routines not eliding the assert checks as it
      should have done causing them to prominently figure in the profile:
      
        11.44%  qemu-ppc64  qemu-ppc64               [.] unpack_raw64.isra.0
        11.03%  qemu-ppc64  qemu-ppc64               [.] parts64_uncanon_normal
         8.26%  qemu-ppc64  qemu-ppc64               [.] helper_compute_fprf_float64
         6.75%  qemu-ppc64  qemu-ppc64               [.] do_float_check_status
         5.34%  qemu-ppc64  qemu-ppc64               [.] parts64_muladd
         4.75%  qemu-ppc64  qemu-ppc64               [.] pack_raw64.isra.0
         4.38%  qemu-ppc64  qemu-ppc64               [.] parts64_canonicalize
         3.62%  qemu-ppc64  qemu-ppc64               [.] float64r32_round_pack_canonical
      
      After this patch the same test runs 31 seconds faster with a profile
      where the generated code dominates more:
      
      +   14.12%     0.00%  qemu-ppc64  [unknown]                [.] 0x0000004000619420
      +   13.30%     0.00%  qemu-ppc64  [unknown]                [.] 0x0000004000616850
      +   12.58%    12.19%  qemu-ppc64  qemu-ppc64               [.] parts64_uncanon_normal
      +   10.62%     0.00%  qemu-ppc64  [unknown]                [.] 0x000000400061bf70
      +    9.91%     9.73%  qemu-ppc64  qemu-ppc64               [.] helper_compute_fprf_float64
      +    7.84%     7.82%  qemu-ppc64  qemu-ppc64               [.] do_float_check_status
      +    6.47%     5.78%  qemu-ppc64  qemu-ppc64               [.] parts64_canonicalize.constprop.0
      +    6.46%     0.00%  qemu-ppc64  [unknown]                [.] 0x0000004000620130
      +    6.42%     0.00%  qemu-ppc64  [unknown]                [.] 0x0000004000619400
      +    6.17%     6.04%  qemu-ppc64  qemu-ppc64               [.] parts64_muladd
      +    5.85%     0.00%  qemu-ppc64  [unknown]                [.] 0x00000040006167e0
      +    5.74%     0.00%  qemu-ppc64  [unknown]                [.] 0x0000b693fcffffd3
      +    5.45%     4.78%  qemu-ppc64  qemu-ppc64               [.] float64r32_round_pack_canonical
      
      Suggested-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-Id: <ec9cfe5a-d5f2-466d-34dc-c35817e7e010@linaro.org>
      [AJB: Patchified rth's suggestion]
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Cc: BALATON Zoltan <balaton@eik.bme.hu>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Tested-by: default avatarBALATON Zoltan <balaton@eik.bme.hu>
      Message-Id: <20230523131107.3680641-1-alex.bennee@linaro.org>
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      1d3daf95
  4. May 05, 2023
  5. Oct 17, 2022
  6. Aug 31, 2022
  7. Jul 19, 2022
  8. Apr 27, 2022
  9. Apr 20, 2022
  10. Dec 17, 2021
  11. Oct 29, 2021
  12. Sep 01, 2021
    • Peter Maydell's avatar
      softfloat: Remove assertion preventing silencing of NaN in default-NaN mode · 2c8cb588
      Peter Maydell authored
      
      In commit a777d603 we added an assertion to parts_silence_nan() that
      prohibits calling float*_silence_nan() when in default-NaN mode.
      This ties together a property of the output ("do we generate a default
      NaN when the result is a NaN?") with an operation on an input ("silence
      this input NaN").
      
      It's true that most of the time when in default-NaN mode you won't
      need to silence an input NaN, because you can just produce the
      default NaN as the result instead.  But some functions like
      float*_maxnum() are defined to be able to work with quiet NaNs, so
      silencing an input SNaN is still reasonable.  In particular, the
      upcoming implementation of MVE VMAXNMV would fall over this assertion
      if we didn't delete it.
      
      Delete the assertion.
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      2c8cb588
  13. Jun 16, 2021
  14. Jun 14, 2021
  15. Jun 11, 2021
  16. Jun 03, 2021
Loading