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