summaryrefslogtreecommitdiff
path: root/Source/TestSuite/ASM/source
diff options
context:
space:
mode:
authorSonicadvance1 <sonicadvance1@gmail.com>2010-04-01 05:10:39 +0000
committerSonicadvance1 <sonicadvance1@gmail.com>2010-04-01 05:10:39 +0000
commit47f61920049a19c9caecd2bb327cbb50ae0b36d8 (patch)
treeddf9ac082406cd70810e1d956b2155ea23e3b8ed /Source/TestSuite/ASM/source
parentc3df2e93d788d6a7bbc2e3c1913983059c7a5fa6 (diff)
add two paths to addx in JIT that Crazy Taxi kept hitting, add 'add' and 'add.' tests to the ASM test, although I haven't tested it yet
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5261 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/TestSuite/ASM/source')
-rw-r--r--Source/TestSuite/ASM/source/Instructions.h2
-rw-r--r--Source/TestSuite/ASM/source/asm_integer.cpp19
-rw-r--r--Source/TestSuite/ASM/source/asm_tables.h2
3 files changed, 23 insertions, 0 deletions
diff --git a/Source/TestSuite/ASM/source/Instructions.h b/Source/TestSuite/ASM/source/Instructions.h
index 7ff5c52b81..e4eb8374b0 100644
--- a/Source/TestSuite/ASM/source/Instructions.h
+++ b/Source/TestSuite/ASM/source/Instructions.h
@@ -1,5 +1,7 @@
// Integer
+void add(u32 *a, u32 *b, u32 *c, u32 *d);
+void addRC(u32 *a, u32 *b, u32 *c, u32 *d);
void subfc(u32 *a, u32 *b, u32 *c, u32 *d);
void subfcRC(u32 *a, u32 *b, u32 *c, u32 *d);
diff --git a/Source/TestSuite/ASM/source/asm_integer.cpp b/Source/TestSuite/ASM/source/asm_integer.cpp
index 2f7891c40b..ed81832a5b 100644
--- a/Source/TestSuite/ASM/source/asm_integer.cpp
+++ b/Source/TestSuite/ASM/source/asm_integer.cpp
@@ -1,5 +1,24 @@
#include "asm_tables.h"
#include "Defines.h"
+
+void add(u32 *a, u32 *b, u32 *c, u32 *d)
+{
+ asm(
+ "add %0,%1,%2"
+ : "=r"(*a)
+ : "r"(*b), "r"(*c)
+ );
+}
+void addRC(u32 *a, u32 *b, u32 *c, u32 *d)
+{
+ asm(
+ "add. %0,%1,%2"
+ : "=r"(*a)
+ : "r"(*b), "r"(*c)
+ : "cc"
+ );
+}
+
void subfc(u32 *a, u32 *b, u32 *c, u32 *d)
{
asm(
diff --git a/Source/TestSuite/ASM/source/asm_tables.h b/Source/TestSuite/ASM/source/asm_tables.h
index abe854f205..1c8e35ba53 100644
--- a/Source/TestSuite/ASM/source/asm_tables.h
+++ b/Source/TestSuite/ASM/source/asm_tables.h
@@ -36,6 +36,8 @@ struct inst
};
static inst instructions[] = {
+ { "add", NULL, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, add},
+ { "add.", MOD_CR0, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, add},
{ "subfc", NULL, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, subfc},
{ "subfc.", MOD_CR0, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, subfcRC},
{ "divw", NULL, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1, TYPE_INTEGER, divw},