summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJukka Ojanen <jukka.ojanen@linkotec.net>2016-04-06 17:34:23 +0300
committerJukka Ojanen <jukka.ojanen@linkotec.net>2016-04-06 17:34:23 +0300
commitc85bf4b4a7a1199d9c48c24ec5a49ea0b16e1af1 (patch)
tree26c7a2934da7d47f7048d9709863901cd36fc9c5
parent78d328e98edf8b9bb5c272f4c2f900466c8b082a (diff)
downloadffts-c85bf4b4a7a1199d9c48c24ec5a49ea0b16e1af1.zip
ffts-c85bf4b4a7a1199d9c48c24ec5a49ea0b16e1af1.tar.gz
Try to remove some of the hard coded offsets to _ffts_plan_t
-rw-r--r--src/codegen_sse.h12
-rw-r--r--src/ffts_internal.h60
2 files changed, 39 insertions, 33 deletions
diff --git a/src/codegen_sse.h b/src/codegen_sse.h
index d15b316..e9819f1 100644
--- a/src/codegen_sse.h
+++ b/src/codegen_sse.h
@@ -437,10 +437,12 @@ generate_leaf_init(insns_t **fp, uint32_t loop_count)
x86_clear_reg(ins, X86_EAX);
/* set "pointer" to offsets */
- x64_mov_reg_membase(ins, X64_R9, X64_RCX, 0x0, 8);
+ x64_mov_reg_membase(ins, X64_R9, X64_RCX,
+ offsetof(struct _ffts_plan_t, offsets), 8);
/* set "pointer" to constants */
- x64_mov_reg_membase(ins, X64_RSI, X64_RCX, 0xE0, 8);
+ x64_mov_reg_membase(ins, X64_RSI, X64_RCX,
+ offsetof(struct _ffts_plan_t, constants), 8);
/* use XMM3 for sign change */
x64_sse_movaps_reg_membase(ins, X64_XMM3, X64_RSI, 0);
@@ -454,10 +456,12 @@ generate_leaf_init(insns_t **fp, uint32_t loop_count)
x86_clear_reg(ins, X86_EAX);
/* set "pointer" to offsets */
- x64_mov_reg_membase(ins, X64_R8, X64_RDI, 0x0, 8);
+ x64_mov_reg_membase(ins, X64_R8, X64_RDI,
+ offsetof(struct _ffts_plan_t, offsets), 8);
/* set "pointer" to constants */
- x64_mov_reg_membase(ins, X64_R9, X64_RDI, 0xE0, 8);
+ x64_mov_reg_membase(ins, X64_R9, X64_RDI,
+ offsetof(struct _ffts_plan_t, constants), 8);
/* align loop/jump destination */
ffts_align_mem16(&ins, 9);
diff --git a/src/ffts_internal.h b/src/ffts_internal.h
index 30e814b..7ae8789 100644
--- a/src/ffts_internal.h
+++ b/src/ffts_internal.h
@@ -1,33 +1,33 @@
/*
- This file is part of FFTS -- The Fastest Fourier Transform in the South
-
- Copyright (c) 2012, Anthony M. Blake <amb@anthonix.com>
- Copyright (c) 2012, The University of Waikato
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the organization nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+This file is part of FFTS -- The Fastest Fourier Transform in the South
+
+Copyright (c) 2012, Anthony M. Blake <amb@anthonix.com>
+Copyright (c) 2012, The University of Waikato
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+* Neither the name of the organization nor the
+names of its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL ANTHONY M. BLAKE BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
@@ -116,7 +116,9 @@ struct _ffts_plan_t {
size_t N;
void *lastlut;
- size_t *temporary_fix_as_dynamic_code_assumes_fixed_offset;
+#ifdef __arm__
+ size_t *temporary_fix_as_dynamic_code_assumes_fixed_offset;
+#endif
/**
* Pointer to the dynamically generated function
OpenPOWER on IntegriCloud