about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorxctan <xctan@cirno.icu>2024-11-26 01:04:04 +0800
committerGitHub <noreply@github.com>2024-11-25 18:04:04 +0100
commitb7f09964592df00d31dfe345404b8c70450ce453 (patch)
tree4681d0be39c8861b63d0374ebf9a64c26e0f5a5a /src
parentdcf196c2ae1ddddc8c6eb7a6ad5066c39dc954de (diff)
downloadbox64-b7f09964592df00d31dfe345404b8c70450ce453.tar.gz
box64-b7f09964592df00d31dfe345404b8c70450ce453.zip
[RV64_DYNAREC] Fixed vector SSE unpack opcodes (#2074)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_660f_vector.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_660f_vector.c b/src/dynarec/rv64/dynarec_rv64_660f_vector.c
index c0fce836..a6d5330c 100644
--- a/src/dynarec/rv64/dynarec_rv64_660f_vector.c
+++ b/src/dynarec/rv64/dynarec_rv64_660f_vector.c
@@ -1120,9 +1120,9 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
         case 0x60:
             INST_NAME("PUNPCKLBW Gx, Ex");
             nextop = F8;
+            SET_ELEMENT_WIDTH(x1, VECTOR_SEW8, 1);
             GETGX_vector(q0, 1, VECTOR_SEW8);
             GETEX_vector(q1, 0, 0, VECTOR_SEW8);
-            SET_ELEMENT_WIDTH(x1, VECTOR_SEW8, 1);
             v0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             d0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             VWADDU_VX(d0, q0, xZR, VECTOR_UNMASKED);
@@ -1134,9 +1134,9 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
         case 0x61:
             INST_NAME("PUNPCKLWD Gx, Ex");
             nextop = F8;
+            SET_ELEMENT_WIDTH(x1, VECTOR_SEW16, 1);
             GETGX_vector(q0, 1, VECTOR_SEW16);
             GETEX_vector(q1, 0, 0, VECTOR_SEW16);
-            SET_ELEMENT_WIDTH(x1, VECTOR_SEW16, 1);
             v0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             d0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             VWADDU_VX(d0, q0, xZR, VECTOR_UNMASKED);
@@ -1148,9 +1148,9 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
         case 0x62:
             INST_NAME("PUNPCKLDQ Gx, Ex");
             nextop = F8;
+            SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
             GETGX_vector(q0, 1, VECTOR_SEW32);
             GETEX_vector(q1, 0, 0, VECTOR_SEW32);
-            SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
             v0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             d0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             MOV32w(x2, 32);
@@ -1245,9 +1245,9 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 MOV32w(x2, 32);
             }
             nextop = F8;
+            SET_ELEMENT_WIDTH(x1, u8, 1);
             GETGX_vector(q0, 1, dyn->vector_eew);
             GETEX_vector(q1, 0, 0, dyn->vector_eew);
-            SET_ELEMENT_WIDTH(x1, u8, 1);
             v0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);
             v1 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL1);
             d0 = fpu_get_scratch_lmul(dyn, VECTOR_LMUL2);