Lines Matching refs:args

112 static bool isStaticallyAbsent(llvm::ArrayRef<fir::ExtendedValue> args,  in isStaticallyAbsent()  argument
114 return args.size() <= argIndex || isStaticallyAbsent(args[argIndex]); in isStaticallyAbsent()
116 static bool isStaticallyAbsent(llvm::ArrayRef<mlir::Value> args, in isStaticallyAbsent() argument
118 return args.size() <= argIndex || !args[argIndex]; in isStaticallyAbsent()
184 llvm::ArrayRef<fir::ExtendedValue> args) { in genProdOrSum() argument
186 assert(args.size() == 3); in genProdOrSum()
189 fir::BoxValue arryTmp = builder.createBox(loc, args[0]); in genProdOrSum()
195 auto mask = isStaticallyAbsent(args[2]) in genProdOrSum()
198 : builder.createBox(loc, args[2]); in genProdOrSum()
200 bool absentDim = isStaticallyAbsent(args[1]); in genProdOrSum()
219 args[1], mask, rank); in genProdOrSum()
227 llvm::ArrayRef<fir::ExtendedValue> args) { in genDotProd() argument
229 assert(args.size() == 2); in genDotProd()
232 mlir::Value vectorA = fir::getBase(args[0]); in genDotProd()
233 mlir::Value vectorB = fir::getBase(args[1]); in genDotProd()
256 llvm::ArrayRef<fir::ExtendedValue> args) { in genExtremumVal() argument
258 assert(args.size() == 3); in genExtremumVal()
261 fir::BoxValue arryTmp = builder.createBox(loc, args[0]); in genExtremumVal()
268 auto mask = isStaticallyAbsent(args[2]) in genExtremumVal()
271 : builder.createBox(loc, args[2]); in genExtremumVal()
273 bool absentDim = isStaticallyAbsent(args[1]); in genExtremumVal()
309 args[1], mask, rank); in genExtremumVal()
317 llvm::StringRef errMsg, llvm::ArrayRef<fir::ExtendedValue> args) { in genExtremumloc() argument
319 assert(args.size() == 5); in genExtremumloc()
322 mlir::Value array = builder.createBox(loc, args[0]); in genExtremumloc()
327 auto mask = isStaticallyAbsent(args[2]) in genExtremumloc()
330 : builder.createBox(loc, args[2]); in genExtremumloc()
333 auto kind = isStaticallyAbsent(args[3]) in genExtremumloc()
337 : fir::getBase(args[3]); in genExtremumloc()
340 auto back = isStaticallyAbsent(args[4]) ? builder.createBool(loc, false) in genExtremumloc()
341 : fir::getBase(args[4]); in genExtremumloc()
343 bool absentDim = isStaticallyAbsent(args[1]); in genExtremumloc()
349 mlir::Value dim = fir::getBase(args[1]); in genExtremumloc()
392 mlir::Value dim = fir::getBase(args[1]); in genExtremumloc()
468 llvm::ArrayRef<mlir::Value> args);
495 mlir::ArrayRef<mlir::Value> args);
496 void genGetCommandArgument(mlir::ArrayRef<fir::ExtendedValue> args);
545 llvm::ArrayRef<mlir::Value> args);
551 llvm::ArrayRef<mlir::Value> args);
557 llvm::ArrayRef<mlir::Value> args);
592 llvm::ArrayRef<mlir::Value> args);
597 llvm::ArrayRef<fir::ExtendedValue> args);
608 llvm::ArrayRef<fir::ExtendedValue> args, bool outline);
613 llvm::ArrayRef<mlir::Value> args);
616 llvm::ArrayRef<mlir::Value> args);
619 llvm::ArrayRef<mlir::Value> args);
621 llvm::ArrayRef<mlir::Value> args);
650 IntrinsicDummyArgument args[7]; member
651 constexpr bool hasDefaultRules() const { return args[0].name == nullptr; } in hasDefaultRules()
1145 llvm::ArrayRef<mlir::Value> args) { in genLibCall() argument
1155 auto libCall = builder.create<fir::CallOp>(loc, funcOp, args); in genLibCall()
1164 llvm::ArrayRef<mlir::Value> args) { in genMathOp() argument
1186 result = genLibCall(builder, loc, mathLibFuncName, mathLibFuncType, args); in genMathOp()
1191 result = builder.create<T>(loc, args); in genMathOp()
1664 llvm::ArrayRef<fir::ExtendedValue> args, bool outline) { in genElementalCall() argument
1666 for (const fir::ExtendedValue &arg : args) in genElementalCall()
1680 llvm::ArrayRef<fir::ExtendedValue> args, bool outline) { in genElementalCall() argument
1681 for (const fir::ExtendedValue &arg : args) in genElementalCall()
1685 return outlineInExtendedWrapper(generator, name, resultType, args); in genElementalCall()
1686 return std::invoke(generator, *this, resultType, args); in genElementalCall()
1693 llvm::ArrayRef<fir::ExtendedValue> args, bool outline) { in genElementalCall() argument
1694 for (const fir::ExtendedValue &arg : args) in genElementalCall()
1699 return outlineInExtendedWrapper(generator, name, resultType, args); in genElementalCall()
1700 std::invoke(generator, *this, args); in genElementalCall()
1708 llvm::ArrayRef<fir::ExtendedValue> args, bool outline, in invokeHandler() argument
1711 return lib.genElementalCall(generator, handler.name, *resultType, args, in invokeHandler()
1719 llvm::ArrayRef<fir::ExtendedValue> args, bool outline, in invokeHandler() argument
1723 return lib.genElementalCall(generator, handler.name, *resultType, args, in invokeHandler()
1727 args); in invokeHandler()
1728 return std::invoke(generator, lib, *resultType, args); in invokeHandler()
1735 llvm::ArrayRef<fir::ExtendedValue> args, bool outline, in invokeHandler() argument
1738 return lib.genElementalCall(generator, handler.name, mlir::Type{}, args, in invokeHandler()
1742 args); in invokeHandler()
1743 std::invoke(generator, lib, args); in invokeHandler()
1750 llvm::ArrayRef<fir::ExtendedValue> args) { in genIntrinsicCall() argument
1756 return invokeHandler(generator, *handler, resultType, args, outline, in genIntrinsicCall()
1773 for (const fir::ExtendedValue &extendedVal : args) { in genIntrinsicCall()
1786 return genElementalCall(runtimeCallGenerator, name, *resultType, args, in genIntrinsicCall()
1793 llvm::ArrayRef<mlir::Value> args) { in invokeGenerator() argument
1794 return std::invoke(generator, *this, resultType, args); in invokeGenerator()
1800 llvm::ArrayRef<mlir::Value> args) { in invokeGenerator() argument
1801 return generator(builder, loc, args); in invokeGenerator()
1807 llvm::ArrayRef<mlir::Value> args) { in invokeGenerator() argument
1809 for (mlir::Value arg : args) in invokeGenerator()
1817 llvm::ArrayRef<mlir::Value> args) { in invokeGenerator() argument
1819 for (mlir::Value arg : args) in invokeGenerator()
1884 bool static hasAbsentOptional(llvm::ArrayRef<mlir::Value> args) { in hasAbsentOptional() argument
1885 for (const mlir::Value &arg : args) in hasAbsentOptional()
1890 bool static hasAbsentOptional(llvm::ArrayRef<fir::ExtendedValue> args) { in hasAbsentOptional() argument
1891 for (const fir::ExtendedValue &arg : args) in hasAbsentOptional()
1901 llvm::ArrayRef<mlir::Value> args) { in outlineInWrapper() argument
1902 if (hasAbsentOptional(args)) { in outlineInWrapper()
1911 mlir::FunctionType funcType = getFunctionType(resultType, args, builder); in outlineInWrapper()
1913 return builder.create<fir::CallOp>(loc, wrapper, args).getResult(0); in outlineInWrapper()
1920 llvm::ArrayRef<fir::ExtendedValue> args) { in outlineInExtendedWrapper() argument
1921 if (hasAbsentOptional(args)) in outlineInExtendedWrapper()
1925 for (const auto &extendedVal : args) in outlineInExtendedWrapper()
1990 llvm::ArrayRef<mlir::Value> args) { in getRuntimeCallGenerator() argument
1992 for (auto [fst, snd] : llvm::zip(actualFuncType.getInputs(), args)) in getRuntimeCallGenerator()
2091 llvm::ArrayRef<mlir::Value> args) { in genRuntimeCall() argument
2093 getFunctionType(resultType, args, builder); in genRuntimeCall()
2094 return getRuntimeCallGenerator(name, soughtFuncType)(builder, loc, args); in genRuntimeCall()
2098 llvm::ArrayRef<mlir::Value> args) { in genConversion() argument
2100 assert(args.size() >= 1); in genConversion()
2101 return builder.convertWithSemantics(loc, resultType, args[0]); in genConversion()
2106 llvm::ArrayRef<mlir::Value> args) { in genAbs() argument
2107 assert(args.size() == 1); in genAbs()
2108 mlir::Value arg = args[0]; in genAbs()
2113 return genRuntimeCall("abs", resultType, args); in genAbs()
2127 llvm::SmallVector<mlir::Value> args = {parts.first, parts.second}; in genAbs() local
2128 return genRuntimeCall("hypot", resultType, args); in genAbs()
2138 llvm::ArrayRef<fir::ExtendedValue> args) { in genAdjustRtCall() argument
2139 assert(args.size() == 1); in genAdjustRtCall()
2140 mlir::Value string = builder.createBox(loc, args[0]); in genAdjustRtCall()
2166 llvm::ArrayRef<mlir::Value> args) { in genAimag() argument
2167 assert(args.size() == 1); in genAimag()
2169 args[0], /*isImagPart=*/true); in genAimag()
2174 llvm::ArrayRef<mlir::Value> args) { in genAint() argument
2175 assert(args.size() >= 1 && args.size() <= 2); in genAint()
2178 return genRuntimeCall("aint", resultType, {args[0]}); in genAint()
2184 llvm::ArrayRef<fir::ExtendedValue> args) { in genAll() argument
2186 assert(args.size() == 2); in genAll()
2188 mlir::Value mask = builder.createBox(loc, args[0]); in genAll()
2190 fir::BoxValue maskArry = builder.createBox(loc, args[0]); in genAll()
2195 bool absentDim = isStaticallyAbsent(args[1]); in genAll()
2198 : fir::getBase(args[1]); in genAll()
2230 llvm::ArrayRef<fir::ExtendedValue> args) { in genAllocated() argument
2231 assert(args.size() == 1); in genAllocated()
2232 return args[0].match( in genAllocated()
2244 llvm::ArrayRef<mlir::Value> args) { in genAnint() argument
2245 assert(args.size() >= 1 && args.size() <= 2); in genAnint()
2248 return genRuntimeCall("anint", resultType, {args[0]}); in genAnint()
2254 llvm::ArrayRef<fir::ExtendedValue> args) { in genAny() argument
2256 assert(args.size() == 2); in genAny()
2258 mlir::Value mask = builder.createBox(loc, args[0]); in genAny()
2260 fir::BoxValue maskArry = builder.createBox(loc, args[0]); in genAny()
2265 bool absentDim = isStaticallyAbsent(args[1]); in genAny()
2268 : fir::getBase(args[1]); in genAny()
2300 llvm::ArrayRef<fir::ExtendedValue> args) { in genAssociated() argument
2301 assert(args.size() == 2); in genAssociated()
2303 args[0].match([&](const fir::MutableBoxValue &x) { return &x; }, in genAssociated()
2307 const fir::ExtendedValue &target = args[1]; in genAssociated()
2339 llvm::ArrayRef<mlir::Value> args) { in genBitwiseCompare() argument
2340 assert(args.size() == 2); in genBitwiseCompare()
2342 mlir::Value arg0 = args[0]; in genBitwiseCompare()
2343 mlir::Value arg1 = args[1]; in genBitwiseCompare()
2370 llvm::ArrayRef<mlir::Value> args) { in genBtest() argument
2375 assert(args.size() == 2); in genBtest()
2376 mlir::Type argType = args[0].getType(); in genBtest()
2377 mlir::Value pos = builder.createConvert(loc, argType, args[1]); in genBtest()
2378 auto shift = builder.create<mlir::arith::ShRUIOp>(loc, args[0], pos); in genBtest()
2386 llvm::ArrayRef<mlir::Value> args) { in genCeiling() argument
2388 assert(args.size() >= 1); in genCeiling()
2389 mlir::Value arg = args[0]; in genCeiling()
2400 llvm::ArrayRef<fir::ExtendedValue> args) { in genChar() argument
2402 assert(args.size() >= 1); in genChar()
2403 const mlir::Value *arg = args[0].getUnboxed(); in genChar()
2417 llvm::ArrayRef<mlir::Value> args) { in genCmplx() argument
2418 assert(args.size() >= 1); in genCmplx()
2421 mlir::Value real = builder.createConvert(loc, partType, args[0]); in genCmplx()
2422 mlir::Value imag = isStaticallyAbsent(args, 1) in genCmplx()
2424 : builder.createConvert(loc, partType, args[1]); in genCmplx()
2431 mlir::Type resultType, llvm::ArrayRef<fir::ExtendedValue> args) { in genCommandArgumentCount() argument
2432 assert(args.size() == 0); in genCommandArgumentCount()
2442 llvm::ArrayRef<mlir::Value> args) { in genConjg() argument
2443 assert(args.size() == 1); in genConjg()
2444 if (resultType != args[0].getType()) in genConjg()
2447 mlir::Value cplx = args[0]; in genConjg()
2458 llvm::ArrayRef<fir::ExtendedValue> args) { in genCount() argument
2459 assert(args.size() == 3); in genCount()
2462 fir::BoxValue mask = builder.createBox(loc, args[0]); in genCount()
2468 bool absentDim = isStaticallyAbsent(args[1]); in genCount()
2471 : fir::getBase(args[1]); in genCount()
2484 bool absentKind = isStaticallyAbsent(args[2]); in genCount()
2488 : fir::getBase(args[2]); in genCount()
2516 void IntrinsicLibrary::genCpuTime(llvm::ArrayRef<fir::ExtendedValue> args) { in genCpuTime() argument
2517 assert(args.size() == 1); in genCpuTime()
2518 const mlir::Value *arg = args[0].getUnboxed(); in genCpuTime()
2529 llvm::ArrayRef<fir::ExtendedValue> args) { in genCshift() argument
2530 assert(args.size() == 3); in genCshift()
2533 fir::BoxValue arrayBox = builder.createBox(loc, args[0]); in genCshift()
2547 const mlir::Value *shiftAddr = args[1].getUnboxed(); in genCshift()
2555 mlir::Value shift = builder.createBox(loc, args[1]); in genCshift()
2559 isStaticallyAbsent(args[2]) in genCshift()
2561 : fir::getBase(args[2]); in genCshift()
2568 void IntrinsicLibrary::genDateAndTime(llvm::ArrayRef<fir::ExtendedValue> args) { in genDateAndTime() argument
2569 assert(args.size() == 4 && "date_and_time has 4 args"); in genDateAndTime()
2572 if (const fir::CharBoxValue *charBox = args[i].getCharBox()) in genDateAndTime()
2575 mlir::Value values = fir::getBase(args[3]); in genDateAndTime()
2586 llvm::ArrayRef<mlir::Value> args) { in genDim() argument
2587 assert(args.size() == 2); in genDim()
2590 auto diff = builder.create<mlir::arith::SubIOp>(loc, args[0], args[1]); in genDim()
2597 auto diff = builder.create<mlir::arith::SubFOp>(loc, args[0], args[1]); in genDim()
2606 llvm::ArrayRef<fir::ExtendedValue> args) { in genDotProduct() argument
2608 stmtCtx, args); in genDotProduct()
2613 llvm::ArrayRef<mlir::Value> args) { in genDprod() argument
2614 assert(args.size() == 2); in genDprod()
2617 mlir::Value a = builder.createConvert(loc, resultType, args[0]); in genDprod()
2618 mlir::Value b = builder.createConvert(loc, resultType, args[1]); in genDprod()
2624 llvm::ArrayRef<mlir::Value> args) { in genDshiftl() argument
2625 assert(args.size() == 3); in genDshiftl()
2627 mlir::Value i = args[0]; in genDshiftl()
2628 mlir::Value j = args[1]; in genDshiftl()
2629 mlir::Value shift = builder.createConvert(loc, resultType, args[2]); in genDshiftl()
2648 llvm::ArrayRef<mlir::Value> args) { in genDshiftr() argument
2649 assert(args.size() == 3); in genDshiftr()
2651 mlir::Value i = args[0]; in genDshiftr()
2652 mlir::Value j = args[1]; in genDshiftr()
2653 mlir::Value shift = builder.createConvert(loc, resultType, args[2]); in genDshiftr()
2673 llvm::ArrayRef<fir::ExtendedValue> args) { in genEoshift() argument
2674 assert(args.size() == 4); in genEoshift()
2677 fir::BoxValue arrayBox = builder.createBox(loc, args[0]); in genEoshift()
2690 isStaticallyAbsent(args[2]) in genEoshift()
2693 : builder.createBox(loc, args[2]); in genEoshift()
2698 const mlir::Value *shiftAddr = args[1].getUnboxed(); in genEoshift()
2706 mlir::Value shift = builder.createBox(loc, args[1]); in genEoshift()
2710 isStaticallyAbsent(args[3]) in genEoshift()
2712 : fir::getBase(args[3]); in genEoshift()
2721 void IntrinsicLibrary::genExit(llvm::ArrayRef<fir::ExtendedValue> args) { in genExit() argument
2722 assert(args.size() == 1); in genExit()
2725 isStaticallyAbsent(args[0]) in genExit()
2728 : fir::getBase(args[0]); in genExit()
2738 llvm::ArrayRef<mlir::Value> args) { in genExponent() argument
2739 assert(args.size() == 1); in genExponent()
2744 fir::getBase(args[0]))); in genExponent()
2749 llvm::ArrayRef<mlir::Value> args) { in genFloor() argument
2751 assert(args.size() >= 1); in genFloor()
2752 mlir::Value arg = args[0]; in genFloor()
2760 llvm::ArrayRef<mlir::Value> args) { in genFraction() argument
2761 assert(args.size() == 1); in genFraction()
2765 fir::runtime::genFraction(builder, loc, fir::getBase(args[0]))); in genFraction()
2770 llvm::ArrayRef<fir::ExtendedValue> args) { in genGetCommandArgument() argument
2771 assert(args.size() == 5); in genGetCommandArgument()
2772 mlir::Value number = fir::getBase(args[0]); in genGetCommandArgument()
2773 const fir::ExtendedValue &value = args[1]; in genGetCommandArgument()
2774 const fir::ExtendedValue &length = args[2]; in genGetCommandArgument()
2775 const fir::ExtendedValue &status = args[3]; in genGetCommandArgument()
2776 const fir::ExtendedValue &errmsg = args[4]; in genGetCommandArgument()
2819 llvm::ArrayRef<fir::ExtendedValue> args) { in genGetEnvironmentVariable() argument
2820 assert(args.size() == 6); in genGetEnvironmentVariable()
2821 mlir::Value name = fir::getBase(args[0]); in genGetEnvironmentVariable()
2822 const fir::ExtendedValue &value = args[1]; in genGetEnvironmentVariable()
2823 const fir::ExtendedValue &length = args[2]; in genGetEnvironmentVariable()
2824 const fir::ExtendedValue &status = args[3]; in genGetEnvironmentVariable()
2825 const fir::ExtendedValue &trimName = args[4]; in genGetEnvironmentVariable()
2826 const fir::ExtendedValue &errmsg = args[5]; in genGetEnvironmentVariable()
2891 llvm::ArrayRef<mlir::Value> args) { in genIand() argument
2892 assert(args.size() == 2); in genIand()
2893 auto arg0 = builder.createConvert(loc, resultType, args[0]); in genIand()
2894 auto arg1 = builder.createConvert(loc, resultType, args[1]); in genIand()
2900 llvm::ArrayRef<mlir::Value> args) { in genIbclr() argument
2905 assert(args.size() == 2); in genIbclr()
2906 mlir::Value pos = builder.createConvert(loc, resultType, args[1]); in genIbclr()
2911 return builder.create<mlir::arith::AndIOp>(loc, args[0], res); in genIbclr()
2916 llvm::ArrayRef<mlir::Value> args) { in genIbits() argument
2925 assert(args.size() == 3); in genIbits()
2926 mlir::Value pos = builder.createConvert(loc, resultType, args[1]); in genIbits()
2927 mlir::Value len = builder.createConvert(loc, resultType, args[2]); in genIbits()
2934 auto res1 = builder.create<mlir::arith::ShRSIOp>(loc, args[0], pos); in genIbits()
2943 llvm::ArrayRef<mlir::Value> args) { in genIbset() argument
2948 assert(args.size() == 2); in genIbset()
2949 mlir::Value pos = builder.createConvert(loc, resultType, args[1]); in genIbset()
2952 return builder.create<mlir::arith::OrIOp>(loc, args[0], mask); in genIbset()
2958 llvm::ArrayRef<fir::ExtendedValue> args) { in genIchar() argument
2960 assert(args.size() == 2); in genIchar()
2961 const fir::CharBoxValue *charBox = args[0].getCharBox(); in genIchar()
2998 llvm::ArrayRef<fir::ExtendedValue> args) { in genIeeeTypeCompare() argument
2999 assert(args.size() == 2); in genIeeeTypeCompare()
3000 mlir::Value arg0 = fir::getBase(args[0]); in genIeeeTypeCompare()
3001 mlir::Value arg1 = fir::getBase(args[1]); in genIeeeTypeCompare()
3023 llvm::ArrayRef<mlir::Value> args) { in genIeeeIsFinite() argument
3025 assert(args.size() == 1); in genIeeeIsFinite()
3026 mlir::Value floatVal = fir::getBase(args[0]); in genIeeeIsFinite()
3056 llvm::ArrayRef<mlir::Value> args) { in genIeor() argument
3057 assert(args.size() == 2); in genIeor()
3058 return builder.create<mlir::arith::XOrIOp>(loc, args[0], args[1]); in genIeor()
3064 llvm::ArrayRef<fir::ExtendedValue> args) { in genIndex() argument
3065 assert(args.size() >= 2 && args.size() <= 4); in genIndex()
3067 mlir::Value stringBase = fir::getBase(args[0]); in genIndex()
3071 mlir::Value stringLen = fir::getLen(args[0]); in genIndex()
3072 mlir::Value substringBase = fir::getBase(args[1]); in genIndex()
3073 mlir::Value substringLen = fir::getLen(args[1]); in genIndex()
3075 isStaticallyAbsent(args, 2) in genIndex()
3077 : fir::getBase(args[2]); in genIndex()
3078 if (isStaticallyAbsent(args, 3)) in genIndex()
3085 mlir::Value string = builder.createBox(loc, args[0]); in genIndex()
3086 mlir::Value substring = builder.createBox(loc, args[1]); in genIndex()
3095 mlir::Value backOpt = isStaticallyAbsent(args, 2) in genIndex()
3098 : makeRefThenEmbox(fir::getBase(args[2])); in genIndex()
3099 mlir::Value kindVal = isStaticallyAbsent(args, 3) in genIndex()
3103 : fir::getBase(args[3]); in genIndex()
3117 llvm::ArrayRef<mlir::Value> args) { in genIor() argument
3118 assert(args.size() == 2); in genIor()
3119 return builder.create<mlir::arith::OrIOp>(loc, args[0], args[1]); in genIor()
3124 llvm::ArrayRef<mlir::Value> args) { in genIshft() argument
3132 assert(args.size() == 2); in genIshft()
3136 mlir::Value shift = builder.createConvert(loc, resultType, args[1]); in genIshft()
3138 auto left = builder.create<mlir::arith::ShLIOp>(loc, args[0], absShift); in genIshft()
3139 auto right = builder.create<mlir::arith::ShRUIOp>(loc, args[0], absShift); in genIshft()
3151 llvm::ArrayRef<mlir::Value> args) { in genIshftc() argument
3168 assert(args.size() == 3); in genIshftc()
3171 mlir::Value I = args[0]; in genIshftc()
3172 mlir::Value shift = builder.createConvert(loc, resultType, args[1]); in genIshftc()
3174 args[2] ? builder.createConvert(loc, resultType, args[2]) : bitSize; in genIshftc()
3217 llvm::ArrayRef<mlir::Value> args) { in genLeadz() argument
3218 assert(args.size() == 1); in genLeadz()
3221 builder.create<mlir::math::CountLeadingZerosOp>(loc, args); in genLeadz()
3231 llvm::ArrayRef<fir::ExtendedValue> args) { in genLen() argument
3233 assert(args.size() == 1 || args.size() == 2); in genLen()
3234 mlir::Value len = fir::factory::readCharLen(builder, loc, args[0]); in genLen()
3241 llvm::ArrayRef<fir::ExtendedValue> args) { in genLenTrim() argument
3243 assert(args.size() == 1 || args.size() == 2); in genLenTrim()
3244 const fir::CharBoxValue *charBox = args[0].getCharBox(); in genLenTrim()
3256 llvm::ArrayRef<fir::ExtendedValue> args) { in genCharacterCompare() argument
3257 assert(args.size() == 2); in genCharacterCompare()
3259 builder, loc, pred, fir::getBase(args[0]), fir::getLen(args[0]), in genCharacterCompare()
3260 fir::getBase(args[1]), fir::getLen(args[1])); in genCharacterCompare()
3266 llvm::ArrayRef<mlir::Value> args) { in genMask() argument
3267 assert(args.size() == 2); in genMask()
3272 mlir::Value bitsToSet = builder.createConvert(loc, resultType, args[0]); in genMask()
3287 llvm::ArrayRef<fir::ExtendedValue> args) { in genMatmul() argument
3288 assert(args.size() == 2); in genMatmul()
3291 fir::BoxValue matrixTmpA = builder.createBox(loc, args[0]); in genMatmul()
3293 fir::BoxValue matrixTmpB = builder.createBox(loc, args[1]); in genMatmul()
3315 llvm::ArrayRef<fir::ExtendedValue> args) { in genMerge() argument
3316 assert(args.size() == 3); in genMerge()
3317 mlir::Value tsource = fir::getBase(args[0]); in genMerge()
3318 mlir::Value fsource = fir::getBase(args[1]); in genMerge()
3319 mlir::Value rawMask = fir::getBase(args[2]); in genMerge()
3333 const fir::CharBoxValue *charBox = args[0].getCharBox(); in genMerge()
3342 llvm::ArrayRef<mlir::Value> args) { in genMergeBits() argument
3343 assert(args.size() == 3); in genMergeBits()
3345 mlir::Value i = builder.createConvert(loc, resultType, args[0]); in genMergeBits()
3346 mlir::Value j = builder.createConvert(loc, resultType, args[1]); in genMergeBits()
3347 mlir::Value mask = builder.createConvert(loc, resultType, args[2]); in genMergeBits()
3360 llvm::ArrayRef<mlir::Value> args) { in genMod() argument
3361 assert(args.size() == 2); in genMod()
3363 return builder.create<mlir::arith::RemSIOp>(loc, args[0], args[1]); in genMod()
3369 return genRuntimeCall("mod", resultType, args); in genMod()
3374 llvm::ArrayRef<mlir::Value> args) { in genModulo() argument
3375 assert(args.size() == 2); in genModulo()
3386 builder.create<mlir::arith::RemSIOp>(loc, args[0], args[1]); in genModulo()
3387 auto argXor = builder.create<mlir::arith::XOrIOp>(loc, args[0], args[1]); in genModulo()
3396 builder.create<mlir::arith::AddIOp>(loc, remainder, args[1]); in genModulo()
3401 auto remainder = builder.create<mlir::arith::RemFOp>(loc, args[0], args[1]); in genModulo()
3406 loc, mlir::arith::CmpFPredicate::OLT, args[0], zero); in genModulo()
3408 loc, mlir::arith::CmpFPredicate::OLT, args[1], zero); in genModulo()
3413 auto remPlusP = builder.create<mlir::arith::AddFOp>(loc, remainder, args[1]); in genModulo()
3419 void IntrinsicLibrary::genMvbits(llvm::ArrayRef<fir::ExtendedValue> args) { in genMvbits() argument
3429 assert(args.size() == 5); in genMvbits()
3435 mlir::Value from = unbox(args[0]); in genMvbits()
3437 mlir::Value frompos = builder.createConvert(loc, resultType, unbox(args[1])); in genMvbits()
3438 mlir::Value len = builder.createConvert(loc, resultType, unbox(args[2])); in genMvbits()
3439 mlir::Value toAddr = unbox(args[3]); in genMvbits()
3443 mlir::Value topos = builder.createConvert(loc, resultType, unbox(args[4])); in genMvbits()
3467 llvm::ArrayRef<mlir::Value> args) { in genNearest() argument
3468 assert(args.size() == 2); in genNearest()
3470 mlir::Value realX = fir::getBase(args[0]); in genNearest()
3471 mlir::Value realS = fir::getBase(args[1]); in genNearest()
3479 llvm::ArrayRef<mlir::Value> args) { in genNint() argument
3480 assert(args.size() >= 1); in genNint()
3483 return genRuntimeCall("nint", resultType, {args[0]}); in genNint()
3488 llvm::ArrayRef<mlir::Value> args) { in genNot() argument
3489 assert(args.size() == 1); in genNot()
3491 return builder.create<mlir::arith::XOrIOp>(loc, args[0], allOnes); in genNot()
3496 IntrinsicLibrary::genNull(mlir::Type, llvm::ArrayRef<fir::ExtendedValue> args) { in genNull() argument
3499 assert(args.size() == 1 && isStaticallyPresent(args[0]) && in genNull()
3501 const auto *mold = args[0].getBoxOf<fir::MutableBoxValue>(); in genNull()
3514 llvm::ArrayRef<fir::ExtendedValue> args) { in genPack() argument
3515 [[maybe_unused]] auto numArgs = args.size(); in genPack()
3519 mlir::Value array = builder.createBox(loc, args[0]); in genPack()
3522 mlir::Value mask = builder.createBox(loc, args[1]); in genPack()
3525 mlir::Value vector = isStaticallyAbsent(args, 2) in genPack()
3528 : builder.createBox(loc, args[2]); in genPack()
3545 llvm::ArrayRef<mlir::Value> args) { in genPopcnt() argument
3546 assert(args.size() == 1); in genPopcnt()
3548 mlir::Value count = builder.create<mlir::math::CtPopOp>(loc, args); in genPopcnt()
3555 llvm::ArrayRef<mlir::Value> args) { in genPoppar() argument
3556 assert(args.size() == 1); in genPoppar()
3558 mlir::Value count = genPopcnt(resultType, args); in genPoppar()
3567 llvm::ArrayRef<fir::ExtendedValue> args) { in genPresent() argument
3568 assert(args.size() == 1); in genPresent()
3570 fir::getBase(args[0])); in genPresent()
3576 llvm::ArrayRef<fir::ExtendedValue> args) { in genProduct() argument
3579 "unexpected result for Product", args); in genProduct()
3583 void IntrinsicLibrary::genRandomInit(llvm::ArrayRef<fir::ExtendedValue> args) { in genRandomInit() argument
3584 assert(args.size() == 2); in genRandomInit()
3585 Fortran::lower::genRandomInit(builder, loc, fir::getBase(args[0]), in genRandomInit()
3586 fir::getBase(args[1])); in genRandomInit()
3591 llvm::ArrayRef<fir::ExtendedValue> args) { in genRandomNumber() argument
3592 assert(args.size() == 1); in genRandomNumber()
3593 Fortran::lower::genRandomNumber(builder, loc, fir::getBase(args[0])); in genRandomNumber()
3597 void IntrinsicLibrary::genRandomSeed(llvm::ArrayRef<fir::ExtendedValue> args) { in genRandomSeed() argument
3598 assert(args.size() == 3); in genRandomSeed()
3600 if (isStaticallyPresent(args[i])) { in genRandomSeed()
3601 Fortran::lower::genRandomSeed(builder, loc, i, fir::getBase(args[i])); in genRandomSeed()
3610 llvm::ArrayRef<fir::ExtendedValue> args) { in genRepeat() argument
3611 assert(args.size() == 2); in genRepeat()
3612 mlir::Value string = builder.createBox(loc, args[0]); in genRepeat()
3613 mlir::Value ncopies = fir::getBase(args[1]); in genRepeat()
3629 llvm::ArrayRef<fir::ExtendedValue> args) { in genReshape() argument
3630 assert(args.size() == 4); in genReshape()
3633 mlir::Value source = builder.createBox(loc, args[0]); in genReshape()
3636 mlir::Value shape = builder.createBox(loc, args[1]); in genReshape()
3646 mlir::Value pad = isStaticallyAbsent(args[2]) in genReshape()
3649 : builder.createBox(loc, args[2]); in genReshape()
3652 mlir::Value order = isStaticallyAbsent(args[3]) in genReshape()
3655 : builder.createBox(loc, args[3]); in genReshape()
3674 llvm::ArrayRef<mlir::Value> args) { in genRRSpacing() argument
3675 assert(args.size() == 1); in genRRSpacing()
3679 fir::runtime::genRRSpacing(builder, loc, fir::getBase(args[0]))); in genRRSpacing()
3684 llvm::ArrayRef<mlir::Value> args) { in genScale() argument
3685 assert(args.size() == 2); in genScale()
3687 mlir::Value realX = fir::getBase(args[0]); in genScale()
3688 mlir::Value intI = fir::getBase(args[1]); in genScale()
3697 llvm::ArrayRef<fir::ExtendedValue> args) { in genScan() argument
3699 assert(args.size() == 4); in genScan()
3701 if (isStaticallyAbsent(args[3])) { in genScan()
3706 mlir::Value stringBase = fir::getBase(args[0]); in genScan()
3709 mlir::Value setBase = fir::getBase(args[1]); in genScan()
3717 mlir::Value stringLen = fir::getLen(args[0]); in genScan()
3720 mlir::Value setLen = fir::getLen(args[1]); in genScan()
3724 isStaticallyAbsent(args[2]) in genScan()
3726 : fir::getBase(args[2]); in genScan()
3744 mlir::Value back = fir::isUnboxedValue(args[2]) in genScan()
3745 ? makeRefThenEmbox(*args[2].getUnboxed()) in genScan()
3750 mlir::Value string = builder.createBox(loc, args[0]); in genScan()
3753 mlir::Value set = builder.createBox(loc, args[1]); in genScan()
3756 mlir::Value kind = fir::getBase(args[3]); in genScan()
3774 llvm::ArrayRef<mlir::Value> args) { in genSelectedIntKind() argument
3775 assert(args.size() == 1); in genSelectedIntKind()
3779 fir::runtime::genSelectedIntKind(builder, loc, fir::getBase(args[0]))); in genSelectedIntKind()
3785 llvm::ArrayRef<mlir::Value> args) { in genSelectedRealKind() argument
3786 assert(args.size() == 3); in genSelectedRealKind()
3790 isStaticallyAbsent(args[0]) in genSelectedRealKind()
3793 : fir::getBase(args[0]); in genSelectedRealKind()
3797 isStaticallyAbsent(args[1]) in genSelectedRealKind()
3800 : fir::getBase(args[1]); in genSelectedRealKind()
3804 isStaticallyAbsent(args[2]) in genSelectedRealKind()
3807 : fir::getBase(args[2]); in genSelectedRealKind()
3816 llvm::ArrayRef<mlir::Value> args) { in genSetExponent() argument
3817 assert(args.size() == 2); in genSetExponent()
3821 fir::runtime::genSetExponent(builder, loc, fir::getBase(args[0]), in genSetExponent()
3822 fir::getBase(args[1]))); in genSetExponent()
3828 llvm::ArrayRef<mlir::Value> args) { in genShift() argument
3829 assert(args.size() == 2); in genShift()
3838 mlir::Value shift = builder.createConvert(loc, resultType, args[1]); in genShift()
3847 mlir::Value shifted = builder.create<Shift>(loc, args[0], shift); in genShift()
3853 llvm::ArrayRef<mlir::Value> args) { in genSign() argument
3854 assert(args.size() == 2); in genSign()
3856 mlir::Value abs = genAbs(resultType, {args[0]}); in genSign()
3860 loc, mlir::arith::CmpIPredicate::slt, args[1], zero); in genSign()
3863 return genRuntimeCall("sign", resultType, args); in genSign()
3869 llvm::ArrayRef<fir::ExtendedValue> args) { in genSize() argument
3872 assert(args.size() == 3); in genSize()
3873 if (const auto *boxValue = args[0].getBoxOf<fir::BoxValue>()) in genSize()
3878 mlir::Value array = builder.createBox(loc, args[0]); in genSize()
3883 if (isStaticallyAbsent(args, 1)) in genSize()
3888 mlir::Value dim = fir::getBase(args[1]); in genSize()
3914 llvm::ArrayRef<mlir::Value> args) { in genTrailz() argument
3915 assert(args.size() == 1); in genTrailz()
3918 builder.create<mlir::math::CountTrailingZerosOp>(loc, args); in genTrailz()
4005 llvm::ArrayRef<fir::ExtendedValue> args) { in genLbound() argument
4006 assert(args.size() == 2 || args.size() == 3); in genLbound()
4007 const fir::ExtendedValue &array = args[0]; in genLbound()
4017 if (args.size() == 2 || isStaticallyAbsent(args, 1)) { in genLbound()
4041 mlir::Value dim = fir::getBase(args[1]); in genLbound()
4061 llvm::ArrayRef<fir::ExtendedValue> args) { in genUbound() argument
4062 assert(args.size() == 3 || args.size() == 2); in genUbound()
4063 if (args.size() == 3) { in genUbound()
4065 mlir::Value extent = fir::getBase(genSize(resultType, args)); in genUbound()
4066 mlir::Value lbound = fir::getBase(genLbound(resultType, args)); in genUbound()
4073 mlir::Value kind = isStaticallyAbsent(args[1]) in genUbound()
4077 : fir::getBase(args[1]); in genUbound()
4086 fir::runtime::genUbound(builder, loc, resultIrBox, fir::getBase(args[0]), in genUbound()
4096 llvm::ArrayRef<mlir::Value> args) { in genSpacing() argument
4097 assert(args.size() == 1); in genSpacing()
4101 fir::runtime::genSpacing(builder, loc, fir::getBase(args[0]))); in genSpacing()
4107 llvm::ArrayRef<fir::ExtendedValue> args) { in genSpread() argument
4109 assert(args.size() == 3); in genSpread()
4112 mlir::Value source = builder.createBox(loc, args[0]); in genSpread()
4117 mlir::Value dim = fir::getBase(args[1]); in genSpread()
4120 mlir::Value ncopies = fir::getBase(args[2]); in genSpread()
4139 llvm::ArrayRef<fir::ExtendedValue> args) { in genSum() argument
4141 builder, loc, stmtCtx, "unexpected result for Sum", args); in genSum()
4145 void IntrinsicLibrary::genSystemClock(llvm::ArrayRef<fir::ExtendedValue> args) { in genSystemClock() argument
4146 assert(args.size() == 3); in genSystemClock()
4147 Fortran::lower::genSystemClock(builder, loc, fir::getBase(args[0]), in genSystemClock()
4148 fir::getBase(args[1]), fir::getBase(args[2])); in genSystemClock()
4154 llvm::ArrayRef<fir::ExtendedValue> args) { in genTransfer() argument
4156 assert(args.size() >= 2); // args.size() == 2 when size argument is omitted. in genTransfer()
4159 mlir::Value source = builder.createBox(loc, args[0]); in genTransfer()
4162 mlir::Value mold = builder.createBox(loc, args[1]); in genTransfer()
4166 bool absentSize = (args.size() == 2); in genTransfer()
4189 mlir::Value sizeArg = fir::getBase(args[2]); in genTransfer()
4201 llvm::ArrayRef<fir::ExtendedValue> args) { in genTranspose() argument
4203 assert(args.size() == 1); in genTranspose()
4206 mlir::Value source = builder.createBox(loc, args[0]); in genTranspose()
4225 llvm::ArrayRef<fir::ExtendedValue> args) { in genTrim() argument
4226 assert(args.size() == 1); in genTrim()
4227 mlir::Value string = builder.createBox(loc, args[0]); in genTrim()
4304 llvm::ArrayRef<fir::ExtendedValue> args) { in genUnpack() argument
4305 assert(args.size() == 3); in genUnpack()
4308 mlir::Value vector = builder.createBox(loc, args[0]); in genUnpack()
4311 fir::BoxValue maskBox = builder.createBox(loc, args[1]); in genUnpack()
4316 mlir::Value field = builder.createBox(loc, args[2]); in genUnpack()
4334 llvm::ArrayRef<fir::ExtendedValue> args) { in genVerify() argument
4336 assert(args.size() == 4); in genVerify()
4338 if (isStaticallyAbsent(args[3])) { in genVerify()
4343 mlir::Value stringBase = fir::getBase(args[0]); in genVerify()
4346 mlir::Value setBase = fir::getBase(args[1]); in genVerify()
4354 mlir::Value stringLen = fir::getLen(args[0]); in genVerify()
4357 mlir::Value setLen = fir::getLen(args[1]); in genVerify()
4361 isStaticallyAbsent(args[2]) in genVerify()
4363 : fir::getBase(args[2]); in genVerify()
4381 mlir::Value back = fir::isUnboxedValue(args[2]) in genVerify()
4382 ? makeRefThenEmbox(*args[2].getUnboxed()) in genVerify()
4387 mlir::Value string = builder.createBox(loc, args[0]); in genVerify()
4390 mlir::Value set = builder.createBox(loc, args[1]); in genVerify()
4393 mlir::Value kind = fir::getBase(args[3]); in genVerify()
4411 llvm::ArrayRef<fir::ExtendedValue> args) { in genMaxloc() argument
4414 "unexpected result for Maxloc", args); in genMaxloc()
4420 llvm::ArrayRef<fir::ExtendedValue> args) { in genMaxval() argument
4423 stmtCtx, "unexpected result for Maxval", args); in genMaxval()
4429 llvm::ArrayRef<fir::ExtendedValue> args) { in genMinloc() argument
4432 "unexpected result for Minloc", args); in genMinloc()
4438 llvm::ArrayRef<fir::ExtendedValue> args) { in genMinval() argument
4441 stmtCtx, "unexpected result for Minval", args); in genMinval()
4447 llvm::ArrayRef<mlir::Value> args) { in genExtremum() argument
4448 assert(args.size() >= 1); in genExtremum()
4449 mlir::Value result = args[0]; in genExtremum()
4450 for (auto arg : args.drop_front()) { in genExtremum()
4474 assert(position < sizeof(rules.args) / sizeof(decltype(*rules.args)) && in lowerIntrinsicArgumentAs()
4476 return {rules.args[position].lowerAs, in lowerIntrinsicArgumentAs()
4477 rules.args[position].handleDynamicOptional}; in lowerIntrinsicArgumentAs()
4488 llvm::ArrayRef<fir::ExtendedValue> args, in genIntrinsicCall() argument
4491 name, resultType, args); in genIntrinsicCall()
4496 llvm::ArrayRef<mlir::Value> args) { in genMax() argument
4497 assert(args.size() > 0 && "max requires at least one argument"); in genMax()
4499 .genExtremum<Extremum::Max, ExtremumBehavior::MinMaxss>(args[0].getType(), in genMax()
4500 args); in genMax()
4505 llvm::ArrayRef<mlir::Value> args) { in genMin() argument
4506 assert(args.size() > 0 && "min requires at least one argument"); in genMin()
4508 .genExtremum<Extremum::Min, ExtremumBehavior::MinMaxss>(args[0].getType(), in genMin()
4509 args); in genMin()