[llvm] [X86][GlobalISel] Enable G_SDIV/G_UDIV/G_SREM/G_UREM (PR #81615)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 19 17:08:29 PST 2024


================
@@ -1778,12 +1778,9 @@ bool X86InstructionSelector::selectMulDivRem(MachineInstr &I,
         .addImm(8);
----------------
topperc wrote:

Yes this is the code from X86ISelDAGToDAG.cpp

```
    if (HiReg == X86::AH && !SDValue(Node, 1).use_empty()) {                     
      SDValue AHCopy = CurDAG->getRegister(X86::AH, MVT::i8);                    
      unsigned AHExtOpcode =                                                     
          isSigned ? X86::MOVSX32rr8_NOREX : X86::MOVZX32rr8_NOREX;              
                                                                                 
      SDNode *RNode = CurDAG->getMachineNode(AHExtOpcode, dl, MVT::i32,          
                                             MVT::Glue, AHCopy, InGlue);         
      SDValue Result(RNode, 0);                                                  
      InGlue = SDValue(RNode, 1);                                                
                                                                                 
      Result =                                                                   
          CurDAG->getTargetExtractSubreg(X86::sub_8bit, dl, MVT::i8, Result);    
                                                                                 
      ReplaceUses(SDValue(Node, 1), Result);                                     
      LLVM_DEBUG(dbgs() << "=> "; Result.getNode()->dump(CurDAG);                
                 dbgs() << '\n');                                                
    }
```

https://github.com/llvm/llvm-project/pull/81615


More information about the llvm-commits mailing list