<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm/test/Analysis/CostModel, branch stable</title>
<subtitle>http://llvm.org</subtitle>
<id>https://git.amat.us/llvm/atom/test/Analysis/CostModel?h=stable</id>
<link rel='self' href='https://git.amat.us/llvm/atom/test/Analysis/CostModel?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/'/>
<updated>2013-04-01T10:23:49Z</updated>
<entry>
<title>X86TTI: Add accurate costs for itofp operations, based on the actual instruction counts.</title>
<updated>2013-04-01T10:23:49Z</updated>
<author>
<name>Benjamin Kramer</name>
<email>benny.kra@googlemail.com</email>
</author>
<published>2013-04-01T10:23:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=13497b3aa7589fc4f9e924f850a7e5151e9ddd2f'/>
<id>urn:sha1:13497b3aa7589fc4f9e924f850a7e5151e9ddd2f</id>
<content type='text'>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178459 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Correct cost model for vector shift on AVX2</title>
<updated>2013-03-20T22:01:10Z</updated>
<author>
<name>Michael Liao</name>
<email>michael.liao@intel.com</email>
</author>
<published>2013-03-20T22:01:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=f74e9bf650d7c40d595d3bb60e3c901e2bccec4b'/>
<id>urn:sha1:f74e9bf650d7c40d595d3bb60e3c901e2bccec4b</id>
<content type='text'>
- After moving logic recognizing vector shift with scalar amount from
  DAG combining into DAG lowering, we declare to customize all vector
  shifts even vector shift on AVX is legal. As a result, the cost model
  needs special tuning to identify these legal cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177586 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Optimize sext &lt;4 x i8&gt; and &lt;4 x i16&gt; to &lt;4 x i64&gt;.</title>
<updated>2013-03-19T18:38:27Z</updated>
<author>
<name>Nadav Rotem</name>
<email>nrotem@apple.com</email>
</author>
<published>2013-03-19T18:38:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=b05130e1b20ed17ae9d5ab3351933babd27213e1'/>
<id>urn:sha1:b05130e1b20ed17ae9d5ab3351933babd27213e1</id>
<content type='text'>
Patch by Ahmad, Muhammad T &lt;muhammad.t.ahmad@intel.com&gt;



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177421 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>Improve long vector sext/zext lowering on ARM</title>
<updated>2013-03-19T08:15:38Z</updated>
<author>
<name>Renato Golin</name>
<email>renato.golin@linaro.org</email>
</author>
<published>2013-03-19T08:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=5ad5f5931e34d5be410b1e901640bc1c2d308612'/>
<id>urn:sha1:5ad5f5931e34d5be410b1e901640bc1c2d308612</id>
<content type='text'>
The ARM backend currently has poor codegen for long sext/zext
operations, such as v8i8 -&gt; v8i32. This patch addresses this
by performing a custom expansion in ARMISelLowering. It also
adds/changes the cost of such lowering in ARMTTI.

This partially addresses PR14867.

Patch by Pete Couperus

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177380 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>ARM cost model: Make some vector integer to float casts cheaper</title>
<updated>2013-03-18T22:47:09Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-03-18T22:47:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=bf37bf9e21653f2439960d906a9c28cc19042bb0'/>
<id>urn:sha1:bf37bf9e21653f2439960d906a9c28cc19042bb0</id>
<content type='text'>
The default logic marks them as too expensive.

For example, before this patch we estimated:
  cost of 16 for instruction:   %r = uitofp &lt;4 x i16&gt; %v0 to &lt;4 x float&gt;

While this translates to:
  vmovl.u16 q8, d16
  vcvt.f32.u32  q8, q8

All other costs are left to the values assigned by the fallback logic. Theses
costs are mostly reasonable in the sense that they get progressively more
expensive as the instruction sequences emitted get longer.

radar://13445992

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177334 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>ARM cost model: Correct cost for some cheap float to integer conversions</title>
<updated>2013-03-18T22:47:06Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-03-18T22:47:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=01f25710148721f9fc2dece5eec17899ca414bcc'/>
<id>urn:sha1:01f25710148721f9fc2dece5eec17899ca414bcc</id>
<content type='text'>
Fix cost of some "cheap" cast instructions. Before this patch we used to
estimate for example:
  cost of 16 for instruction:   %r = fptoui &lt;4 x float&gt; %v0 to &lt;4 x i16&gt;

While we would emit:
  vcvt.s32.f32  q8, q8
  vmovn.i32 d16, q8
  vuzp.8  d16, d17

All other costs are left to the values assigned by the fallback logic. Theses
costs are mostly reasonable in the sense that they get progressively more
expensive as the instruction sequences emitted get longer.

radar://13434072

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177333 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>ARM cost model: Fix costs for some vector selects</title>
<updated>2013-03-15T18:31:01Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-03-15T18:31:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=5193e4ebe216dd5a07ab9cc58d40de5aafaa990c'/>
<id>urn:sha1:5193e4ebe216dd5a07ab9cc58d40de5aafaa990c</id>
<content type='text'>
I was too pessimistic in r177105. Vector selects that fit into a legal register
type lower just fine. I was mislead by the code fragment that I was using. The
stores/loads that I saw in those cases came from lowering the conditional off
an address.

Changing the code fragment to:

%T0_3 = type &lt;8 x i18&gt;
%T1_3 = type &lt;8 x i1&gt;

define void @func_blend3(%T0_3* %loadaddr, %T0_3* %loadaddr2,
                         %T1_3* %blend, %T0_3* %storeaddr) {
  %v0 = load %T0_3* %loadaddr
  %v1 = load %T0_3* %loadaddr2
==&gt; FROM:
  ;%c = load %T1_3* %blend
==&gt; TO:
  %c = icmp slt %T0_3 %v0, %v1
==&gt; USE:
  %r = select %T1_3 %c, %T0_3 %v0, %T0_3 %v1

  store %T0_3 %r, %T0_3* %storeaddr
  ret void
}

revealed this mistake.

radar://13403975

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177170 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>ARM cost model: Fix cost of fptrunc and fpext instructions</title>
<updated>2013-03-15T15:10:47Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-03-15T15:10:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=c0d8dc0eb6e1df872affadba01f60e42275e2863'/>
<id>urn:sha1:c0d8dc0eb6e1df872affadba01f60e42275e2863</id>
<content type='text'>
A vector fptrunc and fpext simply gets split into scalar instructions.

radar://13192358

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177159 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>ARM cost model: Increase cost of some vector selects we do terrible on</title>
<updated>2013-03-14T19:17:02Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-03-14T19:17:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=d81511f0a671a9271d7ba10cce6c27331b57f553'/>
<id>urn:sha1:d81511f0a671a9271d7ba10cce6c27331b57f553</id>
<content type='text'>
By terrible I mean we store/load from the stack.

This matters on PAQp8 in _Z5trainPsS_ii (which is inlined into Mixer::update)
where we decide to vectorize a loop with a VF of 8 resulting in a 25%
degradation on a cortex-a8.

LV: Found an estimated cost of 2 for VF 8 For instruction:   icmp slt i32
LV: Found an estimated cost of 2 for VF 8 For instruction:   select i1, i32, i32

The bug that tracks the CodeGen part is PR14868.

radar://13403975

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177105 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
<entry>
<title>ARM cost model: Increase the cost for vector casts that use the stack</title>
<updated>2013-03-12T21:19:22Z</updated>
<author>
<name>Arnold Schwaighofer</name>
<email>aschwaighofer@apple.com</email>
</author>
<published>2013-03-12T21:19:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/llvm/commit/?id=b6f4872d29136637a3a5dfdf185f5afcbcdd3b2a'/>
<id>urn:sha1:b6f4872d29136637a3a5dfdf185f5afcbcdd3b2a</id>
<content type='text'>
Increase the cost of v8/v16-i8 to v8/v16-i32 casts and truncates as the backend
currently lowers those using stack accesses.

This was responsible for a significant degradation on
MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1
where we vectorize one loop to a vector factor of 16. After this patch we select
a vector factor of 4 which will generate reasonable code.

unsigned char cle[32];

void test(short c) {
  unsigned short compte;
  for (compte = 0; compte &lt;= 31; compte++) {
    cle[compte] = cle[compte] ^ c;
  }
}

radar://13220512

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176898 91177308-0d34-0410-b5e6-96231b3b80d8
</content>
</entry>
</feed>
