OLD | NEW |
1 # Copyright 2013 the V8 project authors. All rights reserved. | 1 # Copyright 2013 the V8 project authors. All rights reserved. |
2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
4 # met: | 4 # met: |
5 # | 5 # |
6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 [ 'arm_thumb==1', { | 222 [ 'arm_thumb==1', { |
223 'cflags': ['-mthumb',], | 223 'cflags': ['-mthumb',], |
224 }], | 224 }], |
225 [ 'arm_thumb==0', { | 225 [ 'arm_thumb==0', { |
226 'cflags': ['-marm',], | 226 'cflags': ['-marm',], |
227 }], | 227 }], |
228 ], | 228 ], |
229 }, { | 229 }, { |
230 # 'v8_target_arch!=target_arch' | 230 # 'v8_target_arch!=target_arch' |
231 # Target not built with an Arm CXX compiler (simulator build). | 231 # Target not built with an Arm CXX compiler (simulator build). |
| 232 'cflags': [ |
| 233 '-msse2', |
| 234 '-mfpmath=sse', |
| 235 '-mmmx', # Allows mmintrin.h for MMX intrinsics. |
| 236 ], |
232 'conditions': [ | 237 'conditions': [ |
233 [ 'arm_float_abi=="hard"', { | 238 [ 'arm_float_abi=="hard"', { |
234 'defines': [ | 239 'defines': [ |
235 'USE_EABI_HARDFLOAT=1', | 240 'USE_EABI_HARDFLOAT=1', |
236 ], | 241 ], |
237 }], | 242 }], |
238 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { | 243 [ 'arm_float_abi=="softfp" or arm_float_abi=="default"', { |
239 'defines': [ | 244 'defines': [ |
240 'USE_EABI_HARDFLOAT=0', | 245 'USE_EABI_HARDFLOAT=0', |
241 ], | 246 ], |
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 ['OS=="win" and v8_enable_prof==1', { | 816 ['OS=="win" and v8_enable_prof==1', { |
812 'msvs_settings': { | 817 'msvs_settings': { |
813 'VCLinkerTool': { | 818 'VCLinkerTool': { |
814 'GenerateMapFile': 'true', | 819 'GenerateMapFile': 'true', |
815 }, | 820 }, |
816 }, | 821 }, |
817 }], | 822 }], |
818 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | 823 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ |
819 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ | 824 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ |
820 v8_target_arch=="ia32"', { | 825 v8_target_arch=="ia32"', { |
821 # All floating-point computations on x87 happens in 80-bit | |
822 # precision. Because the C and C++ language standards allow | |
823 # the compiler to keep the floating-point values in higher | |
824 # precision than what's specified in the source and doing so | |
825 # is more efficient than constantly rounding up to 64-bit or | |
826 # 32-bit precision as specified in the source, the compiler, | |
827 # especially in the optimized mode, tries very hard to keep | |
828 # values in x87 floating-point stack (in 80-bit precision) | |
829 # as long as possible. This has important side effects, that | |
830 # the real value used in computation may change depending on | |
831 # how the compiler did the optimization - that is, the value | |
832 # kept in 80-bit is different than the value rounded down to | |
833 # 64-bit or 32-bit. There are possible compiler options to | |
834 # make this behavior consistent (e.g. -ffloat-store would keep | |
835 # all floating-values in the memory, thus force them to be | |
836 # rounded to its original precision) but they have significant | |
837 # runtime performance penalty. | |
838 # | |
839 # -mfpmath=sse -msse2 makes the compiler use SSE instructions | |
840 # which keep floating-point values in SSE registers in its | |
841 # native precision (32-bit for single precision, and 64-bit | |
842 # for double precision values). This means the floating-point | |
843 # value used during computation does not change depending on | |
844 # how the compiler optimized the code, since the value is | |
845 # always kept in its specified precision. | |
846 # | |
847 # Refer to http://crbug.com/348761 for rationale behind SSE2 | |
848 # being a minimum requirement for 32-bit Linux builds and | |
849 # http://crbug.com/313032 for an example where this has "bit" | |
850 # us in the past. | |
851 'cflags': [ | 826 'cflags': [ |
852 '-msse2', | 827 '-msse2', |
853 '-mfpmath=sse', | 828 '-mfpmath=sse', |
854 '-mmmx', # Allows mmintrin.h for MMX intrinsics. | 829 '-mmmx', # Allows mmintrin.h for MMX intrinsics. |
855 ], | 830 ], |
856 }], | 831 }], |
857 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ | 832 ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ |
858 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ | 833 or OS=="netbsd" or OS=="mac" or OS=="android" or OS=="qnx") and \ |
859 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ | 834 (v8_target_arch=="arm" or v8_target_arch=="ia32" or \ |
860 v8_target_arch=="x87" or v8_target_arch=="mips" or \ | 835 v8_target_arch=="x87" or v8_target_arch=="mips" or \ |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 ['v8_enable_slow_dchecks==1', { | 1147 ['v8_enable_slow_dchecks==1', { |
1173 'defines': [ | 1148 'defines': [ |
1174 'ENABLE_SLOW_DCHECKS', | 1149 'ENABLE_SLOW_DCHECKS', |
1175 ], | 1150 ], |
1176 }], | 1151 }], |
1177 ], # conditions | 1152 ], # conditions |
1178 }, # Release | 1153 }, # Release |
1179 }, # configurations | 1154 }, # configurations |
1180 }, # target_defaults | 1155 }, # target_defaults |
1181 } | 1156 } |
OLD | NEW |