I added API for creation a target specific memory node in DAG. Today, all memory nodes are common for all targets and their constructors are located in SelectionDAG.cpp.
There are some cases in X86 where we need to create a special node - truncation-with-saturation store, float-to-half-store.
In the current patch I added truncation-with-saturation nodes and I'm using them for intrinsics. In the future I plan to implement DAG lowering for truncation-with-saturation pattern.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
Does this patch remove the existing patterns for these intrinsics?
../lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
19704 ↗ | (On Diff #81878) | Variable names should be capitalized. |
Comment Actions
Yes. The patterns were in X86InstAVX512.td. We put them in because we did not have any other solution. Now I removed them all.
Comment Actions
But how does the patch remove them. From what I can see those patterns are created in avx512_trunc_mr_lowering, and it looks like that's still instantiated for these classes.
Comment Actions
Oh, I forgot to remove avx512_trunc_sat_mr_lowering, these patterns are not in use any more. The avx512_trunc_mr_lowering does the work - replaces "store" with "mr" instruction.
Updating the patch.. Thank you for catching this.