コード例 #1
0
ファイル: FPCompareAnalyser.cpp プロジェクト: dinogun/omr
void TR_X86FPCompareAnalyser::setInputs(TR::Node     *firstChild,
                                         TR::Register *firstRegister,
                                         TR::Node     *secondChild,
                                         TR::Register *secondRegister,
                                         bool         disallowMemoryFormInstructions,
                                         bool         disallowOperandSwapping)
   {


   if (firstRegister)
      {
      setReg1();
      }

   if (secondRegister)
      {
      setReg2();
      }

   if (!disallowMemoryFormInstructions &&
       firstChild->getOpCode().isMemoryReference() &&
       firstChild->getReferenceCount() == 1)
      {
      setMem1();
      }

   if (!disallowMemoryFormInstructions &&
       secondChild->getOpCode().isMemoryReference() &&
       secondChild->getReferenceCount() == 1)
      {
      setMem2();
      }

   if (firstChild->getReferenceCount() == 1)
      {
      setClob1();
      }

   if (secondChild->getReferenceCount() == 1)
      {
      setClob2();
      }

   if (disallowOperandSwapping)
      {
      setNoOperandSwapping();
      }
   }
コード例 #2
0
ファイル: BinaryAnalyser.cpp プロジェクト: bjornvar/omr
void
TR_S390BinaryAnalyser::remapInputs(TR::Node * firstChild, TR::Register * firstRegister,
                                    TR::Node * secondChild, TR::Register * secondRegister)
   {
   if (!cg()->useClobberEvaluate())
      {
      if (firstRegister)
         {
         setReg1();
         }
      if (secondRegister)
         {
         setReg2();
         }

      // firstRegister is always assumed
      if (cg()->canClobberNodesRegister(firstChild))
         {
         setClob1();
         }
      else
         {
         resetClob1();
         }

      // don't touch secondChild memory refs
      if (!getMem2())
         {
         if (cg()->canClobberNodesRegister(secondChild))
            {
            setClob2();
            }
         else
            {
            resetClob2();
            }
         }
      }
   }