These are the ‘-m’ options defined for the S/390 and zSeries architecture.
-mhard-float-msoft-float-msoft-float is specified, functions in libgcc.a are used to perform floating-point operations. When -mhard-float is specified, the compiler generates IEEE floating-point instructions. This is the default. -mhard-dfp-mno-hard-dfp-mno-hard-dfp is specified, functions in libgcc.a are used to perform decimal-floating-point operations. When -mhard-dfp is specified, the compiler generates decimal-floating-point hardware instructions. This is the default for -march=z9-ec or higher. -mlong-double-64-mlong-double-128long double type. A size of 64 bits makes the long double type equivalent to the double type. This is the default. -mbackchain-mno-backchain-mno-packed-stack is in effect, the backchain pointer is stored at the bottom of the stack frame; when -mpacked-stack is in effect, the backchain is placed into the topmost word of the 96/160 byte register save area. In general, code compiled with -mbackchain is call-compatible with code compiled with -mmo-backchain; however, use of the backchain for debugging purposes usually requires that the whole binary is built with -mbackchain. Note that the combination of -mbackchain, -mpacked-stack and -mhard-float is not supported. In order to build a linux kernel use -msoft-float.
The default is to not maintain the backchain.
-mpacked-stack-mno-packed-stack-mno-packed-stack is specified, the compiler uses the all fields of the 96/160 byte register save area only for their default purpose; unused fields still take up stack space. When -mpacked-stack is specified, register save slots are densely packed at the top of the register save area; unused space is reused for other purposes, allowing for more efficient use of the available stack space. However, when -mbackchain is also in effect, the topmost word of the save area is always used to store the backchain, and the return address register is always saved two words below the backchain. As long as the stack frame backchain is not used, code generated with -mpacked-stack is call-compatible with code generated with -mno-packed-stack. Note that some non-FSF releases of GCC 2.95 for S/390 or zSeries generated code that uses the stack frame backchain at run time, not just for debugging purposes. Such code is not call-compatible with code compiled with -mpacked-stack. Also, note that the combination of -mbackchain, -mpacked-stack and -mhard-float is not supported. In order to build a linux kernel use -msoft-float.
The default is to not use the packed stack layout.
-msmall-exec-mno-small-execbras instruction to do subroutine calls. This only works reliably if the total executable size does not exceed 64k. The default is to use the basr instruction instead, which does not have this limitation. -m64-m31-m31 is specified, generate code compliant to the GNU/Linux for S/390 ABI. When -m64 is specified, generate code compliant to the GNU/Linux for zSeries ABI. This allows GCC in particular to generate 64-bit instructions. For the ‘s390’ targets, the default is -m31, while the ‘s390x’ targets default to -m64. -mzarch-mesa-mzarch is specified, generate code using the instructions available on z/Architecture. When -mesa is specified, generate code using the instructions available on ESA/390. Note that -mesa is not possible with -m64. When generating code compliant to the GNU/Linux for S/390 ABI, the default is -mesa. When generating code compliant to the GNU/Linux for zSeries ABI, the default is -mzarch. -mhtm-mno-htm-mhtm option enables a set of builtins making use of instructions available with the transactional execution facility introduced with the IBM zEnterprise EC12 machine generation S/390 System z Built-in Functions. -mhtm is enabled by default when using -march=zEC12. -mvx-mno-vx-mvx is specified, generate code using the instructions available with the vector extension facility introduced with the IBM z13 machine generation. This option changes the ABI for some vector type values with regard to alignment and calling conventions. In case vector type values are being used in an ABI-relevant context a GAS ‘.gnu_attribute’ command will be added to mark the resulting binary with the ABI used. -mvx is enabled by default when using -march=z13. -mzvector-mno-zvector-mzvector option enables vector language extensions and builtins using instructions available with the vector extension facility introduced with the IBM z13 machine generation. This option adds support for ‘vector’ to be used as a keyword to define vector type variables and arguments. ‘vector’ is only available when GNU extensions are enabled. It will not be expanded when requesting strict standard compliance e.g. with -std=c99. In addition to the GCC low-level builtins -mzvector enables a set of builtins added for compatibility with AltiVec-style implementations like Power and Cell. In order to make use of these builtins the header file vecintrin.h needs to be included. -mzvector is disabled by default. -mmvcle-mno-mvclemvcle instruction to perform block moves. When -mno-mvcle is specified, use a mvc loop instead. This is the default unless optimizing for size. -mdebug-mno-debug-march=cpu-type
z900’, ‘z990’, ‘z9-109’, ‘z9-ec’, ‘z10’, ‘z196’, ‘zEC12’, and ‘z13’. The default is -march=z900. ‘g5’ and ‘g6’ are deprecated and will be removed with future releases. -mtune=cpu-type
-march. The default is the value used for -march. -mtpf-trace-mno-tpf-trace-mfused-madd-mno-fused-madd-mwarn-framesize=framesize
-mwarn-dynamicstackalloca or uses dynamically-sized arrays. This is generally a bad idea with a limited stack size. -mstack-guard=stack-guard-mstack-size=stack-size
-mhotpatch=pre-halfwords,post-halfwords
If both arguments are zero, hotpatching is disabled.
This option can be overridden for individual functions with the hotpatch attribute.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/S_002f390-and-zSeries-Options.html