diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-01-28 22:29:18 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-01-28 22:29:18 +0000 | 
| commit | a4cfafe31a0d75a491d01096da85f0f3f012ef53 (patch) | |
| tree | a9b02ba457e77452a959e319966a388199a19d5d /llvm/lib/CodeGen/SelectionDAG | |
| parent | 3a46875e5460ab4c3d4cc60b2fe6b3bcc9eb0345 (diff) | |
| download | bcm5719-llvm-a4cfafe31a0d75a491d01096da85f0f3f012ef53.tar.gz bcm5719-llvm-a4cfafe31a0d75a491d01096da85f0f3f012ef53.zip | |
Get alpha working with memset/memcpy/memmove
llvm-svn: 19878
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 34 | 
1 files changed, 29 insertions, 5 deletions
| diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index b48c1b6aaba..32cf5970726 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -706,11 +706,35 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {    case ISD::MEMSET:    case ISD::MEMCPY:    case ISD::MEMMOVE: { -    Tmp1 = LegalizeOp(Node->getOperand(0)); -    Tmp2 = LegalizeOp(Node->getOperand(1)); -    Tmp3 = LegalizeOp(Node->getOperand(2)); -    SDOperand Tmp4 = LegalizeOp(Node->getOperand(3)); -    SDOperand Tmp5 = LegalizeOp(Node->getOperand(4)); +    Tmp1 = LegalizeOp(Node->getOperand(0));      // Function +    Tmp2 = LegalizeOp(Node->getOperand(1));      // Pointer + +    if (Node->getOpcode() == ISD::MEMSET) {      // memset = ubyte +      switch (getTypeAction(Node->getOperand(2).getValueType())) { +      case Expand: assert(0 && "Cannot expand a byte!"); +      case Legal: +        Tmp3 = LegalizeOp(Node->getOperand(1)); +        break; +      case Promote: +        Tmp3 = PromoteOp(Node->getOperand(1)); +        break; +      } +    } else { +      Tmp3 = LegalizeOp(Node->getOperand(2));    // memcpy/move = pointer,  +    } +    SDOperand Tmp4, Tmp5; +     +    switch (getTypeAction(Node->getOperand(3).getValueType())) {  // uint +    case Expand: assert(0 && "Cannot expand this yet!"); +    case Legal: +      Tmp4 = LegalizeOp(Node->getOperand(3)); +      Tmp5 = LegalizeOp(Node->getOperand(4)); +      break; +    case Promote: +      Tmp4 = PromoteOp(Node->getOperand(3)); +      Tmp5 = PromoteOp(Node->getOperand(4)); +      break; +    }      switch (TLI.getOperationAction(Node->getOpcode(), MVT::Other)) {      default: assert(0 && "This action not implemented for this operation!"); | 

