<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp, branch users/ojhunt/ptrauth-additions</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>[ASan][RISCV] Support asan check for segment load/store RVV intrinsics. (#161317)</title>
<updated>2025-10-07T07:05:37+00:00</updated>
<author>
<name>Hank Chang</name>
<email>hank.chang@sifive.com</email>
</author>
<published>2025-10-07T07:05:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=958ec32e7d9c54786df8b874b824a02dea87ef6a'/>
<id>958ec32e7d9c54786df8b874b824a02dea87ef6a</id>
<content type='text'>
RVV segment is an array of `SegNum` contingous elements. This patch
emulates RVV segment as a large integer with bitwidth equaled to `SegNum
* SEW`. The reason to not emulate RVV segment as some aggregated type is
that vector type should use primitive types as element types.
There is another approach is to create `SegNum` InterestingMemoryOperand
objects. It could avoid create pseudo types, but this approach also
generates large code for asan check.

Co-authored-by: Yeting Kuo &lt;yeting.kuo@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RVV segment is an array of `SegNum` contingous elements. This patch
emulates RVV segment as a large integer with bitwidth equaled to `SegNum
* SEW`. The reason to not emulate RVV segment as some aggregated type is
that vector type should use primitive types as element types.
There is another approach is to create `SegNum` InterestingMemoryOperand
objects. It could avoid create pseudo types, but this approach also
generates large code for asan check.

Co-authored-by: Yeting Kuo &lt;yeting.kuo@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[RISCV] Allow non-canonicalized splats in isProfitableToSinkOperands (#161586)</title>
<updated>2025-10-01T21:00:28+00:00</updated>
<author>
<name>Philip Reames</name>
<email>preames@rivosinc.com</email>
</author>
<published>2025-10-01T21:00:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b389adf56a1610cbdf0aa0a7b0b70b2c6b049f83'/>
<id>b389adf56a1610cbdf0aa0a7b0b70b2c6b049f83</id>
<content type='text'>
This isn't an optimization change - IR transforms should have remove the
operands and replaced them with poison. However, I noticed the
non-canonical splat structure in a couple of llvm-reduce outputs. This
results in us creating extremely atypical IR which is quite misleading
about the true cause of what's going on. (Because the non-canonical
splat doesn't get sunk, we then prone whatever was actually holding it
outside the loop in the original example, eliminating insight as to the
true cause of whatever issue we're debugging.)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This isn't an optimization change - IR transforms should have remove the
operands and replaced them with poison. However, I noticed the
non-canonical splat structure in a couple of llvm-reduce outputs. This
results in us creating extremely atypical IR which is quite misleading
about the true cause of what's going on. (Because the non-canonical
splat doesn't get sunk, we then prone whatever was actually holding it
outside the loop in the original example, eliminating insight as to the
true cause of whatever issue we're debugging.)</pre>
</div>
</content>
</entry>
<entry>
<title>[RISCV] Teach getIntImmCostInst about (X &amp; -(1 &lt;&lt; C1) &amp; 0xffffffff) == C2 &lt;&lt; C1 (#160163)</title>
<updated>2025-09-29T17:36:27+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-09-29T17:36:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=301259a6b1c8146a185e7c1bea46ec02d028243e'/>
<id>301259a6b1c8146a185e7c1bea46ec02d028243e</id>
<content type='text'>
We can rewrite this to (srai(w)/srli X, C1) == C2 so the AND immediate
is free. This transform is done by performSETCCCombine in
RISCVISelLowering.cpp.

This fixes the opaque constant case mentioned in #157416.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We can rewrite this to (srai(w)/srli X, C1) == C2 so the AND immediate
is free. This transform is done by performSETCCCombine in
RISCVISelLowering.cpp.

This fixes the opaque constant case mentioned in #157416.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[TTI][RISCV] Add cost modelling for intrinsic vp.load.ff (#160470)"</title>
<updated>2025-09-27T00:24:56+00:00</updated>
<author>
<name>ShihPo Hung</name>
<email>shihpo.hung@sifive.com</email>
</author>
<published>2025-09-27T00:14:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2be906b25581eebbd6607a5d99943251617622cb'/>
<id>2be906b25581eebbd6607a5d99943251617622cb</id>
<content type='text'>
This reverts commit aa08b1a9963f33ded658d3ee655429e1121b5212.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit aa08b1a9963f33ded658d3ee655429e1121b5212.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ASan][RISCV] Teach AddressSanitizer to support indexed load/store. (#160443)</title>
<updated>2025-09-26T19:00:55+00:00</updated>
<author>
<name>Hank Chang</name>
<email>hank.chang@sifive.com</email>
</author>
<published>2025-09-26T19:00:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d2c189bc739c86bea28e9d603f8973f68869a772'/>
<id>d2c189bc739c86bea28e9d603f8973f68869a772</id>
<content type='text'>
This patch is based on https://github.com/llvm/llvm-project/pull/159713

This patch extends AddressSanitizer to support indexed/segment
instructions in RVV. It enables proper instrumentation for these memory
operations.

A new member, `MaybeOffset`, is added to `InterestingMemoryOperand` to
describe the offset between the base pointer and the actual memory
reference address.

Co-authored-by: Yeting Kuo &lt;yeting.kuo@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch is based on https://github.com/llvm/llvm-project/pull/159713

This patch extends AddressSanitizer to support indexed/segment
instructions in RVV. It enables proper instrumentation for these memory
operations.

A new member, `MaybeOffset`, is added to `InterestingMemoryOperand` to
describe the offset between the base pointer and the actual memory
reference address.

Co-authored-by: Yeting Kuo &lt;yeting.kuo@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI][RISCV] Add cost modelling for intrinsic vp.load.ff (#160470)</title>
<updated>2025-09-26T08:47:10+00:00</updated>
<author>
<name>Shih-Po Hung</name>
<email>shihpo.hung@sifive.com</email>
</author>
<published>2025-09-26T08:47:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=aa08b1a9963f33ded658d3ee655429e1121b5212'/>
<id>aa08b1a9963f33ded658d3ee655429e1121b5212</id>
<content type='text'>
Split out from #151300 to isolate TargetTransformInfo cost modelling for
fault-only-first loads from VPlan implementation details. This change
adds costing support for vp.load.ff independently of the VPlan work.

For now, model a vp.load.ff as cost-equivalent to a vp.load.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Split out from #151300 to isolate TargetTransformInfo cost modelling for
fault-only-first loads from VPlan implementation details. This change
adds costing support for vp.load.ff independently of the VPlan work.

For now, model a vp.load.ff as cost-equivalent to a vp.load.</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI][ASan][RISCV] reland Move InterestingMemoryOperand to Analysis and embed in MemIntrinsicInfo #157863 (#159713)</title>
<updated>2025-09-23T01:42:58+00:00</updated>
<author>
<name>Hank Chang</name>
<email>hank.chang@sifive.com</email>
</author>
<published>2025-09-23T01:42:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f8e51df8e57736d27587baaa5f56e532dfc6de26'/>
<id>f8e51df8e57736d27587baaa5f56e532dfc6de26</id>
<content type='text'>
[Previously reverted due to failures on asan-rvv-intrinsics.ll, the test
case is riscv only and it is triggered by other target]
Reland [#157863](https://github.com/llvm/llvm-project/pull/157863), and
add `; REQUIRES: riscv-registered-target` in test case to skip the
configuration that doesn't register riscv target.


Previously asan considers target intrinsics as black boxes, so asan
could not instrument accurate check. This patch make
SmallVector&lt;InterestingMemoryOperand&gt; a member of MemIntrinsicInfo so
that TTI can make targets describe their intrinsic informations to asan.

Note,
1. This patch move InterestingMemoryOperand from Transforms to Analysis.
2. Extend MemIntrinsicInfo by adding a
SmallVector&lt;InterestingMemoryOperand&gt; member.
3. This patch does not support RVV indexed/segment load/store.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Previously reverted due to failures on asan-rvv-intrinsics.ll, the test
case is riscv only and it is triggered by other target]
Reland [#157863](https://github.com/llvm/llvm-project/pull/157863), and
add `; REQUIRES: riscv-registered-target` in test case to skip the
configuration that doesn't register riscv target.


Previously asan considers target intrinsics as black boxes, so asan
could not instrument accurate check. This patch make
SmallVector&lt;InterestingMemoryOperand&gt; a member of MemIntrinsicInfo so
that TTI can make targets describe their intrinsic informations to asan.

Note,
1. This patch move InterestingMemoryOperand from Transforms to Analysis.
2. Extend MemIntrinsicInfo by adding a
SmallVector&lt;InterestingMemoryOperand&gt; member.
3. This patch does not support RVV indexed/segment load/store.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[TTI][ASan][RISCV] Move InterestingMemoryOperand to Analysis and embed in MemIntrinsicInfo" (#159700)</title>
<updated>2025-09-19T04:13:04+00:00</updated>
<author>
<name>Florian Mayer</name>
<email>fmayer@google.com</email>
</author>
<published>2025-09-19T04:13:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=48f804d609b38f22307f2e1c1345d1e4054cb2c6'/>
<id>48f804d609b38f22307f2e1c1345d1e4054cb2c6</id>
<content type='text'>
Reverts llvm/llvm-project#157863</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#157863</pre>
</div>
</content>
</entry>
<entry>
<title>[TTI][ASan][RISCV] Move InterestingMemoryOperand to Analysis and embed in MemIntrinsicInfo (#157863)</title>
<updated>2025-09-19T03:09:41+00:00</updated>
<author>
<name>Hank Chang</name>
<email>hank.chang@sifive.com</email>
</author>
<published>2025-09-19T03:09:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f8b7f64ad2d94bbda169023f933f18b31c9b4492'/>
<id>f8b7f64ad2d94bbda169023f933f18b31c9b4492</id>
<content type='text'>
Previously asan considers target intrinsics as black boxes, so asan
could not instrument accurate check. This patch make
SmallVector&lt;InterestingMemoryOperand&gt; a member of MemIntrinsicInfo so
that TTI can make targets describe their intrinsic informations to asan.

Note,
1. This patch move InterestingMemoryOperand from Transforms to Analysis.
2. Extend MemIntrinsicInfo by adding a
SmallVector&lt;InterestingMemoryOperand&gt; member.
3. This patch does not support RVV indexed/segment load/store.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously asan considers target intrinsics as black boxes, so asan
could not instrument accurate check. This patch make
SmallVector&lt;InterestingMemoryOperand&gt; a member of MemIntrinsicInfo so
that TTI can make targets describe their intrinsic informations to asan.

Note,
1. This patch move InterestingMemoryOperand from Transforms to Analysis.
2. Extend MemIntrinsicInfo by adding a
SmallVector&lt;InterestingMemoryOperand&gt; member.
3. This patch does not support RVV indexed/segment load/store.</pre>
</div>
</content>
</entry>
<entry>
<title>[RISCV] Use hasCPOPLike in isCtpopFast and getPopcntSupport (#158371)</title>
<updated>2025-09-12T22:29:44+00:00</updated>
<author>
<name>Craig Topper</name>
<email>craig.topper@sifive.com</email>
</author>
<published>2025-09-12T22:29:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1131e44ed3f5fadb2d22ff155d4e47f69757d02f'/>
<id>1131e44ed3f5fadb2d22ff155d4e47f69757d02f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
