diff --git a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp index 910bc9d281259..efa75fd5681b3 100644 --- a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp @@ -1935,6 +1935,9 @@ void PPCFrameLowering::createTailCallBranchInstr(MachineBasicBlock &MBB) const { else if (JumpTarget.isSymbol()) BuildMI(MBB, MBBI, dl, TII.get(PPC::TAILB)). addExternalSymbol(JumpTarget.getSymbolName()); + else if (JumpTarget.isMCSymbol()) + BuildMI(MBB, MBBI, dl, TII.get(PPC::TAILB)) + .addSym(JumpTarget.getMCSymbol()); else llvm_unreachable("Expecting Global or External Symbol"); } else if (RetOpcode == PPC::TCRETURNri) { @@ -1954,6 +1957,9 @@ void PPCFrameLowering::createTailCallBranchInstr(MachineBasicBlock &MBB) const { else if (JumpTarget.isSymbol()) BuildMI(MBB, MBBI, dl, TII.get(PPC::TAILB8)). addExternalSymbol(JumpTarget.getSymbolName()); + else if (JumpTarget.isMCSymbol()) + BuildMI(MBB, MBBI, dl, TII.get(PPC::TAILB8)) + .addSym(JumpTarget.getMCSymbol()); else llvm_unreachable("Expecting Global or External Symbol"); } else if (RetOpcode == PPC::TCRETURNri8) { diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp index f69218056fc44..c536935379592 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -5082,9 +5082,8 @@ static bool hasSameArgumentList(const Function *CallerFn, const CallBase &CB) { // Returns true if TCO is possible between the callers and callees // calling conventions. -static bool -areCallingConvEligibleForTCO_64SVR4(CallingConv::ID CallerCC, - CallingConv::ID CalleeCC) { +static bool areCallingConvEligibleForTCO(CallingConv::ID CallerCC, + CallingConv::ID CalleeCC) { // Tail calls are possible with fastcc and ccc. auto isTailCallableCC = [] (CallingConv::ID CC){ return CC == CallingConv::C || CC == CallingConv::Fast; @@ -5113,7 +5112,7 @@ bool PPCTargetLowering::IsEligibleForTailCallOptimization_64SVR4( if (isVarArg) return false; // Check that the calling conventions are compatible for tco. - if (!areCallingConvEligibleForTCO_64SVR4(CallerCC, CalleeCC)) + if (!areCallingConvEligibleForTCO(CallerCC, CalleeCC)) return false; // Caller contains any byval parameter is not supported. @@ -5183,6 +5182,110 @@ bool PPCTargetLowering::IsEligibleForTailCallOptimization_64SVR4( return true; } +static bool +needStackSlotPassParameters_AIX(const PPCSubtarget &Subtarget, + const SmallVectorImpl &Outs) { + const bool IsPPC64 = Subtarget.isPPC64(); + const Align PtrAlign = IsPPC64 ? Align(8) : Align(4); + const unsigned PhyGPRsNum = 8; + const unsigned PhyVRsNum = 12; + unsigned PhyGPRAllocated = 0; + unsigned PhyVRAllocated = 0; + + for (unsigned i = 0; i != Outs.size(); ++i) { + MVT ArgVT = Outs[i].VT; + ISD::ArgFlagsTy ArgFlags = Outs[i].Flags; + if (ArgFlags.isByVal()) { + const unsigned ByValSize = ArgFlags.getByValSize(); + const unsigned StackSize = alignTo(ByValSize, PtrAlign); + PhyGPRAllocated += StackSize / PtrAlign.value(); + if (PhyGPRAllocated > PhyGPRsNum) + return true; + continue; + } + + switch (ArgVT.SimpleTy) { + default: + report_fatal_error("Unhandled value type for argument."); + case MVT::i64: + // i64 arguments should have been split to i32 for PPC32. + assert(IsPPC64 && "PPC32 should have split i64 values."); + [[fallthrough]]; + case MVT::i1: + case MVT::i32: + if (++PhyGPRAllocated > PhyGPRsNum) + return true; + break; + case MVT::f32: + case MVT::f64: { + const unsigned StoreSize = ArgVT.getStoreSize(); + PhyGPRAllocated += StoreSize / PtrAlign.value(); + if (PhyGPRAllocated > PhyGPRsNum) + return true; + break; + } + case MVT::v4f32: + case MVT::v4i32: + case MVT::v8i16: + case MVT::v16i8: + case MVT::v2i64: + case MVT::v2f64: + case MVT::v1i128: + if (++PhyVRAllocated > PhyVRsNum) + return true; + } + } + + return false; +} + +bool PPCTargetLowering::IsEligibleForTailCallOptimization_AIX( + const GlobalValue *CalleeGV, CallingConv::ID CalleeCC, + CallingConv::ID CallerCC, const CallBase *CB, bool isVarArg, + const SmallVectorImpl &Outs, const Function *CallerFunc, + bool isCalleeExternalSymbol) const { + bool TailCallOpt = getTargetMachine().Options.GuaranteedTailCallOpt; + + if (DisableSCO && !TailCallOpt) + return false; + + // Variadic argument functions are not supported. + if (isVarArg) + return false; + + // Check that the calling conventions are compatible for tco. + if (!areCallingConvEligibleForTCO(CallerCC, CalleeCC)) + return false; + + if (!Subtarget.isUsingPCRelativeCalls() && + !isFunctionGlobalAddress(CalleeGV) && !isCalleeExternalSymbol) + return false; + + // TCO allows altering callee ABI, so we don't have to check further. + if (CalleeCC == CallingConv::Fast && TailCallOpt) + return true; + + if (DisableSCO) + return false; + + if (CallerCC != CalleeCC && needStackSlotPassParameters_AIX(Subtarget, Outs)) + return false; + + // If callee use the same argument list that caller is using, then we can + // apply SCO on this case. If it is not, then we need to check if callee needs + // stack for passing arguments. + // PC Relative tail calls may not have a CallBase. + // If there is no CallBase we cannot verify if we have the same argument + // list so assume that we don't have the same argument list. + if (CB && !hasSameArgumentList(CallerFunc, *CB) && + needStackSlotPassParameters_AIX(Subtarget, Outs)) + return false; + else if (!CB && needStackSlotPassParameters_AIX(Subtarget, Outs)) + return false; + + return true; +} + /// IsEligibleForTailCallOptimization - Check whether the call is eligible /// for tail call optimization. Targets which want to do tail call /// optimization should implement this function. @@ -5190,7 +5293,13 @@ bool PPCTargetLowering::IsEligibleForTailCallOptimization( const GlobalValue *CalleeGV, CallingConv::ID CalleeCC, CallingConv::ID CallerCC, bool isVarArg, const SmallVectorImpl &Ins) const { - if (!getTargetMachine().Options.GuaranteedTailCallOpt) + bool TailCallOpt = getTargetMachine().Options.GuaranteedTailCallOpt; + + // Enable SCO on AIX. + if (!TailCallOpt && !Subtarget.isAIXABI()) + return false; + + if (DisableSCO) return false; // Variable argument functions are not supported. @@ -5869,6 +5978,7 @@ SDValue PPCTargetLowering::FinishCall( Callee.getOpcode() == ISD::TargetExternalSymbol || Callee.getOpcode() == ISD::TargetGlobalAddress || isa(Callee) || + (Subtarget.isAIXABI() && Callee.getOpcode() == ISD::MCSymbol) || (CFlags.IsIndirect && Subtarget.isUsingPCRelativeCalls())) && "Expecting a global address, external symbol, absolute value, " "register or an indirect tail call when PC Relative calls are " @@ -5936,9 +6046,14 @@ bool PPCTargetLowering::isEligibleForTCO( return IsEligibleForTailCallOptimization_64SVR4( CalleeGV, CalleeCC, CallerCC, CB, isVarArg, Outs, Ins, CallerFunc, isCalleeExternalSymbol); - else - return IsEligibleForTailCallOptimization(CalleeGV, CalleeCC, CallerCC, - isVarArg, Ins); + + else if (Subtarget.isAIXABI()) + return IsEligibleForTailCallOptimization_AIX(CalleeGV, CalleeCC, CallerCC, + CB, isVarArg, Outs, CallerFunc, + isCalleeExternalSymbol); + + return IsEligibleForTailCallOptimization(CalleeGV, CalleeCC, CallerCC, + isVarArg, Ins); } SDValue @@ -7244,9 +7359,6 @@ SDValue PPCTargetLowering::LowerFormalArguments_AIX( CallConv == CallingConv::Fast) && "Unexpected calling convention!"); - if (getTargetMachine().Options.GuaranteedTailCallOpt) - report_fatal_error("Tail call support is unimplemented on AIX."); - if (useSoftFloat()) report_fatal_error("Soft float support is unimplemented on AIX."); @@ -7616,6 +7728,8 @@ SDValue PPCTargetLowering::LowerCall_AIX( // The LSA is 24 bytes (6x4) in PPC32 and 48 bytes (6x8) in PPC64. const unsigned LinkageSize = Subtarget.getFrameLowering()->getLinkageSize(); const bool IsPPC64 = Subtarget.isPPC64(); + bool IsSibCall = + CFlags.IsTailCall && !getTargetMachine().Options.GuaranteedTailCallOpt; const EVT PtrVT = getPointerTy(DAG.getDataLayout()); const unsigned PtrByteSize = IsPPC64 ? 8 : 4; CCInfo.AllocateStack(LinkageSize, Align(PtrByteSize)); @@ -7631,9 +7745,15 @@ SDValue PPCTargetLowering::LowerCall_AIX( const unsigned NumBytes = std::max( LinkageSize + MinParameterSaveAreaSize, CCInfo.getStackSize()); + // To protect arguments on the stack from being clobbered in a tail call, + // force all the loads to happen before doing any other lowering. + if (CFlags.IsTailCall) + Chain = DAG.getStackArgumentTokenFactor(Chain); + // Adjust the stack pointer for the new arguments... // These operations are automatically eliminated by the prolog/epilog pass. - Chain = DAG.getCALLSEQ_START(Chain, NumBytes, 0, dl); + if (!IsSibCall) + Chain = DAG.getCALLSEQ_START(Chain, NumBytes, 0, dl); SDValue CallSeqStart = Chain; SmallVector, 8> RegsToPass; @@ -7821,7 +7941,6 @@ SDValue PPCTargetLowering::LowerCall_AIX( DAG.getStore(Chain, dl, Arg, PtrOff, MachinePointerInfo::getStack(MF, VA.getLocMemOffset()), Subtarget.getFrameLowering()->getStackAlign())); - continue; } @@ -7903,6 +8022,12 @@ SDValue PPCTargetLowering::LowerCall_AIX( InGlue = Chain.getValue(1); } + if (CFlags.IsTailCall && !IsSibCall) { + // Emit callseq_end just before tailcall node. + Chain = DAG.getCALLSEQ_END(Chain, NumBytes, 0, InGlue, dl); + InGlue = Chain.getValue(1); + } + const int SPDiff = 0; return FinishCall(CFlags, dl, DAG, RegsToPass, InGlue, Chain, CallSeqStart, Callee, SPDiff, NumBytes, Ins, InVals, CB); @@ -19242,9 +19367,9 @@ bool PPCTargetLowering::mayBeEmittedAsTailCall(const CallInst *CI) const { // Make sure the callee and caller calling conventions are eligible for tco. const Function *Caller = CI->getParent()->getParent(); - if (!areCallingConvEligibleForTCO_64SVR4(Caller->getCallingConv(), - CI->getCallingConv())) - return false; + if (!areCallingConvEligibleForTCO(Caller->getCallingConv(), + CI->getCallingConv())) + return false; // If the function is local then we have a good chance at tail-calling it return getTargetMachine().shouldAssumeDSOLocal(Callee); diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.h b/llvm/lib/Target/PowerPC/PPCISelLowering.h index 669430550f4e6..4cb0042c2f32e 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.h +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.h @@ -1250,6 +1250,12 @@ namespace llvm { CallingConv::ID CallerCC, bool isVarArg, const SmallVectorImpl &Ins) const; + bool IsEligibleForTailCallOptimization_AIX( + const GlobalValue *CalleeGV, CallingConv::ID CalleeCC, + CallingConv::ID CallerCC, const CallBase *CB, bool isVarArg, + const SmallVectorImpl &Outs, const Function *CallerFunc, + bool isCalleeExternalSymbol) const; + bool IsEligibleForTailCallOptimization_64SVR4( const GlobalValue *CalleeGV, CallingConv::ID CalleeCC, CallingConv::ID CallerCC, const CallBase *CB, bool isVarArg, diff --git a/llvm/lib/Target/PowerPC/PPCInstr64Bit.td b/llvm/lib/Target/PowerPC/PPCInstr64Bit.td index 269d30318bca8..aa913ae82484e 100644 --- a/llvm/lib/Target/PowerPC/PPCInstr64Bit.td +++ b/llvm/lib/Target/PowerPC/PPCInstr64Bit.td @@ -474,6 +474,8 @@ def : Pat<(PPCtc_return (i64 texternalsym:$dst), imm:$imm), def : Pat<(PPCtc_return CTRRC8:$dst, imm:$imm), (TCRETURNri8 CTRRC8:$dst, imm:$imm)>; +def : Pat<(PPCtc_return (i64 mcsym:$dst), imm:$imm), + (TCRETURNdi8 mcsym:$dst, imm:$imm)>; // 64-bit CR instructions let Interpretation64Bit = 1, isCodeGenOnly = 1 in { diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td index 1c45050cdf9ca..f2ce9db9ab1c9 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td @@ -3155,6 +3155,10 @@ def : Pat<(PPCtc_return CTRRC:$dst, imm:$imm), (TCRETURNri CTRRC:$dst, imm:$imm)>; def : Pat<(int_ppc_fence), (FENCE)>; + +def : Pat<(PPCtc_return (i32 mcsym:$dst), imm:$imm), + (TCRETURNdi mcsym:$dst, imm:$imm)>; + def : Pat<(int_ppc_readflm), (MFFS)>; def : Pat<(int_ppc_mffsl), (MFFSL)>; diff --git a/llvm/test/CodeGen/PowerPC/aix-tailcall-opt.ll b/llvm/test/CodeGen/PowerPC/aix-tailcall-opt.ll new file mode 100644 index 0000000000000..a23fd2a8ae2c0 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/aix-tailcall-opt.ll @@ -0,0 +1,111 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix < %s | FileCheck --check-prefix=AIX-32 %s +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix < %s | FileCheck --check-prefix=AIX-64 %s + +define hidden fastcc i32 @k(i32 %a, i32 %b) { +; AIX-32-LABEL: k: +; AIX-32: # %bb.0: # %entry +; AIX-32-NEXT: add 3, 3, 4 +; AIX-32-NEXT: blr +; +; AIX-64-LABEL: k: +; AIX-64: # %bb.0: # %entry +; AIX-64-NEXT: add 3, 3, 4 +; AIX-64-NEXT: blr +entry: + %c = add i32 %a, %b + ret i32 %c +} + +define hidden fastcc i32 @ff(i32 %a) { +; AIX-32-LABEL: ff: +; AIX-32: # %bb.0: # %entry +; AIX-32-NEXT: blr +; +; AIX-64-LABEL: ff: +; AIX-64: # %bb.0: # %entry +; AIX-64-NEXT: blr +entry: + ret i32 %a +} + +define fastcc i32 @f(i32 %a, i32 %b) { +; AIX-32-LABEL: f: +; AIX-32: # %bb.0: # %entry +; AIX-32-NEXT: b .ff +; AIX-32-NEXT: #TC_RETURNd .ff 0 +; +; AIX-64-LABEL: f: +; AIX-64: # %bb.0: # %entry +; AIX-64-NEXT: clrldi 3, 3, 32 +; AIX-64-NEXT: b .ff +; AIX-64-NEXT: #TC_RETURNd8 .ff 0 +entry: + %r = tail call fastcc i32 @ff(i32 %a) + ret i32 %r +} + +define fastcc i32 @kk(i32 %a) { +; AIX-32-LABEL: kk: +; AIX-32: # %bb.0: # %entry +; AIX-32-NEXT: li 4, 1024 +; AIX-32-NEXT: b .k +; AIX-32-NEXT: #TC_RETURNd .k 0 +; +; AIX-64-LABEL: kk: +; AIX-64: # %bb.0: # %entry +; AIX-64-NEXT: clrldi 3, 3, 32 +; AIX-64-NEXT: li 4, 1024 +; AIX-64-NEXT: b .k +; AIX-64-NEXT: #TC_RETURNd8 .k 0 +entry: + %r = tail call fastcc i32 @k(i32 %a, i32 1024) + ret i32 %r +} + +define fastcc i32 @g(i32 %a) { +; AIX-32-LABEL: g: +; AIX-32: # %bb.0: # %entry +; AIX-32-NEXT: b .ff +; AIX-32-NEXT: #TC_RETURNd .ff 0 +; +; AIX-64-LABEL: g: +; AIX-64: # %bb.0: # %entry +; AIX-64-NEXT: clrldi 3, 3, 32 +; AIX-64-NEXT: b .ff +; AIX-64-NEXT: #TC_RETURNd8 .ff 0 +entry: + %r = tail call fastcc i32 @ff(i32 %a) + ret i32 %r +} + +define fastcc i32 @gg(i32 %a) { +; AIX-32-LABEL: gg: +; AIX-32: # %bb.0: # %entry +; AIX-32-NEXT: mflr 0 +; AIX-32-NEXT: stwu 1, -64(1) +; AIX-32-NEXT: stw 0, 72(1) +; AIX-32-NEXT: bl .ff +; AIX-32-NEXT: addi 3, 3, 1 +; AIX-32-NEXT: addi 1, 1, 64 +; AIX-32-NEXT: lwz 0, 8(1) +; AIX-32-NEXT: mtlr 0 +; AIX-32-NEXT: blr +; +; AIX-64-LABEL: gg: +; AIX-64: # %bb.0: # %entry +; AIX-64-NEXT: mflr 0 +; AIX-64-NEXT: stdu 1, -112(1) +; AIX-64-NEXT: clrldi 3, 3, 32 +; AIX-64-NEXT: std 0, 128(1) +; AIX-64-NEXT: bl .ff +; AIX-64-NEXT: addi 3, 3, 1 +; AIX-64-NEXT: addi 1, 1, 112 +; AIX-64-NEXT: ld 0, 16(1) +; AIX-64-NEXT: mtlr 0 +; AIX-64-NEXT: blr +entry: + %r = tail call fastcc i32 @ff(i32 %a) + %r.0 = add i32 %r, 1 + ret i32 %r.0 +} diff --git a/llvm/test/CodeGen/PowerPC/aix-vector-byval.ll b/llvm/test/CodeGen/PowerPC/aix-vector-byval.ll index 8fcac7b6a5921..aa5bfe96284a9 100644 --- a/llvm/test/CodeGen/PowerPC/aix-vector-byval.ll +++ b/llvm/test/CodeGen/PowerPC/aix-vector-byval.ll @@ -42,7 +42,7 @@ define i32 @caller() { ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm, implicit $x3 entry: %vs = alloca %struct.B, align 16 - %call = tail call i32 @vec_struct_test(i32 0, ptr nonnull byval(%struct.B) align 16 %vs) + %call = call i32 @vec_struct_test(i32 0, ptr nonnull byval(%struct.B) align 16 %vs) ret i32 %call } diff --git a/llvm/test/CodeGen/PowerPC/byval-lhs.ll b/llvm/test/CodeGen/PowerPC/byval-lhs.ll index aef374a5edbb7..7bc7850a16954 100644 --- a/llvm/test/CodeGen/PowerPC/byval-lhs.ll +++ b/llvm/test/CodeGen/PowerPC/byval-lhs.ll @@ -38,7 +38,7 @@ define void @bar1(i64 %a) nounwind { ; AIX-NEXT: blr %s = alloca %struct.type8, align 8 store i64 %a, ptr %s, align 8 - %call = tail call ptr @f0(ptr noundef nonnull byval(%struct.type8) align 8 %s) + %call = call ptr @f0(ptr noundef nonnull byval(%struct.type8) align 8 %s) ret void } @@ -77,7 +77,7 @@ define void @bar2(i64 %a) nounwind { store i64 %a, ptr %index1, align 8 %index2 = getelementptr inbounds i64, ptr %s, i32 1 store i64 %a, ptr %index2, align 8 - %call = tail call ptr @f1(ptr noundef nonnull byval(%struct.type16) align 8 %s) + %call = call ptr @f1(ptr noundef nonnull byval(%struct.type16) align 8 %s) ret void } diff --git a/llvm/test/CodeGen/PowerPC/global-merge-aix-sections.ll b/llvm/test/CodeGen/PowerPC/global-merge-aix-sections.ll index c001633763a1f..45270b8f28252 100644 --- a/llvm/test/CodeGen/PowerPC/global-merge-aix-sections.ll +++ b/llvm/test/CodeGen/PowerPC/global-merge-aix-sections.ll @@ -17,10 +17,10 @@ ; Function Attrs: nounwind define void @g() { entry: - tail call void @f(ptr noundef nonnull @y, ptr noundef nonnull @z) - tail call void @f(ptr noundef nonnull @l, ptr noundef nonnull @z) - tail call void @h(ptr noundef nonnull @u) - tail call void @s(ptr noundef nonnull @myStruct1) + call void @f(ptr noundef nonnull @y, ptr noundef nonnull @z) + call void @f(ptr noundef nonnull @l, ptr noundef nonnull @z) + call void @h(ptr noundef nonnull @u) + call void @s(ptr noundef nonnull @myStruct1) ret void } diff --git a/llvm/test/CodeGen/PowerPC/lower-scalar-mass-afn.ll b/llvm/test/CodeGen/PowerPC/lower-scalar-mass-afn.ll index f3085ccc85c88..98f89db6feb91 100644 --- a/llvm/test/CodeGen/PowerPC/lower-scalar-mass-afn.ll +++ b/llvm/test/CodeGen/PowerPC/lower-scalar-mass-afn.ll @@ -86,7 +86,7 @@ define float @acosf_f32(float %a) { ; CHECK: __xl_acosf ; CHECK: blr entry: - %call = tail call afn float @acosf(float %a) + %call = call afn float @acosf(float %a) ret float %call } @@ -95,7 +95,7 @@ define float @acoshf_f32(float %a) { ; CHECK: __xl_acoshf ; CHECK: blr entry: - %call = tail call afn float @acoshf(float %a) + %call = call afn float @acoshf(float %a) ret float %call } @@ -104,7 +104,7 @@ define float @asinf_f32(float %a) { ; CHECK: __xl_asinf ; CHECK: blr entry: - %call = tail call afn float @asinf(float %a) + %call = call afn float @asinf(float %a) ret float %call } @@ -113,7 +113,7 @@ define float @asinhf_f32(float %a) { ; CHECK: __xl_asinhf ; CHECK: blr entry: - %call = tail call afn float @asinhf(float %a) + %call = call afn float @asinhf(float %a) ret float %call } @@ -122,7 +122,7 @@ define float @atan2f_f32(float %a, float %b) { ; CHECK: __xl_atan2f ; CHECK: blr entry: - %call = tail call afn float @atan2f(float %a, float %b) + %call = call afn float @atan2f(float %a, float %b) ret float %call } @@ -131,7 +131,7 @@ define float @atanf_f32(float %a) { ; CHECK: __xl_atanf ; CHECK: blr entry: - %call = tail call afn float @atanf(float %a) + %call = call afn float @atanf(float %a) ret float %call } @@ -140,7 +140,7 @@ define float @atanhf_f32(float %a) { ; CHECK: __xl_atanhf ; CHECK: blr entry: - %call = tail call afn float @atanhf(float %a) + %call = call afn float @atanhf(float %a) ret float %call } @@ -149,7 +149,7 @@ define float @cbrtf_f32(float %a) { ; CHECK: __xl_cbrtf ; CHECK: blr entry: - %call = tail call afn float @cbrtf(float %a) + %call = call afn float @cbrtf(float %a) ret float %call } @@ -158,7 +158,7 @@ define float @copysignf_f32(float %a, float %b) { ; CHECK: copysignf ; CHECK: blr entry: - %call = tail call afn float @copysignf(float %a, float %b) + %call = call afn float @copysignf(float %a, float %b) ret float %call } @@ -167,7 +167,7 @@ define float @cosf_f32(float %a) { ; CHECK: __xl_cosf ; CHECK: blr entry: - %call = tail call afn float @cosf(float %a) + %call = call afn float @cosf(float %a) ret float %call } @@ -176,7 +176,7 @@ define float @coshf_f32(float %a) { ; CHECK: __xl_coshf ; CHECK: blr entry: - %call = tail call afn float @coshf(float %a) + %call = call afn float @coshf(float %a) ret float %call } @@ -185,7 +185,7 @@ define float @erfcf_f32(float %a) { ; CHECK: __xl_erfcf ; CHECK: blr entry: - %call = tail call afn float @erfcf(float %a) + %call = call afn float @erfcf(float %a) ret float %call } @@ -194,7 +194,7 @@ define float @erff_f32(float %a) { ; CHECK: __xl_erff ; CHECK: blr entry: - %call = tail call afn float @erff(float %a) + %call = call afn float @erff(float %a) ret float %call } @@ -203,7 +203,7 @@ define float @expf_f32(float %a) { ; CHECK: __xl_expf ; CHECK: blr entry: - %call = tail call afn float @expf(float %a) + %call = call afn float @expf(float %a) ret float %call } @@ -212,7 +212,7 @@ define float @expm1f_f32(float %a) { ; CHECK: __xl_expm1f ; CHECK: blr entry: - %call = tail call afn float @expm1f(float %a) + %call = call afn float @expm1f(float %a) ret float %call } @@ -221,7 +221,7 @@ define float @hypotf_f32(float %a, float %b) { ; CHECK: __xl_hypotf ; CHECK: blr entry: - %call = tail call afn float @hypotf(float %a, float %b) + %call = call afn float @hypotf(float %a, float %b) ret float %call } @@ -230,7 +230,7 @@ define float @lgammaf_f32(float %a) { ; CHECK: __xl_lgammaf ; CHECK: blr entry: - %call = tail call afn float @lgammaf(float %a) + %call = call afn float @lgammaf(float %a) ret float %call } @@ -239,7 +239,7 @@ define float @log10f_f32(float %a) { ; CHECK: __xl_log10f ; CHECK: blr entry: - %call = tail call afn float @log10f(float %a) + %call = call afn float @log10f(float %a) ret float %call } @@ -248,7 +248,7 @@ define float @log1pf_f32(float %a) { ; CHECK: __xl_log1pf ; CHECK: blr entry: - %call = tail call afn float @log1pf(float %a) + %call = call afn float @log1pf(float %a) ret float %call } @@ -257,7 +257,7 @@ define float @logf_f32(float %a) { ; CHECK: __xl_logf ; CHECK: blr entry: - %call = tail call afn float @logf(float %a) + %call = call afn float @logf(float %a) ret float %call } @@ -266,7 +266,7 @@ define float @powf_f32(float %a, float %b) { ; CHECK: __xl_powf ; CHECK: blr entry: - %call = tail call afn float @powf(float %a, float %b) + %call = call afn float @powf(float %a, float %b) ret float %call } @@ -275,7 +275,7 @@ define float @rintf_f32(float %a) { ; CHECK-NOT: __xl_rintf ; CHECK: blr entry: - %call = tail call afn float @rintf(float %a) + %call = call afn float @rintf(float %a) ret float %call } @@ -284,7 +284,7 @@ define float @sinf_f32(float %a) { ; CHECK: __xl_sinf ; CHECK: blr entry: - %call = tail call afn float @sinf(float %a) + %call = call afn float @sinf(float %a) ret float %call } @@ -293,7 +293,7 @@ define float @sinhf_f32(float %a) { ; CHECK: __xl_sinhf ; CHECK: blr entry: - %call = tail call afn float @sinhf(float %a) + %call = call afn float @sinhf(float %a) ret float %call } @@ -302,7 +302,7 @@ define float @tanf_f32(float %a) { ; CHECK: __xl_tanf ; CHECK: blr entry: - %call = tail call afn float @tanf(float %a) + %call = call afn float @tanf(float %a) ret float %call } @@ -311,7 +311,7 @@ define float @tanhf_f32(float %a) { ; CHECK: __xl_tanhf ; CHECK: blr entry: - %call = tail call afn float @tanhf(float %a) + %call = call afn float @tanhf(float %a) ret float %call } @@ -320,7 +320,7 @@ define double @acos_f64(double %a) { ; CHECK: __xl_acos ; CHECK: blr entry: - %call = tail call afn double @acos(double %a) + %call = call afn double @acos(double %a) ret double %call } @@ -329,7 +329,7 @@ define double @acosh_f64(double %a) { ; CHECK: __xl_acosh ; CHECK: blr entry: - %call = tail call afn double @acosh(double %a) + %call = call afn double @acosh(double %a) ret double %call } @@ -338,7 +338,7 @@ define double @anint_f64(double %a) { ; CHECK-NOT: __xl_anint ; CHECK: blr entry: - %call = tail call afn double @anint(double %a) + %call = call afn double @anint(double %a) ret double %call } @@ -347,7 +347,7 @@ define double @asin_f64(double %a) { ; CHECK: __xl_asin ; CHECK: blr entry: - %call = tail call afn double @asin(double %a) + %call = call afn double @asin(double %a) ret double %call } @@ -356,7 +356,7 @@ define double @asinh_f64(double %a) { ; CHECK: __xl_asinh ; CHECK: blr entry: - %call = tail call afn double @asinh(double %a) + %call = call afn double @asinh(double %a) ret double %call } @@ -365,7 +365,7 @@ define double @atan_f64(double %a) { ; CHECK: __xl_atan ; CHECK: blr entry: - %call = tail call afn double @atan(double %a) + %call = call afn double @atan(double %a) ret double %call } @@ -374,7 +374,7 @@ define double @atan2_f64(double %a, double %b) { ; CHECK: __xl_atan2 ; CHECK: blr entry: - %call = tail call afn double @atan2(double %a, double %b) + %call = call afn double @atan2(double %a, double %b) ret double %call } @@ -383,7 +383,7 @@ define double @atanh_f64(double %a) { ; CHECK: __xl_atanh ; CHECK: blr entry: - %call = tail call afn double @atanh(double %a) + %call = call afn double @atanh(double %a) ret double %call } @@ -392,7 +392,7 @@ define double @cbrt_f64(double %a) { ; CHECK: __xl_cbrt ; CHECK: blr entry: - %call = tail call afn double @cbrt(double %a) + %call = call afn double @cbrt(double %a) ret double %call } @@ -401,7 +401,7 @@ define double @copysign_f64(double %a, double %b) { ; CHECK: copysign ; CHECK: blr entry: - %call = tail call afn double @copysign(double %a, double %b) + %call = call afn double @copysign(double %a, double %b) ret double %call } @@ -410,7 +410,7 @@ define double @cos_f64(double %a) { ; CHECK: __xl_cos ; CHECK: blr entry: - %call = tail call afn double @cos(double %a) + %call = call afn double @cos(double %a) ret double %call } @@ -419,7 +419,7 @@ define double @cosh_f64(double %a) { ; CHECK: __xl_cosh ; CHECK: blr entry: - %call = tail call afn double @cosh(double %a) + %call = call afn double @cosh(double %a) ret double %call } @@ -428,7 +428,7 @@ define double @cosisin_f64(double %a) { ; CHECK-NOT: __xl_cosisin ; CHECK: blr entry: - %call = tail call afn double @cosisin(double %a) + %call = call afn double @cosisin(double %a) ret double %call } @@ -437,7 +437,7 @@ define double @dnint_f64(double %a) { ; CHECK-NOT: __xl_dnint ; CHECK: blr entry: - %call = tail call afn double @dnint(double %a) + %call = call afn double @dnint(double %a) ret double %call } @@ -446,7 +446,7 @@ define double @erf_f64(double %a) { ; CHECK: __xl_erf ; CHECK: blr entry: - %call = tail call afn double @erf(double %a) + %call = call afn double @erf(double %a) ret double %call } @@ -455,7 +455,7 @@ define double @erfc_f64(double %a) { ; CHECK: __xl_erfc ; CHECK: blr entry: - %call = tail call afn double @erfc(double %a) + %call = call afn double @erfc(double %a) ret double %call } @@ -464,7 +464,7 @@ define double @exp_f64(double %a) { ; CHECK: __xl_exp ; CHECK: blr entry: - %call = tail call afn double @exp(double %a) + %call = call afn double @exp(double %a) ret double %call } @@ -473,7 +473,7 @@ define double @expm1_f64(double %a) { ; CHECK: __xl_expm1 ; CHECK: blr entry: - %call = tail call afn double @expm1(double %a) + %call = call afn double @expm1(double %a) ret double %call } @@ -482,7 +482,7 @@ define double @hypot_f64(double %a, double %b) { ; CHECK: __xl_hypot ; CHECK: blr entry: - %call = tail call afn double @hypot(double %a, double %b) + %call = call afn double @hypot(double %a, double %b) ret double %call } @@ -491,7 +491,7 @@ define double @lgamma_f64(double %a) { ; CHECK: __xl_lgamma ; CHECK: blr entry: - %call = tail call afn double @lgamma(double %a) + %call = call afn double @lgamma(double %a) ret double %call } @@ -500,7 +500,7 @@ define double @log_f64(double %a) { ; CHECK: __xl_log ; CHECK: blr entry: - %call = tail call afn double @log(double %a) + %call = call afn double @log(double %a) ret double %call } @@ -509,7 +509,7 @@ define double @log10_f64(double %a) { ; CHECK: __xl_log10 ; CHECK: blr entry: - %call = tail call afn double @log10(double %a) + %call = call afn double @log10(double %a) ret double %call } @@ -518,7 +518,7 @@ define double @log1p_f64(double %a) { ; CHECK: __xl_log1p ; CHECK: blr entry: - %call = tail call afn double @log1p(double %a) + %call = call afn double @log1p(double %a) ret double %call } @@ -527,7 +527,7 @@ define double @pow_f64(double %a, double %b) { ; CHECK: __xl_pow ; CHECK: blr entry: - %call = tail call afn double @pow(double %a, double %b) + %call = call afn double @pow(double %a, double %b) ret double %call } @@ -536,7 +536,7 @@ define double @rsqrt_f64(double %a) { ; CHECK: __xl_rsqrt ; CHECK: blr entry: - %call = tail call afn double @rsqrt(double %a) + %call = call afn double @rsqrt(double %a) ret double %call } @@ -545,7 +545,7 @@ define double @sin_f64(double %a) { ; CHECK: __xl_sin ; CHECK: blr entry: - %call = tail call afn double @sin(double %a) + %call = call afn double @sin(double %a) ret double %call } @@ -554,7 +554,7 @@ define double @sincos_f64(double %a) { ; CHECK-NOT: __xl_sincos ; CHECK: blr entry: - %call = tail call afn double @sincos(double %a) + %call = call afn double @sincos(double %a) ret double %call } @@ -563,7 +563,7 @@ define double @sinh_f64(double %a) { ; CHECK: __xl_sinh ; CHECK: blr entry: - %call = tail call afn double @sinh(double %a) + %call = call afn double @sinh(double %a) ret double %call } @@ -572,7 +572,7 @@ define double @sqrt_f64(double %a) { ; CHECK: __xl_sqrt ; CHECK: blr entry: - %call = tail call afn double @sqrt(double %a) + %call = call afn double @sqrt(double %a) ret double %call } @@ -581,7 +581,7 @@ define double @tan_f64(double %a) { ; CHECK: __xl_tan ; CHECK: blr entry: - %call = tail call afn double @tan(double %a) + %call = call afn double @tan(double %a) ret double %call } @@ -590,7 +590,7 @@ define double @tanh_f64(double %a) { ; CHECK: __xl_tanh ; CHECK: blr entry: - %call = tail call afn double @tanh(double %a) + %call = call afn double @tanh(double %a) ret double %call } @@ -599,7 +599,7 @@ define float @__acosf_finite_f32(float %a) { ; CHECK: __xl_acosf ; CHECK: blr entry: - %call = tail call afn float @__acosf_finite(float %a) + %call = call afn float @__acosf_finite(float %a) ret float %call } @@ -608,7 +608,7 @@ define float @__acoshf_finite_f32(float %a) { ; CHECK: __xl_acoshf ; CHECK: blr entry: - %call = tail call afn float @__acoshf_finite(float %a) + %call = call afn float @__acoshf_finite(float %a) ret float %call } @@ -617,7 +617,7 @@ define float @__asinf_finite_f32(float %a) { ; CHECK: __xl_asinf ; CHECK: blr entry: - %call = tail call afn float @__asinf_finite(float %a) + %call = call afn float @__asinf_finite(float %a) ret float %call } @@ -626,7 +626,7 @@ define float @__atan2f_finite_f32(float %a, float %b) { ; CHECK: __xl_atan2f ; CHECK: blr entry: - %call = tail call afn float @__atan2f_finite(float %a, float %b) + %call = call afn float @__atan2f_finite(float %a, float %b) ret float %call } @@ -635,7 +635,7 @@ define float @__atanhf_finite_f32(float %a) { ; CHECK: __xl_atanhf ; CHECK: blr entry: - %call = tail call afn float @__atanhf_finite(float %a) + %call = call afn float @__atanhf_finite(float %a) ret float %call } @@ -644,7 +644,7 @@ define float @__coshf_finite_f32(float %a) { ; CHECK: __xl_coshf ; CHECK: blr entry: - %call = tail call afn float @__coshf_finite(float %a) + %call = call afn float @__coshf_finite(float %a) ret float %call } define float @__expf_finite_f32(float %a) { @@ -652,7 +652,7 @@ define float @__expf_finite_f32(float %a) { ; CHECK: __xl_expf ; CHECK: blr entry: - %call = tail call afn float @__expf_finite(float %a) + %call = call afn float @__expf_finite(float %a) ret float %call } define float @__logf_finite_f32(float %a) { @@ -660,7 +660,7 @@ define float @__logf_finite_f32(float %a) { ; CHECK: __xl_logf ; CHECK: blr entry: - %call = tail call afn float @__logf_finite(float %a) + %call = call afn float @__logf_finite(float %a) ret float %call } define float @__log10f_finite_f32(float %a) { @@ -668,7 +668,7 @@ define float @__log10f_finite_f32(float %a) { ; CHECK: __xl_log10f ; CHECK: blr entry: - %call = tail call afn float @__log10f_finite(float %a) + %call = call afn float @__log10f_finite(float %a) ret float %call } define float @__powf_finite_f32(float %a, float %b) { @@ -676,7 +676,7 @@ define float @__powf_finite_f32(float %a, float %b) { ; CHECK: __xl_powf ; CHECK: blr entry: - %call = tail call afn float @__powf_finite(float %a, float %b) + %call = call afn float @__powf_finite(float %a, float %b) ret float %call } define float @__sinhf_finite_f32(float %a) { @@ -684,7 +684,7 @@ define float @__sinhf_finite_f32(float %a) { ; CHECK: __xl_sinhf ; CHECK: blr entry: - %call = tail call afn float @__sinhf_finite(float %a) + %call = call afn float @__sinhf_finite(float %a) ret float %call } @@ -693,7 +693,7 @@ define double @__acos_finite_f64(double %a) { ; CHECK: __xl_acos ; CHECK: blr entry: - %call = tail call afn double @__acos_finite(double %a) + %call = call afn double @__acos_finite(double %a) ret double %call } @@ -702,7 +702,7 @@ define double @__acosh_finite_f64(double %a) { ; CHECK: __xl_acosh ; CHECK: blr entry: - %call = tail call afn double @__acosh_finite(double %a) + %call = call afn double @__acosh_finite(double %a) ret double %call } @@ -711,7 +711,7 @@ define double @__asin_finite_f64(double %a) { ; CHECK: __xl_asin ; CHECK: blr entry: - %call = tail call afn double @__asin_finite(double %a) + %call = call afn double @__asin_finite(double %a) ret double %call } @@ -720,7 +720,7 @@ define double @__atan2_finite_f64(double %a, double %b) { ; CHECK: __xl_atan2 ; CHECK: blr entry: - %call = tail call afn double @__atan2_finite(double %a, double %b) + %call = call afn double @__atan2_finite(double %a, double %b) ret double %call } @@ -729,7 +729,7 @@ define double @__atanh_finite_f64(double %a) { ; CHECK: __xl_atanh ; CHECK: blr entry: - %call = tail call afn double @__atanh_finite(double %a) + %call = call afn double @__atanh_finite(double %a) ret double %call } @@ -738,7 +738,7 @@ define double @__cosh_finite_f64(double %a) { ; CHECK: __xl_cosh ; CHECK: blr entry: - %call = tail call afn double @__cosh_finite(double %a) + %call = call afn double @__cosh_finite(double %a) ret double %call } @@ -747,7 +747,7 @@ define double @__exp_finite_f64(double %a) { ; CHECK: __xl_exp ; CHECK: blr entry: - %call = tail call afn double @__exp_finite(double %a) + %call = call afn double @__exp_finite(double %a) ret double %call } @@ -756,7 +756,7 @@ define double @__log_finite_f64(double %a) { ; CHECK: __xl_log ; CHECK: blr entry: - %call = tail call afn double @__log_finite(double %a) + %call = call afn double @__log_finite(double %a) ret double %call } @@ -765,7 +765,7 @@ define double @__log10_finite_f64(double %a) { ; CHECK: __xl_log10 ; CHECK: blr entry: - %call = tail call afn double @__log10_finite(double %a) + %call = call afn double @__log10_finite(double %a) ret double %call } @@ -774,7 +774,7 @@ define double @__pow_finite_f64(double %a, double %b) { ; CHECK: __xl_pow ; CHECK: blr entry: - %call = tail call afn double @__pow_finite(double %a, double %b) + %call = call afn double @__pow_finite(double %a, double %b) ret double %call } @@ -783,6 +783,6 @@ define double @__sinh_finite_f64(double %a) { ; CHECK: __xl_sinh ; CHECK: blr entry: - %call = tail call afn double @__sinh_finite(double %a) + %call = call afn double @__sinh_finite(double %a) ret double %call } diff --git a/llvm/test/CodeGen/PowerPC/lower-scalar-mass-fast.ll b/llvm/test/CodeGen/PowerPC/lower-scalar-mass-fast.ll index 8c22d43040d36..f9185dabd005d 100644 --- a/llvm/test/CodeGen/PowerPC/lower-scalar-mass-fast.ll +++ b/llvm/test/CodeGen/PowerPC/lower-scalar-mass-fast.ll @@ -86,7 +86,7 @@ define float @acosf_f32(float %a) { ; CHECK: __xl_acosf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @acosf(float %a) + %call = call nnan ninf afn nsz float @acosf(float %a) ret float %call } @@ -95,7 +95,7 @@ define float @acoshf_f32(float %a) { ; CHECK: __xl_acoshf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @acoshf(float %a) + %call = call nnan ninf afn nsz float @acoshf(float %a) ret float %call } @@ -104,7 +104,7 @@ define float @asinf_f32(float %a) { ; CHECK: __xl_asinf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @asinf(float %a) + %call = call nnan ninf afn nsz float @asinf(float %a) ret float %call } @@ -113,7 +113,7 @@ define float @asinhf_f32(float %a) { ; CHECK: __xl_asinhf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @asinhf(float %a) + %call = call nnan ninf afn nsz float @asinhf(float %a) ret float %call } @@ -122,7 +122,7 @@ define float @atan2f_f32(float %a, float %b) { ; CHECK: __xl_atan2f_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @atan2f(float %a, float %b) + %call = call nnan ninf afn nsz float @atan2f(float %a, float %b) ret float %call } @@ -131,7 +131,7 @@ define float @atanf_f32(float %a) { ; CHECK: __xl_atanf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @atanf(float %a) + %call = call nnan ninf afn nsz float @atanf(float %a) ret float %call } @@ -140,7 +140,7 @@ define float @atanhf_f32(float %a) { ; CHECK: __xl_atanhf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @atanhf(float %a) + %call = call nnan ninf afn nsz float @atanhf(float %a) ret float %call } @@ -149,7 +149,7 @@ define float @cbrtf_f32(float %a) { ; CHECK: __xl_cbrtf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @cbrtf(float %a) + %call = call nnan ninf afn nsz float @cbrtf(float %a) ret float %call } @@ -158,7 +158,7 @@ define float @copysignf_f32(float %a, float %b) { ; CHECK: copysignf ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @copysignf(float %a, float %b) + %call = call nnan ninf afn nsz float @copysignf(float %a, float %b) ret float %call } @@ -167,7 +167,7 @@ define float @cosf_f32(float %a) { ; CHECK: __xl_cosf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @cosf(float %a) + %call = call nnan ninf afn nsz float @cosf(float %a) ret float %call } @@ -176,7 +176,7 @@ define float @coshf_f32(float %a) { ; CHECK: __xl_coshf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @coshf(float %a) + %call = call nnan ninf afn nsz float @coshf(float %a) ret float %call } @@ -185,7 +185,7 @@ define float @erfcf_f32(float %a) { ; CHECK: __xl_erfcf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @erfcf(float %a) + %call = call nnan ninf afn nsz float @erfcf(float %a) ret float %call } @@ -194,7 +194,7 @@ define float @erff_f32(float %a) { ; CHECK: __xl_erff_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @erff(float %a) + %call = call nnan ninf afn nsz float @erff(float %a) ret float %call } @@ -203,7 +203,7 @@ define float @expf_f32(float %a) { ; CHECK: __xl_expf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @expf(float %a) + %call = call nnan ninf afn nsz float @expf(float %a) ret float %call } @@ -212,7 +212,7 @@ define float @expm1f_f32(float %a) { ; CHECK: __xl_expm1f_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @expm1f(float %a) + %call = call nnan ninf afn nsz float @expm1f(float %a) ret float %call } @@ -221,7 +221,7 @@ define float @hypotf_f32(float %a, float %b) { ; CHECK: __xl_hypotf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @hypotf(float %a, float %b) + %call = call nnan ninf afn nsz float @hypotf(float %a, float %b) ret float %call } @@ -230,7 +230,7 @@ define float @lgammaf_f32(float %a) { ; CHECK: __xl_lgammaf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @lgammaf(float %a) + %call = call nnan ninf afn nsz float @lgammaf(float %a) ret float %call } @@ -239,7 +239,7 @@ define float @log10f_f32(float %a) { ; CHECK: __xl_log10f_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @log10f(float %a) + %call = call nnan ninf afn nsz float @log10f(float %a) ret float %call } @@ -248,7 +248,7 @@ define float @log1pf_f32(float %a) { ; CHECK: __xl_log1pf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @log1pf(float %a) + %call = call nnan ninf afn nsz float @log1pf(float %a) ret float %call } @@ -257,7 +257,7 @@ define float @logf_f32(float %a) { ; CHECK: __xl_logf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @logf(float %a) + %call = call nnan ninf afn nsz float @logf(float %a) ret float %call } @@ -266,7 +266,7 @@ define float @powf_f32(float %a, float %b) { ; CHECK: __xl_powf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @powf(float %a, float %b) + %call = call nnan ninf afn nsz float @powf(float %a, float %b) ret float %call } @@ -275,7 +275,7 @@ define float @rintf_f32(float %a) { ; CHECK-NOT: __xl_rintf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @rintf(float %a) + %call = call nnan ninf afn nsz float @rintf(float %a) ret float %call } @@ -284,7 +284,7 @@ define float @sinf_f32(float %a) { ; CHECK: __xl_sinf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @sinf(float %a) + %call = call nnan ninf afn nsz float @sinf(float %a) ret float %call } @@ -293,7 +293,7 @@ define float @sinhf_f32(float %a) { ; CHECK: __xl_sinhf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @sinhf(float %a) + %call = call nnan ninf afn nsz float @sinhf(float %a) ret float %call } @@ -302,7 +302,7 @@ define float @tanf_f32(float %a) { ; CHECK: __xl_tanf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @tanf(float %a) + %call = call nnan ninf afn nsz float @tanf(float %a) ret float %call } @@ -311,7 +311,7 @@ define float @tanhf_f32(float %a) { ; CHECK: __xl_tanhf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @tanhf(float %a) + %call = call nnan ninf afn nsz float @tanhf(float %a) ret float %call } @@ -320,7 +320,7 @@ define double @acos_f64(double %a) { ; CHECK: __xl_acos_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @acos(double %a) + %call = call nnan ninf afn nsz double @acos(double %a) ret double %call } @@ -329,7 +329,7 @@ define double @acosh_f64(double %a) { ; CHECK: __xl_acosh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @acosh(double %a) + %call = call nnan ninf afn nsz double @acosh(double %a) ret double %call } @@ -338,7 +338,7 @@ define double @anint_f64(double %a) { ; CHECK-NOT: __xl_anint_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @anint(double %a) + %call = call nnan ninf afn nsz double @anint(double %a) ret double %call } @@ -347,7 +347,7 @@ define double @asin_f64(double %a) { ; CHECK: __xl_asin_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @asin(double %a) + %call = call nnan ninf afn nsz double @asin(double %a) ret double %call } @@ -356,7 +356,7 @@ define double @asinh_f64(double %a) { ; CHECK: __xl_asinh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @asinh(double %a) + %call = call nnan ninf afn nsz double @asinh(double %a) ret double %call } @@ -365,7 +365,7 @@ define double @atan_f64(double %a) { ; CHECK: __xl_atan_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @atan(double %a) + %call = call nnan ninf afn nsz double @atan(double %a) ret double %call } @@ -374,7 +374,7 @@ define double @atan2_f64(double %a) { ; CHECK: __xl_atan2_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @atan2(double %a) + %call = call nnan ninf afn nsz double @atan2(double %a) ret double %call } @@ -383,7 +383,7 @@ define double @atanh_f64(double %a) { ; CHECK: __xl_atanh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @atanh(double %a) + %call = call nnan ninf afn nsz double @atanh(double %a) ret double %call } @@ -392,7 +392,7 @@ define double @cbrt_f64(double %a) { ; CHECK: __xl_cbrt_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @cbrt(double %a) + %call = call nnan ninf afn nsz double @cbrt(double %a) ret double %call } @@ -401,7 +401,7 @@ define double @copysign_f64(double %a, double %b) { ; CHECK: copysign ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @copysign(double %a, double %b) + %call = call nnan ninf afn nsz double @copysign(double %a, double %b) ret double %call } @@ -410,7 +410,7 @@ define double @cos_f64(double %a) { ; CHECK: __xl_cos_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @cos(double %a) + %call = call nnan ninf afn nsz double @cos(double %a) ret double %call } @@ -419,7 +419,7 @@ define double @cosh_f64(double %a) { ; CHECK: __xl_cosh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @cosh(double %a) + %call = call nnan ninf afn nsz double @cosh(double %a) ret double %call } @@ -428,7 +428,7 @@ define double @cosisin_f64(double %a) { ; CHECK-NOT: __xl_cosisin_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @cosisin(double %a) + %call = call nnan ninf afn nsz double @cosisin(double %a) ret double %call } @@ -437,7 +437,7 @@ define double @dnint_f64(double %a) { ; CHECK-NOT: __xl_dnint_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @dnint(double %a) + %call = call nnan ninf afn nsz double @dnint(double %a) ret double %call } @@ -446,7 +446,7 @@ define double @erf_f64(double %a) { ; CHECK: __xl_erf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @erf(double %a) + %call = call nnan ninf afn nsz double @erf(double %a) ret double %call } @@ -455,7 +455,7 @@ define double @erfc_f64(double %a) { ; CHECK: __xl_erfc_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @erfc(double %a) + %call = call nnan ninf afn nsz double @erfc(double %a) ret double %call } @@ -464,7 +464,7 @@ define double @exp_f64(double %a) { ; CHECK: __xl_exp_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @exp(double %a) + %call = call nnan ninf afn nsz double @exp(double %a) ret double %call } @@ -473,7 +473,7 @@ define double @expm1_f64(double %a) { ; CHECK: __xl_expm1_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @expm1(double %a) + %call = call nnan ninf afn nsz double @expm1(double %a) ret double %call } @@ -482,7 +482,7 @@ define double @hypot_f64(double %a, double %b) { ; CHECK: __xl_hypot_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @hypot(double %a, double %b) + %call = call nnan ninf afn nsz double @hypot(double %a, double %b) ret double %call } @@ -491,7 +491,7 @@ define double @lgamma_f64(double %a) { ; CHECK: __xl_lgamma_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @lgamma(double %a) + %call = call nnan ninf afn nsz double @lgamma(double %a) ret double %call } @@ -500,7 +500,7 @@ define double @log_f64(double %a) { ; CHECK: __xl_log_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @log(double %a) + %call = call nnan ninf afn nsz double @log(double %a) ret double %call } @@ -509,7 +509,7 @@ define double @log10_f64(double %a) { ; CHECK: __xl_log10_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @log10(double %a) + %call = call nnan ninf afn nsz double @log10(double %a) ret double %call } @@ -518,7 +518,7 @@ define double @log1p_f64(double %a) { ; CHECK: __xl_log1p_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @log1p(double %a) + %call = call nnan ninf afn nsz double @log1p(double %a) ret double %call } @@ -527,7 +527,7 @@ define double @pow_f64(double %a, double %b) { ; CHECK: __xl_pow_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @pow(double %a, double %b) + %call = call nnan ninf afn nsz double @pow(double %a, double %b) ret double %call } @@ -536,7 +536,7 @@ define double @rsqrt_f64(double %a) { ; CHECK: __xl_rsqrt_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @rsqrt(double %a) + %call = call nnan ninf afn nsz double @rsqrt(double %a) ret double %call } @@ -545,7 +545,7 @@ define double @sin_f64(double %a) { ; CHECK: __xl_sin_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @sin(double %a) + %call = call nnan ninf afn nsz double @sin(double %a) ret double %call } @@ -554,7 +554,7 @@ define double @sincos_f64(double %a) { ; CHECK-NOT: __xl_sincos_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @sincos(double %a) + %call = call nnan ninf afn nsz double @sincos(double %a) ret double %call } @@ -563,7 +563,7 @@ define double @sinh_f64(double %a) { ; CHECK: __xl_sinh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @sinh(double %a) + %call = call nnan ninf afn nsz double @sinh(double %a) ret double %call } @@ -572,7 +572,7 @@ define double @sqrt_f64(double %a) { ; CHECK: __xl_sqrt_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @sqrt(double %a) + %call = call nnan ninf afn nsz double @sqrt(double %a) ret double %call } @@ -581,7 +581,7 @@ define double @tan_f64(double %a) { ; CHECK: __xl_tan_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @tan(double %a) + %call = call nnan ninf afn nsz double @tan(double %a) ret double %call } @@ -590,7 +590,7 @@ define double @tanh_f64(double %a) { ; CHECK: __xl_tanh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @tanh(double %a) + %call = call nnan ninf afn nsz double @tanh(double %a) ret double %call } @@ -599,7 +599,7 @@ define float @__acosf_finite_f32(float %a) { ; CHECK: __xl_acosf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__acosf_finite(float %a) + %call = call nnan ninf afn nsz float @__acosf_finite(float %a) ret float %call } @@ -608,7 +608,7 @@ define float @__acoshf_finite_f32(float %a) { ; CHECK: __xl_acoshf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__acoshf_finite(float %a) + %call = call nnan ninf afn nsz float @__acoshf_finite(float %a) ret float %call } @@ -617,7 +617,7 @@ define float @__asinf_finite_f32(float %a) { ; CHECK: __xl_asinf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__asinf_finite(float %a) + %call = call nnan ninf afn nsz float @__asinf_finite(float %a) ret float %call } @@ -626,7 +626,7 @@ define float @__atan2f_finite_f32(float %a, float %b) { ; CHECK: __xl_atan2f_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__atan2f_finite(float %a, float %b) + %call = call nnan ninf afn nsz float @__atan2f_finite(float %a, float %b) ret float %call } @@ -635,7 +635,7 @@ define float @__atanhf_finite_f32(float %a) { ; CHECK: __xl_atanhf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__atanhf_finite(float %a) + %call = call nnan ninf afn nsz float @__atanhf_finite(float %a) ret float %call } @@ -644,7 +644,7 @@ define float @__coshf_finite_f32(float %a) { ; CHECK: __xl_coshf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__coshf_finite(float %a) + %call = call nnan ninf afn nsz float @__coshf_finite(float %a) ret float %call } @@ -653,7 +653,7 @@ define float @__expf_finite_f32(float %a) { ; CHECK: __xl_expf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__expf_finite(float %a) + %call = call nnan ninf afn nsz float @__expf_finite(float %a) ret float %call } @@ -662,7 +662,7 @@ define float @__logf_finite_f32(float %a) { ; CHECK: __xl_logf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__logf_finite(float %a) + %call = call nnan ninf afn nsz float @__logf_finite(float %a) ret float %call } @@ -671,7 +671,7 @@ define float @__log10f_finite_f32(float %a) { ; CHECK: __xl_log10f_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__log10f_finite(float %a) + %call = call nnan ninf afn nsz float @__log10f_finite(float %a) ret float %call } @@ -680,7 +680,7 @@ define float @__powf_finite_f32(float %a, float %b) { ; CHECK: __xl_powf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float %b) + %call = call nnan ninf afn nsz float @__powf_finite(float %a, float %b) ret float %call } @@ -689,7 +689,7 @@ define float @__sinhf_finite_f32(float %a) { ; CHECK: __xl_sinhf_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz float @__sinhf_finite(float %a) + %call = call nnan ninf afn nsz float @__sinhf_finite(float %a) ret float %call } @@ -698,7 +698,7 @@ define double @__acos_finite_f64(double %a) { ; CHECK: __xl_acos_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__acos_finite(double %a) + %call = call nnan ninf afn nsz double @__acos_finite(double %a) ret double %call } @@ -707,7 +707,7 @@ define double @__acosh_finite_f64(double %a) { ; CHECK: __xl_acosh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__acosh_finite(double %a) + %call = call nnan ninf afn nsz double @__acosh_finite(double %a) ret double %call } @@ -716,7 +716,7 @@ define double @__asin_finite_f64(double %a) { ; CHECK: __xl_asin_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__asin_finite(double %a) + %call = call nnan ninf afn nsz double @__asin_finite(double %a) ret double %call } @@ -725,7 +725,7 @@ define double @__atan2_finite_f64(double %a, double %b) { ; CHECK: __xl_atan2_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__atan2_finite(double %a, double %b) + %call = call nnan ninf afn nsz double @__atan2_finite(double %a, double %b) ret double %call } @@ -734,7 +734,7 @@ define double @__atanh_finite_f64(double %a) { ; CHECK: __xl_atanh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__atanh_finite(double %a) + %call = call nnan ninf afn nsz double @__atanh_finite(double %a) ret double %call } @@ -743,7 +743,7 @@ define double @__cosh_finite_f64(double %a) { ; CHECK: __xl_cosh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__cosh_finite(double %a) + %call = call nnan ninf afn nsz double @__cosh_finite(double %a) ret double %call } @@ -752,7 +752,7 @@ define double @__exp_finite_f64(double %a) { ; CHECK: __xl_exp_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__exp_finite(double %a) + %call = call nnan ninf afn nsz double @__exp_finite(double %a) ret double %call } @@ -761,7 +761,7 @@ define double @__log_finite_f64(double %a) { ; CHECK: __xl_log_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__log_finite(double %a) + %call = call nnan ninf afn nsz double @__log_finite(double %a) ret double %call } @@ -770,7 +770,7 @@ define double @__log10_finite_f64(double %a) { ; CHECK: __xl_log10_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__log10_finite(double %a) + %call = call nnan ninf afn nsz double @__log10_finite(double %a) ret double %call } @@ -779,7 +779,7 @@ define double @__pow_finite_f64(double %a, double %b) { ; CHECK: __xl_pow_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double %b) + %call = call nnan ninf afn nsz double @__pow_finite(double %a, double %b) ret double %call } @@ -788,6 +788,6 @@ define double @__sinh_finite_f64(double %a) { ; CHECK: __xl_sinh_finite ; CHECK: blr entry: - %call = tail call nnan ninf afn nsz double @__sinh_finite(double %a) + %call = call nnan ninf afn nsz double @__sinh_finite(double %a) ret double %call } diff --git a/llvm/test/CodeGen/PowerPC/lower-scalar-mass-nofast.ll b/llvm/test/CodeGen/PowerPC/lower-scalar-mass-nofast.ll index 6624b5752139c..585189008825d 100644 --- a/llvm/test/CodeGen/PowerPC/lower-scalar-mass-nofast.ll +++ b/llvm/test/CodeGen/PowerPC/lower-scalar-mass-nofast.ll @@ -87,7 +87,7 @@ define float @acosf_f32_nofast(float %a) { ; CHECK-NOT: __xl_acosf_finite ; CHECK: blr entry: - %call = tail call float @acosf(float %a) + %call = call float @acosf(float %a) ret float %call } @@ -97,7 +97,7 @@ define float @acoshf_f32_nofast(float %a) { ; CHECK-NOT: __xl_acoshf_finite ; CHECK: blr entry: - %call = tail call float @acoshf(float %a) + %call = call float @acoshf(float %a) ret float %call } @@ -107,7 +107,7 @@ define float @asinf_f32_nofast(float %a) { ; CHECK-NOT: __xl_asinf_finite ; CHECK: blr entry: - %call = tail call float @asinf(float %a) + %call = call float @asinf(float %a) ret float %call } @@ -117,7 +117,7 @@ define float @asinhf_f32_nofast(float %a) { ; CHECK-NOT: __xl_asinhf_finite ; CHECK: blr entry: - %call = tail call float @asinhf(float %a) + %call = call float @asinhf(float %a) ret float %call } @@ -127,7 +127,7 @@ define float @atan2f_f32_nofast(float %a, float %b) { ; CHECK-NOT: __xl_atan2f_finite ; CHECK: blr entry: - %call = tail call float @atan2f(float %a, float %b) + %call = call float @atan2f(float %a, float %b) ret float %call } @@ -137,7 +137,7 @@ define float @atanf_f32_nofast(float %a) { ; CHECK-NOT: __xl_atanf_finite ; CHECK: blr entry: - %call = tail call float @atanf(float %a) + %call = call float @atanf(float %a) ret float %call } @@ -147,7 +147,7 @@ define float @atanhf_f32_nofast(float %a) { ; CHECK-NOT: __xl_atanhf_finite ; CHECK: blr entry: - %call = tail call float @atanhf(float %a) + %call = call float @atanhf(float %a) ret float %call } @@ -157,7 +157,7 @@ define float @cbrtf_f32_nofast(float %a) { ; CHECK-NOT: __xl_cbrtf_finite ; CHECK: blr entry: - %call = tail call float @cbrtf(float %a) + %call = call float @cbrtf(float %a) ret float %call } @@ -167,7 +167,7 @@ define float @copysignf_f32_nofast(float %a, float %b) { ; CHECK-NOT: __xl_copysignf_finite ; CHECK: blr entry: - %call = tail call float @copysignf(float %a, float %b) + %call = call float @copysignf(float %a, float %b) ret float %call } @@ -177,7 +177,7 @@ define float @cosf_f32_nofast(float %a) { ; CHECK-NOT: __xl_cosf_finite ; CHECK: blr entry: - %call = tail call float @cosf(float %a) + %call = call float @cosf(float %a) ret float %call } @@ -187,7 +187,7 @@ define float @coshf_f32_nofast(float %a) { ; CHECK-NOT: __xl_coshf_finite ; CHECK: blr entry: - %call = tail call float @coshf(float %a) + %call = call float @coshf(float %a) ret float %call } @@ -197,7 +197,7 @@ define float @erfcf_f32_nofast(float %a) { ; CHECK-NOT: __xl_erfcf_finite ; CHECK: blr entry: - %call = tail call float @erfcf(float %a) + %call = call float @erfcf(float %a) ret float %call } @@ -207,7 +207,7 @@ define float @erff_f32_nofast(float %a) { ; CHECK-NOT: __xl_erff_finite ; CHECK: blr entry: - %call = tail call float @erff(float %a) + %call = call float @erff(float %a) ret float %call } @@ -217,7 +217,7 @@ define float @expf_f32_nofast(float %a) { ; CHECK-NOT: __xl_expf_finite ; CHECK: blr entry: - %call = tail call float @expf(float %a) + %call = call float @expf(float %a) ret float %call } @@ -227,7 +227,7 @@ define float @expm1f_f32_nofast(float %a) { ; CHECK-NOT: __xl_expm1f_finite ; CHECK: blr entry: - %call = tail call float @expm1f(float %a) + %call = call float @expm1f(float %a) ret float %call } @@ -237,7 +237,7 @@ define float @hypotf_f32_nofast(float %a, float %b) { ; CHECK-NOT: __xl_hypotf_finite ; CHECK: blr entry: - %call = tail call float @hypotf(float %a, float %b) + %call = call float @hypotf(float %a, float %b) ret float %call } @@ -247,7 +247,7 @@ define float @lgammaf_f32_nofast(float %a) { ; CHECK-NOT: __xl_lgammaf_finite ; CHECK: blr entry: - %call = tail call float @lgammaf(float %a) + %call = call float @lgammaf(float %a) ret float %call } @@ -257,7 +257,7 @@ define float @log10f_f32_nofast(float %a) { ; CHECK-NOT: __xl_log10f_finite ; CHECK: blr entry: - %call = tail call float @log10f(float %a) + %call = call float @log10f(float %a) ret float %call } @@ -267,7 +267,7 @@ define float @log1pf_f32_nofast(float %a) { ; CHECK-NOT: __xl_log1pf_finite ; CHECK: blr entry: - %call = tail call float @log1pf(float %a) + %call = call float @log1pf(float %a) ret float %call } @@ -277,7 +277,7 @@ define float @logf_f32_nofast(float %a) { ; CHECK-NOT: __xl_logf_finite ; CHECK: blr entry: - %call = tail call float @logf(float %a) + %call = call float @logf(float %a) ret float %call } @@ -287,7 +287,7 @@ define float @powf_f32_nofast(float %a, float %b) { ; CHECK-NOT: __xl_powf_finite ; CHECK: blr entry: - %call = tail call float @powf(float %a, float %b) + %call = call float @powf(float %a, float %b) ret float %call } @@ -297,7 +297,7 @@ define float @rintf_f32_nofast(float %a) { ; CHECK-NOT: __xl_rintf_finite ; CHECK: blr entry: - %call = tail call float @rintf(float %a) + %call = call float @rintf(float %a) ret float %call } @@ -307,7 +307,7 @@ define float @sinf_f32_nofast(float %a) { ; CHECK-NOT: __xl_sinf_finite ; CHECK: blr entry: - %call = tail call float @sinf(float %a) + %call = call float @sinf(float %a) ret float %call } @@ -317,7 +317,7 @@ define float @sinhf_f32_nofast(float %a) { ; CHECK-NOT: __xl_sinhf_finite ; CHECK: blr entry: - %call = tail call float @sinhf(float %a) + %call = call float @sinhf(float %a) ret float %call } @@ -327,7 +327,7 @@ define float @tanf_f32_nofast(float %a) { ; CHECK-NOT: __xl_tanf_finite ; CHECK: blr entry: - %call = tail call float @tanf(float %a) + %call = call float @tanf(float %a) ret float %call } @@ -337,7 +337,7 @@ define float @tanhf_f32_nofast(float %a) { ; CHECK-NOT: __xl_tanhf_finite ; CHECK: blr entry: - %call = tail call float @tanhf(float %a) + %call = call float @tanhf(float %a) ret float %call } @@ -347,7 +347,7 @@ define double @acos_f64_nofast(double %a) { ; CHECK-NOT: __xl_acos_finite ; CHECK: blr entry: - %call = tail call double @acos(double %a) + %call = call double @acos(double %a) ret double %call } @@ -357,7 +357,7 @@ define double @acosh_f64_nofast(double %a) { ; CHECK-NOT: __xl_acosh_finite ; CHECK: blr entry: - %call = tail call double @acosh(double %a) + %call = call double @acosh(double %a) ret double %call } @@ -367,7 +367,7 @@ define double @anint_f64_nofast(double %a) { ; CHECK-NOT: __xl_anint_finite ; CHECK: blr entry: - %call = tail call double @anint(double %a) + %call = call double @anint(double %a) ret double %call } @@ -377,7 +377,7 @@ define double @asin_f64_nofast(double %a) { ; CHECK-NOT: __xl_asin_finite ; CHECK: blr entry: - %call = tail call double @asin(double %a) + %call = call double @asin(double %a) ret double %call } @@ -387,7 +387,7 @@ define double @asinh_f64_nofast(double %a) { ; CHECK-NOT: __xl_asinh_finite ; CHECK: blr entry: - %call = tail call double @asinh(double %a) + %call = call double @asinh(double %a) ret double %call } @@ -397,7 +397,7 @@ define double @atan_f64_nofast(double %a) { ; CHECK-NOT: __xl_atan_finite ; CHECK: blr entry: - %call = tail call double @atan(double %a) + %call = call double @atan(double %a) ret double %call } @@ -407,7 +407,7 @@ define double @atan2_f64_nofast(double %a) { ; CHECK-NOT: __xl_atan2_finite ; CHECK: blr entry: - %call = tail call double @atan2(double %a) + %call = call double @atan2(double %a) ret double %call } @@ -417,7 +417,7 @@ define double @atanh_f64_nofast(double %a) { ; CHECK-NOT: __xl_atanh_finite ; CHECK: blr entry: - %call = tail call double @atanh(double %a) + %call = call double @atanh(double %a) ret double %call } @@ -427,7 +427,7 @@ define double @cbrt_f64_nofast(double %a) { ; CHECK-NOT: __xl_cbrt_finite ; CHECK: blr entry: - %call = tail call double @cbrt(double %a) + %call = call double @cbrt(double %a) ret double %call } @@ -437,7 +437,7 @@ define double @copysign_f64_nofast(double %a, double %b) { ; CHECK-NOT: __xl_copysign_finite ; CHECK: blr entry: - %call = tail call double @copysign(double %a, double %b) + %call = call double @copysign(double %a, double %b) ret double %call } @@ -447,7 +447,7 @@ define double @cos_f64_nofast(double %a) { ; CHECK-NOT: __xl_cos_finite ; CHECK: blr entry: - %call = tail call double @cos(double %a) + %call = call double @cos(double %a) ret double %call } @@ -457,7 +457,7 @@ define double @cosh_f64_nofast(double %a) { ; CHECK-NOT: __xl_cosh_finite ; CHECK: blr entry: - %call = tail call double @cosh(double %a) + %call = call double @cosh(double %a) ret double %call } @@ -467,7 +467,7 @@ define double @cosisin_f64_nofast(double %a) { ; CHECK-NOT: __xl_cosisin_finite ; CHECK: blr entry: - %call = tail call double @cosisin(double %a) + %call = call double @cosisin(double %a) ret double %call } @@ -477,7 +477,7 @@ define double @dnint_f64_nofast(double %a) { ; CHECK-NOT: __xl_dnint_finite ; CHECK: blr entry: - %call = tail call double @dnint(double %a) + %call = call double @dnint(double %a) ret double %call } @@ -487,7 +487,7 @@ define double @erf_f64_nofast(double %a) { ; CHECK-NOT: __xl_erf_finite ; CHECK: blr entry: - %call = tail call double @erf(double %a) + %call = call double @erf(double %a) ret double %call } @@ -497,7 +497,7 @@ define double @erfc_f64_nofast(double %a) { ; CHECK-NOT: __xl_erfc_finite ; CHECK: blr entry: - %call = tail call double @erfc(double %a) + %call = call double @erfc(double %a) ret double %call } @@ -507,7 +507,7 @@ define double @exp_f64_nofast(double %a) { ; CHECK-NOT: __xl_exp_finite ; CHECK: blr entry: - %call = tail call double @exp(double %a) + %call = call double @exp(double %a) ret double %call } @@ -517,7 +517,7 @@ define double @expm1_f64_nofast(double %a) { ; CHECK-NOT: __xl_expm1_finite ; CHECK: blr entry: - %call = tail call double @expm1(double %a) + %call = call double @expm1(double %a) ret double %call } @@ -527,7 +527,7 @@ define double @hypot_f64_nofast(double %a, double %b) { ; CHECK-NOT: __xl_hypot_finite ; CHECK: blr entry: - %call = tail call double @hypot(double %a, double %b) + %call = call double @hypot(double %a, double %b) ret double %call } @@ -537,7 +537,7 @@ define double @lgamma_f64_nofast(double %a) { ; CHECK-NOT: __xl_lgamma_finite ; CHECK: blr entry: - %call = tail call double @lgamma(double %a) + %call = call double @lgamma(double %a) ret double %call } @@ -547,7 +547,7 @@ define double @log_f64_nofast(double %a) { ; CHECK-NOT: __xl_log_finite ; CHECK: blr entry: - %call = tail call double @log(double %a) + %call = call double @log(double %a) ret double %call } @@ -557,7 +557,7 @@ define double @log10_f64_nofast(double %a) { ; CHECK-NOT: __xl_log10_finite ; CHECK: blr entry: - %call = tail call double @log10(double %a) + %call = call double @log10(double %a) ret double %call } @@ -567,7 +567,7 @@ define double @log1p_f64_nofast(double %a) { ; CHECK-NOT: __xl_log1p_finite ; CHECK: blr entry: - %call = tail call double @log1p(double %a) + %call = call double @log1p(double %a) ret double %call } @@ -577,7 +577,7 @@ define double @pow_f64_nofast(double %a, double %b) { ; CHECK-NOT: __xl_pow_finite ; CHECK: blr entry: - %call = tail call double @pow(double %a, double %b) + %call = call double @pow(double %a, double %b) ret double %call } @@ -587,7 +587,7 @@ define double @rsqrt_f64_nofast(double %a) { ; CHECK-NOT: __xl_rsqrt_finite ; CHECK: blr entry: - %call = tail call double @rsqrt(double %a) + %call = call double @rsqrt(double %a) ret double %call } @@ -597,7 +597,7 @@ define double @sin_f64_nofast(double %a) { ; CHECK-NOT: __xl_sin_finite ; CHECK: blr entry: - %call = tail call double @sin(double %a) + %call = call double @sin(double %a) ret double %call } @@ -607,7 +607,7 @@ define double @sincos_f64_nofast(double %a) { ; CHECK-NOT: __xl_sincos_finite ; CHECK: blr entry: - %call = tail call double @sincos(double %a) + %call = call double @sincos(double %a) ret double %call } @@ -617,7 +617,7 @@ define double @sinh_f64_nofast(double %a) { ; CHECK-NOT: __xl_sinh_finite ; CHECK: blr entry: - %call = tail call double @sinh(double %a) + %call = call double @sinh(double %a) ret double %call } @@ -627,7 +627,7 @@ define double @sqrt_f64_nofast(double %a) { ; CHECK-NOT: __xl_sqrt_finite ; CHECK: blr entry: - %call = tail call double @sqrt(double %a) + %call = call double @sqrt(double %a) ret double %call } @@ -637,7 +637,7 @@ define double @tan_f64_nofast(double %a) { ; CHECK-NOT: __xl_tan_finite ; CHECK: blr entry: - %call = tail call double @tan(double %a) + %call = call double @tan(double %a) ret double %call } @@ -647,7 +647,7 @@ define double @tanh_f64_nofast(double %a) { ; CHECK-NOT: __xl_tanh_finite ; CHECK: blr entry: - %call = tail call double @tanh(double %a) + %call = call double @tanh(double %a) ret double %call } @@ -657,7 +657,7 @@ define float @__acosf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_acosf_finite ; CHECK: blr entry: - %call = tail call float @__acosf_finite(float %a) + %call = call float @__acosf_finite(float %a) ret float %call } @@ -667,7 +667,7 @@ define float @__acoshf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_acoshf_finite ; CHECK: blr entry: - %call = tail call float @__acoshf_finite(float %a) + %call = call float @__acoshf_finite(float %a) ret float %call } @@ -677,7 +677,7 @@ define float @__asinf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_asinf_finite ; CHECK: blr entry: - %call = tail call float @__asinf_finite(float %a) + %call = call float @__asinf_finite(float %a) ret float %call } @@ -687,7 +687,7 @@ define float @__atan2f_finite_f32_nofast(float %a, float %b) { ; CHECK-NOT: __xl_atan2f_finite ; CHECK: blr entry: - %call = tail call float @__atan2f_finite(float %a, float %b) + %call = call float @__atan2f_finite(float %a, float %b) ret float %call } @@ -697,7 +697,7 @@ define float @__atanhf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_atanhf_finite ; CHECK: blr entry: - %call = tail call float @__atanhf_finite(float %a) + %call = call float @__atanhf_finite(float %a) ret float %call } @@ -707,7 +707,7 @@ define float @__coshf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_coshf_finite ; CHECK: blr entry: - %call = tail call float @__coshf_finite(float %a) + %call = call float @__coshf_finite(float %a) ret float %call } @@ -717,7 +717,7 @@ define float @__expf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_expf_finite ; CHECK: blr entry: - %call = tail call float @__expf_finite(float %a) + %call = call float @__expf_finite(float %a) ret float %call } @@ -727,7 +727,7 @@ define float @__logf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_logf_finite ; CHECK: blr entry: - %call = tail call float @__logf_finite(float %a) + %call = call float @__logf_finite(float %a) ret float %call } @@ -737,7 +737,7 @@ define float @__log10f_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_log10f_finite ; CHECK: blr entry: - %call = tail call float @__log10f_finite(float %a) + %call = call float @__log10f_finite(float %a) ret float %call } @@ -747,7 +747,7 @@ define float @__powf_finite_f32_nofast(float %a, float %b) { ; CHECK-NOT: __xl_powf_finite ; CHECK: blr entry: - %call = tail call float @__powf_finite(float %a, float %b) + %call = call float @__powf_finite(float %a, float %b) ret float %call } @@ -757,7 +757,7 @@ define float @__sinhf_finite_f32_nofast(float %a) { ; CHECK-NOT: __xl_sinhf_finite ; CHECK: blr entry: - %call = tail call float @__sinhf_finite(float %a) + %call = call float @__sinhf_finite(float %a) ret float %call } @@ -767,7 +767,7 @@ define double @__acos_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_acos_finite ; CHECK: blr entry: - %call = tail call double @__acos_finite(double %a) + %call = call double @__acos_finite(double %a) ret double %call } @@ -777,7 +777,7 @@ define double @__acosh_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_acosh_finite ; CHECK: blr entry: - %call = tail call double @__acosh_finite(double %a) + %call = call double @__acosh_finite(double %a) ret double %call } @@ -787,7 +787,7 @@ define double @__asin_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_asin_finite ; CHECK: blr entry: - %call = tail call double @__asin_finite(double %a) + %call = call double @__asin_finite(double %a) ret double %call } @@ -797,7 +797,7 @@ define double @__atan2_finite_f64_nofast(double %a, double %b) { ; CHECK-NOT: __xl_atan2_finite ; CHECK: blr entry: - %call = tail call double @__atan2_finite(double %a, double %b) + %call = call double @__atan2_finite(double %a, double %b) ret double %call } @@ -807,7 +807,7 @@ define double @__atanh_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_atanh_finite ; CHECK: blr entry: - %call = tail call double @__atanh_finite(double %a) + %call = call double @__atanh_finite(double %a) ret double %call } @@ -817,7 +817,7 @@ define double @__cosh_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_cosh_finite ; CHECK: blr entry: - %call = tail call double @__cosh_finite(double %a) + %call = call double @__cosh_finite(double %a) ret double %call } @@ -827,7 +827,7 @@ define double @__exp_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_exp_finite ; CHECK: blr entry: - %call = tail call double @__exp_finite(double %a) + %call = call double @__exp_finite(double %a) ret double %call } @@ -837,7 +837,7 @@ define double @__log_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_log_finite ; CHECK: blr entry: - %call = tail call double @__log_finite(double %a) + %call = call double @__log_finite(double %a) ret double %call } @@ -847,7 +847,7 @@ define double @__log10_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_log10_finite ; CHECK: blr entry: - %call = tail call double @__log10_finite(double %a) + %call = call double @__log10_finite(double %a) ret double %call } @@ -857,7 +857,7 @@ define double @__pow_finite_f64_nofast(double %a, double %b) { ; CHECK-NOT: __xl_pow_finite ; CHECK: blr entry: - %call = tail call double @__pow_finite(double %a, double %b) + %call = call double @__pow_finite(double %a, double %b) ret double %call } @@ -867,7 +867,7 @@ define double @__sinh_finite_f64_nofast(double %a) { ; CHECK-NOT: __xl_sinh_finite ; CHECK: blr entry: - %call = tail call double @__sinh_finite(double %a) + %call = call double @__sinh_finite(double %a) ret double %call } diff --git a/llvm/test/CodeGen/PowerPC/merge-private.ll b/llvm/test/CodeGen/PowerPC/merge-private.ll index b50783d10928e..d6fe9aae33ec6 100644 --- a/llvm/test/CodeGen/PowerPC/merge-private.ll +++ b/llvm/test/CodeGen/PowerPC/merge-private.ll @@ -108,7 +108,7 @@ define dso_local void @print_func() { ; LINUX64BE-NEXT: mtlr r0 ; LINUX64BE-NEXT: blr entry: - %call = tail call signext i32 @puts(ptr noundef nonnull dereferenceable(1) @.str) - %call1 = tail call signext i32 @puts(ptr noundef nonnull dereferenceable(1) @str) + %call = call signext i32 @puts(ptr noundef nonnull dereferenceable(1) @.str) + %call1 = call signext i32 @puts(ptr noundef nonnull dereferenceable(1) @str) ret void } diff --git a/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll b/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll index bc143e8c7ea4c..8e155554a71f6 100644 --- a/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll +++ b/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll @@ -292,7 +292,7 @@ define dso_local signext i32 @str1() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.1) + %call = call signext i32 @callee(ptr noundef nonnull @.str.1) ret i32 %call } diff --git a/llvm/test/CodeGen/PowerPC/mergeable-string-pool-tls.ll b/llvm/test/CodeGen/PowerPC/mergeable-string-pool-tls.ll index aa0b441646fd3..e243e0be678af 100644 --- a/llvm/test/CodeGen/PowerPC/mergeable-string-pool-tls.ll +++ b/llvm/test/CodeGen/PowerPC/mergeable-string-pool-tls.ll @@ -118,9 +118,9 @@ define void @print_tls_func() { ; LINUX64BE-NEXT: mtlr r0 ; LINUX64BE-NEXT: blr entry: - %0 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @a) - %1 = tail call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @b) - %call = tail call signext i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c) + %0 = call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @a) + %1 = call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @b) + %call = call signext i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c) ret void } @@ -187,7 +187,7 @@ define void @test_func() { ; LINUX64BE-NEXT: mtlr r0 ; LINUX64BE-NEXT: blr entry: - tail call void @callee(ptr noundef nonnull @d) #4 + call void @callee(ptr noundef nonnull @d) #4 ret void } @@ -254,7 +254,7 @@ define void @test_func2() { ; LINUX64BE-NEXT: mtlr r0 ; LINUX64BE-NEXT: blr entry: - tail call void @callee2(ptr noundef nonnull @e) #4 + call void @callee2(ptr noundef nonnull @e) #4 ret void } diff --git a/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll b/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll index 6a21a100bb990..01b2f54b0a9ea 100644 --- a/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll +++ b/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll @@ -94,7 +94,7 @@ define dso_local signext i32 @str1() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.1) + %call = call signext i32 @callee(ptr noundef nonnull @.str.1) ret i32 %call } @@ -159,7 +159,7 @@ define dso_local signext i32 @str2() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.2) + %call = call signext i32 @callee(ptr noundef nonnull @.str.2) ret i32 %call } @@ -261,8 +261,8 @@ define dso_local signext i32 @str3() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.3) - %call1 = tail call signext i32 @callee(ptr noundef nonnull @.str.2) + %call = call signext i32 @callee(ptr noundef nonnull @.str.3) + %call1 = call signext i32 @callee(ptr noundef nonnull @.str.2) %add = add nsw i32 %call1, %call ret i32 %add } @@ -326,7 +326,7 @@ define dso_local signext i32 @str4() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.4) + %call = call signext i32 @callee(ptr noundef nonnull @.str.4) ret i32 %call } @@ -389,7 +389,7 @@ define dso_local signext i32 @str5() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.5) + %call = call signext i32 @callee(ptr noundef nonnull @.str.5) ret i32 %call } @@ -749,8 +749,8 @@ define dso_local signext i32 @str7() local_unnamed_addr #0 { ; LINUX64LE-NEXT: blr entry: %0 = load ptr, ptr @GLOBALSTRING, align 8 - %call = tail call signext i32 @callee(ptr noundef %0) - %call1 = tail call signext i32 @callee(ptr noundef nonnull @.str.8) + %call = call signext i32 @callee(ptr noundef %0) + %call1 = call signext i32 @callee(ptr noundef nonnull @.str.8) %add = add nsw i32 %call1, %call ret i32 %add } @@ -847,8 +847,8 @@ define dso_local signext i32 @mixed1() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @calleeInt(ptr noundef nonnull @IntArray2) - %call1 = tail call signext i32 @callee(ptr noundef nonnull @.str.6) + %call = call signext i32 @calleeInt(ptr noundef nonnull @IntArray2) + %call1 = call signext i32 @callee(ptr noundef nonnull @.str.6) %add = add nsw i32 %call1, %call ret i32 %add } @@ -1087,7 +1087,7 @@ define dso_local signext i32 @str9() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.9) + %call = call signext i32 @callee(ptr noundef nonnull @.str.9) ret i32 %call } @@ -1150,7 +1150,7 @@ define dso_local signext i32 @str10() local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %call = tail call signext i32 @callee(ptr noundef nonnull @.str.10) + %call = call signext i32 @callee(ptr noundef nonnull @.str.10) ret i32 %call } diff --git a/llvm/test/CodeGen/PowerPC/milicode32.ll b/llvm/test/CodeGen/PowerPC/milicode32.ll index 78d036202fe4e..0df53f4059c62 100644 --- a/llvm/test/CodeGen/PowerPC/milicode32.ll +++ b/llvm/test/CodeGen/PowerPC/milicode32.ll @@ -29,7 +29,7 @@ define i32 @memcmp_test(ptr nocapture noundef readonly %ptr1, ptr nocapture noun ; CHECK-LINUX32-P9-NEXT: mtlr r0 ; CHECK-LINUX32-P9-NEXT: blr entry: - %call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i32 noundef %num) + %call = call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i32 noundef %num) ret i32 %call } diff --git a/llvm/test/CodeGen/PowerPC/milicode64.ll b/llvm/test/CodeGen/PowerPC/milicode64.ll index 8b87529d9a6d8..b54035f174c7c 100644 --- a/llvm/test/CodeGen/PowerPC/milicode64.ll +++ b/llvm/test/CodeGen/PowerPC/milicode64.ll @@ -46,7 +46,7 @@ define noundef i32 @_Z11memcmp_testPKvS0_m(ptr noundef readonly captures(none) % ; CHECK-AIX-64-P9-NEXT: mtlr r0 ; CHECK-AIX-64-P9-NEXT: blr entry: - %call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i64 noundef %num) + %call = call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i64 noundef %num) ret i32 %call } diff --git a/llvm/test/CodeGen/PowerPC/pow-025-075-nointrinsic-scalar-mass-fast.ll b/llvm/test/CodeGen/PowerPC/pow-025-075-nointrinsic-scalar-mass-fast.ll index 3e0cdb03d3868..5bcf05ac57290 100644 --- a/llvm/test/CodeGen/PowerPC/pow-025-075-nointrinsic-scalar-mass-fast.ll +++ b/llvm/test/CodeGen/PowerPC/pow-025-075-nointrinsic-scalar-mass-fast.ll @@ -40,7 +40,7 @@ define float @powf_f32_fast025(float %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz float @powf(float %a, float 2.500000e-01) + %call = call nnan ninf afn nsz float @powf(float %a, float 2.500000e-01) ret float %call } @@ -77,7 +77,7 @@ define double @pow_f64_fast025(double %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz double @pow(double %a, double 2.500000e-01) + %call = call nnan ninf afn nsz double @pow(double %a, double 2.500000e-01) ret double %call } @@ -114,7 +114,7 @@ define float @powf_f32_fast075(float %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz float @powf(float %a, float 7.500000e-01) + %call = call nnan ninf afn nsz float @powf(float %a, float 7.500000e-01) ret float %call } @@ -151,7 +151,7 @@ define double @pow_f64_fast075(double %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz double @pow(double %a, double 7.500000e-01) + %call = call nnan ninf afn nsz double @pow(double %a, double 7.500000e-01) ret double %call } @@ -188,7 +188,7 @@ define float @powf_f32_fast050(float %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz float @powf(float %a, float 5.000000e-01) + %call = call nnan ninf afn nsz float @powf(float %a, float 5.000000e-01) ret float %call } @@ -225,7 +225,7 @@ define double @pow_f64_fast050(double %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz double @pow(double %a, double 5.000000e-01) + %call = call nnan ninf afn nsz double @pow(double %a, double 5.000000e-01) ret double %call } @@ -264,7 +264,7 @@ define float @__powf_finite_f32_fast025(float %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float 2.500000e-01) + %call = call nnan ninf afn nsz float @__powf_finite(float %a, float 2.500000e-01) ret float %call } @@ -301,7 +301,7 @@ define double @__pow_finite_f64_fast025(double %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double 2.500000e-01) + %call = call nnan ninf afn nsz double @__pow_finite(double %a, double 2.500000e-01) ret double %call } @@ -338,7 +338,7 @@ define float @__powf_finite_f32_fast075(float %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float 7.500000e-01) + %call = call nnan ninf afn nsz float @__powf_finite(float %a, float 7.500000e-01) ret float %call } @@ -375,7 +375,7 @@ define double @__pow_finite_f64_fast075(double %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double 7.500000e-01) + %call = call nnan ninf afn nsz double @__pow_finite(double %a, double 7.500000e-01) ret double %call } @@ -412,7 +412,7 @@ define float @__powf_finite_f32_fast050(float %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float 5.000000e-01) + %call = call nnan ninf afn nsz float @__powf_finite(float %a, float 5.000000e-01) ret float %call } @@ -449,7 +449,7 @@ define double @__pow_finite_f64_fast050(double %a) #1 { ; CHECK-AIX-NEXT: mtlr 0 ; CHECK-AIX-NEXT: blr entry: - %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double 5.000000e-01) + %call = call nnan ninf afn nsz double @__pow_finite(double %a, double 5.000000e-01) ret double %call } diff --git a/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll b/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll index f9d2c259a4c19..7629211b099de 100644 --- a/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll +++ b/llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll @@ -38,10 +38,10 @@ define dso_local i64 @rotatemask32(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: rlwnm r3, r3, r4, 1, 31 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false) + %0 = call i64 @llvm.ctlz.i64(i64 %word, i1 false) %cast = trunc i64 %0 to i32 %conv1 = trunc i64 %word to i32 - %1 = tail call i32 @llvm.fshl.i32(i32 %conv1, i32 %conv1, i32 %cast) + %1 = call i32 @llvm.fshl.i32(i32 %conv1, i32 %conv1, i32 %cast) %2 = and i32 %1, 2147483647 %and = zext i32 %2 to i64 ret i64 %and @@ -90,8 +90,8 @@ define dso_local i64 @rotatemask64(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: rldcl r3, r3, r4, 1 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false) - %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) + %0 = call i64 @llvm.ctlz.i64(i64 %word, i1 false) + %1 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) %and = and i64 %1, 9223372036854775807 ret i64 %and } @@ -138,8 +138,8 @@ define dso_local i64 @rotatemask64_2(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: rldcl r3, r3, r4, 1 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false) - %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) + %0 = call i64 @llvm.ctlz.i64(i64 %word, i1 false) + %1 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) %and = and i64 %1, 9223372036854775807 ret i64 %and } @@ -191,8 +191,8 @@ define dso_local i64 @rotatemask64_3(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: rldicl r3, r3, 8, 1 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false) - %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) + %0 = call i64 @llvm.ctlz.i64(i64 %word, i1 false) + %1 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) %and = and i64 %1, 9223372036854775552 ret i64 %and } @@ -229,7 +229,7 @@ define dso_local i64 @rotatemask64_nocount(i64 noundef %word, i64 noundef %clz) ; LINUX64LE-NEXT: rldcl r3, r3, r4, 8 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %clz) + %0 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %clz) %and = and i64 %0, 72057594037927935 ret i64 %and } @@ -266,7 +266,7 @@ define dso_local i64 @builtincheck(i64 noundef %word, i64 noundef %shift) local_ ; LINUX64LE-NEXT: rldcl r3, r3, r4, 1 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %shift) + %0 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %shift) %1 = and i64 %0, 9223372036854775807 ret i64 %1 } @@ -297,7 +297,7 @@ define dso_local i64 @immshift(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: rldicl r3, r3, 15, 12 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 15) + %0 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 15) %and = and i64 %0, 4503599627370495 ret i64 %and } @@ -382,11 +382,11 @@ define dso_local i64 @twomasks(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false) - %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) + %0 = call i64 @llvm.ctlz.i64(i64 %word, i1 false) + %1 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) %and = and i64 %1, 9223372036854775807 %and1 = and i64 %1, 281474976710655 - %call = tail call i64 @callee(i64 noundef %and, i64 noundef %and1) #0 + %call = call i64 @callee(i64 noundef %and, i64 noundef %and1) #0 ret i64 %call } @@ -476,12 +476,12 @@ define dso_local i64 @tworotates(i64 noundef %word) local_unnamed_addr #0 { ; LINUX64LE-NEXT: mtlr r0 ; LINUX64LE-NEXT: blr entry: - %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false) - %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) - %2 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 23) + %0 = call i64 @llvm.ctlz.i64(i64 %word, i1 false) + %1 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0) + %2 = call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 23) %and = and i64 %1, 9223372036854775807 %and1 = and i64 %2, 9223372036854775807 - %call = tail call i64 @callee(i64 noundef %and, i64 noundef %and1) #0 + %call = call i64 @callee(i64 noundef %and, i64 noundef %and1) #0 ret i64 %call } diff --git a/llvm/test/CodeGen/PowerPC/ppc64-sibcall-shrinkwrap.ll b/llvm/test/CodeGen/PowerPC/ppc64-sibcall-shrinkwrap.ll index 1a3aaaec037ab..37060dd338019 100644 --- a/llvm/test/CodeGen/PowerPC/ppc64-sibcall-shrinkwrap.ll +++ b/llvm/test/CodeGen/PowerPC/ppc64-sibcall-shrinkwrap.ll @@ -2,8 +2,13 @@ ; RUN: llc -relocation-model=static -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -disable-ppc-sco=false --enable-shrink-wrap=true | FileCheck %s -check-prefix=CHECK-SCO-SR ; RUN: llc -relocation-model=static -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu -disable-ppc-sco=false --enable-shrink-wrap=false | FileCheck %s -check-prefix=CHECK-SCO-ONLY ; RUN: llc -relocation-model=static -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu -disable-ppc-sco=false --enable-shrink-wrap=true | FileCheck %s -check-prefix=CHECK-SCO-SR -; RUN: not --crash llc -relocation-model=pic -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix-xcoff -tailcallopt -disable-ppc-sco=false --enable-shrink-wrap=true 2>&1 | FileCheck %s -check-prefix=CHECK-AIX -;; The above RUN command is expected to fail on AIX since tail calling is not implemented ATM + + +; RUN: llc -relocation-model=pic -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix-xcoff -disable-ppc-sco=false --enable-shrink-wrap=false | FileCheck %s -check-prefixes=CHECK-SCO-ONLY-AIX,CHECK-SCO-ONLY-AIX64 +; RUN: llc -relocation-model=pic -verify-machineinstrs < %s -mtriple=powerpc-ibm-aix-xcoff -disable-ppc-sco=false --enable-shrink-wrap=false | FileCheck %s -check-prefixes=CHECK-SCO-ONLY-AIX,CHECK-SCO-ONLY-AIX32 +; RUN: llc -relocation-model=pic -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix-xcoff -disable-ppc-sco=false --enable-shrink-wrap=true | FileCheck %s -check-prefixes=CHECK-SCO-SR-AIX64,CHECK-SCO-SR-AIX +; RUN: llc -relocation-model=pic -verify-machineinstrs < %s -mtriple=powerpc-ibm-aix-xcoff -disable-ppc-sco=false --enable-shrink-wrap=true | FileCheck %s -check-prefixes=CHECK-SCO-SR-AIX32,CHECK-SCO-SR-AIX + %"class.clang::NamedDecl" = type { i32 } declare void @__assert_fail(); @@ -29,14 +34,29 @@ exit: ; CHECK-SCO-ONLY: b LVComputationKind ; CHECK-SCO-ONLY: #TC_RETURNd8 ; CHECK-SCO-ONLY: bl __assert_fail -; + +; CHECK-SCO-ONLY-AIXLABEL: _ZNK5clang9NamedDecl23getLinkageAndVisibilityEv: +; CHECK-SCO-ONLY-AIX64: stdu 1, -{{[0-9]+}}(1) +; CHECK-SCO-ONLY-AIX32: stwu 1, -{{[0-9]+}}(1) +; CHECK-SCO-ONLY-AIX: b .LVComputationKind +; CHECK-SCO-ONLY-AiX64: #TC_RETURNd8 +; CHECK-SCO-ONLY-AiX32: #TC_RETURNd +; CHECK-SCO-ONLY-AIX: bl .__assert_fail + ; CHECK-SCO-SR-LABEL: _ZNK5clang9NamedDecl23getLinkageAndVisibilityEv: ; CHECK-SCO-SR: b LVComputationKind ; CHECK-SCO-SR: #TC_RETURNd8 ; CHECK-SCO-SR: stdu 1, -{{[0-9]+}}(1) ; CHECK-SCO-SR: bl __assert_fail -; CHECK-AIX: LLVM ERROR: Tail call support is unimplemented on AIX. +; CHECK-SCO-SR-AIX-LABEL: _ZNK5clang9NamedDecl23getLinkageAndVisibilityEv: +; CHECK-SCO-SR-AIX: b .LVComputationKind +; CHECK-SCO-SR-AIX64: #TC_RETURNd8 +; CHECK-SCO-SR-AIX64: stdu 1, -{{[0-9]+}}(1) +; CHECK-SCO-SR-AIX32: #TC_RETURNd +; CHECK-SCO-SR-AIX32: stwu 1, -{{[0-9]+}}(1) +; CHECK-SCO-SR-AIX: bl .__assert_fail + } define dso_local fastcc i8 @LVComputationKind( diff --git a/llvm/test/CodeGen/PowerPC/save-reg-params.ll b/llvm/test/CodeGen/PowerPC/save-reg-params.ll index da4cd51c864ea..25b628675e1ea 100644 --- a/llvm/test/CodeGen/PowerPC/save-reg-params.ll +++ b/llvm/test/CodeGen/PowerPC/save-reg-params.ll @@ -52,7 +52,7 @@ entry: %add6 = add nsw i64 %add5, %h %add7 = add nsw i64 %add6, %i %add8 = add nsw i64 %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -105,7 +105,7 @@ entry: %add6 = add nsw i64 %add5, %h %add7 = add nsw i64 %add6, %i %add8 = add nsw i64 %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -159,7 +159,7 @@ entry: %add6 = add nsw i32 %add5, %h %add7 = add nsw i32 %add6, %i %add8 = add nsw i32 %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -212,7 +212,7 @@ entry: %add6 = add nsw i32 %add5, %h %add7 = add nsw i32 %add6, %i %add8 = add nsw i32 %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -270,7 +270,7 @@ entry: %add6 = fadd float %add5, %h %add7 = fadd float %add6, %i %add8 = fadd float %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -328,7 +328,7 @@ entry: %add6 = fadd float %add5, %h %add7 = fadd float %add6, %i %add8 = fadd float %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -386,7 +386,7 @@ entry: %add6 = fadd double %add5, %h %add7 = fadd double %add6, %i %add8 = fadd double %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -444,7 +444,7 @@ entry: %add6 = fadd double %add5, %h %add7 = fadd double %add6, %i %add8 = fadd double %add7, %j - tail call void @foo() + call void @foo() ret void } @@ -574,16 +574,16 @@ define void @mixed_1(double %a, i64 %b, i64 %c, i32 signext %d, i64 %e, float %f ; 64BIT-NEXT: blr entry: %add = fadd double %a, %j - tail call void @consume_f64(double %add) + call void @consume_f64(double %add) %add1 = fadd float %f, %g - tail call void @consume_f32(float %add1) + call void @consume_f32(float %add1) %add2 = add nsw i64 %c, %b %conv = sext i32 %d to i64 %add3 = add nsw i64 %add2, %conv %add4 = add nsw i64 %add3, %e - tail call void @consume_i64(i64 %add4) + call void @consume_i64(i64 %add4) %add5 = add nsw i32 %i, %d - tail call void @consume_i32(i32 signext %add5) + call void @consume_i32(i32 signext %add5) ret void } @@ -644,9 +644,9 @@ entry: %vecext = extractelement <4 x i32> %b, i64 0 %conv = sext i32 %vecext to i64 %add = add nsw i64 %conv, %c - tail call void @consume_i64(i64 %add) + call void @consume_i64(i64 %add) %vecext1 = extractelement <2 x double> %a, i64 0 - tail call void @consume_f64(double %vecext1) + call void @consume_f64(double %vecext1) ret void } @@ -741,10 +741,10 @@ entry: %vecext = extractelement <2 x double> %a, i64 0 %add = fadd double %vecext, %f %add1 = fadd double %add, %c - tail call void @consume_f64(double %add1) - tail call void @consume_i64(i64 %b) - tail call void @consume_f32(float %d) - tail call void @consume_i32(i32 signext %e) + call void @consume_f64(double %add1) + call void @consume_i64(i64 %b) + call void @consume_f32(float %d) + call void @consume_i32(i32 signext %e) ret void } @@ -849,10 +849,10 @@ define void @mixed_5(ptr byref(%struct.bar) align 16 %r, ptr byval(%struct.bar) entry: %d = getelementptr inbounds i8, ptr %f, i64 12 %0 = load double, ptr %d, align 4 - tail call void @consume_f64(double %0) + call void @consume_f64(double %0) %i = getelementptr inbounds i8, ptr %x, i64 4 %1 = load i32, ptr %i, align 4 - tail call void @consume_i32(i32 signext %1) + call void @consume_i32(i32 signext %1) ret void } diff --git a/llvm/test/CodeGen/PowerPC/undef-args.ll b/llvm/test/CodeGen/PowerPC/undef-args.ll index cdaaec2add3ee..af4ad9a04327a 100644 --- a/llvm/test/CodeGen/PowerPC/undef-args.ll +++ b/llvm/test/CodeGen/PowerPC/undef-args.ll @@ -19,7 +19,7 @@ define void @bar32(i32 zeroext %var1, i32 noundef zeroext %var2) local_unnamed_addr { entry: - tail call void @foo32(i32 noundef zeroext %var2) + call void @foo32(i32 noundef zeroext %var2) ret void } @@ -27,7 +27,7 @@ declare void @foo32(i32 noundef zeroext) local_unnamed_addr define void @test32() local_unnamed_addr { entry: - tail call void @bar32(i32 zeroext poison, i32 noundef zeroext 255) + call void @bar32(i32 zeroext poison, i32 noundef zeroext 255) ret void } @@ -85,7 +85,7 @@ entry: define void @bar8(i8 zeroext %var1, i8 noundef zeroext %var2) local_unnamed_addr { entry: - tail call void @foo8(i8 noundef zeroext %var2) + call void @foo8(i8 noundef zeroext %var2) ret void } @@ -93,7 +93,7 @@ declare void @foo8(i8 noundef zeroext) local_unnamed_addr define void @test8() local_unnamed_addr { entry: - tail call void @bar8(i8 zeroext poison, i8 noundef zeroext 255) + call void @bar8(i8 zeroext poison, i8 noundef zeroext 255) ret void } @@ -156,7 +156,7 @@ entry: define void @bar64(i64 zeroext %var1, i64 noundef zeroext %var2) local_unnamed_addr { entry: - tail call void @foo64(i64 noundef zeroext %var2) + call void @foo64(i64 noundef zeroext %var2) ret void } @@ -165,7 +165,7 @@ declare void @foo64(i64 noundef zeroext) local_unnamed_addr ; Function Attrs: noinline nounwind define void @test64() local_unnamed_addr { entry: - tail call void @bar64(i64 zeroext poison, i64 noundef zeroext 255) + call void @bar64(i64 zeroext poison, i64 noundef zeroext 255) ret void }