www.gusucode.com > rtwdemos 工具箱matlab源码程序 > rtwdemos/crl_demo/sl_customization.m

    function sl_customization(cm)

% Copyright 2007-2014 The MathWorks, Inc.
% 
% 

cm.registerTargetInfo(@locCrlRegFcn);

end % End of SL_CUSTOMIZATION


% Local function(s)
function thisCrl = locCrlRegFcn
thisidx=1;
% Register a Code Replacement Library for use with model: rtwdemo_crladdsub.mdl and rtwdemo_crl_cbo_cao.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Addition & Subtraction Examples'; 
thisCrl(thisidx).Description = 'Demonstration of addition and subtraction operator replacement for built-in integers';
thisCrl(thisidx).TableList = {'crl_table_addsub'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlmuldiv.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Multiplication & Division Examples'; 
thisCrl(thisidx).Description = 'Demonstration of multiplication and division operator replacement for built-in integers';
thisCrl(thisidx).TableList = {'crl_table_muldiv'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlfixpt.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Fixed Point Examples'; 
thisCrl(thisidx).Description = 'Demonstration of fixed point operator replacement';
thisCrl(thisidx).TableList = {'crl_table_fixpt'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlmath.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Math Function Examples'; 
thisCrl(thisidx).Description = 'Demonstration of math function replacement';
thisCrl(thisidx).TableList = {'crl_table_math'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlblas.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Matrix Multiplication to BLAS Examples'; 
thisCrl(thisidx).Description = 'Demonstration of mapping matrix multiplication to BLAS calls';
thisCrl(thisidx).TableList = {'crl_table_tmwblas'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlmatops.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Matrix Operation Examples'; 
thisCrl(thisidx).Description = 'Demonstration of mapping matrix operations to function calls';
thisCrl(thisidx).TableList = {'crl_table_matrixop'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlcblas.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Matrix Multiplication to C BLAS Examples'; 
thisCrl(thisidx).Description = 'Demonstration of mapping matrix multiplication to C BLAS calls';
thisCrl(thisidx).TableList = {'crl_table_cblas'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlscalarops.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Scalar Operation Examples'; 
thisCrl(thisidx).Description = 'Demonstration of mapping scalar operation to function calls';
thisCrl(thisidx).TableList = {'crl_table_scalarop'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlcustomentry.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Custom CRL Entry Examples'; 
thisCrl(thisidx).Description = 'Demonstration of using custom CRL entries for code generation';
thisCrl(thisidx).TableList = {'crl_table_customentry'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

%%get the correct compiler type for current operation system
% locDataAlignSpecification will need this info
if ispc
    defaultcompiler = 'msvc';
elseif ismac
    defaultcompiler = 'clang';
else
    defaultcompiler = 'gcc';
end



%the default compiler type is msvc for windows
%add mingw and msvc for windows system
if ispc
    thisCrl(thisidx) = RTW.TflRegistry;
    thisCrl(thisidx).Name = 'Data Alignment Examples for MinGW'; 
    thisCrl(thisidx).Description = 'Demonstration of using CRL entries for data alignment for windows MinGW';
    thisCrl(thisidx).TableList = {'crl_table_align_MinGW'};
    thisCrl(thisidx).TargetHWDeviceType = {'*'};
  %  thisCrl(thisidx).TargetToolchain={'GNU-4.x'};
    tc = RTW.TargetCharacteristics;
    tc.DataAlignment = locDataAlignSpecification('mingw');
    thisCrl(thisidx).TargetCharacteristics = tc;
    thisidx=thisidx+1;
end

    thisCrl(thisidx) = RTW.TflRegistry;
    thisCrl(thisidx).Name = 'Data Alignment Examples for Non-MinGW'; 
    thisCrl(thisidx).Description = 'Demonstration of using CRL entries for data alignment';
    thisCrl(thisidx).TableList = {'crl_table_align_default'};
    thisCrl(thisidx).TargetHWDeviceType = {'*'};
  %  thisCrl(thisidx).TargetToolchain={'GNU-4.x'};
    tc = RTW.TargetCharacteristics;
    tc.DataAlignment = locDataAlignSpecification(defaultcompiler);
    thisCrl(thisidx).TargetCharacteristics = tc;
    thisidx=thisidx+1;


% Register a Code Replacement Library for use with model: rtwdemo_crlalignperf.mdl
if ispc
    thisCrl(thisidx) = RTW.TflRegistry;
    thisCrl(thisidx).Name = 'SIMD Single 5x5 Element-wise Mul for MinGW'; 
    thisCrl(thisidx).TableList = {'crl_simd_mul_MinGW'};
  %  thisCrl(thisidx).TargetToolchain={'GNU-4.x'};
    tc = RTW.TargetCharacteristics;
    tc.DataAlignment = locDataAlignSpecification('mingw');
    thisCrl(thisidx).TargetCharacteristics = tc;
    thisidx=thisidx+1;
end

thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'SIMD Single 5x5 Element-wise Mul for Non-MinGW';
thisCrl(thisidx).TableList = {'crl_simd_mul_default'};
tc = RTW.TargetCharacteristics;
tc.DataAlignment = locDataAlignSpecification(defaultcompiler);
thisCrl(thisidx).TargetCharacteristics = tc;
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crlcustomentry.mdl
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Coder Replace Examples'; 
thisCrl(thisidx).Description = 'Demonstration of replacing MATLAB functions using CRL entries for code generation';
thisCrl(thisidx).TableList = {'crl_table_coderreplace'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};
thisidx=thisidx+1;

% Register a Code Replacement Library for use with model: rtwdemo_crllookup1d.slx
thisCrl(thisidx) = RTW.TflRegistry;
thisCrl(thisidx).Name = 'Lookup Table Function Replace Example'; 
thisCrl(thisidx).Description = 'Demonstration of replacing lookup table functions using CRL entries for code generation';
thisCrl(thisidx).TableList = {'crl_table_lookup1D'};
thisCrl(thisidx).TargetHWDeviceType = {'*'};

end % End of LOCCRLREGFCN

function da = locDataAlignSpecification(compiler)
    da = [];
    
    switch compiler
        case 'msvc'
            aT = '__declspec(align(%n))';
        case {'mingw', 'gcc', 'clang'}
            aT = '__attribute((aligned(%n)))';
        otherwise
            return;
    end

    as = RTW.AlignmentSpecification;
    as.AlignmentSyntaxTemplate = aT;
    as.AlignmentType = { 'DATA_ALIGNMENT_LOCAL_VAR', ...
                         'DATA_ALIGNMENT_GLOBAL_VAR', ...
                         'DATA_ALIGNMENT_STRUCT_FIELD'};
    as.SupportedLanguages={'c', 'c++'};
    da = RTW.DataAlignment;
    da.addAlignmentSpecification(as);          

end

% EOF