コード例 #1
0
template <typename Visitor> void enumerateFields_gen(OperandAddress obj,  Visitor & vis) {
  vis(obj.symbol(),"symbol");
  vis(obj.reg(),"reg");
  vis(obj.offsetLo(),"offsetLo");
  vis(obj.offset(),"offset");
  vis(obj.offsetHi(),"offsetHi");
  vis(obj.type(),"type");
}
コード例 #2
0
template <typename Visitor> void enumerateFields_gen(OperandAddress obj,  Visitor & vis) {
  enumerateFields_gen(Operand(obj), vis);
  vis(obj.symbol(),"symbol");
  vis(obj.reg(),"reg");
  enumerateFields(obj.offset(), vis);
}
コード例 #3
0
bool ValidatorImpl::ValidateBrigOperandFields(Operand item) const
{
    unsigned kind = item.kind();

    switch (kind)
    {
       case BRIG_KIND_OPERAND_ADDRESS:
       {
           OperandAddress it = item;

           validate_BrigCodeOffset(item, it.brig()->symbol, "OperandAddress", "symbol");
           validate_BrigOperandOffset(item, it.brig()->reg, "OperandAddress", "reg");
           validate_fld_Offset(item, it.brig()->offset, "OperandAddress", "offset");
       }
       break;

       case BRIG_KIND_OPERAND_ALIGN:
       {
           OperandAlign it = item;

           validate_BrigAlignment(item, it.brig()->align, "OperandAlign", "align");
           for (unsigned i = 0; i < 3; i++) {
               validate_fld_Reserved(item, it.brig()->reserved[i], "OperandAlign", "reserved");
           }
       }
       break;

       case BRIG_KIND_OPERAND_CODE_LIST:
       {
           OperandCodeList it = item;

           validate_BrigDataOffsetCodeList(item, it.brig()->elements, "OperandCodeList", "elements");
       }
       break;

       case BRIG_KIND_OPERAND_CODE_REF:
       {
           OperandCodeRef it = item;

           validate_BrigCodeOffset(item, it.brig()->ref, "OperandCodeRef", "ref");
       }
       break;

       case BRIG_KIND_OPERAND_CONSTANT_BYTES:
       {
           OperandConstantBytes it = item;

           validate_BrigType(item, it.brig()->type, "OperandConstantBytes", "type");
           validate_fld_Reserved(item, it.brig()->reserved, "OperandConstantBytes", "reserved");
           validate_BrigDataOffsetString(item, it.brig()->bytes, "OperandConstantBytes", "bytes");
       }
       break;

       case BRIG_KIND_OPERAND_CONSTANT_IMAGE:
       {
           OperandConstantImage it = item;

           validate_BrigType(item, it.brig()->type, "OperandConstantImage", "type");
           validate_BrigImageGeometry(item, it.brig()->geometry, "OperandConstantImage", "geometry");
           validate_BrigImageChannelOrder(item, it.brig()->channelOrder, "OperandConstantImage", "channelOrder");
           validate_BrigImageChannelType(item, it.brig()->channelType, "OperandConstantImage", "channelType");
           for (unsigned i = 0; i < 3; i++) {
               validate_fld_Reserved(item, it.brig()->reserved[i], "OperandConstantImage", "reserved");
           }
           validate_fld_Width(item, it.brig()->width, "OperandConstantImage", "width");
           validate_fld_Height(item, it.brig()->height, "OperandConstantImage", "height");
           validate_fld_Depth(item, it.brig()->depth, "OperandConstantImage", "depth");
           validate_fld_Array(item, it.brig()->array, "OperandConstantImage", "array");
       }
       break;

       case BRIG_KIND_OPERAND_CONSTANT_OPERAND_LIST:
       {
           OperandConstantOperandList it = item;

           validate_BrigType(item, it.brig()->type, "OperandConstantOperandList", "type");
           validate_fld_Reserved(item, it.brig()->reserved, "OperandConstantOperandList", "reserved");
           validate_BrigDataOffsetOperandList(item, it.brig()->elements, "OperandConstantOperandList", "elements");
       }
       break;

       case BRIG_KIND_OPERAND_CONSTANT_SAMPLER:
       {
           OperandConstantSampler it = item;

           validate_BrigType(item, it.brig()->type, "OperandConstantSampler", "type");
           validate_BrigSamplerCoordNormalization(item, it.brig()->coord, "OperandConstantSampler", "coord");
           validate_BrigSamplerFilter(item, it.brig()->filter, "OperandConstantSampler", "filter");
           validate_BrigSamplerAddressing(item, it.brig()->addressing, "OperandConstantSampler", "addressing");
           for (unsigned i = 0; i < 3; i++) {
               validate_fld_Reserved(item, it.brig()->reserved[i], "OperandConstantSampler", "reserved");
           }
       }
       break;

       case BRIG_KIND_OPERAND_OPERAND_LIST:
       {
           OperandOperandList it = item;

           validate_BrigDataOffsetOperandList(item, it.brig()->elements, "OperandOperandList", "elements");
       }
       break;

       case BRIG_KIND_OPERAND_REGISTER:
       {
           OperandRegister it = item;

           validate_BrigRegisterKind(item, it.brig()->regKind, "OperandRegister", "regKind");
           validate_fld_RegNum(item, it.brig()->regNum, "OperandRegister", "regNum");
       }
       break;

       case BRIG_KIND_OPERAND_STRING:
       {
           OperandString it = item;

           validate_BrigDataOffsetString(item, it.brig()->string, "OperandString", "string");
       }
       break;

       case BRIG_KIND_OPERAND_WAVESIZE:
       {
           OperandWavesize it = item;

       }
       break;

    default:
        return false; // not found

    } // switch

    return true; // found and validated
}