diff --git a/src/amd/compiler/.clang-format b/src/amd/compiler/.clang-format new file mode 100644 index 00000000000..04dbbe6da69 --- /dev/null +++ b/src/amd/compiler/.clang-format @@ -0,0 +1,147 @@ + +# TODO: Inherit Style from RADV when Clang 13 is default. +# BasedOnStyle: InheritParentConfig + +# Copied from /src/amd/.clang-format +# ACO specific rules can be found below +AlignAfterOpenBracket: true +AlignConsecutiveMacros: true +AllowAllArgumentsOnNextLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AlwaysBreakAfterReturnType: TopLevelDefinitions +BasedOnStyle: LLVM +BraceWrapping: + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterStruct: false + BeforeElse: false + SplitEmptyFunction: true +BinPackArguments: true +BinPackParameters: true +BreakBeforeBraces: Custom +ColumnLimit: 100 +ContinuationIndentWidth: 3 +Cpp11BracedListStyle: false +Cpp11BracedListStyle: true +ForEachMacros: + - LIST_FOR_EACH_ENTRY + - LIST_FOR_EACH_ENTRY_SAFE + - foreach_list_typed + - util_dynarray_foreach + - nir_foreach_variable + - nir_foreach_variable_safe + - nir_foreach_register + - nir_foreach_register_safe + - nir_foreach_use + - nir_foreach_use_safe + - nir_foreach_if_use + - nir_foreach_if_use_safe + - nir_foreach_def + - nir_foreach_def_safe + - nir_foreach_phi_src + - nir_foreach_phi_src_safe + - nir_foreach_parallel_copy_entry + - nir_foreach_instr + - nir_foreach_instr_reverse + - nir_foreach_instr_safe + - nir_foreach_instr_reverse_safe + - nir_foreach_function + - nir_foreach_block + - nir_foreach_block_safe + - nir_foreach_block_reverse + - nir_foreach_block_reverse_safe + - nir_foreach_block_in_cf_node + - nir_foreach_shader_in_variable + - nir_foreach_shader_out_variable_safe + - nir_foreach_variable_in_list + - nir_foreach_src + - foreach_two_lists + - foreach_bit + - foreach_sched_node + - foreach_src + - foreach_src_n + - foreach_ssa_use + - foreach_ssa_srcp_n + - foreach_ssa_srcp + - foreach_ssa_src_n + - foreach_ssa_src + - foreach_input_n + - foreach_input + - foreach_output_n + - foreach_output + - foreach_instr + - foreach_instr_rev + - foreach_instr_safe + - foreach_block + - foreach_block_safe + - foreach_block_rev + - foreach_array + - foreach_array_safe + - foreach_name_n + - foreach_name + - foreach_def + - foreach_use + - set_foreach + +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '<[[:alnum:].]+>' + Priority: 1 + - Regex: '.*\/.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IndentWidth: 3 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyExcessCharacter: 100 +SpaceAfterCStyleCast: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: false +SpacesInContainerLiterals: false + + +# ACO clang-format rules: +Language: Cpp +Standard: c++14 + +# Force pointers to the type for C++ +DerivePointerAlignment: false +PointerAlignment: Left + +# Same effect as IndentAccessModifiers: False +AccessModifierOffset: -3 + +# Compact some cumbersome C++ code +SpaceBeforeCtorInitializerColon: True +AllowShortCaseLabelsOnASingleLine: True +AllowShortFunctionsOnASingleLine: InlineOnly +AllowShortBlocksOnASingleLine: Empty +AllowShortLambdasOnASingleLine: All + +# Wrap before LambdaBody and disable SplitEmptyFunction +BraceWrapping: + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterStruct: false + BeforeElse: false + SplitEmptyFunction: false + SplitEmptyRecord: false + BeforeLambdaBody: true + +# Regroup #include blocks +IncludeBlocks: Regroup +IncludeCategories: + - Regex: '"aco.*' + Priority: 1 + - Regex: '"(common|llvm|vulkan)\/.*' + Priority: 2 + - Regex: '"(nir|util\/).*' + Priority: 3 + - Regex: '.*\/.*' + Priority: 4 + - Regex: '.*' + Priority: 5 +