Implement vertex swizzle

This commit is contained in:
nmzik committed 2026-07-18 03:36:09 +02:00
1 parent 18479daabd
commit f4b52cea2b
10 files changed
+282 -195

No files matched your search

@@ -1165,6 +1165,22 @@ bool LowerImplemented(const Decoder::Instruction& decoded, BasicBlock* block, st
}
block->instructions.push_back(inst);
if (decoded.compare_exec) {
// V_CMPX has two architectural destinations. Keep the comparison's normal VCC/SDST
// result, then mirror the complete lane mask to EXEC. A mask is always a 64-bit scalar pair, including wave32 shaders.
for (uint32_t i = 0; i < 2u; i++) {
Instruction move;
move.pc = decoded.pc;
move.op = Opcode::MoveU32;
move.src_count = 1;
move.src[0] = inst.dst;
move.src[0].reg.index += i;
move.dst.kind = OperandKind::Register;
move.dst.reg.file = RegisterFile::Exec;
move.dst.reg.index = i;
block->instructions.push_back(move);
}
}
return AppendScalarResultSccNonZero(decoded, block, error);
}