//===-- cxx_loop_proto.proto - Protobuf description of C++ with for loops -===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
///
/// \file
///  This file describes a subset of C++ as a protobuf. It is used to
///  more easily find interesting inputs for fuzzing LLVM's vectorizer.
///  This subset differs from the one defined in cxx_proto.proto by eliminating
///  while loops and conditionals. The goal is that the C++ code generated will
///  be more likely to stress the LLVM loop vectorizer. The code generated will
///  contain either a single loop or two nested loops.
///
//===----------------------------------------------------------------------===//

syntax = "proto2";

message Const {
  required int32 val = 1;
}

message VarRef {
  // Add an enum for each array in function signature
  enum Arr {
    ARR_A = 0;
    ARR_B = 1;
    ARR_C = 2;
  };
  required Arr arr = 1;
}

message BinaryOp {
  enum Op {
    PLUS = 0;
    MINUS = 1;
    MUL = 2;
    XOR = 3;
    AND = 4;
    OR = 5;
    EQ = 6;
    NE = 7;
    LE = 8;
    GE = 9;
    LT = 10;
    GT = 11;
  };
  required Op op = 1;
  required Rvalue left = 2;
  required Rvalue right = 3;
}

message Rvalue {
  oneof rvalue_oneof {
    Const cons = 1;
    BinaryOp binop = 2;
    VarRef varref = 3;
  }
}

message AssignmentStatement {
  required VarRef varref = 1;
  required Rvalue rvalue = 2;
}

message Statement {
  required AssignmentStatement assignment = 1;
}

message StatementSeq {
  repeated Statement statements = 1;
}

message LoopFunction {
  optional StatementSeq inner_statements = 1;
  required StatementSeq outer_statements = 2;
}

package clang_fuzzer;
