Arm Community
Site
Search
User
Site
Search
User
Groups
Arm Research
DesignStart
Education Hub
Graphics and Gaming
High Performance Computing
Innovation
Multimedia
Open Source Software and Platforms
Physical
Processors
Security
System
Software Tools
TrustZone for Armv8-M
中文社区
Blog
Announcements
Artificial Intelligence
Automotive
Healthcare
HPC
Infrastructure
Innovation
Internet of Things
Machine Learning
Mobile
Smart Homes
Wearables
Forums
All developer forums
IP Product forums
Tool & Software forums
Support
Open a support case
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Developer Community
Tools and Software
Software Tools
Jump...
Cancel
Software Tools
Arm Development Studio forum
ARM CORTEX A8 : use of fpack-struct compiler directive
Tools, Software and IDEs blog
Forums
Videos & Files
Help
Jump...
Cancel
New
Replies
3 replies
Subscribers
126 subscribers
Views
2131 views
Users
0 members are here
Related
ARM CORTEX A8 : use of fpack-struct compiler directive
Offline
shashikumar MS
over 7 years ago
Note: This was originally posted on 27th May 2009 at http://forums.arm.com
Hi,
I am compiling an application with arm linux gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126) with the compiler directive's.
I want to optimize this application for the ARM and I am not suppose to use DSP.
[font="Courier New"]
arm-linux-gcc ../Src/*.c ../Src/SimdFunctions.s ../Src/getRectSubPix.s -DOPT_WIN_SIZE -DENABLE_SIMD_GETRECTSUBPIX -DUSE_SIMD -DUSE_SIMD_DAVID -I ../Inc -mcpu=cortex-a8 -mfpu=neon -Wa,-mfpu=neon -mfloat-abi=softfp -o ../Obj/opt_blink.out -O3 -fpack-struct -freorder-blocks-and-partition -lm -lc -lgcc -ftree-vectorize[/font]
after compilation total number of lines of assembly code generated is 35563.
If i remove the compiler directive -fpack-struct the total number of lines of assembly code is 22354.
I checked this by writing a small C program which updates the structure that consists of 3 integer elements. consider if i want to write 55, 66, 77 to these three elements then
with -fpack-sturct directive the program uses byte store to store 55, 66, 77 and then fills the remaining bytes with zeros which generates around 20 lines of assembly code
whereas without -fpack-sturct it writes directly to the location and the assembly generated is is of about 5 lines.
Also help me in any compilation directives to be given to optimize even more.
thanks and regards
Shashi
shashi.ms@samsung.com
Offline
Peter Harris
over 7 years ago
Note: This was originally posted on 27th May 2009 at
http://forums.arm.com
Packing data structures is one of those interesting areas of C which is really "interesting" on ARM, if only because the history of unaligned access support is so fragmented.
The GCC compiler assumes that unaligned access is not supported by default - so if you tell it all structures are packed it replaces neat word / halfword loads with individual byte loads and then assembles the result in registers. Consequently the amount of assembler you need goes up quite a lot.
I'm not aware of support in GCC for generating unaligned loads.
In general packing structures generates sub-optimal code - do you need to pack all of your structures?
Cancel
Up
0
Down
Reply
Cancel
Offline
shashikumar MS
over 7 years ago
Note: This was originally posted on 27th May 2009 at
http://forums.arm.com
Hi,
Thanks for the reply at the earliest.
I need not pack as most of the structures are defined in such a way that holes are not left in between.
we have done lots of c optimization in this application. are there any new compilation directives which can give more optimization for speed ?
Cancel
Up
0
Down
Reply
Cancel
Offline
Simon Craske
over 7 years ago
Note: This was originally posted on 27th May 2009 at
http://forums.arm.com
It may be worth seeing if ARM's RealView compiler can offer the performance you are after.
A free evaluation can be requested from [url="
http://www.arm.com/phpscripts/rvds_eval.php
"]
http://www.arm.com/phpscripts/rvds_eval.php[/url]
hth
s.
Cancel
Up
0
Down
Reply
Cancel
More questions in this forum
By title
By date
By reply count
By view count
By most asked
By votes
By quality
Descending
Ascending
All recent questions
Unread questions
Questions you've participated in
Questions you've asked
Unanswered questions
Answered questions
Questions with suggested answers
Questions with no replies
Answered
Can't get a 30-day Gold Edition evalution license
+1
707
views
7
replies
Latest
1 month ago
by
KokoBongo
Answered
Failure to get an evaluation license with error Unable to execute API call /api/v1/connect
0
7076
views
5
replies
Latest
1 month ago
by
Ronan Synnott
Answered
error encountered when try to connect FVP
0
4343
views
18
replies
Latest
1 month ago
by
MattB
Suggested Answer
ARM DStudio can't detect Juno CPU core via DStream
0
347
views
2
replies
Latest
1 month ago
by
QiangHuang
Answered
ARM Development Studio IDE 2020.1 and DE10-NANO --> Linker and debugging issue
+1
1031
views
3
replies
Latest
1 month ago
by
Ronan Synnott
<
>
View all questions in Arm Development Studio forum