llvm-project/clang/test/Preprocessor
Cullen Rhodes bb160e769d [Sema][AArch64] Add parsing support for arm_sve_vector_bits attribute
Summary:

This patch implements parsing support for the 'arm_sve_vector_bits' type
attribute, defined by the Arm C Language Extensions (ACLE, version 00bet5,
section 3.7.3) for SVE [1].

The purpose of this attribute is to define fixed-length (VLST) versions
of existing sizeless types (VLAT). For example:

    #if __ARM_FEATURE_SVE_BITS==512
    typedef svint32_t fixed_svint32_t __attribute__((arm_sve_vector_bits(512)));
    #endif

Creates a type 'fixed_svint32_t' that is a fixed-length version of
'svint32_t' that is normal-sized (rather than sizeless) and contains
exactly 512 bits. Unlike 'svint32_t', this type can be used in places
such as structs and arrays where sizeless types can't.

Implemented in this patch is the following:

  * Defined and tested attribute taking single argument.
  * Checks the argument is an integer constant expression.
  * Attribute can only be attached to a single SVE vector or predicate
    type, excluding tuple types such as svint32x4_t.
  * Added the `-msve-vector-bits=<bits>` flag. When specified the
    `__ARM_FEATURE_SVE_BITS__EXPERIMENTAL` macro is defined.
  * Added a language option to store the vector size specified by the
    `-msve-vector-bits=<bits>` flag. This is used to validate `N ==
    __ARM_FEATURE_SVE_BITS`, where N is the number of bits passed to the
    attribute and `__ARM_FEATURE_SVE_BITS` is the feature macro defined under
    the same flag.

The `__ARM_FEATURE_SVE_BITS` macro will be made non-experimental in the final
patch of the series.

[1] https://developer.arm.com/documentation/100987/latest

This is patch 1/4 of a patch series.

Reviewers: sdesmalen, rsandifo-arm, efriedma, ctetreau, cameron.mcinally, rengolin, aaron.ballman

Reviewed By: sdesmalen, aaron.ballman

Differential Revision: https://reviews.llvm.org/D83550
2020-07-17 10:06:54 +00:00
..
Inputs [Clang] Restore replace_path_prefix instead of startswith 2020-05-13 13:49:14 -04:00
Weverything_pragma.c Fix tests after previous commit 2020-02-14 19:41:01 +01:00
_Pragma-dependency.c Replace tok::angle_string_literal with new tok::header_name. 2019-03-19 22:09:55 +00:00
_Pragma-dependency2.c
_Pragma-in-macro-arg.c
_Pragma-in-macro-arg.cpp Remove use of lookahead from _Pragma handling and from all other 2019-04-11 21:18:22 +00:00
_Pragma-location.c
_Pragma-physloc.c
_Pragma.c
aarch64-target-features.c [Sema][AArch64] Add parsing support for arm_sve_vector_bits attribute 2020-07-17 10:06:54 +00:00
annotate_in_macro_arg.c
arm-acle-6.4.c [ARM] Prevent DSP and SIM32 being set for v6m 2018-09-28 10:18:02 +00:00
arm-acle-6.5.c [ARM] Fix bugs introduced by the fp64/d32 rework. 2019-06-07 12:42:54 +00:00
arm-pic-predefines.c [ARM] Add pre-defined macros for ROPI and RWPI 2019-02-18 12:39:47 +00:00
arm-target-features.c [clang][BFloat] add NEON emitter for bfloat 2020-06-05 14:11:51 +01:00
arm64_32.c AArch64: add arm64_32 support to Clang. 2019-11-12 12:45:18 +00:00
assembler-with-cpp.c
avr-atmega328p.c [AVR][NFC] Move preprocessor tests to Preprocessor directory 2020-04-26 01:29:25 +02:00
avr-attiny104.c [AVR][NFC] Move preprocessor tests to Preprocessor directory 2020-04-26 01:29:25 +02:00
avr-common.c [AVR][NFC] Move preprocessor tests to Preprocessor directory 2020-04-26 01:29:25 +02:00
bigoutput.c
bpf-predefined-macros.c [BPF] do not generate predefined macro bpf 2019-04-26 15:35:51 +00:00
builtin_line.c
c17.c Add language standard aliases for -std=c18, -std=gnu18, and -std=iso9899:2018. 2018-10-18 17:42:41 +00:00
c90.c
c99-6_10_3_3_p4.c
c99-6_10_3_4_p5.c
c99-6_10_3_4_p6.c
c99-6_10_3_4_p7.c
c99-6_10_3_4_p9.c
clang_headers.c
comment_save.c
comment_save_if.c
comment_save_macro.c
cuda-approx-transcendentals.cu
cuda-macos-includes.cu
cuda-preprocess.cu
cuda-types.cu [CUDA] Fix grep pattern in cuda-types.cu 2019-06-10 22:28:20 +00:00
cxx_and.cpp
cxx_bitand.cpp
cxx_bitor.cpp
cxx_compl.cpp
cxx_not.cpp
cxx_not_eq.cpp
cxx_oper_keyword.cpp Keep the IdentifierInfo in the Token for alternative operator keyword 2017-07-14 09:23:40 +00:00
cxx_oper_keyword_ms_compat.cpp
cxx_oper_spelling.cpp
cxx_or.cpp
cxx_true.cpp
cxx_xor.cpp
dependencies-and-pp.c
directive-invalid.c
disabled-cond-diags.c
disabled-cond-diags2.c
dump-macros-spacing.c
dump-macros-undef.c
dump-options.c
dump_import.h
dump_import.m
dump_include.c
dump_include.h
dump_macros.c
dumptokens_phyloc.c
elfiamcu-predefines.c
empty_file_to_include.h Diagnose likely typos in #include directives. 2018-09-13 21:10:08 +00:00
expr_comma.c
expr_define_expansion.c
expr_invalid_tok.c
expr_liveness.c
expr_multichar.c
expr_usual_conversions.c
extension-warning.c
feature_tests.c Add __has_builtin support for builtin function-like type traits. 2019-08-14 02:30:11 +00:00
feature_tests.cpp Accept __is_same_as as a GCC-compatibility synonym for the proper trait name __is_same. 2019-10-29 14:44:38 -07:00
file_name_macro.c Reland "[Clang][PP] Add the __FILE_NAME__ builtin macro" 2019-05-16 21:13:49 +00:00
file_test.c [Clang] Restore replace_path_prefix instead of startswith 2020-05-13 13:49:14 -04:00
file_test_windows.c [Clang] Restore replace_path_prefix instead of startswith 2020-05-13 13:49:14 -04:00
file_to_include.h
first-line-indent.c
function_macro_file.c
function_macro_file.h
has_attribute.c
has_attribute.cpp Allow standards-based attributes to have leading and trailing underscores. 2019-08-15 18:35:44 +00:00
has_c_attribute.c Disallow use of __has_c_attribute in C++ mode. 2019-11-25 17:35:12 -05:00
has_c_attribute.cpp Disallow use of __has_c_attribute in C++ mode. 2019-11-25 17:35:12 -05:00
has_include.c Factor out repeated code parsing and concatenating header-names from 2019-03-19 01:51:19 +00:00
hash_line.c
hash_space.c
header_is_main_file.c
header_lookup1.c
headermap-rel.c [hmaptool] Turn %hmaptool into a proper substitution 2018-06-22 09:46:40 +00:00
headermap-rel2.c clang-cl: Add a `/showIncludes:user` flag. 2020-02-25 09:43:52 -05:00
hexagon-predefines.c [Hexagon] MaxAtomicPromoteWidth and MaxAtomicInlineWidth are not getting set. 2020-03-30 12:33:51 -05:00
hip-host-cpu-macros.cu recommit "[HIP] Add default header and include path" 2020-06-06 14:21:22 -04:00
if_warning.c
ifdef-recover.c
ignore-pragmas.c Revert 320391: Certain targets are failing, pulling back to diagnose. 2017-12-11 18:14:51 +00:00
import_self.c
include-cycle.c [Preprocessor] Stop entering included files after hitting a fatal error. 2018-07-25 19:16:26 +00:00
include-directive1.c
include-directive2.c
include-directive3.c
include-header-file-and-dir.c Don't diagnose errors when a file matches an include component 2019-08-09 19:49:14 +00:00
include-header-missing-in-framework-with-headermap.c [Preprocessor] Fix crash emitting note with framework location for "file not found" error. 2019-05-27 19:15:30 +00:00
include-header-missing-in-framework.c [Preprocessor] Add a note with framework location for "file not found" error. 2019-02-05 22:34:55 +00:00
include-leading-nonalpha-no-suggest.c Add testcases for r342667. 2018-09-20 17:22:43 +00:00
include-likely-typo.c [MSVC Compat] Fix typo correction for inclusion directives. 2019-01-15 20:08:23 +00:00
include-macros.c
include-next.c Improve the diagnostic for #include_next occurring in a file not found 2019-03-21 20:42:13 +00:00
include-nonalpha-no-crash.c [Preprocessor] Fix a crash when handling non-alpha include header. 2018-10-01 14:38:43 +00:00
indent_macro.c Fixed tests where grep was not matching the linefeed 2019-05-10 20:11:36 +00:00
init-aarch64.c clang: Switch C compilations to C17 by default. 2020-03-02 09:39:26 -08:00
init-ppc64.c [PowerPC] Add support for -mcpu=pwr10 in both clang and llvm 2020-05-27 13:14:25 -05:00
init-v7k-compat.c AArch64: add arm64_32 support to Clang. 2019-11-12 12:45:18 +00:00
init-ve.c [VE] Add clang tests for VE 2020-06-25 12:03:19 +09:00
init.c Revert "Hook up OpenBSD 64-bit PowerPC support" 2020-06-18 20:05:39 -04:00
invalid-__has_warning1.c
invalid-__has_warning2.c
is_target.c Commit missing tests for r320734 2017-12-14 19:22:41 +00:00
is_target_arm.c Commit missing tests for r320734 2017-12-14 19:22:41 +00:00
is_target_arm64.c __is_target_arch: Check the arch and subarch instead of the arch name 2017-12-15 19:58:38 +00:00
is_target_environment_version.c __is_target_environment: Check the environment after parsing it 2017-12-15 20:07:53 +00:00
is_target_os_darwin.c Commit missing tests for r320734 2017-12-14 19:22:41 +00:00
is_target_unknown.c Commit missing tests for r320734 2017-12-14 19:22:41 +00:00
iwithprefix.c
line-directive-output.c
line-directive.c
macho-embedded-predefines.c
macro-multiline.c Use backslash escape, replacing xargs -0 in test macro-multiline.c 2018-01-04 22:58:30 +00:00
macro-reserved-cxx11.cpp
macro-reserved-ms.c
macro-reserved.c
macro-reserved.cpp
macro_arg_directive.c Print a note to the called macro when diagnosing err_embedded_directive 2019-02-14 04:13:17 +00:00
macro_arg_directive.h
macro_arg_empty.c
macro_arg_keyword.c
macro_arg_slocentry_merge.c
macro_arg_slocentry_merge.h
macro_backslash.c
macro_disable.c
macro_expand.c
macro_expand_empty.c
macro_expandloc.c
macro_fn.c
macro_fn_comma_swallow.c
macro_fn_comma_swallow2.c
macro_fn_disable_expand.c
macro_fn_lparen_scan.c
macro_fn_lparen_scan2.c
macro_fn_placemarker.c
macro_fn_preexpand.c
macro_fn_varargs_iso.c
macro_fn_varargs_named.c Fixed tests where grep was not matching the linefeed 2019-05-10 20:11:36 +00:00
macro_misc.c
macro_not_define.c Fixed tests where grep was not matching the linefeed 2019-05-10 20:11:36 +00:00
macro_paste_bad.c
macro_paste_bcpl_comment.c
macro_paste_c_block_comment.c
macro_paste_commaext.c Fix typos in clang 2018-04-06 15:14:32 +00:00
macro_paste_empty.c
macro_paste_hard.c
macro_paste_hashhash.c
macro_paste_identifier_error.c
macro_paste_msextensions.c
macro_paste_none.c
macro_paste_simple.c
macro_paste_spacing.c
macro_paste_spacing2.c
macro_raw_string.cpp Stringizing raw string literals containing newline 2017-12-06 17:00:53 +00:00
macro_redefined.c
macro_rescan.c
macro_rescan2.c
macro_rescan_varargs.c
macro_rparen_scan.c Fixed tests where grep was not matching the linefeed 2019-05-10 20:11:36 +00:00
macro_rparen_scan2.c
macro_space.c
macro_undef.c
macro_vaopt_check.cpp [c++2a] Implement P0306 __VA_OPT__ (Comma omission and comma deletion) 2017-10-15 01:26:26 +00:00
macro_vaopt_expand.cpp [c++20] Implement tweaked __VA_OPT__ rules from P1042R1: 2019-05-04 06:46:18 +00:00
macro_vaopt_p1042r1.cpp [c++20] Implement tweaked __VA_OPT__ rules from P1042R1: 2019-05-04 06:46:18 +00:00
macro_variadic.cl [OpenCL] Allow variadic macros as Clang feature. 2019-03-26 11:22:37 +00:00
macro_with_initializer_list.cpp
mi_opt.c
mi_opt.h
mi_opt2.c
mi_opt2.h
microsoft-ext.c [ms] Fix Microsoft compatibility handling of commas in nested macro expansions. 2019-11-04 12:49:19 -05:00
microsoft-header-search.c
microsoft-import.c
missing-include-range-check.h
missing-system-header.c
missing-system-header.h
mmx.c
non_fragile_feature.m
non_fragile_feature1.m
nonportable-include-with-hmap.c Fix up a test updated in r371655 - require case-insensitive file system. 2019-09-11 21:19:27 +00:00
objc-pp.m
openmp-macro-expansion.c
optimize.c
output_paste_avoid.cpp
overflow.c
pic.c
pp-modules.c
pp-modules.h
pp-record.c
pp-record.h
pr2086.c
pr2086.h
pr13851.c
pr19649-signed-wchar_t.c
pr19649-unsigned-wchar_t.c Driver: hoist the `wchar_t` handling to the driver 2017-10-06 23:09:55 +00:00
pragma-captured.c
pragma-comment-linux.c Support `#pragma comment(lib, "name")` in the frontend for ELF 2018-02-07 01:46:46 +00:00
pragma-pushpop-macro.c
pragma.c Fix combining pragma __debug dump & parser_crash with -E 2018-11-15 03:04:21 +00:00
pragma_assume_nonnull.c [Preprocessor] Preserve #pragma clang assume_nonnull in preprocessed output 2017-09-27 23:29:37 +00:00
pragma_diagnostic.c Fix tests after previous commit 2020-02-14 19:41:01 +01:00
pragma_diagnostic_output.c
pragma_diagnostic_sections.cpp [Diagnostic][test] Remove an unneeded change to pragma_diagnostic_sections.cpp after D70638 2019-12-03 16:43:35 -08:00
pragma_microsoft.c Fix for expanding __pragmas in macro arguments 2019-10-07 19:41:53 +00:00
pragma_microsoft.cpp
pragma_module.c [test] Use %clang_cc1 instead of %clang -cc1 2019-09-27 05:37:06 +00:00
pragma_poison.c
pragma_ps4.c
pragma_sysheader.c
pragma_sysheader.h
pragma_unknown.c Preserve unknown STDC pragma through preprocessor 2018-01-05 22:45:03 +00:00
predefined-arch-macros.c [X86] Some CHECK-NOTs for FMA4/TBM/XOP for znver1/znver2 in predefined-arch-macros.c 2020-06-30 12:04:26 -07:00
predefined-exceptions.m
predefined-macros.c Define __SPIR__ macro for spir/spir64 targets. 2020-06-03 12:36:21 -07:00
predefined-nullability.c
predefined-win-macros.c Bug 43965 - Value of _MSVC_LANG doesn't match MSVC++ VS2019 /std:c++latest mode 2019-12-04 14:39:41 -08:00
print-assembler.s Don't print end-of-directive tokens in -E output 2017-10-16 23:07:15 +00:00
print-pragma-microsoft.c
print_line_count.c
print_line_empty_file.c
print_line_include.c
print_line_include.h
print_line_track.c
pushable-diagnostics.c Fix tests after previous commit 2020-02-14 19:41:01 +01:00
riscv-cmodel.c [RISCV] Add option aliases: -mcmodel=medany and -mcmodel=medlow 2019-09-17 08:19:17 +00:00
riscv-target-features.c [RISCV] Add Clang frontend support for Bitmanip extension 2020-04-09 18:04:22 +01:00
skipping_unclean.c
stdint.c AArch64: add arm64_32 support to Clang. 2019-11-12 12:45:18 +00:00
stringize_misc.c
stringize_skipped.c [Preprocessor] Always discard body of #define if we failed to parse it 2019-08-01 09:10:37 +00:00
stringize_space.c
sycl-macro.cpp [SYCL] Driver option to select SYCL version 2020-03-07 18:28:54 +03:00
sysroot-prefix.c
traditional-cpp.c
ucn-allowed-chars.c
ucn-pp-identifier.c [Lexer] Allow UCN for dollar symbol '\u0024' in identifiers when using -fdollars-in-identifiers flag. 2020-01-15 11:28:57 +00:00
undef-error.c
unterminated.c
user_defined_system_framework.c
utf8-allowed-chars.c
warn-disabled-macro-expansion.c
warn-macro-undef.c [clang][diagnostics] Add '-Wundef-prefix' warning option 2020-06-30 13:57:47 -07:00
warn-macro-unused.c
warn-macro-unused.h
warning_tests.c
wasm-target-features.c [WebAssembly] Update bleeding-edge CPU features 2020-01-24 14:27:35 -08:00
wchar_t.c Clang :: Sema/wchar.c has long been failing on Solaris: 2019-06-17 20:21:25 +00:00
woa-defaults.c Basic: correct `__WINT_TYPE__` on Windows 2018-09-19 16:18:55 +00:00
woa-wchar_t.c
x86_amx_target_features.c [X86-64] Support Intel AMX Intrinsic 2020-07-07 10:13:40 +08:00
x86_asm_flag_output.c [X86] Add clang support for X86 flag output parameters. 2019-02-14 19:27:25 +00:00
x86_seg_fs_gs.c Support __seg_fs and __seg_gs on x86 2019-07-14 18:33:51 +00:00
x86_target_features.c [X86] Explicitly add popcnt feature to Intel CPUs with SSE4.2 in the frontend. 2020-06-28 11:06:40 -07:00