diff --git a/clang/lib/Headers/altivec.h b/clang/lib/Headers/altivec.h --- a/clang/lib/Headers/altivec.h +++ b/clang/lib/Headers/altivec.h @@ -311,7 +311,7 @@ static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_add_u128(vector unsigned char __a, vector unsigned char __b) { - return __builtin_altivec_vadduqm(__a, __b); + return (vector unsigned char)__builtin_altivec_vadduqm(__a, __b); } #elif defined(__VSX__) static __inline__ vector signed long long __ATTRS_o_ai @@ -325,9 +325,10 @@ (vector unsigned int)__a + (vector unsigned int)__b; vector unsigned int __carry = __builtin_altivec_vaddcuw( (vector unsigned int)__a, (vector unsigned int)__b); - __carry = __builtin_shufflevector((vector unsigned char)__carry, - (vector unsigned char)__carry, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0); + __carry = (vector unsigned int)__builtin_shufflevector( + (vector unsigned char)__carry, + (vector unsigned char)__carry, 0, 0, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0); return (vector signed long long)(__res + __carry); #endif } @@ -358,7 +359,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_adde(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vaddeuqm(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vaddeuqm( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -366,14 +370,17 @@ vector unsigned __int128 __c) { return __builtin_altivec_vaddeuqm(__a, __b, __c); } -#endif static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_adde_u128(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) { - return (vector unsigned char)__builtin_altivec_vaddeuqm(__a, __b, __c); + return (vector unsigned char)__builtin_altivec_vaddeuqm( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } #endif +#endif static __inline__ vector signed int __ATTRS_o_ai vec_adde(vector signed int __a, vector signed int __b, @@ -398,7 +405,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_addec(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vaddecuq(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vaddecuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -406,13 +416,16 @@ vector unsigned __int128 __c) { return __builtin_altivec_vaddecuq(__a, __b, __c); } -#endif static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_addec_u128(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) { - return (vector unsigned char)__builtin_altivec_vaddecuq(__a, __b, __c); + return (vector unsigned char)__builtin_altivec_vaddecuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } +#endif #ifdef __powerpc64__ static __inline__ vector signed int __ATTRS_o_ai @@ -596,12 +609,14 @@ vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) { return __builtin_altivec_vaddcuq(__a, __b); } -#endif static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_addc_u128(vector unsigned char __a, vector unsigned char __b) { - return (vector unsigned char)__builtin_altivec_vaddcuq(__a, __b); + return (vector unsigned char)__builtin_altivec_vaddcuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b); } +#endif #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) /* vec_vaddcuw */ @@ -824,7 +839,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vaddeuqm(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vaddeuqm( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -837,7 +855,9 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vaddcuq(__a, __b); + return (vector signed __int128)__builtin_altivec_vaddcuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -850,7 +870,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vaddecuq(__a, __b, __c); + return (vector signed __int128 )__builtin_altivec_vaddecuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -1806,18 +1829,20 @@ static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpeq(vector signed __int128 __a, vector signed __int128 __b) { return (vector bool __int128)__builtin_altivec_vcmpequq( - (vector bool __int128)__a, (vector bool __int128)__b); + (vector unsigned __int128)__a, (vector unsigned __int128)__b); } static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpeq(vector unsigned __int128 __a, vector unsigned __int128 __b) { return (vector bool __int128)__builtin_altivec_vcmpequq( - (vector bool __int128)__a, (vector bool __int128)__b); + (vector unsigned __int128)__a, (vector unsigned __int128)__b); } static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpeq(vector bool __int128 __a, vector bool __int128 __b) { - return (vector bool __int128)__builtin_altivec_vcmpequq(__a, __b); + return (vector bool __int128)__builtin_altivec_vcmpequq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b); } #endif @@ -1888,18 +1913,20 @@ static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpne(vector unsigned __int128 __a, vector unsigned __int128 __b) { return (vector bool __int128) ~(__builtin_altivec_vcmpequq( - (vector bool __int128)__a, (vector bool __int128)__b)); + (vector unsigned __int128)__a, (vector unsigned __int128)__b)); } static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpne(vector signed __int128 __a, vector signed __int128 __b) { return (vector bool __int128) ~(__builtin_altivec_vcmpequq( - (vector bool __int128)__a, (vector bool __int128)__b)); + (vector unsigned __int128)__a, (vector unsigned __int128)__b)); } static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpne(vector bool __int128 __a, vector bool __int128 __b) { - return (vector bool __int128) ~(__builtin_altivec_vcmpequq(__a, __b)); + return (vector bool __int128) ~(__builtin_altivec_vcmpequq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b)); } #endif @@ -1944,16 +1971,16 @@ static __inline__ signed int __ATTRS_o_ai vec_cntlz_lsbb(vector signed char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vctzlsbb(__a); + return __builtin_altivec_vctzlsbb((vector unsigned char)__a); #else - return __builtin_altivec_vclzlsbb(__a); + return __builtin_altivec_vclzlsbb((vector unsigned char)__a); #endif } static __inline__ signed int __ATTRS_o_ai vec_cntlz_lsbb(vector unsigned char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vctzlsbb(__a); + return __builtin_altivec_vctzlsbb((vector unsigned char)__a); #else return __builtin_altivec_vclzlsbb(__a); #endif @@ -1962,9 +1989,9 @@ static __inline__ signed int __ATTRS_o_ai vec_cnttz_lsbb(vector signed char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vclzlsbb(__a); + return __builtin_altivec_vclzlsbb((vector unsigned char)__a); #else - return __builtin_altivec_vctzlsbb(__a); + return __builtin_altivec_vctzlsbb((vector unsigned char)__a); #endif } @@ -1984,7 +2011,7 @@ static __inline__ vector unsigned int __ATTRS_o_ai vec_parity_lsbb(vector signed int __a) { - return __builtin_altivec_vprtybw(__a); + return __builtin_altivec_vprtybw((vector unsigned int)__a); } #ifdef __SIZEOF_INT128__ @@ -1995,7 +2022,7 @@ static __inline__ vector unsigned __int128 __ATTRS_o_ai vec_parity_lsbb(vector signed __int128 __a) { - return __builtin_altivec_vprtybq(__a); + return __builtin_altivec_vprtybq((vector unsigned __int128)__a); } #endif @@ -2006,7 +2033,7 @@ static __inline__ vector unsigned long long __ATTRS_o_ai vec_parity_lsbb(vector signed long long __a) { - return __builtin_altivec_vprtybd(__a); + return __builtin_altivec_vprtybd((vector unsigned long long)__a); } #else @@ -2212,14 +2239,12 @@ #if defined(__POWER10_VECTOR__) && defined(__SIZEOF_INT128__) static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpgt(vector signed __int128 __a, vector signed __int128 __b) { - return (vector bool __int128)__builtin_altivec_vcmpgtsq( - (vector bool __int128)__a, (vector bool __int128)__b); + return (vector bool __int128)__builtin_altivec_vcmpgtsq(__a, __b); } static __inline__ vector bool __int128 __ATTRS_o_ai vec_cmpgt(vector unsigned __int128 __a, vector unsigned __int128 __b) { - return (vector bool __int128)__builtin_altivec_vcmpgtuq( - (vector bool __int128)__a, (vector bool __int128)__b); + return (vector bool __int128)__builtin_altivec_vcmpgtuq(__a, __b); } #endif @@ -2488,7 +2513,8 @@ static __inline__ vector unsigned char __ATTRS_o_ai vec_popcnt(vector signed char __a) { - return __builtin_altivec_vpopcntb(__a); + return (vector unsigned char)__builtin_altivec_vpopcntb( + (vector unsigned char)__a); } static __inline__ vector unsigned char __ATTRS_o_ai vec_popcnt(vector unsigned char __a) { @@ -2496,7 +2522,8 @@ } static __inline__ vector unsigned short __ATTRS_o_ai vec_popcnt(vector signed short __a) { - return __builtin_altivec_vpopcnth(__a); + return (vector unsigned short)__builtin_altivec_vpopcnth( + (vector unsigned short)__a); } static __inline__ vector unsigned short __ATTRS_o_ai vec_popcnt(vector unsigned short __a) { @@ -2504,7 +2531,7 @@ } static __inline__ vector unsigned int __ATTRS_o_ai vec_popcnt(vector signed int __a) { - return __builtin_altivec_vpopcntw(__a); + return __builtin_altivec_vpopcntw((vector unsigned int)__a); } static __inline__ vector unsigned int __ATTRS_o_ai vec_popcnt(vector unsigned int __a) { @@ -2512,7 +2539,7 @@ } static __inline__ vector unsigned long long __ATTRS_o_ai vec_popcnt(vector signed long long __a) { - return __builtin_altivec_vpopcntd(__a); + return __builtin_altivec_vpopcntd((vector unsigned long long)__a); } static __inline__ vector unsigned long long __ATTRS_o_ai vec_popcnt(vector unsigned long long __a) { @@ -2524,7 +2551,7 @@ static __inline__ vector signed char __ATTRS_o_ai vec_cntlz(vector signed char __a) { - return __builtin_altivec_vclzb(__a); + return (vector signed char)__builtin_altivec_vclzb((vector unsigned char)__a); } static __inline__ vector unsigned char __ATTRS_o_ai vec_cntlz(vector unsigned char __a) { @@ -2532,7 +2559,8 @@ } static __inline__ vector signed short __ATTRS_o_ai vec_cntlz(vector signed short __a) { - return __builtin_altivec_vclzh(__a); + return (vector signed short)__builtin_altivec_vclzh( + (vector unsigned short)__a); } static __inline__ vector unsigned short __ATTRS_o_ai vec_cntlz(vector unsigned short __a) { @@ -2540,7 +2568,7 @@ } static __inline__ vector signed int __ATTRS_o_ai vec_cntlz(vector signed int __a) { - return __builtin_altivec_vclzw(__a); + return (vector signed int)__builtin_altivec_vclzw((vector unsigned int)__a); } static __inline__ vector unsigned int __ATTRS_o_ai vec_cntlz(vector unsigned int __a) { @@ -2548,7 +2576,8 @@ } static __inline__ vector signed long long __ATTRS_o_ai vec_cntlz(vector signed long long __a) { - return __builtin_altivec_vclzd(__a); + return (vector signed long long)__builtin_altivec_vclzd( + (vector unsigned long long)__a); } static __inline__ vector unsigned long long __ATTRS_o_ai vec_cntlz(vector unsigned long long __a) { @@ -2562,7 +2591,8 @@ static __inline__ vector signed char __ATTRS_o_ai vec_cnttz(vector signed char __a) { - return __builtin_altivec_vctzb(__a); + return (vector signed char)__builtin_altivec_vctzb( + (vector unsigned char)__a); } static __inline__ vector unsigned char __ATTRS_o_ai vec_cnttz(vector unsigned char __a) { @@ -2570,7 +2600,8 @@ } static __inline__ vector signed short __ATTRS_o_ai vec_cnttz(vector signed short __a) { - return __builtin_altivec_vctzh(__a); + return (vector signed short)__builtin_altivec_vctzh( + (vector unsigned short)__a); } static __inline__ vector unsigned short __ATTRS_o_ai vec_cnttz(vector unsigned short __a) { @@ -2578,7 +2609,7 @@ } static __inline__ vector signed int __ATTRS_o_ai vec_cnttz(vector signed int __a) { - return __builtin_altivec_vctzw(__a); + return (vector signed int)__builtin_altivec_vctzw((vector unsigned int)__a); } static __inline__ vector unsigned int __ATTRS_o_ai vec_cnttz(vector unsigned int __a) { @@ -2586,7 +2617,8 @@ } static __inline__ vector signed long long __ATTRS_o_ai vec_cnttz(vector signed long long __a) { - return __builtin_altivec_vctzd(__a); + return (vector signed long long)__builtin_altivec_vctzd( + (vector unsigned long long)__a); } static __inline__ vector unsigned long long __ATTRS_o_ai vec_cnttz(vector unsigned long long __a) { @@ -3144,7 +3176,8 @@ vector unsigned char __mask = (vector unsigned char)__builtin_altivec_lvsl(16 - __c, (int *)NULL); vector unsigned char __res = - __builtin_altivec_vperm_4si((vector int)__a, (vector int)__a, __mask); + (vector unsigned char)__builtin_altivec_vperm_4si( + (vector int)__a, (vector int)__a, __mask); return __builtin_vsx_stxvll((vector int)__res, __b, (__c << 56)); } #endif @@ -6491,12 +6524,12 @@ static __inline__ vector signed char __ATTRS_o_ai vec_nand(vector signed char __a, vector bool char __b) { - return ~(__a & __b); + return ~(__a & (vector signed char)__b); } static __inline__ vector signed char __ATTRS_o_ai vec_nand(vector bool char __a, vector signed char __b) { - return ~(__a & __b); + return (vector signed char )~(__a & (vector bool char)__b); } static __inline__ vector unsigned char __ATTRS_o_ai @@ -6506,12 +6539,12 @@ static __inline__ vector unsigned char __ATTRS_o_ai vec_nand(vector unsigned char __a, vector bool char __b) { - return ~(__a & __b); + return ~(__a & (vector unsigned char)__b); } static __inline__ vector unsigned char __ATTRS_o_ai vec_nand(vector bool char __a, vector unsigned char __b) { - return ~(__a & __b); + return (vector unsigned char)~(__a &(vector bool char)__b); } static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a, @@ -6526,12 +6559,12 @@ static __inline__ vector signed short __ATTRS_o_ai vec_nand(vector signed short __a, vector bool short __b) { - return ~(__a & __b); + return ~(__a & (vector signed short)__b); } static __inline__ vector signed short __ATTRS_o_ai vec_nand(vector bool short __a, vector signed short __b) { - return ~(__a & __b); + return (vector signed short)~(__a & (vector bool short)__b); } static __inline__ vector unsigned short __ATTRS_o_ai @@ -6541,7 +6574,7 @@ static __inline__ vector unsigned short __ATTRS_o_ai vec_nand(vector unsigned short __a, vector bool short __b) { - return ~(__a & __b); + return ~(__a & (vector unsigned short)__b); } static __inline__ vector bool short __ATTRS_o_ai @@ -6556,12 +6589,12 @@ static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a, vector bool int __b) { - return ~(__a & __b); + return ~(__a & (vector signed int)__b); } static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector bool int __a, vector signed int __b) { - return ~(__a & __b); + return (vector signed int)~(__a & (vector bool int)__b); } static __inline__ vector unsigned int __ATTRS_o_ai @@ -6571,12 +6604,12 @@ static __inline__ vector unsigned int __ATTRS_o_ai vec_nand(vector unsigned int __a, vector bool int __b) { - return ~(__a & __b); + return ~(__a & (vector unsigned int)__b); } static __inline__ vector unsigned int __ATTRS_o_ai vec_nand(vector bool int __a, vector unsigned int __b) { - return ~(__a & __b); + return (vector unsigned int)~(__a & (vector bool int)__b); } static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a, @@ -6597,12 +6630,12 @@ static __inline__ vector signed long long __ATTRS_o_ai vec_nand(vector signed long long __a, vector bool long long __b) { - return ~(__a & __b); + return ~(__a & (vector signed long long)__b); } static __inline__ vector signed long long __ATTRS_o_ai vec_nand(vector bool long long __a, vector signed long long __b) { - return ~(__a & __b); + return (vector signed long long)~(__a & (vector bool long long)__b); } static __inline__ vector unsigned long long __ATTRS_o_ai @@ -6612,12 +6645,12 @@ static __inline__ vector unsigned long long __ATTRS_o_ai vec_nand(vector unsigned long long __a, vector bool long long __b) { - return ~(__a & __b); + return ~(__a & (vector unsigned long long)__b); } static __inline__ vector unsigned long long __ATTRS_o_ai vec_nand(vector bool long long __a, vector unsigned long long __b) { - return ~(__a & __b); + return (vector unsigned long long)~(__a & (vector bool long long)__b); } static __inline__ vector bool long long __ATTRS_o_ai @@ -7005,12 +7038,12 @@ static __inline__ vector signed char __ATTRS_o_ai vec_orc(vector signed char __a, vector bool char __b) { - return __a | ~__b; + return __a | (vector signed char)~__b; } static __inline__ vector signed char __ATTRS_o_ai vec_orc(vector bool char __a, vector signed char __b) { - return __a | ~__b; + return (vector signed char)(__a | (vector bool char)~__b); } static __inline__ vector unsigned char __ATTRS_o_ai @@ -7020,12 +7053,12 @@ static __inline__ vector unsigned char __ATTRS_o_ai vec_orc(vector unsigned char __a, vector bool char __b) { - return __a | ~__b; + return __a | (vector unsigned char)~__b; } static __inline__ vector unsigned char __ATTRS_o_ai vec_orc(vector bool char __a, vector unsigned char __b) { - return __a | ~__b; + return (vector unsigned char)(__a | (vector bool char)~__b); } static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a, @@ -7040,12 +7073,12 @@ static __inline__ vector signed short __ATTRS_o_ai vec_orc(vector signed short __a, vector bool short __b) { - return __a | ~__b; + return __a | (vector signed short)~__b; } static __inline__ vector signed short __ATTRS_o_ai vec_orc(vector bool short __a, vector signed short __b) { - return __a | ~__b; + return (vector signed short)(__a | (vector bool short)~__b); } static __inline__ vector unsigned short __ATTRS_o_ai @@ -7055,12 +7088,12 @@ static __inline__ vector unsigned short __ATTRS_o_ai vec_orc(vector unsigned short __a, vector bool short __b) { - return __a | ~__b; + return __a | (vector unsigned short)~__b; } static __inline__ vector unsigned short __ATTRS_o_ai vec_orc(vector bool short __a, vector unsigned short __b) { - return __a | ~__b; + return (vector unsigned short)(__a | (vector bool short)~__b); } static __inline__ vector bool short __ATTRS_o_ai @@ -7075,12 +7108,12 @@ static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a, vector bool int __b) { - return __a | ~__b; + return __a | (vector signed int)~__b; } static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector bool int __a, vector signed int __b) { - return __a | ~__b; + return (vector signed int)(__a | (vector bool int)~__b); } static __inline__ vector unsigned int __ATTRS_o_ai @@ -7090,12 +7123,12 @@ static __inline__ vector unsigned int __ATTRS_o_ai vec_orc(vector unsigned int __a, vector bool int __b) { - return __a | ~__b; + return __a | (vector unsigned int)~__b; } static __inline__ vector unsigned int __ATTRS_o_ai vec_orc(vector bool int __a, vector unsigned int __b) { - return __a | ~__b; + return (vector unsigned int)(__a | (vector bool int)~__b); } static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a, @@ -7105,12 +7138,12 @@ static __inline__ vector float __ATTRS_o_ai vec_orc(vector bool int __a, vector float __b) { - return (vector float)(__a | ~(vector unsigned int)__b); + return (vector float)(__a | ~(vector bool int)__b); } static __inline__ vector float __ATTRS_o_ai vec_orc(vector float __a, vector bool int __b) { - return (vector float)((vector unsigned int)__a | ~__b); + return (vector float)((vector bool int)__a | ~__b); } static __inline__ vector float __ATTRS_o_ai vec_orc(vector float __a, @@ -7125,12 +7158,12 @@ static __inline__ vector signed long long __ATTRS_o_ai vec_orc(vector signed long long __a, vector bool long long __b) { - return __a | ~__b; + return __a | (vector signed long long)~__b; } static __inline__ vector signed long long __ATTRS_o_ai vec_orc(vector bool long long __a, vector signed long long __b) { - return __a | ~__b; + return (vector signed long long)(__a | (vector bool long long)~__b); } static __inline__ vector unsigned long long __ATTRS_o_ai @@ -7140,12 +7173,12 @@ static __inline__ vector unsigned long long __ATTRS_o_ai vec_orc(vector unsigned long long __a, vector bool long long __b) { - return __a | ~__b; + return __a | (vector unsigned long long)~__b; } static __inline__ vector unsigned long long __ATTRS_o_ai vec_orc(vector bool long long __a, vector unsigned long long __b) { - return __a | ~__b; + return (vector unsigned long long)(__a | (vector bool long long)~__b); } static __inline__ vector bool long long __ATTRS_o_ai @@ -7155,18 +7188,18 @@ static __inline__ vector double __ATTRS_o_ai vec_orc(vector double __a, vector bool long long __b) { - return (vector double)((vector unsigned long long)__a | ~__b); + return (vector double)((vector bool long long)__a | ~__b); } static __inline__ vector double __ATTRS_o_ai vec_orc(vector bool long long __a, vector double __b) { - return (vector double)(__a | ~(vector unsigned long long)__b); + return (vector double)(__a | ~(vector bool long long)__b); } static __inline__ vector double __ATTRS_o_ai vec_orc(vector double __a, vector double __b) { - return (vector double)((vector bool long long)__a | - ~(vector unsigned long long)__b); + return (vector double)((vector unsigned long long)__a | + ~(vector unsigned long long)__b); } #endif @@ -8276,14 +8309,18 @@ static __inline__ vector unsigned long long __ATTRS_o_ai vec_rl(vector unsigned long long __a, vector unsigned long long __b) { - return __builtin_altivec_vrld(__a, __b); + return (vector unsigned long long)__builtin_altivec_vrld( + (vector long long)__a, __b); } #endif #if defined(__POWER10_VECTOR__) && defined(__SIZEOF_INT128__) static __inline__ vector signed __int128 __ATTRS_o_ai vec_rl(vector signed __int128 __a, vector unsigned __int128 __b) { - return (__b << __a)|(__b >> ((__CHAR_BIT__ * sizeof(vector signed __int128)) - __a)); + return (vector signed __int128)((vector signed __int128)__b << + (vector signed __int128)__a)| + ((vector signed __int128)__b >> + ((__CHAR_BIT__ * sizeof(vector signed __int128)) - __a)); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -8317,7 +8354,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_rlmi(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vrlqmi(__a, __c, __b); + return (vector signed __int128)__builtin_altivec_vrlqmi( + (vector unsigned __int128)__a, + (vector unsigned __int128)__c, + (vector unsigned __int128)__b); } #endif @@ -8370,7 +8410,8 @@ __builtin_shufflevector(TmpB, TmpC, -1, -1, -1, -1, -1, 31, 30, 15, -1, -1, -1, -1, -1, -1, -1, -1); #endif - return __builtin_altivec_vrlqnm(__a, (vector unsigned __int128) MaskAndShift); + return (vector signed __int128)__builtin_altivec_vrlqnm((vector unsigned __int128)__a, + (vector unsigned __int128) MaskAndShift); } #endif @@ -12070,14 +12111,14 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_subc(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vsubcuq(__a, __b); + return (vector signed __int128)__builtin_altivec_vsubcuq((vector unsigned __int128)__a, (vector unsigned __int128)__b); } -#endif static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_subc_u128(vector unsigned char __a, vector unsigned char __b) { - return (vector unsigned char)__builtin_altivec_vsubcuq(__a, __b); + return (vector unsigned char)__builtin_altivec_vsubcuq((vector unsigned __int128)__a, (vector unsigned __int128)__b); } +#endif #endif // __POWER8_VECTOR__ /* vec_vsubcuw */ @@ -12298,7 +12339,7 @@ static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_sub_u128(vector unsigned char __a, vector unsigned char __b) { - return __builtin_altivec_vsubuqm(__a, __b); + return (vector unsigned char)__builtin_altivec_vsubuqm(__a, __b); } /* vec_vsubeuqm */ @@ -12307,7 +12348,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vsubeuqm(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vsubeuqm( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -12319,7 +12363,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_sube(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vsubeuqm(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vsubeuqm( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -12327,20 +12374,23 @@ vector unsigned __int128 __c) { return __builtin_altivec_vsubeuqm(__a, __b, __c); } -#endif static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_sube_u128(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) { - return (vector unsigned char)__builtin_altivec_vsubeuqm(__a, __b, __c); + return (vector unsigned char)__builtin_altivec_vsubeuqm( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } /* vec_vsubcuq */ -#ifdef __SIZEOF_INT128__ static __inline__ vector signed __int128 __ATTRS_o_ai vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vsubcuq(__a, __b); + return (vector signed __int128)__builtin_altivec_vsubcuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -12353,7 +12403,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vsubecuq(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vsubecuq( + (vector unsigned __int128)__a, + (vector unsigned __int128) __b, + (vector unsigned __int128) __c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -12381,7 +12434,10 @@ static __inline__ vector signed __int128 __ATTRS_o_ai vec_subec(vector signed __int128 __a, vector signed __int128 __b, vector signed __int128 __c) { - return __builtin_altivec_vsubecuq(__a, __b, __c); + return (vector signed __int128)__builtin_altivec_vsubecuq( + (vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } static __inline__ vector unsigned __int128 __ATTRS_o_ai @@ -12389,13 +12445,15 @@ vector unsigned __int128 __c) { return __builtin_altivec_vsubecuq(__a, __b, __c); } -#endif static __inline__ vector unsigned char __attribute__((__always_inline__)) vec_subec_u128(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c) { - return (vector unsigned char)__builtin_altivec_vsubecuq(__a, __b, __c); + return (vector unsigned char)__builtin_altivec_vsubecuq((vector unsigned __int128)__a, + (vector unsigned __int128)__b, + (vector unsigned __int128)__c); } +#endif #endif // __POWER8_VECTOR__ static __inline__ vector signed int __ATTRS_o_ai @@ -14900,17 +14958,19 @@ #if defined(__POWER10_VECTOR__) && defined(__SIZEOF_INT128__) static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_LT, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_LT, (vector unsigned __int128)__a, + (vector signed __int128)__b); } static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned __int128 __a, vector unsigned __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_LT, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_LT, __a, (vector signed __int128)__b); } static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool __int128 __a, vector bool __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_LT, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_LT, (vector unsigned __int128)__a, + (vector signed __int128)__b); } #endif @@ -15850,17 +15910,18 @@ #if defined(__POWER10_VECTOR__) && defined(__SIZEOF_INT128__) static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_EQ, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_EQ, (vector unsigned __int128)__a, __b); } static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned __int128 __a, vector unsigned __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_EQ, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_EQ, __a, (vector signed __int128)__b); } static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool __int128 __a, vector bool __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_EQ, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_EQ, (vector unsigned __int128)__a, + (vector signed __int128)__b); } #endif @@ -16144,17 +16205,20 @@ #if defined(__POWER10_VECTOR__) && defined(__SIZEOF_INT128__) static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, (vector unsigned __int128)__a, __b); } static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned __int128 __a, vector unsigned __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, __a, + (vector signed __int128)__b); } static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool __int128 __a, vector bool __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, + (vector unsigned __int128)__a, + (vector signed __int128)__b); } #endif @@ -17124,17 +17188,21 @@ #if defined(__POWER10_VECTOR__) && defined(__SIZEOF_INT128__) static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed __int128 __a, vector signed __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, + (vector unsigned __int128)__a, __b); } static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned __int128 __a, vector unsigned __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, __a, + (vector signed __int128)__b); } static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool __int128 __a, vector bool __int128 __b) { - return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, __a, __b); + return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, + (vector unsigned __int128)__a, + (vector signed __int128)__b); } #endif @@ -17297,13 +17365,19 @@ static __inline__ vector bool char __ATTRS_o_ai vec_permxor(vector bool char __a, vector bool char __b, vector bool char __c) { - return __builtin_altivec_crypto_vpermxor(__a, __b, __c); + return (vector bool char)__builtin_altivec_crypto_vpermxor( + (vector unsigned char)__a, + (vector unsigned char)__b, + (vector unsigned char)__c); } static __inline__ vector signed char __ATTRS_o_ai vec_permxor(vector signed char __a, vector signed char __b, vector signed char __c) { - return __builtin_altivec_crypto_vpermxor(__a, __b, __c); + return (vector signed char)__builtin_altivec_crypto_vpermxor( + (vector unsigned char)__a, + (vector unsigned char)__b, + (vector unsigned char)__c); } static __inline__ vector unsigned char __ATTRS_o_ai @@ -17365,7 +17439,7 @@ static __inline__ vector signed char __ATTRS_o_ai vec_vgbbd(vector signed char __a) { - return __builtin_altivec_vgbbd((vector unsigned char)__a); + return (vector signed char)__builtin_altivec_vgbbd((vector unsigned char)__a); } #define vec_pmsum_be __builtin_crypto_vpmsumb @@ -17378,23 +17452,25 @@ static __inline__ vector signed long long __ATTRS_o_ai vec_gbb(vector signed long long __a) { - return __builtin_altivec_vgbbd((vector unsigned char)__a); + return (vector signed long long)__builtin_altivec_vgbbd( + (vector unsigned char)__a); } static __inline__ vector unsigned long long __ATTRS_o_ai vec_gbb(vector unsigned long long __a) { - return __builtin_altivec_vgbbd((vector unsigned char)__a); + return (vector unsigned long long)__builtin_altivec_vgbbd( + (vector unsigned char)__a); } static __inline__ vector long long __ATTRS_o_ai vec_vbpermq(vector signed char __a, vector signed char __b) { - return __builtin_altivec_vbpermq((vector unsigned char)__a, - (vector unsigned char)__b); + return (vector long long)__builtin_altivec_vbpermq((vector unsigned char)__a, + (vector unsigned char)__b); } static __inline__ vector long long __ATTRS_o_ai vec_vbpermq(vector unsigned char __a, vector unsigned char __b) { - return __builtin_altivec_vbpermq(__a, __b); + return (vector long long)__builtin_altivec_vbpermq(__a, __b); } #if defined(__powerpc64__) && defined(__SIZEOF_INT128__) @@ -17406,7 +17482,7 @@ #endif static __inline__ vector unsigned char __ATTRS_o_ai vec_bperm(vector unsigned char __a, vector unsigned char __b) { - return __builtin_altivec_vbpermq(__a, __b); + return (vector unsigned char)__builtin_altivec_vbpermq(__a, __b); } #endif // __POWER8_VECTOR__ #ifdef __POWER9_VECTOR__ @@ -18386,18 +18462,18 @@ static __inline__ vector signed char __ATTRS_o_ai vec_clr_first(vector signed char __a, unsigned int __n) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vclrrb(__a, __n); + return (vector signed char)__builtin_altivec_vclrrb((vector char)__a, __n); #else - return __builtin_altivec_vclrlb( __a, __n); + return (vector signed char)__builtin_altivec_vclrlb((vector char) __a, __n); #endif } static __inline__ vector unsigned char __ATTRS_o_ai vec_clr_first(vector unsigned char __a, unsigned int __n) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vclrrb((vector signed char)__a, __n); + return (vector unsigned char)__builtin_altivec_vclrrb((vector char)__a, __n); #else - return __builtin_altivec_vclrlb((vector signed char)__a, __n); + return (vector unsigned char)__builtin_altivec_vclrlb((vector char)__a, __n); #endif } @@ -18406,18 +18482,18 @@ static __inline__ vector signed char __ATTRS_o_ai vec_clr_last(vector signed char __a, unsigned int __n) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vclrlb(__a, __n); + return (vector signed char)__builtin_altivec_vclrlb((vector char)__a, __n); #else - return __builtin_altivec_vclrrb( __a, __n); + return (vector signed char)__builtin_altivec_vclrrb((vector char)__a, __n); #endif } static __inline__ vector unsigned char __ATTRS_o_ai vec_clr_last(vector unsigned char __a, unsigned int __n) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vclrlb((vector signed char)__a, __n); + return (vector unsigned char)__builtin_altivec_vclrlb((vector char)__a, __n); #else - return __builtin_altivec_vclrrb((vector signed char)__a, __n); + return (vector unsigned char)__builtin_altivec_vclrrb((vector char)__a, __n); #endif } @@ -18713,7 +18789,9 @@ static __inline__ vector signed char __ATTRS_o_ai vec_blendv(vector signed char __a, vector signed char __b, vector unsigned char __c) { - return __builtin_vsx_xxblendvb(__a, __b, __c); + return (vector signed char)__builtin_vsx_xxblendvb((vector unsigned char)__a, + (vector unsigned char)__b, + __c); } static __inline__ vector unsigned char __ATTRS_o_ai @@ -18725,7 +18803,9 @@ static __inline__ vector signed short __ATTRS_o_ai vec_blendv(vector signed short __a, vector signed short __b, vector unsigned short __c) { - return __builtin_vsx_xxblendvh(__a, __b, __c); + return (vector signed short)__builtin_vsx_xxblendvh((vector unsigned short)__a, + (vector unsigned short)__b, + __c); } static __inline__ vector unsigned short __ATTRS_o_ai @@ -18737,7 +18817,9 @@ static __inline__ vector signed int __ATTRS_o_ai vec_blendv(vector signed int __a, vector signed int __b, vector unsigned int __c) { - return __builtin_vsx_xxblendvw(__a, __b, __c); + return (vector signed int)__builtin_vsx_xxblendvw((vector unsigned int)__a, + (vector unsigned int)__b, + __c); } static __inline__ vector unsigned int __ATTRS_o_ai @@ -18749,24 +18831,29 @@ static __inline__ vector signed long long __ATTRS_o_ai vec_blendv(vector signed long long __a, vector signed long long __b, vector unsigned long long __c) { - return __builtin_vsx_xxblendvd(__a, __b, __c); + return (vector signed long long)__builtin_vsx_xxblendvd((vector unsigned long long)__a, + (vector unsigned long long)__b, + __c); } static __inline__ vector unsigned long long __ATTRS_o_ai vec_blendv(vector unsigned long long __a, vector unsigned long long __b, vector unsigned long long __c) { - return __builtin_vsx_xxblendvd(__a, __b, __c); + return (vector unsigned long long)__builtin_vsx_xxblendvd(__a, __b, __c); } static __inline__ vector float __ATTRS_o_ai vec_blendv(vector float __a, vector float __b, vector unsigned int __c) { - return __builtin_vsx_xxblendvw(__a, __b, __c); + return (vector float)__builtin_vsx_xxblendvw((vector unsigned int)__a, + (vector unsigned int)__b, + __c); } static __inline__ vector double __ATTRS_o_ai vec_blendv(vector double __a, vector double __b, vector unsigned long long __c) { - return __builtin_vsx_xxblendvd(__a, __b, __c); + return (vector double)__builtin_vsx_xxblendvd((vector unsigned long long)__a, + (vector unsigned long long)__b, __c); } /* vec_replace_elt */ @@ -18852,27 +18939,27 @@ static __inline__ vector unsigned char __ATTRS_o_ai vec_stril(vector unsigned char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribr((vector signed char)__a); + return (vector unsigned char)__builtin_altivec_vstribr((vector char)__a); #else - return __builtin_altivec_vstribl((vector signed char)__a); + return (vector unsigned char)__builtin_altivec_vstribl((vector char)__a); #endif } static __inline__ vector signed char __ATTRS_o_ai vec_stril(vector signed char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribr(__a); + return (vector signed char)__builtin_altivec_vstribr((vector char)__a); #else - return __builtin_altivec_vstribl(__a); + return (vector signed char)__builtin_altivec_vstribl((vector char)__a); #endif } static __inline__ vector unsigned short __ATTRS_o_ai vec_stril(vector unsigned short __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstrihr((vector signed short)__a); + return (vector unsigned short)__builtin_altivec_vstrihr((vector signed short)__a); #else - return __builtin_altivec_vstrihl((vector signed short)__a); + return (vector unsigned short)__builtin_altivec_vstrihl((vector signed short)__a); #endif } @@ -18889,17 +18976,17 @@ static __inline__ int __ATTRS_o_ai vec_stril_p(vector unsigned char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribr_p(__CR6_EQ, (vector signed char)__a); + return __builtin_altivec_vstribr_p(__CR6_EQ, (vector char)__a); #else - return __builtin_altivec_vstribl_p(__CR6_EQ, (vector signed char)__a); + return __builtin_altivec_vstribl_p(__CR6_EQ, (vector char)__a); #endif } static __inline__ int __ATTRS_o_ai vec_stril_p(vector signed char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribr_p(__CR6_EQ, __a); + return __builtin_altivec_vstribr_p(__CR6_EQ, (vector char)__a); #else - return __builtin_altivec_vstribl_p(__CR6_EQ, __a); + return __builtin_altivec_vstribl_p(__CR6_EQ, (vector char)__a); #endif } @@ -18924,27 +19011,27 @@ static __inline__ vector unsigned char __ATTRS_o_ai vec_strir(vector unsigned char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribl((vector signed char)__a); + return (vector unsigned char)__builtin_altivec_vstribl((vector char)__a); #else - return __builtin_altivec_vstribr((vector signed char)__a); + return (vector unsigned char)__builtin_altivec_vstribr((vector char)__a); #endif } static __inline__ vector signed char __ATTRS_o_ai vec_strir(vector signed char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribl(__a); + return (vector signed char)__builtin_altivec_vstribl((vector char)__a); #else - return __builtin_altivec_vstribr(__a); + return (vector signed char)__builtin_altivec_vstribr((vector char)__a); #endif } static __inline__ vector unsigned short __ATTRS_o_ai vec_strir(vector unsigned short __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstrihl((vector signed short)__a); + return (vector unsigned short)__builtin_altivec_vstrihl((vector signed short)__a); #else - return __builtin_altivec_vstrihr((vector signed short)__a); + return (vector unsigned short)__builtin_altivec_vstrihr((vector signed short)__a); #endif } @@ -18961,17 +19048,17 @@ static __inline__ int __ATTRS_o_ai vec_strir_p(vector unsigned char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribl_p(__CR6_EQ, (vector signed char)__a); + return __builtin_altivec_vstribl_p(__CR6_EQ, (vector char)__a); #else - return __builtin_altivec_vstribr_p(__CR6_EQ, (vector signed char)__a); + return __builtin_altivec_vstribr_p(__CR6_EQ, (vector char)__a); #endif } static __inline__ int __ATTRS_o_ai vec_strir_p(vector signed char __a) { #ifdef __LITTLE_ENDIAN__ - return __builtin_altivec_vstribl_p(__CR6_EQ, __a); + return __builtin_altivec_vstribl_p(__CR6_EQ, (vector char)__a); #else - return __builtin_altivec_vstribr_p(__CR6_EQ, __a); + return __builtin_altivec_vstribr_p(__CR6_EQ, (vector char)__a); #endif } diff --git a/clang/test/CodeGen/PowerPC/builtins-ppc-p10vector.c b/clang/test/CodeGen/PowerPC/builtins-ppc-p10vector.c --- a/clang/test/CodeGen/PowerPC/builtins-ppc-p10vector.c +++ b/clang/test/CodeGen/PowerPC/builtins-ppc-p10vector.c @@ -1952,7 +1952,7 @@ vector signed __int128 test_vec_rl_s128(void) { // CHECK-LABEL: @test_vec_rl_s128( // CHECK: sub <1 x i128> - // CHECK-NEXT: lshr <1 x i128> + // CHECK-NEXT: ashr <1 x i128> // CHECK-NEXT: or <1 x i128> // CHECK-NEXT: ret <1 x i128> return vec_rl(vsi128a, vsi128b); diff --git a/clang/test/CodeGen/PowerPC/builtins-ppc-quadword-noi128.c b/clang/test/CodeGen/PowerPC/builtins-ppc-quadword-noi128.c --- a/clang/test/CodeGen/PowerPC/builtins-ppc-quadword-noi128.c +++ b/clang/test/CodeGen/PowerPC/builtins-ppc-quadword-noi128.c @@ -7,7 +7,7 @@ // RUN: -triple powerpc64-aix-unknown -emit-llvm %s -o - | FileCheck \ // RUN: %s -check-prefix=CHECK-AIX // RUN: %clang_cc1 -O2 -target-feature +altivec -target-feature +power8-vector \ -// RUN: -triple powerpc-aix-unknown -emit-llvm %s -o - | FileCheck \ +// RUN: -triple powerpc-aix-unknown -emit-llvm -fforce-enable-int128 %s -o - | FileCheck \ // RUN: %s -check-prefix=CHECK-AIX #include // CHECK-LE-LABEL: @test_subc(