Merge pull request #188 from nickrolfe/convvec

C++: support clang's __builtin_convertvector
This commit is contained in:
ian-semmle
2018-09-13 14:55:19 +01:00
committed by GitHub
6 changed files with 2170 additions and 2154 deletions

View File

@@ -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).
*/

View File

@@ -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

View File

@@ -1 +1,2 @@
| vector_types.cpp:31:13:31:49 | __builtin_shufflevector |
| vector_types.cpp:58:10:58:52 | __builtin_convertvector |

View File

@@ -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 |

View File

@@ -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);
}