mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-07 16:42:07 +00:00
Use statement expressions in Neon intrinsics defined as macros.
This is in preparation for adding assignments to temporaries to ensure that the proper type checking is done. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120649 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ec99c90ea5
commit
052008bc3d
@ -729,7 +729,7 @@ static std::string GenBuiltin(const std::string &name, const std::string &proto,
|
||||
|
||||
if (define) {
|
||||
if (sret)
|
||||
s += "({ " + ts + " r; ";
|
||||
s += ts + " r; ";
|
||||
else
|
||||
s += "(" + ts + ")";
|
||||
} else if (sret) {
|
||||
@ -813,15 +813,12 @@ static std::string GenBuiltin(const std::string &name, const std::string &proto,
|
||||
if (ck == ClassB)
|
||||
s += ", " + utostr(GetNeonEnum(proto, typestr));
|
||||
|
||||
if (define)
|
||||
s += ")";
|
||||
else
|
||||
s += ");";
|
||||
s += ");";
|
||||
|
||||
if (proto[0] != 'v') {
|
||||
if (define) {
|
||||
if (sret)
|
||||
s += "; r; })";
|
||||
s += " r;";
|
||||
} else {
|
||||
s += " return r;";
|
||||
}
|
||||
@ -953,9 +950,9 @@ void NeonEmitter::run(raw_ostream &OS) {
|
||||
|
||||
// Definition.
|
||||
if (define)
|
||||
OS << " ";
|
||||
OS << " __extension__ ({ \\\n ";
|
||||
else
|
||||
OS << " { ";
|
||||
OS << " { \\\n ";
|
||||
|
||||
if (k != OpNone) {
|
||||
OS << GenOpString(k, Proto, TypeVec[ti]);
|
||||
@ -969,7 +966,9 @@ void NeonEmitter::run(raw_ostream &OS) {
|
||||
throw TGError(R->getLoc(), "Builtin has no class kind");
|
||||
OS << GenBuiltin(name, Proto, TypeVec[ti], ck);
|
||||
}
|
||||
if (!define)
|
||||
if (define)
|
||||
OS << " })";
|
||||
else
|
||||
OS << " }";
|
||||
OS << "\n";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user