forked from OSchip/llvm-project
[SystemZ] Actually enable -mzvector keywords
It appears when initially committing the support for the IBM Z vector extension language, one critical line was lost, causing the specific keywords __vector, __bool, and vec_step to not actually be enabled. (Note that this does not affect "vector" and "bool"!) Unfortunately, this was not caught by any tests either. (All existing Z vector tests just use the regular "vector" and "bool" keywords ...) Fixed by adding the missing line and updating the tests. llvm-svn: 344611
This commit is contained in:
parent
f6a7c8b1fc
commit
2927071750
|
@ -155,6 +155,7 @@ static KeywordStatus getKeywordStatus(const LangOptions &LangOpts,
|
|||
if (LangOpts.WChar && (Flags & WCHARSUPPORT)) return KS_Enabled;
|
||||
if (LangOpts.Char8 && (Flags & CHAR8SUPPORT)) return KS_Enabled;
|
||||
if (LangOpts.AltiVec && (Flags & KEYALTIVEC)) return KS_Enabled;
|
||||
if (LangOpts.ZVector && (Flags & KEYZVECTOR)) return KS_Enabled;
|
||||
if (LangOpts.OpenCL && !LangOpts.OpenCLCPlusPlus && (Flags & KEYOPENCLC))
|
||||
return KS_Enabled;
|
||||
if (LangOpts.OpenCLCPlusPlus && (Flags & KEYOPENCLCXX)) return KS_Enabled;
|
||||
|
|
|
@ -37,6 +37,49 @@ unsigned long ul_scalar;
|
|||
|
||||
double fd_scalar;
|
||||
|
||||
// Verify that __vector is also recognized
|
||||
__vector signed char sc3;
|
||||
__vector unsigned char uc3;
|
||||
__vector bool char bc3;
|
||||
__vector signed short ss3;
|
||||
__vector unsigned short us3;
|
||||
__vector bool short bs3;
|
||||
__vector signed int si3;
|
||||
__vector unsigned int ui3;
|
||||
__vector bool int bi3;
|
||||
__vector signed long long sl3;
|
||||
__vector unsigned long long ul3;
|
||||
__vector bool long long bl3;
|
||||
__vector double fd3;
|
||||
__vector long ll3; // expected-error {{cannot use 'long' with '__vector'}}
|
||||
__vector float ff3; // expected-error {{cannot use 'float' with '__vector'}}
|
||||
|
||||
// Likewise for __bool
|
||||
vector __bool char bc4;
|
||||
vector __bool short bs4;
|
||||
vector __bool int bi4;
|
||||
vector __bool long long bl4;
|
||||
__vector __bool char bc5;
|
||||
__vector __bool short bs5;
|
||||
__vector __bool int bi5;
|
||||
__vector __bool long long bl5;
|
||||
|
||||
// Verify operation of vec_step
|
||||
int res_sc[vec_step(sc) == 16 ? 1 : -1];
|
||||
int res_uc[vec_step(uc) == 16 ? 1 : -1];
|
||||
int res_bc[vec_step(bc) == 16 ? 1 : -1];
|
||||
int res_ss[vec_step(ss) == 8 ? 1 : -1];
|
||||
int res_us[vec_step(us) == 8 ? 1 : -1];
|
||||
int res_bs[vec_step(bs) == 8 ? 1 : -1];
|
||||
int res_si[vec_step(si) == 4 ? 1 : -1];
|
||||
int res_ui[vec_step(ui) == 4 ? 1 : -1];
|
||||
int res_bi[vec_step(bi) == 4 ? 1 : -1];
|
||||
int res_sl[vec_step(sl) == 2 ? 1 : -1];
|
||||
int res_ul[vec_step(ul) == 2 ? 1 : -1];
|
||||
int res_bl[vec_step(bl) == 2 ? 1 : -1];
|
||||
int res_fd[vec_step(fd) == 2 ? 1 : -1];
|
||||
|
||||
|
||||
void foo(void)
|
||||
{
|
||||
// -------------------------------------------------------------------------
|
||||
|
|
|
@ -22,6 +22,13 @@ vector double fd, fd2;
|
|||
|
||||
vector float ff, ff2;
|
||||
|
||||
// Verify that __vector is also recognized
|
||||
__vector float ff3;
|
||||
|
||||
// Verify operation of vec_step
|
||||
int res_ff[vec_step(ff) == 4 ? 1 : -1];
|
||||
|
||||
|
||||
void foo(void)
|
||||
{
|
||||
// -------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue