@@ -1823,17 +1823,6 @@ def SYCLSimd : InheritableAttr {
18231823 let SimpleHandler = 1;
18241824}
18251825
1826- // Available in SYCL explicit SIMD extension. Binds a file scope private
1827- // variable to a specific register.
1828- def SYCLRegisterNum : InheritableAttr {
1829- let Spellings = [GNU<"register_num">, Declspec<"register_num">];
1830- let Args = [UnsignedArgument<"Number">];
1831- let Subjects = SubjectList<[GlobalVar]>;
1832- // This attribute is applied to file-scope variables and must be compilable
1833- // for the host device as well
1834- let Documentation = [SYCLRegisterNumDocs];
1835- }
1836-
18371826// Used by FE to mark SYCL kernel pointer parameters which correspond to the
18381827// original lambda's captured accessors. FE turns the attribute to some metadata
18391828// required by the device back-end.
@@ -1935,54 +1924,6 @@ def SYCLIntelKernelArgsRestrict : InheritableAttr {
19351924 let SupportsNonconformingLambdaSyntax = 1;
19361925}
19371926
1938- def SYCLIntelNumSimdWorkItems : InheritableAttr {
1939- let Spellings = [CXX11<"intel", "num_simd_work_items">];
1940- let Args = [ExprArgument<"Value">];
1941- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
1942- let Subjects = SubjectList<[Function], ErrorDiag>;
1943- let Documentation = [SYCLIntelNumSimdWorkItemsAttrDocs];
1944- let SupportsNonconformingLambdaSyntax = 1;
1945- }
1946-
1947- def SYCLIntelUseStallEnableClusters : InheritableAttr {
1948- let Spellings = [CXX11<"intel","use_stall_enable_clusters">];
1949- let LangOpts = [SilentlyIgnoreSYCLIsHost, SYCLIsDevice];
1950- let Subjects = SubjectList<[Function], ErrorDiag>;
1951- let Documentation = [SYCLIntelUseStallEnableClustersAttrDocs];
1952- let SupportsNonconformingLambdaSyntax = 1;
1953- }
1954-
1955- def SYCLIntelSchedulerTargetFmaxMhz : InheritableAttr {
1956- let Spellings = [CXX11<"intel", "scheduler_target_fmax_mhz">];
1957- let Args = [ExprArgument<"Value">];
1958- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
1959- let Subjects = SubjectList<[Function], ErrorDiag>;
1960- let Documentation = [SYCLIntelSchedulerTargetFmaxMhzAttrDocs];
1961- let SupportsNonconformingLambdaSyntax = 1;
1962- }
1963-
1964- def SYCLIntelMaxWorkGroupSize : InheritableAttr {
1965- let Spellings = [CXX11<"intel", "max_work_group_size">];
1966- let Args = [ExprArgument<"XDim">,
1967- ExprArgument<"YDim">,
1968- ExprArgument<"ZDim">];
1969- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
1970- let Subjects = SubjectList<[Function], ErrorDiag>;
1971- let AdditionalMembers = [{
1972- unsigned getXDimVal() const {
1973- return cast<ConstantExpr>(getXDim())->getResultAsAPSInt().getExtValue();
1974- }
1975- unsigned getYDimVal() const {
1976- return cast<ConstantExpr>(getYDim())->getResultAsAPSInt().getExtValue();
1977- }
1978- unsigned getZDimVal() const {
1979- return cast<ConstantExpr>(getZDim())->getResultAsAPSInt().getExtValue();
1980- }
1981- }];
1982- let Documentation = [SYCLIntelMaxWorkGroupSizeAttrDocs];
1983- let SupportsNonconformingLambdaSyntax = 1;
1984- }
1985-
19861927def SYCLIntelMinWorkGroupsPerComputeUnit : InheritableAttr {
19871928 let Spellings = [CXX11<"intel", "min_work_groups_per_cu">];
19881929 let Args = [ExprArgument<"Value">];
@@ -1999,15 +1940,6 @@ def SYCLIntelMaxWorkGroupsPerMultiprocessor : InheritableAttr {
19991940 let Documentation = [SYCLIntelMaxWorkGroupsPerMultiprocessorDocs];
20001941}
20011942
2002- def SYCLIntelMaxGlobalWorkDim : InheritableAttr {
2003- let Spellings = [CXX11<"intel", "max_global_work_dim">];
2004- let Args = [ExprArgument<"Value">];
2005- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
2006- let Subjects = SubjectList<[Function], ErrorDiag>;
2007- let Documentation = [SYCLIntelMaxGlobalWorkDimAttrDocs];
2008- let SupportsNonconformingLambdaSyntax = 1;
2009- }
2010-
20111943def SYCLDeviceGlobal: InheritableAttr {
20121944 let Spellings = [CXX11<"__sycl_detail__", "device_global">];
20131945 let Subjects = SubjectList<[CXXRecord], ErrorDiag>;
@@ -2026,27 +1958,6 @@ def SYCLGlobalVariableAllowed : InheritableAttr {
20261958 let SimpleHandler = 1;
20271959}
20281960
2029- def SYCLIntelNoGlobalWorkOffset : InheritableAttr {
2030- let Spellings = [CXX11<"intel", "no_global_work_offset">];
2031- let Args = [ExprArgument<"Value", /*optional*/1>];
2032- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
2033- let Subjects = SubjectList<[Function], ErrorDiag>;
2034- let Documentation = [SYCLIntelNoGlobalWorkOffsetAttrDocs];
2035- let SupportsNonconformingLambdaSyntax = 1;
2036- }
2037-
2038- def SYCLIntelLoopFuse : InheritableAttr {
2039- let Spellings = [CXX11<"intel", "loop_fuse">,
2040- CXX11<"intel", "loop_fuse_independent">];
2041- let Args = [ExprArgument<"Value", /*optional=*/ 1>];
2042- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
2043- let Subjects = SubjectList<[Function], ErrorDiag>;
2044- let Accessors = [Accessor<"isIndependent",
2045- [CXX11<"intel", "loop_fuse_independent">]>];
2046- let Documentation = [SYCLIntelLoopFuseDocs];
2047- let SupportsNonconformingLambdaSyntax = 1;
2048- }
2049-
20501961class SYCLAddIRAttrMemberCodeHolder<code Code> {
20511962 code MemberCode = Code;
20521963}
@@ -2984,94 +2895,6 @@ def SYCLIntelIVDep : StmtAttr {
29842895 let Documentation = [SYCLIntelIVDepAttrDocs];
29852896}
29862897
2987- def SYCLIntelInitiationInterval : DeclOrStmtAttr {
2988- let Spellings = [CXX11<"intel", "ii">,
2989- CXX11<"intel", "initiation_interval">];
2990- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt, Function],
2991- ErrorDiag,
2992- "'for', 'while', 'do' statements, and functions">;
2993- let Args = [ExprArgument<"NExpr">];
2994- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
2995- let Documentation = [SYCLIntelInitiationIntervalAttrDocs];
2996- let SupportsNonconformingLambdaSyntax = 1;
2997- }
2998-
2999- def SYCLIntelMaxConcurrency : DeclOrStmtAttr {
3000- let Spellings = [CXX11<"intel", "max_concurrency">];
3001- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt, Function],
3002- ErrorDiag,
3003- "'for', 'while', 'do' statements, and functions">;
3004- let Args = [ExprArgument<"NExpr">];
3005- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3006- let Documentation = [SYCLIntelMaxConcurrencyAttrDocs];
3007- let SupportsNonconformingLambdaSyntax = 1;
3008- }
3009-
3010- def SYCLIntelLoopCoalesce : StmtAttr {
3011- let Spellings = [CXX11<"intel", "loop_coalesce">];
3012- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
3013- ErrorDiag, "'for', 'while', and 'do' statements">;
3014- let Args = [ExprArgument<"NExpr", /*opt*/1>];
3015- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3016- let Documentation = [SYCLIntelLoopCoalesceAttrDocs];
3017- }
3018-
3019- def SYCLIntelDisableLoopPipelining : DeclOrStmtAttr {
3020- let Spellings = [CXX11<"intel", "disable_loop_pipelining">];
3021- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt, Function],
3022- ErrorDiag,
3023- "'for', 'while', 'do' statements, and functions">;
3024- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3025- let Documentation = [SYCLIntelDisableLoopPipeliningAttrDocs];
3026- let SupportsNonconformingLambdaSyntax = 1;
3027- let SimpleHandler = 1;
3028- }
3029- def : MutualExclusions<[SYCLIntelInitiationInterval,
3030- SYCLIntelDisableLoopPipelining]>;
3031- def : MutualExclusions<[SYCLIntelIVDep,
3032- SYCLIntelDisableLoopPipelining]>;
3033- def : MutualExclusions<[SYCLIntelMaxConcurrency,
3034- SYCLIntelDisableLoopPipelining]>;
3035-
3036- def SYCLIntelLoopCount : StmtAttr {
3037- let Spellings = [CXX11<"intel", "loop_count_min">,
3038- CXX11<"intel", "loop_count_max">,
3039- CXX11<"intel", "loop_count_avg">,
3040- CXX11<"intel", "loop_count">];
3041- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
3042- ErrorDiag, "'for', 'while', and 'do' statements">;
3043- let Accessors = [Accessor<"isMin", [CXX11<"intel", "loop_count_min">]>,
3044- Accessor<"isMax", [CXX11<"intel", "loop_count_max">]>,
3045- Accessor<"isAvg", [CXX11<"intel", "loop_count_avg">]>,
3046- Accessor<"isCount", [CXX11<"intel", "loop_count">]>];
3047- let Args = [ExprArgument<"NTripCount">];
3048- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3049- let Documentation = [SYCLIntelLoopCountAttrDocs];
3050- }
3051-
3052- def : MutualExclusions<[SYCLIntelMaxConcurrency,
3053- SYCLIntelDisableLoopPipelining]>;
3054-
3055- def SYCLIntelMaxInterleaving : StmtAttr {
3056- let Spellings = [CXX11<"intel", "max_interleaving">];
3057- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
3058- ErrorDiag, "'for', 'while', and 'do' statements">;
3059- let Args = [ExprArgument<"NExpr">];
3060- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3061- let Documentation = [SYCLIntelMaxInterleavingAttrDocs];
3062- }
3063-
3064- def SYCLIntelSpeculatedIterations : StmtAttr {
3065- let Spellings = [CXX11<"intel", "speculated_iterations">];
3066- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
3067- ErrorDiag, "'for', 'while', and 'do' statements">;
3068- let Args = [ExprArgument<"NExpr">];
3069- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3070- let Documentation = [SYCLIntelSpeculatedIterationsAttrDocs];
3071- }
3072- def : MutualExclusions<[SYCLIntelDisableLoopPipelining,
3073- SYCLIntelSpeculatedIterations]>;
3074-
30752898def SYCLIntelNofusion : StmtAttr {
30762899 let Spellings = [CXX11<"intel","nofusion">];
30772900 let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
@@ -3080,148 +2903,7 @@ def SYCLIntelNofusion : StmtAttr {
30802903 let Documentation = [SYCLIntelNofusionAttrDocs];
30812904}
30822905
3083- def SYCLIntelMaxReinvocationDelay : StmtAttr {
3084- let Spellings = [CXX11<"intel", "max_reinvocation_delay">];
3085- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
3086- ErrorDiag, "'for', 'while', and 'do' statements">;
3087- let Args = [ExprArgument<"NExpr">];
3088- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3089- let Documentation = [SYCLIntelMaxReinvocationDelayAttrDocs];
3090- }
3091- def : MutualExclusions<[SYCLIntelDisableLoopPipelining,
3092- SYCLIntelMaxReinvocationDelay]>;
3093-
3094- def SYCLIntelEnableLoopPipelining : StmtAttr {
3095- let Spellings = [CXX11<"intel", "enable_loop_pipelining">];
3096- let Subjects = SubjectList<[ForStmt, CXXForRangeStmt, WhileStmt, DoStmt],
3097- ErrorDiag, "'for', 'while', and 'do' statements">;
3098- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3099- let Documentation = [SYCLIntelEnableLoopPipeliningAttrDocs];
3100- }
3101-
3102- def : MutualExclusions<[SYCLIntelDisableLoopPipelining,
3103- SYCLIntelEnableLoopPipelining]>;
3104-
3105- def SYCLIntelDoublePump : Attr {
3106- let Spellings = [CXX11<"intel", "doublepump">];
3107- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3108- let Documentation = [SYCLIntelDoublePumpAttrDocs];
3109- }
3110-
3111- def SYCLIntelSinglePump : Attr {
3112- let Spellings = [CXX11<"intel", "singlepump">];
3113- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3114- let Documentation = [SYCLIntelSinglePumpAttrDocs];
3115- }
3116-
3117- def SYCLIntelMemory : Attr {
3118- let Spellings = [CXX11<"intel", "fpga_memory">];
3119- let Args = [EnumArgument<"Kind", "MemoryKind", /*is_string=*/false,
3120- ["MLAB", "BLOCK_RAM", ""],
3121- ["MLAB", "BlockRAM", "Default"], 1>];
3122- let AdditionalMembers = [{
3123- static void generateValidStrings(SmallString<256> &Str) {
3124- auto Last = BlockRAM;
3125- for (int I = 0; I <= Last; ++I) {
3126- Str += ConvertMemoryKindToStr(static_cast<MemoryKind>(I));
3127- if (I != Last) Str += " ";
3128- }
3129- }
3130- }];
3131- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3132- let Documentation = [SYCLIntelMemoryAttrDocs];
3133- }
3134-
3135- def SYCLIntelRegister : Attr {
3136- let Spellings = [CXX11<"intel", "fpga_register">];
3137- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3138- let Documentation = [SYCLIntelRegisterAttrDocs];
3139- }
3140- def : MutualExclusions<[SYCLIntelDoublePump, SYCLIntelSinglePump,
3141- SYCLIntelRegister]>;
3142-
3143- // One integral argument.
3144- def SYCLIntelBankWidth : InheritableAttr {
3145- let Spellings = [CXX11<"intel", "bankwidth">];
3146- let Args = [ExprArgument<"Value">];
3147- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3148- let Documentation = [SYCLIntelBankWidthAttrDocs];
3149- }
3150- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelBankWidth]>;
3151-
3152- def SYCLIntelNumBanks : InheritableAttr {
3153- let Spellings = [CXX11<"intel", "numbanks">];
3154- let Args = [ExprArgument<"Value">];
3155- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3156- let Documentation = [SYCLIntelNumBanksAttrDocs];
3157- }
3158-
3159- def SYCLIntelPrivateCopies : InheritableAttr {
3160- let Spellings = [CXX11<"intel", "private_copies">];
3161- let Args = [ExprArgument<"Value">];
3162- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3163- let Documentation = [SYCLIntelPrivateCopiesAttrDocs];
3164- }
3165- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelPrivateCopies]>;
3166-
3167- // Two string arguments.
3168- def SYCLIntelMerge : Attr {
3169- let Spellings = [CXX11<"intel", "merge">];
3170- let Args = [StringArgument<"Name">, StringArgument<"Direction">];
3171- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3172- let Documentation = [SYCLIntelMergeAttrDocs];
3173- }
3174- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelMerge]>;
3175-
3176- def SYCLIntelMaxReplicates : InheritableAttr {
3177- let Spellings = [CXX11<"intel", "max_replicates">];
3178- let Args = [ExprArgument<"Value">];
3179- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3180- let Documentation = [SYCLIntelMaxReplicatesAttrDocs];
3181- }
3182- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelMaxReplicates]>;
3183-
3184- def SYCLIntelSimpleDualPort : Attr {
3185- let Spellings = [CXX11<"intel", "simple_dual_port">];
3186- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3187- let Documentation = [SYCLIntelSimpleDualPortAttrDocs];
3188- }
3189- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelSimpleDualPort]>;
3190-
3191- def SYCLIntelPipe : TypeAttr {
3192- let Spellings = [GNU<"pipe">];
3193- let Args = [StringArgument<"Mode">];
3194- let LangOpts = [SYCLIsDevice];
3195- let Documentation = [SYCLIntelPipeDocs];
3196- }
3197-
3198- def SYCLIntelPipeIO : InheritableAttr {
3199- let Spellings = [GNU<"io_pipe_id">];
3200- let Args = [ExprArgument<"ID">];
3201- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3202- let Subjects = SubjectList<[Var]>;
3203- let Documentation = [SYCLIntelPipeIOAttrDocs];
3204- }
3205-
32062906// Variadic integral arguments.
3207- def SYCLIntelBankBits : Attr {
3208- let Spellings = [CXX11<"intel", "bank_bits">];
3209- let Args = [VariadicExprArgument<"Args">];
3210- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3211- let Documentation = [SYCLIntelBankBitsDocs];
3212- }
3213- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelBankBits]>;
3214- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelNumBanks]>;
3215-
3216- def SYCLIntelForcePow2Depth : InheritableAttr {
3217- let Spellings = [CXX11<"intel", "force_pow2_depth">];
3218- let Args = [ExprArgument<"Value">];
3219- let LangOpts = [SYCLIsDevice, SilentlyIgnoreSYCLIsHost];
3220- let Documentation = [SYCLIntelForcePow2DepthAttrDocs];
3221- }
3222- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelForcePow2Depth]>;
3223- def : MutualExclusions<[SYCLIntelRegister, SYCLIntelMemory]>;
3224-
32252907def Naked : InheritableAttr {
32262908 let Spellings = [GCC<"naked">, Declspec<"naked">];
32272909 let Subjects = SubjectList<[Function]>;
0 commit comments