Index: tests/pybin/settings.py
===================================================================
--- tests/pybin/settings.py	(revision 7c5d8c4831b1b5bbec85e2191b86a00a9946dd24)
+++ tests/pybin/settings.py	(revision 41af19c4fd05a6d608a489a8ef755e3005583223)
@@ -23,15 +23,15 @@
 class Architecture:
 	KnownArchitectures = {
-		'x64'		: 'x64',
-		'x86-64'	: 'x64',
-		'x86_64'	: 'x64',
-		'x86'		: 'x86',
-		'aarch64'	: 'arm',
-		'i386'		: 'x86',
-		'i486'		: 'x86',
-		'i686'		: 'x86',
-		'Intel 80386'	: 'x86',
-		'arm'		: 'arm',
-		'ARM'		: 'arm',
+		'x64'         : 'x64',
+		'x86-64'      : 'x64',
+		'x86_64'      : 'x64',
+		'x86'         : 'x86',
+		'aarch64'     : 'arm',
+		'i386'        : 'x86',
+		'i486'        : 'x86',
+		'i686'        : 'x86',
+		'Intel 80386' : 'x86',
+		'arm'         : 'arm',
+		'ARM'         : 'arm',
 	}
 
@@ -129,5 +129,5 @@
 	global timeout2gdb
 
-	all_arch     = [Architecture(o) for o in list(dict.fromkeys(options.arch   ))]
+	all_arch     = [Architecture(o) for o in list(dict.fromkeys(options.arch   ))] if options.arch else [Architecture(None)]
 	all_debug    = [Debug(o)        for o in list(dict.fromkeys(options.debug  ))]
 	all_install  = [Install(o)      for o in list(dict.fromkeys(options.install))]
Index: tests/pybin/test_run.py
===================================================================
--- tests/pybin/test_run.py	(revision 7c5d8c4831b1b5bbec85e2191b86a00a9946dd24)
+++ tests/pybin/test_run.py	(revision 41af19c4fd05a6d608a489a8ef755e3005583223)
@@ -45,9 +45,9 @@
 
 	@classmethod
-	def from_target(_, target):
+	def new_target(_, target, arch):
 		test = Test()
 		test.name = os.path.basename(target)
 		test.path = os.path.relpath (os.path.dirname(target), settings.SRCDIR)
-		test.arch = settings.arch.target if settings.arch.cross_compile else ''
+		test.arch = arch.target if arch else ''
 		return test
 
Index: tests/test.py
===================================================================
--- tests/test.py	(revision 7c5d8c4831b1b5bbec85e2191b86a00a9946dd24)
+++ tests/test.py	(revision 41af19c4fd05a6d608a489a8ef755e3005583223)
@@ -67,7 +67,30 @@
 		for testname in options.tests :
 			testname = canonical_path( testname )
+			# first check if this is a valid name to regenerate
 			if Test.valid_name(testname):
+				# this is a valid name, let's check if it already exists
 				found = [test for test in all_tests if canonical_path( test.target() ) == testname]
-				tests.append( found[0] if len(found) == 1 else Test.from_target(testname) )
+				if not found:
+					# it's a new name, create it according to the name and specified architecture
+					if options.arch:
+						# user specified one or multiple architectures, assume the tests will have architecture specific results
+						tests.extend( [Test.new_target(testname, arch) for arch in settings.all_arch] )
+					else:
+						# user didn't specify an architecture, just create a cross platform test
+						tests.append( Test.new_target( testname, None ) )
+				elif len(found) == 1 and not found[0].arch:
+					# we found a single test, the user better be wanting to create a cross platform test
+					if options.arch:
+						print('ERROR: "%s", test has no specified architecture but --arch was specified, ignoring it' % testname, file=sys.stderr)
+					else:
+						tests.append( found[0] )
+				else:
+					# this test is already cross platform, just add a test for each platform the user asked
+					tests.extend( [Test.new_target(testname, arch) for arch in settings.all_arch] )
+
+					# print a warning if it users didn't ask for a specific architecture
+					if not options.arch:
+						print('WARNING: "%s", test has architecture specific expected files but --arch was not specified, regenerating only for current host' % testname, file=sys.stderr)
+
 			else :
 				print('ERROR: "%s", tests are not allowed to end with a C/C++/CFA extension, ignoring it' % testname, file=sys.stderr)
@@ -91,5 +114,5 @@
 	parser.add_argument('--debug', help='Run all tests in debug or release', type=comma_separated(yes_no), default='yes')
 	parser.add_argument('--install', help='Run all tests based on installed binaries or tree binaries', type=comma_separated(yes_no), default='no')
-	parser.add_argument('--arch', help='Test for specific architecture', type=comma_separated(str), default='')
+	parser.add_argument('--arch', help='Test for specific architecture', type=comma_separated(str), default=None)
 	parser.add_argument('--continue', help='When multiple specifications are passed (debug/install/arch), sets whether or not to continue if the last specification failed', type=yes_no, default='yes', dest='continue_')
 	parser.add_argument('--timeout', help='Maximum duration in seconds after a single test is considered to have timed out', type=int, default=60)
