Skip to content

Commit 8f31c20

Browse files
committed
Add further GCC/Clang vector types
These are used in GCC/Clang built-ins.
1 parent c43b619 commit 8f31c20

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

src/ansi-c/compiler_headers/gcc_builtin_headers_types.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ typedef short __gcc_v4hi __attribute__ ((__vector_size__ (8)));
1717
typedef short __gcc_v8hi __attribute__ ((__vector_size__ (16)));
1818
typedef short __gcc_v16hi __attribute__ ((__vector_size__ (32)));
1919
typedef short __gcc_v32hi __attribute__ ((__vector_size__ (64)));
20+
typedef __CPROVER_Float16 __gcc_v8hf __attribute__ ((__vector_size__ (16)));
21+
typedef __CPROVER_Float16 __gcc_v16hf __attribute__ ((__vector_size__ (32)));
22+
typedef __CPROVER_Float16 __gcc_v32hf __attribute__ ((__vector_size__ (64)));
2023
typedef float __gcc_v2sf __attribute__ ((__vector_size__ (8)));
2124
typedef float __gcc_v4sf __attribute__ ((__vector_size__ (16)));
2225
typedef float __gcc_v8sf __attribute__ ((__vector_size__ (32)));
@@ -28,7 +31,10 @@ typedef long long __gcc_v1di __attribute__ ((__vector_size__ (8)));
2831
typedef long long __gcc_v2di __attribute__ ((__vector_size__ (16)));
2932
typedef long long __gcc_v4di __attribute__ ((__vector_size__ (32)));
3033
typedef long long __gcc_v8di __attribute__ ((__vector_size__ (64)));
34+
typedef unsigned short __gcc_v32uhi __attribute__ ((__vector_size__ (64)));
35+
typedef unsigned int __gcc_v16usi __attribute__ ((__vector_size__ (64)));
3136
typedef unsigned long long __gcc_di;
37+
typedef unsigned long long __gcc_v8udi __attribute__ ((__vector_size__ (64)));
3238

3339
enum __gcc_atomic_memmodels {
3440
__ATOMIC_RELAXED, __ATOMIC_CONSUME, __ATOMIC_ACQUIRE, __ATOMIC_RELEASE, __ATOMIC_ACQ_REL, __ATOMIC_SEQ_CST

src/ansi-c/scanner.l

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,10 @@ enable_or_disable ("enable"|"disable")
540540
return make_identifier();
541541
}
542542

543+
{CPROVER_PREFIX}"Float16" {
544+
loc(); return TOK_GCC_FLOAT16;
545+
}
546+
543547
"__bf16" { if(PARSER.bf16_type)
544548
{ loc(); return TOK_GCC_FLOAT16; }
545549
else

src/cpp/parse.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -772,11 +772,12 @@ bool Parser::isTypeSpecifier()
772772
|| t == TOK_SIGNED || t == TOK_UNSIGNED || t == TOK_FLOAT ||
773773
t == TOK_DOUBLE || t == TOK_INT8 || t == TOK_INT16 || t == TOK_INT32 ||
774774
t == TOK_INT64 || t == TOK_GCC_INT128 || t == TOK_PTR32 ||
775-
t == TOK_PTR64 || t == TOK_GCC_FLOAT80 || t == TOK_GCC_FLOAT128 ||
776-
t == TOK_VOID || t == TOK_BOOL || t == TOK_CPROVER_BOOL ||
777-
t == TOK_CLASS || t == TOK_STRUCT || t == TOK_UNION || t == TOK_ENUM ||
778-
t == TOK_INTERFACE || t == TOK_TYPENAME || t == TOK_TYPEOF ||
779-
t == TOK_DECLTYPE || t == TOK_UNDERLYING_TYPE;
775+
t == TOK_PTR64 || t == TOK_GCC_FLOAT16 || t == TOK_GCC_FLOAT80 ||
776+
t == TOK_GCC_FLOAT128 || t == TOK_VOID || t == TOK_BOOL ||
777+
t == TOK_CPROVER_BOOL || t == TOK_CLASS || t == TOK_STRUCT ||
778+
t == TOK_UNION || t == TOK_ENUM || t == TOK_INTERFACE ||
779+
t == TOK_TYPENAME || t == TOK_TYPEOF || t == TOK_DECLTYPE ||
780+
t == TOK_UNDERLYING_TYPE;
780781
}
781782

782783
/*
@@ -2510,6 +2511,9 @@ bool Parser::optIntegralTypeOrClassSpec(typet &p)
25102511
case TOK_INT32: type_id=ID_int32; break;
25112512
case TOK_INT64: type_id=ID_int64; break;
25122513
case TOK_GCC_INT128: type_id=ID_gcc_int128; break;
2514+
case TOK_GCC_FLOAT16:
2515+
type_id = ID_gcc_float16;
2516+
break;
25132517
case TOK_GCC_FLOAT80: type_id=ID_gcc_float80; break;
25142518
case TOK_GCC_FLOAT128: type_id=ID_gcc_float128; break;
25152519
case TOK_BOOL:

0 commit comments

Comments
 (0)