The load/store instruction will be transformed to amx intrinsics in the
pass of AMX type lowering. Prohibiting the pointer cast make that pass
happy.
Details
- Reviewers
craig.topper pengfei - Commits
- rG055644cc459e: [X86][AMX] Prohibit pointer cast on load.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
to amx intrinsics the the
to amx intrinsics that?
llvm/test/Transforms/InstCombine/load.ll | ||
---|---|---|
427 ↗ | (On Diff #315650) | Missing check results? |
llvm/test/Transforms/InstCombine/load.ll | ||
---|---|---|
427 ↗ | (On Diff #315650) | Oops. Thank Pengfei. :) |
llvm/test/Transforms/InstCombine/load.ll | ||
---|---|---|
452 ↗ | (On Diff #315660) | I think we had disabled the chance that x86_amx* been generated by compiler. It may mean somthing wrong if we see such load. So I think it's better just raise an assert fail for it here. %vec = load x86_amx, x86_amx* %src, align 64 %bc = bitcast x86_amx %vec to <256 x i32> to %bc = load <256 x i32>, <256 x i32>* %src, align 64 |
The the amx load require shape and stride. We need transform "%vec = load x86_amx, x86_amx* %src" to "%vec = @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, i8* %src, i64 %stride)". The %row, %col need to be deduced from the context. Prohibit the transform make pass "lower-amx-type" happy.
llvm/test/Transforms/InstCombine/load.ll | ||
---|---|---|
452 ↗ | (On Diff #315660) | So we may delete this case, as we think "x86_amx*" is invalid. I can take x86_amx* as invalid in IR verification in another patch. |