[llvm] [AMDGPU][MC] Implement fft and rotate modes for ds_swizzle_b32 (PR #108064)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 11 23:50:07 PDT 2024
================
@@ -1503,8 +1503,21 @@ void AMDGPUInstPrinter::printSwizzle(const MCInst *MI, unsigned OpNo,
O << " offset:";
- if ((Imm & QUAD_PERM_ENC_MASK) == QUAD_PERM_ENC) {
+ // Rotate and FFT modes
+ if (Imm >= ROTATE_MODE_LO && AMDGPU::isGFX9Plus(STI)) {
+ if (Imm >= FFT_MODE_LO) {
+ O << "swizzle(" << IdSymbolic[ID_FFT] << "," << (Imm & FFT_SWIZZLE_MASK)
+ << ")";
+ } else if (Imm >= ROTATE_MODE_LO) {
+ O << "swizzle(" << IdSymbolic[ID_ROTATE] << ","
+ << ((Imm >> ROTATE_DIR_SHIFT) & ROTATE_DIR_MASK) << ","
+ << ((Imm >> ROTATE_SIZE_SHIFT) & ROTATE_SIZE_MASK) << ")";
----------------
arsenm wrote:
```suggestion
O << "swizzle(" << IdSymbolic[ID_FFT] << ',' << (Imm & FFT_SWIZZLE_MASK)
<< ')';
} else if (Imm >= ROTATE_MODE_LO) {
O << "swizzle(" << IdSymbolic[ID_ROTATE] << ','
<< ((Imm >> ROTATE_DIR_SHIFT) & ROTATE_DIR_MASK) << ','
<< ((Imm >> ROTATE_SIZE_SHIFT) & ROTATE_SIZE_MASK) << ')';
```
https://github.com/llvm/llvm-project/pull/108064
More information about the llvm-commits
mailing list