Lines Matching +full:fsin +full:- +full:output
1 //===-- CSKYISelLowering.cpp - CSKY DAG Lowering Implementation ----------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
12 //===----------------------------------------------------------------------===//
28 #define DEBUG_TYPE "csky-isel-lowering"
120 ISD::FSIN, ISD::FCOS, ISD::FSINCOS, ISD::FPOW, in CSKYTargetLowering()
380 // large enough to hold a0-a4. in LowerFormalArguments()
389 VarArgsSaveSize = XLenInBytes * (ArgRegs.size() - Idx); in LowerFormalArguments()
390 VaArgOffset = -VarArgsSaveSize; in LowerFormalArguments()
396 CSKYFI->setVarArgsFrameIndex(FI); in LowerFormalArguments()
410 ->getMemOperand() in LowerFormalArguments()
411 ->setValue((Value *)nullptr); in LowerFormalArguments()
414 CSKYFI->setVarArgsSaveSize(VarArgsSaveSize); in LowerFormalArguments()
452 // Copy the result values into the output registers. in LowerReturn()
504 // and output parameter nodes.
534 else if (CLI.CB && CLI.CB->isMustTailCall()) in LowerCall()
638 // Build a sequence of copy-to-reg nodes, chained and glued together. in LowerCall()
651 const GlobalValue *GV = S->getGlobal(); in LowerCall()
686 // Add a register mask operand representing the call-preserved registers. in LowerCall()
688 const uint32_t *Mask = TRI->getCallPreservedMask(MF, CallConv); in LowerCall()
787 N->getGlobal(), CSKYCP::CPValue, 0, getModifier(Flags), false); in getTargetConstantPoolValue()
860 // users of these frontends to use the ABI names for registers in LLVM-style in getRegForInlineAsmConstraint()
943 assert(CSKY::F0_32 <= FReg && FReg <= CSKY::F31_32 && "Unknown fp-reg"); in getRegForInlineAsmConstraint()
944 unsigned RegNo = FReg - CSKY::F0_32; in getRegForInlineAsmConstraint()
964 const TargetInstrInfo &TII = *BB->getParent()->getSubtarget().getInstrInfo(); in emitSelectPseudo()
968 // diamond control-flow pattern. The incoming instruction knows the in emitSelectPseudo()
971 const BasicBlock *LLVM_BB = BB->getBasicBlock(); in emitSelectPseudo()
972 MachineFunction::iterator It = ++BB->getIterator(); in emitSelectPseudo()
978 // fallthrough --> copyMBB in emitSelectPseudo()
980 MachineFunction *F = BB->getParent(); in emitSelectPseudo()
981 MachineBasicBlock *copyMBB = F->CreateMachineBasicBlock(LLVM_BB); in emitSelectPseudo()
982 MachineBasicBlock *sinkMBB = F->CreateMachineBasicBlock(LLVM_BB); in emitSelectPseudo()
983 F->insert(It, copyMBB); in emitSelectPseudo()
984 F->insert(It, sinkMBB); in emitSelectPseudo()
987 sinkMBB->splice(sinkMBB->begin(), BB, in emitSelectPseudo()
988 std::next(MachineBasicBlock::iterator(MI)), BB->end()); in emitSelectPseudo()
989 sinkMBB->transferSuccessorsAndUpdatePHIs(BB); in emitSelectPseudo()
992 BB->addSuccessor(copyMBB); in emitSelectPseudo()
993 BB->addSuccessor(sinkMBB); in emitSelectPseudo()
1005 // Update machine-CFG edges in emitSelectPseudo()
1006 BB->addSuccessor(sinkMBB); in emitSelectPseudo()
1013 BuildMI(*BB, BB->begin(), DL, TII.get(CSKY::PHI), MI.getOperand(0).getReg()) in emitSelectPseudo()
1049 N->getSymbol(), 0, getModifier(Flags)); in getTargetConstantPoolValue()
1060 N->getIndex(), 0, getModifier(Flags)); in getTargetConstantPoolValue()
1068 assert(N->getOffset() == 0); in getTargetConstantPoolValue()
1070 N->getBlockAddress(), CSKYCP::CPBlockAddress, 0, getModifier(Flags), in getTargetConstantPoolValue()
1079 assert(N->getOffset() == 0); in getTargetConstantPoolValue()
1081 N->getConstVal(), Type::getInt32Ty(*DAG.getContext()), in getTargetConstantPoolValue()
1089 return DAG.getTargetGlobalAddress(N->getGlobal(), DL, Ty, 0, Flags); in getTargetNode()
1095 return DAG.getTargetExternalSymbol(N->getSymbol(), Ty, Flags); in getTargetNode()
1101 return DAG.getTargetJumpTable(N->getIndex(), Ty, Flags); in getTargetNode()
1107 return DAG.getTargetBlockAddress(N->getBlockAddress(), Ty, N->getOffset(), in getTargetNode()
1115 return DAG.getTargetConstantPool(N->getConstVal(), Ty, N->getAlign(), in getTargetNode()
1116 N->getOffset(), Flags); in getTargetNode()
1151 int64_t Offset = N->getOffset(); in LowerGlobalAddress()
1153 const GlobalValue *GV = N->getGlobal(); in LowerGlobalAddress()
1201 SDValue FI = DAG.getFrameIndex(FuncInfo->getVarArgsFrameIndex(), in LowerVASTART()
1206 const Value *SV = cast<SrcValueSDNode>(Op.getOperand(2))->getValue(); in LowerVASTART()
1223 while (Depth--) in LowerFRAMEADDR()
1250 // live-in. in LowerRETURNADDR()
1270 int64_t Offset = N->getOffset(); in LowerGlobalTLSAddress()
1273 TLSModel::Model Model = getTargetMachine().getTLSModel(N->getGlobal()); in LowerGlobalTLSAddress()
1304 unsigned CSKYPCLabelIndex = CFI->createPICLabelUId(); in getStaticTLSAddr()
1314 CSKYConstantPoolConstant::Create(N->getGlobal(), CSKYCP::CPValue, PCAjust, in getStaticTLSAddr()
1326 MachinePointerInfo(N->getGlobal())); in getStaticTLSAddr()
1341 unsigned CSKYPCLabelIndex = CFI->createPICLabelUId(); in getDynamicTLSAddr()
1348 CSKYConstantPoolConstant::Create(N->getGlobal(), CSKYCP::CPValue, 4, in getDynamicTLSAddr()
1388 const APInt &Imm = ConstNode->getAPIntValue(); in decomposeMulByConstant()
1390 if ((Imm + 1).isPowerOf2() || (Imm - 1).isPowerOf2() || in decomposeMulByConstant()
1391 (1 - Imm).isPowerOf2()) in decomposeMulByConstant()
1396 if (!Subtarget.hasE2() && (-1 - Imm).isPowerOf2()) in decomposeMulByConstant()
1400 if (Imm.ugt(0xffff) && ((Imm - 2).isPowerOf2() || (Imm - 4).isPowerOf2()) && in decomposeMulByConstant()
1403 if (Imm.ugt(0xffff) && (Imm - 8).isPowerOf2() && Subtarget.has2E3()) in decomposeMulByConstant()