[PATCH] D11370: Improved the interface of methods commuting operands, improved X86-FMA3 mem-folding&coalescing.
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 17 11:44:11 PDT 2015
arsenm added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/SIInstrInfo.cpp:874
@@ -859,2 +873,3 @@
// FIXME: Workaround TargetInstrInfo::commuteInstruction asserting on
- // immediate.
+ // immediate. Also, immeditate src0 operand is not handled in
+ // SIInstrInfo::commuteInstruction();
----------------
Typo: immeditate
================
Comment at: llvm/lib/Target/AMDGPU/SIInstrInfo.cpp:885-887
@@ +884,5 @@
+ if (Src1.isImm()) {
+ // SIInstrInfo::commuteInstruction() does support commuting the immediate
+ // operand src1 in 2 and 3 operand instructions.
+ if (!isVOP2(MI->getOpcode()) && !isVOP3(MI->getOpcode()))
+ return false;
----------------
It's not entirely accurate to use isVOP2 / isVOP3 for checking the number of operands. VOP* instructions are always available in a VOP3 encoding, but will still have < 3 operands. Checking if AMDGPU::OpName::src2 is a valid operand is a more reliable check. SALU instructions with an immediate can also be commuted, although there is less reason to do so other than canonicalization. Although it looks like isVOP2/isVOP3 is what commuteInstruction already checks so I guess this is OK for now.
http://reviews.llvm.org/D11370
More information about the llvm-commits
mailing list