forked from OSchip/llvm-project
Expose __builtin_bswap16.
GCC has always supported this on PowerPC and 4.8 supports it on all platforms, so it's a good idea to expose it in clang too. LLVM supports this on all targets. llvm-svn: 165362
This commit is contained in:
parent
68e2c7bee3
commit
a801f4a81d
|
@ -388,6 +388,7 @@ BUILTIN(__builtin_popcountll, "iULLi", "nc")
|
|||
|
||||
// FIXME: These type signatures are not correct for targets with int != 32-bits
|
||||
// or with ULL != 64-bits.
|
||||
BUILTIN(__builtin_bswap16, "UsUs", "nc")
|
||||
BUILTIN(__builtin_bswap32, "UiUi", "nc")
|
||||
BUILTIN(__builtin_bswap64, "ULLiULLi", "nc")
|
||||
|
||||
|
|
|
@ -4296,6 +4296,7 @@ bool IntExprEvaluator::VisitCallExpr(const CallExpr *E) {
|
|||
return Error(E);
|
||||
}
|
||||
|
||||
case Builtin::BI__builtin_bswap16:
|
||||
case Builtin::BI__builtin_bswap32:
|
||||
case Builtin::BI__builtin_bswap64: {
|
||||
APSInt Val;
|
||||
|
|
|
@ -356,6 +356,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
|
|||
"expval");
|
||||
return RValue::get(Result);
|
||||
}
|
||||
case Builtin::BI__builtin_bswap16:
|
||||
case Builtin::BI__builtin_bswap32:
|
||||
case Builtin::BI__builtin_bswap64: {
|
||||
Value *ArgValue = EmitScalarExpr(E->getArg(0));
|
||||
|
|
|
@ -113,6 +113,7 @@ int main() {
|
|||
|
||||
// Whatever
|
||||
|
||||
P(bswap16, (N));
|
||||
P(bswap32, (N));
|
||||
P(bswap64, (N));
|
||||
// FIXME
|
||||
|
|
|
@ -48,8 +48,9 @@ extern int f();
|
|||
int h0 = __builtin_types_compatible_p(int, float);
|
||||
//int h1 = __builtin_choose_expr(1, 10, f());
|
||||
//int h2 = __builtin_expect(0, 0);
|
||||
int h3 = __builtin_bswap32(0x1234) == 0x34120000 ? 1 : f();
|
||||
int h4 = __builtin_bswap64(0x1234) == 0x3412000000000000 ? 1 : f();
|
||||
int h3 = __builtin_bswap16(0x1234) == 0x3412 ? 1 : f();
|
||||
int h4 = __builtin_bswap32(0x1234) == 0x34120000 ? 1 : f();
|
||||
int h5 = __builtin_bswap64(0x1234) == 0x3412000000000000 ? 1 : f();
|
||||
extern long int bi0;
|
||||
extern __typeof__(__builtin_expect(0, 0)) bi0;
|
||||
|
||||
|
|
|
@ -16,8 +16,9 @@ extern int f();
|
|||
int h0 = __builtin_types_compatible_p(int,float);
|
||||
//int h1 = __builtin_choose_expr(1, 10, f());
|
||||
//int h2 = __builtin_expect(0, 0);
|
||||
int h3 = __builtin_bswap32(0x1234) == 0x34120000 ? 1 : f();
|
||||
int h4 = __builtin_bswap64(0x1234) == 0x3412000000000000 ? 1 : f();
|
||||
int h3 = __builtin_bswap16(0x1234) == 0x3412 ? 1 : f();
|
||||
int h4 = __builtin_bswap32(0x1234) == 0x34120000 ? 1 : f();
|
||||
int h5 = __builtin_bswap64(0x1234) == 0x3412000000000000 ? 1 : f();
|
||||
|
||||
short somefunc();
|
||||
|
||||
|
|
Loading…
Reference in New Issue