summaryrefslogtreecommitdiff
path: root/libavutil/mips/asmdefs.h
diff options
context:
space:
mode:
authorJames Cowgill <james410@cowgill.org.uk>2015-03-05 17:40:15 +0000
committerMichael Niedermayer <michaelni@gmx.at>2015-03-06 14:37:44 +0100
commit157d6f0d5b95261bf053566d8a1c2652387da30c (patch)
treeca481834165a1f3c103eea9dc50fd5e877bbcbde /libavutil/mips/asmdefs.h
parenteae13eae9d6499e81cd77bcd9e13f7bcb31b5577 (diff)
mips: port optimizations to mips n64
This mainly consists of replacing all the pointer arithmatic 'addiu' instructions with PTR_ADDIU which will handle the differences in pointer sizes when compiled on 64 bit mips systems. The header asmdefs.h contains the PTR_ macros which expend to the correct mips instructions to manipulate registers containing pointers. Signed-off-by: James Cowgill <james410@cowgill.org.uk> Reviewed-by: Nedeljko Babic <Nedeljko.Babic@imgtec.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/mips/asmdefs.h')
-rw-r--r--libavutil/mips/asmdefs.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/libavutil/mips/asmdefs.h b/libavutil/mips/asmdefs.h
new file mode 100644
index 0000000000..4d2922c951
--- /dev/null
+++ b/libavutil/mips/asmdefs.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2015 Imagination Technologies Ltd
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * MIPS assembly defines from sys/asm.h but rewritten for use with C inline
+ * assembly (rather than from within .s files).
+ */
+
+#ifndef AVCODEC_MIPS_ASMDEFS_H
+#define AVCODEC_MIPS_ASMDEFS_H
+
+#include <sgidefs.h>
+
+#if _MIPS_SIM == _ABI64
+# define PTRSIZE " 8 "
+# define PTRLOG " 3 "
+# define PTR_ADDU "daddu "
+# define PTR_ADDIU "daddiu "
+# define PTR_SUBU "dsubu "
+# define PTR_L "ld "
+#else
+# define PTRSIZE " 4 "
+# define PTRLOG " 2 "
+# define PTR_ADDU "addu "
+# define PTR_ADDIU "addiu "
+# define PTR_SUBU "subu "
+# define PTR_L "lw "
+#endif
+
+#endif /* AVCODEC_MIPS_ASMDEFS_H */