Commit Graph

30 Commits

Author SHA1 Message Date
b6199548fd Changes in code. 2025-10-23 15:59:29 +02:00
db7015317a ADD, MUL, SUB i32 instructions added to IGCVectorizer
ADD, MUL, SUB i32 instructions added to IGCVectorizer
2025-10-22 11:53:09 +02:00
0b9518e019 Fix for IGCVectorizer insertpoint
Now for small blocks consisting of 2 special case instructions
PHI & Terminator (BR or RET for example) we return not
firstnonPHI but the last PHI.
2025-09-03 16:07:45 +02:00
cca2a9fe60 IGCVectorizer now supports I32 PHI
IGCVectorizer now supports I32 Phi instructions.
2025-08-28 16:00:49 +02:00
4458a3bfcc Stub vectorization for IGCVectorizer
Allow certain instructions to be "stub-vectorized"
New tests are added to cover for additional flexibitlity of
vectorization.
2025-08-13 14:54:45 +02:00
71d72694ae IGCVectorizer do not process <1 x float>
Additional check that fixes the bug with <1 x float>
dpases.
2025-07-30 19:20:03 +02:00
420b632df9 Update IGC code format
Update IGC code format
2025-07-20 06:20:11 +02:00
cd15d75829 IGCVectorizer: exp2, maxnum supported and partial
vectorization functionality has been added under flag

IGCVectorizer:

exp2, maxnum support has been added under flag.

partial vectorization functionality with different deletion strategies has been
added under flag.
2025-06-16 13:15:06 +02:00
8a8d752708 Additional explicit SIMD16 checks have been implemented for
IGCVectorizer

IGCVectorizer only supports simd16 as of now, explicit checks and
asserts has been added
2025-05-28 10:29:58 +02:00
d33224e6d0 IGCVectorizer only supports floats, explicit check has been added
IGCVectorizer vector emission only supports floats, we do not add to
vectorization tree everything that is not a float. Now check is
explicit.
2025-05-16 20:15:32 +02:00
5771bd0384 Remove unused includes
Try to clean some unused includes to improve build times.
2025-05-09 17:30:34 +02:00
d89764ffd5 Vectorizer refactoring
Vectorizer now preallocates chain vector. And removes
unnecessary parameters from functions.
2025-04-16 12:41:48 +02:00
810444c697 IGCVectorizer MAD emission and vectorized MAD pattern
matching

Pattern Match inside EmitVisaPass now can match vectorized FADD + FMUL
and form vector MAD instructions. Vector emission of such instructions
supported added to EmitVisaPass as well.
2025-04-07 11:08:49 +02:00
173839cc85 IGC Vectorizer now implements cycle-proof deletion strategy
Bug fix, IGC  Vectorizer has cycle-proof deletion strategy. Now we
always can clean up in case vectorizer chain is discarded.
2025-03-19 21:48:18 +01:00
9c8de86050 Initialize variables. Reduce copying. Promote types.
Addresses Coverity issues.
2025-03-05 15:51:08 +01:00
6c471b3e81 Vectorizer quality of life update
Add flags and make more uniform type building in vectorizer.
2025-02-24 14:37:16 +01:00
1fe31c8b87 Vectorizer update FDIV insturctions enabled
Support for FDIV insturctions inside IGCVectorizer has been added.
We only support FDIV that is converted to INV, due to current emitter.
2025-02-20 15:38:33 +01:00
a6fda9ec34 FADD vector emission is added
VISA emitter now can process vectorized fadd instructions.
2025-01-17 18:55:35 +01:00
61b96b3339 Bugfix inside IGCVectorizer.cpp
Assertion with unnecessary llvm::cast fixed, more general type is used
instead.
2025-01-15 12:48:01 +01:00
055f2cbf65 Vectorizer update fptrunc is added back to vectorizer
Vectorizer now can support vector emission of ftrunc instructions.
Implemented for triton flash attention kernel.
2024-12-20 12:50:46 +01:00
ae00cfb79e Fixed bug in vectorizer
Wider extract elements are treated correctly now.
2024-12-19 13:57:50 +01:00
d047fc5e25 Vectorizer Update fmul instruction vectorized
Vectorizer now can support vector emission of fmul instructions.
 Implemented for triton flash attention kernel. Regression that
 led to autobackout fixed, check that phi's come from the same block
 have been implemented.
2024-12-12 16:31:54 +01:00
b050853f3a [Autobackout][FunctionalRegression]Revert of change: 0b8394d757: Vectorizer Update fmul instruction vectorized
Vectorizer now can support vector emission of fmul instructions.
    Implemented for triton flash attention kernel.
2024-12-11 00:53:34 +01:00
0b8394d757 Vectorizer Update fmul instruction vectorized
Vectorizer now can support vector emission of fmul instructions.
Implemented for triton flash attention kernel.
2024-12-09 22:50:43 +01:00
26c11d944f Revert: New vectorization pattern for IGCVectorizer
.
2024-11-19 14:47:28 +01:00
e1b2c755e6 IGCVectorizer update
This update brings ability to merge incompletely
scalarized vector paths across multiple basic blocks.
2024-10-22 13:44:19 +02:00
e2b46264e2 New vectorization pattern for IGCVectorizer
New vectorization pattern with FPTrunc instruction for IGCVectorizer
has been implemented.
2024-10-18 18:14:11 +02:00
437b13f0da [LLVM16] Replacing getInstList calls(), ZeroBehavior drop, getUserCost, setUndef, array_lengthof, GreatestCommonDivisor64
Porting IGC code to LLVM16

* Replace getInstList() calls
* Replace GreatestCommonDivisor64 with std::gcd https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20220822/1071390.html
* Replace llvm::array_lengthof with std::size https://reviews.llvm.org/D133429
* Replace getUserCost with getInstructionCost https://reviews.llvm.org/D79483
* Replace setUndef with setKillLocation https://reviews.llvm.org/D140903
* Drop ZeroBehavior parameter https://reviews.llvm.org/D141798
2024-09-27 09:09:47 +02:00
be3445ecc1 Signed-zero bug is fixed for IGCVectorizer
Fixed problem of bundling -0.0 with 0.0 and substituting them
with vectorized zero_initializer. Which is not technically correct,
and might cause some problems with precise arithmetic.
2024-09-03 14:13:04 +02:00
46c61c8aec Vectorization for dpas & BlockWrite implemented
Vectorization for dpas & BlockWrite intrinsics implemented.
Unnecessary insert element & extract elements are removed now.
2024-08-26 10:59:56 +02:00