|
Revision tags: llvmorg-21-init, llvmorg-19.1.7 |
|
| #
9d7df23f |
| 10-Jan-2025 |
Santanu Das <quic_santdas@quicinc.com> |
[Hexagon] Add missing pattern for v8i1 type (#120703)
HexagonISD::PFALSE and PTRUE patterns do not form independently in
general as they are treated like operands of all 0s or all 1s. Eg: i32 =
tr
[Hexagon] Add missing pattern for v8i1 type (#120703)
HexagonISD::PFALSE and PTRUE patterns do not form independently in
general as they are treated like operands of all 0s or all 1s. Eg: i32 =
transfer HEXAGONISD::PFALSE.
In this case, v8i1 = HEXAGONISD::PFALSE is formed independently without
accompanying opcode.
This patch adds a pattern to transfer all 0s or all 1s to a scalar
register and then use that register and this PFALSE/PTRUE opcode to
transfer to a predicate register like v8i1.
show more ...
|
|
Revision tags: llvmorg-19.1.6 |
|
| #
7748492c |
| 04-Dec-2024 |
Brian Cain <bcain@quicinc.com> |
[hexagon] Add support for llvm.debugtrap (#117049)
Also: set `hasSideEffects` on `Y2_break` instruction.
|
|
Revision tags: llvmorg-19.1.5 |
|
| #
4851dbb8 |
| 02-Dec-2024 |
Nikita Popov <npopov@redhat.com> |
[Hexagon] Use getSignedConstant for RoundTo8 XForm
To handle negative offset addrmodes correctly.
Fixes https://github.com/llvm/llvm-project/pull/117558#issuecomment-2510208764.
|
| #
22fdc571 |
| 22-Nov-2024 |
Nikita Popov <npopov@redhat.com> |
[Hexagon] Avoid implicit truncation in getConstant()
Use getSignedConstant() or change variable type as appropriate. This will avoid assertion failures when implicit truncation is disabled.
|
|
Revision tags: llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init |
|
| #
f2f18459 |
| 21-Jun-2024 |
Nikita Popov <npopov@redhat.com> |
Revert "Intrinsic: introduce minimumnum and maximumnum (#93841)"
As far as I can tell, this pull request was not approved, and did not go through an RFC on discourse.
This reverts commit 8988148003
Revert "Intrinsic: introduce minimumnum and maximumnum (#93841)"
As far as I can tell, this pull request was not approved, and did not go through an RFC on discourse.
This reverts commit 89881480030f48f83af668175b70a9798edca2fb. This reverts commit 225d8fc8eb24fb797154c1ef6dcbe5ba033142da.
show more ...
|
| #
89881480 |
| 21-Jun-2024 |
YunQiang Su <syq@debian.org> |
Intrinsic: introduce minimumnum and maximumnum (#93841)
Currently, on different platform, the behaivor of llvm.minnum is
different if one operand is sNaN:
When we compare sNaN vs NUM:
ARM/AAr
Intrinsic: introduce minimumnum and maximumnum (#93841)
Currently, on different platform, the behaivor of llvm.minnum is
different if one operand is sNaN:
When we compare sNaN vs NUM:
ARM/AArch64/PowerPC: follow the IEEE754-2008's minNUM: return qNaN.
RISC-V/Hexagon follow the IEEE754-2019's minimumNumber: return NUM. X86:
Returns NUM but not same with IEEE754-2019's minimumNumber as
+0.0 is not always greater than -0.0.
MIPS/LoongArch/Generic: return NUM.
LIBCALL: returns qNaN.
So, let's introduce llvm.minmumnum/llvm.maximumnum, which always follow
IEEE754-2019's minimumNumber/maximumNumber.
Half-fix: #93033
show more ...
|
|
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7 |
|
| #
c6ce9372 |
| 26-May-2024 |
Brian Cain <bcain@quicinc.com> |
[Hexagon] Implement @llvm.readsteadycounter() (#93247)
This commit was inspired by @kparzysz's ab57c2bad3dc ([Hexagon]
Implement @llvm.readcyclecounter(), 2017-02-22)
|
|
Revision tags: llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3 |
|
| #
de16a05a |
| 14-Feb-2024 |
sgundapa <sgundapa@quicinc.com> |
[Hexagon] Fix zero extension of bit predicates with vtrunehb (#81772)
vector extension from v4i1 to v4i8 generates an incorrect word. This
patch uses a vtrunehb for truncation to fix the bug.
|
|
Revision tags: llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
ad9d13d5 |
| 04-Apr-2022 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
SelectionDAG: Swap operands of atomic_store
Irritatingly, atomic_store had operands in the opposite order from regular store. This made it difficult to share patterns between regular and atomic stor
SelectionDAG: Swap operands of atomic_store
Irritatingly, atomic_store had operands in the opposite order from regular store. This made it difficult to share patterns between regular and atomic stores.
There was a previous incomplete attempt to move atomic_store into the regular StoreSDNode which would be better.
I think it was a mistake for all atomicrmw to swap the operand order, so maybe it's better to take this one step further.
https://reviews.llvm.org/D123143
show more ...
|
| #
5ad9adb9 |
| 18-Jun-2023 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Add missing patterns for boolean [v]selects
Fixes https://github.com/llvm/llvm-project/issues/59663
|
| #
833438ee |
| 17-Jun-2023 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Handle all compares of i1 and vNi1
Fixes https://github.com/llvm/llvm-project/issues/63363
|
| #
d1c3ec61 |
| 17-Jun-2023 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Add missing patterns for truncate to vNi1
|
| #
77e4c48e |
| 16-Jun-2023 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Generate correct instruction for store i1, ($Rs<<$u2 + $Rt)
Fixes https://github.com/llvm/llvm-project/issues/63359
|
| #
c7b291a6 |
| 03-May-2023 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Add patterns for bspap/bitreverse for scalar vectors
Fixes https://github.com/llvm/llvm-project/issues/62474
|
| #
219ff07f |
| 03-Apr-2023 |
Craig Topper <craig.topper@sifive.com> |
[Targets] Rename Flag->Glue. NFC
Long long ago Glue was called Flag, and it was never completely renamed.
|
| #
4bb6e220 |
| 22-Nov-2022 |
Ikhlas Ajbar <iajbar@quicinc.com> |
[Hexagon] Add missing patterns for select
Fixes https://github.com/llvm/llvm-project/issues/59077.
|
| #
ea6693d4 |
| 18-Nov-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Add missing patterns for mulhs/mulhu
|
| #
2ec380b2 |
| 12-Oct-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Improve handling of 32-bit mulh/mul_lohi on HVX
Handle MULH[US] by normalizing them into newly invented nodes HexagonISD::(S|U|US)MUL_LOHI. On HVX v60, if only the high part of SMUL_LOHI i
[Hexagon] Improve handling of 32-bit mulh/mul_lohi on HVX
Handle MULH[US] by normalizing them into newly invented nodes HexagonISD::(S|U|US)MUL_LOHI. On HVX v60, if only the high part of SMUL_LOHI is used, use the original MULHS expansion. In all other cases, expand the full product. On HVX v62, always expand the full product.
Introduce Hexagon-specific LLVM IR intrinsics for 32x32 multiplication returning low/high parts.
show more ...
|
| #
705e77ab |
| 10-Oct-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Lower funnel shifts for HVX
HVX v62+ has bidirectional shifts, which do not mask the shift amount to the bit width. Instead, the shift amount is sign-extended from the log(BW) bit value, a
[Hexagon] Lower funnel shifts for HVX
HVX v62+ has bidirectional shifts, which do not mask the shift amount to the bit width. Instead, the shift amount is sign-extended from the log(BW) bit value, and a negative value causes a shift in the other direction. For the shift amount being -log(BW), this reversed shift will shift all bits out, inserting 0s or sign bits depending on the type and direction.
show more ...
|
| #
dfaf7a28 |
| 26-Sep-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Avoid some unnecessary sign-extend instructions
Simplify (sext_inreg (extractu ...)) -> (extract ...) where appropriate.
|
| #
94a71361 |
| 02-Sep-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Implement [SU]INT_TO_FP and FP_TO_[SU]INT for HVX
|
| #
65a2f6ad |
| 24-Mar-2022 |
Jyotsna Verma <jverma@quicinc.com> |
[Hexagon] Create an intrinsic to profile using a custom handler
The intrinsic is lowered into a hexagon pseudo instruction which after register allocation is expanded into A2_tfrsi and J2_call.
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3 |
|
| #
f6309db7 |
| 04-Mar-2021 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Handle L2_loadb[sz]w[24]_io in HII::isValidOffset
|
| #
78f5014f |
| 04-Jan-2022 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Conversions to/from FP types, HVX and scalar
Co-authored-by: Anirudh Sundar Subramaniam <quic_sanirudh@quicinc.com> Co-authored-by: Sumanth Gundapaneni <sgundapa@quicinc.com>
|
| #
2ce586bc |
| 29-Dec-2021 |
Krzysztof Parzyszek <kparzysz@quicinc.com> |
[Hexagon] Handle floating point splats
Co-authored-by: Anirudh Sundar Subramaniam <quic_sanirudh@quicinc.com>
|