r600g/llvm: Only emit an instruction's explicit operands
authorTom Stellard <thomas.stellard@amd.com>
Thu, 19 Apr 2012 15:47:08 +0000 (11:47 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Mon, 23 Apr 2012 13:34:05 +0000 (09:34 -0400)
src/gallium/drivers/radeon/R600CodeEmitter.cpp

index 4d9ca4fab12342f875ff314b97c5cf18f4c30d84..2367713500ca6e3664a7defb65dad37275536934 100644 (file)
@@ -285,7 +285,7 @@ bool R600CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
 void R600CodeEmitter::emitALUInstr(MachineInstr &MI)
 {
 
-  unsigned numOperands = MI.getNumOperands();
+  unsigned numOperands = MI.getNumExplicitOperands();
 
    /* Some instructions are just place holder instructions that represent
     * operations that the GPU does automatically.  They should be ignored. */
@@ -351,7 +351,7 @@ void R600CodeEmitter::emitSrc(const MachineOperand & MO)
     emitTwoBytes(getHWReg(reg));
     if (reg == AMDIL::ALU_LITERAL_X) {
       const MachineInstr * parent = MO.getParent();
-      unsigned immOpIndex = parent->getNumOperands() - 1;
+      unsigned immOpIndex = parent->getNumExplicitOperands() - 1;
       MachineOperand immOp = parent->getOperand(immOpIndex);
       if (immOp.isFPImm()) {
         value = immOp.getFPImm()->getValueAPF().bitcastToAPInt().getZExtValue();