<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/tools/llvm-mca/Views/TimelineView.cpp, branch users/nico/python-2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[llvm-mca][TimelineView] Skip invalid entries when printing the json output.</title>
<updated>2023-06-19T15:17:33+00:00</updated>
<author>
<name>Andrea Di Biagio</name>
<email>andrea.dibiagio@sony.com</email>
</author>
<published>2023-06-19T13:37:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=923dbb01ea6be1ec919d0b71b34551ae91169bc7'/>
<id>923dbb01ea6be1ec919d0b71b34551ae91169bc7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm-mca][timeline] Indicate output was stopped due to cycle limit.</title>
<updated>2021-10-14T18:10:09+00:00</updated>
<author>
<name>Daniel Sanders</name>
<email>daniel_l_sanders@apple.com</email>
</author>
<published>2021-10-12T22:44:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0a869ef3a844b3fcb64c5a1d9c7a5d4988b00c07'/>
<id>0a869ef3a844b3fcb64c5a1d9c7a5d4988b00c07</id>
<content type='text'>
It can be a bit confusing to stop with no explanation so we should indicate
when further output was prevented by the cycle limit.

Differential Revision: https://reviews.llvm.org/D111753
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It can be a bit confusing to stop with no explanation so we should indicate
when further output was prevented by the cycle limit.

Differential Revision: https://reviews.llvm.org/D111753
</pre>
</div>
</content>
</entry>
<entry>
<title>[MCA] Simplify the rounding logic used in TimelineView::printWaitTimeEntry.</title>
<updated>2021-08-07T10:59:41+00:00</updated>
<author>
<name>Andrea Di Biagio</name>
<email>andrea.dibiagio@sony.com</email>
</author>
<published>2021-08-07T10:39:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=45685a1fc4524579a25b03eb1a27e8fcb792afc7'/>
<id>45685a1fc4524579a25b03eb1a27e8fcb792afc7</id>
<content type='text'>
This is related to PR51392.

Before this patch, the timeline view was rounding doubles to the first decimal,
using a logic similar to this:

```
  double AverageTime = (double)Input / CumulativeExecutions;
  double Result = floor((AverageTime * 10) + 0.5) / 10
```

Here, Input and CumulativeExecutions are both unsigned integers.
The last operation is what effectively performs the rounding of AverageTime.

PR51392 has been raised because - under specific -m32 configurations of GCC -
one of the timeline tests reports slighlty different values (due to a different
rounding choice).

This patch tries to minimise the propagation of floating-point error by
hoisting the multiply by 10, so that it is performed on the unsigned.

```
  double AverageTime = (double)(Input * 10) / CumulativeExecutions;
  floor(AverageTime + 0.5) / 10
```

So we are trading a floating point multiply for a integer multiply (which can be
expanded using a simple MUL or using an `ADD + LEA` sequence). This decrease in
floating point operations executed should also help with decreasing the error in
the computation..

Strictly speaking, that computation will always be potentially subject to error
(depending on what values are passed in input). However, this patch should
improve the situation and make bug like PR51392 less frequent.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is related to PR51392.

Before this patch, the timeline view was rounding doubles to the first decimal,
using a logic similar to this:

```
  double AverageTime = (double)Input / CumulativeExecutions;
  double Result = floor((AverageTime * 10) + 0.5) / 10
```

Here, Input and CumulativeExecutions are both unsigned integers.
The last operation is what effectively performs the rounding of AverageTime.

PR51392 has been raised because - under specific -m32 configurations of GCC -
one of the timeline tests reports slighlty different values (due to a different
rounding choice).

This patch tries to minimise the propagation of floating-point error by
hoisting the multiply by 10, so that it is performed on the unsigned.

```
  double AverageTime = (double)(Input * 10) / CumulativeExecutions;
  floor(AverageTime + 0.5) / 10
```

So we are trading a floating point multiply for a integer multiply (which can be
expanded using a simple MUL or using an `ADD + LEA` sequence). This decrease in
floating point operations executed should also help with decreasing the error in
the computation..

Strictly speaking, that computation will always be potentially subject to error
(depending on what values are passed in input). However, this patch should
improve the situation and make bug like PR51392 less frequent.
</pre>
</div>
</content>
</entry>
<entry>
<title>[MCA] Allow unlimited cycles in the timeline view</title>
<updated>2021-06-24T11:54:57+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2021-06-24T10:00:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=beebe5a056b8d4d224b07c5039f8e6028a7afb4c'/>
<id>beebe5a056b8d4d224b07c5039f8e6028a7afb4c</id>
<content type='text'>
Change --max-timeline-cycles=0 to mean no limit on the number of cycles.
Use this in AMDGPU tests to show all instructions in the timeline view
instead of having it arbitrarily truncated.

Differential Revision: https://reviews.llvm.org/D104846
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change --max-timeline-cycles=0 to mean no limit on the number of cycles.
Use this in AMDGPU tests to show all instructions in the timeline view
instead of having it arbitrarily truncated.

Differential Revision: https://reviews.llvm.org/D104846
</pre>
</div>
</content>
</entry>
<entry>
<title>[MCA][TimelineView] Fixed a bug that was causing instructions outside of the timeline-max-cycles to still be printed.</title>
<updated>2021-06-23T22:05:49+00:00</updated>
<author>
<name>Patrick Holland</name>
<email>patrickeholland@gmail.com</email>
</author>
<published>2021-06-23T20:03:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=70040de32d73683938abef72515b736c5b6e68dc'/>
<id>70040de32d73683938abef72515b736c5b6e68dc</id>
<content type='text'>
Differential Revision: https://reviews.llvm.org/D104815
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Differential Revision: https://reviews.llvm.org/D104815
</pre>
</div>
</content>
</entry>
<entry>
<title>[MCA] [In-order pipeline] Fix for 0 latency instruction causing assertion to fail.</title>
<updated>2021-06-22T17:18:39+00:00</updated>
<author>
<name>Patrick Holland</name>
<email>patrickeholland@gmail.com</email>
</author>
<published>2021-06-21T02:12:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d03736455ceeeb8ce639b65b4965436297cf24a4'/>
<id>d03736455ceeeb8ce639b65b4965436297cf24a4</id>
<content type='text'>
0 latency instructions now get processed and retired properly within the in-order pipeline. Had to fix a bug within TimelineView.cpp as well that would show up when a 0 latency instruction was the first instruction in the source.

Differential Revision: https://reviews.llvm.org/D104675
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
0 latency instructions now get processed and retired properly within the in-order pipeline. Had to fix a bug within TimelineView.cpp as well that would show up when a 0 latency instruction was the first instruction in the source.

Differential Revision: https://reviews.llvm.org/D104675
</pre>
</div>
</content>
</entry>
<entry>
<title>[MCA] Disable RCU for InOrderIssueStage</title>
<updated>2021-03-24T10:54:04+00:00</updated>
<author>
<name>Andrew Savonichev</name>
<email>andrew.savonichev@gmail.com</email>
</author>
<published>2021-03-14T22:25:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=292da93d59a3688ffc95c10de7986472242e8f1d'/>
<id>292da93d59a3688ffc95c10de7986472242e8f1d</id>
<content type='text'>
This is a follow-up for:
D98604 [MCA] Ensure that writes occur in-order

When instructions are aligned by the order of writes, they retire
in-order naturally. There is no need for an RCU, so it is disabled.

Differential Revision: https://reviews.llvm.org/D98628
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a follow-up for:
D98604 [MCA] Ensure that writes occur in-order

When instructions are aligned by the order of writes, they retire
in-order naturally. There is no need for an RCU, so it is disabled.

Differential Revision: https://reviews.llvm.org/D98628
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm-mca] Initial implementation of serialization using JSON. The views</title>
<updated>2021-01-21T23:15:54+00:00</updated>
<author>
<name>Wolfgang Pieb</name>
<email>wolfgang_pieb@playstation.sony.com</email>
</author>
<published>2021-01-21T22:04:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d38be2ba0e4ebfed4c13ab79f3a8631011d185eb'/>
<id>d38be2ba0e4ebfed4c13ab79f3a8631011d185eb</id>
<content type='text'>
implemented at this time are Summary, Timeline, ResourcePressure and InstructionInfo.
Use --json on the command line to obtain JSON output.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
implemented at this time are Summary, Timeline, ResourcePressure and InstructionInfo.
Use --json on the command line to obtain JSON output.
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm-mca][NFC] Refactor handling of views that examine individual instructions,</title>
<updated>2020-08-25T19:12:37+00:00</updated>
<author>
<name>Wolfgang Pieb</name>
<email>wolfgang_pieb@playstation.sony.com</email>
</author>
<published>2020-08-21T22:52:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e02920fe55761aaa06b33caec381bc2a1c36ad1c'/>
<id>e02920fe55761aaa06b33caec381bc2a1c36ad1c</id>
<content type='text'>
including printing them.

Reviewers: andreadb, lebedev.ri

Differential Review: https://reviews.llvm.org/D86390

Introduces a new base class "InstructionView" that such views derive from.
Other views still use the "View" base class.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
including printing them.

Reviewers: andreadb, lebedev.ri

Differential Review: https://reviews.llvm.org/D86390

Introduces a new base class "InstructionView" that such views derive from.
Other views still use the "View" base class.
</pre>
</div>
</content>
</entry>
<entry>
<title>[MC] Add parameter `Address` to MCInstPrinter::printInst</title>
<updated>2020-01-07T04:42:22+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>maskray@google.com</email>
</author>
<published>2020-01-03T18:55:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=aa708763d30384c0da0b0779be96ba45f65773df'/>
<id>aa708763d30384c0da0b0779be96ba45f65773df</id>
<content type='text'>
printInst prints a branch/call instruction as `b offset` (there are many
variants on various targets) instead of `b address`.

It is a convention to use address instead of offset in most external
symbolizers/disassemblers. This difference makes `llvm-objdump -d`
output unsatisfactory.

Add `uint64_t Address` to printInst(), so that it can pass the argument to
printInstruction(). `raw_ostream &amp;OS` is moved to the last to be
consistent with other print* methods.

The next step is to pass `Address` to printInstruction() (generated by
tablegen from the instruction set description). We can gradually migrate
targets to print addresses instead of offsets.

In any case, downstream projects which don't know `Address` can pass 0 as
the argument.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D72172
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
printInst prints a branch/call instruction as `b offset` (there are many
variants on various targets) instead of `b address`.

It is a convention to use address instead of offset in most external
symbolizers/disassemblers. This difference makes `llvm-objdump -d`
output unsatisfactory.

Add `uint64_t Address` to printInst(), so that it can pass the argument to
printInstruction(). `raw_ostream &amp;OS` is moved to the last to be
consistent with other print* methods.

The next step is to pass `Address` to printInstruction() (generated by
tablegen from the instruction set description). We can gradually migrate
targets to print addresses instead of offsets.

In any case, downstream projects which don't know `Address` can pass 0 as
the argument.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D72172
</pre>
</div>
</content>
</entry>
</feed>
