Lines Matching full:analysis
26 const analysis::Constant* GetNan(const analysis::Type* type, in GetNan()
27 analysis::ConstantManager* const_mgr) { in GetNan()
28 const analysis::Float* float_type = type->AsFloat(); in GetNan()
46 const analysis::Constant* GetInf(const analysis::Type* type, in GetInf()
47 analysis::ConstantManager* const_mgr) { in GetInf()
48 const analysis::Float* float_type = type->AsFloat(); in GetInf()
64 bool HasFloatingPoint(const analysis::Type* type) { in HasFloatingPoint()
67 } else if (const analysis::Vector* vec_type = type->AsVector()) { in HasFloatingPoint()
76 const analysis::Constant* NegateFPConst(const analysis::Type* result_type, in NegateFPConst()
77 const analysis::Constant* val, in NegateFPConst()
78 analysis::ConstantManager* const_mgr) { in NegateFPConst()
79 const analysis::Float* float_type = result_type->AsFloat(); in NegateFPConst()
92 const analysis::Constant* NegateIntConst(const analysis::Type* result_type, in NegateIntConst()
93 const analysis::Constant* val, in NegateIntConst()
94 analysis::ConstantManager* const_mgr) { in NegateIntConst()
95 const analysis::Integer* int_type = result_type->AsInteger(); in NegateIntConst()
110 const std::vector<const analysis::Constant*>& constants) in FoldExtractWithConstants()
111 -> const analysis::Constant* { in FoldExtractWithConstants()
112 const analysis::Constant* c = constants[kExtractCompositeIdInIdx]; in FoldExtractWithConstants()
121 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldExtractWithConstants()
122 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldExtractWithConstants()
141 const std::vector<const analysis::Constant*>& constants) in FoldInsertWithConstants()
142 -> const analysis::Constant* { in FoldInsertWithConstants()
143 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldInsertWithConstants()
144 const analysis::Constant* object = constants[0]; in FoldInsertWithConstants()
145 const analysis::Constant* composite = constants[1]; in FoldInsertWithConstants()
152 std::vector<const analysis::Constant*> chain; in FoldInsertWithConstants()
153 std::vector<const analysis::Constant*> components; in FoldInsertWithConstants()
154 const analysis::Type* type = nullptr; in FoldInsertWithConstants()
190 const analysis::Constant* constant = in FoldInsertWithConstants()
195 const analysis::Constant* new_constant = const_mgr->GetConstant(type, ids); in FoldInsertWithConstants()
215 const analysis::Constant* constant = in FoldInsertWithConstants()
231 const std::vector<const analysis::Constant*>& constants) in FoldVectorShuffleWithConstants()
232 -> const analysis::Constant* { in FoldVectorShuffleWithConstants()
234 const analysis::Constant* c1 = constants[0]; in FoldVectorShuffleWithConstants()
235 const analysis::Constant* c2 = constants[1]; in FoldVectorShuffleWithConstants()
240 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldVectorShuffleWithConstants()
241 const analysis::Type* element_type = c1->type()->AsVector()->element_type(); in FoldVectorShuffleWithConstants()
243 std::vector<const analysis::Constant*> c1_components; in FoldVectorShuffleWithConstants()
244 if (const analysis::VectorConstant* vec_const = c1->AsVectorConstant()) { in FoldVectorShuffleWithConstants()
248 const analysis::Constant* element = in FoldVectorShuffleWithConstants()
252 std::vector<const analysis::Constant*> c2_components; in FoldVectorShuffleWithConstants()
253 if (const analysis::VectorConstant* vec_const = c2->AsVectorConstant()) { in FoldVectorShuffleWithConstants()
257 const analysis::Constant* element = in FoldVectorShuffleWithConstants()
280 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldVectorShuffleWithConstants()
287 const std::vector<const analysis::Constant*>& constants) in FoldVectorTimesScalar()
288 -> const analysis::Constant* { in FoldVectorTimesScalar()
290 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldVectorTimesScalar()
291 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldVectorTimesScalar()
299 const analysis::Constant* c1 = constants[0]; in FoldVectorTimesScalar()
300 const analysis::Constant* c2 = constants[1]; in FoldVectorTimesScalar()
317 const analysis::Type* result_type = type_mgr->GetType(inst->type_id()); in FoldVectorTimesScalar()
318 const analysis::Vector* vector_type = result_type->AsVector(); in FoldVectorTimesScalar()
320 const analysis::Type* element_type = vector_type->element_type(); in FoldVectorTimesScalar()
322 const analysis::Float* float_type = element_type->AsFloat(); in FoldVectorTimesScalar()
331 std::vector<const analysis::Constant*> c1_components = in FoldVectorTimesScalar()
339 const analysis::Constant* new_elem = in FoldVectorTimesScalar()
350 const analysis::Constant* new_elem = in FoldVectorTimesScalar()
363 const analysis::Constant* TransposeMatrix(const analysis::Constant* matrix, in TransposeMatrix()
364 analysis::Matrix* result_type, in TransposeMatrix()
366 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in TransposeMatrix()
376 for (const analysis::Constant* column : columns) { in TransposeMatrix()
402 const analysis::Constant* FoldTranspose( in FoldTranspose()
404 const std::vector<const analysis::Constant*>& constants) { in FoldTranspose()
407 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldTranspose()
414 const analysis::Constant* matrix = constants[0]; in FoldTranspose()
425 const std::vector<const analysis::Constant*>& constants) in FoldVectorTimesMatrix()
426 -> const analysis::Constant* { in FoldVectorTimesMatrix()
428 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldVectorTimesMatrix()
429 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldVectorTimesMatrix()
437 const analysis::Constant* c1 = constants[0]; in FoldVectorTimesMatrix()
438 const analysis::Constant* c2 = constants[1]; in FoldVectorTimesMatrix()
445 const analysis::Type* result_type = type_mgr->GetType(inst->type_id()); in FoldVectorTimesMatrix()
446 const analysis::Vector* vector_type = result_type->AsVector(); in FoldVectorTimesMatrix()
448 const analysis::Type* element_type = vector_type->element_type(); in FoldVectorTimesMatrix()
450 const analysis::Float* float_type = element_type->AsFloat(); in FoldVectorTimesMatrix()
464 const analysis::Constant* new_elem = in FoldVectorTimesMatrix()
472 std::vector<const analysis::Constant*> c1_components = in FoldVectorTimesMatrix()
474 std::vector<const analysis::Constant*> c2_components = in FoldVectorTimesMatrix()
481 const analysis::VectorConstant* c2_vec = in FoldVectorTimesMatrix()
491 const analysis::Constant* new_elem = in FoldVectorTimesMatrix()
500 const analysis::VectorConstant* c2_vec = in FoldVectorTimesMatrix()
510 const analysis::Constant* new_elem = in FoldVectorTimesMatrix()
522 const std::vector<const analysis::Constant*>& constants) in FoldMatrixTimesVector()
523 -> const analysis::Constant* { in FoldMatrixTimesVector()
525 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldMatrixTimesVector()
526 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldMatrixTimesVector()
534 const analysis::Constant* c1 = constants[0]; in FoldMatrixTimesVector()
535 const analysis::Constant* c2 = constants[1]; in FoldMatrixTimesVector()
542 const analysis::Type* result_type = type_mgr->GetType(inst->type_id()); in FoldMatrixTimesVector()
543 const analysis::Vector* vector_type = result_type->AsVector(); in FoldMatrixTimesVector()
545 const analysis::Type* element_type = vector_type->element_type(); in FoldMatrixTimesVector()
547 const analysis::Float* float_type = element_type->AsFloat(); in FoldMatrixTimesVector()
560 const analysis::Constant* new_elem = in FoldMatrixTimesVector()
568 std::vector<const analysis::Constant*> c1_components = in FoldMatrixTimesVector()
570 std::vector<const analysis::Constant*> c2_components = in FoldMatrixTimesVector()
588 const analysis::Constant* new_elem = in FoldMatrixTimesVector()
608 const analysis::Constant* new_elem = in FoldMatrixTimesVector()
622 const std::vector<const analysis::Constant*>& constants) in FoldCompositeWithConstants()
623 -> const analysis::Constant* { in FoldCompositeWithConstants()
624 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldCompositeWithConstants()
625 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldCompositeWithConstants()
626 const analysis::Type* new_type = type_mgr->GetType(inst->type_id()); in FoldCompositeWithConstants()
632 const analysis::Constant* element_const = constants[i]; in FoldCompositeWithConstants()
658 using UnaryScalarFoldingRule = std::function<const analysis::Constant*(
659 const analysis::Type* result_type, const analysis::Constant* a,
660 analysis::ConstantManager*)>;
665 using BinaryScalarFoldingRule = std::function<const analysis::Constant*(
666 const analysis::Type* result_type, const analysis::Constant* a,
667 const analysis::Constant* b, analysis::ConstantManager*)>;
677 const std::vector<const analysis::Constant*>& constants) in FoldUnaryOp()
678 -> const analysis::Constant* { in FoldUnaryOp()
679 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldUnaryOp()
680 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldUnaryOp()
681 const analysis::Type* result_type = type_mgr->GetType(inst->type_id()); in FoldUnaryOp()
682 const analysis::Vector* vector_type = result_type->AsVector(); in FoldUnaryOp()
684 const analysis::Constant* arg = in FoldUnaryOp()
692 std::vector<const analysis::Constant*> a_components; in FoldUnaryOp()
693 std::vector<const analysis::Constant*> results_components; in FoldUnaryOp()
708 for (const analysis::Constant* member : results_components) { in FoldUnaryOp()
727 const std::vector<const analysis::Constant*>& constants) in FoldBinaryOp()
728 -> const analysis::Constant* { in FoldBinaryOp()
731 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldBinaryOp()
732 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldBinaryOp()
733 const analysis::Type* result_type = type_mgr->GetType(inst->type_id()); in FoldBinaryOp()
734 const analysis::Vector* vector_type = result_type->AsVector(); in FoldBinaryOp()
736 const analysis::Constant* arg1 = in FoldBinaryOp()
738 const analysis::Constant* arg2 = in FoldBinaryOp()
749 std::vector<const analysis::Constant*> a_components; in FoldBinaryOp()
750 std::vector<const analysis::Constant*> b_components; in FoldBinaryOp()
751 std::vector<const analysis::Constant*> results_components; in FoldBinaryOp()
769 for (const analysis::Constant* member : results_components) { in FoldBinaryOp()
785 const std::vector<const analysis::Constant*>& constants) in FoldFPUnaryOp()
786 -> const analysis::Constant* { in FoldFPUnaryOp()
798 const analysis::Constant* FoldFPBinaryOp( in FoldFPBinaryOp()
800 const std::vector<const analysis::Constant*>& constants, in FoldFPBinaryOp()
802 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldFPBinaryOp()
803 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldFPBinaryOp()
804 const analysis::Type* result_type = type_mgr->GetType(result_type_id); in FoldFPBinaryOp()
805 const analysis::Vector* vector_type = result_type->AsVector(); in FoldFPBinaryOp()
812 std::vector<const analysis::Constant*> a_components; in FoldFPBinaryOp()
813 std::vector<const analysis::Constant*> b_components; in FoldFPBinaryOp()
814 std::vector<const analysis::Constant*> results_components; in FoldFPBinaryOp()
831 for (const analysis::Constant* member : results_components) { in FoldFPBinaryOp()
847 const std::vector<const analysis::Constant*>& constants) in FoldFPBinaryOp()
848 -> const analysis::Constant* { in FoldFPBinaryOp()
864 return [](const analysis::Type* result_type, const analysis::Constant* a, in FoldFToIOp()
865 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { in FoldFToIOp()
867 const analysis::Integer* integer_type = result_type->AsInteger(); in FoldFToIOp()
868 const analysis::Float* float_type = a->type()->AsFloat(); in FoldFToIOp()
895 return [](const analysis::Type* result_type, const analysis::Constant* a, in FoldIToFOp()
896 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { in FoldIToFOp()
898 const analysis::Integer* integer_type = a->type()->AsInteger(); in FoldIToFOp()
899 const analysis::Float* float_type = result_type->AsFloat(); in FoldIToFOp()
925 return [](const analysis::Type* result_type, const analysis::Constant* a, in FoldQuantizeToF16Scalar()
926 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { in FoldQuantizeToF16Scalar()
928 const analysis::Float* float_type = a->type()->AsFloat(); in FoldQuantizeToF16Scalar()
948 [](const analysis::Type* result_type_in_macro, const analysis::Constant* a, \
949 const analysis::Constant* b, \
950 analysis::ConstantManager* const_mgr_in_macro) \
951 -> const analysis::Constant* { \
955 const analysis::Float* float_type_in_macro = \
991 const analysis::Constant* FoldFPScalarDivideByZero( in FoldFPScalarDivideByZero()
992 const analysis::Type* result_type, const analysis::Constant* numerator, in FoldFPScalarDivideByZero()
993 analysis::ConstantManager* const_mgr) { in FoldFPScalarDivideByZero()
1002 const analysis::Constant* result = GetInf(result_type, const_mgr); in FoldFPScalarDivideByZero()
1015 const analysis::Constant* FoldScalarFPDivide( in FoldScalarFPDivide()
1016 const analysis::Type* result_type, const analysis::Constant* numerator, in FoldScalarFPDivide()
1017 const analysis::Constant* denominator, in FoldScalarFPDivide()
1018 analysis::ConstantManager* const_mgr) { in FoldScalarFPDivide()
1032 const analysis::FloatConstant* denominator_float = in FoldScalarFPDivide()
1035 const analysis::Constant* result = in FoldScalarFPDivide()
1062 [](const analysis::Type* result_type, const analysis::Constant* a, \
1063 const analysis::Constant* b, \
1064 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { \
1068 const analysis::Float* float_type = a->type()->AsFloat(); \
1131 const std::vector<const analysis::Constant*>& constants) in FoldOpDotWithConstants()
1132 -> const analysis::Constant* { in FoldOpDotWithConstants()
1133 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldOpDotWithConstants()
1134 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldOpDotWithConstants()
1135 const analysis::Type* new_type = type_mgr->GetType(inst->type_id()); in FoldOpDotWithConstants()
1137 const analysis::Float* float_type = new_type->AsFloat(); in FoldOpDotWithConstants()
1174 std::vector<const analysis::Constant*> a_components; in FoldOpDotWithConstants()
1175 std::vector<const analysis::Constant*> b_components; in FoldOpDotWithConstants()
1182 const analysis::Constant* result_const = in FoldOpDotWithConstants()
1190 const analysis::Constant* component = FOLD_FPARITH_OP(*)( in FoldOpDotWithConstants()
1207 const std::vector<const analysis::Constant*>& constants) in FoldFClampFeedingCompare()
1208 -> const analysis::Constant* { in FoldFClampFeedingCompare()
1209 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldFClampFeedingCompare()
1210 analysis::DefUseManager* def_use_mgr = context->get_def_use_mgr(); in FoldFClampFeedingCompare()
1220 analysis::TypeManager* type_mgr = context->get_type_mgr(); in FoldFClampFeedingCompare()
1221 const analysis::Type* operand_type = in FoldFClampFeedingCompare()
1246 const analysis::Constant* max_const = in FoldFClampFeedingCompare()
1250 const analysis::Constant* min_const = in FoldFClampFeedingCompare()
1351 const analysis::Type* bool_type = in FoldFClampFeedingCompare()
1353 const analysis::Constant* result_const = in FoldFClampFeedingCompare()
1362 const std::vector<const analysis::Constant*>& constants) in FoldFMix()
1363 -> const analysis::Constant* { in FoldFMix()
1364 analysis::ConstantManager* const_mgr = context->get_constant_mgr(); in FoldFMix()
1384 const analysis::Constant* one; in FoldFMix()
1386 const analysis::Type* result_type = constants[1]->type(); in FoldFMix()
1387 const analysis::Type* base_type = result_type; in FoldFMix()
1409 const analysis::Constant* temp1 = FoldFPBinaryOp( in FoldFMix()
1415 const analysis::Constant* temp2 = FoldFPBinaryOp( in FoldFMix()
1420 const analysis::Constant* temp3 = in FoldFMix()
1431 const analysis::Constant* FoldMin(const analysis::Type* result_type, in FoldMin()
1432 const analysis::Constant* a, in FoldMin()
1433 const analysis::Constant* b, in FoldMin()
1434 analysis::ConstantManager*) { in FoldMin()
1435 if (const analysis::Integer* int_type = result_type->AsInteger()) { in FoldMin()
1457 } else if (const analysis::Float* float_type = result_type->AsFloat()) { in FoldMin()
1471 const analysis::Constant* FoldMax(const analysis::Type* result_type, in FoldMax()
1472 const analysis::Constant* a, in FoldMax()
1473 const analysis::Constant* b, in FoldMax()
1474 analysis::ConstantManager*) { in FoldMax()
1475 if (const analysis::Integer* int_type = result_type->AsInteger()) { in FoldMax()
1497 } else if (const analysis::Float* float_type = result_type->AsFloat()) { in FoldMax()
1512 const analysis::Constant* FoldClamp1( in FoldClamp1()
1514 const std::vector<const analysis::Constant*>& constants) { in FoldClamp1()
1528 const analysis::Constant* temp = FoldFPBinaryOp( in FoldClamp1()
1538 const analysis::Constant* FoldClamp2( in FoldClamp2()
1540 const std::vector<const analysis::Constant*>& constants) { in FoldClamp2()
1547 const analysis::Constant* x = constants[1]; in FoldClamp2()
1548 const analysis::Constant* min_val = constants[2]; in FoldClamp2()
1554 const analysis::Constant* temp = in FoldClamp2()
1566 const analysis::Constant* FoldClamp3( in FoldClamp3()
1568 const std::vector<const analysis::Constant*>& constants) { in FoldClamp3()
1575 const analysis::Constant* x = constants[1]; in FoldClamp3()
1576 const analysis::Constant* max_val = constants[3]; in FoldClamp3()
1582 const analysis::Constant* temp = in FoldClamp3()
1595 [fp](const analysis::Type* result_type, const analysis::Constant* a, in FoldFTranscendentalUnary()
1596 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { in FoldFTranscendentalUnary()
1598 const analysis::Float* float_type = a->type()->AsFloat(); in FoldFTranscendentalUnary()
1621 [fp](const analysis::Type* result_type, const analysis::Constant* a, in FoldFTranscendentalBinary()
1622 const analysis::Constant* b, in FoldFTranscendentalBinary()
1623 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { in FoldFTranscendentalBinary()
1625 const analysis::Float* float_type = a->type()->AsFloat(); in FoldFTranscendentalBinary()
1659 [op](const analysis::Type* result_type, const analysis::Constant* a, in FoldBinaryIntegerOperation()
1660 const analysis::Constant* b, in FoldBinaryIntegerOperation()
1661 analysis::ConstantManager* const_mgr) -> const analysis::Constant* { in FoldBinaryIntegerOperation()
1663 const analysis::Integer* integer_type = result_type->AsInteger(); in FoldBinaryIntegerOperation()
1665 assert(a->type()->kind() == analysis::Type::kInteger); in FoldBinaryIntegerOperation()
1666 assert(b->type()->kind() == analysis::Type::kInteger); in FoldBinaryIntegerOperation()
1679 const analysis::Constant* result_constant = in FoldBinaryIntegerOperation()
1686 const analysis::Constant* FoldScalarSConvert( in FoldScalarSConvert()
1687 const analysis::Type* result_type, const analysis::Constant* a, in FoldScalarSConvert()
1688 analysis::ConstantManager* const_mgr) { in FoldScalarSConvert()
1692 const analysis::Integer* integer_type = result_type->AsInteger(); in FoldScalarSConvert()
1699 const analysis::Constant* FoldScalarUConvert( in FoldScalarUConvert()
1700 const analysis::Type* result_type, const analysis::Constant* a, in FoldScalarUConvert()
1701 analysis::ConstantManager* const_mgr) { in FoldScalarUConvert()
1705 const analysis::Integer* integer_type = result_type->AsInteger(); in FoldScalarUConvert()