Lines Matching refs:Rem
354 bool llvm::expandRemainder(BinaryOperator *Rem) { in expandRemainder() argument
355 assert((Rem->getOpcode() == Instruction::SRem || in expandRemainder()
356 Rem->getOpcode() == Instruction::URem) && in expandRemainder()
359 IRBuilder<> Builder(Rem); in expandRemainder()
361 assert(!Rem->getType()->isVectorTy() && "Div over vectors not supported"); in expandRemainder()
364 if (Rem->getOpcode() == Instruction::SRem) { in expandRemainder()
365 Value *Remainder = generateSignedRemainderCode(Rem->getOperand(0), in expandRemainder()
366 Rem->getOperand(1), Builder); in expandRemainder()
369 bool IsInsertPoint = Rem->getIterator() == Builder.GetInsertPoint(); in expandRemainder()
370 Rem->replaceAllUsesWith(Remainder); in expandRemainder()
371 Rem->dropAllReferences(); in expandRemainder()
372 Rem->eraseFromParent(); in expandRemainder()
381 Rem = BO; in expandRemainder()
384 Value *Remainder = generatedUnsignedRemainderCode(Rem->getOperand(0), in expandRemainder()
385 Rem->getOperand(1), in expandRemainder()
388 Rem->replaceAllUsesWith(Remainder); in expandRemainder()
389 Rem->dropAllReferences(); in expandRemainder()
390 Rem->eraseFromParent(); in expandRemainder()
456 bool llvm::expandRemainderUpTo32Bits(BinaryOperator *Rem) { in expandRemainderUpTo32Bits() argument
457 assert((Rem->getOpcode() == Instruction::SRem || in expandRemainderUpTo32Bits()
458 Rem->getOpcode() == Instruction::URem) && in expandRemainderUpTo32Bits()
461 Type *RemTy = Rem->getType(); in expandRemainderUpTo32Bits()
470 return expandRemainder(Rem); in expandRemainderUpTo32Bits()
474 IRBuilder<> Builder(Rem); in expandRemainderUpTo32Bits()
482 if (Rem->getOpcode() == Instruction::SRem) { in expandRemainderUpTo32Bits()
483 ExtDividend = Builder.CreateSExt(Rem->getOperand(0), Int32Ty); in expandRemainderUpTo32Bits()
484 ExtDivisor = Builder.CreateSExt(Rem->getOperand(1), Int32Ty); in expandRemainderUpTo32Bits()
487 ExtDividend = Builder.CreateZExt(Rem->getOperand(0), Int32Ty); in expandRemainderUpTo32Bits()
488 ExtDivisor = Builder.CreateZExt(Rem->getOperand(1), Int32Ty); in expandRemainderUpTo32Bits()
493 Rem->replaceAllUsesWith(Trunc); in expandRemainderUpTo32Bits()
494 Rem->dropAllReferences(); in expandRemainderUpTo32Bits()
495 Rem->eraseFromParent(); in expandRemainderUpTo32Bits()
505 bool llvm::expandRemainderUpTo64Bits(BinaryOperator *Rem) { in expandRemainderUpTo64Bits() argument
506 assert((Rem->getOpcode() == Instruction::SRem || in expandRemainderUpTo64Bits()
507 Rem->getOpcode() == Instruction::URem) && in expandRemainderUpTo64Bits()
510 Type *RemTy = Rem->getType(); in expandRemainderUpTo64Bits()
516 return expandRemainder(Rem); in expandRemainderUpTo64Bits()
520 IRBuilder<> Builder(Rem); in expandRemainderUpTo64Bits()
528 if (Rem->getOpcode() == Instruction::SRem) { in expandRemainderUpTo64Bits()
529 ExtDividend = Builder.CreateSExt(Rem->getOperand(0), Int64Ty); in expandRemainderUpTo64Bits()
530 ExtDivisor = Builder.CreateSExt(Rem->getOperand(1), Int64Ty); in expandRemainderUpTo64Bits()
533 ExtDividend = Builder.CreateZExt(Rem->getOperand(0), Int64Ty); in expandRemainderUpTo64Bits()
534 ExtDivisor = Builder.CreateZExt(Rem->getOperand(1), Int64Ty); in expandRemainderUpTo64Bits()
539 Rem->replaceAllUsesWith(Trunc); in expandRemainderUpTo64Bits()
540 Rem->dropAllReferences(); in expandRemainderUpTo64Bits()
541 Rem->eraseFromParent(); in expandRemainderUpTo64Bits()