2008-11-13 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Thu, 13 Nov 2008 22:51:20 +0000 (22:51 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 13 Nov 2008 22:51:20 +0000 (22:51 -0000)
* mini-ops.h: Kill diplicated ops OP_SHUFLEPS.

* cpu-x86.md: Same.

* mini-x86.c: Same.

* simd-intrinsics.c: Same.

svn path=/trunk/mono/; revision=118778

mono/mini/ChangeLog
mono/mini/cpu-x86.md
mono/mini/mini-ops.h
mono/mini/mini-x86.c
mono/mini/simd-intrinsics.c

index 0572858dc72326d63377a6ba1a020d63bcaa15c2..fbcc787e03b393ca2455fb9df8b2e615e00faf5e 100644 (file)
@@ -8,6 +8,16 @@
        * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
        filters.
 
+2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
+
+       * cpu-x86.md: Same.
+
+       * mini-x86.c: Same.
+
+       * simd-intrinsics.c: Same.
+
 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * simd-intrinsics.c: Enable constructor intrinsics for all types.
index 950d0e0d3261252c49f62f776db34a364c8cc6e4..511c4283f819927231ece629fa8ee8663df81c0b 100644 (file)
@@ -451,7 +451,6 @@ pxor: dest:x src1:x src2:x len:4 clob:1
 sqrtps: dest:x src1:x len:4
 rsqrtps: dest:x src1:x len:4
 rcpps: dest:x src1:x len:4
-shuffleps: dest:x src1:x len:5
 
 pshufflew_high: dest:x src1:x len:5
 pshufflew_low: dest:x src1:x len:5
index 75135de42611e4b4d0a79c42184ac309f6dc5c80..b25cb77c93727991a0b222305e4e7eec969ddf22 100644 (file)
@@ -654,7 +654,6 @@ MINI_OP(OP_DUPPS_HIGH, "dupps_high", XREG, XREG, NONE)
 MINI_OP(OP_RSQRTPS, "rsqrtps", XREG, XREG, NONE)
 MINI_OP(OP_SQRTPS, "sqrtps", XREG, XREG, NONE)
 MINI_OP(OP_RCPPS, "rcpps", XREG, XREG, NONE)
-MINI_OP(OP_SHUFLEPS, "shuffleps", XREG, XREG, NONE)
 
 MINI_OP(OP_PSHUFLEW_HIGH, "pshufflew_high", XREG, XREG, NONE)
 MINI_OP(OP_PSHUFLEW_LOW, "pshufflew_low", XREG, XREG, NONE)
index eac452b49e65e690fc0c5cd0b5c6d5764425149d..11429f0610d549b6aff9c55ff3e41eeb6d591ff8 100644 (file)
@@ -3869,10 +3869,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_DUPPS_LOW:
                        x86_sse_alu_ss_reg_reg (code, X86_SSE_MOVSLDUP, ins->dreg, ins->sreg1);
                        break;
-               case OP_SHUFLEPS:
-                       g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
-                       x86_pshufd_reg_reg (code, ins->dreg, ins->sreg1, ins->inst_c0);
-                       break;
 
                case OP_PSHUFLEW_HIGH:
                        g_assert (ins->inst_c0 >= 0 && ins->inst_c0 <= 0xFF);
index 91120e901a2eb8051134304334f67c5ef6a7affb..af148cb30b281b0de41a3ce491bccb394d3075b6 100644 (file)
@@ -153,7 +153,7 @@ static const SimdIntrinsc vector4f_intrinsics[] = {
        { SN_PrefetchTemporal2ndLevelCache, 0, SIMD_EMIT_PREFETCH, SIMD_VERSION_SSE1, SIMD_PREFETCH_MODE_2 },
        { SN_PrefetchNonTemporal, 0, SIMD_EMIT_PREFETCH, SIMD_VERSION_SSE1, SIMD_PREFETCH_MODE_NTA },
        { SN_Reciprocal, OP_RCPPS, SIMD_EMIT_UNARY },
-       { SN_Shuffle, OP_SHUFLEPS, SIMD_EMIT_SHUFFLE },
+       { SN_Shuffle, OP_PSHUFLED, SIMD_EMIT_SHUFFLE },
        { SN_Sqrt, OP_SQRTPS, SIMD_EMIT_UNARY },
        { SN_StoreAligned, OP_STOREX_ALIGNED_MEMBASE_REG, SIMD_EMIT_STORE },
        { SN_StoreNonTemporal, OP_STOREX_NTA_MEMBASE_REG, SIMD_EMIT_STORE },
@@ -787,7 +787,7 @@ simd_intrinsic_emit_getter (const SimdIntrinsc *intrinsic, MonoCompile *cfg, Mon
        vreg = load_simd_vreg (cfg, cmethod, args [0]);
 
        if (intrinsic->opcode) {
-               MONO_INST_NEW (cfg, ins, OP_SHUFLEPS);
+               MONO_INST_NEW (cfg, ins, OP_PSHUFLED);
                ins->klass = cmethod->klass;
                ins->sreg1 = vreg;
                ins->inst_c0 = intrinsic->opcode;