mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 04:56:06 +00:00

commit 8d41d93e3fceb3f3af77266f5a8388fc585150a5 Author: Pol Marcet Sardà <polmarcetsarda@gmail.com> Date: Sat Apr 20 12:19:49 2024 +0200 Address some misc comments; added a diagnostic and expanded macros in testing. commit 9493c0f290b558947d8b3ae8e1adf909b0fb9dcd Author: Pol Marcet Sardà <polmarcetsarda@gmail.com> Date: Sun Mar 31 18:18:45 2024 +0200 Following the review of sethp, I have made the following changes: -- Added diagnostic for the undefined shuffle of -1 -- Validated support for _BitInt -- A bunch of other minnor tweaks here and there commit 8273abc8d56ef8225cf4dba84f66a1e54a2ef036 Author: Pol Marcet Sardà <polmarcetsarda@gmail.com> Date: Thu Jan 4 12:31:08 2024 +0100 Fix typo in file name commit ff68f23921966c7d9605f91a47d6b481bf1d7a7b Author: Pol Marcet Sardà <polmarcetsarda@gmail.com> Date: Thu Jan 4 11:26:08 2024 +0100 Address suggestions from RKSimon commit c14783de45687c754253c0cbf8a7834c7f986d80 Author: Pol Marcet Sardà <polmarcetsarda@gmail.com> Date: Sat Dec 30 13:59:00 2023 +0100 [clang] Constexpr for __builtin_shufflevector and __builtin_convertvector Summary: This patch adds constexpr support for __builtin_shufflevector and __builtin_convertvector. A small oddity encountered was that the arg to the intrinsics may be an lvalue without any sort of implicit cast of any kind. I solved this through the EvaluateVectorOrLValue function, which treats the lvalue as if it was in an rvalue cast, which gets me the desired vector. Co-Authored-By: Seth Pellegrino <seth@codecopse.net>
21 lines
757 B
C
21 lines
757 B
C
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
typedef double vector4double __attribute__((__vector_size__(32)));
|
|
typedef float vector8float __attribute__((__vector_size__(32)));
|
|
|
|
vector8float foo1(vector4double x) {
|
|
return __builtin_convertvector(x, vector8float); // expected-error {{same number of elements}}
|
|
}
|
|
|
|
float foo2(vector4double x) {
|
|
return __builtin_convertvector(x, float); // expected-error {{second argument to __builtin_convertvector must be of vector type}}
|
|
}
|
|
|
|
vector8float foo3(double x) {
|
|
return __builtin_convertvector(x, vector8float); // expected-error {{must be a vector}}
|
|
}
|
|
|
|
float foo4(float x) {
|
|
return __builtin_convertvector(x, float); // expected-error {{first argument to __builtin_convertvector must be a vector}}
|
|
}
|