• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Target/AMDGPU/

Lines Matching refs:AMDGPULibFunc

15 #include "AMDGPULibFunc.h"
62 typedef llvm::AMDGPULibFunc FuncInfo;
390 static bool HasNative(AMDGPULibFunc::EFuncId id) {
392 case AMDGPULibFunc::EI_DIVIDE:
393 case AMDGPULibFunc::EI_COS:
394 case AMDGPULibFunc::EI_EXP:
395 case AMDGPULibFunc::EI_EXP2:
396 case AMDGPULibFunc::EI_EXP10:
397 case AMDGPULibFunc::EI_LOG:
398 case AMDGPULibFunc::EI_LOG2:
399 case AMDGPULibFunc::EI_LOG10:
400 case AMDGPULibFunc::EI_POWR:
401 case AMDGPULibFunc::EI_RECIP:
402 case AMDGPULibFunc::EI_RSQRT:
403 case AMDGPULibFunc::EI_SIN:
404 case AMDGPULibFunc::EI_SINCOS:
405 case AMDGPULibFunc::EI_SQRT:
406 case AMDGPULibFunc::EI_TAN:
423 static TableRef getOptTable(AMDGPULibFunc::EFuncId id) {
425 case AMDGPULibFunc::EI_ACOS: return TableRef(tbl_acos);
426 case AMDGPULibFunc::EI_ACOSH: return TableRef(tbl_acosh);
427 case AMDGPULibFunc::EI_ACOSPI: return TableRef(tbl_acospi);
428 case AMDGPULibFunc::EI_ASIN: return TableRef(tbl_asin);
429 case AMDGPULibFunc::EI_ASINH: return TableRef(tbl_asinh);
430 case AMDGPULibFunc::EI_ASINPI: return TableRef(tbl_asinpi);
431 case AMDGPULibFunc::EI_ATAN: return TableRef(tbl_atan);
432 case AMDGPULibFunc::EI_ATANH: return TableRef(tbl_atanh);
433 case AMDGPULibFunc::EI_ATANPI: return TableRef(tbl_atanpi);
434 case AMDGPULibFunc::EI_CBRT: return TableRef(tbl_cbrt);
435 case AMDGPULibFunc::EI_NCOS:
436 case AMDGPULibFunc::EI_COS: return TableRef(tbl_cos);
437 case AMDGPULibFunc::EI_COSH: return TableRef(tbl_cosh);
438 case AMDGPULibFunc::EI_COSPI: return TableRef(tbl_cospi);
439 case AMDGPULibFunc::EI_ERFC: return TableRef(tbl_erfc);
440 case AMDGPULibFunc::EI_ERF: return TableRef(tbl_erf);
441 case AMDGPULibFunc::EI_EXP: return TableRef(tbl_exp);
442 case AMDGPULibFunc::EI_NEXP2:
443 case AMDGPULibFunc::EI_EXP2: return TableRef(tbl_exp2);
444 case AMDGPULibFunc::EI_EXP10: return TableRef(tbl_exp10);
445 case AMDGPULibFunc::EI_EXPM1: return TableRef(tbl_expm1);
446 case AMDGPULibFunc::EI_LOG: return TableRef(tbl_log);
447 case AMDGPULibFunc::EI_NLOG2:
448 case AMDGPULibFunc::EI_LOG2: return TableRef(tbl_log2);
449 case AMDGPULibFunc::EI_LOG10: return TableRef(tbl_log10);
450 case AMDGPULibFunc::EI_NRSQRT:
451 case AMDGPULibFunc::EI_RSQRT: return TableRef(tbl_rsqrt);
452 case AMDGPULibFunc::EI_NSIN:
453 case AMDGPULibFunc::EI_SIN: return TableRef(tbl_sin);
454 case AMDGPULibFunc::EI_SINH: return TableRef(tbl_sinh);
455 case AMDGPULibFunc::EI_SINPI: return TableRef(tbl_sinpi);
456 case AMDGPULibFunc::EI_NSQRT:
457 case AMDGPULibFunc::EI_SQRT: return TableRef(tbl_sqrt);
458 case AMDGPULibFunc::EI_TAN: return TableRef(tbl_tan);
459 case AMDGPULibFunc::EI_TANH: return TableRef(tbl_tanh);
460 case AMDGPULibFunc::EI_TANPI: return TableRef(tbl_tanpi);
461 case AMDGPULibFunc::EI_TGAMMA: return TableRef(tbl_tgamma);
467 static inline int getVecSize(const AMDGPULibFunc& FInfo) {
471 static inline AMDGPULibFunc::EType getArgType(const AMDGPULibFunc& FInfo) {
472 return (AMDGPULibFunc::EType)FInfo.getLeads()[0].ArgType;
479 return EnablePreLink ? AMDGPULibFunc::getOrInsertFunction(M, fInfo)
480 : AMDGPULibFunc::getFunction(M, fInfo);
485 return AMDGPULibFunc::parse(FMangledName, *FInfo);
516 AMDGPULibFunc nf;
520 nf.setPrefix(AMDGPULibFunc::NATIVE);
521 nf.setId(AMDGPULibFunc::EI_SIN);
524 nf.setPrefix(AMDGPULibFunc::NATIVE);
525 nf.setId(AMDGPULibFunc::EI_COS);
548 FInfo.getPrefix() != AMDGPULibFunc::NOPFX ||
549 getArgType(FInfo) == AMDGPULibFunc::F64 || !HasNative(FInfo.getId()) ||
554 if (FInfo.getId() == AMDGPULibFunc::EI_SINCOS)
557 FInfo.setPrefix(AMDGPULibFunc::NATIVE);
615 AMDGPULibFunc NewLibFunc(Name, FTy);
616 FunctionCallee F = AMDGPULibFunc::getOrInsertFunction(M, NewLibFunc);
680 case AMDGPULibFunc::EI_RECIP:
682 assert ((FInfo.getPrefix() == AMDGPULibFunc::NATIVE ||
683 FInfo.getPrefix() == AMDGPULibFunc::HALF) &&
687 case AMDGPULibFunc::EI_DIVIDE:
689 assert ((FInfo.getPrefix() == AMDGPULibFunc::NATIVE ||
690 FInfo.getPrefix() == AMDGPULibFunc::HALF) &&
694 case AMDGPULibFunc::EI_POW:
695 case AMDGPULibFunc::EI_POWR:
696 case AMDGPULibFunc::EI_POWN:
699 case AMDGPULibFunc::EI_ROOTN:
703 case AMDGPULibFunc::EI_FMA:
704 case AMDGPULibFunc::EI_MAD:
705 case AMDGPULibFunc::EI_NFMA:
709 case AMDGPULibFunc::EI_SQRT:
711 case AMDGPULibFunc::EI_COS:
712 case AMDGPULibFunc::EI_SIN:
713 if ((getArgType(FInfo) == AMDGPULibFunc::F32 ||
714 getArgType(FInfo) == AMDGPULibFunc::F64)
715 && (FInfo.getPrefix() == AMDGPULibFunc::NOPFX))
719 case AMDGPULibFunc::EI_READ_PIPE_2:
720 case AMDGPULibFunc::EI_READ_PIPE_4:
721 case AMDGPULibFunc::EI_WRITE_PIPE_2:
722 case AMDGPULibFunc::EI_WRITE_PIPE_4:
764 if (getArgType(FInfo) == AMDGPULibFunc::F32) {
798 if (getArgType(FInfo) != AMDGPULibFunc::F32 ||
799 FInfo.getPrefix() != AMDGPULibFunc::NOPFX ||
803 AMDGPULibFunc nf = FInfo;
804 nf.setPrefix(AMDGPULibFunc::NATIVE);
844 (CF1 && (getArgType(FInfo) == AMDGPULibFunc::F32)))
868 assert((FInfo.getId() == AMDGPULibFunc::EI_POW ||
869 FInfo.getId() == AMDGPULibFunc::EI_POWR ||
870 FInfo.getId() == AMDGPULibFunc::EI_POWN) &&
945 getFunction(M, AMDGPULibFunc(issqrt ? AMDGPULibFunc::EI_SQRT
946 : AMDGPULibFunc::EI_RSQRT,
964 double dval = (getArgType(FInfo) == AMDGPULibFunc::F32)
1015 getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_EXP2, FInfo));
1027 double V = (getArgType(FInfo) == AMDGPULibFunc::F32)
1033 needcopysign = (FInfo.getId() != AMDGPULibFunc::EI_POWR) &&
1037 needcopysign = needabs = FInfo.getId() != AMDGPULibFunc::EI_POWR &&
1045 needcopysign = needabs = FInfo.getId() != AMDGPULibFunc::EI_POWR;
1052 double V = (getArgType(FInfo) == AMDGPULibFunc::F32)
1059 if (getArgType(FInfo) == AMDGPULibFunc::F32) {
1073 if (needcopysign && (FInfo.getId() == AMDGPULibFunc::EI_POW)) {
1078 double y = (getArgType(FInfo) == AMDGPULibFunc::F32)
1088 double y = (getArgType(FInfo) == AMDGPULibFunc::F32)
1102 getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_FABS, FInfo));
1111 getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_LOG2, FInfo));
1117 if (FInfo.getId() == AMDGPULibFunc::EI_POWN) {
1169 getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_SQRT, FInfo))) {
1178 getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_CBRT, FInfo))) {
1194 getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_RSQRT, FInfo))) {
1252 if (getArgType(FInfo) == AMDGPULibFunc::F64 || !HasNative(FInfo.getId()))
1255 nf.setPrefix(AMDGPULibFunc::NATIVE);
1262 if (getArgType(FInfo) == AMDGPULibFunc::F32 && (getVecSize(FInfo) == 1) &&
1263 (FInfo.getPrefix() != AMDGPULibFunc::NATIVE)) {
1265 CI->getModule(), AMDGPULibFunc(AMDGPULibFunc::EI_SQRT, FInfo))) {
1280 AMDGPULibFunc fInfo;
1281 if (!AMDGPULibFunc::parse(CI->getCalledFunction()->getName(), fInfo))
1284 assert(fInfo.getId() == AMDGPULibFunc::EI_SIN ||
1285 fInfo.getId() == AMDGPULibFunc::EI_COS);
1286 bool const isSin = fInfo.getId() == AMDGPULibFunc::EI_SIN;
1308 fInfo.setId(isSin ? AMDGPULibFunc::EI_COS : AMDGPULibFunc::EI_SIN);
1340 AMDGPULibFunc nf(AMDGPULibFunc::EI_SINCOS, fInfo);
1341 nf.getLeads()[0].PtrKind = AMDGPULibFunc::getEPtrKindFromAddrSpace(AMDGPUAS::FLAT_ADDRESS);
1436 opr0 = (getArgType(FInfo) == AMDGPULibFunc::F64)
1442 opr1 = (getArgType(FInfo) == AMDGPULibFunc::F64)
1448 opr2 = (getArgType(FInfo) == AMDGPULibFunc::F64)
1456 case AMDGPULibFunc::EI_ACOS:
1460 case AMDGPULibFunc::EI_ACOSH:
1465 case AMDGPULibFunc::EI_ACOSPI:
1469 case AMDGPULibFunc::EI_ASIN:
1473 case AMDGPULibFunc::EI_ASINH:
1478 case AMDGPULibFunc::EI_ASINPI:
1482 case AMDGPULibFunc::EI_ATAN:
1486 case AMDGPULibFunc::EI_ATANH:
1491 case AMDGPULibFunc::EI_ATANPI:
1495 case AMDGPULibFunc::EI_CBRT:
1499 case AMDGPULibFunc::EI_COS:
1503 case AMDGPULibFunc::EI_COSH:
1507 case AMDGPULibFunc::EI_COSPI:
1511 case AMDGPULibFunc::EI_EXP:
1515 case AMDGPULibFunc::EI_EXP2:
1519 case AMDGPULibFunc::EI_EXP10:
1523 case AMDGPULibFunc::EI_EXPM1:
1527 case AMDGPULibFunc::EI_LOG:
1531 case AMDGPULibFunc::EI_LOG2:
1535 case AMDGPULibFunc::EI_LOG10:
1539 case AMDGPULibFunc::EI_RSQRT:
1543 case AMDGPULibFunc::EI_SIN:
1547 case AMDGPULibFunc::EI_SINH:
1551 case AMDGPULibFunc::EI_SINPI:
1555 case AMDGPULibFunc::EI_SQRT:
1559 case AMDGPULibFunc::EI_TAN:
1563 case AMDGPULibFunc::EI_TANH:
1567 case AMDGPULibFunc::EI_TANPI:
1571 case AMDGPULibFunc::EI_RECIP:
1576 case AMDGPULibFunc::EI_DIVIDE:
1580 case AMDGPULibFunc::EI_POW:
1581 case AMDGPULibFunc::EI_POWR:
1585 case AMDGPULibFunc::EI_POWN: {
1594 case AMDGPULibFunc::EI_ROOTN: {
1604 case AMDGPULibFunc::EI_SINCOS:
1610 case AMDGPULibFunc::EI_FMA:
1611 case AMDGPULibFunc::EI_MAD:
1634 if (FInfo.getId() != AMDGPULibFunc::EI_SINCOS)
1648 bool hasTwoResults = (FInfo.getId() == AMDGPULibFunc::EI_SINCOS);
1676 if (getArgType(FInfo) == AMDGPULibFunc::F32) {
1700 assert(FInfo.getId() == AMDGPULibFunc::EI_SINCOS &&