mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
ARM TCG conversion 15/16.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4152 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
+1
-1
@@ -211,7 +211,7 @@ LIBOBJS+= op_helper.o helper.o
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_BASE_ARCH), arm)
|
||||
LIBOBJS+= op_helper.o helper.o neon_helper.o
|
||||
LIBOBJS+= op_helper.o helper.o neon_helper.o iwmmxt_helper.o
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_BASE_ARCH), sh4)
|
||||
|
||||
@@ -431,6 +431,103 @@ DEF_HELPER_1_2(neon_cgt_f32, uint32_t, (uint32_t, uint32_t))
|
||||
DEF_HELPER_1_2(neon_acge_f32, uint32_t, (uint32_t, uint32_t))
|
||||
DEF_HELPER_1_2(neon_acgt_f32, uint32_t, (uint32_t, uint32_t))
|
||||
|
||||
/* iwmmxt_helper.c */
|
||||
DEF_HELPER_1_2(iwmmxt_maddsq, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_madduq, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_sadb, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_sadw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_mulslw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_mulshw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_mululw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_muluhw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_macsw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_macuw, uint64_t, (uint64_t, uint64_t))
|
||||
DEF_HELPER_1_1(iwmmxt_setpsr_nz, uint32_t, (uint64_t))
|
||||
|
||||
#define DEF_IWMMXT_HELPER_SIZE_ENV(name) \
|
||||
DEF_HELPER_1_3(iwmmxt_##name##b, uint64_t, (CPUState *, uint64_t, uint64_t)) \
|
||||
DEF_HELPER_1_3(iwmmxt_##name##w, uint64_t, (CPUState *, uint64_t, uint64_t)) \
|
||||
DEF_HELPER_1_3(iwmmxt_##name##l, uint64_t, (CPUState *, uint64_t, uint64_t)) \
|
||||
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(unpackl)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(unpackh)
|
||||
|
||||
DEF_HELPER_1_2(iwmmxt_unpacklub, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackluw, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpacklul, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackhub, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackhuw, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackhul, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpacklsb, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpacklsw, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpacklsl, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackhsb, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackhsw, uint64_t, (CPUState *, uint64_t))
|
||||
DEF_HELPER_1_2(iwmmxt_unpackhsl, uint64_t, (CPUState *, uint64_t))
|
||||
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(cmpeq)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(cmpgtu)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(cmpgts)
|
||||
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(mins)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(minu)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(maxs)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(maxu)
|
||||
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(subn)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(addn)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(subu)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(addu)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(subs)
|
||||
DEF_IWMMXT_HELPER_SIZE_ENV(adds)
|
||||
|
||||
DEF_HELPER_1_3(iwmmxt_avgb0, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_avgb1, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_avgw0, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_avgw1, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
|
||||
DEF_HELPER_1_2(iwmmxt_msadb, uint64_t, (uint64_t, uint64_t))
|
||||
|
||||
DEF_HELPER_1_3(iwmmxt_align, uint64_t, (uint64_t, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_4(iwmmxt_insr, uint64_t, (uint64_t, uint32_t, uint32_t, uint32_t))
|
||||
|
||||
DEF_HELPER_1_1(iwmmxt_bcstb, uint64_t, (uint32_t))
|
||||
DEF_HELPER_1_1(iwmmxt_bcstw, uint64_t, (uint32_t))
|
||||
DEF_HELPER_1_1(iwmmxt_bcstl, uint64_t, (uint32_t))
|
||||
|
||||
DEF_HELPER_1_1(iwmmxt_addcb, uint64_t, (uint64_t))
|
||||
DEF_HELPER_1_1(iwmmxt_addcw, uint64_t, (uint64_t))
|
||||
DEF_HELPER_1_1(iwmmxt_addcl, uint64_t, (uint64_t))
|
||||
|
||||
DEF_HELPER_1_1(iwmmxt_msbb, uint32_t, (uint64_t))
|
||||
DEF_HELPER_1_1(iwmmxt_msbw, uint32_t, (uint64_t))
|
||||
DEF_HELPER_1_1(iwmmxt_msbl, uint32_t, (uint64_t))
|
||||
|
||||
DEF_HELPER_1_3(iwmmxt_srlw, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_srll, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_srlq, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_sllw, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_slll, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_sllq, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_sraw, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_sral, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_sraq, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_rorw, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_rorl, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_rorq, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_shufh, uint64_t, (CPUState *, uint64_t, uint32_t))
|
||||
|
||||
DEF_HELPER_1_3(iwmmxt_packuw, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_packul, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_packuq, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_packsw, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_packsl, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
DEF_HELPER_1_3(iwmmxt_packsq, uint64_t, (CPUState *, uint64_t, uint64_t))
|
||||
|
||||
DEF_HELPER_1_3(iwmmxt_muladdsl, uint64_t, (uint64_t, uint32_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_muladdsw, uint64_t, (uint64_t, uint32_t, uint32_t))
|
||||
DEF_HELPER_1_3(iwmmxt_muladdswl, uint64_t, (uint64_t, uint32_t, uint32_t))
|
||||
|
||||
#undef DEF_HELPER
|
||||
#undef DEF_HELPER_0_0
|
||||
#undef DEF_HELPER_0_1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* ARM NEON vector operations.
|
||||
*
|
||||
* Copyright (c) 2007, 2008 CodeSourcery.
|
||||
* Written by Paul Brook
|
||||
*
|
||||
* This code is licenced under the GNU GPL v2.
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
+3
-14
@@ -20,17 +20,6 @@
|
||||
*/
|
||||
#include "exec.h"
|
||||
|
||||
/* memory access */
|
||||
|
||||
#define MEMSUFFIX _raw
|
||||
#include "op_mem.h"
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
#define MEMSUFFIX _user
|
||||
#include "op_mem.h"
|
||||
#define MEMSUFFIX _kernel
|
||||
#include "op_mem.h"
|
||||
#endif
|
||||
|
||||
/* iwMMXt support */
|
||||
#include "op_iwmmxt.c"
|
||||
void OPPROTO op_dummy(void)
|
||||
{
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,23 +0,0 @@
|
||||
/* ARM memory operations. */
|
||||
|
||||
/* iwMMXt load/store. Address is in T1 */
|
||||
#define MMX_MEM_OP(name, ldname) \
|
||||
void OPPROTO glue(op_iwmmxt_ld##name,MEMSUFFIX)(void) \
|
||||
{ \
|
||||
M0 = glue(ld##ldname,MEMSUFFIX)(T1); \
|
||||
FORCE_RET(); \
|
||||
} \
|
||||
void OPPROTO glue(op_iwmmxt_st##name,MEMSUFFIX)(void) \
|
||||
{ \
|
||||
glue(st##name,MEMSUFFIX)(T1, M0); \
|
||||
FORCE_RET(); \
|
||||
}
|
||||
|
||||
MMX_MEM_OP(b, ub)
|
||||
MMX_MEM_OP(w, uw)
|
||||
MMX_MEM_OP(l, l)
|
||||
MMX_MEM_OP(q, q)
|
||||
|
||||
#undef MMX_MEM_OP
|
||||
|
||||
#undef MEMSUFFIX
|
||||
+333
-67
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user