mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-19 02:25:01 +00:00
Cleanup: simplify checks for integers between 2 and 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120595 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -337,7 +337,7 @@ static std::string BuiltinTypeString(const char mod, StringRef typestr,
|
|||||||
// returning structs of 2, 3, or 4 vectors which are returned in a sret-like
|
// returning structs of 2, 3, or 4 vectors which are returned in a sret-like
|
||||||
// fashion, storing them to a pointer arg.
|
// fashion, storing them to a pointer arg.
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (mod == '2' || mod == '3' || mod == '4')
|
if (mod >= '2' && mod <= '4')
|
||||||
return "vv*";
|
return "vv*";
|
||||||
if (mod == 'f' || (ck != ClassB && type == 'f'))
|
if (mod == 'f' || (ck != ClassB && type == 'f'))
|
||||||
return quad ? "V4f" : "V2f";
|
return quad ? "V4f" : "V2f";
|
||||||
@@ -704,7 +704,7 @@ static std::string GenBuiltin(const std::string &name, const std::string &proto,
|
|||||||
|
|
||||||
// If this builtin returns a struct 2, 3, or 4 vectors, pass it as an implicit
|
// If this builtin returns a struct 2, 3, or 4 vectors, pass it as an implicit
|
||||||
// sret-like argument.
|
// sret-like argument.
|
||||||
bool sret = (proto[0] == '2' || proto[0] == '3' || proto[0] == '4');
|
bool sret = (proto[0] >= '2' && proto[0] <= '4');
|
||||||
|
|
||||||
// If this builtin takes an immediate argument, we need to #define it rather
|
// If this builtin takes an immediate argument, we need to #define it rather
|
||||||
// than use a standard declaration, so that SemaChecking can range check
|
// than use a standard declaration, so that SemaChecking can range check
|
||||||
@@ -755,7 +755,7 @@ static std::string GenBuiltin(const std::string &name, const std::string &proto,
|
|||||||
|
|
||||||
// Handle multiple-vector values specially, emitting each subvector as an
|
// Handle multiple-vector values specially, emitting each subvector as an
|
||||||
// argument to the __builtin.
|
// argument to the __builtin.
|
||||||
if (proto[i] == '2' || proto[i] == '3' || proto[i] == '4') {
|
if (proto[i] >= '2' && proto[i] <= '4') {
|
||||||
for (unsigned vi = 0, ve = proto[i] - '0'; vi != ve; ++vi) {
|
for (unsigned vi = 0, ve = proto[i] - '0'; vi != ve; ++vi) {
|
||||||
s += args + ".val[" + utostr(vi) + "]";
|
s += args + ".val[" + utostr(vi) + "]";
|
||||||
if ((vi + 1) < ve)
|
if ((vi + 1) < ve)
|
||||||
@@ -1131,7 +1131,7 @@ void NeonEmitter::runHeader(raw_ostream &OS) {
|
|||||||
|
|
||||||
// Builtins that return a struct of multiple vectors have an extra
|
// Builtins that return a struct of multiple vectors have an extra
|
||||||
// leading arg for the struct return.
|
// leading arg for the struct return.
|
||||||
if (Proto[0] == '2' || Proto[0] == '3' || Proto[0] == '4')
|
if (Proto[0] >= '2' && Proto[0] <= '4')
|
||||||
++immidx;
|
++immidx;
|
||||||
|
|
||||||
// Add one to the index for each argument until we reach the immediate
|
// Add one to the index for each argument until we reach the immediate
|
||||||
|
Reference in New Issue
Block a user