mirror of
https://github.com/github/codeql.git
synced 2026-04-30 19:26:02 +02:00
Merge pull request #188 from nickrolfe/convvec
C++: support clang's __builtin_convertvector
This commit is contained in:
@@ -202,6 +202,13 @@ class BuiltInOperationBuiltInShuffleVector extends BuiltInOperation, @builtinshu
|
||||
override string toString() { result = "__builtin_shufflevector" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A clang `__builtin_convertvector` expression.
|
||||
*/
|
||||
class BuiltInOperationBuiltInConvertVector extends BuiltInOperation, @builtinconvertvector {
|
||||
override string toString() { result = "__builtin_convertvector" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A clang `__builtin_addressof` expression (can be used to implement C++'s std::addressof).
|
||||
*/
|
||||
|
||||
@@ -1431,6 +1431,7 @@ case @expr.kind of
|
||||
| 321 = @builtinchooseexpr
|
||||
| 322 = @builtinaddressof
|
||||
| 323 = @vec_fill
|
||||
| 324 = @builtinconvertvector
|
||||
;
|
||||
|
||||
new_allocated_type(
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1 +1,2 @@
|
||||
| vector_types.cpp:31:13:31:49 | __builtin_shufflevector |
|
||||
| vector_types.cpp:58:10:58:52 | __builtin_convertvector |
|
||||
|
||||
@@ -17,3 +17,4 @@
|
||||
| vector_types.cpp:47:23:47:25 | dst | dst | file://:0:0:0:0 | v16i * | 8 |
|
||||
| vector_types.cpp:47:34:47:36 | src | src | file://:0:0:0:0 | v16i * | 8 |
|
||||
| vector_types.cpp:47:43:47:43 | n | n | file://:0:0:0:0 | int | 4 |
|
||||
| vector_types.cpp:57:43:57:44 | vf | vf | vector_types.cpp:55:16:55:27 | vector4float | 16 |
|
||||
|
||||
@@ -50,3 +50,10 @@ void shift_left(v16i *dst, v16i *src, int n) {
|
||||
// each element).
|
||||
*dst = *src << n;
|
||||
}
|
||||
|
||||
typedef double vector4double __attribute__((__vector_size__(32)));
|
||||
typedef float vector4float __attribute__((__vector_size__(16)));
|
||||
|
||||
vector4double convert_vector(vector4float vf) {
|
||||
return __builtin_convertvector(vf, vector4double);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user