• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

daisytuner / sdfglib / 20770413849

06 Jan 2026 10:50PM UTC coverage: 62.168% (+21.4%) from 40.764%
20770413849

push

github

web-flow
Merge pull request #433 from daisytuner/clang-coverage

updates clang coverage flags

14988 of 24109 relevant lines covered (62.17%)

88.57 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

72.22
/src/data_flow/library_nodes/math/tensor/elementwise_ops/pow_node.cpp
1
#include "sdfg/data_flow/library_nodes/math/tensor/elementwise_ops/pow_node.h"
2

3
#include "sdfg/analysis/analysis.h"
4
#include "sdfg/builder/structured_sdfg_builder.h"
5

6
#include "sdfg/analysis/scope_analysis.h"
7

8
#include "sdfg/data_flow/library_nodes/math/cmath/cmath_node.h"
9

10
namespace sdfg {
11
namespace math {
12
namespace tensor {
13

14
PowNode::PowNode(
15
    size_t element_id,
16
    const DebugInfo& debug_info,
17
    const graph::Vertex vertex,
18
    data_flow::DataFlowGraph& parent,
19
    const std::vector<symbolic::Expression>& shape
20
)
21
    : ElementWiseBinaryNode(element_id, debug_info, vertex, parent, LibraryNodeType_Pow, shape) {}
4✔
22

23
bool PowNode::expand_operation(
24
    builder::StructuredSDFGBuilder& builder,
25
    analysis::AnalysisManager& analysis_manager,
26
    structured_control_flow::Sequence& body,
27
    const std::string& input_name_a,
28
    const std::string& input_name_b,
29
    const std::string& output_name,
30
    const types::IType& input_type_a,
31
    const types::IType& input_type_b,
32
    const types::IType& output_type,
33
    const data_flow::Subset& subset
34
) {
4✔
35
    auto& code_block = builder.add_block(body);
4✔
36
    data_flow::AccessNode* input_node_a;
4✔
37
    if (builder.subject().exists(input_name_a)) {
4✔
38
        input_node_a = &builder.add_access(code_block, input_name_a);
4✔
39
    } else {
4✔
40
        input_node_a = &builder.add_constant(code_block, input_name_a, input_type_a);
×
41
    }
×
42
    data_flow::AccessNode* input_node_b;
4✔
43
    if (builder.subject().exists(input_name_b)) {
4✔
44
        input_node_b = &builder.add_access(code_block, input_name_b);
4✔
45
    } else {
4✔
46
        input_node_b = &builder.add_constant(code_block, input_name_b, input_type_b);
×
47
    }
×
48
    auto& output_node = builder.add_access(code_block, output_name);
4✔
49

50
    auto& tasklet = builder.add_library_node<math::cmath::CMathNode>(
4✔
51
        code_block, code_block.debug_info(), cmath::CMathFunction::pow, input_type_a.primitive_type()
4✔
52
    );
4✔
53

54
    if (input_type_a.type_id() == types::TypeID::Scalar) {
4✔
55
        builder.add_computational_memlet(code_block, *input_node_a, tasklet, "_in1", {}, input_type_a);
×
56
    } else {
4✔
57
        builder.add_computational_memlet(code_block, *input_node_a, tasklet, "_in1", subset, input_type_a);
4✔
58
    }
4✔
59
    if (input_type_b.type_id() == types::TypeID::Scalar) {
4✔
60
        builder.add_computational_memlet(code_block, *input_node_b, tasklet, "_in2", {}, input_type_b);
×
61
    } else {
4✔
62
        builder.add_computational_memlet(code_block, *input_node_b, tasklet, "_in2", subset, input_type_b);
4✔
63
    }
4✔
64
    builder.add_computational_memlet(code_block, tasklet, "_out", output_node, subset, output_type);
4✔
65

66
    return true;
4✔
67
}
4✔
68

69
std::unique_ptr<data_flow::DataFlowNode> PowNode::
70
    clone(size_t element_id, const graph::Vertex vertex, data_flow::DataFlowGraph& parent) const {
×
71
    return std::unique_ptr<
×
72
        data_flow::DataFlowNode>(new PowNode(element_id, this->debug_info(), vertex, parent, this->shape_));
×
73
}
×
74

75
} // namespace tensor
76
} // namespace math
77
} // namespace sdfg
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc