Add casts for splatted scalars in calls to Neon builtins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120641 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bob Wilson 2010-12-02 01:18:23 +00:00
parent 1dbfa91671
commit 4a6c7fc872

View File

@ -790,8 +790,11 @@ static std::string GenBuiltin(const std::string &name, const std::string &proto,
continue;
}
if (splat && (i + 1) == e)
args = Duplicate(GetNumElements(typestr, argQuad), typestr, args);
// Check if an explicit cast is needed.
if (!argScalar &&
if ((splat || !argScalar) &&
((ck == ClassB && argType != 'c') || argPoly || argUsgn)) {
std::string argTypeStr = "c";
if (ck != ClassB)
@ -801,10 +804,7 @@ static std::string GenBuiltin(const std::string &name, const std::string &proto,
args = "(" + TypeString('d', argTypeStr) + ")" + args;
}
if (splat && (i + 1) == e)
s += Duplicate(GetNumElements(typestr, argQuad), typestr, args);
else
s += args;
s += args;
if ((i + 1) < e)
s += ", ";
}