//===-- cxx_loop_proto.proto - Protobuf description of C++ with for loops -===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
///
/// \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;
