diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-09-06 10:50:51 +0200 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2010-09-08 13:35:00 -0700 |
commit | 35d9452b9d32db3135e8ae1b129d9a1e26f08de4 (patch) | |
tree | c3cd4aba37157e17a253de88adee880b3a5affd7 | |
parent | f763332b6a531fad20219c88456dd6642bd1ea2b (diff) |
Implement SSE versions of andq/andnq/orq/xorq/cmpeqq/cmpgtsq
-rw-r--r-- | orc/orcrules-sse.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/orc/orcrules-sse.c b/orc/orcrules-sse.c index 8445a6d..61679c9 100644 --- a/orc/orcrules-sse.c +++ b/orc/orcrules-sse.c @@ -544,6 +544,12 @@ BINARY(subl,"psubd",0xfa) //BINARY(subusl,"psubusd",0xd9) BINARY(xorl,"pxor",0xef) +BINARY(andq,"pand",0xdb) +BINARY(andnq,"pandn",0xdf) +BINARY(orq,"por",0xeb) +BINARY(xorq,"pxor",0xef) +BINARY(cmpeqq,"pcmpeqq",0x3829) +BINARY(cmpgtsq,"pcmpgtq",0x3837) static void sse_rule_accw (OrcCompiler *p, void *user, OrcInstruction *insn) @@ -2333,6 +2339,11 @@ orc_compiler_sse_register_rules (OrcTarget *target) REG(subl); REG(xorl); + REG(andq); + REG(andnq); + REG(orq); + REG(xorq); + REG(select0lw); REG(select1lw); REG(select0wb); @@ -2495,7 +2506,13 @@ orc_compiler_sse_register_rules (OrcTarget *target) orc_rule_register (rule_set, "mulhsl", sse_rule_mulhsl, NULL); #endif + REG(cmpeqq); + /* SSE 4.2 -- no rules */ + rule_set = orc_rule_set_new (orc_opcode_set_get("sys"), target, + ORC_TARGET_SSE_SSE4_2); + + REG(cmpgtsq); /* SSE 4a -- no rules */ } |