BROADCAST\_INFER
================

#### 函数功能

提供公共函数宏封装，供算子开发者开发InferShape函数。该函数基于2个输入的shape，设置输出的shape。该宏只是设置shape，未设置dtype。

*   如果2个输入的shape一致，会按输入的shape设置输出shape。
    
*   如果2个输入的shape不一致，会按照broadcast的策略，取2个输入shape的并集。
    
    比如输入shape分别为（1,2,3,4）和（3,1,3,4），则该宏会设置算子的输出shape为（3,2,3,4）。
    

#### 函数原型

BROADCAST\_INFER(in1\_name, in2\_name, out\_name)

该函数会自动调用如下函数：

graphStatus BroadCastInfer(const function<vector<int64\_t>()> &get\_in1\_shape,
                           const function<vector<int64\_t>()> &get\_in2\_shape,
                           const function<void(const std::vector<int64\_t> &y\_shape)> &set\_out\_shape);

#### 约束说明

无

#### 参数说明

| 参数名 | 输入/输出 | 描述 |
| :-- | :-- | :-- |
| in1\_name | 输入 | 算子第一个输入。 |
| in2\_name | 输入 | 算子第二个输入。 |
| out\_name | 输出 | 算子输出。 |

#### 返回值

执行成功或失败。

#### 调用示例

IMPLEMT\_INFERFUNC(RightShift, RightShiftInfer) {
  DataType type = op.GetInputDesc("x").GetDataType();
  SET\_OUTPUT\_TYPE(op, "z", type);
  return BROADCAST\_INFER("x", "y", "z")(op);
}