This is an archive of the discontinued LLVM Phabricator instance.

[llvm-exegesis] Add predefined floating point values so we can test impact of special values on latency.
ClosedPublic

Authored by gchatelet on Sep 10 2018, 8:15 AM.

Details

Summary

This will be useful to generate many configurations and test instruction regimes (NaN, Inf, subnormal, normal).

Diff Detail

Repository
rL LLVM

Event Timeline

gchatelet created this revision.Sep 10 2018, 8:15 AM

I suppose that will help de-flake the latency measurements? (i *think* i have only seen the fp ops being flaky)

I suppose that will help de-flake the latency measurements? (i *think* i have only seen the fp ops being flaky)

Yes indeed. For instance SSE/AVX operations may have different regimes depending on their inputs.

Are these the only values you're going to test? For instance many fdiv units have fast paths for some (+/-)pow2 divisors.

Are these the only values you're going to test? For instance many fdiv units have fast paths for some (+/-)pow2 divisors.

I intend to add more as we see fit, but TWO sounds like a useful addition already.

gchatelet updated this revision to Diff 164850.Sep 11 2018, 5:07 AM
  • Add TWO as a predefined floating point value.
courbet added inline comments.Sep 12 2018, 1:25 AM
tools/llvm-exegesis/lib/RegisterValue.cpp
1 ↗(On Diff #164850)

missing header

6 ↗(On Diff #164850)

getFloatValue

tools/llvm-exegesis/lib/RegisterValue.h
35 ↗(On Diff #164850)

style: getFloatValueAsInteger

35 ↗(On Diff #164850)

I would call this bitcastFloatValue or something like this.

  • Add TWO as a predefined floating point value.

Cheers - no more comments.

gchatelet updated this revision to Diff 165729.Sep 17 2018, 2:37 AM
  • Address courbet's comments
gchatelet marked 4 inline comments as done.Sep 17 2018, 2:38 AM
courbet accepted this revision.Sep 17 2018, 2:58 AM
This revision is now accepted and ready to land.Sep 17 2018, 2:58 AM
This revision was automatically updated to reflect the committed changes.