<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/lib/Target/SystemZ, branch ortega-7.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=ortega-7.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=ortega-7.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2018-08-01T11:57:58+00:00</updated>
<entry>
<title>[SystemZ, TableGen] Fix shift count handling</title>
<updated>2018-08-01T11:57:58+00:00</updated>
<author>
<name>Ulrich Weigand</name>
<email>ulrich.weigand@de.ibm.com</email>
</author>
<published>2018-08-01T11:57:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=58a9786e8188eef25182a0cd6409e89f5216d45b'/>
<id>urn:sha1:58a9786e8188eef25182a0cd6409e89f5216d45b</id>
<content type='text'>
The DAG combiner logic to simplify AND masks in shift counts is invalid.
While it is true that the SystemZ shift instructions ignore all but the
low 6 bits of the shift count, it is still invalid to simplify the AND
masks while the DAG still uses the standard shift operators (which are
*not* defined to match the SystemZ instruction behavior).

Instead, this patch performs equivalent operations during instruction
selection. For completely removing the AND, this now happens via
additional DAG match patterns implemented by a multi-alternative
PatFrags. For simplifying a 32-bit AND to a 16-bit AND, the existing DAG
patterns were already mostly OK, they just needed an output XForm to
actually truncate the immediate value.

Unfortunately, the latter change also exposed a bug in TableGen: it
seems XForms are currently only handled correctly for direct operands of
the outermost operation node. This patch also fixes that bug by simply
recurring through the whole pattern. This should be NFC for all other
targets.

Differential Revision: https://reviews.llvm.org/D50096

llvm-svn: 338521
</content>
</entry>
<entry>
<title>[SystemZ]  Fix bad assert composition.</title>
<updated>2018-07-31T19:58:42+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulsson@linux.vnet.ibm.com</email>
</author>
<published>2018-07-31T19:58:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=590b1fc881ba24f9bf1610a1676eba831a77a5c2'/>
<id>urn:sha1:590b1fc881ba24f9bf1610a1676eba831a77a5c2</id>
<content type='text'>
Use '&amp;&amp;' before the string instead of '||'

llvm-svn: 338429
</content>
</entry>
<entry>
<title>[SystemZ] Improve decoding in case of instructions with four register operands.</title>
<updated>2018-07-31T13:00:42+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulsson@linux.vnet.ibm.com</email>
</author>
<published>2018-07-31T13:00:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2f12e45d5ae1adbc2b45f11191d0db6a0f8352b9'/>
<id>urn:sha1:2f12e45d5ae1adbc2b45f11191d0db6a0f8352b9</id>
<content type='text'>
Since z13, the max group size will be 2 if any μop has more than 3 register
sources.

This has been ignored sofar in the SystemZHazardRecognizer, but is now
handled by recognizing those instructions and adjusting the tracking of
decoding and the cost heuristic for grouping.

Review: Ulrich Weigand
https://reviews.llvm.org/D49847

llvm-svn: 338368
</content>
</entry>
<entry>
<title>Remove trailing space</title>
<updated>2018-07-30T19:41:25+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>maskray@google.com</email>
</author>
<published>2018-07-30T19:41:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f78650a8deca216b858827ff430972c114a60a7a'/>
<id>urn:sha1:f78650a8deca216b858827ff430972c114a60a7a</id>
<content type='text'>
sed -Ei 's/[[:space:]]+$//' include/**/*.{def,h,td} lib/**/*.{cpp,h}

llvm-svn: 338293
</content>
</entry>
<entry>
<title>[SystemZ]  Use tablegen loops in SchedModels</title>
<updated>2018-07-25T11:42:55+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulsson@linux.vnet.ibm.com</email>
</author>
<published>2018-07-25T11:42:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=374af8070eb8f1174d813c21a2d6eb2f25fa8406'/>
<id>urn:sha1:374af8070eb8f1174d813c21a2d6eb2f25fa8406</id>
<content type='text'>
NFC changes to make scheduler TableGen files more readable, by using loops
instead of a lot of similar defs with just e.g. a latency value that changes.

https://reviews.llvm.org/D49598
Review: Ulrich Weigand, Javed Abshar

llvm-svn: 337909
</content>
</entry>
<entry>
<title>[SystemZ]  Fix dumpSU() method in SystemZHazardRecognizer.</title>
<updated>2018-07-23T15:08:35+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulsson@linux.vnet.ibm.com</email>
</author>
<published>2018-07-23T15:08:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=59c94bec0d32ea62027f9d2adbc7cb8135bd2fbc'/>
<id>urn:sha1:59c94bec0d32ea62027f9d2adbc7cb8135bd2fbc</id>
<content type='text'>
Two minor issues: The new MCD SchedWrite name does not contain "Unit" like
all the others, so a check is needed. Also, print "LSU" instead of "LS".

Review: Ulrich Weigand
llvm-svn: 337700
</content>
</entry>
<entry>
<title>[SystemZ] Reimplent SchedModel IssueWidth and WriteRes/ReadAdvance mappings.</title>
<updated>2018-07-20T09:40:43+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulsson@linux.vnet.ibm.com</email>
</author>
<published>2018-07-20T09:40:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c88d3f6a992a69c88aaccf06f5f8dc0fec0943f9'/>
<id>urn:sha1:c88d3f6a992a69c88aaccf06f5f8dc0fec0943f9</id>
<content type='text'>
As a consequence of recent discussions
(http://lists.llvm.org/pipermail/llvm-dev/2018-May/123164.html), this patch
changes the SystemZ SchedModels so that the IssueWidth is 6, which is the
decoder capacity, and NumMicroOps become the number of decoder slots needed
per instruction.

In addition, the SchedWrite latencies now match the MachineInstructions
def-operand indexes, and ReadAdvances have been added on instructions with
one register operand and one memory operand.

Review: Ulrich Weigand
https://reviews.llvm.org/D47008

llvm-svn: 337538
</content>
</entry>
<entry>
<title>[DAGCombiner] Call SimplifyDemandedVectorElts from EXTRACT_VECTOR_ELT</title>
<updated>2018-07-17T09:45:35+00:00</updated>
<author>
<name>Simon Pilgrim</name>
<email>llvm-dev@redking.me.uk</email>
</author>
<published>2018-07-17T09:45:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e4d12bb2d61eb5d7401d6cab2f990e43d1081f2c'/>
<id>urn:sha1:e4d12bb2d61eb5d7401d6cab2f990e43d1081f2c</id>
<content type='text'>
If we are only extracting vector elements via EXTRACT_VECTOR_ELT(s) we may be able to use SimplifyDemandedVectorElts to avoid unnecessary vector ops.

Differential Revision: https://reviews.llvm.org/D49262

llvm-svn: 337258
</content>
</entry>
<entry>
<title>[TableGen] Support multi-alternative pattern fragments</title>
<updated>2018-07-13T13:18:00+00:00</updated>
<author>
<name>Ulrich Weigand</name>
<email>ulrich.weigand@de.ibm.com</email>
</author>
<published>2018-07-13T13:18:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c48aefb63bb307e1c5e843a05b01a55509c3528b'/>
<id>urn:sha1:c48aefb63bb307e1c5e843a05b01a55509c3528b</id>
<content type='text'>
A TableGen instruction record usually contains a DAG pattern that will
describe the SelectionDAG operation that can be implemented by this
instruction. However, there will be cases where several different DAG
patterns can all be implemented by the same instruction. The way to
represent this today is to write additional patterns in the Pattern
(or usually Pat) class that map those extra DAG patterns to the
instruction. This usually also works fine.

However, I've noticed cases where the current setup seems to require
quite a bit of extra (and duplicated) text in the target .td files.
For example, in the SystemZ back-end, there are quite a number of
instructions that can implement an "add-with-overflow" operation.
The same instructions also need to be used to implement just plain
addition (simply ignoring the extra overflow output). The current
solution requires creating extra Pat pattern for every instruction,
duplicating the information about which particular add operands
map best to which particular instruction.

This patch enhances TableGen to support a new PatFrags class, which
can be used to encapsulate multiple alternative patterns that may
all match to the same instruction.  It operates the same way as the
existing PatFrag class, except that it accepts a list of DAG patterns
to match instead of just a single one.  As an example, we can now define
a PatFrags to match either an "add-with-overflow" or a regular add
operation:

  def z_sadd : PatFrags&lt;(ops node:$src1, node:$src2),
                        [(z_saddo node:$src1, node:$src2),
                         (add node:$src1, node:$src2)]&gt;;

and then use this in the add instruction pattern:

  defm AR : BinaryRRAndK&lt;"ar", 0x1A, 0xB9F8, z_sadd, GR32, GR32&gt;;

These SystemZ target changes are implemented here as well.


Note that PatFrag is now defined as a subclass of PatFrags, which
means that some users of internals of PatFrag need to be updated.
(E.g. instead of using PatFrag.Fragment you now need to use
!head(PatFrag.Fragments).)


The implementation is based on the following main ideas:
- InlinePatternFragments may now replace each original pattern
  with several result patterns, not just one.
- parseInstructionPattern delays calling InlinePatternFragments
  and InferAllTypes.  Instead, it extracts a single DAG match
  pattern from the main instruction pattern.
- Processing of the DAG match pattern part of the main instruction
  pattern now shares most code with processing match patterns from
  the Pattern class.
- Direct use of main instruction patterns in InferFromPattern and
  EmitResultInstructionAsOperand is removed; everything now operates
  solely on DAG match patterns.


Reviewed by: hfinkel

Differential Revision: https://reviews.llvm.org/D48545

llvm-svn: 336999
</content>
</entry>
<entry>
<title>[SystemZ]  Build Load And Test from scratch in convertToLoadAndTest.</title>
<updated>2018-06-07T05:59:07+00:00</updated>
<author>
<name>Jonas Paulsson</name>
<email>paulsson@linux.vnet.ibm.com</email>
</author>
<published>2018-06-07T05:59:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e80d405760f9c35d4d85b657701605baca8cb000'/>
<id>urn:sha1:e80d405760f9c35d4d85b657701605baca8cb000</id>
<content type='text'>
This is needed to get CC operand in right place, as expected by the
SchedModel.

Review: Ulrich Weigand
https://reviews.llvm.org/D47820

llvm-svn: 334161
</content>
</entry>
</feed>
